<?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>202956</bug_id>
          
          <creation_ts>2019-10-14 14:57:16 -0700</creation_ts>
          <short_desc>[GTK] Implement support for Pointer Lock API</short_desc>
          <delta_ts>2020-01-10 16:31:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</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=204001</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=206069</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Alberto Lopez Perez">clopez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1579839</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2019-10-14 14:57:16 -0700</bug_when>
    <thetext>The Pointer Lock API (formerly called Mouse Lock API) provides input methods based on the movement of the mouse over time (i.e., deltas), not just the absolute position of the mouse cursor in the viewport. It gives you access to raw mouse movement, locks the target of mouse events to a single element, eliminates limits on how far mouse movement can go in a single direction, and removes the cursor from view. It is ideal for first person 3D games, for example.

https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
https://www.w3.org/TR/pointerlock/

There is currently a CMake guard ENABLE_POINTER_LOCK for this feature, its disabled by default on CMake ports.
On Mac port seems enabled by default.

WPT tests at: http://w3c-test.org/pointerlock/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580177</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2019-10-15 11:05:02 -0700</bug_when>
    <thetext>More tests:

https://mdn.github.io/dom-examples/pointer-lock/
https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/movementX


I have tested to just flip the switch in CMake but is not enough, some platform specific code needs to be implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580183</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2019-10-15 11:15:00 -0700</bug_when>
    <thetext>The feature in the WebKit Feature Status page:
https://webkit.org/status/#specification-pointer-lock</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587360</commentid>
    <comment_count>3</comment_count>
      <attachid>382817</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-11-05 05:45:53 -0800</bug_when>
    <thetext>Created attachment 382817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587361</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-11-05 05:46:41 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587364</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-11-05 06:10:05 -0800</bug_when>
    <thetext>We need to add API for this too. I think we could use the permission request API, but defaulting to allow, because other browsers don&apos;t ask permission to the user, they just show a message to indicate how to get your pointer back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587372</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2019-11-05 06:55:55 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #5)
&gt; We need to add API for this too. I think we could use the permission request
&gt; API, but defaulting to allow, because other browsers don&apos;t ask permission to
&gt; the user, they just show a message to indicate how to get your pointer back.

Another idea to expose a runtime setting in WebKitSettings that allows to disable the feature (pretty much like we do with the enable-fullscreen API). That way if the feature its disabled it doesn&apos;t get exposed in the JS API (&apos;pointerLockElement&apos; in document)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587386</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-11-05 07:12:24 -0800</bug_when>
    <thetext>The application still needs to be notified when the pointer is locked to show a message. The permission request API would cover both cases (being notified and being able to disable the feature). The only problem is if we want to also notify the application when the pointer has been released, I&apos;m not sure that&apos;s useful, but in that case we would need signals in WebKitWebView instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587398</commentid>
    <comment_count>8</comment_count>
      <attachid>382817</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2019-11-05 08:11:43 -0800</bug_when>
    <thetext>Comment on attachment 382817
Patch

Tested both on X11 and Wayland. Works nicely :). The implementation also looks good to me. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587405</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2019-11-05 08:31:24 -0800</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #8)
&gt; Comment on attachment 382817 [details]
&gt; Patch
&gt; 
&gt; Tested both on X11 and Wayland. Works nicely :). The implementation also
&gt; looks good to me. r=me

The pass-rate for WPT tests is also quite good:

web-platform-test
~~~~~~~~~~~~~~~~~
Ran 56 checks (49 subtests, 7 tests)
Expected results: 49
Unexpected results: 7
  test: 3 (2 error, 1 timeout)
  subtest: 4 (3 fail, 1 notrun)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587703</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-11-06 00:06:39 -0800</bug_when>
    <thetext>Committed r252126: &lt;https://trac.webkit.org/changeset/252126&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588643</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2019-11-08 08:04:42 -0800</bug_when>
    <thetext>*** Bug 99036 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382817</attachid>
            <date>2019-11-05 05:45:53 -0800</date>
            <delta_ts>2019-11-05 08:11:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-pointer-lock.diff</filename>
            <type>text/plain</type>
            <size>47777</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAwMGNlNzFiNDIxMy4uOWE4
MzA4YmIzOGUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxOS0xMS0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIFBvaW50ZXIgTG9j
ayBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
Mjk1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVu
YWJsZSBQb2ludGVyIExvY2sgZm9yIEdUSyBwb3J0LgorCisgICAgICAgICogU291cmNlL2NtYWtl
L09wdGlvbnNHVEsuY21ha2U6CisKIDIwMTktMTEtMDIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29A
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBkaWFnbm9zdGljIGxvZ2dp
bmcgZm9yIGZyb250ZW5kIGZlYXR1cmUgdXNhZ2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYTAzNzFmMjMwNC4uY2ZiN2Ux
YmZkZTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0xMS0wNSAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IHN1
cHBvcnQgZm9yIFBvaW50ZXIgTG9jayBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMjk1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVuc2tpcCBQb2ludGVyIExvY2sgdGVzdHMgYW5kIHVwZGF0ZSBl
eHBlY3RhdGlvbnMgZm9yIHRlc3RzIHN0aWxsIGZhaWxpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvcG9pbnRlci1s
b2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTktMTEt
MDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU2tpcCBmYXN0
L2Zvcm1zL2lvcy9pbnB1dG1vZGUtY2hhbmdlLXVwZGF0ZS1rZXlib2FyZC5odG1sIG9uIGlQYWRz
IGFzIHRoaXMgdGVzdCByZWxpZXMgb24gaVBob25lJ3Mga2V5Ym9hcmQgYmVoYXZpb3IuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGJiZDZlNGQwOTdjLi5h
YWVjMTkwZGRkMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTUzMCwxNCArNTMwLDYgQEAgQnVnKEdUSykgZmFzdC90ZXh0L2ZvbnQtd2VpZ2h0cy16aC5o
dG1sIFsgV29udEZpeCBdCiBCdWcoR1RLKSBjb21wb3NpdGluZy92aXNpYmxlLXJlY3QgWyBTa2lw
IF0KIEJ1ZyhHVEspIGxlZ2FjeS1hbmltYXRpb24tZW5naW5lL2NvbXBvc2l0aW5nL3Zpc2libGUt
cmVjdCBbIFNraXAgXQogCi0jIFBvaW50ZXIgTG9jayBpcyBub3QgaW1wbGVtZW50ZWQuCi13ZWJr
aXQub3JnL2IvOTkwMzYgcG9pbnRlci1sb2NrIFsgU2tpcCBdCi0jIEFzIHdlbGwgYXMgdGVzdGlu
ZyBmdWxsc2NyZWVuIGZ1bmN0aW9uYWxpdHksIHRoZXNlIHRlc3RzIGFsc28gdXRpbGl6ZSB0aGUg
cG9pbnRlciBsb2NrIGZlYXR1cmUuCi13ZWJraXQub3JnL2IvOTkwMzYgaHR0cC90ZXN0cy9mdWxs
c2NyZWVuIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvOTkwMzYgaHR0cC90ZXN0cy9wb2ludGVyLWxv
Y2sgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi85OTAzNiBmYXN0L3NoYWRvdy1kb20vcG9pbnRlcmxv
Y2tlbGVtZW50LWluLXNoYWRvdy10cmVlLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi85OTAz
NiBmYXN0L3NoYWRvdy1kb20vcG9pbnRlcmxvY2tlbGVtZW50LWluLXNsb3QuaHRtbCBbIFNraXAg
XQotCiAjIElFVEMgZmxleGJveCBmYWlsdXJlcwogd2Via2l0Lm9yZy9iLzg1MjExIGlldGVzdGNl
bnRlci9jc3MzL2ZsZXhib3gvZmxleGJveC1hbGlnbi1zdHJldGNoLTAwMS5odG0gWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi84NTIxMiBpZXRlc3RjZW50ZXIvY3NzMy9mbGV4Ym94
L2ZsZXhib3gtbGF5b3V0LTAwMi5odG0gWyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAgLTI1MzMsNiAr
MjUyNSw5IEBAIHdlYmtpdC5vcmcvYi8yMDIyNDUgaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
Q2xpZW50LXByb3BlcnRpZXMtc3ViZnJhbWUuaHRtbCBbCiB3ZWJraXQub3JnL2IvMjAyMjQ1IGh0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2NsaWVudC1yZW1vdmVkLWZyb20tY2xpZW50cy13aGls
ZS1pbi1wYWdlLWNhY2hlLmh0bWwgWyBUaW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8yMDIyNDUgaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVnaXN0cmF0aW9uLWNsZWFyLXJlZHVuZGFudC13b3Jr
ZXIuaHRtbCBbIFRpbWVvdXQgXQogCit3ZWJraXQub3JnL2IvOTkwMzYgcG9pbnRlci1sb2NrL3Bv
aW50ZXJsb2NrY2hhbmdlLWV2ZW50LW9uLWxvY2stbG9zdC5odG1sIFsgVGltZW91dCBdCit3ZWJr
aXQub3JnL2IvOTkwMzYgcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrZWxlbWVudC1udWxsLXdoZW4t
cGVuZGluZy5odG1sIFsgVGltZW91dCBdCisKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCiAjIEVuZCBvZiBUZXN0cyB0aW1pbmcgb3V0CiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwpAQCAtMzg3OCw2ICszODczLDkgQEAgd2Via2l0Lm9yZy9iLzIwMzY3NyBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvcGFpbnRpbmctZmlsbC0wNS0KIHdl
YmtpdC5vcmcvYi8yMDM2NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1w
b3J0L3BhaW50aW5nLXN0cm9rZS0wOC10LW1hbnVhbC5zdmcgWyBGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8yMDM2Nzcgc3ZnL1czQy1TVkctMS4xL3BhaW50aW5nLWZpbGwtMDUtYi5zdmcgWyBGYWls
dXJlIF0KIAord2Via2l0Lm9yZy9iLzk5MDM2IHBvaW50ZXItbG9jay9sb2NrZWQtZWxlbWVudC1p
ZnJhbWUtcmVtb3ZlZC1mcm9tLWRvbS5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvOTkw
MzYgcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrY2hhbmdlLXBvaW50ZXJsb2NrZXJyb3ItZXZlbnRz
Lmh0bWwgWyBGYWlsdXJlIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMg
RW5kIG9mIG5vbi1jcmFzaGluZywgbm9uLWZsYWt5IHRlc3RzIGZhaWxpbmcKICMvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9wb2ludGVyLWxvY2svbW91c2UtZXZlbnQtZGVsaXZlcnktZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iYzVjYWMx
NmNhMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9wb2ludGVy
LWxvY2svbW91c2UtZXZlbnQtZGVsaXZlcnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDMgQEAK
K1Rlc3QgbW91c2UgZXZlbnRzIGFyZSByb3V0ZWQgdG8gbG9jayB0YXJnZXQuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50Lm9ucG9pbnRlcmxvY2tjaGFuZ2Ug
ZXZlbnQgcmVjZWl2ZWQuCitQQVNTIGRvY3VtZW50LnBvaW50ZXJMb2NrRWxlbWVudCBpcyB0YXJn
ZXRkaXYxCisgICAgIFdpdGggYSBsb2NrIGluIHBsYWNlIHNlbmQgYSB3aGVlbCBldmVudC4KK1BB
U1MgZXZlbnQgdHlwZTogd2hlZWwsIHRhcmdldDogdGFyZ2V0MSwgcmVjZWl2ZWQgb246IHRhcmdl
dDEKK1BBU1MgZXZlbnQgdHlwZTogd2hlZWwsIHRhcmdldDogdGFyZ2V0MSwgcmVjZWl2ZWQgb246
IGJvZHkKKyAgICAgV2l0aCBhIGxvY2sgaW4gcGxhY2UgbW92ZSB0aGUgbW91c2UuCitQQVNTIGV2
ZW50IHR5cGU6IG1vdXNlbW92ZSwgbW92ZW1lbnRYOiAyNSwgbW92ZW1lbnRZOiAzMCwgdGFyZ2V0
OiB0YXJnZXQxLCByZWNlaXZlZCBvbjogdGFyZ2V0MQorUEFTUyBldmVudCB0eXBlOiBtb3VzZW1v
dmUsIG1vdmVtZW50WDogMjUsIG1vdmVtZW50WTogMzAsIHRhcmdldDogdGFyZ2V0MSwgcmVjZWl2
ZWQgb246IGJvZHkKKyAgICAgV2l0aCBhIGxvY2sgaW4gcGxhY2Ugc2VuZCBhIGNsaWNrLgorUEFT
UyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MSwgcmVjZWl2ZWQgb246IHRh
cmdldDEKK1BBU1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDEsIHJlY2Vp
dmVkIG9uOiBib2R5CitQQVNTIGRvY3VtZW50Lm9ucG9pbnRlcmxvY2tjaGFuZ2UgZXZlbnQgcmVj
ZWl2ZWQuCitQQVNTIGRvY3VtZW50LnBvaW50ZXJMb2NrRWxlbWVudCBpcyB0YXJnZXRkaXYyCisg
ICAgIFdpdGggYSBsb2NrIGluIHBsYWNlIHNlbmQgYSB3aGVlbCBldmVudC4KK1BBU1MgZXZlbnQg
dHlwZTogd2hlZWwsIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1Mg
ZXZlbnQgdHlwZTogd2hlZWwsIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IGJvZHkKKyAg
ICAgV2l0aCBhIGxvY2sgaW4gcGxhY2Ugc2VuZCBhIGNsaWNrLgorUEFTUyBldmVudCB0eXBlOiBt
b3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZl
bnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiBib2R5Cisg
ICAgIEVuc3VyZSBkb3VibGUgY2xpY2tzIHdvcmsgYXMgZXhwZWN0ZWQsIHNlbmRpbmcgNCBjbGlj
a3MuCisgICAgIENyZWF0aW5nIGEgY2xpY2sgYW5kIGRibGNsaWNrLgorUEFTUyBldmVudCB0eXBl
OiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1Mg
ZXZlbnQgdHlwZTogbW91c2V1cCwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0
MgorUEFTUyBldmVudCB0eXBlOiBjbGljaywgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjog
dGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVj
ZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2V1cCwgdGFyZ2V0OiB0YXJn
ZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBjbGljaywgdGFyZ2V0
OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorICAgICBFbnN1cmluZyBubyBmYWxzZSBk
YmxjbGlja3MgaWYgd2UgY29udGludWUuCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNlZG93biwgdGFy
Z2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3Vz
ZXVwLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5
cGU6IGNsaWNrLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2
ZW50IHR5cGU6IG1vdXNlZG93biwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0
MgorUEFTUyBldmVudCB0eXBlOiBtb3VzZXVwLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9u
OiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IGNsaWNrLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2Vp
dmVkIG9uOiB0YXJnZXQyCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAwYTBhYTA4Yjk0Zi4uOTE3ZjM0YTc4ZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTIgQEAKKzIwMTktMTEtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBzdXBwb3J0IGZvciBQ
b2ludGVyIExvY2sgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDI5NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgUG9pbnRlciBM
b2NrIGZvciB0aGUgR1RLIHBvcnQuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogR2Vu
ZXJhdGUgY29kZSBmb3IgcG9pbnRlci1jb25zdHJhaW50cyBhbmQgcmVsYXRpdmUtcG9pbnRlciBX
YXlsYW5kIHByb3RvY29scy4KKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5o
OiBBZGQgb3B0aW9uYWwgbW91c2UgbW92ZW1lbnQgZGVsdGEuCisgICAgICAgICogU2hhcmVkL2d0
ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2Vi
TW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudCk6IFBhc3MgbW92ZW1lbnQgZGVsdGEgdG8g
V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KCkuCisgICAgICAgICogU2hhcmVk
L2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rv
cnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQpOiBJbml0aWFsaXplIGRlbHRhWCBhbmQgZGVsdGFZIGZv
ciBtb3Rpb24gZXZlbnRzIHVzaW5nIHRoZSByZWNlaXZlZCBkZWx0YS4KKyAgICAgICAgKiBTaGFy
ZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oOiBBZGQgb3B0aW9uYWwgbW91c2UgbW92ZW1lbnQgZGVs
dGEuCisgICAgICAgICogU291cmNlc0dUSy50eHQ6IEFkZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRp
b24uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcDogQWRk
IGltcGxlbWVudGF0aW9uIGZvciByZXF1ZXN0UG9pbnRlckxvY2sgYW5kIGRpZExvc2VQb2ludGVy
TG9jay4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6Cisg
ICAgICAgICh3ZWJraXRXZWJWaWV3UmVxdWVzdFBvaW50ZXJMb2NrKTogQ2FsbCB3ZWJraXRXZWJW
aWV3QmFzZVJlcXVlc3RQb2ludGVyTG9jaygpLgorICAgICAgICAod2Via2l0V2ViVmlld0RpZExv
c2VQb2ludGVyTG9jayk6IENhbGwgd2Via2l0V2ViVmlld0Jhc2VEaWRMb3NlUG9pbnRlckxvY2so
KS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAg
ICAgICh3ZWJraXRXZWJWaWV3QmFzZURpc3Bvc2UpOiBVbmxvY2sgdGhlIHBvaW50ZXIgYW5kIHJl
bGVhc2UgdGhlIFBvaW50ZXJMb2NrTWFuYWdlci4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNl
SGFuZGxlTW91c2VFdmVudCk6IEluaXRpYWxpemUgdGhlIG1vdXNlIG1vdmVtZW50IGRlbHRhIGZv
ciBtb3Rpb24gZXZlbnRzIGFuZCBzYXZlIHRoZSBjdXJyZW50IGV2ZW50LgorICAgICAgICAod2Vi
a2l0V2ViVmlld0Jhc2VNb3Rpb25Ob3RpZnlFdmVudCk6IExldCBQb2ludGVyTG9ja01hbmFnZXIg
aGFuZGxlIG1vdGlvbiBldmVudHMgd2hpbGUgcG9pbnRlciBpcyBsb2NrZWQuCisgICAgICAgICh3
ZWJraXRXZWJWaWV3QmFzZVJlcXVlc3RQb2ludGVyTG9jayk6IENyZWF0ZSBhIFBvaW50ZXJMb2Nr
TWFuYWdlciBhbmQgcmVxdWVzdCBpdCB0byBsb2NrIHRoZSBwb2ludGVyLgorICAgICAgICAod2Vi
a2l0V2ViVmlld0Jhc2VEaWRMb3NlUG9pbnRlckxvY2spOiBSZXF1ZXN0IFBvaW50ZXJMb2NrTWFu
YWdlciB0byB1bmxvY2sgdGhlIHBvaW50ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9Qb2lu
dGVyTG9ja01hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UG9pbnRlckxvY2tN
YW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja01hbmFnZXI6OlBv
aW50ZXJMb2NrTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrTWFuYWdlcjo6
flBvaW50ZXJMb2NrTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrTWFuYWdl
cjo6bG9jayk6CisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrTWFuYWdlcjo6dW5sb2NrKToK
KyAgICAgICAgKFdlYktpdDo6UG9pbnRlckxvY2tNYW5hZ2VyOjpoYW5kbGVNb3Rpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9ndGsvUG9pbnRlckxvY2tNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpQb2ludGVyTG9ja01hbmFnZXI6OmRpZFJlY2VpdmVNb3Rpb25FdmVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJXYXlsYW5kLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrTWFuYWdlcldheWxhbmQ6OlBvaW50ZXJM
b2NrTWFuYWdlcldheWxhbmQpOgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja01hbmFnZXJX
YXlsYW5kOjp+UG9pbnRlckxvY2tNYW5hZ2VyV2F5bGFuZCk6CisgICAgICAgIChXZWJLaXQ6OlBv
aW50ZXJMb2NrTWFuYWdlcldheWxhbmQ6OmxvY2spOgorICAgICAgICAoV2ViS2l0OjpQb2ludGVy
TG9ja01hbmFnZXJXYXlsYW5kOjp1bmxvY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvUG9p
bnRlckxvY2tNYW5hZ2VyV2F5bGFuZC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3Rr
L1BvaW50ZXJMb2NrTWFuYWdlclgxMS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQb2lu
dGVyTG9ja01hbmFnZXJYMTE6OlBvaW50ZXJMb2NrTWFuYWdlclgxMSk6CisgICAgICAgIChXZWJL
aXQ6OlBvaW50ZXJMb2NrTWFuYWdlclgxMTo6ZGlkUmVjZWl2ZU1vdGlvbkV2ZW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ3RrL1BvaW50ZXJMb2NrTWFuYWdlclgxMS5oOiBBZGRlZC4KKwogMjAx
OS0xMS0wNCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtX
ZWJBdXRobl0gR3VhcmQgYWdhaW5zdCB1bmV4cGVjdGVkIC1bX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbCBjYW5jZWxdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtl
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBkZmUxYzUyOTIxYS4uYWVj
ODdhZTAxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNDksNiArNDksOCBAQCBsaXN0
KEFQUEVORCBXZWJLaXRfREVSSVZFRF9TT1VSQ0VTCiBpZiAoRU5BQkxFX1dBWUxBTkRfVEFSR0VU
KQogICAgIGxpc3QoQVBQRU5EIFdlYktpdF9ERVJJVkVEX1NPVVJDRVMKICAgICAgICAgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L1dlYktpdFdheWxhbmRDbGllbnRQcm90b2NvbC5j
CisgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElSfS9wb2ludGVyLWNvbnN0
cmFpbnRzLXVuc3RhYmxlLXYxLXByb3RvY29sLmMKKyAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNf
V0VCS0lUMkdUS19ESVJ9L3JlbGF0aXZlLXBvaW50ZXItdW5zdGFibGUtdjEtcHJvdG9jb2wuYwog
ICAgICkKIGVuZGlmICgpCiAKQEAgLTU0Nyw5ICs1NDksMjYgQEAgaWYgKEVOQUJMRV9XQVlMQU5E
X1RBUkdFVCkKICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgICAgIE9VVFBVVCAke0RFUklW
RURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0vV2ViS2l0V2F5bGFuZENsaWVudFByb3RvY29sLmMK
ICAgICAgICAgREVQRU5EUyAke1dFQktJVF9ESVJ9L1NoYXJlZC9ndGsvV2ViS2l0V2F5bGFuZFBy
b3RvY29sLnhtbAotICAgICAgICBDT01NQU5EIHdheWxhbmQtc2Nhbm5lciBzZXJ2ZXItaGVhZGVy
IDwgJHtXRUJLSVRfRElSfS9TaGFyZWQvZ3RrL1dlYktpdFdheWxhbmRQcm90b2NvbC54bWwgPiAk
e0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0vV2ViS2l0V2F5bGFuZFNlcnZlclByb3Rv
Y29sLmgKLSAgICAgICAgQ09NTUFORCB3YXlsYW5kLXNjYW5uZXIgY2xpZW50LWhlYWRlciA8ICR7
V0VCS0lUX0RJUn0vU2hhcmVkL2d0ay9XZWJLaXRXYXlsYW5kUHJvdG9jb2wueG1sID4gJHtERVJJ
VkVEX1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L1dlYktpdFdheWxhbmRDbGllbnRQcm90b2NvbC5o
Ci0gICAgICAgIENPTU1BTkQgd2F5bGFuZC1zY2FubmVyIGNvZGUgPCAke1dFQktJVF9ESVJ9L1No
YXJlZC9ndGsvV2ViS2l0V2F5bGFuZFByb3RvY29sLnhtbCA+ICR7REVSSVZFRF9TT1VSQ0VTX1dF
QktJVDJHVEtfRElSfS9XZWJLaXRXYXlsYW5kQ2xpZW50UHJvdG9jb2wuYworICAgICAgICBDT01N
QU5EICR7V0FZTEFORF9TQ0FOTkVSfSBzZXJ2ZXItaGVhZGVyICR7V0VCS0lUX0RJUn0vU2hhcmVk
L2d0ay9XZWJLaXRXYXlsYW5kUHJvdG9jb2wueG1sICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJH
VEtfRElSfS9XZWJLaXRXYXlsYW5kU2VydmVyUHJvdG9jb2wuaAorICAgICAgICBDT01NQU5EICR7
V0FZTEFORF9TQ0FOTkVSfSBjbGllbnQtaGVhZGVyICR7V0VCS0lUX0RJUn0vU2hhcmVkL2d0ay9X
ZWJLaXRXYXlsYW5kUHJvdG9jb2wueG1sICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElS
fS9XZWJLaXRXYXlsYW5kQ2xpZW50UHJvdG9jb2wuaAorICAgICAgICBDT01NQU5EICR7V0FZTEFO
RF9TQ0FOTkVSfSBjb2RlICR7V0VCS0lUX0RJUn0vU2hhcmVkL2d0ay9XZWJLaXRXYXlsYW5kUHJv
dG9jb2wueG1sICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElSfS9XZWJLaXRXYXlsYW5k
Q2xpZW50UHJvdG9jb2wuYworICAgICAgICBWRVJCQVRJTQorICAgICkKKworICAgIGFkZF9jdXN0
b21fY29tbWFuZCgKKyAgICAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtf
RElSfS9wb2ludGVyLWNvbnN0cmFpbnRzLXVuc3RhYmxlLXYxLXByb3RvY29sLmMKKyAgICAgICAg
REVQRU5EUyAke1dBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVJ9L3Vuc3RhYmxlL3BvaW50ZXItY29u
c3RyYWludHMvcG9pbnRlci1jb25zdHJhaW50cy11bnN0YWJsZS12MS54bWwKKyAgICAgICAgQ09N
TUFORCAke1dBWUxBTkRfU0NBTk5FUn0gY29kZSAke1dBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVJ9
L3Vuc3RhYmxlL3BvaW50ZXItY29uc3RyYWludHMvcG9pbnRlci1jb25zdHJhaW50cy11bnN0YWJs
ZS12MS54bWwgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L3BvaW50ZXItY29uc3Ry
YWludHMtdW5zdGFibGUtdjEtcHJvdG9jb2wuYworICAgICAgICBDT01NQU5EICR7V0FZTEFORF9T
Q0FOTkVSfSBjbGllbnQtaGVhZGVyICR7V0FZTEFORF9QUk9UT0NPTFNfREFUQURJUn0vdW5zdGFi
bGUvcG9pbnRlci1jb25zdHJhaW50cy9wb2ludGVyLWNvbnN0cmFpbnRzLXVuc3RhYmxlLXYxLnht
bCAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0vcG9pbnRlci1jb25zdHJhaW50cy11
bnN0YWJsZS12MS1jbGllbnQtcHJvdG9jb2wuaAorICAgICAgICBWRVJCQVRJTQorICAgICkKKwor
ICAgIGFkZF9jdXN0b21fY29tbWFuZCgKKyAgICAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VT
X1dFQktJVDJHVEtfRElSfS9yZWxhdGl2ZS1wb2ludGVyLXVuc3RhYmxlLXYxLXByb3RvY29sLmMK
KyAgICAgICAgREVQRU5EUyAke1dBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVJ9L3Vuc3RhYmxlL3Jl
bGF0aXZlLXBvaW50ZXIvcmVsYXRpdmUtcG9pbnRlci11bnN0YWJsZS12MS54bWwKKyAgICAgICAg
Q09NTUFORCAke1dBWUxBTkRfU0NBTk5FUn0gY29kZSAke1dBWUxBTkRfUFJPVE9DT0xTX0RBVEFE
SVJ9L3Vuc3RhYmxlL3JlbGF0aXZlLXBvaW50ZXIvcmVsYXRpdmUtcG9pbnRlci11bnN0YWJsZS12
MS54bWwgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L3JlbGF0aXZlLXBvaW50ZXIt
dW5zdGFibGUtdjEtcHJvdG9jb2wuYworICAgICAgICBDT01NQU5EICR7V0FZTEFORF9TQ0FOTkVS
fSBjbGllbnQtaGVhZGVyICR7V0FZTEFORF9QUk9UT0NPTFNfREFUQURJUn0vdW5zdGFibGUvcmVs
YXRpdmUtcG9pbnRlci9yZWxhdGl2ZS1wb2ludGVyLXVuc3RhYmxlLXYxLnhtbCAke0RFUklWRURf
U09VUkNFU19XRUJLSVQyR1RLX0RJUn0vcmVsYXRpdmUtcG9pbnRlci11bnN0YWJsZS12MS1jbGll
bnQtcHJvdG9jb2wuaAorICAgICAgICBWRVJCQVRJTQogICAgICkKIGVuZGlmICgpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaAppbmRleCBiYTdmOTNjOTI0Zi4u
MGZhNTU3ZTlmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYk1v
dXNlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50
LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoTlNF
dmVudCAqLCBOU0V2ZW50ICpsYXN0UHJlc3N1cmVFdmVudCwgTlNWaWV3ICopOwogI2VsaWYgUExB
VEZPUk0oR1RLKQogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgTmF0aXZlV2ViTW91c2VF
dmVudCYpOwotICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoR2RrRXZlbnQqLCBpbnQpOworICAgIE5h
dGl2ZVdlYk1vdXNlRXZlbnQoR2RrRXZlbnQqLCBpbnQsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBv
aW50Pik7CiAjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5hdGl2ZVdlYk1vdXNlRXZl
bnQoOjpXZWJFdmVudCAqKTsKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KFR5cGUsIEJ1dHRvbiwg
dW5zaWduZWQgc2hvcnQgYnV0dG9ucywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9u
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGZsb2F0IGRlbHRhWCwg
ZmxvYXQgZGVsdGFZLCBmbG9hdCBkZWx0YVosIGludCBjbGlja0NvdW50LCBPcHRpb25TZXQ8TW9k
aWZpZXI+LCBXYWxsVGltZSB0aW1lc3RhbXAsIGRvdWJsZSBmb3JjZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAKaW5kZXggMjhk
MDBmMGU2ZmQuLjU4ZTM3ZmUzODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9n
dGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Z3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCkBAIC0zMSwxNCArMzEsMTQgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLU5hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZl
bnQoR2RrRXZlbnQqIGV2ZW50LCBpbnQgZXZlbnRDbGlja0NvdW50KQotICAgIDogV2ViTW91c2VF
dmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoZXZlbnQsIGV2ZW50Q2xp
Y2tDb3VudCkpCitOYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KEdka0V2
ZW50KiBldmVudCwgaW50IGV2ZW50Q2xpY2tDb3VudCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9p
bnQ+IGRlbHRhKQorICAgIDogV2ViTW91c2VFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdl
Yk1vdXNlRXZlbnQoZXZlbnQsIGV2ZW50Q2xpY2tDb3VudCwgZGVsdGEpKQogICAgICwgbV9uYXRp
dmVFdmVudChnZGtfZXZlbnRfY29weShldmVudCkpCiB7CiB9CiAKIE5hdGl2ZVdlYk1vdXNlRXZl
bnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgTmF0aXZlV2ViTW91c2VFdmVudCYgZXZlbnQp
Ci0gICAgOiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVu
dChldmVudC5uYXRpdmVFdmVudCgpLCBldmVudC5jbGlja0NvdW50KCkpKQorICAgIDogV2ViTW91
c2VFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoZXZlbnQubmF0aXZl
RXZlbnQoKSwgZXZlbnQuY2xpY2tDb3VudCgpLCBXZWJDb3JlOjpJbnRQb2ludChldmVudC5kZWx0
YVgoKSwgZXZlbnQuZGVsdGFZKCkpKSkKICAgICAsIG1fbmF0aXZlRXZlbnQoZ2RrX2V2ZW50X2Nv
cHkoZXZlbnQubmF0aXZlRXZlbnQoKSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0
ay9XZWJFdmVudEZhY3RvcnkuY3BwCmluZGV4IDA0MDQ4Y2VlNTAzLi42OGFlNDY4NDBlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTEzNSw3
ICsxMzUsNyBAQCBzdGF0aWMgaW5saW5lIHNob3J0IHByZXNzZWRNb3VzZUJ1dHRvbnMoR2RrTW9k
aWZpZXJUeXBlIHN0YXRlKQogICAgIHJldHVybiBidXR0b25zOwogfQogCi1XZWJNb3VzZUV2ZW50
IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBHZGtFdmVudCogZXZl
bnQsIGludCBjdXJyZW50Q2xpY2tDb3VudCkKK1dlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5
OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwgaW50IGN1cnJlbnRD
bGlja0NvdW50LCBPcHRpb25hbDxJbnRQb2ludD4gZGVsdGEpCiB7CiAgICAgZG91YmxlIHgsIHks
IHhSb290LCB5Um9vdDsKICAgICBnZGtfZXZlbnRfZ2V0X2Nvb3JkcyhldmVudCwgJngsICZ5KTsK
QEAgLTE0OCw2ICsxNDgsNyBAQCBXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRl
V2ViTW91c2VFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsIGludCBjdQogICAgIGdka19ldmVu
dF9nZXRfYnV0dG9uKGV2ZW50LCAmZXZlbnRCdXR0b24pOwogCiAgICAgV2ViRXZlbnQ6OlR5cGUg
dHlwZSA9IHN0YXRpY19jYXN0PFdlYkV2ZW50OjpUeXBlPigwKTsKKyAgICBJbnRQb2ludCBtb3Zl
bWVudERlbHRhOwogCiAgICAgR2RrRXZlbnRUeXBlIGV2ZW50VHlwZSA9IGdka19ldmVudF9nZXRf
ZXZlbnRfdHlwZShldmVudCk7CiAgICAgc3dpdGNoIChldmVudFR5cGUpIHsKQEAgLTE1NSw2ICsx
NTYsOCBAQCBXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVu
dChjb25zdCBHZGtFdmVudCogZXZlbnQsIGludCBjdQogICAgIGNhc2UgR0RLX0VOVEVSX05PVElG
WToKICAgICBjYXNlIEdES19MRUFWRV9OT1RJRlk6CiAgICAgICAgIHR5cGUgPSBXZWJFdmVudDo6
TW91c2VNb3ZlOworICAgICAgICBpZiAoZGVsdGEpCisgICAgICAgICAgICBtb3ZlbWVudERlbHRh
ID0gZGVsdGEudmFsdWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHREtfQlVUVE9OX1BS
RVNTOgogICAgIGNhc2UgR0RLXzJCVVRUT05fUFJFU1M6CkBAIC0xNzksOCArMTgyLDggQEAgV2Vi
TW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2Rr
RXZlbnQqIGV2ZW50LCBpbnQgY3UKICAgICAgICAgcHJlc3NlZE1vdXNlQnV0dG9ucyhzdGF0ZSks
CiAgICAgICAgIEludFBvaW50KHgsIHkpLAogICAgICAgICBJbnRQb2ludCh4Um9vdCwgeVJvb3Qp
LAotICAgICAgICAwIC8qIGRlbHRhWCAqLywKLSAgICAgICAgMCAvKiBkZWx0YVkgKi8sCisgICAg
ICAgIG1vdmVtZW50RGVsdGEueCgpLAorICAgICAgICBtb3ZlbWVudERlbHRhLnkoKSwKICAgICAg
ICAgMCAvKiBkZWx0YVogKi8sCiAgICAgICAgIGN1cnJlbnRDbGlja0NvdW50LAogICAgICAgICBt
b2RpZmllcnNGb3JFdmVudChldmVudCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXZl
bnRGYWN0b3J5LmgKaW5kZXggODAwOGZmMmYyZWEuLjU5NmI3MjlkZGJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJFdmVudEZhY3RvcnkgewogcHVibGljOgotICAgIHN0
YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBp
bnQpOworICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3Qg
R2RrRXZlbnQqLCBpbnQsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50Pik7CiAgICAgc3RhdGlj
IFdlYldoZWVsRXZlbnQgY3JlYXRlV2ViV2hlZWxFdmVudChjb25zdCBHZGtFdmVudCopOwogICAg
IHN0YXRpYyBXZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZlbnQoY29uc3QgR2RrRXZlbnQq
LCBXZWJXaGVlbEV2ZW50OjpQaGFzZSwgV2ViV2hlZWxFdmVudDo6UGhhc2UgbW9tZW50dW1QaGFz
ZSk7CiAgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChj
b25zdCBHZGtFdmVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wgaGFuZGxlZEJ5SW5wdXRNZXRob2Qs
IFZlY3RvcjxTdHJpbmc+JiYgY29tbWFuZHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKaW5kZXggYzllMTUz
ZDZhMmMuLmU3NjUwNjY2YTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTI0MCw2ICsyNDAsOSBA
QCBVSVByb2Nlc3MvZ3RrL0dlc3R1cmVDb250cm9sbGVyLmNwcAogVUlQcm9jZXNzL2d0ay9IYXJk
d2FyZUFjY2VsZXJhdGlvbk1hbmFnZXIuY3BwCiBVSVByb2Nlc3MvZ3RrL0lucHV0TWV0aG9kRmls
dGVyLmNwcAogVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAKK1VJUHJvY2Vz
cy9ndGsvUG9pbnRlckxvY2tNYW5hZ2VyLmNwcCBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9ndGsvUG9p
bnRlckxvY2tNYW5hZ2VyV2F5bGFuZC5jcHAgQG5vLXVuaWZ5CitVSVByb2Nlc3MvZ3RrL1BvaW50
ZXJMb2NrTWFuYWdlclgxMS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvZ3RrL1JlbW90ZVdlYklu
c3BlY3RvclByb3h5R3RrLmNwcAogVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAgQG5v
LXVuaWZ5CiBVSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAgQG5vLXVu
aWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRV
SUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNs
aWVudC5jcHAKaW5kZXggY2Q0Y2ZkNjVlNWQuLmIyNDMyMWY4ZmM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0yNTAs
NiArMjUwLDE5IEBAIHByaXZhdGU6CiAgICAgICAgIHdlYmtpdFdlYlZpZXdJc1BsYXlpbmdBdWRp
b0NoYW5nZWQobV93ZWJWaWV3KTsKICAgICB9CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQor
ICAgIHZvaWQgcmVxdWVzdFBvaW50ZXJMb2NrKFdlYlBhZ2VQcm94eSogcGFnZSkgZmluYWwKKyAg
ICB7CisgICAgICAgIHdlYmtpdFdlYlZpZXdSZXF1ZXN0UG9pbnRlckxvY2sobV93ZWJWaWV3KTsK
KyAgICB9CisKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jayhXZWJQYWdlUHJveHkqKSBmaW5h
bAorICAgIHsKKyAgICAgICAgd2Via2l0V2ViVmlld0RpZExvc2VQb2ludGVyTG9jayhtX3dlYlZp
ZXcpOworICAgIH0KKyNlbmRpZgorCisKICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZp
ZXcuY3BwCmluZGV4IDZjYTEzODcxMGIzLi4zZTM3NjEzZGQxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTI2MjcsNiAr
MjYyNywyMiBAQCB2b2lkIHdlYmtpdFdlYlZpZXdEaWRSZWNlaXZlVXNlck1lc3NhZ2UoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgVXNlck1lc3NhZ2UmJiBtZQogICAgIGdfc2lnbmFsX2VtaXQod2Vi
Vmlldywgc2lnbmFsc1tVU0VSX01FU1NBR0VfUkVDRUlWRURdLCAwLCB1c2VyTWVzc2FnZS5nZXQo
KSwgJnJldHVyblZhbHVlKTsKIH0KIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCit2b2lkIHdl
YmtpdFdlYlZpZXdSZXF1ZXN0UG9pbnRlckxvY2soV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sK
KyNpZiBQTEFURk9STShHVEspCisgICAgd2Via2l0V2ViVmlld0Jhc2VSZXF1ZXN0UG9pbnRlckxv
Y2soV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldykpOworI2VuZGlmCit9CisKK3ZvaWQgd2Vi
a2l0V2ViVmlld0RpZExvc2VQb2ludGVyTG9jayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQorewor
I2lmIFBMQVRGT1JNKEdUSykKKyAgICB3ZWJraXRXZWJWaWV3QmFzZURpZExvc2VQb2ludGVyTG9j
ayhXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7CisjZW5kaWYKK30KKyNlbmRpZgorCiAj
aWYgUExBVEZPUk0oV1BFKQogLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tlbmQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
d1ByaXZhdGUuaAppbmRleCAzMzI2NDE0MjE5Ny4uMTM4MDFjM2VkN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUu
aApAQCAtMTAzLDMgKzEwMyw4IEBAIGdib29sZWFuIHdlYmtpdFdlYlZpZXdTY3JpcHREaWFsb2co
V2ViS2l0V2ViVmlldyosIFdlYktpdFNjcmlwdERpYWxvZyopOwogZ2Jvb2xlYW4gd2Via2l0V2Vi
Vmlld1J1bkZpbGVDaG9vc2VyKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVl
c3QqKTsKIHZvaWQgd2Via2l0V2ViVmlld0RpZENoYW5nZVBhZ2VJRChXZWJLaXRXZWJWaWV3Kik7
CiB2b2lkIHdlYmtpdFdlYlZpZXdEaWRSZWNlaXZlVXNlck1lc3NhZ2UoV2ViS2l0V2ViVmlldyos
IFdlYktpdDo6VXNlck1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OlVz
ZXJNZXNzYWdlJiYpPiYmKTsKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCit2b2lkIHdlYmtp
dFdlYlZpZXdSZXF1ZXN0UG9pbnRlckxvY2soV2ViS2l0V2ViVmlldyopOwordm9pZCB3ZWJraXRX
ZWJWaWV3RGlkTG9zZVBvaW50ZXJMb2NrKFdlYktpdFdlYlZpZXcqKTsKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cAppbmRleCBhOWQ0OWQ1MjYxYy4uZGUyOWFjNGUxYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0zOCw2ICsz
OCw3IEBACiAjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2
ZVdlYldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUg
IlBvaW50ZXJMb2NrTWFuYWdlci5oIgogI2luY2x1ZGUgIlZpZXdHZXN0dXJlQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclBy
b3h5LmgiCkBAIC0xOTUsNiArMTk2LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUgewogICAgIEtleUJpbmRpbmdUcmFuc2xhdG9yIGtleUJpbmRpbmdUcmFuc2xhdG9yOwogICAg
IFRvdWNoRXZlbnRzTWFwIHRvdWNoRXZlbnRzOwogICAgIEludFNpemUgY29udGVudHNTaXplOwor
ICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGxhc3RNb3Rpb25FdmVudDsKIAogICAgIEd0a1dpbmRv
dyogdG9wbGV2ZWxPblNjcmVlbldpbmRvdyB7IG51bGxwdHIgfTsKICAgICB1bnNpZ25lZCBsb25n
IHRvcGxldmVsRm9jdXNJbkV2ZW50SUQgeyAwIH07CkBAIC0yMjksNiArMjMxLDggQEAgc3RydWN0
IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nKT4gZW1vamlDaG9vc2VyQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgUnVuTG9vcDo6VGlt
ZXI8V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlPiByZWxlYXNlRW1vamlDaG9vc2VyVGltZXI7CiAj
ZW5kaWYKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2ludGVyTG9ja01hbmFnZXI+IHBvaW50ZXJM
b2NrTWFuYWdlcjsKIH07CiAKIFdFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRXZWJWaWV3QmFzZSwg
d2Via2l0X3dlYl92aWV3X2Jhc2UsIEdUS19UWVBFX0NPTlRBSU5FUikKQEAgLTU1NSw2ICs1NTks
MTAgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaXNwb3NlKEdPYmplY3QqIGdvYmpl
Y3QpCiAjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMjQsIDApCiAgICAgd2Via2l0V2ViVmlld0Jh
c2VDb21wbGV0ZUVtb2ppQ2hvb3NlclJlcXVlc3Qod2ViVmlldywgZW1wdHlTdHJpbmcoKSk7CiAj
ZW5kaWYKKyAgICBpZiAod2ViVmlldy0+cHJpdi0+cG9pbnRlckxvY2tNYW5hZ2VyKSB7CisgICAg
ICAgIHdlYlZpZXctPnByaXYtPnBvaW50ZXJMb2NrTWFuYWdlci0+dW5sb2NrKCk7CisgICAgICAg
IHdlYlZpZXctPnByaXYtPnBvaW50ZXJMb2NrTWFuYWdlciA9IG51bGxwdHI7CisgICAgfQogICAg
IHdlYlZpZXctPnByaXYtPnBhZ2VQcm94eS0+Y2xvc2UoKTsKICAgICB3ZWJWaWV3LT5wcml2LT5h
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZSA9IG51bGxwdHI7CiAgICAgd2ViVmlldy0+cHJpdi0+c2xl
ZXBEaXNhYmxlciA9IG51bGxwdHI7CkBAIC04MjEsNiArODI5LDcgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VIYW5kbGVNb3VzZUV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3
QmFzZSwgR2QKICAgICBBU1NFUlQoIXByaXYtPmRpYWxvZyk7CiAKICAgICBpbnQgY2xpY2tDb3Vu
dCA9IDA7CisgICAgT3B0aW9uYWw8SW50UG9pbnQ+IG1vdmVtZW50RGVsdGE7CiAgICAgR2RrRXZl
bnRUeXBlIGV2ZW50VHlwZSA9IGdka19ldmVudF9nZXRfZXZlbnRfdHlwZShldmVudCk7CiAgICAg
c3dpdGNoIChldmVudFR5cGUpIHsKICAgICBjYXNlIEdES19CVVRUT05fUFJFU1M6CkBAIC04NTAs
NiArODU5LDE2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlSGFuZGxlTW91c2VFdmVu
dChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIEdkCiAgICAgICAgIGd0a193aWRnZXRf
Z3JhYl9mb2N1cyhHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgR0RLX01PVElPTl9OT1RJRlk6CisgICAgICAgIC8vIFBvaW50ZXIgTG9jay4gNy4xIEF0
dHJpYnV0ZXM6IG1vdmVtZW50WC9ZIG11c3QgYmUgdXBkYXRlZCByZWdhcmRsZXNzIG9mIHBvaW50
ZXIgbG9jayBzdGF0ZS4KKyAgICAgICAgaWYgKHByaXYtPmxhc3RNb3Rpb25FdmVudCkgeworICAg
ICAgICAgICAgZG91YmxlIGN1cnJlbnRYLCBjdXJyZW50WTsKKyAgICAgICAgICAgIGdka19ldmVu
dF9nZXRfcm9vdF9jb29yZHMoZXZlbnQsICZjdXJyZW50WCwgJmN1cnJlbnRZKTsKKyAgICAgICAg
ICAgIGRvdWJsZSBwcmV2aW91c1gsIHByZXZpb3VzWTsKKyAgICAgICAgICAgIGdka19ldmVudF9n
ZXRfcm9vdF9jb29yZHMocHJpdi0+bGFzdE1vdGlvbkV2ZW50LmdldCgpLCAmcHJldmlvdXNYLCAm
cHJldmlvdXNZKTsKKyAgICAgICAgICAgIG1vdmVtZW50RGVsdGEgPSBJbnRQb2ludChjdXJyZW50
WCAtIHByZXZpb3VzWCwgY3VycmVudFkgLSBwcmV2aW91c1kpOworICAgICAgICB9CisgICAgICAg
IHByaXYtPmxhc3RNb3Rpb25FdmVudC5yZXNldChnZGtfZXZlbnRfY29weShldmVudCkpOworICAg
ICAgICBicmVhazsKICAgICBjYXNlIEdES19FTlRFUl9OT1RJRlk6CiAgICAgY2FzZSBHREtfTEVB
VkVfTk9USUZZOgogICAgICAgICBicmVhazsKQEAgLTg1Nyw3ICs4NzYsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZUhhbmRsZU1vdXNlRXZlbnQoV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YlZpZXdCYXNlLCBHZAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAg
ICBwcml2LT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChl
dmVudCwgY2xpY2tDb3VudCkpOworICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVu
dChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2ZW50LCBjbGlja0NvdW50LCBtb3ZlbWVudERlbHRhKSk7
CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZUJ1dHRvblByZXNzRXZlbnQo
R3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50QnV0dG9uKiBldmVudCkKQEAgLTk2MSw2ICs5ODAs
MTEgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlTW90aW9uTm90aWZ5RXZlbnQo
R3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50TW8KICAgICAgICAgcmV0dXJuIHdpZGdldENsYXNz
LT5tb3Rpb25fbm90aWZ5X2V2ZW50ID8gd2lkZ2V0Q2xhc3MtPm1vdGlvbl9ub3RpZnlfZXZlbnQo
d2lkZ2V0LCBldmVudCkgOiBHREtfRVZFTlRfUFJPUEFHQVRFOwogICAgIH0KIAorICAgIGlmIChw
cml2LT5wb2ludGVyTG9ja01hbmFnZXIpIHsKKyAgICAgICAgcHJpdi0+cG9pbnRlckxvY2tNYW5h
Z2VyLT5kaWRSZWNlaXZlTW90aW9uRXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2
ZW50KSk7CisgICAgICAgIHJldHVybiBHREtfRVZFTlRfU1RPUDsKKyAgICB9CisKICAgICB3ZWJr
aXRXZWJWaWV3QmFzZUhhbmRsZU1vdXNlRXZlbnQod2ViVmlld0Jhc2UsIHJlaW50ZXJwcmV0X2Nh
c3Q8R2RrRXZlbnQqPihldmVudCkpOwogCiAgICAgcmV0dXJuIEdES19FVkVOVF9QUk9QQUdBVEU7
CkBAIC0xODM3LDMgKzE4NjEsNDIgQEAgaW50IHdlYmtpdFdlYlZpZXdCYXNlUmVuZGVySG9zdEZp
bGVEZXNjcmlwdG9yKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmEKICAgICByZXR1
cm4gd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLT5yZW5k
ZXJIb3N0RmlsZURlc2NyaXB0b3IoKTsKIH0KICNlbmRpZgorCit2b2lkIHdlYmtpdFdlYlZpZXdC
YXNlUmVxdWVzdFBvaW50ZXJMb2NrKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKK3sK
KyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsK
KyAgICBSRUxFQVNFX0FTU0VSVCghcHJpdi0+cG9pbnRlckxvY2tNYW5hZ2VyKTsKKyAgICBpZiAo
IXByaXYtPmxhc3RNb3Rpb25FdmVudCkgeworICAgICAgICBHdGtXaWRnZXQqIHZpZXdXaWRnZXQg
PSBHVEtfV0lER0VUKHdlYlZpZXdCYXNlKTsKKyAgICAgICAgYXV0byogZGV2aWNlID0gZ2RrX3Nl
YXRfZ2V0X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHRfc2VhdChndGtfd2lkZ2V0X2dl
dF9kaXNwbGF5KHZpZXdXaWRnZXQpKSk7CisgICAgICAgIGludCB4LCB5OworICAgICAgICBHZGtN
b2RpZmllclR5cGUgc3RhdGU7CisgICAgICAgIGdka193aW5kb3dfZ2V0X2RldmljZV9wb3NpdGlv
bihndGtfd2lkZ2V0X2dldF93aW5kb3codmlld1dpZGdldCksIGRldmljZSwgJngsICZ5LCAmc3Rh
dGUpOworICAgICAgICBwcml2LT5sYXN0TW90aW9uRXZlbnQucmVzZXQoZ2RrX2V2ZW50X25ldyhH
REtfTU9USU9OX05PVElGWSkpOworICAgICAgICBwcml2LT5sYXN0TW90aW9uRXZlbnQtPm1vdGlv
bi54ID0geDsKKyAgICAgICAgcHJpdi0+bGFzdE1vdGlvbkV2ZW50LT5tb3Rpb24ueSA9IHk7Cisg
ICAgICAgIGludCByb290WCwgcm9vdFk7CisgICAgICAgIGdka193aW5kb3dfZ2V0X3Jvb3RfY29v
cmRzKGd0a193aWRnZXRfZ2V0X3dpbmRvdyh2aWV3V2lkZ2V0KSwgeCwgeSwgJnJvb3RYLCAmcm9v
dFkpOworICAgICAgICBwcml2LT5sYXN0TW90aW9uRXZlbnQtPm1vdGlvbi54X3Jvb3QgPSByb290
WDsKKyAgICAgICAgcHJpdi0+bGFzdE1vdGlvbkV2ZW50LT5tb3Rpb24ueV9yb290ID0gcm9vdFk7
CisgICAgICAgIHByaXYtPmxhc3RNb3Rpb25FdmVudC0+bW90aW9uLnN0YXRlID0gc3RhdGU7Cisg
ICAgfQorICAgIHByaXYtPnBvaW50ZXJMb2NrTWFuYWdlciA9IFBvaW50ZXJMb2NrTWFuYWdlcjo6
Y3JlYXRlKCpwcml2LT5wYWdlUHJveHksIHByaXYtPmxhc3RNb3Rpb25FdmVudC5nZXQoKSk7Cisg
ICAgaWYgKHByaXYtPnBvaW50ZXJMb2NrTWFuYWdlci0+bG9jaygpKSB7CisgICAgICAgIHByaXYt
PnBhZ2VQcm94eS0+ZGlkQWxsb3dQb2ludGVyTG9jaygpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgcHJpdi0+cG9pbnRlckxvY2tNYW5hZ2VyID0gbnVsbHB0cjsKKyAgICBwcml2LT5w
YWdlUHJveHktPmRpZERlbnlQb2ludGVyTG9jaygpOworfQorCit2b2lkIHdlYmtpdFdlYlZpZXdC
YXNlRGlkTG9zZVBvaW50ZXJMb2NrKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKK3sK
KyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsK
KyAgICBpZiAoIXByaXYtPnBvaW50ZXJMb2NrTWFuYWdlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcHJpdi0+cG9pbnRlckxvY2tNYW5hZ2VyLT51bmxvY2soKTsKKyAgICBwcml2LT5wb2ludGVy
TG9ja01hbmFnZXIgPSBudWxscHRyOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKaW5kZXggZjg0YTNh
YjY1ZTAuLjhiYzE5YjU4ODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKQEAgLTEwMSwzICsxMDEs
NiBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2hvd0Vtb2ppQ2hvb3NlcihXZWJLaXRXZWJWaWV3
QmFzZSosIGNvbnN0IFdlYkNvcmU6OkludFJlYwogI2lmIFVTRShXUEVfUkVOREVSRVIpCiBpbnQg
d2Via2l0V2ViVmlld0Jhc2VSZW5kZXJIb3N0RmlsZURlc2NyaXB0b3IoV2ViS2l0V2ViVmlld0Jh
c2UqKTsKICNlbmRpZgorCit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUmVxdWVzdFBvaW50ZXJMb2Nr
KFdlYktpdFdlYlZpZXdCYXNlKik7Cit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRGlkTG9zZVBvaW50
ZXJMb2NrKFdlYktpdFdlYlZpZXdCYXNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvUG9pbnRlckxvY2tNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi42ZDIzYzM5OWMzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTAyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlBvaW50ZXJMb2NrTWFuYWdlci5oIgorCisjaW5jbHVkZSAi
TmF0aXZlV2ViTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorCisj
aWYgUExBVEZPUk0oV0FZTEFORCkKKyNpbmNsdWRlICJQb2ludGVyTG9ja01hbmFnZXJXYXlsYW5k
LmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFgxMSkKKyNpbmNsdWRlICJQb2ludGVyTG9ja01h
bmFnZXJYMTEuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UG9pbnRlckxvY2tNYW5hZ2VyPiBQb2ludGVy
TG9ja01hbmFnZXI6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIGNvbnN0IEdka0V2ZW50
KiBldmVudCkKK3sKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIGlmIChQbGF0Zm9ybURpc3Bs
YXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXYXls
YW5kKQorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQb2ludGVyTG9ja01hbmFnZXJXYXlsYW5k
Pih3ZWJQYWdlLCBldmVudCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShYMTEpCisgICAgaWYgKFBs
YXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6
OlR5cGU6OlgxMSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UG9pbnRlckxvY2tNYW5hZ2Vy
WDExPih3ZWJQYWdlLCBldmVudCk7CisjZW5kaWYKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitQb2ludGVyTG9ja01hbmFnZXI6OlBv
aW50ZXJMb2NrTWFuYWdlcihXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIGNvbnN0IEdka0V2ZW50KiBl
dmVudCkKKyAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQorICAgICwgbV9ldmVudChldmVudCkKK3sK
K30KKworUG9pbnRlckxvY2tNYW5hZ2VyOjp+UG9pbnRlckxvY2tNYW5hZ2VyKCkKK3sKKyAgICBS
RUxFQVNFX0FTU0VSVCghbV9kZXZpY2UpOworfQorCitib29sIFBvaW50ZXJMb2NrTWFuYWdlcjo6
bG9jaygpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fZGV2aWNlKTsKKworICAgIGF1dG8qIHZp
ZXdXaWRnZXQgPSBtX3dlYlBhZ2Uudmlld1dpZGdldCgpOworICAgIG1fZGV2aWNlID0gZ2RrX3Nl
YXRfZ2V0X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHRfc2VhdChndGtfd2lkZ2V0X2dl
dF9kaXNwbGF5KHZpZXdXaWRnZXQpKSk7CisgICAgR1JlZlB0cjxHZGtDdXJzb3I+IGN1cnNvciA9
IGFkb3B0R1JlZihnZGtfY3Vyc29yX25ld19mcm9tX25hbWUoZ3RrX3dpZGdldF9nZXRfZGlzcGxh
eSh2aWV3V2lkZ2V0KSwgIm5vbmUiKSk7CisgICAgYXV0byBncmFiUmVzdWx0ID0gZ2RrX3NlYXRf
Z3JhYihnZGtfZGV2aWNlX2dldF9zZWF0KG1fZGV2aWNlKSwgZ3RrX3dpZGdldF9nZXRfd2luZG93
KHZpZXdXaWRnZXQpLCBHREtfU0VBVF9DQVBBQklMSVRZX0FMTF9QT0lOVElORywgVFJVRSwKKyAg
ICAgICAgY3Vyc29yLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICBpZiAo
Z3JhYlJlc3VsdCAhPSBHREtfR1JBQl9TVUNDRVNTKSB7CisgICAgICAgIG1fZGV2aWNlID0gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIFBvaW50ZXJMb2NrTWFuYWdlcjo6dW5sb2NrKCkKK3sKKyAgICBpZiAoIW1fZGV2
aWNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBnZGtfc2VhdF91bmdyYWIoZ2RrX2Rl
dmljZV9nZXRfc2VhdChtX2RldmljZSkpOworICAgIG1fZGV2aWNlID0gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBQb2ludGVyTG9ja01hbmFnZXI6OmhhbmRsZU1vdGlvbihJ
bnRQb2ludCYmIGRlbHRhKQoreworICAgIG1fd2ViUGFnZS5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2
ZVdlYk1vdXNlRXZlbnQoY29uc3RfY2FzdDxHZGtFdmVudCo+KG1fZXZlbnQpLCAwLCBkZWx0YSkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uYzcwY2Y3ZTJhOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvUG9pbnRlckxvY2tNYW5hZ2VyLmgKQEAgLTAsMCArMSw2MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK3R5cGVkZWYgc3RydWN0IF9HZGtEZXZp
Y2UgR2RrRGV2aWNlOwordHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIEludFBvaW50OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBQb2ludGVyTG9ja01hbmFnZXIgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFBvaW50ZXJMb2NrTWFuYWdlcik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UG9pbnRlckxv
Y2tNYW5hZ2VyPiBjcmVhdGUoV2ViUGFnZVByb3h5JiwgY29uc3QgR2RrRXZlbnQqKTsKKyAgICBQ
b2ludGVyTG9ja01hbmFnZXIoV2ViUGFnZVByb3h5JiwgY29uc3QgR2RrRXZlbnQqKTsKKyAgICB2
aXJ0dWFsIH5Qb2ludGVyTG9ja01hbmFnZXIoKTsKKworICAgIHZpcnR1YWwgYm9vbCBsb2NrKCk7
CisgICAgdmlydHVhbCBib29sIHVubG9jaygpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
TW90aW9uRXZlbnQoY29uc3QgR2RrRXZlbnQqKSB7IH07CisKK3Byb3RlY3RlZDoKKyAgICB2b2lk
IGhhbmRsZU1vdGlvbihXZWJDb3JlOjpJbnRQb2ludCYmKTsKKworICAgIFdlYlBhZ2VQcm94eSYg
bV93ZWJQYWdlOworICAgIGNvbnN0IEdka0V2ZW50KiBtX2V2ZW50OworICAgIEdka0RldmljZSog
bV9kZXZpY2UgeyBudWxscHRyIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJXYXls
YW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJX
YXlsYW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjFiYWU1
Nzk4ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUG9p
bnRlckxvY2tNYW5hZ2VyV2F5bGFuZC5jcHAKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUG9pbnRlckxvY2tNYW5hZ2VyV2F5bGFuZC5oIgorCisjaWYgUExBVEZPUk0oV0FZ
TEFORCkKKworI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgInBvaW50ZXItY29u
c3RyYWludHMtdW5zdGFibGUtdjEtY2xpZW50LXByb3RvY29sLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9XbFVuaXF1ZVB0ci5oPgorI2luY2x1ZGUgPGdkay9nZGt3YXlsYW5kLmg+CisjaW5jbHVkZSA8
Z3RrL2d0ay5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCitQb2ludGVyTG9ja01hbmFnZXJXYXlsYW5kOjpQb2ludGVyTG9ja01hbmFnZXJXYXlsYW5k
KFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgY29uc3QgR2RrRXZlbnQqIGV2ZW50KQorICAgIDogUG9p
bnRlckxvY2tNYW5hZ2VyKHdlYlBhZ2UsIGV2ZW50KQoreworICAgIGF1dG8qIGRpc3BsYXkgPSBn
ZGtfd2F5bGFuZF9kaXNwbGF5X2dldF93bF9kaXNwbGF5KGd0a193aWRnZXRfZ2V0X2Rpc3BsYXko
bV93ZWJQYWdlLnZpZXdXaWRnZXQoKSkpOworICAgIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9yZWdp
c3RyeT4gcmVnaXN0cnkod2xfZGlzcGxheV9nZXRfcmVnaXN0cnkoZGlzcGxheSkpOworICAgIHds
X3JlZ2lzdHJ5X2FkZF9saXN0ZW5lcihyZWdpc3RyeS5nZXQoKSwgJnNfcmVnaXN0cnlMaXN0ZW5l
ciwgdGhpcyk7CisgICAgd2xfZGlzcGxheV9yb3VuZHRyaXAoZGlzcGxheSk7Cit9CisKK1BvaW50
ZXJMb2NrTWFuYWdlcldheWxhbmQ6On5Qb2ludGVyTG9ja01hbmFnZXJXYXlsYW5kKCkKK3sKKyAg
ICBnX2NsZWFyX3BvaW50ZXIoJm1fcmVsYXRpdmVQb2ludGVyTWFuYWdlciwgendwX3JlbGF0aXZl
X3BvaW50ZXJfbWFuYWdlcl92MV9kZXN0cm95KTsKKyAgICBnX2NsZWFyX3BvaW50ZXIoJm1fcG9p
bnRlckNvbnN0cmFpbnRzLCB6d3BfcG9pbnRlcl9jb25zdHJhaW50c192MV9kZXN0cm95KTsKK30K
KworY29uc3Qgc3RydWN0IHdsX3JlZ2lzdHJ5X2xpc3RlbmVyIFBvaW50ZXJMb2NrTWFuYWdlcldh
eWxhbmQ6OnNfcmVnaXN0cnlMaXN0ZW5lciA9IHsKKyAgICAvLyBnbG9iYWwKKyAgICBbXSh2b2lk
KiBkYXRhLCBzdHJ1Y3Qgd2xfcmVnaXN0cnkqIHJlZ2lzdHJ5LCB1aW50MzJfdCBuYW1lLCBjb25z
dCBjaGFyKiBpbnRlcmZhY2UsIHVpbnQzMl90KSB7CisgICAgICAgIGlmICghZ19zdHJjbXAwKGlu
dGVyZmFjZSwgInp3cF9wb2ludGVyX2NvbnN0cmFpbnRzX3YxIikpIHsKKyAgICAgICAgICAgIGF1
dG8mIG1hbmFnZXIgPSAqcmVpbnRlcnByZXRfY2FzdDxQb2ludGVyTG9ja01hbmFnZXJXYXlsYW5k
Kj4oZGF0YSk7CisgICAgICAgICAgICBtYW5hZ2VyLm1fcG9pbnRlckNvbnN0cmFpbnRzID0gc3Rh
dGljX2Nhc3Q8c3RydWN0IHp3cF9wb2ludGVyX2NvbnN0cmFpbnRzX3YxKj4od2xfcmVnaXN0cnlf
YmluZChyZWdpc3RyeSwgbmFtZSwgJnp3cF9wb2ludGVyX2NvbnN0cmFpbnRzX3YxX2ludGVyZmFj
ZSwgMSkpOworICAgICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAoaW50ZXJmYWNlLCAiendwX3Jl
bGF0aXZlX3BvaW50ZXJfbWFuYWdlcl92MSIpKSB7CisgICAgICAgICAgICBhdXRvJiBtYW5hZ2Vy
ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8UG9pbnRlckxvY2tNYW5hZ2VyV2F5bGFuZCo+KGRhdGEpOwor
ICAgICAgICAgICAgbWFuYWdlci5tX3JlbGF0aXZlUG9pbnRlck1hbmFnZXIgPSBzdGF0aWNfY2Fz
dDxzdHJ1Y3QgendwX3JlbGF0aXZlX3BvaW50ZXJfbWFuYWdlcl92MSo+KHdsX3JlZ2lzdHJ5X2Jp
bmQocmVnaXN0cnksIG5hbWUsICZ6d3BfcmVsYXRpdmVfcG9pbnRlcl9tYW5hZ2VyX3YxX2ludGVy
ZmFjZSwgMSkpOworICAgICAgICB9CisgICAgfSwKKyAgICAvLyBnbG9iYWxfcmVtb3ZlCisgICAg
W10odm9pZCosIHN0cnVjdCB3bF9yZWdpc3RyeSosIHVpbnQzMl90KQorICAgIHsKKyAgICB9Cit9
OworCitjb25zdCBzdHJ1Y3QgendwX3JlbGF0aXZlX3BvaW50ZXJfdjFfbGlzdGVuZXIgUG9pbnRl
ckxvY2tNYW5hZ2VyV2F5bGFuZDo6c19yZWxhdGl2ZVBvaW50ZXJMaXN0ZW5lciA9IHsKKyAgICAv
LyByZWxhdGl2ZV9tb3Rpb24KKyAgICBbXSh2b2lkKiBkYXRhLCBzdHJ1Y3QgendwX3JlbGF0aXZl
X3BvaW50ZXJfdjEqLCB1aW50MzJfdCwgdWludDMyX3QsIHdsX2ZpeGVkX3QsIHdsX2ZpeGVkX3Qs
IHdsX2ZpeGVkX3QgZGVsdGFYLCB3bF9maXhlZF90IGRlbHRhWSkgeworICAgICAgICBhdXRvJiBt
YW5hZ2VyID0gKnJlaW50ZXJwcmV0X2Nhc3Q8UG9pbnRlckxvY2tNYW5hZ2VyV2F5bGFuZCo+KGRh
dGEpOworICAgICAgICBtYW5hZ2VyLmhhbmRsZU1vdGlvbih7IHdsX2ZpeGVkX3RvX2ludChkZWx0
YVgpLCB3bF9maXhlZF90b19pbnQoZGVsdGFZKSB9KTsKKyAgICB9Cit9OworCitib29sIFBvaW50
ZXJMb2NrTWFuYWdlcldheWxhbmQ6OmxvY2soKQoreworICAgIGlmICghbV9wb2ludGVyQ29uc3Ry
YWludHMgfHwgIW1fcmVsYXRpdmVQb2ludGVyTWFuYWdlcikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFQb2ludGVyTG9ja01hbmFnZXI6OmxvY2soKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYXV0byogcG9pbnRlciA9IGdka193YXlsYW5kX2RldmljZV9nZXRfd2xf
cG9pbnRlcihtX2RldmljZSk7CisKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9yZWxhdGl2ZVBvaW50
ZXIpOworICAgIG1fcmVsYXRpdmVQb2ludGVyID0gendwX3JlbGF0aXZlX3BvaW50ZXJfbWFuYWdl
cl92MV9nZXRfcmVsYXRpdmVfcG9pbnRlcihtX3JlbGF0aXZlUG9pbnRlck1hbmFnZXIsIHBvaW50
ZXIpOworICAgIHp3cF9yZWxhdGl2ZV9wb2ludGVyX3YxX2FkZF9saXN0ZW5lcihtX3JlbGF0aXZl
UG9pbnRlciwgJnNfcmVsYXRpdmVQb2ludGVyTGlzdGVuZXIsIHRoaXMpOworCisgICAgUkVMRUFT
RV9BU1NFUlQoIW1fbG9ja2VkUG9pbnRlcik7CisgICAgYXV0byogc3VyZmFjZSA9IGdka193YXls
YW5kX3dpbmRvd19nZXRfd2xfc3VyZmFjZShndGtfd2lkZ2V0X2dldF93aW5kb3cobV93ZWJQYWdl
LnZpZXdXaWRnZXQoKSkpOworICAgIG1fbG9ja2VkUG9pbnRlciA9IHp3cF9wb2ludGVyX2NvbnN0
cmFpbnRzX3YxX2xvY2tfcG9pbnRlcihtX3BvaW50ZXJDb25zdHJhaW50cywgc3VyZmFjZSwgcG9p
bnRlciwgbnVsbHB0ciwgWldQX1BPSU5URVJfQ09OU1RSQUlOVFNfVjFfTElGRVRJTUVfUEVSU0lT
VEVOVCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUG9pbnRlckxvY2tNYW5hZ2VyV2F5
bGFuZDo6dW5sb2NrKCkKK3sKKyAgICBnX2NsZWFyX3BvaW50ZXIoJm1fcmVsYXRpdmVQb2ludGVy
LCB6d3BfcmVsYXRpdmVfcG9pbnRlcl92MV9kZXN0cm95KTsKKyAgICBnX2NsZWFyX3BvaW50ZXIo
Jm1fbG9ja2VkUG9pbnRlciwgendwX2xvY2tlZF9wb2ludGVyX3YxX2Rlc3Ryb3kpOworCisgICAg
cmV0dXJuIFBvaW50ZXJMb2NrTWFuYWdlcjo6dW5sb2NrKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJXYXlsYW5kLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUG9pbnRlckxvY2tNYW5hZ2VyV2F5bGFuZC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jYTcyMzRlMjRkOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJX
YXlsYW5kLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUG9pbnRlckxvY2tNYW5h
Z2VyLmgiCisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorCisjaW5jbHVkZSAicmVsYXRpdmUtcG9p
bnRlci11bnN0YWJsZS12MS1jbGllbnQtcHJvdG9jb2wuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1ds
VW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d2F5bGFuZC1jbGllbnQuaD4KKworc3RydWN0IHp3cF9s
b2NrZWRfcG9pbnRlcl92MTsKK3N0cnVjdCB6d3BfcG9pbnRlcl9jb25zdHJhaW50c192MTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgUG9pbnRl
ckxvY2tNYW5hZ2VyV2F5bGFuZCBmaW5hbCA6IHB1YmxpYyBQb2ludGVyTG9ja01hbmFnZXIgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBvaW50ZXJMb2NrTWFuYWdlcldheWxhbmQpOyBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBQb2ludGVyTG9ja01hbmFnZXJXYXls
YW5kKFdlYlBhZ2VQcm94eSYsIGNvbnN0IEdka0V2ZW50Kik7CisgICAgflBvaW50ZXJMb2NrTWFu
YWdlcldheWxhbmQoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHdsX3Jl
Z2lzdHJ5X2xpc3RlbmVyIHNfcmVnaXN0cnlMaXN0ZW5lcjsKKyAgICBzdGF0aWMgY29uc3Qgc3Ry
dWN0IHp3cF9yZWxhdGl2ZV9wb2ludGVyX3YxX2xpc3RlbmVyIHNfcmVsYXRpdmVQb2ludGVyTGlz
dGVuZXI7CisKKyAgICBib29sIGxvY2soKSBvdmVycmlkZTsKKyAgICBib29sIHVubG9jaygpIG92
ZXJyaWRlOworCisgICAgV2ViQ29yZTo6V2xVbmlxdWVQdHI8c3RydWN0IHdsX3JlZ2lzdHJ5PiBt
X3JlZ2lzdHJ5OworICAgIHN0cnVjdCB6d3BfcG9pbnRlcl9jb25zdHJhaW50c192MSogbV9wb2lu
dGVyQ29uc3RyYWludHMgeyBudWxscHRyIH07CisgICAgc3RydWN0IHp3cF9sb2NrZWRfcG9pbnRl
cl92MSogbV9sb2NrZWRQb2ludGVyIHsgbnVsbHB0ciB9OworICAgIHN0cnVjdCB6d3BfcmVsYXRp
dmVfcG9pbnRlcl9tYW5hZ2VyX3YxKiBtX3JlbGF0aXZlUG9pbnRlck1hbmFnZXIgeyBudWxscHRy
IH07CisgICAgc3RydWN0IHp3cF9yZWxhdGl2ZV9wb2ludGVyX3YxKiBtX3JlbGF0aXZlUG9pbnRl
ciB7IG51bGxwdHIgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
UExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9Qb2ludGVyTG9ja01hbmFnZXJYMTEuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L1BvaW50ZXJMb2NrTWFuYWdlclgxMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjAzZDg0MTY5N2M0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1BvaW50ZXJMb2NrTWFuYWdlclgxMS5jcHAKQEAgLTAsMCArMSw1OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja01hbmFnZXJYMTEuaCIKKworI2lmIFBMQVRG
T1JNKFgxMSkKKworI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPGdkay9nZGt4
Lmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCitQb2ludGVyTG9ja01hbmFnZXJYMTE6OlBvaW50ZXJMb2NrTWFu
YWdlclgxMShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIGNvbnN0IEdka0V2ZW50KiBldmVudCkKKyAg
ICA6IFBvaW50ZXJMb2NrTWFuYWdlcih3ZWJQYWdlLCBldmVudCkKK3sKK30KKwordm9pZCBQb2lu
dGVyTG9ja01hbmFnZXJYMTE6OmRpZFJlY2VpdmVNb3Rpb25FdmVudChjb25zdCBHZGtFdmVudCog
ZXZlbnQpCit7CisgICAgZG91YmxlIGN1cnJlbnRYLCBjdXJyZW50WTsKKyAgICBnZGtfZXZlbnRf
Z2V0X3Jvb3RfY29vcmRzKGV2ZW50LCAmY3VycmVudFgsICZjdXJyZW50WSk7CisgICAgZG91Ymxl
IGluaXRpYWxYLCBpbml0aWFsWTsKKyAgICBnZGtfZXZlbnRfZ2V0X3Jvb3RfY29vcmRzKG1fZXZl
bnQsICZpbml0aWFsWCwgJmluaXRpYWxZKTsKKyAgICBpZiAoY3VycmVudFggPT0gaW5pdGlhbFgg
JiYgY3VycmVudFkgPT0gaW5pdGlhbFkpCisgICAgICAgIHJldHVybjsKKworICAgIGhhbmRsZU1v
dGlvbihJbnRQb2ludChjdXJyZW50WCAtIGluaXRpYWxYLCBjdXJyZW50WSAtIGluaXRpYWxZKSk7
CisgICAgZ2RrX2RldmljZV93YXJwKG1fZGV2aWNlLCBndGtfd2lkZ2V0X2dldF9zY3JlZW4obV93
ZWJQYWdlLnZpZXdXaWRnZXQoKSksIGluaXRpYWxYLCBpbml0aWFsWSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJYMTEuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJYMTEuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWJlMTVmZmVhNTUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUG9pbnRlckxvY2tNYW5hZ2VyWDEx
LmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5M
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUG9pbnRlckxvY2tNYW5hZ2VyLmgi
CisKKyNpZiBQTEFURk9STShYMTEpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQ
YWdlUHJveHk7CisKK2NsYXNzIFBvaW50ZXJMb2NrTWFuYWdlclgxMSBmaW5hbCA6IHB1YmxpYyBQ
b2ludGVyTG9ja01hbmFnZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBvaW50ZXJMb2Nr
TWFuYWdlclgxMSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFBvaW50
ZXJMb2NrTWFuYWdlclgxMShXZWJQYWdlUHJveHkmLCBjb25zdCBHZGtFdmVudCopOworICAgIH5Q
b2ludGVyTG9ja01hbmFnZXJYMTEoKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgdm9pZCBk
aWRSZWNlaXZlTW90aW9uRXZlbnQoY29uc3QgR2RrRXZlbnQqKSBvdmVycmlkZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oWDExKQpkaWZmIC0tZ2l0
IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dU
Sy5jbWFrZQppbmRleCA2YjQxMzA1NDA2MC4uY2NlMTBjMGMyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNt
YWtlCkBAIC0xNjAsNiArMTYwLDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX01IVE1MIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElE
QVRJT04gUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9PRkZTQ1JFRU5fQ0FOVkFTIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRVUkVT
fSkKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9QT0lOVEVSX0xPQ0sg
UFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9TRVJW
SUNFX1dPUktFUiBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX1NIQVJFQUJMRV9SRVNPVVJDRSBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX1JUQyBQUklWQVRFICR7RU5BQkxFX0VYUEVSSU1FTlRB
TF9GRUFUVVJFU30pCkBAIC0zNDMsNiArMzQ0LDcgQEAgaWYgKEVOQUJMRV9XQVlMQU5EX1RBUkdF
VCkKICAgICBlbmRpZiAoKQogCiAgICAgZmluZF9wYWNrYWdlKFdheWxhbmQgUkVRVUlSRUQpCisg
ICAgZmluZF9wYWNrYWdlKFdheWxhbmRQcm90b2NvbHMgMS4xMiBSRVFVSVJFRCkKIGVuZGlmICgp
CiAKIGlmIChVU0VfTElCTk9USUZZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDQ4Yjk5YWY2YmY3Li5kYjIxZDI2ZjQzZCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDE5LTExLTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbR1RLXSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgUG9pbnRlciBMb2NrIEFQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyOTU2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdUUjo6Z2V0R0RL
S2V5U3ltRm9yS2V5UmVmKTogSGFuZGxlIGVzY2FwZSBrZXkuCisKIDIwMTktMTEtMDQgIEFha2Fz
aCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtld3NdIFBlcmZvcm0g
dmFsaWRhdGlvbiBvZiBwYXRjaCBiZWZvcmUgcmV0cnlpbmcgQVBJIGFuZCBsYXlvdXQgdGVzdHMK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlH
dGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5j
cHAKaW5kZXggYjE3ZWNhOGZmOGQuLjdlOTViMTEyY2M5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcApAQCAtMjcwLDYgKzI3MCw4
IEBAIGludCBnZXRHREtLZXlTeW1Gb3JLZXlSZWYoV0tTdHJpbmdSZWYga2V5UmVmLCB1bnNpZ25l
ZCBsb2NhdGlvbiwgZ3VpbnQqIG1vZGlmaWVyCiAgICAgICAgIHJldHVybiBHREtfS0VZX0YxMTsK
ICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhrZXlSZWYsICJGMTIiKSkKICAg
ICAgICAgcmV0dXJuIEdES19LRVlfRjEyOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKGtleVJlZiwgImVzY2FwZSIpKQorICAgICAgICByZXR1cm4gR0RLX0tFWV9Fc2NhcGU7
CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5n
U2l6ZShrZXlSZWYpOwogICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+KGJ1
ZmZlclNpemUpOwo=
</data>
<flag name="review"
          id="398587"
          type_id="1"
          status="+"
          setter="clopez"
    />
          </attachment>
      

    </bug>

</bugzilla>