<?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>94866</bug_id>
          
          <creation_ts>2012-08-23 15:28:09 -0700</creation_ts>
          <short_desc>[chromium] Convert WebLayerTreeView interface into pure virtual</short_desc>
          <delta_ts>2012-08-24 16:46:37 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>piman</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>703459</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-23 15:28:09 -0700</bug_when>
    <thetext>[chromium] Convert WebLayerTreeView interface into pure virtual</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703473</commentid>
    <comment_count>1</comment_count>
      <attachid>160266</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-23 15:37:14 -0700</bug_when>
    <thetext>Created attachment 160266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703529</commentid>
    <comment_count>2</comment_count>
      <attachid>160278</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-23 16:39:09 -0700</bug_when>
    <thetext>Created attachment 160278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703533</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-23 16:41:22 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703536</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-23 16:44:37 -0700</bug_when>
    <thetext>Depends on https://chromiumcodereview.appspot.com/10873052 landing and rolling into Source/WebKit/chromium/DEPS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703563</commentid>
    <comment_count>5</comment_count>
      <attachid>160278</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-23 17:06:32 -0700</bug_when>
    <thetext>Comment on attachment 160278
Patch

Attachment 160278 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13567893</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703611</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-23 17:54:02 -0700</bug_when>
    <thetext>Error is:
Last 500 characters of output:
elease/obj.target/webkit_unit_tests/Source/WebKit/chromium/tests/IDBAbortOnCorruptTest.o
Source/WebKit/chromium/tests/GraphicsLayerChromiumTest.cpp: In constructor &apos;&lt;unnamed&gt;::GraphicsLayerChromiumTest::GraphicsLayerChromiumTest()&apos;:
Source/WebKit/chromium/tests/GraphicsLayerChromiumTest.cpp:69: error: returning a value from a constructor
make: *** [out/Release/obj.target/webkit_unit_tests/Source/WebKit/chromium/tests/GraphicsLayerChromiumTest.o] Error 1
make: *** Waiting for unfinished jobs....

that line is:
ASSERT_TRUE(m_layerTreeView = adoptPtr(WebLayerTreeView::create(&amp;m_layerTreeViewClient, *m_platformLayer, WebLayerTreeView::Settings())));

so I suspect the way that macro expands makes g++ unhappy. I&apos;ll just remove, the test fails in a pretty obvious way if this call fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703612</commentid>
    <comment_count>7</comment_count>
      <attachid>160298</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-23 17:55:13 -0700</bug_when>
    <thetext>Created attachment 160298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704201</commentid>
    <comment_count>8</comment_count>
      <attachid>160298</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-24 10:12:37 -0700</bug_when>
    <thetext>Comment on attachment 160298
Patch

R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704515</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-24 16:46:37 -0700</bug_when>
    <thetext>Committed r126652: &lt;http://trac.webkit.org/changeset/126652&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160266</attachid>
            <date>2012-08-23 15:37:14 -0700</date>
            <delta_ts>2012-08-23 16:39:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94866-20120823153710.patch</filename>
            <type>text/plain</type>
            <size>94839</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Mzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxMmFhODdjNGE5ZjEw
Yjk5M2I0OWEwYzMzMWE5MTRhYzI2ZGNiMTI0Li5lY2E2ZTY1YzVhMmNjODE5MWNkNTkyZWIxMDE1
ZjE1MDQ2ZWEzOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wOC0yMyAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gQ29udmVydCBXZWJMYXllclRyZWVWaWV3IGludGVyZmFjZSBpbnRvIHB1cmUgdmlydHVhbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ4NjYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1ha2Vz
IHRoZSBXZWJMYXllclRyZWVWaWV3IGludGVyZmFjZSBwdXJlIHZpcnR1YWwgdG8gcHJvdmlkZSBi
ZXR0ZXIgaW5zdWxhdGlvbiBmcm9tIHRoZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIGNo
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoU2V0dGluZ3MpOgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlldyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6On5XZWJMYXllclRyZWVWaWV3KToKKwogMjAxMi0wOC0y
MiAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gQ2hhbmdlIFdlYkxheWVyIGZyb20gYSBjb25jcmV0ZSB0eXBlIHRvIGEgcHVyZSB2aXJ0
dWFsIGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdlMWI5NDJhMDFlNzA4N2YzZDBjMDAwNGFjYzYy
NjM2OGVlODRmOTIuLjQyZjNhNzI2OGE2YzM1N2ExOWE5MGVlODJmMzA0NzU0NDQyMDg2NTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wOC0yMyAgSmFtZXMgUm9iaW5zb24gIDxq
YW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ29udmVydCBXZWJMYXll
clRyZWVWaWV3IGludGVyZmFjZSBpbnRvIHB1cmUgdmlydHVhbAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ4NjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWVzIENDTGF5ZXJUcmVlSG9zdENsaWVu
dDo6dXBkYXRlQW5pbWF0aW9ucyAtPiBDQ0xheWVyVHJlZUhvc3RDbGllbnQ6OmFuaW1hdGUgdG8g
YXZvaWQgYSBuYW1pbmcgY29sbGlzaW9uCisgICAgICAgIGFuZCB0byBiZXR0ZXIgbWF0Y2ggdGhl
IG90aGVyIGltcGVyYXRpdmUtc291bmRpbmcgY2FsbHMgKGxpa2UgbGF5b3V0KS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgor
ICAgICAgICAoQ0NMYXllclRyZWVIb3N0Q2xpZW50KToKKwogMjAxMi0wOC0yMiAgSmFtZXMgUm9i
aW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ2hhbmdl
IFdlYkxheWVyIGZyb20gYSBjb25jcmV0ZSB0eXBlIHRvIGEgcHVyZSB2aXJ0dWFsIGludGVyZmFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyNTNjY2U2ZTgxNjcyZGQ2MmQxMWRkNGIz
NzBjM2UzNGIzZjM4N2I5Li4yMTQ1ODIzOTUyODA3ZGZlYTFkODhiNTU2YzY0NzhiM2U0NTEwMzc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEyLTA4LTIz
ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBDb252ZXJ0IFdlYkxheWVyVHJlZVZpZXcgaW50ZXJmYWNlIGludG8gcHVyZSB2aXJ0dWFs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDg2Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZXMg
V2ViTGF5ZXJUcmVlVmlldyBpbXBsZW1lbnRhdGlvbiBhbmQgY2FsbGVycyB0byBuZXcgaW50ZXJm
YWNlLiBUaGUgY3JlYXRlR3JhcGhpY3NDb250ZXh0M0QoKSB3cmFwcGVyCisgICAgICAgIHN0dWZm
IGNhbiBqdXN0IGdvIGF3YXkgbm93IHNpbmNlIGRvd25zdHJlYW0gaGFzIHVwZGF0ZWQgdG8gY3Jl
YXRlT3V0cHV0U3VyZmFjZSgpLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICog
c3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9XZWJMYXll
clRyZWVWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpXZWJMYXllclRy
ZWVWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjppbml0
aWFsaXplKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJl
ZVZpZXdJbXBsOjpzZXRTdXJmYWNlUmVhZHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRy
ZWVWaWV3SW1wbDo6c2V0Um9vdExheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVl
Vmlld0ltcGw6OmNsZWFyUm9vdExheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVl
Vmlld0ltcGw6OmNvbXBvc2l0b3JJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJUcmVlVmlld0ltcGw6OnNldFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVyVHJlZVZpZXdJbXBsOjpsYXlvdXRWaWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllclRyZWVWaWV3SW1wbDo6ZGV2aWNlVmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNldERldmljZVNjYWxlRmFjdG9yKToKKyAgICAgICAg
KFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmRldmljZVNjYWxlRmFjdG9yKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNldEJhY2tncm91bmRDb2xvcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpzZXRIYXNUcmFuc3BhcmVudEJh
Y2tncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0Vmlz
aWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpzZXRQYWdlU2Nh
bGVGYWN0b3JBbmRMaW1pdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1w
bDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRy
ZWVWaWV3SW1wbDo6c2V0TmVlZHNBbmltYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJU
cmVlVmlld0ltcGw6OnNldE5lZWRzUmVkcmF3KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJU
cmVlVmlld0ltcGw6OmNvbW1pdFJlcXVlc3RlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
VHJlZVZpZXdJbXBsOjpjb21wb3NpdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVW
aWV3SW1wbDo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJl
ZVZpZXdJbXBsOjpjb21wb3NpdGVBbmRSZWFkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVyVHJlZVZpZXdJbXBsOjpmaW5pc2hBbGxSZW5kZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllclRyZWVWaWV3SW1wbDo6cmVuZGVyaW5nU3RhdHMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0Rm9udEF0bGFzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJUcmVlVmlld0ltcGw6Omxvc2VDb21wb3NpdG9yQ29udGV4dCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjp3aWxsQmVnaW5GcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpkaWRCZWdpbkZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmFuaW1hdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
YXllclRyZWVWaWV3SW1wbDo6bGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVl
Vmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXll
clRyZWVWaWV3SW1wbDo6Y3JlYXRlT3V0cHV0U3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxheWVyVHJlZVZpZXdJbXBsOjpkaWRSZWNyZWF0ZU91dHB1dFN1cmZhY2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6d2lsbENvbW1pdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpkaWRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6c2NoZWR1bGVDb21wb3NpdGUpOgor
ICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oOgorICAgICAgICAoV2ViTGF5ZXJU
cmVlVmlld0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpyZW5kZXJpbmdTdGF0cyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpzZXRDb21wb3NpdG9yU3VyZmFjZVJlYWR5KToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmFuaW1hdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZG9Q
aXhlbFJlYWRiYWNrVG9DYW52YXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cGFp
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y29tcG9zaXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnNldE5lZWRzUmVkcmF3KToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmlzSW5wdXRUaHJvdHRsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6bG9zZUNvbXBvc2l0b3JDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnNldERldmljZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OmNvbXB1dGVQYWdlU2NhbGVGYWN0b3JMaW1pdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6c2V0SXNUcmFuc3BhcmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpz
ZXRSb290R3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzY2hl
ZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OmludmFsaWRhdGVSb290TGF5ZXJSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzY2hl
ZHVsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OnVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OnNldFZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJU
cmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0NDVGhyZWFkZWRUZXN0LmNwcDoKKyAg
ICAgICAgKiB0ZXN0cy9DQ1RocmVhZGVkVGVzdC5oOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRl
c3RIb29rczo6YW5pbWF0ZSk6CisgICAgICAgICogdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENs
aWVudC5oOgorICAgICAgICAqIHRlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0OjpHcmFwaGljc0xheWVy
Q2hyb21pdW1UZXN0KToKKyAgICAgICAgKFdlYktpdDo6R3JhcGhpY3NMYXllckNocm9taXVtVGVz
dDo6fkdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QpOgorICAgICAgICAoR3JhcGhpY3NMYXllckNo
cm9taXVtVGVzdCk6CisgICAgICAgICogdGVzdHMvV2ViTGF5ZXJUZXN0LmNwcDoKKyAgICAgICAg
KiB0ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvV2ViTGF5
ZXJUcmVlVmlld1Rlc3RDb21tb24uaDoKKyAgICAgICAgKE1vY2tXZWJMYXllclRyZWVWaWV3Q2xp
ZW50KToKKwogMjAxMi0wOC0yMiAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ2hhbmdlIFdlYkxheWVyIGZyb20gYSBjb25jcmV0ZSB0
eXBlIHRvIGEgcHVyZSB2aXJ0dWFsIGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCAxYWQ5NjdkYTFhZDY3MDJj
NDNhNTljYTYwYzZlMGMzZjk3MzExYWY5Li45OWQ5ZGQzNzc5NWI2ZGYzODM1Y2Y1ZjQzYzY0MDdk
NzRkYzVjYmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkxheWVyVHJlZVZpZXcuaApAQCAtMzMsMjEgKzMzLDE1IEBACiAjaW5jbHVkZSAiV2ViUHJpdmF0
ZU93blB0ci5oIgogI2luY2x1ZGUgIldlYlNpemUuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewot
Y2xhc3MgQ0NMYXllclRyZWVIb3N0Owotc3RydWN0IENDTGF5ZXJUcmVlU2V0dGluZ3M7Ci19Ci0K
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBX
ZWJMYXllcjsKIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdDbGllbnQ7Ci1jbGFzcyBXZWJMYXllclRy
ZWVWaWV3SW1wbDsKIHN0cnVjdCBXZWJQb2ludDsKIHN0cnVjdCBXZWJSZWN0Owogc3RydWN0IFdl
YlJlbmRlcmluZ1N0YXRzOwogCi1jbGFzcyBXZWJMYXllclRyZWVWaWV3IDogcHVibGljIFdlYk5v
bkNvcHlhYmxlIHsKK2NsYXNzIFdlYkxheWVyVHJlZVZpZXcgewogcHVibGljOgogICAgIHN0cnVj
dCBTZXR0aW5ncyB7CiAgICAgICAgIFNldHRpbmdzKCkKQEAgLTcwLDgzICs2NCw3MiBAQCBwdWJs
aWM6CiAgICAgICAgIGRvdWJsZSByZWZyZXNoUmF0ZTsKICAgICAgICAgV2ViU2l6ZSBkZWZhdWx0
VGlsZVNpemU7CiAgICAgICAgIFdlYlNpemUgbWF4VW50aWxlZExheWVyU2l6ZTsKLQotI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgotICAgICAgICBvcGVyYXRvciBXZWJDb3JlOjpDQ0xheWVyVHJl
ZVNldHRpbmdzKCkgY29uc3Q7Ci0jZW5kaWYKICAgICB9OwogCi0gICAgV2ViTGF5ZXJUcmVlVmll
dygpIHsgfQotICAgIH5XZWJMYXllclRyZWVWaWV3KCkgeyByZXNldCgpOyB9Ci0KLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICAvLyBBdHRlbXB0cyB0byBpbml0aWFsaXplIHRo
aXMgV2ViTGF5ZXJUcmVlVmlldyB3aXRoIHRoZSBnaXZlbiBjbGllbnQsIHJvb3QgbGF5ZXIsIGFu
ZCBzZXR0aW5ncy4KKyAgICAvLyBJZiBpbml0aWFsaXphdGlvbiBmYWlscywgdGhpcyB3aWxsIHJl
dHVybiBuaWwuCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViTGF5ZXJUcmVlVmlldyogY3Jl
YXRlKFdlYkxheWVyVHJlZVZpZXdDbGllbnQqLCBjb25zdCBXZWJMYXllciYgcm9vdCwgY29uc3Qg
U2V0dGluZ3MmKTsKIAotICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CisgICAgdmlydHVhbCB+V2Vi
TGF5ZXJUcmVlVmlldygpIHsgfQogCiAgICAgLy8gSW5pdGlhbGl6YXRpb24gYW5kIGxpZmVjeWNs
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gICAgLy8gQXR0ZW1w
dHMgdG8gaW5pdGlhbGl6ZSB0aGlzIFdlYkxheWVyVHJlZVZpZXcgd2l0aCB0aGUgZ2l2ZW4gY2xp
ZW50LCByb290IGxheWVyLCBhbmQgc2V0dGluZ3MuCi0gICAgLy8gSWYgaW5pdGlhbGl6YXRpb24g
ZmFpbHMsIHRoaXMgd2lsbCByZXR1cm4gZmFsc2UgYW5kIC5pc051bGwoKSB3aWxsIHJldHVybiB0
cnVlLgotICAgIC8vIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgbWV0aG9kcyBiZWxvdy4KLSAg
ICBXRUJLSVRfRVhQT1JUIGJvb2wgaW5pdGlhbGl6ZShXZWJMYXllclRyZWVWaWV3Q2xpZW50Kiwg
Y29uc3QgV2ViTGF5ZXImIHJvb3QsIGNvbnN0IFNldHRpbmdzJik7Ci0KICAgICAvLyBJbmRpY2F0
ZXMgdGhhdCB0aGUgY29tcG9zaXRpbmcgc3VyZmFjZSB1c2VkIGJ5IHRoaXMgV2ViTGF5ZXJUcmVl
VmlldyBpcyByZWFkeSB0byB1c2UuCiAgICAgLy8gQSBXZWJMYXllclRyZWVWaWV3IG1heSByZXF1
ZXN0IGEgY29udGV4dCBmcm9tIGl0cyBjbGllbnQgYmVmb3JlIHRoZSBzdXJmYWNlIGlzIHJlYWR5
LAogICAgIC8vIGJ1dCBpdCB3b24ndCBhdHRlbXB0IHRvIHVzZSBpdC4KLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgc2V0U3VyZmFjZVJlYWR5KCk7CisgICAgdmlydHVhbCB2b2lkIHNldFN1cmZhY2VS
ZWFkeSgpID0gMDsKIAogICAgIC8vIFNldHMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuIFRoZSByb290
IGlzIHNldCBieSB3YXkgb2YgdGhlIGNvbnN0cnVjdG9yLgotICAgIC8vIFRoaXMgaXMgdHlwaWNh
bGx5IHVzZWQgdG8gZXhwbGljaXRseSBzZXQgdGhlIHJvb3QgdG8gbnVsbCB0byBicmVhawotICAg
IC8vIGN5Y2xlcy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Um9vdExheWVyKFdlYkxheWVy
Kik7CisgICAgdmlydHVhbCB2b2lkIHNldFJvb3RMYXllcihjb25zdCBXZWJMYXllciYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJSb290TGF5ZXIoKSA9IDA7CiAKICAgICAvLyBSZXR1cm5z
IGEgdW5pcXVlIGlkZW50aWZpZXIgdGhhdCBjYW4gYmUgdXNlZCBvbiB0aGUgY29tcG9zaXRvciB0
aHJlYWQgdG8gcmVxdWVzdCBhCiAgICAgLy8gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlciBpbnN0
YW5jZS4KLSAgICBXRUJLSVRfRVhQT1JUIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpOworICAg
IHZpcnR1YWwgaW50IGNvbXBvc2l0b3JJZGVudGlmaWVyKCkgPSAwOwogCiAKICAgICAvLyBWaWV3
IHByb3BlcnRpZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IFdl
YlNpemUmIGxheW91dFZpZXdwb3J0U2l6ZSwgY29uc3QgV2ViU2l6ZSYgZGV2aWNlVmlld3BvcnRT
aXplID0gV2ViU2l6ZSgpKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0
IFdlYlNpemUmIGxheW91dFZpZXdwb3J0U2l6ZSwgY29uc3QgV2ViU2l6ZSYgZGV2aWNlVmlld3Bv
cnRTaXplID0gV2ViU2l6ZSgpKSA9IDA7CiAgICAgLy8gR2l2ZXMgdGhlIHZpZXdwb3J0IHNpemUg
aW4gbGF5ZXIgc3BhY2UuCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIGxheW91dFZpZXdwb3J0
U2l6ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViU2l6ZSBsYXlvdXRWaWV3cG9ydFNpemUoKSBj
b25zdCA9IDA7CiAgICAgLy8gR2l2ZXMgdGhlIHZpZXdwb3J0IHNpemUgaW4gcGh5c2ljYWwgZGV2
aWNlIHBpeGVscyAobWF5IGJlIGRpZmZlcmVudAogICAgIC8vIGZyb20gdGhlIGFib3ZlIGlmIHRo
ZXJlIGV4aXN0cyBwYWdlIHNjYWxlLCBkZXZpY2Ugc2NhbGUgb3IgZml4ZWQgbGF5b3V0CiAgICAg
Ly8gbW9kZSkuCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIGRldmljZVZpZXdwb3J0U2l6ZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgV2ViU2l6ZSBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25zdCA9
IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQp
OwotICAgIFdFQktJVF9FWFBPUlQgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpID0gMDsKKyAgICB2aXJ0
dWFsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QgPSAwOwogCiAgICAgLy8gU2V0cyB0
aGUgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIHZpZXdwb3J0LgotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpOworICAgIHZpcnR1YWwgdm9pZCBzZXRC
YWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpID0gMDsKIAogICAgIC8vIFNldHMgdGhlIGJhY2tncm91
bmQgdHJhbnNwYXJlbmN5IGZvciB0aGUgdmlld3BvcnQuIFRoZSBkZWZhdWx0IGlzICdmYWxzZScu
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChib29s
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGJvb2wpID0g
MDsKIAogICAgIC8vIFNldHMgd2hldGhlciB0aGlzIHZpZXcgaXMgdmlzaWJsZS4gSW4gdGhyZWFk
ZWQgbW9kZSwgYSB2aWV3IHRoYXQgaXMgbm90IHZpc2libGUgd2lsbCBub3QKICAgICAvLyBjb21w
b3NpdGUgb3IgdHJpZ2dlciB1cGRhdGVBbmltYXRpb25zKCkgb3IgbGF5b3V0KCkgY2FsbHMgdW50
aWwgaXQgYmVjb21lcyB2aXNpYmxlLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRWaXNpYmxl
KGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpID0gMDsKIAogICAgIC8v
IFNldHMgdGhlIGN1cnJlbnQgcGFnZSBzY2FsZSBmYWN0b3IgYW5kIG1pbmltdW0gLyBtYXhpbXVt
IGxpbWl0cy4gQm90aCBsaW1pdHMgYXJlIGluaXRpYWxseSAxIChubyBwYWdlIHNjYWxlIGFsbG93
ZWQpLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMo
ZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBmbG9hdCBtaW5pbXVtLCBmbG9hdCBtYXhpbXVtKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKGZsb2F0IHBhZ2VTY2Fs
ZUZhY3RvciwgZmxvYXQgbWluaW11bSwgZmxvYXQgbWF4aW11bSkgPSAwOwogCiAgICAgLy8gU3Rh
cnRzIGFuIGFuaW1hdGlvbiBvZiB0aGUgcGFnZSBzY2FsZSB0byBhIHRhcmdldCBzY2FsZSBmYWN0
b3IgYW5kIHNjcm9sbCBvZmZzZXQuCiAgICAgLy8gSWYgdXNlQW5jaG9yIGlzIHRydWUsIGRlc3Rp
bmF0aW9uIGlzIGEgcG9pbnQgb24gdGhlIHNjcmVlbiB0aGF0IHdpbGwgcmVtYWluIGZpeGVkIGZv
ciB0aGUgZHVyYXRpb24gb2YgdGhlIGFuaW1hdGlvbi4KICAgICAvLyBJZiB1c2VBbmNob3IgaXMg
ZmFsc2UsIGRlc3RpbmF0aW9uIGlzIHRoZSBmaW5hbCB0b3AtbGVmdCBzY3JvbGwgcG9zaXRpb24u
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IFdl
YlBvaW50JiBkZXN0aW5hdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IG5ld1BhZ2VTY2FsZSwg
ZG91YmxlIGR1cmF0aW9uU2VjKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmlt
YXRpb24oY29uc3QgV2ViUG9pbnQmIGRlc3RpbmF0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQg
bmV3UGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpID0gMDsKIAogCiAgICAgLy8gRmxvdyBj
b250cm9sIGFuZCBzY2hlZHVsaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiAgICAgLy8gUmVxdWVzdHMgYW4gdXBkYXRlQW5pbWF0aW9ucygpIGNhbGwuCi0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldE5lZWRzQW5pbWF0ZSgpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc0FuaW1hdGUoKSA9IDA7CiAKICAgICAvLyBJbmRpY2F0ZXMgdGhhdCB0aGUgdmlldyBu
ZWVkcyB0byBiZSByZWRyYXduLiBUaGlzIGlzIHR5cGljYWxseSB1c2VkIHdoZW4gdGhlIGZyb250
YnVmZmVyIGlzIGRhbWFnZWQuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE5lZWRzUmVkcmF3
KCk7CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3KCkgPSAwOwogCiAgICAgLy8gSW5k
aWNhdGVzIHdoZXRoZXIgYSBjb21taXQgaXMgcGVuZGluZy4KLSAgICBXRUJLSVRfRVhQT1JUIGJv
b2wgY29tbWl0UmVxdWVzdGVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNvbW1pdFJlcXVl
c3RlZCgpIGNvbnN0ID0gMDsKIAogICAgIC8vIFRyaWdnZXJzIGEgY29tcG9zaXRpbmcgcGFzcy4g
SWYgdGhlIGNvbXBvc2l0b3IgdGhyZWFkIHdhcyBub3QKICAgICAvLyBlbmFibGVkIHZpYSBXZWJD
b21wb3NpdG9yOjppbml0aWFsaXplLCB0aGUgY29tcG9zaXRpbmcgcGFzcyBoYXBwZW5zCkBAIC0x
NTUsMTIgKzEzOCwxMiBAQCBwdWJsaWM6CiAgICAgLy8gcmV0dXJucyB3aGVuIHRoZSBjb21wb3Np
dG9yIHRocmVhZCBpcyBkaXNhYmxlZCksIFdlYkNvbnRlbnRMYXllcnMgd2lsbCBiZQogICAgIC8v
IGFza2VkIHRvIHBhaW50IHRoZWlyIGRpcnR5IHJlZ2lvbiwgdGhyb3VnaAogICAgIC8vIFdlYkNv
bnRlbnRMYXllckNsaWVudDo6cGFpbnRDb250ZW50cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
Y29tcG9zaXRlKCk7CisgICAgdmlydHVhbCB2b2lkIGNvbXBvc2l0ZSgpID0gMDsKIAogICAgIC8v
IEltbWVkaWF0ZWx5IHVwZGF0ZSBhbmltYXRpb25zLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQg
d2hlbiBmcmFtZSBzY2hlZHVsaW5nIGlzIGhhbmRsZWQgYnkKICAgICAvLyB0aGUgV2ViTGF5ZXJU
cmVlVmlldyB1c2VyIGFuZCBub3QgaW50ZXJuYWxseSBieSB0aGUgY29tcG9zaXRvciwgbWVhbmlu
ZyBvbmx5IGluIHNpbmdsZS10aHJlYWRlZAogICAgIC8vIG1vZGUuCi0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpID0gMDsKIAog
ICAgIC8vIENvbXBvc2l0ZXMgYW5kIGF0dGVtcHRzIHRvIHJlYWQgYmFjayB0aGUgcmVzdWx0IGlu
dG8gdGhlIHByb3ZpZGVkCiAgICAgLy8gYnVmZmVyLiBJZiBpdCB3YXNuJ3QgcG9zc2libGUsIGUu
Zy4gZHVlIHRvIGNvbnRleHQgbG9zdCwgd2lsbCByZXR1cm4KQEAgLTE2OCwyNyArMTUxLDI0IEBA
IHB1YmxpYzoKICAgICAvLyBsYXJnZSBlbm91Z2ggY29udGFpbiB2aWV3cG9ydFNpemUoKS53aWR0
aCgpICogdmlld3BvcnRTaXplKCkuaGVpZ2h0KCkKICAgICAvLyBwaXhlbHMuIFRoZSBXZWJMYXll
clRyZWVWaWV3IGRvZXMgbm90IGFzc3VtZSBvd25lcnNoaXAgb2YgdGhlIGJ1ZmZlci4KICAgICAv
LyBUaGUgYnVmZmVyIGlzIG5vdCBtb2RpZmllZCBpZiB0aGUgZmFsc2UgaXMgcmV0dXJuZWQuCi0g
ICAgV0VCS0lUX0VYUE9SVCBib29sIGNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywg
Y29uc3QgV2ViUmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVBbmRSZWFkYmFjayh2
b2lkICpwaXhlbHMsIGNvbnN0IFdlYlJlY3QmKSA9IDA7CiAKICAgICAvLyBCbG9ja3MgdW50aWwg
dGhlIG1vc3QgcmVjZW50bHkgY29tcG9zaXRlZCBmcmFtZSBoYXMgZmluaXNoZWQgcmVuZGVyaW5n
IG9uIHRoZSBHUFUuCiAgICAgLy8gVGhpcyBjYW4gaGF2ZSBhIHNpZ25pZmljYW50IHBlcmZvcm1h
bmNlIGltcGFjdCBhbmQgc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXJlLgotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoQWxs
UmVuZGVyaW5nKCkgPSAwOwogCiAgICAgLy8gRGVidWdnaW5nIC8gZGFuZ2Vyb3VzIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gRmlsbHMgaW4g
YSBXZWJSZW5kZXJpbmdTdGF0cyBzdHJ1Y3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0
aGUgc3RhdGUgb2YgdGhlIGNvbXBvc2l0b3IuCiAgICAgLy8gVGhpcyBjYWxsIGlzIHJlbGF0aXZl
bHkgZXhwZW5zaXZlIGluIHRocmVhZGVkIG1vZGUgYXMgaXQgYmxvY2tzIG9uIHRoZSBjb21wb3Np
dG9yIHRocmVhZC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVu
ZGVyaW5nU3RhdHMmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2Vi
UmVuZGVyaW5nU3RhdHMmKSBjb25zdCA9IDA7CiAKICAgICAvLyBQcm92aWRlcyBhIGZvbnQgYXRs
YXMgdG8gdXNlIGZvciBkZWJ1ZyB2aXN1YWxpemF0aW9ucy4gVGhlIGF0bGFzIG11c3QgYmUgYSBi
aXRtYXAgY29udGFpbmluZyBnbHlwaCBkYXRhLCBhIHRhYmxlIG9mCiAgICAgLy8gQVNDSUkgY2hh
cmFjdGVyIHZhbHVlcyB0byBhIHN1YnJlY3RhbmdsZSBvZiB0aGUgYXRsYXMgcmVwcmVzZW50aW5n
IHRoZSBjb3JyZXNwb25kaW5nIGdseXBoLCBhbmQgdGhlIGdseXBoIGhlaWdodC4KLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgc2V0Rm9udEF0bGFzKFNrQml0bWFwLCBXZWJSZWN0IGFzY2lpVG9SZWN0
VGFibGVbMTI4XSwgaW50IGZvbnRIZWlnaHQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRGb250QXRs
YXMoU2tCaXRtYXAsIFdlYlJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdLCBpbnQgZm9udEhlaWdo
dCkgPSAwOwogCiAgICAgLy8gU2ltdWxhdGVzIGEgbG9zdCBjb250ZXh0LiBGb3IgdGVzdGluZyBv
bmx5LgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51
bVRpbWVzKTsKLQotcHJvdGVjdGVkOgotICAgIFdlYlByaXZhdGVPd25QdHI8V2ViTGF5ZXJUcmVl
Vmlld0ltcGw+IG1fcHJpdmF0ZTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9zZUNvbXBvc2l0b3JDb250
ZXh0KGludCBudW1UaW1lcykgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCAyZTNhN2RlYjNkMTVlNTMyZTYzNzg1ODBl
NmRkMjFjOWEwMTQ2YTQ5Li4yNjU2NDNhZTFmYTFmNTZkMzY3OWI4MmViOGU0NTY1MDRmY2Y3MzM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6YWNxdWlyZUxheWVyVGV4dHVyZXMoKQogdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OnVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1l
KQogewogICAgIG1fYW5pbWF0aW5nID0gdHJ1ZTsKLSAgICBtX2NsaWVudC0+dXBkYXRlQW5pbWF0
aW9ucyhtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7CisgICAgbV9jbGllbnQtPmFuaW1hdGUobW9u
b3RvbmljRnJhbWVCZWdpblRpbWUpOwogICAgIGFuaW1hdGVMYXllcnMobW9ub3RvbmljRnJhbWVC
ZWdpblRpbWUpOwogICAgIG1fYW5pbWF0aW5nID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmgKaW5kZXggYmFlZTllNWU1MWM4ZWQ2NWU1MzNlMjEwZGVlY2Y5NTE2YWQzOGFjNC4u
ZjJhYjE0ODIyYWZkMGY2NWY4ZjIzMTA5NDA3NDU1MjUyZWM0YmM4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsQmVnaW5GcmFtZSgpID0gMDsKICAgICAvLyBNYXJrcyBmaW5pc2hpbmcgY29tcG9zaXRp
bmctcmVsYXRlZCB0YXNrcyBvbiB0aGUgbWFpbiB0aHJlYWQuIEluIHRocmVhZGVkIG1vZGUsIHRo
aXMgY29ycmVzcG9uZHMgdG8gZGlkQ29tbWl0KCkuCiAgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2lu
RnJhbWUoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZy
YW1lQmVnaW5UaW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGUoZG91YmxlIGZyYW1l
QmVnaW5UaW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwg
ZmxvYXQgcGFnZVNjYWxlKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYktpdDo6V2Vi
Q29tcG9zaXRvck91dHB1dFN1cmZhY2U+IGNyZWF0ZU91dHB1dFN1cmZhY2UoKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBmYzg2ZjgzYjNkZmU4NTM5YjEzNWM0MGJkNWEz
OGYxNjBhOTM3NzFlLi5iYjMxNjllZGMzNjE2MzBjODZkNTY2ZjcyZTgxNDI3ZGUxYmM2ZjBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTE5NCw3ICsxOTQsNiBAQAogICAgICAg
ICAgICAgJ3NyYy9XZWJJbWFnZUxheWVySW1wbC5oJywKICAgICAgICAgICAgICdzcmMvV2ViTGF5
ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAnc3JjL1dlYkxheWVySW1wbC5oJywKLSAgICAgICAg
ICAgICdzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAnLAogICAgICAgICAgICAgJ3NyYy9XZWJMYXll
clRyZWVWaWV3SW1wbC5jcHAnLAogICAgICAgICAgICAgJ3NyYy9XZWJMYXllclRyZWVWaWV3SW1w
bC5oJywKICAgICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGZiY2QxMjllZTExNzVjMmFjMDU5Njg1ODI3ZGMwNWM0
ZDFmYTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMjE0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSA8cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaD4KLQotI2luY2x1ZGUgIkNDRm9udEF0bGFzLmgi
Ci0jaW5jbHVkZSAiQ0NHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJDQ0xheWVyVHJlZUhv
c3QuaCIKLSNpbmNsdWRlICJDQ1JlbmRlcmluZ1N0YXRzLmgiCi0jaW5jbHVkZSAiTGF5ZXJDaHJv
bWl1bS5oIgotI2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgotI2luY2x1ZGUgIldlYkxheWVyVHJl
ZVZpZXdJbXBsLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+Ci0jaW5jbHVkZSA8cHVi
bGljL1dlYlBvaW50Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KLSNpbmNsdWRlIDxw
dWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViU2l6ZS5oPgot
Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkxh
eWVyVHJlZVZpZXc6OlNldHRpbmdzOjpvcGVyYXRvciBDQ0xheWVyVHJlZVNldHRpbmdzKCkgY29u
c3QKLXsKLSAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwotICAgIHNldHRpbmdzLnNo
b3dGUFNDb3VudGVyID0gc2hvd0ZQU0NvdW50ZXI7Ci0gICAgc2V0dGluZ3Muc2hvd1BsYXRmb3Jt
TGF5ZXJUcmVlID0gc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwotICAgIHNldHRpbmdzLnNob3dQYWlu
dFJlY3RzID0gc2hvd1BhaW50UmVjdHM7Ci0gICAgc2V0dGluZ3MucmVuZGVyVlN5bmNFbmFibGVk
ID0gcmVuZGVyVlN5bmNFbmFibGVkOwotICAgIHNldHRpbmdzLnJlZnJlc2hSYXRlID0gcmVmcmVz
aFJhdGU7Ci0gICAgc2V0dGluZ3MuZGVmYXVsdFRpbGVTaXplID0gZGVmYXVsdFRpbGVTaXplOwot
ICAgIHNldHRpbmdzLm1heFVudGlsZWRMYXllclNpemUgPSBtYXhVbnRpbGVkTGF5ZXJTaXplOwot
ICAgIHNldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IGFjY2VsZXJhdGVQYWludGluZzsKLQot
ICAgIC8vIEZJWE1FOiBzaG93RlBTQ291bnRlciAvIHNob3dQbGF0Zm9ybUxheWVyVHJlZSAvIG1h
eFBhcnRpYWxUZXh0dXJlVXBkYXRlcyBhcmVuJ3Qgc3VwcG9ydGVkIGN1cnJlbnRseS4KLSAgICBy
ZXR1cm4gc2V0dGluZ3M7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6cmVzZXQoKQotewot
ICAgIG1fcHJpdmF0ZS5yZXNldCgwKTsKLX0KLQotYm9vbCBXZWJMYXllclRyZWVWaWV3Ojppc051
bGwoKSBjb25zdAotewotICAgIHJldHVybiAhbV9wcml2YXRlLmdldCgpOwotfQotCi1ib29sIFdl
YkxheWVyVHJlZVZpZXc6OmluaXRpYWxpemUoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCogY2xpZW50
LCBjb25zdCBXZWJMYXllciYgcm9vdCwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3Mm
IHNldHRpbmdzKQotewotICAgIC8vIFdlIGhhdmUgdG8gbGVhayB0aGUgcG9pbnRlciBoZXJlIGlu
dG8gYSBXZWJQcml2YXRlT3duUHRyLiBXZSBmcmVlIHRoaXMgb2JqZWN0IGluIHJlc2V0KCkuCi0g
ICAgbV9wcml2YXRlLnJlc2V0KFdlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGUoY2xpZW50LCBy
b290LCBzZXR0aW5ncykubGVha1B0cigpKTsKLSAgICByZXR1cm4gIWlzTnVsbCgpOwotfQotCi12
b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldFN1cmZhY2VSZWFkeSgpCi17Ci0gICAgbV9wcml2YXRl
LT5sYXllclRyZWVIb3N0KCktPnNldFN1cmZhY2VSZWFkeSgpOwotfQotCi12b2lkIFdlYkxheWVy
VHJlZVZpZXc6OnNldFJvb3RMYXllcihXZWJMYXllciAqcm9vdCkKLXsKLSAgICBpZiAocm9vdCkK
LSAgICAgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcihzdGF0aWNf
Y2FzdDxXZWJMYXllckltcGwqPihyb290KS0+bGF5ZXIoKSk7Ci0gICAgZWxzZQotICAgICAgICBt
X3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0Um9vdExheWVyKFBhc3NSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4oKSk7Ci19Ci0KLWludCBXZWJMYXllclRyZWVWaWV3Ojpjb21wb3NpdG9ySWRlbnRp
ZmllcigpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5jb21wb3Np
dG9ySWRlbnRpZmllcigpOwotfQotCi12b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldFZpZXdwb3J0
U2l6ZShjb25zdCBXZWJTaXplJiBsYXlvdXRWaWV3cG9ydFNpemUsIGNvbnN0IFdlYlNpemUmIGRl
dmljZVZpZXdwb3J0U2l6ZSkKLXsKLSAgICBpZiAoIWRldmljZVZpZXdwb3J0U2l6ZS5pc0VtcHR5
KCkpCi0gICAgICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRWaWV3cG9ydFNpemUo
bGF5b3V0Vmlld3BvcnRTaXplLCBkZXZpY2VWaWV3cG9ydFNpemUpOwotICAgIGVsc2UKLSAgICAg
ICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFZpZXdwb3J0U2l6ZShsYXlvdXRWaWV3
cG9ydFNpemUsIGxheW91dFZpZXdwb3J0U2l6ZSk7Ci19Ci0KLVdlYlNpemUgV2ViTGF5ZXJUcmVl
Vmlldzo6bGF5b3V0Vmlld3BvcnRTaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViU2l6ZSht
X3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+bGF5b3V0Vmlld3BvcnRTaXplKCkpOwotfQotCi1X
ZWJTaXplIFdlYkxheWVyVHJlZVZpZXc6OmRldmljZVZpZXdwb3J0U2l6ZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIFdlYlNpemUobV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmRldmljZVZpZXdw
b3J0U2l6ZSgpKTsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXREZXZpY2VTY2FsZUZh
Y3Rvcihjb25zdCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKLXsKLSAgICBtX3ByaXZhdGUtPmxh
eWVyVHJlZUhvc3QoKS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwot
fQotCi1mbG9hdCBXZWJMYXllclRyZWVWaWV3OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5kZXZpY2VTY2FsZUZhY3Rv
cigpOwotfQotCi12b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldEJhY2tncm91bmRDb2xvcihXZWJD
b2xvciBjb2xvcikKLXsKLSAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0QmFja2dy
b3VuZENvbG9yKGNvbG9yKTsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXRIYXNUcmFu
c3BhcmVudEJhY2tncm91bmQoYm9vbCB0cmFuc3BhcmVudCkKLXsKLSAgICBtX3ByaXZhdGUtPmxh
eWVyVHJlZUhvc3QoKS0+c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHRyYW5zcGFyZW50KTsK
LX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKLXsK
LSAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0VmlzaWJsZSh2aXNpYmxlKTsKLX0K
LQotdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoZmxv
YXQgcGFnZVNjYWxlRmFjdG9yLCBmbG9hdCBtaW5pbXVtLCBmbG9hdCBtYXhpbXVtKQotewotICAg
IG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMo
cGFnZVNjYWxlRmFjdG9yLCBtaW5pbXVtLCBtYXhpbXVtKTsKLX0KLQotdm9pZCBXZWJMYXllclRy
ZWVWaWV3OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBXZWJQb2ludCYgc2Nyb2xsLCBi
b29sIHVzZUFuY2hvciwgZmxvYXQgbmV3UGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCi17
Ci0gICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9u
KEludFNpemUoc2Nyb2xsLngsIHNjcm9sbC55KSwgdXNlQW5jaG9yLCBuZXdQYWdlU2NhbGUsIGR1
cmF0aW9uU2VjKTsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXROZWVkc0FuaW1hdGUo
KQotewotICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXROZWVkc0FuaW1hdGUoKTsK
LX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXROZWVkc1JlZHJhdygpCi17Ci0gICAgbV9w
cml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldE5lZWRzUmVkcmF3KCk7Ci19Ci0KLWJvb2wgV2Vi
TGF5ZXJUcmVlVmlldzo6Y29tbWl0UmVxdWVzdGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9w
cml2YXRlLT5sYXllclRyZWVIb3N0KCktPmNvbW1pdFJlcXVlc3RlZCgpOwotfQotCi12b2lkIFdl
YkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0ZSgpCi17Ci0gICAgaWYgKENDUHJveHk6Omhhc0ltcGxU
aHJlYWQoKSkKLSAgICAgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldE5lZWRzQ29t
bWl0KCk7Ci0gICAgZWxzZQotICAgICAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+Y29t
cG9zaXRlKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6dXBkYXRlQW5pbWF0aW9ucyhk
b3VibGUgZnJhbWVCZWdpblRpbWUpCi17Ci0gICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCkt
PnVwZGF0ZUFuaW1hdGlvbnMoZnJhbWVCZWdpblRpbWUpOwotfQotCi1ib29sIFdlYkxheWVyVHJl
ZVZpZXc6OmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgV2ViUmVjdCYg
cmVjdCkKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmNvbXBvc2l0
ZUFuZFJlYWRiYWNrKHBpeGVscywgcmVjdCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6
ZmluaXNoQWxsUmVuZGVyaW5nKCkKLXsKLSAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+
ZmluaXNoQWxsUmVuZGVyaW5nKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6cmVuZGVy
aW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAotewotICAgIENDUmVuZGVy
aW5nU3RhdHMgY2NTdGF0czsKLSAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+cmVuZGVy
aW5nU3RhdHMoY2NTdGF0cyk7Ci0KLSAgICBzdGF0cy5udW1BbmltYXRpb25GcmFtZXMgPSBjY1N0
YXRzLm51bUFuaW1hdGlvbkZyYW1lczsKLSAgICBzdGF0cy5udW1GcmFtZXNTZW50VG9TY3JlZW4g
PSBjY1N0YXRzLm51bUZyYW1lc1NlbnRUb1NjcmVlbjsKLSAgICBzdGF0cy5kcm9wcGVkRnJhbWVD
b3VudCA9IGNjU3RhdHMuZHJvcHBlZEZyYW1lQ291bnQ7Ci0gICAgc3RhdHMudG90YWxQYWludFRp
bWVJblNlY29uZHMgPSBjY1N0YXRzLnRvdGFsUGFpbnRUaW1lSW5TZWNvbmRzOwotICAgIHN0YXRz
LnRvdGFsUmFzdGVyaXplVGltZUluU2Vjb25kcyA9IGNjU3RhdHMudG90YWxSYXN0ZXJpemVUaW1l
SW5TZWNvbmRzOwotfQotCi12b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldEZvbnRBdGxhcyhTa0Jp
dG1hcCBiaXRtYXAsIFdlYlJlY3QgYXNjaWlUb1dlYlJlY3RUYWJsZVsxMjhdLCBpbnQgZm9udEhl
aWdodCkKLXsKLSAgICBJbnRSZWN0IGFzY2lpVG9SZWN0VGFibGVbMTI4XTsKLSAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDEyODsgKytpKQotICAgICAgICBhc2NpaVRvUmVjdFRhYmxlW2ldID0gYXNj
aWlUb1dlYlJlY3RUYWJsZVtpXTsKLSAgICBPd25QdHI8Q0NGb250QXRsYXM+IGZvbnRBdGxhcyA9
IENDRm9udEF0bGFzOjpjcmVhdGUoYml0bWFwLCBhc2NpaVRvUmVjdFRhYmxlLCBmb250SGVpZ2h0
KTsKLSAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0Rm9udEF0bGFzKGZvbnRBdGxh
cy5yZWxlYXNlKCkpOwotfQotCi12b2lkIFdlYkxheWVyVHJlZVZpZXc6Omxvc2VDb21wb3NpdG9y
Q29udGV4dChpbnQgbnVtVGltZXMpCi17Ci0gICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCkt
Pmxvc2VDb250ZXh0KG51bVRpbWVzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAK
aW5kZXggMWZkODIzOTc2OGMwOWI2Njk1NGRjMDI1MGUyOGI2Zjk1ZjZmMDk1Ni4uODcwYjhmMWI2
YzEwZWFiYmVlYjI4MzMwMDNlYjNmM2NiMmJkMWI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcApAQCAtMjYsMTMwICsyNiwz
MiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJlZVZpZXdJbXBs
LmgiCiAKKyNpbmNsdWRlICJDQ0ZvbnRBdGxhcy5oIgogI2luY2x1ZGUgIkNDTGF5ZXJUcmVlSG9z
dC5oIgotI2luY2x1ZGUgIkNDVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVt
LmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBo
aWNzQ29udGV4dDNELmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXJUcmVl
Vmlld0NsaWVudC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSZW5kZXJpbmdTdGF0cy5oPgogI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlRocmVhZC5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotbmFtZXNwYWNlIHsKLQotLy8gQWRhcHRzIGEg
cHVyZSBXZWJHcmFwaGljc0NvbnRleHQzRCBpbnRvIGEgV2ViQ29tcG9zaXRvck91dHB1dFN1cmZh
Y2UgdW50aWwKLS8vIGRvd25zdHJlYW0gY29kZSBjYW4gYmUgdXBkYXRlZCB0byBwcm9kdWNlIG91
dHB1dCBzdXJmYWNlcyBkaXJlY3RseS4KLWNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dFRvT3V0cHV0
U3VyZmFjZUFkYXB0ZXIgOiBwdWJsaWMgV2ViS2l0OjpXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFj
ZSB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViR3JhcGhpY3NDb250ZXh0VG9PdXRwdXRTdXJm
YWNlQWRhcHRlcihQYXNzT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRl
eHQpCi0gICAgICAgIDogbV9jb250ZXh0M0QoY29udGV4dCkKLSAgICAgICAgLCBtX2NsaWVudCgw
KQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgYmluZFRvQ2xpZW50KFdlYktpdDo6
V2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2VDbGllbnQqIGNsaWVudCkgT1ZFUlJJREUKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChjbGllbnQpOwotICAgICAgICBpZiAoIW1fY29udGV4dDNELT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9j
bGllbnQgPSBjbGllbnQ7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHZpcnR1
YWwgY29uc3QgQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBPVkVSUklERQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOwotICAgIH0KLQotICAgIHZpcnR1YWwg
V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNEKCkgY29uc3QgT1ZFUlJJREUK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX2NvbnRleHQzRC5nZXQoKTsKLSAgICB9Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgc2VuZEZyYW1lVG9QYXJlbnRDb21wb3NpdG9yKGNvbnN0IFdlYktpdDo6V2Vi
Q29tcG9zaXRvckZyYW1lJikgT1ZFUlJJREUKLSAgICB7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IE93blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQzRDsKLSAgICBD
YXBhYmlsaXRpZXMgbV9jYXBhYmlsaXRpZXM7Ci0gICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yT3V0
cHV0U3VyZmFjZUNsaWVudCogbV9jbGllbnQ7Ci19OworbmFtZXNwYWNlIFdlYktpdCB7CiAKK1dl
YkxheWVyVHJlZVZpZXcqIFdlYkxheWVyVHJlZVZpZXc6OmNyZWF0ZShXZWJMYXllclRyZWVWaWV3
Q2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkxheWVyJiByb290LCBjb25zdCBXZWJMYXllclRyZWVW
aWV3OjpTZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAgT3duUHRyPFdlYkxheWVyVHJlZVZpZXdJ
bXBsPiBsYXllclRyZWVWaWV3SW1wbCA9IGFkb3B0UHRyKG5ldyBXZWJMYXllclRyZWVWaWV3SW1w
bChjbGllbnQpKTsKKyAgICBpZiAoIWxheWVyVHJlZVZpZXdJbXBsLT5pbml0aWFsaXplKHNldHRp
bmdzKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgbGF5ZXJUcmVlVmlld0ltcGwtPnNldFJvb3RM
YXllcihyb290KTsKKyAgICByZXR1cm4gbGF5ZXJUcmVlVmlld0ltcGwubGVha1B0cigpOwogfQog
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gQ29udmVydHMgbWVzc2FnZXMgZnJvbSBDQ0xheWVy
VHJlZUhvc3RDbGllbnQgdG8gV2ViTGF5ZXJUcmVlVmlld0NsaWVudC4KLWNsYXNzIFdlYkxheWVy
VHJlZVZpZXdDbGllbnRBZGFwdGVyIDogcHVibGljIFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdENs
aWVudCB7Ci1wdWJsaWM6Ci0gICAgV2ViTGF5ZXJUcmVlVmlld0NsaWVudEFkYXB0ZXIoV2ViTGF5
ZXJUcmVlVmlld0NsaWVudCogY2xpZW50KQotICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAg
ICAgICAgLCBtX3VzaW5nUmVhbE91dHB1dFN1cmZhY2UoZmFsc2UpCi0gICAgewotICAgIH0KLSAg
ICB2aXJ0dWFsIH5XZWJMYXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcigpIHsgfQotCi0gICAgLy8g
Q0NMYXllclRyZWVIb3N0Q2xpZW50IGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVhbCB2b2lkIHdp
bGxCZWdpbkZyYW1lKCkgT1ZFUlJJREUgeyBtX2NsaWVudC0+d2lsbEJlZ2luRnJhbWUoKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRCZWdpbkZyYW1lKCkgT1ZFUlJJREUgeyBtX2NsaWVudC0+ZGlk
QmVnaW5GcmFtZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91Ymxl
IG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKSBPVkVSUklERSB7IG1fY2xpZW50LT51cGRhdGVBbmlt
YXRpb25zKG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKTsgfQotICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKSBPVkVSUklERSB7IG1fY2xpZW50LT5sYXlvdXQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBh
cHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhLCBm
bG9hdCBwYWdlU2NhbGUpIE9WRVJSSURFIHsgbV9jbGllbnQtPmFwcGx5U2Nyb2xsQW5kU2NhbGUo
c2Nyb2xsRGVsdGEsIHBhZ2VTY2FsZSk7IH0KLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29t
cG9zaXRvck91dHB1dFN1cmZhY2U+IGNyZWF0ZU91dHB1dFN1cmZhY2UoKSBPVkVSUklERQotICAg
IHsKLSAgICAgICAgV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2UqIG91dHB1dFN1cmZhY2UgPSBt
X2NsaWVudC0+Y3JlYXRlT3V0cHV0U3VyZmFjZSgpOwotICAgICAgICBpZiAob3V0cHV0U3VyZmFj
ZSkgewotICAgICAgICAgICAgbV91c2luZ1JlYWxPdXRwdXRTdXJmYWNlID0gdHJ1ZTsKLSAgICAg
ICAgICAgIHJldHVybiBhZG9wdFB0cihvdXRwdXRTdXJmYWNlKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIFRlbXBvcmFyaWx5LCBpZiB0aGUgb3V0cHV0IHN1cmZhY2UgY2FuJ3QgYmUgY3JlYXRl
ZCwgY3JlYXRlIGEgV2ViR3JhcGhpY3NDb250ZXh0M0QKLSAgICAgICAgLy8gZGlyZWN0bHkuIFRo
aXMgYWxsb3dzIGJvb3RzdHJhcHBpbmcgdGhlIG91dHB1dCBzdXJmYWNlIHN5c3RlbSB3aGlsZSBk
b3duc3RyZWFtCi0gICAgICAgIC8vIHVzZXJzIG9mIHRoZSBBUEkgc3RpbGwgdXNlIHRoZSBvbGQg
YXBwcm9hY2guCi0gICAgICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbV9jbGll
bnQtPmNyZWF0ZUNvbnRleHQzRCgpOwotICAgICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBtX3VzaW5nUmVhbE91dHB1dFN1cmZhY2UgPSBm
YWxzZTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJHcmFwaGljc0NvbnRleHRUb091
dHB1dFN1cmZhY2VBZGFwdGVyKGFkb3B0UHRyKGNvbnRleHQpKSk7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShib29sIHN1Y2Nlc3MpIE9WRVJSSURF
Ci0gICAgewotICAgICAgICBpZiAobV91c2luZ1JlYWxPdXRwdXRTdXJmYWNlKSB7Ci0gICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjcmVhdGVPdXRwdXRTdXJmYWNlKHN1Y2Nlc3MpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fY2xpZW50LT5kaWRSZWJpbmRHcmFw
aGljc0NvbnRleHQoc3VjY2Vzcyk7Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0
KCkgT1ZFUlJJREUgeyBtX2NsaWVudC0+d2lsbENvbW1pdCgpOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpZENvbW1pdCgpIE9WRVJSSURFIHsgbV9jbGllbnQtPmRpZENvbW1pdCgpOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIE9WRVJSSURFIHsgbV9jbGllbnQtPmRp
ZENvbW1pdEFuZERyYXdGcmFtZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dh
cEJ1ZmZlcnMoKSBPVkVSUklERSB7IG1fY2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKSBPVkVSUklERSB7IG1fY2xp
ZW50LT5zY2hlZHVsZUNvbXBvc2l0ZSgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViTGF5ZXJUcmVl
Vmlld0NsaWVudCogbV9jbGllbnQ7Ci0gICAgYm9vbCBtX3VzaW5nUmVhbE91dHB1dFN1cmZhY2U7
Ci19OwotCi1QYXNzT3duUHRyPFdlYkxheWVyVHJlZVZpZXdJbXBsPiBXZWJMYXllclRyZWVWaWV3
SW1wbDo6Y3JlYXRlKFdlYkxheWVyVHJlZVZpZXdDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViTGF5
ZXImIHJvb3QsIGNvbnN0IFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzJiBzZXR0aW5ncykKLXsK
LSAgICBPd25QdHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+IGltcGwgPSBhZG9wdFB0cihuZXcgV2Vi
TGF5ZXJUcmVlVmlld0ltcGwoY2xpZW50LCBzZXR0aW5ncykpOwotICAgIGlmICghaW1wbC0+bGF5
ZXJUcmVlSG9zdCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpbXBsLT5sYXllclRy
ZWVIb3N0KCktPnNldFJvb3RMYXllcihzdGF0aWNfY2FzdDxjb25zdCBXZWJMYXllckltcGwqPigm
cm9vdCktPmxheWVyKCkpOwotICAgIHJldHVybiBpbXBsLnJlbGVhc2UoKTsKLX0KLQotV2ViTGF5
ZXJUcmVlVmlld0ltcGw6OldlYkxheWVyVHJlZVZpZXdJbXBsKFdlYkxheWVyVHJlZVZpZXdDbGll
bnQqIGNsaWVudCwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MmIHNldHRpbmdzKSAK
LSAgICA6IG1fY2xpZW50QWRhcHRlcihhZG9wdFB0cihuZXcgV2ViTGF5ZXJUcmVlVmlld0NsaWVu
dEFkYXB0ZXIoY2xpZW50KSkpCi0gICAgLCBtX2xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0
OjpjcmVhdGUobV9jbGllbnRBZGFwdGVyLmdldCgpLCBzZXR0aW5ncykpCitXZWJMYXllclRyZWVW
aWV3SW1wbDo6V2ViTGF5ZXJUcmVlVmlld0ltcGwoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCogY2xp
ZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQogewogfQogCkBAIC0xNTcsNCArNTksMjE4IEBA
IFdlYkxheWVyVHJlZVZpZXdJbXBsOjp+V2ViTGF5ZXJUcmVlVmlld0ltcGwoKQogewogfQogCiti
b29sIFdlYkxheWVyVHJlZVZpZXdJbXBsOjppbml0aWFsaXplKGNvbnN0IFdlYkxheWVyVHJlZVZp
ZXc6OlNldHRpbmdzJiB3ZWJTZXR0aW5ncykKK3sKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNl
dHRpbmdzOworICAgIHNldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IHdlYlNldHRpbmdzLmFj
Y2VsZXJhdGVQYWludGluZzsKKyAgICBzZXR0aW5ncy5zaG93RlBTQ291bnRlciA9IHdlYlNldHRp
bmdzLnNob3dGUFNDb3VudGVyOworICAgIHNldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSA9
IHdlYlNldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZTsKKyAgICBzZXR0aW5ncy5zaG93UGFp
bnRSZWN0cyA9IHdlYlNldHRpbmdzLnNob3dQYWludFJlY3RzOworICAgIHNldHRpbmdzLnJlbmRl
clZTeW5jRW5hYmxlZCA9IHdlYlNldHRpbmdzLnJlbmRlclZTeW5jRW5hYmxlZDsKKyAgICBzZXR0
aW5ncy5yZWZyZXNoUmF0ZSA9IHdlYlNldHRpbmdzLnJlZnJlc2hSYXRlOworICAgIHNldHRpbmdz
LmRlZmF1bHRUaWxlU2l6ZSA9IHdlYlNldHRpbmdzLmRlZmF1bHRUaWxlU2l6ZTsKKyAgICBzZXR0
aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXplID0gd2ViU2V0dGluZ3MubWF4VW50aWxlZExheWVyU2l6
ZTsKKyAgICBtX2xheWVyVHJlZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBz
ZXR0aW5ncyk7CisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0
U3VyZmFjZVJlYWR5KCkKK3sKKyAgICBtX2xheWVyVHJlZUhvc3QtPnNldFN1cmZhY2VSZWFkeSgp
OworfQorCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpzZXRSb290TGF5ZXIoY29uc3QgV2Vi
TGF5ZXImIHJvb3QpCit7CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIoc3RhdGlj
X2Nhc3Q8Y29uc3QgV2ViTGF5ZXJJbXBsKj4oJnJvb3QpLT5sYXllcigpKTsKK30KKwordm9pZCBX
ZWJMYXllclRyZWVWaWV3SW1wbDo6Y2xlYXJSb290TGF5ZXIoKQoreworICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2V0Um9vdExheWVyKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4oKSk7Cit9CisKK2lu
dCBXZWJMYXllclRyZWVWaWV3SW1wbDo6Y29tcG9zaXRvcklkZW50aWZpZXIoKQoreworICAgIHJl
dHVybiBtX2xheWVyVHJlZUhvc3QtPmNvbXBvc2l0b3JJZGVudGlmaWVyKCk7Cit9CisKK3ZvaWQg
V2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBXZWJTaXplJiBsYXlv
dXRWaWV3cG9ydFNpemUsIGNvbnN0IFdlYlNpemUmIGRldmljZVZpZXdwb3J0U2l6ZSkKK3sKKyAg
ICBpZiAoIWRldmljZVZpZXdwb3J0U2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2V0Vmlld3BvcnRTaXplKGxheW91dFZpZXdwb3J0U2l6ZSwgZGV2aWNlVmlld3BvcnRT
aXplKTsKKyAgICBlbHNlCisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXpl
KGxheW91dFZpZXdwb3J0U2l6ZSwgbGF5b3V0Vmlld3BvcnRTaXplKTsKK30KKworV2ViU2l6ZSBX
ZWJMYXllclRyZWVWaWV3SW1wbDo6bGF5b3V0Vmlld3BvcnRTaXplKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gV2ViU2l6ZShtX2xheWVyVHJlZUhvc3QtPmxheW91dFZpZXdwb3J0U2l6ZSgpKTsKK30K
KworV2ViU2l6ZSBXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGV2aWNlVmlld3BvcnRTaXplKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gV2ViU2l6ZShtX2xheWVyVHJlZUhvc3QtPmRldmljZVZpZXdwb3J0
U2l6ZSgpKTsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0RGV2aWNlU2NhbGVG
YWN0b3IoY29uc3QgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCit7CisgICAgbV9sYXllclRyZWVI
b3N0LT5zZXREZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7Cit9CisKK2Zsb2F0
IFdlYkxheWVyVHJlZVZpZXdJbXBsOjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fbGF5ZXJUcmVlSG9zdC0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKK30KKwordm9pZCBX
ZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9yIGNvbG9yKQor
eworICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKK30KKwor
dm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGJv
b2wgdHJhbnNwYXJlbnQpCit7CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRIYXNUcmFuc3BhcmVu
dEJhY2tncm91bmQodHJhbnNwYXJlbnQpOworfQorCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBs
OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKK3sKKyAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZp
c2libGUodmlzaWJsZSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNldFBhZ2VT
Y2FsZUZhY3RvckFuZExpbWl0cyhmbG9hdCBwYWdlU2NhbGVGYWN0b3IsIGZsb2F0IG1pbmltdW0s
IGZsb2F0IG1heGltdW0pCit7CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRQYWdlU2NhbGVGYWN0
b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9yLCBtaW5pbXVtLCBtYXhpbXVtKTsKK30KKwordm9p
ZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgV2Vi
UG9pbnQmIHNjcm9sbCwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IG5ld1BhZ2VTY2FsZSwgZG91Ymxl
IGR1cmF0aW9uU2VjKQoreworICAgIG1fbGF5ZXJUcmVlSG9zdC0+c3RhcnRQYWdlU2NhbGVBbmlt
YXRpb24oSW50U2l6ZShzY3JvbGwueCwgc2Nyb2xsLnkpLCB1c2VBbmNob3IsIG5ld1BhZ2VTY2Fs
ZSwgZHVyYXRpb25TZWMpOworfQorCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpzZXROZWVk
c0FuaW1hdGUoKQoreworICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNBbmltYXRlKCk7Cit9
CisKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNldE5lZWRzUmVkcmF3KCkKK3sKKyAgICBt
X2xheWVyVHJlZUhvc3QtPnNldE5lZWRzUmVkcmF3KCk7Cit9CisKK2Jvb2wgV2ViTGF5ZXJUcmVl
Vmlld0ltcGw6OmNvbW1pdFJlcXVlc3RlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXJU
cmVlSG9zdC0+Y29tbWl0UmVxdWVzdGVkKCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0lt
cGw6OmNvbXBvc2l0ZSgpCit7CisgICAgaWYgKENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSkKKyAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOworICAgIGVsc2UKKyAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5jb21wb3NpdGUoKTsKK30KKwordm9pZCBXZWJMYXllclRyZWVW
aWV3SW1wbDo6dXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpCit7CisgICAg
bV9sYXllclRyZWVIb3N0LT51cGRhdGVBbmltYXRpb25zKGZyYW1lQmVnaW5UaW1lKTsKK30KKwor
Ym9vbCBXZWJMYXllclRyZWVWaWV3SW1wbDo6Y29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4
ZWxzLCBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIHJldHVybiBtX2xheWVyVHJlZUhvc3Qt
PmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHBpeGVscywgcmVjdCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJU
cmVlVmlld0ltcGw6OmZpbmlzaEFsbFJlbmRlcmluZygpCit7CisgICAgbV9sYXllclRyZWVIb3N0
LT5maW5pc2hBbGxSZW5kZXJpbmcoKTsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6
cmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAoreworICAgIEND
UmVuZGVyaW5nU3RhdHMgY2NTdGF0czsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnJlbmRlcmluZ1N0
YXRzKGNjU3RhdHMpOworCisgICAgc3RhdHMubnVtQW5pbWF0aW9uRnJhbWVzID0gY2NTdGF0cy5u
dW1BbmltYXRpb25GcmFtZXM7CisgICAgc3RhdHMubnVtRnJhbWVzU2VudFRvU2NyZWVuID0gY2NT
dGF0cy5udW1GcmFtZXNTZW50VG9TY3JlZW47CisgICAgc3RhdHMuZHJvcHBlZEZyYW1lQ291bnQg
PSBjY1N0YXRzLmRyb3BwZWRGcmFtZUNvdW50OworICAgIHN0YXRzLnRvdGFsUGFpbnRUaW1lSW5T
ZWNvbmRzID0gY2NTdGF0cy50b3RhbFBhaW50VGltZUluU2Vjb25kczsKKyAgICBzdGF0cy50b3Rh
bFJhc3Rlcml6ZVRpbWVJblNlY29uZHMgPSBjY1N0YXRzLnRvdGFsUmFzdGVyaXplVGltZUluU2Vj
b25kczsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0Rm9udEF0bGFzKFNrQml0
bWFwIGJpdG1hcCwgV2ViUmVjdCBhc2NpaVRvV2ViUmVjdFRhYmxlWzEyOF0sIGludCBmb250SGVp
Z2h0KQoreworICAgIEludFJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdOworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgMTI4OyArK2kpCisgICAgICAgIGFzY2lpVG9SZWN0VGFibGVbaV0gPSBhc2Np
aVRvV2ViUmVjdFRhYmxlW2ldOworICAgIE93blB0cjxDQ0ZvbnRBdGxhcz4gZm9udEF0bGFzID0g
Q0NGb250QXRsYXM6OmNyZWF0ZShiaXRtYXAsIGFzY2lpVG9SZWN0VGFibGUsIGZvbnRIZWlnaHQp
OworICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Rm9udEF0bGFzKGZvbnRBdGxhcy5yZWxlYXNlKCkp
OworfQorCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpsb3NlQ29tcG9zaXRvckNvbnRleHQo
aW50IG51bVRpbWVzKQoreworICAgIG1fbGF5ZXJUcmVlSG9zdC0+bG9zZUNvbnRleHQobnVtVGlt
ZXMpOworfQorCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjp3aWxsQmVnaW5GcmFtZSgpCit7
CisgICAgbV9jbGllbnQtPndpbGxCZWdpbkZyYW1lKCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJUcmVl
Vmlld0ltcGw6OmRpZEJlZ2luRnJhbWUoKQoreworICAgIG1fY2xpZW50LT5kaWRCZWdpbkZyYW1l
KCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmFuaW1hdGUoZG91YmxlIG1vbm90
b25pY0ZyYW1lQmVnaW5UaW1lKQoreworICAgIG1fY2xpZW50LT51cGRhdGVBbmltYXRpb25zKG1v
bm90b25pY0ZyYW1lQmVnaW5UaW1lKTsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6
bGF5b3V0KCkKK3sKKyAgICBtX2NsaWVudC0+bGF5b3V0KCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJU
cmVlVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
c2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkKK3sKKyAgICBtX2NsaWVudC0+YXBwbHlTY3Jv
bGxBbmRTY2FsZShzY3JvbGxEZWx0YSwgcGFnZVNjYWxlKTsKK30KKworUGFzc093blB0cjxXZWJD
b21wb3NpdG9yT3V0cHV0U3VyZmFjZT4gV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZU91dHB1
dFN1cmZhY2UoKQoreworICAgIHJldHVybiBhZG9wdFB0cihtX2NsaWVudC0+Y3JlYXRlT3V0cHV0
U3VyZmFjZSgpKTsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkUmVjcmVhdGVP
dXRwdXRTdXJmYWNlKGJvb2wgc3VjY2VzcykKK3sKKyAgICBtX2NsaWVudC0+ZGlkUmVjcmVhdGVP
dXRwdXRTdXJmYWNlKHN1Y2Nlc3MpOworfQorCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjp3
aWxsQ29tbWl0KCkKK3sKKyAgICBtX2NsaWVudC0+d2lsbENvbW1pdCgpOworfQorCit2b2lkIFdl
YkxheWVyVHJlZVZpZXdJbXBsOjpkaWRDb21taXQoKQoreworICAgIG1fY2xpZW50LT5kaWRDb21t
aXQoKTsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkQ29tbWl0QW5kRHJhd0Zy
YW1lKCkKK3sKKyAgICBtX2NsaWVudC0+ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7Cit9CisKK3Zv
aWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKQoreworICAg
IG1fY2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJU
cmVlVmlld0ltcGw6OnNjaGVkdWxlQ29tcG9zaXRlKCkKK3sKKyAgICBtX2NsaWVudC0+c2NoZWR1
bGVDb21wb3NpdGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaAppbmRleCAzYmM0MzQx
MGQ4YjIwYmIzNTE0NDU4YWVhNDgzMGI3NzRkNjhkMzZhLi43MWFkZWQ1OGNlNTIwMGE5NTFjODZm
Nzk1YzE0OWM1MjNjMDVhNDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKQEAgLTI2LDMwICsyNiw2NSBAQAogI2lmbmRlZiBXZWJM
YXllclRyZWVWaWV3SW1wbF9oCiAjZGVmaW5lIFdlYkxheWVyVHJlZVZpZXdJbXBsX2gKIAorI2lu
Y2x1ZGUgIkNDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllclRyZWVW
aWV3Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKLX0KLQog
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJMYXllcjsKIGNsYXNzIFdlYkxheWVyVHJlZVZp
ZXdDbGllbnQ7CiBjbGFzcyBXZWJMYXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcjsKIAotY2xhc3Mg
V2ViTGF5ZXJUcmVlVmlld0ltcGwgeworY2xhc3MgV2ViTGF5ZXJUcmVlVmlld0ltcGwgOiBwdWJs
aWMgV2ViTGF5ZXJUcmVlVmlldywgcHVibGljIFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdENsaWVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+
IGNyZWF0ZShXZWJMYXllclRyZWVWaWV3Q2xpZW50KiwgY29uc3QgV2ViTGF5ZXImIHJvb3QsIGNv
bnN0IFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzJik7CisgICAgZXhwbGljaXQgV2ViTGF5ZXJU
cmVlVmlld0ltcGwoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCopOwogICAgIHZpcnR1YWwgfldlYkxh
eWVyVHJlZVZpZXdJbXBsKCk7CiAKLSAgICBXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3QqIGxheWVy
VHJlZUhvc3QoKSB7IHJldHVybiBtX2xheWVyVHJlZUhvc3QuZ2V0KCk7IH0KKyAgICBib29sIGlu
aXRpYWxpemUoY29uc3QgU2V0dGluZ3MmKTsKIAotcHJpdmF0ZToKLSAgICBXZWJMYXllclRyZWVW
aWV3SW1wbChXZWJMYXllclRyZWVWaWV3Q2xpZW50KiwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6
U2V0dGluZ3MmKTsKKyAgICAvLyBXZWJMYXllclRyZWVWaWV3IGltcGxlbWVudGF0aW9uLgorICAg
IHZpcnR1YWwgdm9pZCBzZXRTdXJmYWNlUmVhZHkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Um9vdExheWVyKGNvbnN0IFdlYkxheWVyJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGNsZWFyUm9vdExheWVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgY29tcG9zaXRv
cklkZW50aWZpZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld3BvcnRTaXpl
KGNvbnN0IFdlYlNpemUmIGxheW91dFZpZXdwb3J0U2l6ZSwgY29uc3QgV2ViU2l6ZSYgZGV2aWNl
Vmlld3BvcnRTaXplID0gV2ViU2l6ZSgpKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYlNpemUg
bGF5b3V0Vmlld3BvcnRTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJTaXpl
IGRldmljZVZpZXdwb3J0U2l6ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
ZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRC
YWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRI
YXNUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHNldFZpc2libGUoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VTY2Fs
ZUZhY3RvckFuZExpbWl0cyhmbG9hdCBwYWdlU2NhbGVGYWN0b3IsIGZsb2F0IG1pbmltdW0sIGZs
b2F0IG1heGltdW0pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFu
aW1hdGlvbihjb25zdCBXZWJQb2ludCYgZGVzdGluYXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9h
dCBuZXdQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzQW5pbWF0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc1JlZHJhdygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjb21taXRSZXF1ZXN0ZWQo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcG9zaXRlKCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1l
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAq
cGl4ZWxzLCBjb25zdCBXZWJSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGZpbmlz
aEFsbFJlbmRlcmluZygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW5kZXJpbmdTdGF0
cyhXZWJSZW5kZXJpbmdTdGF0cyYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRGb250QXRsYXMoU2tCaXRtYXAsIFdlYlJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdLCBpbnQg
Zm9udEhlaWdodCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGxvc2VDb21wb3NpdG9yQ29u
dGV4dChpbnQgbnVtVGltZXMpIE9WRVJSSURFOwogCi0gICAgT3duUHRyPFdlYkxheWVyVHJlZVZp
ZXdDbGllbnRBZGFwdGVyPiBtX2NsaWVudEFkYXB0ZXI7CisgICAgLy8gV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0Q2xpZW50IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVn
aW5GcmFtZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRCZWdpbkZyYW1lKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGUoZG91YmxlIG1vbm90b25pY0ZyYW1lQmVn
aW5UaW1lKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQ
YXNzT3duUHRyPFdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlPiBjcmVhdGVPdXRwdXRTdXJmYWNl
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShi
b29sIHN1Y2Nlc3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0KCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdCgpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZUNvbXBvc2l0ZSgpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIFdlYkxheWVyVHJl
ZVZpZXdDbGllbnQqIG1fY2xpZW50OwogICAgIE93blB0cjxXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q+IG1fbGF5ZXJUcmVlSG9zdDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcAppbmRleCBjNmY5ZjdlMDk2MTY1MDlhYzM1NzBlNzE4YWUxN2E2MTBiMGZh
ZTUwLi42MjNlMzEwN2FkMTc5ZDZmNDY5MDY0MjdkY2I1OTU2ZGFhNzhkYzM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC03NjgsMTMgKzc2OCwxMyBA
QCB2b2lkIFdlYlZpZXdJbXBsOjp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24oY29u
c3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcgogCiB2b2lkIFdlYlZpZXdJbXBsOjpyZW5kZXJpbmdT
dGF0cyhXZWJSZW5kZXJpbmdTdGF0cyYgc3RhdHMpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2xheWVy
VHJlZVZpZXcuaXNOdWxsKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5yZW5kZXJpbmdTdGF0
cyhzdGF0cyk7CisgICAgaWYgKG1fbGF5ZXJUcmVlVmlldykKKyAgICAgICAgbV9sYXllclRyZWVW
aWV3LT5yZW5kZXJpbmdTdGF0cyhzdGF0cyk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnN0YXJ0
UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFBvaW50JiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1
c2VBbmNob3IsIGZsb2F0IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25JblNlY29uZHMpCiB7Ci0g
ICAgaWYgKG1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSkKKyAgICBpZiAoIW1fbGF5ZXJUcmVlVmll
dykKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UG9pbnQgY2xhbXBlZFBvaW50ID0gdGFyZ2V0
UG9zaXRpb247CkBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c3RhcnRQYWdl
U2NhbGVBbmltYXRpb24oY29uc3QgSW50UG9pbnQmIHRhcmdldFBvc2l0aW9uLCBib29sIHUKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fbGF5ZXJUcmVlVmlldy5zdGFydFBhZ2VTY2Fs
ZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBuZXdTY2FsZSwgZHVyYXRpb25J
blNlY29uZHMpOworICAgIG1fbGF5ZXJUcmVlVmlldy0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24o
dGFyZ2V0UG9zaXRpb24sIHVzZUFuY2hvciwgbmV3U2NhbGUsIGR1cmF0aW9uSW5TZWNvbmRzKTsK
IH0KICNlbmRpZgogCkBAIC0xNjUwLDggKzE2NTAsOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRh
dGVCYXR0ZXJ5U3RhdHVzKGNvbnN0IFdlYkJhdHRlcnlTdGF0dXMmIHN0YXR1cykKIHZvaWQgV2Vi
Vmlld0ltcGw6OnNldENvbXBvc2l0b3JTdXJmYWNlUmVhZHkoKQogewogICAgIG1fY29tcG9zaXRv
clN1cmZhY2VSZWFkeSA9IHRydWU7Ci0gICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkp
Ci0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRTdXJmYWNlUmVhZHkoKTsKKyAgICBpZiAobV9s
YXllclRyZWVWaWV3KQorICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNldFN1cmZhY2VSZWFkeSgp
OwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjphbmltYXRlKGRvdWJsZSkKQEAgLTE2NjMsNyArMTY2
Myw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmFuaW1hdGUoZG91YmxlKQogICAgIC8vIEluIGNvbXBv
c2l0ZWQgbW9kZSwgd2UgYWx3YXlzIGdvIHRocm91Z2ggdGhlIGNvbXBvc2l0b3Igc28gaXQgY2Fu
IGFwcGx5CiAgICAgLy8gYXBwcm9wcmlhdGUgZmxvdy1jb250cm9sIG1lY2hhbmlzbXMuCiAgICAg
aWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKQotICAgICAgICBtX2xheWVyVHJl
ZVZpZXcudXBkYXRlQW5pbWF0aW9ucyhtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7CisgICAgICAg
IG1fbGF5ZXJUcmVlVmlldy0+dXBkYXRlQW5pbWF0aW9ucyhtb25vdG9uaWNGcmFtZUJlZ2luVGlt
ZSk7CiAgICAgZWxzZQogI2VuZGlmCiAgICAgICAgIHVwZGF0ZUFuaW1hdGlvbnMobW9ub3Rvbmlj
RnJhbWVCZWdpblRpbWUpOwpAQCAtMTcxNyw3ICsxNzE3LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
bGF5b3V0KCkKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB2b2lkIFdlYlZpZXdJ
bXBsOjpkb1BpeGVsUmVhZGJhY2tUb0NhbnZhcyhXZWJDYW52YXMqIGNhbnZhcywgY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKLSAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSk7Cisg
ICAgQVNTRVJUKG1fbGF5ZXJUcmVlVmlldyk7CiAKICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIGNv
bnRleHQoY2FudmFzKTsKIApAQCAtMTczMSw3ICsxNzMxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
ZG9QaXhlbFJlYWRiYWNrVG9DYW52YXMoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IEludFJlY3Qm
IHJlY3QKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKEltYWdlQnVmZmVyOjpj
cmVhdGUocmVjdC5zaXplKCkpKTsKICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVs
QXJyYXkoVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgp
ICogcmVjdC5oZWlnaHQoKSAqIDQpKTsKICAgICBpZiAoaW1hZ2VCdWZmZXIgJiYgcGl4ZWxBcnJh
eSkgewotICAgICAgICBtX2xheWVyVHJlZVZpZXcuY29tcG9zaXRlQW5kUmVhZGJhY2socGl4ZWxB
cnJheS0+ZGF0YSgpLCBpbnZlcnRSZWN0KTsKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LT5jb21w
b3NpdGVBbmRSZWFkYmFjayhwaXhlbEFycmF5LT5kYXRhKCksIGludmVydFJlY3QpOwogICAgICAg
ICBpbWFnZUJ1ZmZlci0+cHV0Qnl0ZUFycmF5KFByZW11bHRpcGxpZWQsIHBpeGVsQXJyYXkuZ2V0
KCksIHJlY3Quc2l6ZSgpLCBJbnRSZWN0KEludFBvaW50KCksIHJlY3Quc2l6ZSgpKSwgSW50UG9p
bnQoKSk7CiAgICAgICAgIGdjLnNhdmUoKTsKICAgICAgICAgZ2MudHJhbnNsYXRlKEludFNpemUo
MCwgYml0bWFwSGVpZ2h0KSk7CkBAIC0xNzU5LDcgKzE3NTksNyBAQCB2b2lkIFdlYlZpZXdJbXBs
OjpwYWludChXZWJDYW52YXMqIGNhbnZhcywgY29uc3QgV2ViUmVjdCYgcmVjdCwgUGFpbnRPcHRp
b25zIG9wdAogICAgICAgICBpZiAoY2FudmFzKSB7CiAgICAgICAgICAgICAvLyBDbGlwIHJlY3Qg
dG8gdGhlIGNvbmZpbmVzIG9mIHRoZSByb290TGF5ZXJUZXh0dXJlLgogICAgICAgICAgICAgSW50
UmVjdCByZXNpemVSZWN0KHJlY3QpOwotICAgICAgICAgICAgcmVzaXplUmVjdC5pbnRlcnNlY3Qo
SW50UmVjdChJbnRQb2ludCgwLCAwKSwgbV9sYXllclRyZWVWaWV3LmRldmljZVZpZXdwb3J0U2l6
ZSgpKSk7CisgICAgICAgICAgICByZXNpemVSZWN0LmludGVyc2VjdChJbnRSZWN0KEludFBvaW50
KDAsIDApLCBtX2xheWVyVHJlZVZpZXctPmRldmljZVZpZXdwb3J0U2l6ZSgpKSk7CiAgICAgICAg
ICAgICBkb1BpeGVsUmVhZGJhY2tUb0NhbnZhcyhjYW52YXMsIHJlc2l6ZVJlY3QpOwogICAgICAg
ICB9CiAjZW5kaWYKQEAgLTE3OTksNyArMTc5OSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmNvbXBv
c2l0ZShib29sKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAo
V2ViQ29tcG9zaXRvcjo6dGhyZWFkaW5nRW5hYmxlZCgpKQotICAgICAgICBtX2xheWVyVHJlZVZp
ZXcuc2V0TmVlZHNSZWRyYXcoKTsKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXROZWVkc1Jl
ZHJhdygpOwogICAgIGVsc2UgewogICAgICAgICBBU1NFUlQoaXNBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQWN0aXZlKCkpOwogICAgICAgICBpZiAoIXBhZ2UoKSkKQEAgLTE4MDgsNyArMTgwOCw3IEBA
IHZvaWQgV2ViVmlld0ltcGw6OmNvbXBvc2l0ZShib29sKQogICAgICAgICBpZiAobV9wYWdlT3Zl
cmxheXMpCiAgICAgICAgICAgICBtX3BhZ2VPdmVybGF5cy0+dXBkYXRlKCk7CiAKLSAgICAgICAg
bV9sYXllclRyZWVWaWV3LmNvbXBvc2l0ZSgpOworICAgICAgICBtX2xheWVyVHJlZVZpZXctPmNv
bXBvc2l0ZSgpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMTgxNiwxNiArMTgxNiwxNiBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpjb21wb3NpdGUoYm9vbCkKIHZvaWQgV2ViVmlld0ltcGw6OnNldE5lZWRz
UmVkcmF3KCkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKCFt
X2xheWVyVHJlZVZpZXcuaXNOdWxsKCkgJiYgaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZl
KCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5zZXROZWVkc1JlZHJhdygpOworICAgIGlmICht
X2xheWVyVHJlZVZpZXcgJiYgaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpCisgICAg
ICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0TmVlZHNSZWRyYXcoKTsKICNlbmRpZgogfQogCiBib29s
IFdlYlZpZXdJbXBsOjppc0lucHV0VGhyb3R0bGVkKCkgY29uc3QKIHsKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkgJiYg
aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpCi0gICAgICAgIHJldHVybiBtX2xheWVy
VHJlZVZpZXcuY29tbWl0UmVxdWVzdGVkKCk7CisgICAgaWYgKG1fbGF5ZXJUcmVlVmlldyAmJiBp
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuIG1fbGF5ZXJU
cmVlVmlldy0+Y29tbWl0UmVxdWVzdGVkKCk7CiAjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9
CkBAIC0xODMzLDggKzE4MzMsOCBAQCBib29sIFdlYlZpZXdJbXBsOjppc0lucHV0VGhyb3R0bGVk
KCkgY29uc3QKIHZvaWQgV2ViVmlld0ltcGw6Omxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVt
VGltZXMpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmICghbV9s
YXllclRyZWVWaWV3LmlzTnVsbCgpKQotICAgICAgICBtX2xheWVyVHJlZVZpZXcubG9zZUNvbXBv
c2l0b3JDb250ZXh0KG51bVRpbWVzKTsKKyAgICBpZiAobV9sYXllclRyZWVWaWV3KQorICAgICAg
ICBtX2xheWVyVHJlZVZpZXctPmxvc2VDb21wb3NpdG9yQ29udGV4dChudW1UaW1lcyk7CiAjZW5k
aWYKIH0KIApAQCAtMjc2MSw5ICsyNzYxLDkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0RGV2aWNl
U2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IpCiAKICAgICBwYWdlKCktPnNldERldmljZVNj
YWxlRmFjdG9yKHNjYWxlRmFjdG9yKTsKIAotICAgIGlmICghbV9sYXllclRyZWVWaWV3LmlzTnVs
bCgpICYmIG1fd2ViU2V0dGluZ3MtPmFwcGx5RGVmYXVsdERldmljZVNjYWxlRmFjdG9ySW5Db21w
b3NpdG9yKCkpIHsKKyAgICBpZiAobV9sYXllclRyZWVWaWV3ICYmIG1fd2ViU2V0dGluZ3MtPmFw
cGx5RGVmYXVsdERldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpIHsKICAgICAgICAgbV9k
ZXZpY2VTY2FsZUluQ29tcG9zaXRvciA9IHBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAg
ICAgICAgbV9sYXllclRyZWVWaWV3LnNldERldmljZVNjYWxlRmFjdG9yKG1fZGV2aWNlU2NhbGVJ
bkNvbXBvc2l0b3IpOworICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNldERldmljZVNjYWxlRmFj
dG9yKG1fZGV2aWNlU2NhbGVJbkNvbXBvc2l0b3IpOwogICAgIH0KICAgICBpZiAobV9kZXZpY2VT
Y2FsZUluQ29tcG9zaXRvciAhPSAxKSB7CiAgICAgICAgIC8vIERvbid0IGFsbG93IHBhZ2Ugc2Nh
bGluZyB3aGVuIGNvbXBvc2l0b3Igc2NhbGluZyBpcyBiZWluZyB1c2VkLApAQCAtMjg1OCw4ICsy
ODU4LDggQEAgYm9vbCBXZWJWaWV3SW1wbDo6Y29tcHV0ZVBhZ2VTY2FsZUZhY3RvckxpbWl0cygp
CiAKICAgICBmbG9hdCBjbGFtcGVkU2NhbGUgPSBjbGFtcFBhZ2VTY2FsZUZhY3RvclRvTGltaXRz
KHBhZ2VTY2FsZUZhY3RvcigpKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0g
ICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmll
dy5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoY2xhbXBlZFNjYWxlLCBtX21pbmltdW1QYWdl
U2NhbGVGYWN0b3IsIG1fbWF4aW11bVBhZ2VTY2FsZUZhY3Rvcik7CisgICAgaWYgKG1fbGF5ZXJU
cmVlVmlldykKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRM
aW1pdHMoY2xhbXBlZFNjYWxlLCBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IsIG1fbWF4aW11bVBh
Z2VTY2FsZUZhY3Rvcik7CiAjZW5kaWYKICAgICBpZiAoY2xhbXBlZFNjYWxlICE9IHBhZ2VTY2Fs
ZUZhY3RvcigpKSB7CiAgICAgICAgIHNldFBhZ2VTY2FsZUZhY3RvclByZXNlcnZpbmdTY3JvbGxP
ZmZzZXQoY2xhbXBlZFNjYWxlKTsKQEAgLTMzMzQsOCArMzMzNCw4IEBAIHZvaWQgV2ViVmlld0lt
cGw6OnNldElzVHJhbnNwYXJlbnQoYm9vbCBpc1RyYW5zcGFyZW50KQogICAgIGlmIChtX25vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdCkKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3Qt
PnNldE9wYXF1ZSghaXNUcmFuc3BhcmVudCk7CiAKLSAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldy5p
c051bGwoKSkKLSAgICAgICAgbV9sYXllclRyZWVWaWV3LnNldEhhc1RyYW5zcGFyZW50QmFja2dy
b3VuZChpc1RyYW5zcGFyZW50KTsKKyAgICBpZiAobV9sYXllclRyZWVWaWV3KQorICAgICAgICBt
X2xheWVyVHJlZVZpZXctPnNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChpc1RyYW5zcGFyZW50
KTsKIH0KIAogYm9vbCBXZWJWaWV3SW1wbDo6aXNUcmFuc3BhcmVudCgpIGNvbnN0CkBAIC0zNjU1
LDggKzM2NTUsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIoR3Jh
cGhpY3NMYXllciogbGF5ZXIpCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5z
ZXRTY3JvbGxMYXllcihzY3JvbGxMYXllcik7CiAgICAgfQogCi0gICAgaWYgKCFtX2xheWVyVHJl
ZVZpZXcuaXNOdWxsKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRSb290TGF5ZXIobV9y
b290TGF5ZXIpOworICAgIGlmIChtX2xheWVyVHJlZVZpZXcpIHsKKyAgICAgICAgaWYgKG1fcm9v
dExheWVyKQorICAgICAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRSb290TGF5ZXIoKm1fcm9v
dExheWVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9sYXllclRyZWVWaWV3LT5jbGVh
clJvb3RMYXllcigpOworICAgIH0KIAogICAgIEludFJlY3QgZGFtYWdlZFJlY3QoMCwgMCwgbV9z
aXplLndpZHRoLCBtX3NpemUuaGVpZ2h0KTsKICAgICBpZiAoIW1faXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQWN0aXZlKQpAQCAtMzY2NSw3ICszNjY5LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0
Um9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAKIHZvaWQgV2ViVmlld0lt
cGw6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMoKQogewotICAgIG1fbGF5ZXJUcmVlVmll
dy5zZXROZWVkc1JlZHJhdygpOworICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0TmVlZHNSZWRyYXco
KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2Nyb2xsUm9vdExheWVyUmVjdChjb25zdCBJbnRT
aXplJiwgY29uc3QgSW50UmVjdCYpCkBAIC0zNjc1LDcgKzM2NzksNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpzY3JvbGxSb290TGF5ZXJSZWN0KGNvbnN0IEludFNpemUmLCBjb25zdCBJbnRSZWN0JikK
IAogdm9pZCBXZWJWaWV3SW1wbDo6aW52YWxpZGF0ZVJvb3RMYXllclJlY3QoY29uc3QgSW50UmVj
dCYgcmVjdCkKIHsKLSAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSk7CisgICAg
QVNTRVJUKG1fbGF5ZXJUcmVlVmlldyk7CiAKICAgICBpZiAoIXBhZ2UoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMzY5Niw3ICszNzAwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0QmFja2dyb3Vu
ZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKICAgICBXZWJDb3JlOjpDb2xvciBk
b2N1bWVudEJhY2tncm91bmRDb2xvciA9IGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogV2ViQ29y
ZTo6Q29sb3I6OndoaXRlOwogICAgIFdlYkNvbG9yIHdlYkRvY3VtZW50QmFja2dyb3VuZENvbG9y
ID0gZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IucmdiKCk7CiAgICAgbV9ub25Db21wb3NpdGVkQ29u
dGVudEhvc3QtPnNldEJhY2tncm91bmRDb2xvcihkb2N1bWVudEJhY2tncm91bmRDb2xvcik7Ci0g
ICAgbV9sYXllclRyZWVWaWV3LnNldEJhY2tncm91bmRDb2xvcih3ZWJEb2N1bWVudEJhY2tncm91
bmRDb2xvcik7CisgICAgbV9sYXllclRyZWVWaWV3LT5zZXRCYWNrZ3JvdW5kQ29sb3Iod2ViRG9j
dW1lbnRCYWNrZ3JvdW5kQ29sb3IpOwogfQogCiBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBXZWJW
aWV3SW1wbDo6cm9vdEdyYXBoaWNzTGF5ZXIoKQpAQCAtMzcwOSw4ICszNzEzLDggQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6c2NoZWR1bGVBbmltYXRpb24oKQogewogICAgIGlmIChpc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBY3RpdmUoKSkgewogICAgICAgICBpZiAoV2ViQ29tcG9zaXRvcjo6dGhyZWFk
aW5nRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlVmlldy5pc051
bGwoKSk7Ci0gICAgICAgICAgICBtX2xheWVyVHJlZVZpZXcuc2V0TmVlZHNBbmltYXRlKCk7Cisg
ICAgICAgICAgICBBU1NFUlQobV9sYXllclRyZWVWaWV3KTsKKyAgICAgICAgICAgIG1fbGF5ZXJU
cmVlVmlldy0+c2V0TmVlZHNBbmltYXRlKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
bV9jbGllbnQtPnNjaGVkdWxlQW5pbWF0aW9uKCk7CiAgICAgfSBlbHNlCkBAIC0zNzQ0LDE0ICsz
NzQ4LDE0IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Fj
dGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3Rp
dmUgPSBmYWxzZTsKICAgICAgICAgLy8gV2UgbmVlZCB0byBmaW5pc2ggYWxsIEdMIHJlbmRlcmlu
ZyBiZWZvcmUgc2VuZGluZyBkaWREZWFjdGl2YXRlQ29tcG9zaXRvcigpIHRvIHByZXZlbnQKICAg
ICAgICAgLy8gZmxpY2tlcmluZyB3aGVuIGNvbXBvc2l0aW5nIHR1cm5zIG9mZi4KLSAgICAgICAg
aWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpCi0gICAgICAgICAgICBtX2xheWVyVHJlZVZp
ZXcuZmluaXNoQWxsUmVuZGVyaW5nKCk7CisgICAgICAgIGlmIChtX2xheWVyVHJlZVZpZXcpCisg
ICAgICAgICAgICBtX2xheWVyVHJlZVZpZXctPmZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgICAg
ICBtX2NsaWVudC0+ZGlkRGVhY3RpdmF0ZUNvbXBvc2l0b3IoKTsKLSAgICB9IGVsc2UgaWYgKCFt
X2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpIHsKKyAgICB9IGVsc2UgaWYgKG1fbGF5ZXJUcmVlVmll
dykgewogICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IHRydWU7CiAg
ICAgICAgIHVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCk7CiAKLSAgICAgICAgbV9jbGllbnQtPmRp
ZEFjdGl2YXRlQ29tcG9zaXRvcihtX2xheWVyVHJlZVZpZXcuY29tcG9zaXRvcklkZW50aWZpZXIo
KSk7CisgICAgICAgIG1fY2xpZW50LT5kaWRBY3RpdmF0ZUNvbXBvc2l0b3IobV9sYXllclRyZWVW
aWV3LT5jb21wb3NpdG9ySWRlbnRpZmllcigpKTsKICAgICB9IGVsc2UgewogICAgICAgICBUUkFD
RV9FVkVOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQWN0aXZlKHRydWUpIik7CiAKQEAgLTM3NjksOCArMzc3Myw4IEBAIHZvaWQgV2ViVmlld0lt
cGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAg
ICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldFNob3dEZWJ1Z0JvcmRlcnMocGFnZSgp
LT5zZXR0aW5ncygpLT5zaG93RGVidWdCb3JkZXJzKCkpOwogICAgICAgICBtX25vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdC0+c2V0T3BhcXVlKCFpc1RyYW5zcGFyZW50KCkpOwogCi0gICAgICAgIG1f
bGF5ZXJUcmVlVmlldy5pbml0aWFsaXplKHRoaXMsICptX3Jvb3RMYXllciwgbGF5ZXJUcmVlVmll
d1NldHRpbmdzKTsKLSAgICAgICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpIHsKKyAg
ICAgICAgbV9sYXllclRyZWVWaWV3ID0gYWRvcHRQdHIoV2ViTGF5ZXJUcmVlVmlldzo6Y3JlYXRl
KHRoaXMsICptX3Jvb3RMYXllciwgbGF5ZXJUcmVlVmlld1NldHRpbmdzKSk7CisgICAgICAgIGlm
IChtX2xheWVyVHJlZVZpZXcpIHsKICAgICAgICAgICAgIGlmIChtX3dlYlNldHRpbmdzLT5hcHBs
eURlZmF1bHREZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpICYmIHBhZ2UoKS0+ZGV2aWNl
U2NhbGVGYWN0b3IoKSAhPSAxKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhZ2UoKS0+ZGV2
aWNlU2NhbGVGYWN0b3IoKSk7CiAKQEAgLTM3NzksMTMgKzM3ODMsMTMgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBib29sIHZpc2libGUgPSBwYWdlKCktPnZpc2liaWxp
dHlTdGF0ZSgpID09IFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOwotICAgICAgICAgICAgbV9s
YXllclRyZWVWaWV3LnNldFZpc2libGUodmlzaWJsZSk7Ci0gICAgICAgICAgICBtX2xheWVyVHJl
ZVZpZXcuc2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKHBhZ2VTY2FsZUZhY3RvcigpLCBtX21p
bmltdW1QYWdlU2NhbGVGYWN0b3IsIG1fbWF4aW11bVBhZ2VTY2FsZUZhY3Rvcik7CisgICAgICAg
ICAgICBtX2xheWVyVHJlZVZpZXctPnNldFZpc2libGUodmlzaWJsZSk7CisgICAgICAgICAgICBt
X2xheWVyVHJlZVZpZXctPnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhwYWdlU2NhbGVGYWN0
b3IoKSwgbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yLCBtX21heGltdW1QYWdlU2NhbGVGYWN0b3Ip
OwogICAgICAgICAgICAgaWYgKG1fY29tcG9zaXRvclN1cmZhY2VSZWFkeSkKLSAgICAgICAgICAg
ICAgICBtX2xheWVyVHJlZVZpZXcuc2V0U3VyZmFjZVJlYWR5KCk7Ci0gICAgICAgICAgICBtX2xh
eWVyVHJlZVZpZXcuc2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGlzVHJhbnNwYXJlbnQoKSk7
CisgICAgICAgICAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRTdXJmYWNlUmVhZHkoKTsKKyAg
ICAgICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGlz
VHJhbnNwYXJlbnQoKSk7CiAgICAgICAgICAgICB1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgpOwot
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZEFjdGl2YXRlQ29tcG9zaXRvcihtX2xheWVyVHJlZVZp
ZXcuY29tcG9zaXRvcklkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQWN0
aXZhdGVDb21wb3NpdG9yKG1fbGF5ZXJUcmVlVmlldy0+Y29tcG9zaXRvcklkZW50aWZpZXIoKSk7
CiAgICAgICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IHRydWU7CiAg
ICAgICAgICAgICBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZCA9IGZhbHNlOwogICAgICAgICAg
ICAgaWYgKG1fcGFnZU92ZXJsYXlzKQpAQCAtMzc5Nyw3ICszODAxLDcgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAg
ICAgICAgICAgICAgIFdlYlJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdOwogICAgICAgICAgICAg
ICAgIGludCBmb250SGVpZ2h0OwogICAgICAgICAgICAgICAgIFNrQml0bWFwIGJpdG1hcCA9IFdl
YkNvcmU6OkNvbXBvc2l0b3JIVURGb250QXRsYXM6OmdlbmVyYXRlRm9udEF0bGFzKGFzY2lpVG9S
ZWN0VGFibGUsIGZvbnRIZWlnaHQpOwotICAgICAgICAgICAgICAgIG1fbGF5ZXJUcmVlVmlldy5z
ZXRGb250QXRsYXMoYml0bWFwLCBhc2NpaVRvUmVjdFRhYmxlLCBmb250SGVpZ2h0KTsKKyAgICAg
ICAgICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNldEZvbnRBdGxhcyhiaXRtYXAsIGFzY2lpVG9S
ZWN0VGFibGUsIGZvbnRIZWlnaHQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QuY2xlYXIoKTsKQEAgLTM5NDcs
NyArMzk1MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNjaGVkdWxlQ29tcG9zaXRlKCkKIAogdm9p
ZCBXZWJWaWV3SW1wbDo6dXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKQogewotICAgIGlmICghcGFn
ZSgpIHx8ICFtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCB8fCBtX2xheWVyVHJlZVZpZXcuaXNO
dWxsKCkpCisgICAgaWYgKCFwYWdlKCkgfHwgIW1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0IHx8
ICFtX2xheWVyVHJlZVZpZXcpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lVmlldyogdmll
dyA9IHBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKQEAgLTM5NjIsOCArMzk2Niw4IEBAIHZv
aWQgV2ViVmlld0ltcGw6OnVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCkKICAgICBJbnRTaXplIGxh
eW91dFZpZXdwb3J0U2l6ZSA9IHNpemUoKTsKICAgICBJbnRTaXplIGRldmljZVZpZXdwb3J0U2l6
ZSA9IHNpemUoKTsKICAgICBkZXZpY2VWaWV3cG9ydFNpemUuc2NhbGUoZGV2aWNlU2NhbGUpOwot
ICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRWaWV3cG9ydFNpemUobGF5b3V0Vmlld3BvcnRTaXplLCBk
ZXZpY2VWaWV3cG9ydFNpemUpOwotICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRQYWdlU2NhbGVGYWN0
b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9yKCksIG1fbWluaW11bVBhZ2VTY2FsZUZhY3Rvciwg
bV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKTsKKyAgICBtX2xheWVyVHJlZVZpZXctPnNldFZpZXdw
b3J0U2l6ZShsYXlvdXRWaWV3cG9ydFNpemUsIGRldmljZVZpZXdwb3J0U2l6ZSk7CisgICAgbV9s
YXllclRyZWVWaWV3LT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9y
KCksIG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvciwgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKTsK
IH0KIAogV2ViR3JhcGhpY3NDb250ZXh0M0QqIFdlYlZpZXdJbXBsOjpzaGFyZWRHcmFwaGljc0Nv
bnRleHQzRCgpCkBAIC00MDIyLDkgKzQwMjYsOSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRWaXNp
YmlsaXR5U3RhdGUoV2ViUGFnZVZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUsCiAjZW5k
aWYKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAoIW1fbGF5ZXJU
cmVlVmlldy5pc051bGwoKSkgeworICAgIGlmIChtX2xheWVyVHJlZVZpZXcpIHsKICAgICAgICAg
Ym9vbCB2aXNpYmxlID0gdmlzaWJpbGl0eVN0YXRlID09IFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGVW
aXNpYmxlOwotICAgICAgICBtX2xheWVyVHJlZVZpZXcuc2V0VmlzaWJsZSh2aXNpYmxlKTsKKyAg
ICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRWaXNpYmxlKHZpc2libGUpOwogICAgIH0KICNlbmRp
ZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMjA2Y2Y0
NTcyOGFlYTliY2ZhMGEyOGM0YzM1ZjcxMWEzYzYyMGRkMi4uMmY2OTAzMzNlYmU4YTY4YTI1ODA4
ZDU0NDIzYjBjYTNmNjAxOTYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oCkBAIC01Miw3ICs1Miw2IEBACiAjaW5jbHVkZSAiV2ViVmlld0JlbmNobWFya1N1cHBv
cnRJbXBsLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UXVhZC5oPgogI2luY2x1ZGUgPHB1
YmxpYy9XZWJMYXllci5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaD4KICNpbmNsdWRlIDxwdWJs
aWMvV2ViUG9pbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5oPgpAQCAtOTUsNyArOTQs
NiBAQCBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OwogY2xhc3MgRHJhZ1Njcm9s
bFRpbWVyOwogY2xhc3MgR2VvbG9jYXRpb25DbGllbnRQcm94eTsKIGNsYXNzIExpbmtIaWdobGln
aHQ7Ci1jbGFzcyBXZWJIZWxwZXJQbHVnaW5JbXBsOwogY2xhc3MgTm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0OwogY2xhc3MgUHJlcmVuZGVyZXJDbGllbnRJbXBsOwogY2xhc3MgU3BlZWNoSW5wdXRD
bGllbnRJbXBsOwpAQCAtMTA3LDE1ICsxMDUsMTcgQEAgY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENs
aWVudDsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRQcml2YXRlOwogY2xhc3MgV2ViRnJhbWVJbXBs
OwogY2xhc3MgV2ViR2VzdHVyZUV2ZW50OwotY2xhc3MgV2ViUGFnZVBvcHVwSW1wbDsKLWNsYXNz
IFdlYlByZXJlbmRlcmVyQ2xpZW50OwotY2xhc3MgV2ViVmlld0JlbmNobWFya1N1cHBvcnQ7Citj
bGFzcyBXZWJIZWxwZXJQbHVnaW5JbXBsOwogY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJLZXli
b2FyZEV2ZW50OworY2xhc3MgV2ViTGF5ZXJUcmVlVmlldzsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7
CiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CitjbGFzcyBXZWJQYWdlUG9wdXBJbXBsOworY2xh
c3MgV2ViUHJlcmVuZGVyZXJDbGllbnQ7CiBjbGFzcyBXZWJTZXR0aW5nc0ltcGw7CiBjbGFzcyBX
ZWJUb3VjaEV2ZW50OworY2xhc3MgV2ViVmlld0JlbmNobWFya1N1cHBvcnQ7CiAKIGNsYXNzIFdl
YlZpZXdJbXBsIDogcHVibGljIFdlYlZpZXcKICAgICAgICAgICAgICAgICAgICwgcHVibGljIFdl
YkxheWVyVHJlZVZpZXdDbGllbnQKQEAgLTgyNCw3ICs4MjQsNyBAQCBwcml2YXRlOgogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fcm9vdExh
eWVyU2Nyb2xsRGFtYWdlOwogICAgIE93blB0cjxOb25Db21wb3NpdGVkQ29udGVudEhvc3Q+IG1f
bm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OwotICAgIFdlYkxheWVyVHJlZVZpZXcgbV9sYXllclRy
ZWVWaWV3OworICAgIE93blB0cjxXZWJMYXllclRyZWVWaWV3PiBtX2xheWVyVHJlZVZpZXc7CiAg
ICAgV2ViTGF5ZXIqIG1fcm9vdExheWVyOwogICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIG1f
cm9vdEdyYXBoaWNzTGF5ZXI7CiAgICAgYm9vbCBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Fj
dGl2ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwCmluZGV4IDUyMDIyMDhiOTRmM2Q1ZWZhN2JhZWY4MGIyZTNhNjJhNThlM2Jl
OWIuLjk5NGI5ZmNmZDBmZGY3ZGRlNGFhZGM4NTQ4NGU1Y2ZmZGMwMGNhMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApA
QCAtMTM1LDE0ICsxMzUsMTQgQEAgcHVibGljOgogICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRU
b01haW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVP
bkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKQorICAgIHZpcnR1YWwgdm9pZCBjb21taXRD
b21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopIE9WRVJSSURFCiAgICAgewog
ICAgICAgICBtX251bUNvbXBsZXRlQ29tbWl0cysrOwogICAgICAgICBpZiAobV9udW1Db21wbGV0
ZUNvbW1pdHMgPT0gMikKICAgICAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopCisgICAg
dmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKSBP
VkVSUklERQogICAgIHsKICAgICAgICAgaWYgKG1fbnVtRHJhd3MgPT0gMSkKICAgICAgICAgICBw
b3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKQEAgLTE4MCwxNCArMTgwLDE0IEBAIHB1
YmxpYzoKICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdElt
cGwqIGltcGwpCisgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJU
cmVlSG9zdEltcGwqIGltcGwpIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX251bURyYXdzKys7
CiAgICAgICAgIGlmICghaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSkKICAgICAgICAgICAgIGVu
ZFRlc3QoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhy
ZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKQorICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0
ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopIE9WRVJSSURFCiAgICAgewogICAgICAg
ICBtX251bUNvbW1pdHMrKzsKICAgICB9CkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgogICAg
ICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1w
bCogaW1wbCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGlmICghaW1wbC0+c291cmNlRnJhbWVO
dW1iZXIoKSkKICAgICAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwpA
QCAtMjMxLDcgKzIzMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVl
SG9zdEltcGwqKQorICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NM
YXllclRyZWVIb3N0SW1wbCopIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX251bUNvbW1pdHMr
KzsKICAgICB9CkBAIC0yNzIsNyArMjcyLDcgQEAgcHVibGljOgogICAgICAgICBwb3N0U2V0TmVl
ZHNDb21taXRUb01haW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0xh
eWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAgICB2aXJ0dWFsIHZv
aWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkgT1ZFUlJJ
REUKICAgICB7CiAgICAgICAgIEVYUEVDVF9FUSgwLCBpbXBsLT5zb3VyY2VGcmFtZU51bWJlcigp
KTsKICAgICAgICAgaWYgKCFtX251bURyYXdzKQpAQCAtMjgyLDcgKzI4Miw3IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9udW1EcmF3cysrOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBjb21taXRD
b21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopCisgICAgdmlydHVhbCB2b2lk
IGNvbW1pdENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikgT1ZFUlJJREUK
ICAgICB7CiAgICAgICAgIEVYUEVDVF9FUSgwLCBtX251bURyYXdzKTsKICAgICAgICAgbV9udW1D
b21taXRzKys7CkBAIC0zMTcsMTQgKzMxNywxNCBAQCBwdWJsaWM6CiAgICAgICAgIHBvc3RTZXRO
ZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3
TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHZpcnR1YWwg
dm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVS
UklERQogICAgIHsKICAgICAgICAgLy8gT25seSB0aGUgaW5pdGlhbCBkcmF3IHNob3VsZCBicmlu
ZyB1cyBoZXJlLgogICAgICAgICBFWFBFQ1RfVFJVRShpbXBsLT5jYW5EcmF3KCkpOwogICAgICAg
ICBFWFBFQ1RfRVEoMCwgaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSk7CiAgICAgfQogCi0gICAg
dmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBs
KiBpbXBsKQorICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXll
clRyZWVIb3N0SW1wbCogaW1wbCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGlmIChtX251bUNv
bW1pdHMgPj0gMSkgewogICAgICAgICAgICAgLy8gQWZ0ZXIgdGhlIGZpcnN0IGNvbW1pdCwgd2Ug
c2hvdWxkIG5vdCBiZSBhYmxlIHRvIGRyYXcuCkBAIC0zNzQsMTMgKzM3NCwxMyBAQCBwdWJsaWM6
CiAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwogICAgIH0KIAotICAg
IHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBp
bXBsKQorICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhv
c3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsKICAgICAgICAgbV9udW1EcmF3cysrOwogICAg
ICAgICBFWFBFQ1RfRVEobV9udW1EcmF3cywgbV9udW1Db21taXRzKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwq
KQorICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCopIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX251bUNvbW1pdHMrKzsKICAgICAg
ICAgZW5kVGVzdCgpOwpAQCAtNDE4LDcgKzQxOCw3IEBAIHB1YmxpYzoKICAgICAgICAgcG9zdFNl
dE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGNv
bW1pdENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikKKyAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKSBPVkVS
UklERQogICAgIHsKICAgICAgICAgbV9udW1Db21taXRzKys7CiAgICAgICAgIGlmIChtX251bUNv
bW1pdHMgPT0gMikKQEAgLTQ1Niw3ICs0NTYsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgbV9udW1D
b21taXRzKys7CiAgICAgICAgIGlmIChtX251bUNvbW1pdHMgPT0gMSkgewpAQCAtNTM1LDcgKzUz
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcG9zdFNldE5lZWRzQW5pbWF0ZVRvTWFpblRocmVhZCgp
OwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSkKKyAg
ICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3VibGUpIE9WRVJSSURFCiAgICAgewogICAgICAgICBp
ZiAoIW1fbnVtQW5pbWF0ZXMpIHsKICAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVl
ZHNBbmltYXRlKCk7CkBAIC01NzUsNyArNTc1LDcgQEAgcHVibGljOgogICAgICAgICBwb3N0QWRk
SW5zdGFudEFuaW1hdGlvblRvTWFpblRocmVhZCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBhbmltYXRlTGF5ZXJzKENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsLCBk
b3VibGUgbW9ub3RvbmljVGltZSkKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhDQ0xh
eWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCwgZG91YmxlIG1vbm90b25pY1RpbWUp
IE9WRVJSSURFCiAgICAgewogICAgICAgICBpZiAoIW1fbnVtQW5pbWF0ZXMpIHsKICAgICAgICAg
ICAgIC8vIFRoZSBhbmltYXRpb24gaGFkIHplcm8gZHVyYXRpb24gc28gbGF5ZXJUcmVlSG9zdElt
cGwgc2hvdWxkIG5vCkBAIC01OTIsNyArNTkyLDcgQEAgcHVibGljOgogICAgICAgICBlbmRUZXN0
KCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoZG91
YmxlIHdhbGxDbG9ja1RpbWUpCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0
ZWQoZG91YmxlIHdhbGxDbG9ja1RpbWUpIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX3JlY2Vp
dmVkQW5pbWF0aW9uU3RhcnRlZE5vdGlmaWNhdGlvbiA9IHRydWU7CiAgICAgICAgIG1fc3RhcnRU
aW1lID0gd2FsbENsb2NrVGltZTsKQEAgLTYzMiwxOCArNjMyLDE4IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGFuaW1hdGVMYXllcnMoQ0NMYXllclRyZWVIb3N0
SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsIGRvdWJsZSBtb25vdG9uaWNUaW1lKQorICAgIHZpcnR1
YWwgdm9pZCBhbmltYXRlTGF5ZXJzKENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJ
bXBsLCBkb3VibGUgbW9ub3RvbmljVGltZSkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1fc3Rh
cnRlZEFuaW1hdGluZyA9IHRydWU7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdMYXll
cnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKQorICAgIHZpcnR1YWwgdm9pZCBkcmF3
TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikgT1ZFUlJJREUKICAgICB7CiAg
ICAgICAgIGlmIChtX3N0YXJ0ZWRBbmltYXRpbmcpCiAgICAgICAgICAgICBlbmRUZXN0KCk7CiAg
ICAgfQogCi0gICAgdmlydHVhbCBib29sIHByZXBhcmVUb0RyYXdPbkNDVGhyZWFkKENDTGF5ZXJU
cmVlSG9zdEltcGwqKQorICAgIHZpcnR1YWwgYm9vbCBwcmVwYXJlVG9EcmF3T25DQ1RocmVhZChD
Q0xheWVyVHJlZUhvc3RJbXBsKikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CkBAIC02NzQsNyArNjc0LDcgQEAgcHVibGljOgogICAgIC8vIFVzZSB3aWxsQW5p
bWF0ZUxheWVycyB0byBzZXQgdmlzaWJsZSBmYWxzZSBiZWZvcmUgdGhlIGFuaW1hdGlvbiBydW5z
IGFuZAogICAgIC8vIGNhdXNlcyBhIGNvbW1pdCwgc28gd2UgYmxvY2sgdGhlIHNlY29uZCB2aXNp
YmxlIGFuaW1hdGUgaW4gc2luZ2xlLXRocmVhZAogICAgIC8vIG1vZGUuCi0gICAgdmlydHVhbCB2
b2lkIHdpbGxBbmltYXRlTGF5ZXJzKENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJ
bXBsLCBkb3VibGUgbW9ub3RvbmljVGltZSkKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEFuaW1hdGVM
YXllcnMoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsIGRvdWJsZSBtb25v
dG9uaWNUaW1lKSBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYgKG1fbnVtQW5pbWF0ZXMgPCAy
KSB7CiAgICAgICAgICAgICBpZiAoIW1fbnVtQW5pbWF0ZXMpIHsKQEAgLTcwOSw3ICs3MDksNyBA
QCBwdWJsaWM6CiAgICAgICAgIHBvc3RBZGRBbmltYXRpb25Ub01haW5UaHJlYWQoKTsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBs
YXllclRyZWVIb3N0SW1wbCwgZG91YmxlIG1vbm90b25pY1RpbWUpCisgICAgdmlydHVhbCB2b2lk
IGFuaW1hdGVMYXllcnMoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsIGRv
dWJsZSBtb25vdG9uaWNUaW1lKSBPVkVSUklERQogICAgIHsKICAgICAgICAgY29uc3QgQ0NBY3Rp
dmVBbmltYXRpb24qIGFuaW1hdGlvbiA9IG1fbGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPmxh
eWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5nZXRBY3RpdmVBbmltYXRpb24oMCwgQ0NBY3RpdmVB
bmltYXRpb246Ok9wYWNpdHkpOwogICAgICAgICBpZiAoIWFuaW1hdGlvbikKQEAgLTc1MCw3ICs3
NTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHBvc3RBZGRBbmltYXRpb25Ub01haW5UaHJlYWQoKTsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5
ZXJUcmVlSG9zdEltcGwqKQorICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJl
YWQoQ0NMYXllclRyZWVIb3N0SW1wbCopIE9WRVJSSURFCiAgICAgewogICAgICAgICAvLyBJZiB0
aGUgc3VidHJlZSB3YXMgc2tpcHBlZCB3aGVuIHByZXBhcmluZyB0byBkcmF3LCB0aGUgbGF5ZXIn
cyBkcmF3IG9wYWNpdHkKICAgICAgICAgLy8gd2lsbCBub3QgaGF2ZSBiZWVuIHVwZGF0ZWQuIEl0
IHNob3VsZCBiZSBzZXQgdG8gMCBkdWUgdG8gdGhlIGFuaW1hdGlvbi4KQEAgLTc4OCw3ICs3ODgs
NyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gVGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIGNh
bGxlZCBiZWZvcmUgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycy4KLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbEFuaW1hdGVMYXllcnMoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVl
SG9zdEltcGwsIGRvdWJsZSBtb25vdG9uaWNUaW1lKQorICAgIHZpcnR1YWwgdm9pZCB3aWxsQW5p
bWF0ZUxheWVycyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCwgZG91Ymxl
IG1vbm90b25pY1RpbWUpIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX2xheWVyVHJlZUhvc3RJ
bXBsID0gbGF5ZXJUcmVlSG9zdEltcGw7CiAgICAgfQpAQCAtODI5LDcgKzgyOSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcG9zdEFkZEluc3RhbnRBbmltYXRpb25Ub01haW5UaHJlYWQoKTsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uRmluaXNoZWQoZG91YmxlIHRpbWUp
CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvbkZpbmlzaGVkKGRvdWJsZSB0aW1lKSBP
VkVSUklERQogICAgIHsKICAgICAgICAgZW5kVGVzdCgpOwogICAgIH0KQEAgLTg2MCw3ICs4NjAs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKQorICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgTGF5ZXJDaHJvbWl1bSogcm9vdCA9IG1fbGF5
ZXJUcmVlSG9zdC0+cm9vdExheWVyKCk7CiAgICAgICAgIGlmICghbV9sYXllclRyZWVIb3N0LT5j
b21taXROdW1iZXIoKSkKQEAgLTg3Myw3ICs4NzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCogaW1wbCkKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NM
YXllclRyZWVIb3N0SW1wbCogaW1wbCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIENDTGF5ZXJJ
bXBsKiByb290ID0gaW1wbC0+cm9vdExheWVyKCk7CiAgICAgICAgIEVYUEVDVF9FUShyb290LT5z
Y3JvbGxEZWx0YSgpLCBJbnRTaXplKCkpOwpAQCAtODkzLDcgKzg5Myw3IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNv
bnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBzY2FsZSkKKyAgICB2aXJ0dWFsIHZvaWQg
YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgc2Nh
bGUpIE9WRVJSSURFCiAgICAgewogICAgICAgICBJbnRQb2ludCBwb3NpdGlvbiA9IG1fbGF5ZXJU
cmVlSG9zdC0+cm9vdExheWVyKCktPnNjcm9sbFBvc2l0aW9uKCk7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+cm9vdExheWVyKCktPnNldFNjcm9sbFBvc2l0aW9uKHBvc2l0aW9uICsgc2Nyb2xs
RGVsdGEpOwpAQCAtOTMyLDcgKzkzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgcG9zdFNldE5lZWRz
Q29tbWl0VG9NYWluVGhyZWFkKCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGJlZ2luQ29t
bWl0T25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHZpcnR1YWwgdm9p
ZCBiZWdpbkNvbW1pdE9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkgT1ZFUlJJ
REUKICAgICB7CiAgICAgICAgIExheWVyQ2hyb21pdW0qIHJvb3QgPSBtX2xheWVyVHJlZUhvc3Qt
PnJvb3RMYXllcigpOwogICAgICAgICBpZiAoIWltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkpCkBA
IC05NDMsNyArOTQzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgRVhQRUNUX0VRKHJvb3QtPnNj
cm9sbFBvc2l0aW9uKCksIG1faW5pdGlhbFNjcm9sbCArIG1fc2Nyb2xsQW1vdW50ICsgbV9zY3Jv
bGxBbW91bnQpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVh
ZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJz
T25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsKICAg
ICAgICAgQ0NMYXllckltcGwqIHJvb3QgPSBpbXBsLT5yb290TGF5ZXIoKTsKICAgICAgICAgcm9v
dC0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKQEAgLTk3NCw3ICs5NzQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25z
dCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgc2NhbGUpCisgICAgdmlydHVhbCB2b2lkIGFw
cGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHNjYWxl
KSBPVkVSUklERQogICAgIHsKICAgICAgICAgSW50UG9pbnQgcG9zaXRpb24gPSBtX2xheWVyVHJl
ZUhvc3QtPnJvb3RMYXllcigpLT5zY3JvbGxQb3NpdGlvbigpOwogICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPnJvb3RMYXllcigpLT5zZXRTY3JvbGxQb3NpdGlvbihwb3NpdGlvbiArIHNjcm9sbERl
bHRhKTsKQEAgLTEwMTEsNyArMTAxMSw3IEBAIHB1YmxpYzoKICAgICAgICAgcG9zdFNldE5lZWRz
Q29tbWl0VG9NYWluVGhyZWFkKCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbW1pdENv
bXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHZpcnR1YWwg
dm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkg
T1ZFUlJJREUKICAgICB7CiAgICAgICAgIEVYUEVDVF9FUShJbnRTaXplKDIwLCAyMCksIGltcGwt
PmxheW91dFZpZXdwb3J0U2l6ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKFNLX0NvbG9yR1JBWSwg
aW1wbC0+YmFja2dyb3VuZENvbG9yKCkpOwpAQCAtMTA1Miw3ICsxMDUyLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgdGVzdC0+bGF5ZXJUcmVlSG9zdCgpLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlv
bihJbnRTaXplKCksIGZhbHNlLCAxLjI1LCAwKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkg
T1ZFUlJJREUKICAgICB7CiAgICAgICAgIGltcGwtPnJvb3RMYXllcigpLT5zZXRTY3JvbGxhYmxl
KHRydWUpOwogICAgICAgICBpbXBsLT5yb290TGF5ZXIoKS0+c2V0U2Nyb2xsUG9zaXRpb24oSW50
UG9pbnQoKSk7CkBAIC0xMDY1LDE0ICsxMDY1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAg
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNpemUm
IHNjcm9sbERlbHRhLCBmbG9hdCBzY2FsZSkKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxB
bmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgc2NhbGUpIE9WRVJSSURF
CiAgICAgewogICAgICAgICBJbnRQb2ludCBwb3NpdGlvbiA9IG1fbGF5ZXJUcmVlSG9zdC0+cm9v
dExheWVyKCktPnNjcm9sbFBvc2l0aW9uKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cm9v
dExheWVyKCktPnNldFNjcm9sbFBvc2l0aW9uKHBvc2l0aW9uICsgc2Nyb2xsRGVsdGEpOwogICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhzY2FsZSwg
MC41LCAyKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhy
ZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENv
bXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAg
IHsKICAgICAgICAgaW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRhcygpOwogICAgICAgICAvLyBXZSBn
ZXQgb25lIGNvbW1pdCBiZWZvcmUgdGhlIGZpcnN0IGRyYXcsIGFuZCB0aGUgYW5pbWF0aW9uIGRv
ZXNuJ3QgaGFwcGVuIHVudGlsIHRoZSBzZWNvbmQgZHJhdy4KQEAgLTExMTEsNyArMTExMSw3IEBA
IHB1YmxpYzoKICAgICAgICAgcG9zdFNldFZpc2libGVUb01haW5UaHJlYWQodHJ1ZSk7IC8vIFRy
aWdnZXJzIHRoZSByZWRyYXcuCiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNP
bkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgdmlydHVhbCB2b2lkIGRy
YXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpIE9WRVJSSURFCiAg
ICAgewogICAgICAgICBFWFBFQ1RfVFJVRShpbXBsLT52aXNpYmxlKCkpOwogICAgICAgICArK21f
bnVtRHJhd3M7CkBAIC0xMTQ1LDggKzExNDUsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGVzdC0+
bGF5ZXJUcmVlSG9zdCgpLT5yb290TGF5ZXIoKS0+c2V0T3BhY2l0eSgwKTsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgcHJlc2VydmVzM0QoKSB7IHJldHVybiBmYWxzZTsgfQotCiBwcml2YXRl
OgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3QqIG1fdGVzdDsKIH07CkBAIC0xMTk0LDcgKzExOTIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXll
clRyZWVIb3N0SW1wbCopCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25DQ1RocmVh
ZChDQ0xheWVyVHJlZUhvc3RJbXBsKikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGVuZFRlc3Qo
KTsKICAgICB9CkBAIC0xMjU2LDcgKzEyNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0Um9vdExheWVyKG1fcm9vdExheWVyKTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwp
CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhv
c3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsKICAgICAgICAgLy8gR2V0IGFjY2VzcyB0byBw
cm90ZWN0ZWQgbWV0aG9kcy4KICAgICAgICAgTW9ja0xheWVyVHJlZUhvc3RJbXBsKiBtb2NrSW1w
bCA9IHN0YXRpY19jYXN0PE1vY2tMYXllclRyZWVIb3N0SW1wbCo+KGltcGwpOwpAQCAtMTM1MCw3
ICsxMzQ4LDcgQEAgcHVibGljOgogICAgICAgICBwb3N0U2V0TmVlZHNSZWRyYXdUb01haW5UaHJl
YWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFk
KENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBs
ZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsK
ICAgICAgICAgQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJh
Y2tpbmcqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29u
dGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyo+KGltcGwtPmNvbnRleHQoKS0+Y29udGV4dDNEKCkp
OwogCkBAIC0xMzg0LDcgKzEzODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCog
aW1wbCkKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCogaW1wbCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIENvbXBvc2l0b3JGYWtlV2Vi
R3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcq
PihpbXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpKTsKIApAQCAtMTM5OSw3ICsxMzk3LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgZW5kVGVzdCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKQorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERQogICAgIHsKICAg
ICAgICAgbV9sYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgfQpAQCAtMTQ1NCw3ICsxNDUy
LDcgQEAgcHVibGljOgogICAgICAgICBwb3N0U2V0TmVlZHNSZWRyYXdUb01haW5UaHJlYWQoKTsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5
ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25D
Q1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsKICAgICAg
ICAgQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcq
IGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNE
V2l0aFRleHR1cmVUcmFja2luZyo+KGltcGwtPmNvbnRleHQoKS0+Y29udGV4dDNEKCkpOwogCkBA
IC0xNTA2LDcgKzE1MDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1w
bCogaW1wbCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIENvbXBvc2l0b3JGYWtlV2ViR3JhcGhp
Y3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q29t
cG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqPihpbXBs
LT5jb250ZXh0KCktPmNvbnRleHQzRCgpKTsKIApAQCAtMTUyNSw3ICsxNTIzLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgZW5kVGVzdCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKQorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERQogICAgIHsKICAgICAgICAg
c3dpdGNoIChtX251bUNvbW1pdHMrKykgewogICAgICAgICBjYXNlIDA6CkBAIC0xOTYwLDEyICsx
OTU4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFk
KCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpCisg
ICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIE9WRVJSSURFCiAgICAgewog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmxvc2VDb250ZXh0KDEpOwogICAgIH0KIAotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNyZWF0ZU91dHB1dFN1cmZhY2UoYm9vbCBzdWNjZWVkZWQpCisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShib29sIHN1Y2NlZWRlZCkgT1ZF
UlJJREUKICAgICB7CiAgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2NlZWRlZCk7CiAgICAgICAgIGVu
ZFRlc3QoKTsKQEAgLTE5OTQsMTIgKzE5OTIsMTIgQEAgcHVibGljOgogICAgICAgICBwb3N0U2V0
TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q29tbWl0QW5kRHJhd0ZyYW1lKCkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0Zy
YW1lKCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+bG9zZUNvbnRl
eHQoMTApOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZU91dHB1dFN1cmZh
Y2UoYm9vbCBzdWNjZWVkZWQpCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlT3V0cHV0U3Vy
ZmFjZShib29sIHN1Y2NlZWRlZCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIEVYUEVDVF9GQUxT
RShzdWNjZWVkZWQpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaEFsbFJlbmRlcmlu
ZygpOwpAQCAtMjAyOSw3ICsyMDI3LDcgQEAgcHVibGljOgogICAgICAgICBwb3N0U2V0TmVlZHND
b21taXRUb01haW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVy
c09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkgT1ZFUlJJREUK
ICAgICB7CiAgICAgICAgIENDTGF5ZXJJbXBsKiByb290ID0gaW1wbC0+cm9vdExheWVyKCk7CiAg
ICAgICAgIHJvb3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKEludFNpemUoMTAwLCAxMDApKTsKQEAg
LTIwNTEsNyArMjA0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgcm9vdC0+c2Nyb2xsQnkobV9zY3Jv
bGxBbW91bnQpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxl
KGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBzY2FsZSkKKyAgICB2aXJ0dWFsIHZv
aWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQg
c2NhbGUpIE9WRVJSSURFCiAgICAgewogICAgICAgICBJbnRQb2ludCBwb3NpdGlvbiA9IG1fbGF5
ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPnNjcm9sbFBvc2l0aW9uKCk7CiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPnNldFNjcm9sbFBvc2l0aW9uKHBvc2l0aW9uICsgc2Ny
b2xsRGVsdGEpOwpAQCAtMjA4Myw3ICsyMDgxLDcgQEAgcHVibGljOgogICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnNldE5lZWRzUmVkcmF3KCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRp
ZENvbW1pdEFuZERyYXdGcmFtZSgpCisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdG
cmFtZSgpIE9WRVJSSURFCiAgICAgewogICAgICAgICBpZiAobV9vbmNlKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMjEwMiw3ICsyMTAwLDcgQEAgcHVibGljOgogICAgICAgICBlbmRUZXN0KCk7
CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJU
cmVlSG9zdEltcGwqIGltcGwpCisgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFk
KENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpIE9WRVJSSURFCiAgICAgewogICAgICAgICBMb2Nr
ZXI8TXV0ZXg+IGxvY2sobV9tdXRleCk7CiAgICAgICAgICsrbV9kcmF3Q291bnQ7CkBAIC0yMTQ4
LDcgKzIxNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQWRkQW5pbWF0aW9uKCkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQW5p
bWF0aW9uKCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1fYWRkZWRBbmltYXRpb24gPSB0cnVl
OwogICAgIH0KQEAgLTIyOTgsNyArMjI5Niw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5zZXRSb290TGF5ZXIobV9yb290TGF5ZXIpOwogICAgIH0KIAotICAgIHZpcnR1YWwg
dm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1w
bCogaG9zdEltcGwpIE9WRVJSSURFCiAgICAgewogICAgICAgICBDQ1JlbmRlcmVyKiByZW5kZXJl
ciA9IGhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCk7CiAgICAgICAgIHVuc2lnbmVkIHN1cmZhY2Ux
UmVuZGVyUGFzc0lkID0gaG9zdEltcGwtPnJvb3RMYXllcigpLT5jaGlsZHJlbigpWzBdLT5pZCgp
OwpAQCAtMjQwOSw3ICsyNDA3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IEV2aWN0aW9uVGVzdExheWVySW1wbChpZCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5Fdmlj
dGlvblRlc3RMYXllckltcGwoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NR
dWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVz
KQorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFCiAgICAgewogICAg
ICAgICBBU1NFUlRfVFJVRShtX2hhc1RleHR1cmUpOwogICAgICAgICBBU1NFUlRfTkUoMHUsIGxh
eWVyVHJlZUhvc3RJbXBsKCktPnJlc291cmNlUHJvdmlkZXIoKS0+bnVtUmVzb3VyY2VzKCkpOwpA
QCAtMjUxNSw3ICsyNTEzLDcgQEAgcHVibGljOgogICAgIC8vIHRoZSBiZWdpbkZyYW1lL2NvbW1p
dCBwYWlyLgogICAgIC8vIENvbW1pdHMgNSs2IHRlc3QgdGhlIHBhdGggd2hlcmUgYW4gZXZpY3Rp
b24gaGFwcGVucyBkdXJpbmcgdGhlIGV2aWN0aW9uCiAgICAgLy8gcmVjb3ZlcnkgcGF0aC4KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIHN3aXRjaCAo
bV9udW1Db21taXRzKSB7CiAgICAgICAgIGNhc2UgMToKQEAgLTI1NDksNyArMjU0Nyw3IEBAIHB1
YmxpYzoKICAgICAgICAgbV9pbXBsRm9yRXZpY3RUZXh0dXJlcyA9IGltcGw7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGxheW91dCgpCisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJS
SURFCiAgICAgewogICAgICAgICArK21fbnVtQ29tbWl0czsKICAgICAgICAgc3dpdGNoIChtX251
bUNvbW1pdHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NU
aHJlYWRlZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVk
VGVzdC5jcHAKaW5kZXggY2RlODhmOGU2NzU4YTg3YzM3YWE3ZjdkMmYwODQ5MWQ3OWRmYzZjNS4u
MDQyOTZiMzliODBlMzZkYzZjYmI2MjA0NGM3OTI2MTZkMjNhNDQwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5jcHAKQEAgLTIwOCw5ICsyMDgs
OSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmlt
YXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKSBPVkVSUklERQorICAgIHZpcnR1YWwgdm9pZCBh
bmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lKSBPVkVSUklERQogICAgIHsKLSAgICAgICAgbV90
ZXN0SG9va3MtPnVwZGF0ZUFuaW1hdGlvbnMobW9ub3RvbmljVGltZSk7CisgICAgICAgIG1fdGVz
dEhvb2tzLT5hbmltYXRlKG1vbm90b25pY1RpbWUpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKSBPVkVSUklERQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1RocmVhZGVkVGVzdC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Ro
cmVhZGVkVGVzdC5oCmluZGV4IDBmODdkZTFmNWU2Yjc4NGZhOGMwNDg1OWU0Y2ZhZDY4ZTcxYmFi
YzIuLmVlNWJmMzExNDhkOTAyM2U1NGU1ZTU5ZWU4ODQwMmJiMjEyNDliYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmgKQEAgLTU2LDcgKzU2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdEltcGwqLCBkb3VibGUgbW9ub3RvbmljVGltZSkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxBbmltYXRlTGF5ZXJzKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGwqLCBkb3Vi
bGUgbW9ub3RvbmljVGltZSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2Nh
bGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGZsb2F0KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkgeyB9CisgICAgdmlydHVhbCB2
b2lkIGFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBs
YXlvdXQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVPdXRwdXRTdXJmYWNlKGJv
b2wgc3VjY2VlZGVkKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQW5pbWF0aW9uKCkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0xheWVyVHJl
ZUhvc3RDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJU
cmVlSG9zdENsaWVudC5oCmluZGV4IGI4NzMwNWFmZWI5NjAyM2RhMDAxZGIyNDY5NjNmYWJjMWZj
YzcwNGEuLjkwMDMwODhhNTg0NjgwZmJlZGRjMDhhNDdhYWRlZmJjN2Y5NzA1MDQgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9z
dENsaWVudC5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEZha2VDQ0xheWVyVHJlZUhvc3RDbGll
bnQgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbEJlZ2luRnJhbWUoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
QmVnaW5GcmFtZSgpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRp
b25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkgT1ZFUlJJREUgeyB9CisgICAgdmly
dHVhbCB2b2lkIGFuaW1hdGUoZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKSBPVkVSUklE
RSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZs
b2F0IHBhZ2VTY2FsZSkgT1ZFUlJJREUgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDI2
NjI3ZWM4ZDdhNWYzOWVjNWU3MmFjMDg2ZWI3NWYzMDY1NTI1ZTEuLmUwODU2ZTA2YTE4ZjFjNGQz
NDQ5ZDgwMjM4YmJkYjRmMDY3YjVkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNjYsMTQg
KzY2LDE0IEBAIHB1YmxpYzoKICAgICAgICAgV2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsK
ICAgICAgICAgbV9ncmFwaGljc0xheWVyID0gc3RhdGljX3BvaW50ZXJfY2FzdDxHcmFwaGljc0xh
eWVyQ2hyb21pdW0+KEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgmbV9jbGllbnQpKTsKICAgICAgICAg
bV9wbGF0Zm9ybUxheWVyID0gbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCk7Ci0gICAg
ICAgIG1fbGF5ZXJUcmVlVmlldy5pbml0aWFsaXplKCZtX2xheWVyVHJlZVZpZXdDbGllbnQsICpt
X3BsYXRmb3JtTGF5ZXIsIFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzKCkpOwotICAgICAgICBt
X2xheWVyVHJlZVZpZXcuc2V0Vmlld3BvcnRTaXplKFdlYlNpemUoMSwgMSksIFdlYlNpemUoMSwg
MSkpOworICAgICAgICBBU1NFUlRfVFJVRShtX2xheWVyVHJlZVZpZXcgPSBhZG9wdFB0cihXZWJM
YXllclRyZWVWaWV3OjpjcmVhdGUoJm1fbGF5ZXJUcmVlVmlld0NsaWVudCwgKm1fcGxhdGZvcm1M
YXllciwgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MoKSkpKTsKKyAgICAgICAgbV9sYXllclRy
ZWVWaWV3LT5zZXRWaWV3cG9ydFNpemUoV2ViU2l6ZSgxLCAxKSwgV2ViU2l6ZSgxLCAxKSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckNocm9taXVtVGVzdCgpCiAgICAgewog
ICAgICAgICBtX2dyYXBoaWNzTGF5ZXIuY2xlYXIoKTsKLSAgICAgICAgbV9sYXllclRyZWVWaWV3
LnJlc2V0KCk7CisgICAgICAgIG1fbGF5ZXJUcmVlVmlldy5jbGVhcigpOwogICAgICAgICBXZWJD
b21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0KIApAQCAtODgsNyArODgsNyBAQCBwcm90ZWN0
ZWQ6CiAKIHByaXZhdGU6CiAgICAgTW9ja1dlYkxheWVyVHJlZVZpZXdDbGllbnQgbV9sYXllclRy
ZWVWaWV3Q2xpZW50OwotICAgIFdlYkxheWVyVHJlZVZpZXcgbV9sYXllclRyZWVWaWV3OworICAg
IE93blB0cjxXZWJMYXllclRyZWVWaWV3PiBtX2xheWVyVHJlZVZpZXc7CiAgICAgTW9ja0dyYXBo
aWNzTGF5ZXJDbGllbnQgbV9jbGllbnQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAKaW5kZXggOWI4ZTU4Y2ExMDBlNzdkOTAzNjViZDQ2Mjhi
MWRlMzgxMDkzNzQzMi4uODBhMTAzMWZiNjJjYTc2MjMwMDM0MDU1ZWE3YWQ0ZDNiN2JkNzQ5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUZXN0LmNwcApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRl
eHQzRC5oIgogI2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgorI2luY2x1ZGUgIldlYkxheWVyVHJl
ZVZpZXdUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3IuaD4KICNp
bmNsdWRlIDxwdWJsaWMvV2ViQ29udGVudExheWVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkNv
bnRlbnRMYXllckNsaWVudC5oPgpAQCAtNDksMjMgKzUwLDYgQEAgdXNpbmcgdGVzdGluZzo6XzsK
IAogbmFtZXNwYWNlIHsKIAotY2xhc3MgTW9ja1dlYkxheWVyVHJlZVZpZXdDbGllbnQgOiBwdWJs
aWMgV2ViTGF5ZXJUcmVlVmlld0NsaWVudCB7Ci1wdWJsaWM6Ci0gICAgTU9DS19NRVRIT0QwKHNj
aGVkdWxlQ29tcG9zaXRlLCB2b2lkKCkpOwotCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1h
dGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQmVn
aW5GcmFtZSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBXZWJTaXplJiBzY3JvbGxEZWx0YSwgZmxv
YXQgc2NhbGVGYWN0b3IpIHsgfQotICAgIHZpcnR1YWwgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNy
ZWF0ZUNvbnRleHQzRCgpIHsgcmV0dXJuIENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0
M0Q6OmNyZWF0ZShXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcygpKS5sZWFrUHRyKCk7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmViaW5kR3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2Vz
cykgeyB9Ci0gICAgdmlydHVhbCBXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZSogY3JlYXRlT3V0
cHV0U3VyZmFjZSgpIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVP
dXRwdXRTdXJmYWNlKGJvb2wgc3VjY2VzcykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxDb21t
aXQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKSB7IH0KLX07Ci0KIGNsYXNz
IE1vY2tXZWJDb250ZW50TGF5ZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29udGVudExheWVyQ2xpZW50
IHsKIHB1YmxpYzoKICAgICBNT0NLX01FVEhPRDMocGFpbnRDb250ZW50cywgdm9pZChXZWJDYW52
YXMqLCBjb25zdCBXZWJSZWN0JiBjbGlwLCBXZWJGbG9hdFJlY3QmIG9wYXF1ZSkpOwpAQCAtNzks
NyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlh
bGl6ZSgwKTsKICAgICAgICAgbV9yb290TGF5ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRl
KCkpOwogICAgICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSku
VGltZXMoQW55TnVtYmVyKCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShtX3ZpZXcuaW5pdGlhbGl6
ZSgmbV9jbGllbnQsICptX3Jvb3RMYXllciwgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MoKSkp
OworICAgICAgICBFWFBFQ1RfVFJVRShtX3ZpZXcgPSBhZG9wdFB0cihXZWJMYXllclRyZWVWaWV3
OjpjcmVhdGUoJm1fY2xpZW50LCAqbV9yb290TGF5ZXIsIFdlYkxheWVyVHJlZVZpZXc6OlNldHRp
bmdzKCkpKSk7CiAgICAgICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2Ns
aWVudCk7CiAgICAgfQogCkBAIC04NywxNiArNzEsMTUgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgLy8gV2UgbWF5IGdldCBhbnkgbnVtYmVyIG9mIHNjaGVkdWxlQ29tcG9zaXRlIGNhbGxzIGR1
cmluZyBzaHV0ZG93bi4KICAgICAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29t
cG9zaXRlKCkpLlRpbWVzKEFueU51bWJlcigpKTsKLSAgICAgICAgbV92aWV3LnNldFJvb3RMYXll
cigwKTsKICAgICAgICAgbV9yb290TGF5ZXIuY2xlYXIoKTsKLSAgICAgICAgbV92aWV3LnJlc2V0
KCk7CisgICAgICAgIG1fdmlldy5jbGVhcigpOwogICAgICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0
b3I6OnNodXRkb3duKCk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgTW9ja1dlYkxheWVyVHJl
ZVZpZXdDbGllbnQgbV9jbGllbnQ7CiAgICAgT3duUHRyPFdlYkxheWVyPiBtX3Jvb3RMYXllcjsK
LSAgICBXZWJMYXllclRyZWVWaWV3IG1fdmlldzsKKyAgICBPd25QdHI8V2ViTGF5ZXJUcmVlVmll
dz4gbV92aWV3OwogfTsKIAogLy8gVGVzdHMgdGhhdCB0aGUgY2xpZW50IGdldHMgY2FsbGVkIHRv
IGFzayBmb3IgYSBjb21wb3NpdGUgaWYgd2UgY2hhbmdlIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcAppbmRleCAxYzE2
MDJjMjM0MTY5OWQ5ODY1ZTgzOTM5YWQxMDRkMGIzYjEwOWRhLi42OTE1NGY3YTVjYTZhMjJhOWFm
YzVmNThjZjUzMjAwM2QzM2NlMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcApAQCAtNjEsMzAgKzYxLDI5IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIGluaXRpYWxpemVDb21wb3NpdG9yKCk7CiAgICAgICAgIG1f
cm9vdExheWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKLSAgICAgICAgRVhQRUNU
X1RSVUUobV92aWV3LmluaXRpYWxpemUoY2xpZW50KCksICptX3Jvb3RMYXllciwgV2ViTGF5ZXJU
cmVlVmlldzo6U2V0dGluZ3MoKSkpOwotICAgICAgICBtX3ZpZXcuc2V0U3VyZmFjZVJlYWR5KCk7
CisgICAgICAgIEFTU0VSVF9UUlVFKG1fdmlldyA9IGFkb3B0UHRyKFdlYkxheWVyVHJlZVZpZXc6
OmNyZWF0ZShjbGllbnQoKSwgKm1fcm9vdExheWVyLCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5n
cygpKSkpOworICAgICAgICBtX3ZpZXctPnNldFN1cmZhY2VSZWFkeSgpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCiAgICAgewogICAgICAgICBNb2NrOjpWZXJpZnlBbmRD
bGVhckV4cGVjdGF0aW9ucyhjbGllbnQoKSk7CiAKLSAgICAgICAgbV92aWV3LnNldFJvb3RMYXll
cigwKTsKICAgICAgICAgbV9yb290TGF5ZXIuY2xlYXIoKTsKLSAgICAgICAgbV92aWV3LnJlc2V0
KCk7CisgICAgICAgIG1fdmlldy5jbGVhcigpOwogICAgICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0
b3I6OnNodXRkb3duKCk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgT3duUHRyPFdlYkxheWVy
PiBtX3Jvb3RMYXllcjsKLSAgICBXZWJMYXllclRyZWVWaWV3IG1fdmlldzsKKyAgICBPd25QdHI8
V2ViTGF5ZXJUcmVlVmlldz4gbV92aWV3OwogfTsKIAogY2xhc3MgV2ViTGF5ZXJUcmVlVmlld1Np
bmdsZVRocmVhZFRlc3QgOiBwdWJsaWMgV2ViTGF5ZXJUcmVlVmlld1Rlc3RCYXNlIHsKIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGNvbXBvc2l0ZSgpCiAgICAgewotICAgICAgICBtX3ZpZXcuY29tcG9z
aXRlKCk7CisgICAgICAgIG1fdmlldy0+Y29tcG9zaXRlKCk7CiAgICAgfQogCiAgICAgdmlydHVh
bCB2b2lkIGluaXRpYWxpemVDb21wb3NpdG9yKCkgT1ZFUlJJREUKQEAgLTE1NywxMiArMTU2LDEy
IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgY29tcG9zaXRlKCkKICAgICB7Ci0gICAgICAgIG1f
dmlldy5zZXROZWVkc1JlZHJhdygpOworICAgICAgICBtX3ZpZXctPnNldE5lZWRzUmVkcmF3KCk7
CiAgICAgICAgIFJlZlB0cjxDYW5jZWxhYmxlVGFza1dyYXBwZXI+IHRpbWVvdXRUYXNrID0gYWRv
cHRSZWYobmV3IENhbmNlbGFibGVUYXNrV3JhcHBlcihhZG9wdFB0cihuZXcgVGltZW91dFRhc2so
KSkpKTsKICAgICAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jdXJyZW50VGhyZWFk
KCktPnBvc3REZWxheWVkVGFzayh0aW1lb3V0VGFzay0+Y3JlYXRlVGFzaygpLCA1MDAwKTsKICAg
ICAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jdXJyZW50VGhyZWFkKCktPmVudGVy
UnVuTG9vcCgpOwogICAgICAgICB0aW1lb3V0VGFzay0+Y2FuY2VsKCk7Ci0gICAgICAgIG1fdmll
dy5maW5pc2hBbGxSZW5kZXJpbmcoKTsKKyAgICAgICAgbV92aWV3LT5maW5pc2hBbGxSZW5kZXJp
bmcoKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUNvbXBvc2l0b3IoKSBP
VkVSUklERQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXll
clRyZWVWaWV3VGVzdENvbW1vbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJM
YXllclRyZWVWaWV3VGVzdENvbW1vbi5oCmluZGV4IGUyYTYyYjZhMzhkYTNmNDc4NmUyNWNlZDE5
MzdmODc0YzFmZjkyOTkuLjQ4MDcxZjk1MTFlYzI0ZmE5YWU3NGU4ZWVkMzEyYmViZDY2OWUyNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUcmVlVmll
d1Rlc3RDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVy
VHJlZVZpZXdUZXN0Q29tbW9uLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50IDogcHVibGljIFdlYkxheWVyVHJl
ZVZpZXdDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0
ZSgpIE9WRVJSSURFIHsgfQorICAgIE1PQ0tfTUVUSE9EMChzY2hlZHVsZUNvbXBvc2l0ZSwgdm9p
ZCgpKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdp
blRpbWUpIE9WRVJSSURFIHsgfQogICAgIE1PQ0tfTUVUSE9EMCh3aWxsQmVnaW5GcmFtZSwgdm9p
ZCgpKTsKICAgICBNT0NLX01FVEhPRDAoZGlkQmVnaW5GcmFtZSwgdm9pZCgpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmMGM3MWZhNzE5MzBj
ZDc4NThkZGQzZDIxMDdhMDQ3MjVkYWYzMjJmLi5jY2Y3NjZkMzczODg5MGM0YjIxNDBmZWVkMDJi
MWJkMDBiMzI2OTkzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDgtMjMgIEphbWVzIFJvYmluc29uICA8amFt
ZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENvbnZlcnQgV2ViTGF5ZXJU
cmVlVmlldyBpbnRlcmZhY2UgaW50byBwdXJlIHZpcnR1YWwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0ODY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlcyBEdW1wUmVuZGVyVHJlZSdzIFdlYlZp
ZXdIb3N0IHRvIHZlbmQgYSBXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZSBzbyBEdW1wUmVuZGVy
VHJlZSBjYW4gcnVuIGNvbXBvc2l0aW5nCisgICAgICAgIHRlc3RzLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6Y3JlYXRl
T3V0cHV0U3VyZmFjZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuaDoKKyAgICAgICAgKFdlYlZpZXdIb3N0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdE91dHB1dFN1cmZhY2UuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oLgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlOjpXZWJW
aWV3SG9zdE91dHB1dFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SG9zdE91dHB1
dFN1cmZhY2U6On5XZWJWaWV3SG9zdE91dHB1dFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SG9zdE91dHB1dFN1cmZhY2U6OmJpbmRUb0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdIb3N0T3V0cHV0U3VyZmFjZTo6Y2FwYWJpbGl0aWVzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlOjpjb250ZXh0M0QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SG9zdE91dHB1dFN1cmZhY2U6OnNlbmRGcmFtZVRvUGFyZW50Q29tcG9zaXRvcik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3RPdXRwdXRTdXJm
YWNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJl
ZVZpZXdJbXBsLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViVmlld0hvc3RPdXRw
dXRTdXJmYWNlKToKKwogMjAxMi0wOC0yMiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBCYXNlbGluZSBvcHRpbWl6ZXIgc2hvdWxkIHRyeSB0byBvcHRpbWl6
ZSBwZXItcG9ydCBpZiBnbG9iYWwgb3B0aW1pemF0aW9uIGZhaWxzCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCAxNWNkOTQ0NDEyMWYwYTQ0MDdjNDFhMzg0NGUx
MjVlM2MzYmU0NzE1Li43OTE5M2I1M2VjNzlkYzI5MGRjYzhiMjc0M2ZjNmNmOWU5MjYyNjJmIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKQEAgLTU0LDYgKzU0LDgg
QEAKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vV2ViVmlld0hvc3QuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3RPdXRw
dXRTdXJmYWNlLmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3RPdXRwdXRT
dXJmYWNlLmgnLAogICAgICAgICBdLAogICAgICAgICAndGVzdF9ydW5uZXJfZmlsZXMnOiBbCiAg
ICAgICAgICAgICAnRHVtcFJlbmRlclRyZWUuaCcsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggM2FiOGE4NjM5OWVhMGRlNTFkZjEyZDY2Nzg4
Y2NhZGNhZjcwNDFjYy4uZmVkY2I3MzUyZDYyNmJjNjk3OTU2NzY5YTdhNGRmOTE3N2M4OTc4NiAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAt
MzksMTQgKzM5LDEyIEBACiAjaW5jbHVkZSAiVGVzdE5hdmlnYXRpb25Db250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiVGVzdFNoZWxsLmgiCiAjaW5jbHVkZSAiVGVzdFdlYlBsdWdpbi5oIgotI2luY2x1
ZGUgInBsYXRmb3JtL1dlYkNTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJDb25zb2xlTWVzc2FnZS5o
IgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51RGF0YS5oIgogI2luY2x1ZGUgIldlYkRPTU1lc3Nh
Z2VFdmVudC5oIgogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2UuaCIKICNpbmNsdWRlICJXZWJEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgotI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgog
I2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25DbGllbnRNb2Nr
LmgiCkBAIC02MCwyMiArNTgsMjYgQEAKICNpbmNsdWRlICJXZWJQb3B1cFR5cGUuaCIKICNpbmNs
dWRlICJXZWJQcmludFBhcmFtcy5oIgogI2luY2x1ZGUgIldlYlJhbmdlLmgiCi0jaW5jbHVkZSAi
cGxhdGZvcm0vV2ViUmVjdC5oIgogI2luY2x1ZGUgIldlYlNjcmVlbkluZm8uaCIKLSNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJTaXplLmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFjZS5oIgogI2luY2x1ZGUg
IldlYlRleHRDaGVja2luZ0NvbXBsZXRpb24uaCIKICNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdS
ZXN1bHQuaCIKICNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgiCi0jaW5jbHVkZSAi
cGxhdGZvcm0vV2ViVGhyZWFkLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMUmVxdWVzdC5o
IgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTFJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiV2ViVmll
dy5oIgorI2luY2x1ZGUgIldlYlZpZXdIb3N0T3V0cHV0U3VyZmFjZS5oIgogI2luY2x1ZGUgIldl
YldpbmRvd0ZlYXR1cmVzLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiCiAjaW5jbHVkZSAic2tpYS9leHQvcGxhdGZvcm1fY2FudmFzLmgiCiAjaW5jbHVk
ZSAid2Via2l0L3N1cHBvcnQvdGVzdF9tZWRpYV9zdHJlYW1fY2xpZW50LmgiCiAjaW5jbHVkZSAi
d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ1N0
cmluZy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZS5oPgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJEcmFnRGF0YS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0
Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVGhy
ZWFkLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlVSTFJlcXVlc3QuaD4KKyNpbmNsdWRlIDxwdWJs
aWMvV2ViVVJMUmVzcG9uc2UuaD4KIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTI4NSwxMSArMjg3LDExIEBAIFdlYlN0b3JhZ2VO
YW1lc3BhY2UqIFdlYlZpZXdIb3N0OjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNp
Z25lZCBxdW90YSkKICAgICByZXR1cm4gd2Via2l0X3N1cHBvcnQ6OkNyZWF0ZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKHF1b3RhKTsKIH0KIAotV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCog
V2ViVmlld0hvc3Q6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dDNEKGNvbnN0IFdlYktpdDo6V2ViR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCitXZWJLaXQ6OldlYkNvbXBv
c2l0b3JPdXRwdXRTdXJmYWNlKiBXZWJWaWV3SG9zdDo6Y3JlYXRlT3V0cHV0U3VyZmFjZSgpCiB7
CiAgICAgaWYgKCF3ZWJWaWV3KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiB3ZWJr
aXRfc3VwcG9ydDo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0M0QoYXR0cmlidXRlcywgd2ViVmlldygp
KTsKKyAgICByZXR1cm4gbmV3IFdlYktpdDo6V2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlKGFkb3B0
UHRyKHdlYmtpdF9zdXBwb3J0OjpDcmVhdGVHcmFwaGljc0NvbnRleHQzRChXZWJLaXQ6OldlYkdy
YXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKCksIHdlYlZpZXcoKSkpKTsKIH0KIAogdm9pZCBX
ZWJWaWV3SG9zdDo6ZGlkQWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBXZWJDb25zb2xlTWVzc2Fn
ZSYgbWVzc2FnZSwgY29uc3QgV2ViU3RyaW5nJiBzb3VyY2VOYW1lLCB1bnNpZ25lZCBzb3VyY2VM
aW5lKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXgg
OTRlZDRjZDhkNjQ0ZWJjNDgxOTkwOWZiYzM5MmY5MzNkOWVhZTI2ZC4uYjk3M2Q5ZTUwMmM5ODEw
MWVhY2FjNjg5MjI4NzhjY2MxZTRiZDRlMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5oCkBAIC0xNDksNyArMTQ5LDcgQEAgY2xhc3MgV2ViVmlld0hvc3Qg
OiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNs
aWVudCwKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViV2lkZ2V0KiBjcmVhdGVQb3B1cE1lbnUoV2Vi
S2l0OjpXZWJQb3B1cFR5cGUpOwogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJXaWRnZXQqIGNyZWF0
ZVBvcHVwTWVudShjb25zdCBXZWJLaXQ6OldlYlBvcHVwTWVudUluZm8mKTsKICAgICB2aXJ0dWFs
IFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZSogY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UodW5zaWduZWQgcXVvdGEpOwotICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRCogY3JlYXRlR3JhcGhpY3NDb250ZXh0M0QoY29uc3QgV2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcyYpOworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJDb21wb3NpdG9y
T3V0cHV0U3VyZmFjZSogY3JlYXRlT3V0cHV0U3VyZmFjZSgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRBZGRNZXNzYWdlVG9Db25zb2xlKGNvbnN0IFdlYktpdDo6V2ViQ29uc29sZU1lc3NhZ2UmLCBj
b25zdCBXZWJLaXQ6OldlYlN0cmluZyYgc291cmNlTmFtZSwgdW5zaWduZWQgc291cmNlTGluZSk7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZGluZygpOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRTdG9wTG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0T3V0cHV0U3VyZmFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQxYjU4NDBl
OTZlNjBmZThkOTgyMDVlZGNjZTU2NTJlZDczZDZmNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0T3V0cHV0U3VyZmFjZS5jcHAKQEAg
LTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldl
YlZpZXdIb3N0T3V0cHV0U3VyZmFjZS5oIgorCisjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNz
Q29udGV4dDNELmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1dlYlZpZXdIb3N0T3V0cHV0U3VyZmFjZTo6V2ViVmlld0hvc3RPdXRwdXRTdXJm
YWNlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKKyAg
ICA6IG1fY29udGV4dChjb250ZXh0KQoreworfQorCitXZWJWaWV3SG9zdE91dHB1dFN1cmZhY2U6
On5XZWJWaWV3SG9zdE91dHB1dFN1cmZhY2UoKQoreworfQorCitib29sIFdlYlZpZXdIb3N0T3V0
cHV0U3VyZmFjZTo6YmluZFRvQ2xpZW50KFdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlQ2xpZW50
KikKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKK30KKwor
Y29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZTo6Q2FwYWJpbGl0aWVzJiBX
ZWJWaWV3SG9zdE91dHB1dFN1cmZhY2U6OmNhcGFiaWxpdGllcygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fY2FwYWJpbGl0aWVzOworfQorCitXZWJHcmFwaGljc0NvbnRleHQzRCogV2ViVmlld0hv
c3RPdXRwdXRTdXJmYWNlOjpjb250ZXh0M0QoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRl
eHQuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlOjpzZW5kRnJhbWVU
b1BhcmVudENvbXBvc2l0b3IoY29uc3QgV2ViQ29tcG9zaXRvckZyYW1lJikKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlLmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdE91dHB1dFN1cmZhY2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTJi
YzUzOWQwNDM2YjJlZmMxZTIyOGE3ZTQ2ZGM5Nzg4NTMwOWQzCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlLmgK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNl
X2gKKyNkZWZpbmUgV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlX2gKKworI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZS5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2VDbGllbnQ7CitjbGFzcyBXZWJHcmFwaGljc0Nv
bnRleHQzRDsKKworY2xhc3MgV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlIDogcHVibGljIFdlYktp
dDo6V2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2UgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdl
YlZpZXdIb3N0T3V0cHV0U3VyZmFjZShQYXNzT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250
ZXh0M0Q+KTsKKyAgICB2aXJ0dWFsIH5XZWJWaWV3SG9zdE91dHB1dFN1cmZhY2UoKTsKKworICAg
IHZpcnR1YWwgYm9vbCBiaW5kVG9DbGllbnQoV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2VDbGll
bnQqKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9y
T3V0cHV0U3VyZmFjZTo6Q2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0QoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZEZyYW1lVG9QYXJlbnRDb21wb3NpdG9yKGNv
bnN0IFdlYkNvbXBvc2l0b3JGcmFtZSYpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIFdlYktp
dDo6V2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2U6OkNhcGFiaWxpdGllcyBtX2NhcGFiaWxpdGll
czsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0Owor
fTsKKworfQorCisjZW5kaWYgLy8gV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160278</attachid>
            <date>2012-08-23 16:39:09 -0700</date>
            <delta_ts>2012-08-23 17:55:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94866-20120823163905.patch</filename>
            <type>text/plain</type>
            <size>94776</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2MzNlMmVmZTIxYzQ3
Zjk4ZjIxYTZlMjJmMGE5MjU3ZDVkZTBhNTM1Li5lNDZiZjRhNzkzODE5MDBkZTAwY2VlNDY1MTg3
YmU4ZGY5MmNmMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wOC0yMyAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gQ29udmVydCBXZWJMYXllclRyZWVWaWV3IGludGVyZmFjZSBpbnRvIHB1cmUgdmlydHVhbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ4NjYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1ha2Vz
IHRoZSBXZWJMYXllclRyZWVWaWV3IGludGVyZmFjZSBwdXJlIHZpcnR1YWwgdG8gcHJvdmlkZSBi
ZXR0ZXIgaW5zdWxhdGlvbiBmcm9tIHRoZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIGNo
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoU2V0dGluZ3MpOgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlldyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6On5XZWJMYXllclRyZWVWaWV3KToKKwogMjAxMi0wOC0y
MiAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gUmVtb3ZlIFdlYkxheWVyOjpzZXRDaGlsZHJlbiBBUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNjUy
NTQ1NzQyYmEyMzBjMWQ5ODc5OWE2MGE0YTJjNWJhYjMxNWNjLi5hYjRkNTcxNDJlZDdkN2EyOGRm
Mzg3YzhlNmEwOTIxYmU5MGU1NDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTIt
MDgtMjMgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Y2hyb21pdW1dIENvbnZlcnQgV2ViTGF5ZXJUcmVlVmlldyBpbnRlcmZhY2UgaW50byBwdXJlIHZp
cnR1YWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0
ODY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVu
YW1lcyBDQ0xheWVyVHJlZUhvc3RDbGllbnQ6OnVwZGF0ZUFuaW1hdGlvbnMgLT4gQ0NMYXllclRy
ZWVIb3N0Q2xpZW50OjphbmltYXRlIHRvIGF2b2lkIGEgbmFtaW5nIGNvbGxpc2lvbgorICAgICAg
ICBhbmQgdG8gYmV0dGVyIG1hdGNoIHRoZSBvdGhlciBpbXBlcmF0aXZlLXNvdW5kaW5nIGNhbGxz
IChsaWtlIGxheW91dCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
Ojp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdENsaWVudCk6
CisKIDIwMTItMDgtMjIgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBXZWJMYXllcjo6c2V0Q2hpbGRyZW4gQVBJCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDNiNmMyOTdlOWY5M2UyNTM3MWJhNjkwODM2NjhjNmIw
MmUxZjAzMTguLmJmYjZkNjA2ZWE2OTg5ZGFhYjUyYzA5YzEzNTViZjI3NDkxMTE2MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMTItMDgtMjMgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENv
bnZlcnQgV2ViTGF5ZXJUcmVlVmlldyBpbnRlcmZhY2UgaW50byBwdXJlIHZpcnR1YWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0ODY2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlcyBXZWJMYXll
clRyZWVWaWV3IGltcGxlbWVudGF0aW9uIGFuZCBjYWxsZXJzIHRvIG5ldyBpbnRlcmZhY2UuIFRo
ZSBjcmVhdGVHcmFwaGljc0NvbnRleHQzRCgpIHdyYXBwZXIKKyAgICAgICAgc3R1ZmYgY2FuIGp1
c3QgZ28gYXdheSBub3cgc2luY2UgZG93bnN0cmVhbSBoYXMgdXBkYXRlZCB0byBjcmVhdGVPdXRw
dXRTdXJmYWNlKCkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBzcmMvV2Vi
TGF5ZXJUcmVlVmlldy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZp
ZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OldlYkxheWVyVHJlZVZpZXdJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0lt
cGw6OnNldFN1cmZhY2VSZWFkeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJ
bXBsOjpzZXRSb290TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1w
bDo6Y2xlYXJSb290TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1w
bDo6Y29tcG9zaXRvcklkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVW
aWV3SW1wbDo6c2V0Vmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVl
Vmlld0ltcGw6OmxheW91dFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
VHJlZVZpZXdJbXBsOjpkZXZpY2VWaWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
YXllclRyZWVWaWV3SW1wbDo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAg
KFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNldEhhc1RyYW5zcGFyZW50QmFja2dyb3Vu
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpzZXRWaXNpYmxlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNldFBhZ2VTY2FsZUZhY3Rv
ckFuZExpbWl0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpzdGFy
dFBhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJ
bXBsOjpzZXROZWVkc0FuaW1hdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3
SW1wbDo6c2V0TmVlZHNSZWRyYXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3
SW1wbDo6Y29tbWl0UmVxdWVzdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmll
d0ltcGw6OmNvbXBvc2l0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBs
Ojp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0lt
cGw6OmNvbXBvc2l0ZUFuZFJlYWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVl
Vmlld0ltcGw6OmZpbmlzaEFsbFJlbmRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
VHJlZVZpZXdJbXBsOjpyZW5kZXJpbmdTdGF0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
VHJlZVZpZXdJbXBsOjpzZXRGb250QXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRy
ZWVWaWV3SW1wbDo6bG9zZUNvbXBvc2l0b3JDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJUcmVlVmlld0ltcGw6OndpbGxCZWdpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJUcmVlVmlld0ltcGw6OmRpZEJlZ2luRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
YXllclRyZWVWaWV3SW1wbDo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJl
ZVZpZXdJbXBsOjpsYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1w
bDo6YXBwbHlTY3JvbGxBbmRTY2FsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZp
ZXdJbXBsOjpjcmVhdGVPdXRwdXRTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJU
cmVlVmlld0ltcGw6OmRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVyVHJlZVZpZXdJbXBsOjp3aWxsQ29tbWl0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJUcmVlVmlld0ltcGw6OmRpZENvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
VHJlZVZpZXdJbXBsOjpkaWRDb21taXRBbmREcmF3RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkQ29tcGxldGVTd2FwQnVmZmVycyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpzY2hlZHVsZUNvbXBvc2l0ZSk6CisgICAgICAg
ICogc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmg6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3
SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OnJlbmRlcmluZ1N0YXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnNldENvbXBvc2l0b3JTdXJmYWNlUmVhZHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkb1BpeGVsUmVh
ZGJhY2tUb0NhbnZhcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwYWludCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjb21wb3NpdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6c2V0TmVlZHNSZWRyYXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6aXNJbnB1dFRocm90dGxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjps
b3NlQ29tcG9zaXRvckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0
RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y29tcHV0
ZVBhZ2VTY2FsZUZhY3RvckxpbWl0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpz
ZXRJc1RyYW5zcGFyZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFJvb3RH
cmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNjaGVkdWxlQ29t
cG9zaXRpbmdMYXllclN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aW52YWxp
ZGF0ZVJvb3RMYXllclJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0QmFj
a2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNjaGVkdWxlQW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6dXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6c2V0VmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwOgorICAgICAgICAq
IHRlc3RzL0NDVGhyZWFkZWRUZXN0Lmg6CisgICAgICAgIChXZWJLaXRUZXN0czo6VGVzdEhvb2tz
OjphbmltYXRlKToKKyAgICAgICAgKiB0ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50Lmg6
CisgICAgICAgICogdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3Q6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bVRlc3QpOgorICAgICAgICAoV2ViS2l0OjpHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0Ojp+R3Jh
cGhpY3NMYXllckNocm9taXVtVGVzdCk6CisgICAgICAgIChHcmFwaGljc0xheWVyQ2hyb21pdW1U
ZXN0KToKKyAgICAgICAgKiB0ZXN0cy9XZWJMYXllclRlc3QuY3BwOgorICAgICAgICAqIHRlc3Rz
L1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9XZWJMYXllclRyZWVW
aWV3VGVzdENvbW1vbi5oOgorICAgICAgICAoTW9ja1dlYkxheWVyVHJlZVZpZXdDbGllbnQpOgor
CiAyMDEyLTA4LTIyICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBSZW1vdmUgV2ViTGF5ZXI6OnNldENoaWxkcmVuIEFQSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmgg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRl
eCAxYWQ5NjdkYTFhZDY3MDJjNDNhNTljYTYwYzZlMGMzZjk3MzExYWY5Li40OTE4Mzc5YmY0OGEw
Yjk4NjRiMmVhNThhNmM1MGQwNTIzNDM3M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaApAQCAtMzMsMjEgKzMzLDE1IEBACiAj
aW5jbHVkZSAiV2ViUHJpdmF0ZU93blB0ci5oIgogI2luY2x1ZGUgIldlYlNpemUuaCIKIAotbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ0NMYXllclRyZWVIb3N0Owotc3RydWN0IENDTGF5ZXJU
cmVlU2V0dGluZ3M7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViR3JhcGhpY3ND
b250ZXh0M0Q7CiBjbGFzcyBXZWJMYXllcjsKIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdDbGllbnQ7
Ci1jbGFzcyBXZWJMYXllclRyZWVWaWV3SW1wbDsKIHN0cnVjdCBXZWJQb2ludDsKIHN0cnVjdCBX
ZWJSZWN0Owogc3RydWN0IFdlYlJlbmRlcmluZ1N0YXRzOwogCi1jbGFzcyBXZWJMYXllclRyZWVW
aWV3IDogcHVibGljIFdlYk5vbkNvcHlhYmxlIHsKK2NsYXNzIFdlYkxheWVyVHJlZVZpZXcgewog
cHVibGljOgogICAgIHN0cnVjdCBTZXR0aW5ncyB7CiAgICAgICAgIFNldHRpbmdzKCkKQEAgLTcw
LDgzICs2NCw3MyBAQCBwdWJsaWM6CiAgICAgICAgIGRvdWJsZSByZWZyZXNoUmF0ZTsKICAgICAg
ICAgV2ViU2l6ZSBkZWZhdWx0VGlsZVNpemU7CiAgICAgICAgIFdlYlNpemUgbWF4VW50aWxlZExh
eWVyU2l6ZTsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgICAgICBvcGVyYXRvciBX
ZWJDb3JlOjpDQ0xheWVyVHJlZVNldHRpbmdzKCkgY29uc3Q7Ci0jZW5kaWYKICAgICB9OwogCi0g
ICAgV2ViTGF5ZXJUcmVlVmlldygpIHsgfQotICAgIH5XZWJMYXllclRyZWVWaWV3KCkgeyByZXNl
dCgpOyB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyNkZWZpbmUgV0VCTEFZ
RVJUUkVFVklFV19JU19QVVJFX1ZJUlRVQUwKKyAgICAvLyBBdHRlbXB0cyB0byBpbml0aWFsaXpl
IHRoaXMgV2ViTGF5ZXJUcmVlVmlldyB3aXRoIHRoZSBnaXZlbiBjbGllbnQsIHJvb3QgbGF5ZXIs
IGFuZCBzZXR0aW5ncy4KKyAgICAvLyBJZiBpbml0aWFsaXphdGlvbiBmYWlscywgdGhpcyB3aWxs
IHJldHVybiBuaWwuCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViTGF5ZXJUcmVlVmlldyog
Y3JlYXRlKFdlYkxheWVyVHJlZVZpZXdDbGllbnQqLCBjb25zdCBXZWJMYXllciYgcm9vdCwgY29u
c3QgU2V0dGluZ3MmKTsKIAotICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CisgICAgdmlydHVhbCB+
V2ViTGF5ZXJUcmVlVmlldygpIHsgfQogCiAgICAgLy8gSW5pdGlhbGl6YXRpb24gYW5kIGxpZmVj
eWNsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gICAgLy8gQXR0
ZW1wdHMgdG8gaW5pdGlhbGl6ZSB0aGlzIFdlYkxheWVyVHJlZVZpZXcgd2l0aCB0aGUgZ2l2ZW4g
Y2xpZW50LCByb290IGxheWVyLCBhbmQgc2V0dGluZ3MuCi0gICAgLy8gSWYgaW5pdGlhbGl6YXRp
b24gZmFpbHMsIHRoaXMgd2lsbCByZXR1cm4gZmFsc2UgYW5kIC5pc051bGwoKSB3aWxsIHJldHVy
biB0cnVlLgotICAgIC8vIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgbWV0aG9kcyBiZWxvdy4K
LSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaW5pdGlhbGl6ZShXZWJMYXllclRyZWVWaWV3Q2xpZW50
KiwgY29uc3QgV2ViTGF5ZXImIHJvb3QsIGNvbnN0IFNldHRpbmdzJik7Ci0KICAgICAvLyBJbmRp
Y2F0ZXMgdGhhdCB0aGUgY29tcG9zaXRpbmcgc3VyZmFjZSB1c2VkIGJ5IHRoaXMgV2ViTGF5ZXJU
cmVlVmlldyBpcyByZWFkeSB0byB1c2UuCiAgICAgLy8gQSBXZWJMYXllclRyZWVWaWV3IG1heSBy
ZXF1ZXN0IGEgY29udGV4dCBmcm9tIGl0cyBjbGllbnQgYmVmb3JlIHRoZSBzdXJmYWNlIGlzIHJl
YWR5LAogICAgIC8vIGJ1dCBpdCB3b24ndCBhdHRlbXB0IHRvIHVzZSBpdC4KLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0U3VyZmFjZVJlYWR5KCk7CisgICAgdmlydHVhbCB2b2lkIHNldFN1cmZh
Y2VSZWFkeSgpID0gMDsKIAogICAgIC8vIFNldHMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuIFRoZSBy
b290IGlzIHNldCBieSB3YXkgb2YgdGhlIGNvbnN0cnVjdG9yLgotICAgIC8vIFRoaXMgaXMgdHlw
aWNhbGx5IHVzZWQgdG8gZXhwbGljaXRseSBzZXQgdGhlIHJvb3QgdG8gbnVsbCB0byBicmVhawot
ICAgIC8vIGN5Y2xlcy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Um9vdExheWVyKFdlYkxh
eWVyKik7CisgICAgdmlydHVhbCB2b2lkIHNldFJvb3RMYXllcihjb25zdCBXZWJMYXllciYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJSb290TGF5ZXIoKSA9IDA7CiAKICAgICAvLyBSZXR1
cm5zIGEgdW5pcXVlIGlkZW50aWZpZXIgdGhhdCBjYW4gYmUgdXNlZCBvbiB0aGUgY29tcG9zaXRv
ciB0aHJlYWQgdG8gcmVxdWVzdCBhCiAgICAgLy8gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlciBp
bnN0YW5jZS4KLSAgICBXRUJLSVRfRVhQT1JUIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpOwor
ICAgIHZpcnR1YWwgaW50IGNvbXBvc2l0b3JJZGVudGlmaWVyKCkgPSAwOwogCiAKICAgICAvLyBW
aWV3IHByb3BlcnRpZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0
IFdlYlNpemUmIGxheW91dFZpZXdwb3J0U2l6ZSwgY29uc3QgV2ViU2l6ZSYgZGV2aWNlVmlld3Bv
cnRTaXplID0gV2ViU2l6ZSgpKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNv
bnN0IFdlYlNpemUmIGxheW91dFZpZXdwb3J0U2l6ZSwgY29uc3QgV2ViU2l6ZSYgZGV2aWNlVmll
d3BvcnRTaXplID0gV2ViU2l6ZSgpKSA9IDA7CiAgICAgLy8gR2l2ZXMgdGhlIHZpZXdwb3J0IHNp
emUgaW4gbGF5ZXIgc3BhY2UuCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIGxheW91dFZpZXdw
b3J0U2l6ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViU2l6ZSBsYXlvdXRWaWV3cG9ydFNpemUo
KSBjb25zdCA9IDA7CiAgICAgLy8gR2l2ZXMgdGhlIHZpZXdwb3J0IHNpemUgaW4gcGh5c2ljYWwg
ZGV2aWNlIHBpeGVscyAobWF5IGJlIGRpZmZlcmVudAogICAgIC8vIGZyb20gdGhlIGFib3ZlIGlm
IHRoZXJlIGV4aXN0cyBwYWdlIHNjYWxlLCBkZXZpY2Ugc2NhbGUgb3IgZml4ZWQgbGF5b3V0CiAg
ICAgLy8gbW9kZSkuCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIGRldmljZVZpZXdwb3J0U2l6
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViU2l6ZSBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25z
dCA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxv
YXQpOwotICAgIFdFQktJVF9FWFBPUlQgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpID0gMDsKKyAgICB2
aXJ0dWFsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QgPSAwOwogCiAgICAgLy8gU2V0
cyB0aGUgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIHZpZXdwb3J0LgotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpID0gMDsKIAogICAgIC8vIFNldHMgdGhlIGJhY2tn
cm91bmQgdHJhbnNwYXJlbmN5IGZvciB0aGUgdmlld3BvcnQuIFRoZSBkZWZhdWx0IGlzICdmYWxz
ZScuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChi
b29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGJvb2wp
ID0gMDsKIAogICAgIC8vIFNldHMgd2hldGhlciB0aGlzIHZpZXcgaXMgdmlzaWJsZS4gSW4gdGhy
ZWFkZWQgbW9kZSwgYSB2aWV3IHRoYXQgaXMgbm90IHZpc2libGUgd2lsbCBub3QKICAgICAvLyBj
b21wb3NpdGUgb3IgdHJpZ2dlciB1cGRhdGVBbmltYXRpb25zKCkgb3IgbGF5b3V0KCkgY2FsbHMg
dW50aWwgaXQgYmVjb21lcyB2aXNpYmxlLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRWaXNp
YmxlKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpID0gMDsKIAogICAg
IC8vIFNldHMgdGhlIGN1cnJlbnQgcGFnZSBzY2FsZSBmYWN0b3IgYW5kIG1pbmltdW0gLyBtYXhp
bXVtIGxpbWl0cy4gQm90aCBsaW1pdHMgYXJlIGluaXRpYWxseSAxIChubyBwYWdlIHNjYWxlIGFs
bG93ZWQpLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1p
dHMoZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBmbG9hdCBtaW5pbXVtLCBmbG9hdCBtYXhpbXVtKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKGZsb2F0IHBhZ2VT
Y2FsZUZhY3RvciwgZmxvYXQgbWluaW11bSwgZmxvYXQgbWF4aW11bSkgPSAwOwogCiAgICAgLy8g
U3RhcnRzIGFuIGFuaW1hdGlvbiBvZiB0aGUgcGFnZSBzY2FsZSB0byBhIHRhcmdldCBzY2FsZSBm
YWN0b3IgYW5kIHNjcm9sbCBvZmZzZXQuCiAgICAgLy8gSWYgdXNlQW5jaG9yIGlzIHRydWUsIGRl
c3RpbmF0aW9uIGlzIGEgcG9pbnQgb24gdGhlIHNjcmVlbiB0aGF0IHdpbGwgcmVtYWluIGZpeGVk
IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGFuaW1hdGlvbi4KICAgICAvLyBJZiB1c2VBbmNob3Ig
aXMgZmFsc2UsIGRlc3RpbmF0aW9uIGlzIHRoZSBmaW5hbCB0b3AtbGVmdCBzY3JvbGwgcG9zaXRp
b24uCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0
IFdlYlBvaW50JiBkZXN0aW5hdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IG5ld1BhZ2VTY2Fs
ZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVB
bmltYXRpb24oY29uc3QgV2ViUG9pbnQmIGRlc3RpbmF0aW9uLCBib29sIHVzZUFuY2hvciwgZmxv
YXQgbmV3UGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpID0gMDsKIAogCiAgICAgLy8gRmxv
dyBjb250cm9sIGFuZCBzY2hlZHVsaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCiAgICAgLy8gUmVxdWVzdHMgYW4gdXBkYXRlQW5pbWF0aW9ucygpIGNhbGwuCi0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE5lZWRzQW5pbWF0ZSgpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXROZWVkc0FuaW1hdGUoKSA9IDA7CiAKICAgICAvLyBJbmRpY2F0ZXMgdGhhdCB0aGUgdmll
dyBuZWVkcyB0byBiZSByZWRyYXduLiBUaGlzIGlzIHR5cGljYWxseSB1c2VkIHdoZW4gdGhlIGZy
b250YnVmZmVyIGlzIGRhbWFnZWQuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE5lZWRzUmVk
cmF3KCk7CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3KCkgPSAwOwogCiAgICAgLy8g
SW5kaWNhdGVzIHdoZXRoZXIgYSBjb21taXQgaXMgcGVuZGluZy4KLSAgICBXRUJLSVRfRVhQT1JU
IGJvb2wgY29tbWl0UmVxdWVzdGVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNvbW1pdFJl
cXVlc3RlZCgpIGNvbnN0ID0gMDsKIAogICAgIC8vIFRyaWdnZXJzIGEgY29tcG9zaXRpbmcgcGFz
cy4gSWYgdGhlIGNvbXBvc2l0b3IgdGhyZWFkIHdhcyBub3QKICAgICAvLyBlbmFibGVkIHZpYSBX
ZWJDb21wb3NpdG9yOjppbml0aWFsaXplLCB0aGUgY29tcG9zaXRpbmcgcGFzcyBoYXBwZW5zCkBA
IC0xNTUsMTIgKzEzOSwxMiBAQCBwdWJsaWM6CiAgICAgLy8gcmV0dXJucyB3aGVuIHRoZSBjb21w
b3NpdG9yIHRocmVhZCBpcyBkaXNhYmxlZCksIFdlYkNvbnRlbnRMYXllcnMgd2lsbCBiZQogICAg
IC8vIGFza2VkIHRvIHBhaW50IHRoZWlyIGRpcnR5IHJlZ2lvbiwgdGhyb3VnaAogICAgIC8vIFdl
YkNvbnRlbnRMYXllckNsaWVudDo6cGFpbnRDb250ZW50cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgY29tcG9zaXRlKCk7CisgICAgdmlydHVhbCB2b2lkIGNvbXBvc2l0ZSgpID0gMDsKIAogICAg
IC8vIEltbWVkaWF0ZWx5IHVwZGF0ZSBhbmltYXRpb25zLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVz
ZWQgd2hlbiBmcmFtZSBzY2hlZHVsaW5nIGlzIGhhbmRsZWQgYnkKICAgICAvLyB0aGUgV2ViTGF5
ZXJUcmVlVmlldyB1c2VyIGFuZCBub3QgaW50ZXJuYWxseSBieSB0aGUgY29tcG9zaXRvciwgbWVh
bmluZyBvbmx5IGluIHNpbmdsZS10aHJlYWRlZAogICAgIC8vIG1vZGUuCi0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpID0gMDsK
IAogICAgIC8vIENvbXBvc2l0ZXMgYW5kIGF0dGVtcHRzIHRvIHJlYWQgYmFjayB0aGUgcmVzdWx0
IGludG8gdGhlIHByb3ZpZGVkCiAgICAgLy8gYnVmZmVyLiBJZiBpdCB3YXNuJ3QgcG9zc2libGUs
IGUuZy4gZHVlIHRvIGNvbnRleHQgbG9zdCwgd2lsbCByZXR1cm4KQEAgLTE2OCwyNyArMTUyLDI0
IEBAIHB1YmxpYzoKICAgICAvLyBsYXJnZSBlbm91Z2ggY29udGFpbiB2aWV3cG9ydFNpemUoKS53
aWR0aCgpICogdmlld3BvcnRTaXplKCkuaGVpZ2h0KCkKICAgICAvLyBwaXhlbHMuIFRoZSBXZWJM
YXllclRyZWVWaWV3IGRvZXMgbm90IGFzc3VtZSBvd25lcnNoaXAgb2YgdGhlIGJ1ZmZlci4KICAg
ICAvLyBUaGUgYnVmZmVyIGlzIG5vdCBtb2RpZmllZCBpZiB0aGUgZmFsc2UgaXMgcmV0dXJuZWQu
Ci0gICAgV0VCS0lUX0VYUE9SVCBib29sIGNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVs
cywgY29uc3QgV2ViUmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVBbmRSZWFkYmFj
ayh2b2lkICpwaXhlbHMsIGNvbnN0IFdlYlJlY3QmKSA9IDA7CiAKICAgICAvLyBCbG9ja3MgdW50
aWwgdGhlIG1vc3QgcmVjZW50bHkgY29tcG9zaXRlZCBmcmFtZSBoYXMgZmluaXNoZWQgcmVuZGVy
aW5nIG9uIHRoZSBHUFUuCiAgICAgLy8gVGhpcyBjYW4gaGF2ZSBhIHNpZ25pZmljYW50IHBlcmZv
cm1hbmNlIGltcGFjdCBhbmQgc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXJlLgotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
QWxsUmVuZGVyaW5nKCkgPSAwOwogCiAgICAgLy8gRGVidWdnaW5nIC8gZGFuZ2Vyb3VzIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gRmlsbHMg
aW4gYSBXZWJSZW5kZXJpbmdTdGF0cyBzdHJ1Y3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91
dCB0aGUgc3RhdGUgb2YgdGhlIGNvbXBvc2l0b3IuCiAgICAgLy8gVGhpcyBjYWxsIGlzIHJlbGF0
aXZlbHkgZXhwZW5zaXZlIGluIHRocmVhZGVkIG1vZGUgYXMgaXQgYmxvY2tzIG9uIHRoZSBjb21w
b3NpdG9yIHRocmVhZC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2Vi
UmVuZGVyaW5nU3RhdHMmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyaW5nU3RhdHMo
V2ViUmVuZGVyaW5nU3RhdHMmKSBjb25zdCA9IDA7CiAKICAgICAvLyBQcm92aWRlcyBhIGZvbnQg
YXRsYXMgdG8gdXNlIGZvciBkZWJ1ZyB2aXN1YWxpemF0aW9ucy4gVGhlIGF0bGFzIG11c3QgYmUg
YSBiaXRtYXAgY29udGFpbmluZyBnbHlwaCBkYXRhLCBhIHRhYmxlIG9mCiAgICAgLy8gQVNDSUkg
Y2hhcmFjdGVyIHZhbHVlcyB0byBhIHN1YnJlY3RhbmdsZSBvZiB0aGUgYXRsYXMgcmVwcmVzZW50
aW5nIHRoZSBjb3JyZXNwb25kaW5nIGdseXBoLCBhbmQgdGhlIGdseXBoIGhlaWdodC4KLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0Rm9udEF0bGFzKFNrQml0bWFwLCBXZWJSZWN0IGFzY2lpVG9S
ZWN0VGFibGVbMTI4XSwgaW50IGZvbnRIZWlnaHQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRGb250
QXRsYXMoU2tCaXRtYXAsIFdlYlJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdLCBpbnQgZm9udEhl
aWdodCkgPSAwOwogCiAgICAgLy8gU2ltdWxhdGVzIGEgbG9zdCBjb250ZXh0LiBGb3IgdGVzdGlu
ZyBvbmx5LgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50
IG51bVRpbWVzKTsKLQotcHJvdGVjdGVkOgotICAgIFdlYlByaXZhdGVPd25QdHI8V2ViTGF5ZXJU
cmVlVmlld0ltcGw+IG1fcHJpdmF0ZTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9zZUNvbXBvc2l0b3JD
b250ZXh0KGludCBudW1UaW1lcykgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA1ZWUxYmY2ZTk1YzRiMmY2OGUzMjJm
M2RlMDcyMTMwMTgxNjdmOWNmLi4yNGEzMzRjM2ZjNzEyNDdhZjFjMjNiMzJjZmMyMmU5OGFmMjI3
YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTIwOCw3ICsyMDgsNyBA
QCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YWNxdWlyZUxheWVyVGV4dHVyZXMoKQogdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5U
aW1lKQogewogICAgIG1fYW5pbWF0aW5nID0gdHJ1ZTsKLSAgICBtX2NsaWVudC0+dXBkYXRlQW5p
bWF0aW9ucyhtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7CisgICAgbV9jbGllbnQtPmFuaW1hdGUo
bW9ub3RvbmljRnJhbWVCZWdpblRpbWUpOwogICAgIGFuaW1hdGVMYXllcnMobW9ub3RvbmljRnJh
bWVCZWdpblRpbWUpOwogICAgIG1fYW5pbWF0aW5nID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKaW5kZXggY2MwYjQ1ZDNkN2ZjN2IxNWE0N2MxNTJlNTI3M2Y5YmM2ZWY1M2M3
MC4uN2M1ODc1ZmZhODA1OTk1NGZmMDRhNmExYjAxNjAxYTgxZDFiYTQ2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB3aWxsQmVnaW5GcmFtZSgpID0gMDsKICAgICAvLyBNYXJrcyBmaW5pc2hpbmcgY29tcG9z
aXRpbmctcmVsYXRlZCB0YXNrcyBvbiB0aGUgbWFpbiB0aHJlYWQuIEluIHRocmVhZGVkIG1vZGUs
IHRoaXMgY29ycmVzcG9uZHMgdG8gZGlkQ29tbWl0KCkuCiAgICAgdmlydHVhbCB2b2lkIGRpZEJl
Z2luRnJhbWUoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91Ymxl
IGZyYW1lQmVnaW5UaW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGUoZG91YmxlIGZy
YW1lQmVnaW5UaW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0
YSwgZmxvYXQgcGFnZVNjYWxlKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYktpdDo6
V2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2U+IGNyZWF0ZU91dHB1dFN1cmZhY2UoKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBkMjhjMjZjZjc4MTA2ODAxZTgxM2I1OTFh
YzMyNWI3ZmEzYTg3YzMzLi4yZTFlMjUxMTYzMzMyMDM0YWNlZGJmYWY3NTk5Yzg4M2FjMWU3N2E3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTE5NCw3ICsxOTQsNiBAQAogICAg
ICAgICAgICAgJ3NyYy9XZWJJbWFnZUxheWVySW1wbC5oJywKICAgICAgICAgICAgICdzcmMvV2Vi
TGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAnc3JjL1dlYkxheWVySW1wbC5oJywKLSAgICAg
ICAgICAgICdzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAnLAogICAgICAgICAgICAgJ3NyYy9XZWJM
YXllclRyZWVWaWV3SW1wbC5jcHAnLAogICAgICAgICAgICAgJ3NyYy9XZWJMYXllclRyZWVWaWV3
SW1wbC5oJywKICAgICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGZiY2QxMjllZTExNzVjMmFjMDU5Njg1ODI3ZGMw
NWM0ZDFmYTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMjE0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSA8cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaD4KLQotI2luY2x1ZGUgIkNDRm9udEF0bGFz
LmgiCi0jaW5jbHVkZSAiQ0NHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJDQ0xheWVyVHJl
ZUhvc3QuaCIKLSNpbmNsdWRlICJDQ1JlbmRlcmluZ1N0YXRzLmgiCi0jaW5jbHVkZSAiTGF5ZXJD
aHJvbWl1bS5oIgotI2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgotI2luY2x1ZGUgIldlYkxheWVy
VHJlZVZpZXdJbXBsLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+Ci0jaW5jbHVkZSA8
cHVibGljL1dlYlBvaW50Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KLSNpbmNsdWRl
IDxwdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViU2l6ZS5o
PgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdl
YkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpvcGVyYXRvciBDQ0xheWVyVHJlZVNldHRpbmdzKCkg
Y29uc3QKLXsKLSAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwotICAgIHNldHRpbmdz
LnNob3dGUFNDb3VudGVyID0gc2hvd0ZQU0NvdW50ZXI7Ci0gICAgc2V0dGluZ3Muc2hvd1BsYXRm
b3JtTGF5ZXJUcmVlID0gc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwotICAgIHNldHRpbmdzLnNob3dQ
YWludFJlY3RzID0gc2hvd1BhaW50UmVjdHM7Ci0gICAgc2V0dGluZ3MucmVuZGVyVlN5bmNFbmFi
bGVkID0gcmVuZGVyVlN5bmNFbmFibGVkOwotICAgIHNldHRpbmdzLnJlZnJlc2hSYXRlID0gcmVm
cmVzaFJhdGU7Ci0gICAgc2V0dGluZ3MuZGVmYXVsdFRpbGVTaXplID0gZGVmYXVsdFRpbGVTaXpl
OwotICAgIHNldHRpbmdzLm1heFVudGlsZWRMYXllclNpemUgPSBtYXhVbnRpbGVkTGF5ZXJTaXpl
OwotICAgIHNldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IGFjY2VsZXJhdGVQYWludGluZzsK
LQotICAgIC8vIEZJWE1FOiBzaG93RlBTQ291bnRlciAvIHNob3dQbGF0Zm9ybUxheWVyVHJlZSAv
IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyBhcmVuJ3Qgc3VwcG9ydGVkIGN1cnJlbnRseS4KLSAg
ICByZXR1cm4gc2V0dGluZ3M7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6cmVzZXQoKQot
ewotICAgIG1fcHJpdmF0ZS5yZXNldCgwKTsKLX0KLQotYm9vbCBXZWJMYXllclRyZWVWaWV3Ojpp
c051bGwoKSBjb25zdAotewotICAgIHJldHVybiAhbV9wcml2YXRlLmdldCgpOwotfQotCi1ib29s
IFdlYkxheWVyVHJlZVZpZXc6OmluaXRpYWxpemUoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCogY2xp
ZW50LCBjb25zdCBXZWJMYXllciYgcm9vdCwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGlu
Z3MmIHNldHRpbmdzKQotewotICAgIC8vIFdlIGhhdmUgdG8gbGVhayB0aGUgcG9pbnRlciBoZXJl
IGludG8gYSBXZWJQcml2YXRlT3duUHRyLiBXZSBmcmVlIHRoaXMgb2JqZWN0IGluIHJlc2V0KCku
Ci0gICAgbV9wcml2YXRlLnJlc2V0KFdlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGUoY2xpZW50
LCByb290LCBzZXR0aW5ncykubGVha1B0cigpKTsKLSAgICByZXR1cm4gIWlzTnVsbCgpOwotfQot
Ci12b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldFN1cmZhY2VSZWFkeSgpCi17Ci0gICAgbV9wcml2
YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFN1cmZhY2VSZWFkeSgpOwotfQotCi12b2lkIFdlYkxh
eWVyVHJlZVZpZXc6OnNldFJvb3RMYXllcihXZWJMYXllciAqcm9vdCkKLXsKLSAgICBpZiAocm9v
dCkKLSAgICAgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcihzdGF0
aWNfY2FzdDxXZWJMYXllckltcGwqPihyb290KS0+bGF5ZXIoKSk7Ci0gICAgZWxzZQotICAgICAg
ICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0Um9vdExheWVyKFBhc3NSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4oKSk7Ci19Ci0KLWludCBXZWJMYXllclRyZWVWaWV3Ojpjb21wb3NpdG9ySWRl
bnRpZmllcigpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5jb21w
b3NpdG9ySWRlbnRpZmllcigpOwotfQotCi12b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldFZpZXdw
b3J0U2l6ZShjb25zdCBXZWJTaXplJiBsYXlvdXRWaWV3cG9ydFNpemUsIGNvbnN0IFdlYlNpemUm
IGRldmljZVZpZXdwb3J0U2l6ZSkKLXsKLSAgICBpZiAoIWRldmljZVZpZXdwb3J0U2l6ZS5pc0Vt
cHR5KCkpCi0gICAgICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRWaWV3cG9ydFNp
emUobGF5b3V0Vmlld3BvcnRTaXplLCBkZXZpY2VWaWV3cG9ydFNpemUpOwotICAgIGVsc2UKLSAg
ICAgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFZpZXdwb3J0U2l6ZShsYXlvdXRW
aWV3cG9ydFNpemUsIGxheW91dFZpZXdwb3J0U2l6ZSk7Ci19Ci0KLVdlYlNpemUgV2ViTGF5ZXJU
cmVlVmlldzo6bGF5b3V0Vmlld3BvcnRTaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViU2l6
ZShtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+bGF5b3V0Vmlld3BvcnRTaXplKCkpOwotfQot
Ci1XZWJTaXplIFdlYkxheWVyVHJlZVZpZXc6OmRldmljZVZpZXdwb3J0U2l6ZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIFdlYlNpemUobV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmRldmljZVZp
ZXdwb3J0U2l6ZSgpKTsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXREZXZpY2VTY2Fs
ZUZhY3Rvcihjb25zdCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKLXsKLSAgICBtX3ByaXZhdGUt
PmxheWVyVHJlZUhvc3QoKS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3Ip
OwotfQotCi1mbG9hdCBXZWJMYXllclRyZWVWaWV3OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5kZXZpY2VTY2FsZUZh
Y3RvcigpOwotfQotCi12b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldEJhY2tncm91bmRDb2xvcihX
ZWJDb2xvciBjb2xvcikKLXsKLSAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0QmFj
a2dyb3VuZENvbG9yKGNvbG9yKTsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXRIYXNU
cmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCB0cmFuc3BhcmVudCkKLXsKLSAgICBtX3ByaXZhdGUt
PmxheWVyVHJlZUhvc3QoKS0+c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHRyYW5zcGFyZW50
KTsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkK
LXsKLSAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0VmlzaWJsZSh2aXNpYmxlKTsK
LX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMo
ZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBmbG9hdCBtaW5pbXVtLCBmbG9hdCBtYXhpbXVtKQotewot
ICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1p
dHMocGFnZVNjYWxlRmFjdG9yLCBtaW5pbXVtLCBtYXhpbXVtKTsKLX0KLQotdm9pZCBXZWJMYXll
clRyZWVWaWV3OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBXZWJQb2ludCYgc2Nyb2xs
LCBib29sIHVzZUFuY2hvciwgZmxvYXQgbmV3UGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMp
Ci17Ci0gICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKEludFNpemUoc2Nyb2xsLngsIHNjcm9sbC55KSwgdXNlQW5jaG9yLCBuZXdQYWdlU2NhbGUs
IGR1cmF0aW9uU2VjKTsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXROZWVkc0FuaW1h
dGUoKQotewotICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXROZWVkc0FuaW1hdGUo
KTsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXROZWVkc1JlZHJhdygpCi17Ci0gICAg
bV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldE5lZWRzUmVkcmF3KCk7Ci19Ci0KLWJvb2wg
V2ViTGF5ZXJUcmVlVmlldzo6Y29tbWl0UmVxdWVzdGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmNvbW1pdFJlcXVlc3RlZCgpOwotfQotCi12b2lk
IFdlYkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0ZSgpCi17Ci0gICAgaWYgKENDUHJveHk6Omhhc0lt
cGxUaHJlYWQoKSkKLSAgICAgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldE5lZWRz
Q29tbWl0KCk7Ci0gICAgZWxzZQotICAgICAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+
Y29tcG9zaXRlKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6dXBkYXRlQW5pbWF0aW9u
cyhkb3VibGUgZnJhbWVCZWdpblRpbWUpCi17Ci0gICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0
KCktPnVwZGF0ZUFuaW1hdGlvbnMoZnJhbWVCZWdpblRpbWUpOwotfQotCi1ib29sIFdlYkxheWVy
VHJlZVZpZXc6OmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgV2ViUmVj
dCYgcmVjdCkKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmNvbXBv
c2l0ZUFuZFJlYWRiYWNrKHBpeGVscywgcmVjdCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJUcmVlVmll
dzo6ZmluaXNoQWxsUmVuZGVyaW5nKCkKLXsKLSAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3Qo
KS0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6cmVu
ZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAotewotICAgIENDUmVu
ZGVyaW5nU3RhdHMgY2NTdGF0czsKLSAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+cmVu
ZGVyaW5nU3RhdHMoY2NTdGF0cyk7Ci0KLSAgICBzdGF0cy5udW1BbmltYXRpb25GcmFtZXMgPSBj
Y1N0YXRzLm51bUFuaW1hdGlvbkZyYW1lczsKLSAgICBzdGF0cy5udW1GcmFtZXNTZW50VG9TY3Jl
ZW4gPSBjY1N0YXRzLm51bUZyYW1lc1NlbnRUb1NjcmVlbjsKLSAgICBzdGF0cy5kcm9wcGVkRnJh
bWVDb3VudCA9IGNjU3RhdHMuZHJvcHBlZEZyYW1lQ291bnQ7Ci0gICAgc3RhdHMudG90YWxQYWlu
dFRpbWVJblNlY29uZHMgPSBjY1N0YXRzLnRvdGFsUGFpbnRUaW1lSW5TZWNvbmRzOwotICAgIHN0
YXRzLnRvdGFsUmFzdGVyaXplVGltZUluU2Vjb25kcyA9IGNjU3RhdHMudG90YWxSYXN0ZXJpemVU
aW1lSW5TZWNvbmRzOwotfQotCi12b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldEZvbnRBdGxhcyhT
a0JpdG1hcCBiaXRtYXAsIFdlYlJlY3QgYXNjaWlUb1dlYlJlY3RUYWJsZVsxMjhdLCBpbnQgZm9u
dEhlaWdodCkKLXsKLSAgICBJbnRSZWN0IGFzY2lpVG9SZWN0VGFibGVbMTI4XTsKLSAgICBmb3Ig
KGludCBpID0gMDsgaSA8IDEyODsgKytpKQotICAgICAgICBhc2NpaVRvUmVjdFRhYmxlW2ldID0g
YXNjaWlUb1dlYlJlY3RUYWJsZVtpXTsKLSAgICBPd25QdHI8Q0NGb250QXRsYXM+IGZvbnRBdGxh
cyA9IENDRm9udEF0bGFzOjpjcmVhdGUoYml0bWFwLCBhc2NpaVRvUmVjdFRhYmxlLCBmb250SGVp
Z2h0KTsKLSAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0Rm9udEF0bGFzKGZvbnRB
dGxhcy5yZWxlYXNlKCkpOwotfQotCi12b2lkIFdlYkxheWVyVHJlZVZpZXc6Omxvc2VDb21wb3Np
dG9yQ29udGV4dChpbnQgbnVtVGltZXMpCi17Ci0gICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0
KCktPmxvc2VDb250ZXh0KG51bVRpbWVzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5j
cHAKaW5kZXggMWZkODIzOTc2OGMwOWI2Njk1NGRjMDI1MGUyOGI2Zjk1ZjZmMDk1Ni4uODcwYjhm
MWI2YzEwZWFiYmVlYjI4MzMwMDNlYjNmM2NiMmJkMWI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcApAQCAtMjYsMTMwICsy
NiwzMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJlZVZpZXdJ
bXBsLmgiCiAKKyNpbmNsdWRlICJDQ0ZvbnRBdGxhcy5oIgogI2luY2x1ZGUgIkNDTGF5ZXJUcmVl
SG9zdC5oIgotI2luY2x1ZGUgIkNDVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJMYXllckNocm9t
aXVtLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkdy
YXBoaWNzQ29udGV4dDNELmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+CiAjaW5jbHVk
ZSA8cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXJU
cmVlVmlld0NsaWVudC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSZW5kZXJpbmdTdGF0cy5oPgog
I2luY2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlRocmVhZC5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotbmFtZXNwYWNlIHsKLQotLy8gQWRhcHRz
IGEgcHVyZSBXZWJHcmFwaGljc0NvbnRleHQzRCBpbnRvIGEgV2ViQ29tcG9zaXRvck91dHB1dFN1
cmZhY2UgdW50aWwKLS8vIGRvd25zdHJlYW0gY29kZSBjYW4gYmUgdXBkYXRlZCB0byBwcm9kdWNl
IG91dHB1dCBzdXJmYWNlcyBkaXJlY3RseS4KLWNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dFRvT3V0
cHV0U3VyZmFjZUFkYXB0ZXIgOiBwdWJsaWMgV2ViS2l0OjpXZWJDb21wb3NpdG9yT3V0cHV0U3Vy
ZmFjZSB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViR3JhcGhpY3NDb250ZXh0VG9PdXRwdXRT
dXJmYWNlQWRhcHRlcihQYXNzT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+IGNv
bnRleHQpCi0gICAgICAgIDogbV9jb250ZXh0M0QoY29udGV4dCkKLSAgICAgICAgLCBtX2NsaWVu
dCgwKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgYmluZFRvQ2xpZW50KFdlYktp
dDo6V2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2VDbGllbnQqIGNsaWVudCkgT1ZFUlJJREUKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChjbGllbnQpOwotICAgICAgICBpZiAoIW1fY29udGV4dDNELT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
bV9jbGllbnQgPSBjbGllbnQ7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHZp
cnR1YWwgY29uc3QgQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBPVkVSUklERQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOwotICAgIH0KLQotICAgIHZpcnR1
YWwgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNEKCkgY29uc3QgT1ZFUlJJ
REUKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2NvbnRleHQzRC5nZXQoKTsKLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2VuZEZyYW1lVG9QYXJlbnRDb21wb3NpdG9yKGNvbnN0IFdlYktpdDo6
V2ViQ29tcG9zaXRvckZyYW1lJikgT1ZFUlJJREUKLSAgICB7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIE93blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQzRDsKLSAg
ICBDYXBhYmlsaXRpZXMgbV9jYXBhYmlsaXRpZXM7Ci0gICAgV2ViS2l0OjpXZWJDb21wb3NpdG9y
T3V0cHV0U3VyZmFjZUNsaWVudCogbV9jbGllbnQ7Ci19OworbmFtZXNwYWNlIFdlYktpdCB7CiAK
K1dlYkxheWVyVHJlZVZpZXcqIFdlYkxheWVyVHJlZVZpZXc6OmNyZWF0ZShXZWJMYXllclRyZWVW
aWV3Q2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkxheWVyJiByb290LCBjb25zdCBXZWJMYXllclRy
ZWVWaWV3OjpTZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAgT3duUHRyPFdlYkxheWVyVHJlZVZp
ZXdJbXBsPiBsYXllclRyZWVWaWV3SW1wbCA9IGFkb3B0UHRyKG5ldyBXZWJMYXllclRyZWVWaWV3
SW1wbChjbGllbnQpKTsKKyAgICBpZiAoIWxheWVyVHJlZVZpZXdJbXBsLT5pbml0aWFsaXplKHNl
dHRpbmdzKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgbGF5ZXJUcmVlVmlld0ltcGwtPnNldFJv
b3RMYXllcihyb290KTsKKyAgICByZXR1cm4gbGF5ZXJUcmVlVmlld0ltcGwubGVha1B0cigpOwog
fQogCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gQ29udmVydHMgbWVzc2FnZXMgZnJvbSBDQ0xh
eWVyVHJlZUhvc3RDbGllbnQgdG8gV2ViTGF5ZXJUcmVlVmlld0NsaWVudC4KLWNsYXNzIFdlYkxh
eWVyVHJlZVZpZXdDbGllbnRBZGFwdGVyIDogcHVibGljIFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dENsaWVudCB7Ci1wdWJsaWM6Ci0gICAgV2ViTGF5ZXJUcmVlVmlld0NsaWVudEFkYXB0ZXIoV2Vi
TGF5ZXJUcmVlVmlld0NsaWVudCogY2xpZW50KQotICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkK
LSAgICAgICAgLCBtX3VzaW5nUmVhbE91dHB1dFN1cmZhY2UoZmFsc2UpCi0gICAgewotICAgIH0K
LSAgICB2aXJ0dWFsIH5XZWJMYXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcigpIHsgfQotCi0gICAg
Ly8gQ0NMYXllclRyZWVIb3N0Q2xpZW50IGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVhbCB2b2lk
IHdpbGxCZWdpbkZyYW1lKCkgT1ZFUlJJREUgeyBtX2NsaWVudC0+d2lsbEJlZ2luRnJhbWUoKTsg
fQotICAgIHZpcnR1YWwgdm9pZCBkaWRCZWdpbkZyYW1lKCkgT1ZFUlJJREUgeyBtX2NsaWVudC0+
ZGlkQmVnaW5GcmFtZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91
YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKSBPVkVSUklERSB7IG1fY2xpZW50LT51cGRhdGVB
bmltYXRpb25zKG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKTsgfQotICAgIHZpcnR1YWwgdm9pZCBs
YXlvdXQoKSBPVkVSUklERSB7IG1fY2xpZW50LT5sYXlvdXQoKTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRh
LCBmbG9hdCBwYWdlU2NhbGUpIE9WRVJSSURFIHsgbV9jbGllbnQtPmFwcGx5U2Nyb2xsQW5kU2Nh
bGUoc2Nyb2xsRGVsdGEsIHBhZ2VTY2FsZSk7IH0KLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2Vi
Q29tcG9zaXRvck91dHB1dFN1cmZhY2U+IGNyZWF0ZU91dHB1dFN1cmZhY2UoKSBPVkVSUklERQot
ICAgIHsKLSAgICAgICAgV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2UqIG91dHB1dFN1cmZhY2Ug
PSBtX2NsaWVudC0+Y3JlYXRlT3V0cHV0U3VyZmFjZSgpOwotICAgICAgICBpZiAob3V0cHV0U3Vy
ZmFjZSkgewotICAgICAgICAgICAgbV91c2luZ1JlYWxPdXRwdXRTdXJmYWNlID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHJldHVybiBhZG9wdFB0cihvdXRwdXRTdXJmYWNlKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIFRlbXBvcmFyaWx5LCBpZiB0aGUgb3V0cHV0IHN1cmZhY2UgY2FuJ3QgYmUgY3Jl
YXRlZCwgY3JlYXRlIGEgV2ViR3JhcGhpY3NDb250ZXh0M0QKLSAgICAgICAgLy8gZGlyZWN0bHku
IFRoaXMgYWxsb3dzIGJvb3RzdHJhcHBpbmcgdGhlIG91dHB1dCBzdXJmYWNlIHN5c3RlbSB3aGls
ZSBkb3duc3RyZWFtCi0gICAgICAgIC8vIHVzZXJzIG9mIHRoZSBBUEkgc3RpbGwgdXNlIHRoZSBv
bGQgYXBwcm9hY2guCi0gICAgICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbV9j
bGllbnQtPmNyZWF0ZUNvbnRleHQzRCgpOwotICAgICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBtX3VzaW5nUmVhbE91dHB1dFN1cmZhY2Ug
PSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJHcmFwaGljc0NvbnRleHRU
b091dHB1dFN1cmZhY2VBZGFwdGVyKGFkb3B0UHRyKGNvbnRleHQpKSk7Ci0gICAgfQotCi0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShib29sIHN1Y2Nlc3MpIE9WRVJS
SURFCi0gICAgewotICAgICAgICBpZiAobV91c2luZ1JlYWxPdXRwdXRTdXJmYWNlKSB7Ci0gICAg
ICAgICAgICBtX2NsaWVudC0+ZGlkUmVjcmVhdGVPdXRwdXRTdXJmYWNlKHN1Y2Nlc3MpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fY2xpZW50LT5kaWRSZWJpbmRH
cmFwaGljc0NvbnRleHQoc3VjY2Vzcyk7Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29t
bWl0KCkgT1ZFUlJJREUgeyBtX2NsaWVudC0+d2lsbENvbW1pdCgpOyB9Ci0gICAgdmlydHVhbCB2
b2lkIGRpZENvbW1pdCgpIE9WRVJSSURFIHsgbV9jbGllbnQtPmRpZENvbW1pdCgpOyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIE9WRVJSSURFIHsgbV9jbGllbnQt
PmRpZENvbW1pdEFuZERyYXdGcmFtZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRl
U3dhcEJ1ZmZlcnMoKSBPVkVSUklERSB7IG1fY2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJz
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKSBPVkVSUklERSB7IG1f
Y2xpZW50LT5zY2hlZHVsZUNvbXBvc2l0ZSgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViTGF5ZXJU
cmVlVmlld0NsaWVudCogbV9jbGllbnQ7Ci0gICAgYm9vbCBtX3VzaW5nUmVhbE91dHB1dFN1cmZh
Y2U7Ci19OwotCi1QYXNzT3duUHRyPFdlYkxheWVyVHJlZVZpZXdJbXBsPiBXZWJMYXllclRyZWVW
aWV3SW1wbDo6Y3JlYXRlKFdlYkxheWVyVHJlZVZpZXdDbGllbnQqIGNsaWVudCwgY29uc3QgV2Vi
TGF5ZXImIHJvb3QsIGNvbnN0IFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzJiBzZXR0aW5ncykK
LXsKLSAgICBPd25QdHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+IGltcGwgPSBhZG9wdFB0cihuZXcg
V2ViTGF5ZXJUcmVlVmlld0ltcGwoY2xpZW50LCBzZXR0aW5ncykpOwotICAgIGlmICghaW1wbC0+
bGF5ZXJUcmVlSG9zdCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpbXBsLT5sYXll
clRyZWVIb3N0KCktPnNldFJvb3RMYXllcihzdGF0aWNfY2FzdDxjb25zdCBXZWJMYXllckltcGwq
Pigmcm9vdCktPmxheWVyKCkpOwotICAgIHJldHVybiBpbXBsLnJlbGVhc2UoKTsKLX0KLQotV2Vi
TGF5ZXJUcmVlVmlld0ltcGw6OldlYkxheWVyVHJlZVZpZXdJbXBsKFdlYkxheWVyVHJlZVZpZXdD
bGllbnQqIGNsaWVudCwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MmIHNldHRpbmdz
KSAKLSAgICA6IG1fY2xpZW50QWRhcHRlcihhZG9wdFB0cihuZXcgV2ViTGF5ZXJUcmVlVmlld0Ns
aWVudEFkYXB0ZXIoY2xpZW50KSkpCi0gICAgLCBtX2xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVI
b3N0OjpjcmVhdGUobV9jbGllbnRBZGFwdGVyLmdldCgpLCBzZXR0aW5ncykpCitXZWJMYXllclRy
ZWVWaWV3SW1wbDo6V2ViTGF5ZXJUcmVlVmlld0ltcGwoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCog
Y2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQogewogfQogCkBAIC0xNTcsNCArNTksMjE4
IEBAIFdlYkxheWVyVHJlZVZpZXdJbXBsOjp+V2ViTGF5ZXJUcmVlVmlld0ltcGwoKQogewogfQog
Citib29sIFdlYkxheWVyVHJlZVZpZXdJbXBsOjppbml0aWFsaXplKGNvbnN0IFdlYkxheWVyVHJl
ZVZpZXc6OlNldHRpbmdzJiB3ZWJTZXR0aW5ncykKK3sKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdz
IHNldHRpbmdzOworICAgIHNldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IHdlYlNldHRpbmdz
LmFjY2VsZXJhdGVQYWludGluZzsKKyAgICBzZXR0aW5ncy5zaG93RlBTQ291bnRlciA9IHdlYlNl
dHRpbmdzLnNob3dGUFNDb3VudGVyOworICAgIHNldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJl
ZSA9IHdlYlNldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZTsKKyAgICBzZXR0aW5ncy5zaG93
UGFpbnRSZWN0cyA9IHdlYlNldHRpbmdzLnNob3dQYWludFJlY3RzOworICAgIHNldHRpbmdzLnJl
bmRlclZTeW5jRW5hYmxlZCA9IHdlYlNldHRpbmdzLnJlbmRlclZTeW5jRW5hYmxlZDsKKyAgICBz
ZXR0aW5ncy5yZWZyZXNoUmF0ZSA9IHdlYlNldHRpbmdzLnJlZnJlc2hSYXRlOworICAgIHNldHRp
bmdzLmRlZmF1bHRUaWxlU2l6ZSA9IHdlYlNldHRpbmdzLmRlZmF1bHRUaWxlU2l6ZTsKKyAgICBz
ZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXplID0gd2ViU2V0dGluZ3MubWF4VW50aWxlZExheWVy
U2l6ZTsKKyAgICBtX2xheWVyVHJlZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlz
LCBzZXR0aW5ncyk7CisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6
c2V0U3VyZmFjZVJlYWR5KCkKK3sKKyAgICBtX2xheWVyVHJlZUhvc3QtPnNldFN1cmZhY2VSZWFk
eSgpOworfQorCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpzZXRSb290TGF5ZXIoY29uc3Qg
V2ViTGF5ZXImIHJvb3QpCit7CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIoc3Rh
dGljX2Nhc3Q8Y29uc3QgV2ViTGF5ZXJJbXBsKj4oJnJvb3QpLT5sYXllcigpKTsKK30KKwordm9p
ZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6Y2xlYXJSb290TGF5ZXIoKQoreworICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0Um9vdExheWVyKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4oKSk7Cit9CisK
K2ludCBXZWJMYXllclRyZWVWaWV3SW1wbDo6Y29tcG9zaXRvcklkZW50aWZpZXIoKQoreworICAg
IHJldHVybiBtX2xheWVyVHJlZUhvc3QtPmNvbXBvc2l0b3JJZGVudGlmaWVyKCk7Cit9CisKK3Zv
aWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBXZWJTaXplJiBs
YXlvdXRWaWV3cG9ydFNpemUsIGNvbnN0IFdlYlNpemUmIGRldmljZVZpZXdwb3J0U2l6ZSkKK3sK
KyAgICBpZiAoIWRldmljZVZpZXdwb3J0U2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKGxheW91dFZpZXdwb3J0U2l6ZSwgZGV2aWNlVmlld3Bv
cnRTaXplKTsKKyAgICBlbHNlCisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRT
aXplKGxheW91dFZpZXdwb3J0U2l6ZSwgbGF5b3V0Vmlld3BvcnRTaXplKTsKK30KKworV2ViU2l6
ZSBXZWJMYXllclRyZWVWaWV3SW1wbDo6bGF5b3V0Vmlld3BvcnRTaXplKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gV2ViU2l6ZShtX2xheWVyVHJlZUhvc3QtPmxheW91dFZpZXdwb3J0U2l6ZSgpKTsK
K30KKworV2ViU2l6ZSBXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGV2aWNlVmlld3BvcnRTaXplKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gV2ViU2l6ZShtX2xheWVyVHJlZUhvc3QtPmRldmljZVZpZXdw
b3J0U2l6ZSgpKTsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0RGV2aWNlU2Nh
bGVGYWN0b3IoY29uc3QgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCit7CisgICAgbV9sYXllclRy
ZWVIb3N0LT5zZXREZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7Cit9CisKK2Zs
b2F0IFdlYkxheWVyVHJlZVZpZXdJbXBsOjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdC0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKK30KKwordm9p
ZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9yIGNvbG9y
KQoreworICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKK30K
Kwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
KGJvb2wgdHJhbnNwYXJlbnQpCit7CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRIYXNUcmFuc3Bh
cmVudEJhY2tncm91bmQodHJhbnNwYXJlbnQpOworfQorCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJ
bXBsOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKK3sKKyAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dFZpc2libGUodmlzaWJsZSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNldFBh
Z2VTY2FsZUZhY3RvckFuZExpbWl0cyhmbG9hdCBwYWdlU2NhbGVGYWN0b3IsIGZsb2F0IG1pbmlt
dW0sIGZsb2F0IG1heGltdW0pCit7CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRQYWdlU2NhbGVG
YWN0b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9yLCBtaW5pbXVtLCBtYXhpbXVtKTsKK30KKwor
dm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3Qg
V2ViUG9pbnQmIHNjcm9sbCwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IG5ld1BhZ2VTY2FsZSwgZG91
YmxlIGR1cmF0aW9uU2VjKQoreworICAgIG1fbGF5ZXJUcmVlSG9zdC0+c3RhcnRQYWdlU2NhbGVB
bmltYXRpb24oSW50U2l6ZShzY3JvbGwueCwgc2Nyb2xsLnkpLCB1c2VBbmNob3IsIG5ld1BhZ2VT
Y2FsZSwgZHVyYXRpb25TZWMpOworfQorCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpzZXRO
ZWVkc0FuaW1hdGUoKQoreworICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNBbmltYXRlKCk7
Cit9CisKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNldE5lZWRzUmVkcmF3KCkKK3sKKyAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzUmVkcmF3KCk7Cit9CisKK2Jvb2wgV2ViTGF5ZXJU
cmVlVmlld0ltcGw6OmNvbW1pdFJlcXVlc3RlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5
ZXJUcmVlSG9zdC0+Y29tbWl0UmVxdWVzdGVkKCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJUcmVlVmll
d0ltcGw6OmNvbXBvc2l0ZSgpCit7CisgICAgaWYgKENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSkK
KyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOworICAgIGVsc2UKKyAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21wb3NpdGUoKTsKK30KKwordm9pZCBXZWJMYXllclRy
ZWVWaWV3SW1wbDo6dXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpCit7Cisg
ICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVBbmltYXRpb25zKGZyYW1lQmVnaW5UaW1lKTsKK30K
KworYm9vbCBXZWJMYXllclRyZWVWaWV3SW1wbDo6Y29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAq
cGl4ZWxzLCBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIHJldHVybiBtX2xheWVyVHJlZUhv
c3QtPmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHBpeGVscywgcmVjdCk7Cit9CisKK3ZvaWQgV2ViTGF5
ZXJUcmVlVmlld0ltcGw6OmZpbmlzaEFsbFJlbmRlcmluZygpCit7CisgICAgbV9sYXllclRyZWVI
b3N0LT5maW5pc2hBbGxSZW5kZXJpbmcoKTsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1w
bDo6cmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAoreworICAg
IENDUmVuZGVyaW5nU3RhdHMgY2NTdGF0czsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnJlbmRlcmlu
Z1N0YXRzKGNjU3RhdHMpOworCisgICAgc3RhdHMubnVtQW5pbWF0aW9uRnJhbWVzID0gY2NTdGF0
cy5udW1BbmltYXRpb25GcmFtZXM7CisgICAgc3RhdHMubnVtRnJhbWVzU2VudFRvU2NyZWVuID0g
Y2NTdGF0cy5udW1GcmFtZXNTZW50VG9TY3JlZW47CisgICAgc3RhdHMuZHJvcHBlZEZyYW1lQ291
bnQgPSBjY1N0YXRzLmRyb3BwZWRGcmFtZUNvdW50OworICAgIHN0YXRzLnRvdGFsUGFpbnRUaW1l
SW5TZWNvbmRzID0gY2NTdGF0cy50b3RhbFBhaW50VGltZUluU2Vjb25kczsKKyAgICBzdGF0cy50
b3RhbFJhc3Rlcml6ZVRpbWVJblNlY29uZHMgPSBjY1N0YXRzLnRvdGFsUmFzdGVyaXplVGltZUlu
U2Vjb25kczsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0Rm9udEF0bGFzKFNr
Qml0bWFwIGJpdG1hcCwgV2ViUmVjdCBhc2NpaVRvV2ViUmVjdFRhYmxlWzEyOF0sIGludCBmb250
SGVpZ2h0KQoreworICAgIEludFJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdOworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgMTI4OyArK2kpCisgICAgICAgIGFzY2lpVG9SZWN0VGFibGVbaV0gPSBh
c2NpaVRvV2ViUmVjdFRhYmxlW2ldOworICAgIE93blB0cjxDQ0ZvbnRBdGxhcz4gZm9udEF0bGFz
ID0gQ0NGb250QXRsYXM6OmNyZWF0ZShiaXRtYXAsIGFzY2lpVG9SZWN0VGFibGUsIGZvbnRIZWln
aHQpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Rm9udEF0bGFzKGZvbnRBdGxhcy5yZWxlYXNl
KCkpOworfQorCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpsb3NlQ29tcG9zaXRvckNvbnRl
eHQoaW50IG51bVRpbWVzKQoreworICAgIG1fbGF5ZXJUcmVlSG9zdC0+bG9zZUNvbnRleHQobnVt
VGltZXMpOworfQorCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjp3aWxsQmVnaW5GcmFtZSgp
Cit7CisgICAgbV9jbGllbnQtPndpbGxCZWdpbkZyYW1lKCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJU
cmVlVmlld0ltcGw6OmRpZEJlZ2luRnJhbWUoKQoreworICAgIG1fY2xpZW50LT5kaWRCZWdpbkZy
YW1lKCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmFuaW1hdGUoZG91YmxlIG1v
bm90b25pY0ZyYW1lQmVnaW5UaW1lKQoreworICAgIG1fY2xpZW50LT51cGRhdGVBbmltYXRpb25z
KG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKTsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1w
bDo6bGF5b3V0KCkKK3sKKyAgICBtX2NsaWVudC0+bGF5b3V0KCk7Cit9CisKK3ZvaWQgV2ViTGF5
ZXJUcmVlVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkKK3sKKyAgICBtX2NsaWVudC0+YXBwbHlT
Y3JvbGxBbmRTY2FsZShzY3JvbGxEZWx0YSwgcGFnZVNjYWxlKTsKK30KKworUGFzc093blB0cjxX
ZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZT4gV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZU91
dHB1dFN1cmZhY2UoKQoreworICAgIHJldHVybiBhZG9wdFB0cihtX2NsaWVudC0+Y3JlYXRlT3V0
cHV0U3VyZmFjZSgpKTsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkUmVjcmVh
dGVPdXRwdXRTdXJmYWNlKGJvb2wgc3VjY2VzcykKK3sKKyAgICBtX2NsaWVudC0+ZGlkUmVjcmVh
dGVPdXRwdXRTdXJmYWNlKHN1Y2Nlc3MpOworfQorCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBs
Ojp3aWxsQ29tbWl0KCkKK3sKKyAgICBtX2NsaWVudC0+d2lsbENvbW1pdCgpOworfQorCit2b2lk
IFdlYkxheWVyVHJlZVZpZXdJbXBsOjpkaWRDb21taXQoKQoreworICAgIG1fY2xpZW50LT5kaWRD
b21taXQoKTsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkQ29tbWl0QW5kRHJh
d0ZyYW1lKCkKK3sKKyAgICBtX2NsaWVudC0+ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7Cit9CisK
K3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKQorewor
ICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7Cit9CisKK3ZvaWQgV2ViTGF5
ZXJUcmVlVmlld0ltcGw6OnNjaGVkdWxlQ29tcG9zaXRlKCkKK3sKKyAgICBtX2NsaWVudC0+c2No
ZWR1bGVDb21wb3NpdGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaAppbmRleCAzYmM0
MzQxMGQ4YjIwYmIzNTE0NDU4YWVhNDgzMGI3NzRkNjhkMzZhLi43MWFkZWQ1OGNlNTIwMGE5NTFj
ODZmNzk1YzE0OWM1MjNjMDVhNDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKQEAgLTI2LDMwICsyNiw2NSBAQAogI2lmbmRlZiBX
ZWJMYXllclRyZWVWaWV3SW1wbF9oCiAjZGVmaW5lIFdlYkxheWVyVHJlZVZpZXdJbXBsX2gKIAor
I2luY2x1ZGUgIkNDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllclRy
ZWVWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKLX0K
LQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJMYXllcjsKIGNsYXNzIFdlYkxheWVyVHJl
ZVZpZXdDbGllbnQ7CiBjbGFzcyBXZWJMYXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcjsKIAotY2xh
c3MgV2ViTGF5ZXJUcmVlVmlld0ltcGwgeworY2xhc3MgV2ViTGF5ZXJUcmVlVmlld0ltcGwgOiBw
dWJsaWMgV2ViTGF5ZXJUcmVlVmlldywgcHVibGljIFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdENs
aWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V2ViTGF5ZXJUcmVlVmlld0lt
cGw+IGNyZWF0ZShXZWJMYXllclRyZWVWaWV3Q2xpZW50KiwgY29uc3QgV2ViTGF5ZXImIHJvb3Qs
IGNvbnN0IFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzJik7CisgICAgZXhwbGljaXQgV2ViTGF5
ZXJUcmVlVmlld0ltcGwoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCopOwogICAgIHZpcnR1YWwgfldl
YkxheWVyVHJlZVZpZXdJbXBsKCk7CiAKLSAgICBXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3QqIGxh
eWVyVHJlZUhvc3QoKSB7IHJldHVybiBtX2xheWVyVHJlZUhvc3QuZ2V0KCk7IH0KKyAgICBib29s
IGluaXRpYWxpemUoY29uc3QgU2V0dGluZ3MmKTsKIAotcHJpdmF0ZToKLSAgICBXZWJMYXllclRy
ZWVWaWV3SW1wbChXZWJMYXllclRyZWVWaWV3Q2xpZW50KiwgY29uc3QgV2ViTGF5ZXJUcmVlVmll
dzo6U2V0dGluZ3MmKTsKKyAgICAvLyBXZWJMYXllclRyZWVWaWV3IGltcGxlbWVudGF0aW9uLgor
ICAgIHZpcnR1YWwgdm9pZCBzZXRTdXJmYWNlUmVhZHkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Um9vdExheWVyKGNvbnN0IFdlYkxheWVyJikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGNsZWFyUm9vdExheWVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgY29tcG9z
aXRvcklkZW50aWZpZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld3BvcnRT
aXplKGNvbnN0IFdlYlNpemUmIGxheW91dFZpZXdwb3J0U2l6ZSwgY29uc3QgV2ViU2l6ZSYgZGV2
aWNlVmlld3BvcnRTaXplID0gV2ViU2l6ZSgpKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYlNp
emUgbGF5b3V0Vmlld3BvcnRTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJT
aXplIGRldmljZVZpZXdwb3J0U2l6ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRIYXNUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHNldFZpc2libGUoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VT
Y2FsZUZhY3RvckFuZExpbWl0cyhmbG9hdCBwYWdlU2NhbGVGYWN0b3IsIGZsb2F0IG1pbmltdW0s
IGZsb2F0IG1heGltdW0pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2Fs
ZUFuaW1hdGlvbihjb25zdCBXZWJQb2ludCYgZGVzdGluYXRpb24sIGJvb2wgdXNlQW5jaG9yLCBm
bG9hdCBuZXdQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHNldE5lZWRzQW5pbWF0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc1JlZHJhdygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjb21taXRSZXF1ZXN0
ZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcG9zaXRlKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5U
aW1lKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlQW5kUmVhZGJhY2sodm9p
ZCAqcGl4ZWxzLCBjb25zdCBXZWJSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGZp
bmlzaEFsbFJlbmRlcmluZygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW5kZXJpbmdT
dGF0cyhXZWJSZW5kZXJpbmdTdGF0cyYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRGb250QXRsYXMoU2tCaXRtYXAsIFdlYlJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdLCBp
bnQgZm9udEhlaWdodCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGxvc2VDb21wb3NpdG9y
Q29udGV4dChpbnQgbnVtVGltZXMpIE9WRVJSSURFOwogCi0gICAgT3duUHRyPFdlYkxheWVyVHJl
ZVZpZXdDbGllbnRBZGFwdGVyPiBtX2NsaWVudEFkYXB0ZXI7CisgICAgLy8gV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0Q2xpZW50IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCB3aWxs
QmVnaW5GcmFtZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRCZWdpbkZyYW1lKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGUoZG91YmxlIG1vbm90b25pY0ZyYW1l
QmVnaW5UaW1lKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlPiBjcmVhdGVPdXRwdXRTdXJm
YWNlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFj
ZShib29sIHN1Y2Nlc3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0KCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdCgpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBzY2hlZHVsZUNvbXBvc2l0ZSgpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIFdlYkxheWVy
VHJlZVZpZXdDbGllbnQqIG1fY2xpZW50OwogICAgIE93blB0cjxXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q+IG1fbGF5ZXJUcmVlSG9zdDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAppbmRleCBjNmY5ZjdlMDk2MTY1MDlhYzM1NzBlNzE4YWUxN2E2MTBi
MGZhZTUwLi42MjNlMzEwN2FkMTc5ZDZmNDY5MDY0MjdkY2I1OTU2ZGFhNzhkYzM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC03NjgsMTMgKzc2OCwx
MyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24o
Y29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcgogCiB2b2lkIFdlYlZpZXdJbXBsOjpyZW5kZXJp
bmdTdGF0cyhXZWJSZW5kZXJpbmdTdGF0cyYgc3RhdHMpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2xh
eWVyVHJlZVZpZXcuaXNOdWxsKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5yZW5kZXJpbmdT
dGF0cyhzdGF0cyk7CisgICAgaWYgKG1fbGF5ZXJUcmVlVmlldykKKyAgICAgICAgbV9sYXllclRy
ZWVWaWV3LT5yZW5kZXJpbmdTdGF0cyhzdGF0cyk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnN0
YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFBvaW50JiB0YXJnZXRQb3NpdGlvbiwgYm9v
bCB1c2VBbmNob3IsIGZsb2F0IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25JblNlY29uZHMpCiB7
Ci0gICAgaWYgKG1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSkKKyAgICBpZiAoIW1fbGF5ZXJUcmVl
VmlldykKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UG9pbnQgY2xhbXBlZFBvaW50ID0gdGFy
Z2V0UG9zaXRpb247CkBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c3RhcnRQ
YWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50UG9pbnQmIHRhcmdldFBvc2l0aW9uLCBib29sIHUK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fbGF5ZXJUcmVlVmlldy5zdGFydFBhZ2VT
Y2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBuZXdTY2FsZSwgZHVyYXRp
b25JblNlY29uZHMpOworICAgIG1fbGF5ZXJUcmVlVmlldy0+c3RhcnRQYWdlU2NhbGVBbmltYXRp
b24odGFyZ2V0UG9zaXRpb24sIHVzZUFuY2hvciwgbmV3U2NhbGUsIGR1cmF0aW9uSW5TZWNvbmRz
KTsKIH0KICNlbmRpZgogCkBAIC0xNjUwLDggKzE2NTAsOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1
cGRhdGVCYXR0ZXJ5U3RhdHVzKGNvbnN0IFdlYkJhdHRlcnlTdGF0dXMmIHN0YXR1cykKIHZvaWQg
V2ViVmlld0ltcGw6OnNldENvbXBvc2l0b3JTdXJmYWNlUmVhZHkoKQogewogICAgIG1fY29tcG9z
aXRvclN1cmZhY2VSZWFkeSA9IHRydWU7Ci0gICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxs
KCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRTdXJmYWNlUmVhZHkoKTsKKyAgICBpZiAo
bV9sYXllclRyZWVWaWV3KQorICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNldFN1cmZhY2VSZWFk
eSgpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjphbmltYXRlKGRvdWJsZSkKQEAgLTE2NjMsNyAr
MTY2Myw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmFuaW1hdGUoZG91YmxlKQogICAgIC8vIEluIGNv
bXBvc2l0ZWQgbW9kZSwgd2UgYWx3YXlzIGdvIHRocm91Z2ggdGhlIGNvbXBvc2l0b3Igc28gaXQg
Y2FuIGFwcGx5CiAgICAgLy8gYXBwcm9wcmlhdGUgZmxvdy1jb250cm9sIG1lY2hhbmlzbXMuCiAg
ICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKQotICAgICAgICBtX2xheWVy
VHJlZVZpZXcudXBkYXRlQW5pbWF0aW9ucyhtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7CisgICAg
ICAgIG1fbGF5ZXJUcmVlVmlldy0+dXBkYXRlQW5pbWF0aW9ucyhtb25vdG9uaWNGcmFtZUJlZ2lu
VGltZSk7CiAgICAgZWxzZQogI2VuZGlmCiAgICAgICAgIHVwZGF0ZUFuaW1hdGlvbnMobW9ub3Rv
bmljRnJhbWVCZWdpblRpbWUpOwpAQCAtMTcxNyw3ICsxNzE3LDcgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6bGF5b3V0KCkKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB2b2lkIFdlYlZp
ZXdJbXBsOjpkb1BpeGVsUmVhZGJhY2tUb0NhbnZhcyhXZWJDYW52YXMqIGNhbnZhcywgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHsKLSAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSk7
CisgICAgQVNTRVJUKG1fbGF5ZXJUcmVlVmlldyk7CiAKICAgICBQbGF0Zm9ybUNvbnRleHRTa2lh
IGNvbnRleHQoY2FudmFzKTsKIApAQCAtMTczMSw3ICsxNzMxLDcgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6ZG9QaXhlbFJlYWRiYWNrVG9DYW52YXMoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IEludFJl
Y3QmIHJlY3QKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKEltYWdlQnVmZmVy
OjpjcmVhdGUocmVjdC5zaXplKCkpKTsKICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBp
eGVsQXJyYXkoVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0
aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpKTsKICAgICBpZiAoaW1hZ2VCdWZmZXIgJiYgcGl4ZWxB
cnJheSkgewotICAgICAgICBtX2xheWVyVHJlZVZpZXcuY29tcG9zaXRlQW5kUmVhZGJhY2socGl4
ZWxBcnJheS0+ZGF0YSgpLCBpbnZlcnRSZWN0KTsKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LT5j
b21wb3NpdGVBbmRSZWFkYmFjayhwaXhlbEFycmF5LT5kYXRhKCksIGludmVydFJlY3QpOwogICAg
ICAgICBpbWFnZUJ1ZmZlci0+cHV0Qnl0ZUFycmF5KFByZW11bHRpcGxpZWQsIHBpeGVsQXJyYXku
Z2V0KCksIHJlY3Quc2l6ZSgpLCBJbnRSZWN0KEludFBvaW50KCksIHJlY3Quc2l6ZSgpKSwgSW50
UG9pbnQoKSk7CiAgICAgICAgIGdjLnNhdmUoKTsKICAgICAgICAgZ2MudHJhbnNsYXRlKEludFNp
emUoMCwgYml0bWFwSGVpZ2h0KSk7CkBAIC0xNzU5LDcgKzE3NTksNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpwYWludChXZWJDYW52YXMqIGNhbnZhcywgY29uc3QgV2ViUmVjdCYgcmVjdCwgUGFpbnRP
cHRpb25zIG9wdAogICAgICAgICBpZiAoY2FudmFzKSB7CiAgICAgICAgICAgICAvLyBDbGlwIHJl
Y3QgdG8gdGhlIGNvbmZpbmVzIG9mIHRoZSByb290TGF5ZXJUZXh0dXJlLgogICAgICAgICAgICAg
SW50UmVjdCByZXNpemVSZWN0KHJlY3QpOwotICAgICAgICAgICAgcmVzaXplUmVjdC5pbnRlcnNl
Y3QoSW50UmVjdChJbnRQb2ludCgwLCAwKSwgbV9sYXllclRyZWVWaWV3LmRldmljZVZpZXdwb3J0
U2l6ZSgpKSk7CisgICAgICAgICAgICByZXNpemVSZWN0LmludGVyc2VjdChJbnRSZWN0KEludFBv
aW50KDAsIDApLCBtX2xheWVyVHJlZVZpZXctPmRldmljZVZpZXdwb3J0U2l6ZSgpKSk7CiAgICAg
ICAgICAgICBkb1BpeGVsUmVhZGJhY2tUb0NhbnZhcyhjYW52YXMsIHJlc2l6ZVJlY3QpOwogICAg
ICAgICB9CiAjZW5kaWYKQEAgLTE3OTksNyArMTc5OSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmNv
bXBvc2l0ZShib29sKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBp
ZiAoV2ViQ29tcG9zaXRvcjo6dGhyZWFkaW5nRW5hYmxlZCgpKQotICAgICAgICBtX2xheWVyVHJl
ZVZpZXcuc2V0TmVlZHNSZWRyYXcoKTsKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXROZWVk
c1JlZHJhdygpOwogICAgIGVsc2UgewogICAgICAgICBBU1NFUlQoaXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQWN0aXZlKCkpOwogICAgICAgICBpZiAoIXBhZ2UoKSkKQEAgLTE4MDgsNyArMTgwOCw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OmNvbXBvc2l0ZShib29sKQogICAgICAgICBpZiAobV9wYWdl
T3ZlcmxheXMpCiAgICAgICAgICAgICBtX3BhZ2VPdmVybGF5cy0+dXBkYXRlKCk7CiAKLSAgICAg
ICAgbV9sYXllclRyZWVWaWV3LmNvbXBvc2l0ZSgpOworICAgICAgICBtX2xheWVyVHJlZVZpZXct
PmNvbXBvc2l0ZSgpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMTgxNiwxNiArMTgxNiwxNiBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpjb21wb3NpdGUoYm9vbCkKIHZvaWQgV2ViVmlld0ltcGw6OnNldE5l
ZWRzUmVkcmF3KCkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYg
KCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkgJiYgaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0
aXZlKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5zZXROZWVkc1JlZHJhdygpOworICAgIGlm
IChtX2xheWVyVHJlZVZpZXcgJiYgaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpCisg
ICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0TmVlZHNSZWRyYXcoKTsKICNlbmRpZgogfQogCiBi
b29sIFdlYlZpZXdJbXBsOjppc0lucHV0VGhyb3R0bGVkKCkgY29uc3QKIHsKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkg
JiYgaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpCi0gICAgICAgIHJldHVybiBtX2xh
eWVyVHJlZVZpZXcuY29tbWl0UmVxdWVzdGVkKCk7CisgICAgaWYgKG1fbGF5ZXJUcmVlVmlldyAm
JiBpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuIG1fbGF5
ZXJUcmVlVmlldy0+Y29tbWl0UmVxdWVzdGVkKCk7CiAjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7
CiB9CkBAIC0xODMzLDggKzE4MzMsOCBAQCBib29sIFdlYlZpZXdJbXBsOjppc0lucHV0VGhyb3R0
bGVkKCkgY29uc3QKIHZvaWQgV2ViVmlld0ltcGw6Omxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQg
bnVtVGltZXMpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmICgh
bV9sYXllclRyZWVWaWV3LmlzTnVsbCgpKQotICAgICAgICBtX2xheWVyVHJlZVZpZXcubG9zZUNv
bXBvc2l0b3JDb250ZXh0KG51bVRpbWVzKTsKKyAgICBpZiAobV9sYXllclRyZWVWaWV3KQorICAg
ICAgICBtX2xheWVyVHJlZVZpZXctPmxvc2VDb21wb3NpdG9yQ29udGV4dChudW1UaW1lcyk7CiAj
ZW5kaWYKIH0KIApAQCAtMjc2MSw5ICsyNzYxLDkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0RGV2
aWNlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IpCiAKICAgICBwYWdlKCktPnNldERldmlj
ZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yKTsKIAotICAgIGlmICghbV9sYXllclRyZWVWaWV3Lmlz
TnVsbCgpICYmIG1fd2ViU2V0dGluZ3MtPmFwcGx5RGVmYXVsdERldmljZVNjYWxlRmFjdG9ySW5D
b21wb3NpdG9yKCkpIHsKKyAgICBpZiAobV9sYXllclRyZWVWaWV3ICYmIG1fd2ViU2V0dGluZ3Mt
PmFwcGx5RGVmYXVsdERldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpIHsKICAgICAgICAg
bV9kZXZpY2VTY2FsZUluQ29tcG9zaXRvciA9IHBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsK
LSAgICAgICAgbV9sYXllclRyZWVWaWV3LnNldERldmljZVNjYWxlRmFjdG9yKG1fZGV2aWNlU2Nh
bGVJbkNvbXBvc2l0b3IpOworICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNldERldmljZVNjYWxl
RmFjdG9yKG1fZGV2aWNlU2NhbGVJbkNvbXBvc2l0b3IpOwogICAgIH0KICAgICBpZiAobV9kZXZp
Y2VTY2FsZUluQ29tcG9zaXRvciAhPSAxKSB7CiAgICAgICAgIC8vIERvbid0IGFsbG93IHBhZ2Ug
c2NhbGluZyB3aGVuIGNvbXBvc2l0b3Igc2NhbGluZyBpcyBiZWluZyB1c2VkLApAQCAtMjg1OCw4
ICsyODU4LDggQEAgYm9vbCBXZWJWaWV3SW1wbDo6Y29tcHV0ZVBhZ2VTY2FsZUZhY3RvckxpbWl0
cygpCiAKICAgICBmbG9hdCBjbGFtcGVkU2NhbGUgPSBjbGFtcFBhZ2VTY2FsZUZhY3RvclRvTGlt
aXRzKHBhZ2VTY2FsZUZhY3RvcigpKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
Ci0gICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVl
Vmlldy5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoY2xhbXBlZFNjYWxlLCBtX21pbmltdW1Q
YWdlU2NhbGVGYWN0b3IsIG1fbWF4aW11bVBhZ2VTY2FsZUZhY3Rvcik7CisgICAgaWYgKG1fbGF5
ZXJUcmVlVmlldykKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRQYWdlU2NhbGVGYWN0b3JB
bmRMaW1pdHMoY2xhbXBlZFNjYWxlLCBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IsIG1fbWF4aW11
bVBhZ2VTY2FsZUZhY3Rvcik7CiAjZW5kaWYKICAgICBpZiAoY2xhbXBlZFNjYWxlICE9IHBhZ2VT
Y2FsZUZhY3RvcigpKSB7CiAgICAgICAgIHNldFBhZ2VTY2FsZUZhY3RvclByZXNlcnZpbmdTY3Jv
bGxPZmZzZXQoY2xhbXBlZFNjYWxlKTsKQEAgLTMzMzQsOCArMzMzNCw4IEBAIHZvaWQgV2ViVmll
d0ltcGw6OnNldElzVHJhbnNwYXJlbnQoYm9vbCBpc1RyYW5zcGFyZW50KQogICAgIGlmIChtX25v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdCkKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhv
c3QtPnNldE9wYXF1ZSghaXNUcmFuc3BhcmVudCk7CiAKLSAgICBpZiAoIW1fbGF5ZXJUcmVlVmll
dy5pc051bGwoKSkKLSAgICAgICAgbV9sYXllclRyZWVWaWV3LnNldEhhc1RyYW5zcGFyZW50QmFj
a2dyb3VuZChpc1RyYW5zcGFyZW50KTsKKyAgICBpZiAobV9sYXllclRyZWVWaWV3KQorICAgICAg
ICBtX2xheWVyVHJlZVZpZXctPnNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChpc1RyYW5zcGFy
ZW50KTsKIH0KIAogYm9vbCBXZWJWaWV3SW1wbDo6aXNUcmFuc3BhcmVudCgpIGNvbnN0CkBAIC0z
NjU1LDggKzM2NTUsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIo
R3JhcGhpY3NMYXllciogbGF5ZXIpCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
LT5zZXRTY3JvbGxMYXllcihzY3JvbGxMYXllcik7CiAgICAgfQogCi0gICAgaWYgKCFtX2xheWVy
VHJlZVZpZXcuaXNOdWxsKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRSb290TGF5ZXIo
bV9yb290TGF5ZXIpOworICAgIGlmIChtX2xheWVyVHJlZVZpZXcpIHsKKyAgICAgICAgaWYgKG1f
cm9vdExheWVyKQorICAgICAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRSb290TGF5ZXIoKm1f
cm9vdExheWVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9sYXllclRyZWVWaWV3LT5j
bGVhclJvb3RMYXllcigpOworICAgIH0KIAogICAgIEludFJlY3QgZGFtYWdlZFJlY3QoMCwgMCwg
bV9zaXplLndpZHRoLCBtX3NpemUuaGVpZ2h0KTsKICAgICBpZiAoIW1faXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQWN0aXZlKQpAQCAtMzY2NSw3ICszNjY5LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
c2V0Um9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAKIHZvaWQgV2ViVmll
d0ltcGw6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMoKQogewotICAgIG1fbGF5ZXJUcmVl
Vmlldy5zZXROZWVkc1JlZHJhdygpOworICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0TmVlZHNSZWRy
YXcoKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2Nyb2xsUm9vdExheWVyUmVjdChjb25zdCBJ
bnRTaXplJiwgY29uc3QgSW50UmVjdCYpCkBAIC0zNjc1LDcgKzM2NzksNyBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpzY3JvbGxSb290TGF5ZXJSZWN0KGNvbnN0IEludFNpemUmLCBjb25zdCBJbnRSZWN0
JikKIAogdm9pZCBXZWJWaWV3SW1wbDo6aW52YWxpZGF0ZVJvb3RMYXllclJlY3QoY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKLSAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSk7Cisg
ICAgQVNTRVJUKG1fbGF5ZXJUcmVlVmlldyk7CiAKICAgICBpZiAoIXBhZ2UoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMzY5Niw3ICszNzAwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0QmFja2dy
b3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKICAgICBXZWJDb3JlOjpDb2xv
ciBkb2N1bWVudEJhY2tncm91bmRDb2xvciA9IGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogV2Vi
Q29yZTo6Q29sb3I6OndoaXRlOwogICAgIFdlYkNvbG9yIHdlYkRvY3VtZW50QmFja2dyb3VuZENv
bG9yID0gZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IucmdiKCk7CiAgICAgbV9ub25Db21wb3NpdGVk
Q29udGVudEhvc3QtPnNldEJhY2tncm91bmRDb2xvcihkb2N1bWVudEJhY2tncm91bmRDb2xvcik7
Ci0gICAgbV9sYXllclRyZWVWaWV3LnNldEJhY2tncm91bmRDb2xvcih3ZWJEb2N1bWVudEJhY2tn
cm91bmRDb2xvcik7CisgICAgbV9sYXllclRyZWVWaWV3LT5zZXRCYWNrZ3JvdW5kQ29sb3Iod2Vi
RG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IpOwogfQogCiBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBX
ZWJWaWV3SW1wbDo6cm9vdEdyYXBoaWNzTGF5ZXIoKQpAQCAtMzcwOSw4ICszNzEzLDggQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6c2NoZWR1bGVBbmltYXRpb24oKQogewogICAgIGlmIChpc0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkgewogICAgICAgICBpZiAoV2ViQ29tcG9zaXRvcjo6dGhy
ZWFkaW5nRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlVmlldy5p
c051bGwoKSk7Ci0gICAgICAgICAgICBtX2xheWVyVHJlZVZpZXcuc2V0TmVlZHNBbmltYXRlKCk7
CisgICAgICAgICAgICBBU1NFUlQobV9sYXllclRyZWVWaWV3KTsKKyAgICAgICAgICAgIG1fbGF5
ZXJUcmVlVmlldy0+c2V0TmVlZHNBbmltYXRlKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgbV9jbGllbnQtPnNjaGVkdWxlQW5pbWF0aW9uKCk7CiAgICAgfSBlbHNlCkBAIC0zNzQ0LDE0
ICszNzQ4LDE0IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdB
Y3RpdmUgPSBmYWxzZTsKICAgICAgICAgLy8gV2UgbmVlZCB0byBmaW5pc2ggYWxsIEdMIHJlbmRl
cmluZyBiZWZvcmUgc2VuZGluZyBkaWREZWFjdGl2YXRlQ29tcG9zaXRvcigpIHRvIHByZXZlbnQK
ICAgICAgICAgLy8gZmxpY2tlcmluZyB3aGVuIGNvbXBvc2l0aW5nIHR1cm5zIG9mZi4KLSAgICAg
ICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpCi0gICAgICAgICAgICBtX2xheWVyVHJl
ZVZpZXcuZmluaXNoQWxsUmVuZGVyaW5nKCk7CisgICAgICAgIGlmIChtX2xheWVyVHJlZVZpZXcp
CisgICAgICAgICAgICBtX2xheWVyVHJlZVZpZXctPmZpbmlzaEFsbFJlbmRlcmluZygpOwogICAg
ICAgICBtX2NsaWVudC0+ZGlkRGVhY3RpdmF0ZUNvbXBvc2l0b3IoKTsKLSAgICB9IGVsc2UgaWYg
KCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpIHsKKyAgICB9IGVsc2UgaWYgKG1fbGF5ZXJUcmVl
VmlldykgewogICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IHRydWU7
CiAgICAgICAgIHVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCk7CiAKLSAgICAgICAgbV9jbGllbnQt
PmRpZEFjdGl2YXRlQ29tcG9zaXRvcihtX2xheWVyVHJlZVZpZXcuY29tcG9zaXRvcklkZW50aWZp
ZXIoKSk7CisgICAgICAgIG1fY2xpZW50LT5kaWRBY3RpdmF0ZUNvbXBvc2l0b3IobV9sYXllclRy
ZWVWaWV3LT5jb21wb3NpdG9ySWRlbnRpZmllcigpKTsKICAgICB9IGVsc2UgewogICAgICAgICBU
UkFDRV9FVkVOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQWN0aXZlKHRydWUpIik7CiAKQEAgLTM3NjksOCArMzc3Myw4IEBAIHZvaWQgV2ViVmll
d0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAg
ICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldFNob3dEZWJ1Z0JvcmRlcnMocGFn
ZSgpLT5zZXR0aW5ncygpLT5zaG93RGVidWdCb3JkZXJzKCkpOwogICAgICAgICBtX25vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdC0+c2V0T3BhcXVlKCFpc1RyYW5zcGFyZW50KCkpOwogCi0gICAgICAg
IG1fbGF5ZXJUcmVlVmlldy5pbml0aWFsaXplKHRoaXMsICptX3Jvb3RMYXllciwgbGF5ZXJUcmVl
Vmlld1NldHRpbmdzKTsKLSAgICAgICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpIHsK
KyAgICAgICAgbV9sYXllclRyZWVWaWV3ID0gYWRvcHRQdHIoV2ViTGF5ZXJUcmVlVmlldzo6Y3Jl
YXRlKHRoaXMsICptX3Jvb3RMYXllciwgbGF5ZXJUcmVlVmlld1NldHRpbmdzKSk7CisgICAgICAg
IGlmIChtX2xheWVyVHJlZVZpZXcpIHsKICAgICAgICAgICAgIGlmIChtX3dlYlNldHRpbmdzLT5h
cHBseURlZmF1bHREZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpICYmIHBhZ2UoKS0+ZGV2
aWNlU2NhbGVGYWN0b3IoKSAhPSAxKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhZ2UoKS0+
ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAKQEAgLTM3NzksMTMgKzM3ODMsMTMgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBib29sIHZpc2libGUgPSBwYWdlKCktPnZpc2li
aWxpdHlTdGF0ZSgpID09IFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOwotICAgICAgICAgICAg
bV9sYXllclRyZWVWaWV3LnNldFZpc2libGUodmlzaWJsZSk7Ci0gICAgICAgICAgICBtX2xheWVy
VHJlZVZpZXcuc2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKHBhZ2VTY2FsZUZhY3RvcigpLCBt
X21pbmltdW1QYWdlU2NhbGVGYWN0b3IsIG1fbWF4aW11bVBhZ2VTY2FsZUZhY3Rvcik7CisgICAg
ICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNldFZpc2libGUodmlzaWJsZSk7CisgICAgICAgICAg
ICBtX2xheWVyVHJlZVZpZXctPnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhwYWdlU2NhbGVG
YWN0b3IoKSwgbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yLCBtX21heGltdW1QYWdlU2NhbGVGYWN0
b3IpOwogICAgICAgICAgICAgaWYgKG1fY29tcG9zaXRvclN1cmZhY2VSZWFkeSkKLSAgICAgICAg
ICAgICAgICBtX2xheWVyVHJlZVZpZXcuc2V0U3VyZmFjZVJlYWR5KCk7Ci0gICAgICAgICAgICBt
X2xheWVyVHJlZVZpZXcuc2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGlzVHJhbnNwYXJlbnQo
KSk7CisgICAgICAgICAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRTdXJmYWNlUmVhZHkoKTsK
KyAgICAgICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
KGlzVHJhbnNwYXJlbnQoKSk7CiAgICAgICAgICAgICB1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgp
OwotICAgICAgICAgICAgbV9jbGllbnQtPmRpZEFjdGl2YXRlQ29tcG9zaXRvcihtX2xheWVyVHJl
ZVZpZXcuY29tcG9zaXRvcklkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlk
QWN0aXZhdGVDb21wb3NpdG9yKG1fbGF5ZXJUcmVlVmlldy0+Y29tcG9zaXRvcklkZW50aWZpZXIo
KSk7CiAgICAgICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IHRydWU7
CiAgICAgICAgICAgICBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZCA9IGZhbHNlOwogICAgICAg
ICAgICAgaWYgKG1fcGFnZU92ZXJsYXlzKQpAQCAtMzc5Nyw3ICszODAxLDcgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQog
ICAgICAgICAgICAgICAgIFdlYlJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdOwogICAgICAgICAg
ICAgICAgIGludCBmb250SGVpZ2h0OwogICAgICAgICAgICAgICAgIFNrQml0bWFwIGJpdG1hcCA9
IFdlYkNvcmU6OkNvbXBvc2l0b3JIVURGb250QXRsYXM6OmdlbmVyYXRlRm9udEF0bGFzKGFzY2lp
VG9SZWN0VGFibGUsIGZvbnRIZWlnaHQpOwotICAgICAgICAgICAgICAgIG1fbGF5ZXJUcmVlVmll
dy5zZXRGb250QXRsYXMoYml0bWFwLCBhc2NpaVRvUmVjdFRhYmxlLCBmb250SGVpZ2h0KTsKKyAg
ICAgICAgICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNldEZvbnRBdGxhcyhiaXRtYXAsIGFzY2lp
VG9SZWN0VGFibGUsIGZvbnRIZWlnaHQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QuY2xlYXIoKTsKQEAgLTM5
NDcsNyArMzk1MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNjaGVkdWxlQ29tcG9zaXRlKCkKIAog
dm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKQogewotICAgIGlmICgh
cGFnZSgpIHx8ICFtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCB8fCBtX2xheWVyVHJlZVZpZXcu
aXNOdWxsKCkpCisgICAgaWYgKCFwYWdlKCkgfHwgIW1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
IHx8ICFtX2xheWVyVHJlZVZpZXcpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lVmlldyog
dmlldyA9IHBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKQEAgLTM5NjIsOCArMzk2Niw4IEBA
IHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCkKICAgICBJbnRTaXpl
IGxheW91dFZpZXdwb3J0U2l6ZSA9IHNpemUoKTsKICAgICBJbnRTaXplIGRldmljZVZpZXdwb3J0
U2l6ZSA9IHNpemUoKTsKICAgICBkZXZpY2VWaWV3cG9ydFNpemUuc2NhbGUoZGV2aWNlU2NhbGUp
OwotICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRWaWV3cG9ydFNpemUobGF5b3V0Vmlld3BvcnRTaXpl
LCBkZXZpY2VWaWV3cG9ydFNpemUpOwotICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRQYWdlU2NhbGVG
YWN0b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9yKCksIG1fbWluaW11bVBhZ2VTY2FsZUZhY3Rv
ciwgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKTsKKyAgICBtX2xheWVyVHJlZVZpZXctPnNldFZp
ZXdwb3J0U2l6ZShsYXlvdXRWaWV3cG9ydFNpemUsIGRldmljZVZpZXdwb3J0U2l6ZSk7CisgICAg
bV9sYXllclRyZWVWaWV3LT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFj
dG9yKCksIG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvciwgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9y
KTsKIH0KIAogV2ViR3JhcGhpY3NDb250ZXh0M0QqIFdlYlZpZXdJbXBsOjpzaGFyZWRHcmFwaGlj
c0NvbnRleHQzRCgpCkBAIC00MDIyLDkgKzQwMjYsOSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRW
aXNpYmlsaXR5U3RhdGUoV2ViUGFnZVZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUsCiAj
ZW5kaWYKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAoIW1fbGF5
ZXJUcmVlVmlldy5pc051bGwoKSkgeworICAgIGlmIChtX2xheWVyVHJlZVZpZXcpIHsKICAgICAg
ICAgYm9vbCB2aXNpYmxlID0gdmlzaWJpbGl0eVN0YXRlID09IFdlYlBhZ2VWaXNpYmlsaXR5U3Rh
dGVWaXNpYmxlOwotICAgICAgICBtX2xheWVyVHJlZVZpZXcuc2V0VmlzaWJsZSh2aXNpYmxlKTsK
KyAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRWaXNpYmxlKHZpc2libGUpOwogICAgIH0KICNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMjA2
Y2Y0NTcyOGFlYTliY2ZhMGEyOGM0YzM1ZjcxMWEzYzYyMGRkMi4uMmY2OTAzMzNlYmU4YTY4YTI1
ODA4ZDU0NDIzYjBjYTNmNjAxOTYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oCkBAIC01Miw3ICs1Miw2IEBACiAjaW5jbHVkZSAiV2ViVmlld0JlbmNobWFya1N1
cHBvcnRJbXBsLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UXVhZC5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJMYXllci5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViUG9pbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5oPgpAQCAtOTUsNyAr
OTQsNiBAQCBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OwogY2xhc3MgRHJhZ1Nj
cm9sbFRpbWVyOwogY2xhc3MgR2VvbG9jYXRpb25DbGllbnRQcm94eTsKIGNsYXNzIExpbmtIaWdo
bGlnaHQ7Ci1jbGFzcyBXZWJIZWxwZXJQbHVnaW5JbXBsOwogY2xhc3MgTm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0OwogY2xhc3MgUHJlcmVuZGVyZXJDbGllbnRJbXBsOwogY2xhc3MgU3BlZWNoSW5w
dXRDbGllbnRJbXBsOwpAQCAtMTA3LDE1ICsxMDUsMTcgQEAgY2xhc3MgV2ViRGV2VG9vbHNBZ2Vu
dENsaWVudDsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRQcml2YXRlOwogY2xhc3MgV2ViRnJhbWVJ
bXBsOwogY2xhc3MgV2ViR2VzdHVyZUV2ZW50OwotY2xhc3MgV2ViUGFnZVBvcHVwSW1wbDsKLWNs
YXNzIFdlYlByZXJlbmRlcmVyQ2xpZW50OwotY2xhc3MgV2ViVmlld0JlbmNobWFya1N1cHBvcnQ7
CitjbGFzcyBXZWJIZWxwZXJQbHVnaW5JbXBsOwogY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJL
ZXlib2FyZEV2ZW50OworY2xhc3MgV2ViTGF5ZXJUcmVlVmlldzsKIGNsYXNzIFdlYk1vdXNlRXZl
bnQ7CiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CitjbGFzcyBXZWJQYWdlUG9wdXBJbXBsOwor
Y2xhc3MgV2ViUHJlcmVuZGVyZXJDbGllbnQ7CiBjbGFzcyBXZWJTZXR0aW5nc0ltcGw7CiBjbGFz
cyBXZWJUb3VjaEV2ZW50OworY2xhc3MgV2ViVmlld0JlbmNobWFya1N1cHBvcnQ7CiAKIGNsYXNz
IFdlYlZpZXdJbXBsIDogcHVibGljIFdlYlZpZXcKICAgICAgICAgICAgICAgICAgICwgcHVibGlj
IFdlYkxheWVyVHJlZVZpZXdDbGllbnQKQEAgLTgyNCw3ICs4MjQsNyBAQCBwcml2YXRlOgogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fcm9v
dExheWVyU2Nyb2xsRGFtYWdlOwogICAgIE93blB0cjxOb25Db21wb3NpdGVkQ29udGVudEhvc3Q+
IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OwotICAgIFdlYkxheWVyVHJlZVZpZXcgbV9sYXll
clRyZWVWaWV3OworICAgIE93blB0cjxXZWJMYXllclRyZWVWaWV3PiBtX2xheWVyVHJlZVZpZXc7
CiAgICAgV2ViTGF5ZXIqIG1fcm9vdExheWVyOwogICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
IG1fcm9vdEdyYXBoaWNzTGF5ZXI7CiAgICAgYm9vbCBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdFRlc3QuY3BwCmluZGV4IDZiOWY5YjJiNTM4OTQ1ZTBiY2ZmYjkzZTc5NDM2Zjc4YTQ0
ZTJjMDIuLjJhNDBiNjBlNjc2NmZiYjJmYmIzOGExM2MwMGQzMGM2ZmRkNzcxNmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cApAQCAtMTM1LDE0ICsxMzUsMTQgQEAgcHVibGljOgogICAgICAgICBwb3N0U2V0TmVlZHNDb21t
aXRUb01haW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxl
dGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKQorICAgIHZpcnR1YWwgdm9pZCBjb21t
aXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopIE9WRVJSSURFCiAgICAg
ewogICAgICAgICBtX251bUNvbXBsZXRlQ29tbWl0cysrOwogICAgICAgICBpZiAobV9udW1Db21w
bGV0ZUNvbW1pdHMgPT0gMikKICAgICAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopCisg
ICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwq
KSBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYgKG1fbnVtRHJhd3MgPT0gMSkKICAgICAgICAg
ICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKQEAgLTE4MCwxNCArMTgwLDE0IEBA
IHB1YmxpYzoKICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CiAgICAg
fQogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9z
dEltcGwqIGltcGwpCisgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5
ZXJUcmVlSG9zdEltcGwqIGltcGwpIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX251bURyYXdz
Kys7CiAgICAgICAgIGlmICghaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSkKICAgICAgICAgICAg
IGVuZFRlc3QoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkND
VGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKQorICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21w
bGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopIE9WRVJSSURFCiAgICAgewogICAg
ICAgICBtX251bUNvbW1pdHMrKzsKICAgICB9CkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgog
ICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1w
bCkKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0
SW1wbCogaW1wbCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGlmICghaW1wbC0+c291cmNlRnJh
bWVOdW1iZXIoKSkKICAgICAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgp
OwpAQCAtMjMxLDcgKzIzMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGVuZFRlc3QoKTsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJU
cmVlSG9zdEltcGwqKQorICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQo
Q0NMYXllclRyZWVIb3N0SW1wbCopIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX251bUNvbW1p
dHMrKzsKICAgICB9CkBAIC0yNzIsNyArMjcyLDcgQEAgcHVibGljOgogICAgICAgICBwb3N0U2V0
TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJh
d0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAgICB2aXJ0dWFs
IHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkgT1ZF
UlJJREUKICAgICB7CiAgICAgICAgIEVYUEVDVF9FUSgwLCBpbXBsLT5zb3VyY2VGcmFtZU51bWJl
cigpKTsKICAgICAgICAgaWYgKCFtX251bURyYXdzKQpAQCAtMjgyLDcgKzI4Miw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9udW1EcmF3cysrOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBjb21t
aXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopCisgICAgdmlydHVhbCB2
b2lkIGNvbW1pdENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikgT1ZFUlJJ
REUKICAgICB7CiAgICAgICAgIEVYUEVDVF9FUSgwLCBtX251bURyYXdzKTsKICAgICAgICAgbV9u
dW1Db21taXRzKys7CkBAIC0zMTcsMTQgKzMxNywxNCBAQCBwdWJsaWM6CiAgICAgICAgIHBvc3RT
ZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBk
cmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHZpcnR1
YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBP
VkVSUklERQogICAgIHsKICAgICAgICAgLy8gT25seSB0aGUgaW5pdGlhbCBkcmF3IHNob3VsZCBi
cmluZyB1cyBoZXJlLgogICAgICAgICBFWFBFQ1RfVFJVRShpbXBsLT5jYW5EcmF3KCkpOwogICAg
ICAgICBFWFBFQ1RfRVEoMCwgaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSk7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJ
bXBsKiBpbXBsKQorICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NM
YXllclRyZWVIb3N0SW1wbCogaW1wbCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGlmIChtX251
bUNvbW1pdHMgPj0gMSkgewogICAgICAgICAgICAgLy8gQWZ0ZXIgdGhlIGZpcnN0IGNvbW1pdCwg
d2Ugc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGRyYXcuCkBAIC0zNzQsMTMgKzM3NCwxMyBAQCBwdWJs
aWM6CiAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBs
KiBpbXBsKQorICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJl
ZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsKICAgICAgICAgbV9udW1EcmF3cysrOwog
ICAgICAgICBFWFBFQ1RfRVEobV9udW1EcmF3cywgbV9udW1Db21taXRzKTsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdElt
cGwqKQorICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRy
ZWVIb3N0SW1wbCopIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX251bUNvbW1pdHMrKzsKICAg
ICAgICAgZW5kVGVzdCgpOwpAQCAtNDE4LDcgKzQxOCw3IEBAIHB1YmxpYzoKICAgICAgICAgcG9z
dFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lk
IGNvbW1pdENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikKKyAgICB2aXJ0
dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKSBP
VkVSUklERQogICAgIHsKICAgICAgICAgbV9udW1Db21taXRzKys7CiAgICAgICAgIGlmIChtX251
bUNvbW1pdHMgPT0gMikKQEAgLTQ1Niw3ICs0NTYsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKQorICAgIHZpcnR1YWwg
dm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgbV9u
dW1Db21taXRzKys7CiAgICAgICAgIGlmIChtX251bUNvbW1pdHMgPT0gMSkgewpAQCAtNTM1LDcg
KzUzNSw3IEBAIHB1YmxpYzoKICAgICAgICAgcG9zdFNldE5lZWRzQW5pbWF0ZVRvTWFpblRocmVh
ZCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSkK
KyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3VibGUpIE9WRVJSSURFCiAgICAgewogICAgICAg
ICBpZiAoIW1fbnVtQW5pbWF0ZXMpIHsKICAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0
TmVlZHNBbmltYXRlKCk7CkBAIC01NzUsNyArNTc1LDcgQEAgcHVibGljOgogICAgICAgICBwb3N0
QWRkSW5zdGFudEFuaW1hdGlvblRvTWFpblRocmVhZCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwg
dm9pZCBhbmltYXRlTGF5ZXJzKENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBs
LCBkb3VibGUgbW9ub3RvbmljVGltZSkKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhD
Q0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCwgZG91YmxlIG1vbm90b25pY1Rp
bWUpIE9WRVJSSURFCiAgICAgewogICAgICAgICBpZiAoIW1fbnVtQW5pbWF0ZXMpIHsKICAgICAg
ICAgICAgIC8vIFRoZSBhbmltYXRpb24gaGFkIHplcm8gZHVyYXRpb24gc28gbGF5ZXJUcmVlSG9z
dEltcGwgc2hvdWxkIG5vCkBAIC01OTIsNyArNTkyLDcgQEAgcHVibGljOgogICAgICAgICBlbmRU
ZXN0KCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQo
ZG91YmxlIHdhbGxDbG9ja1RpbWUpCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0
YXJ0ZWQoZG91YmxlIHdhbGxDbG9ja1RpbWUpIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX3Jl
Y2VpdmVkQW5pbWF0aW9uU3RhcnRlZE5vdGlmaWNhdGlvbiA9IHRydWU7CiAgICAgICAgIG1fc3Rh
cnRUaW1lID0gd2FsbENsb2NrVGltZTsKQEAgLTYzMiwxOCArNjMyLDE4IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGFuaW1hdGVMYXllcnMoQ0NMYXllclRyZWVI
b3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsIGRvdWJsZSBtb25vdG9uaWNUaW1lKQorICAgIHZp
cnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhv
c3RJbXBsLCBkb3VibGUgbW9ub3RvbmljVGltZSkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1f
c3RhcnRlZEFuaW1hdGluZyA9IHRydWU7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdM
YXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKQorICAgIHZpcnR1YWwgdm9pZCBk
cmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikgT1ZFUlJJREUKICAgICB7
CiAgICAgICAgIGlmIChtX3N0YXJ0ZWRBbmltYXRpbmcpCiAgICAgICAgICAgICBlbmRUZXN0KCk7
CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHByZXBhcmVUb0RyYXdPbkNDVGhyZWFkKENDTGF5
ZXJUcmVlSG9zdEltcGwqKQorICAgIHZpcnR1YWwgYm9vbCBwcmVwYXJlVG9EcmF3T25DQ1RocmVh
ZChDQ0xheWVyVHJlZUhvc3RJbXBsKikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CkBAIC02NzQsNyArNjc0LDcgQEAgcHVibGljOgogICAgIC8vIFVzZSB3aWxs
QW5pbWF0ZUxheWVycyB0byBzZXQgdmlzaWJsZSBmYWxzZSBiZWZvcmUgdGhlIGFuaW1hdGlvbiBy
dW5zIGFuZAogICAgIC8vIGNhdXNlcyBhIGNvbW1pdCwgc28gd2UgYmxvY2sgdGhlIHNlY29uZCB2
aXNpYmxlIGFuaW1hdGUgaW4gc2luZ2xlLXRocmVhZAogICAgIC8vIG1vZGUuCi0gICAgdmlydHVh
bCB2b2lkIHdpbGxBbmltYXRlTGF5ZXJzKENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhv
c3RJbXBsLCBkb3VibGUgbW9ub3RvbmljVGltZSkKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEFuaW1h
dGVMYXllcnMoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsIGRvdWJsZSBt
b25vdG9uaWNUaW1lKSBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYgKG1fbnVtQW5pbWF0ZXMg
PCAyKSB7CiAgICAgICAgICAgICBpZiAoIW1fbnVtQW5pbWF0ZXMpIHsKQEAgLTcwOSw3ICs3MDks
NyBAQCBwdWJsaWM6CiAgICAgICAgIHBvc3RBZGRBbmltYXRpb25Ub01haW5UaHJlYWQoKTsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhDQ0xheWVyVHJlZUhvc3RJbXBs
KiBsYXllclRyZWVIb3N0SW1wbCwgZG91YmxlIG1vbm90b25pY1RpbWUpCisgICAgdmlydHVhbCB2
b2lkIGFuaW1hdGVMYXllcnMoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGws
IGRvdWJsZSBtb25vdG9uaWNUaW1lKSBPVkVSUklERQogICAgIHsKICAgICAgICAgY29uc3QgQ0NB
Y3RpdmVBbmltYXRpb24qIGFuaW1hdGlvbiA9IG1fbGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCkt
PmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5nZXRBY3RpdmVBbmltYXRpb24oMCwgQ0NBY3Rp
dmVBbmltYXRpb246Ok9wYWNpdHkpOwogICAgICAgICBpZiAoIWFuaW1hdGlvbikKQEAgLTc1MCw3
ICs3NTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHBvc3RBZGRBbmltYXRpb25Ub01haW5UaHJlYWQo
KTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKEND
TGF5ZXJUcmVlSG9zdEltcGwqKQorICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NU
aHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopIE9WRVJSSURFCiAgICAgewogICAgICAgICAvLyBJ
ZiB0aGUgc3VidHJlZSB3YXMgc2tpcHBlZCB3aGVuIHByZXBhcmluZyB0byBkcmF3LCB0aGUgbGF5
ZXIncyBkcmF3IG9wYWNpdHkKICAgICAgICAgLy8gd2lsbCBub3QgaGF2ZSBiZWVuIHVwZGF0ZWQu
IEl0IHNob3VsZCBiZSBzZXQgdG8gMCBkdWUgdG8gdGhlIGFuaW1hdGlvbi4KQEAgLTc4OCw3ICs3
ODgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gVGhpcyBpcyBndWFyYW50ZWVkIHRvIGJl
IGNhbGxlZCBiZWZvcmUgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycy4KLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbEFuaW1hdGVMYXllcnMoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJU
cmVlSG9zdEltcGwsIGRvdWJsZSBtb25vdG9uaWNUaW1lKQorICAgIHZpcnR1YWwgdm9pZCB3aWxs
QW5pbWF0ZUxheWVycyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCwgZG91
YmxlIG1vbm90b25pY1RpbWUpIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX2xheWVyVHJlZUhv
c3RJbXBsID0gbGF5ZXJUcmVlSG9zdEltcGw7CiAgICAgfQpAQCAtODI5LDcgKzgyOSw3IEBAIHB1
YmxpYzoKICAgICAgICAgcG9zdEFkZEluc3RhbnRBbmltYXRpb25Ub01haW5UaHJlYWQoKTsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uRmluaXNoZWQoZG91YmxlIHRp
bWUpCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvbkZpbmlzaGVkKGRvdWJsZSB0aW1l
KSBPVkVSUklERQogICAgIHsKICAgICAgICAgZW5kVGVzdCgpOwogICAgIH0KQEAgLTg2MCw3ICs4
NjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgp
OwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKQorICAgIHZpcnR1YWwgdm9pZCBs
YXlvdXQoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgTGF5ZXJDaHJvbWl1bSogcm9vdCA9IG1f
bGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCk7CiAgICAgICAgIGlmICghbV9sYXllclRyZWVIb3N0
LT5jb21taXROdW1iZXIoKSkKQEAgLTg3Myw3ICs4NzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRy
ZWVIb3N0SW1wbCogaW1wbCkKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQo
Q0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIENDTGF5
ZXJJbXBsKiByb290ID0gaW1wbC0+cm9vdExheWVyKCk7CiAgICAgICAgIEVYUEVDVF9FUShyb290
LT5zY3JvbGxEZWx0YSgpLCBJbnRTaXplKCkpOwpAQCAtODkzLDcgKzg5Myw3IEBAIHB1YmxpYzoK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxl
KGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBzY2FsZSkKKyAgICB2aXJ0dWFsIHZv
aWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQg
c2NhbGUpIE9WRVJSSURFCiAgICAgewogICAgICAgICBJbnRQb2ludCBwb3NpdGlvbiA9IG1fbGF5
ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPnNjcm9sbFBvc2l0aW9uKCk7CiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPnNldFNjcm9sbFBvc2l0aW9uKHBvc2l0aW9uICsgc2Ny
b2xsRGVsdGEpOwpAQCAtOTMyLDcgKzkzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgcG9zdFNldE5l
ZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGJlZ2lu
Q29tbWl0T25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHZpcnR1YWwg
dm9pZCBiZWdpbkNvbW1pdE9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkgT1ZF
UlJJREUKICAgICB7CiAgICAgICAgIExheWVyQ2hyb21pdW0qIHJvb3QgPSBtX2xheWVyVHJlZUhv
c3QtPnJvb3RMYXllcigpOwogICAgICAgICBpZiAoIWltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkp
CkBAIC05NDMsNyArOTQzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgRVhQRUNUX0VRKHJvb3Qt
PnNjcm9sbFBvc2l0aW9uKCksIG1faW5pdGlhbFNjcm9sbCArIG1fc2Nyb2xsQW1vdW50ICsgbV9z
Y3JvbGxBbW91bnQpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1Ro
cmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5
ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsK
ICAgICAgICAgQ0NMYXllckltcGwqIHJvb3QgPSBpbXBsLT5yb290TGF5ZXIoKTsKICAgICAgICAg
cm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKQEAgLTk3NCw3ICs5NzQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShj
b25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgc2NhbGUpCisgICAgdmlydHVhbCB2b2lk
IGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHNj
YWxlKSBPVkVSUklERQogICAgIHsKICAgICAgICAgSW50UG9pbnQgcG9zaXRpb24gPSBtX2xheWVy
VHJlZUhvc3QtPnJvb3RMYXllcigpLT5zY3JvbGxQb3NpdGlvbigpOwogICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnJvb3RMYXllcigpLT5zZXRTY3JvbGxQb3NpdGlvbihwb3NpdGlvbiArIHNjcm9s
bERlbHRhKTsKQEAgLTEwMTEsNyArMTAxMSw3IEBAIHB1YmxpYzoKICAgICAgICAgcG9zdFNldE5l
ZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbW1p
dENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHZpcnR1
YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1w
bCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIEVYUEVDVF9FUShJbnRTaXplKDIwLCAyMCksIGlt
cGwtPmxheW91dFZpZXdwb3J0U2l6ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKFNLX0NvbG9yR1JB
WSwgaW1wbC0+YmFja2dyb3VuZENvbG9yKCkpOwpAQCAtMTA1Miw3ICsxMDUyLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgdGVzdC0+bGF5ZXJUcmVlSG9zdCgpLT5zdGFydFBhZ2VTY2FsZUFuaW1h
dGlvbihJbnRTaXplKCksIGZhbHNlLCAxLjI1LCAwKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAgICB2
aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1w
bCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGltcGwtPnJvb3RMYXllcigpLT5zZXRTY3JvbGxh
YmxlKHRydWUpOwogICAgICAgICBpbXBsLT5yb290TGF5ZXIoKS0+c2V0U2Nyb2xsUG9zaXRpb24o
SW50UG9pbnQoKSk7CkBAIC0xMDY1LDE0ICsxMDY1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNp
emUmIHNjcm9sbERlbHRhLCBmbG9hdCBzY2FsZSkKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3Jv
bGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgc2NhbGUpIE9WRVJS
SURFCiAgICAgewogICAgICAgICBJbnRQb2ludCBwb3NpdGlvbiA9IG1fbGF5ZXJUcmVlSG9zdC0+
cm9vdExheWVyKCktPnNjcm9sbFBvc2l0aW9uKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
cm9vdExheWVyKCktPnNldFNjcm9sbFBvc2l0aW9uKHBvc2l0aW9uICsgc2Nyb2xsRGVsdGEpOwog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhzY2Fs
ZSwgMC41LCAyKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkND
VGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgdmlydHVhbCB2b2lkIGNvbW1p
dENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQog
ICAgIHsKICAgICAgICAgaW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRhcygpOwogICAgICAgICAvLyBX
ZSBnZXQgb25lIGNvbW1pdCBiZWZvcmUgdGhlIGZpcnN0IGRyYXcsIGFuZCB0aGUgYW5pbWF0aW9u
IGRvZXNuJ3QgaGFwcGVuIHVudGlsIHRoZSBzZWNvbmQgZHJhdy4KQEAgLTExMTEsNyArMTExMSw3
IEBAIHB1YmxpYzoKICAgICAgICAgcG9zdFNldFZpc2libGVUb01haW5UaHJlYWQodHJ1ZSk7IC8v
IFRyaWdnZXJzIHRoZSByZWRyYXcuCiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdMYXll
cnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgdmlydHVhbCB2b2lk
IGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpIE9WRVJSSURF
CiAgICAgewogICAgICAgICBFWFBFQ1RfVFJVRShpbXBsLT52aXNpYmxlKCkpOwogICAgICAgICAr
K21fbnVtRHJhd3M7CkBAIC0xMTQ1LDggKzExNDUsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGVz
dC0+bGF5ZXJUcmVlSG9zdCgpLT5yb290TGF5ZXIoKS0+c2V0T3BhY2l0eSgwKTsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIGJvb2wgcHJlc2VydmVzM0QoKSB7IHJldHVybiBmYWxzZTsgfQotCiBwcml2
YXRlOgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3QqIG1fdGVzdDsKIH07CkBAIC0xMTk0LDcgKzEx
OTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgp
OwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NM
YXllclRyZWVIb3N0SW1wbCopCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25DQ1Ro
cmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGVuZFRl
c3QoKTsKICAgICB9CkBAIC0xMjU2LDcgKzEyNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKG1fcm9vdExheWVyKTsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGlt
cGwpCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJl
ZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsKICAgICAgICAgLy8gR2V0IGFjY2VzcyB0
byBwcm90ZWN0ZWQgbWV0aG9kcy4KICAgICAgICAgTW9ja0xheWVyVHJlZUhvc3RJbXBsKiBtb2Nr
SW1wbCA9IHN0YXRpY19jYXN0PE1vY2tMYXllclRyZWVIb3N0SW1wbCo+KGltcGwpOwpAQCAtMTM1
MCw3ICsxMzQ4LDcgQEAgcHVibGljOgogICAgICAgICBwb3N0U2V0TmVlZHNSZWRyYXdUb01haW5U
aHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhy
ZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENv
bXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAg
IHsKICAgICAgICAgQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJl
VHJhY2tpbmcqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNz
Q29udGV4dDNEV2l0aFRleHR1cmVUcmFja2luZyo+KGltcGwtPmNvbnRleHQoKS0+Y29udGV4dDNE
KCkpOwogCkBAIC0xMzg0LDcgKzEzODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1w
bCogaW1wbCkKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRy
ZWVIb3N0SW1wbCogaW1wbCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIENvbXBvc2l0b3JGYWtl
V2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tp
bmcqPihpbXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpKTsKIApAQCAtMTM5OSw3ICsxMzk3LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgZW5kVGVzdCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKQorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERQogICAgIHsK
ICAgICAgICAgbV9sYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgfQpAQCAtMTQ1NCw3ICsx
NDUyLDcgQEAgcHVibGljOgogICAgICAgICBwb3N0U2V0TmVlZHNSZWRyYXdUb01haW5UaHJlYWQo
KTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKEND
TGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRl
T25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsKICAg
ICAgICAgQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tp
bmcqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4
dDNEV2l0aFRleHR1cmVUcmFja2luZyo+KGltcGwtPmNvbnRleHQoKS0+Y29udGV4dDNEKCkpOwog
CkBAIC0xNTA2LDcgKzE1MDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1w
bCkKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0
SW1wbCogaW1wbCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIENvbXBvc2l0b3JGYWtlV2ViR3Jh
cGhpY3NDb250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqPihp
bXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpKTsKIApAQCAtMTUyNSw3ICsxNTIzLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgZW5kVGVzdCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBs
YXlvdXQoKQorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERQogICAgIHsKICAgICAg
ICAgc3dpdGNoIChtX251bUNvbW1pdHMrKykgewogICAgICAgICBjYXNlIDA6CkBAIC0xOTYwLDEy
ICsxOTU4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhy
ZWFkKCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgp
CisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIE9WRVJSSURFCiAgICAg
ewogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmxvc2VDb250ZXh0KDEpOwogICAgIH0KIAotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZU91dHB1dFN1cmZhY2UoYm9vbCBzdWNjZWVkZWQpCisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShib29sIHN1Y2NlZWRlZCkg
T1ZFUlJJREUKICAgICB7CiAgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2NlZWRlZCk7CiAgICAgICAg
IGVuZFRlc3QoKTsKQEAgLTE5OTQsMTIgKzE5OTIsMTIgQEAgcHVibGljOgogICAgICAgICBwb3N0
U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJh
d0ZyYW1lKCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+bG9zZUNv
bnRleHQoMTApOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZU91dHB1dFN1
cmZhY2UoYm9vbCBzdWNjZWVkZWQpCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlT3V0cHV0
U3VyZmFjZShib29sIHN1Y2NlZWRlZCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIEVYUEVDVF9G
QUxTRShzdWNjZWVkZWQpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaEFsbFJlbmRl
cmluZygpOwpAQCAtMjAyOSw3ICsyMDI3LDcgQEAgcHVibGljOgogICAgICAgICBwb3N0U2V0TmVl
ZHNDb21taXRUb01haW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0xh
eWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAgICB2aXJ0dWFsIHZv
aWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkgT1ZFUlJJ
REUKICAgICB7CiAgICAgICAgIENDTGF5ZXJJbXBsKiByb290ID0gaW1wbC0+cm9vdExheWVyKCk7
CiAgICAgICAgIHJvb3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKEludFNpemUoMTAwLCAxMDApKTsK
QEAgLTIwNTEsNyArMjA0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgcm9vdC0+c2Nyb2xsQnkobV9z
Y3JvbGxBbW91bnQpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNj
YWxlKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBzY2FsZSkKKyAgICB2aXJ0dWFs
IHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxv
YXQgc2NhbGUpIE9WRVJSSURFCiAgICAgewogICAgICAgICBJbnRQb2ludCBwb3NpdGlvbiA9IG1f
bGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPnNjcm9sbFBvc2l0aW9uKCk7CiAgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPnNldFNjcm9sbFBvc2l0aW9uKHBvc2l0aW9uICsg
c2Nyb2xsRGVsdGEpOwpAQCAtMjA4Myw3ICsyMDgxLDcgQEAgcHVibGljOgogICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnNldE5lZWRzUmVkcmF3KCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lk
IGRpZENvbW1pdEFuZERyYXdGcmFtZSgpCisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERy
YXdGcmFtZSgpIE9WRVJSSURFCiAgICAgewogICAgICAgICBpZiAobV9vbmNlKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMjEwMiw3ICsyMTAwLDcgQEAgcHVibGljOgogICAgICAgICBlbmRUZXN0
KCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5
ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhy
ZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpIE9WRVJSSURFCiAgICAgewogICAgICAgICBM
b2NrZXI8TXV0ZXg+IGxvY2sobV9tdXRleCk7CiAgICAgICAgICsrbV9kcmF3Q291bnQ7CkBAIC0y
MTQ4LDcgKzIxNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQWRkQW5pbWF0aW9uKCkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRk
QW5pbWF0aW9uKCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1fYWRkZWRBbmltYXRpb24gPSB0
cnVlOwogICAgIH0KQEAgLTIyOTgsNyArMjI5Niw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5zZXRSb290TGF5ZXIobV9yb290TGF5ZXIpOwogICAgIH0KIAotICAgIHZpcnR1
YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1w
bCkKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0
SW1wbCogaG9zdEltcGwpIE9WRVJSSURFCiAgICAgewogICAgICAgICBDQ1JlbmRlcmVyKiByZW5k
ZXJlciA9IGhvc3RJbXBsLT5yZW5kZXJlcigpOwogICAgICAgICB1bnNpZ25lZCBzdXJmYWNlMVJl
bmRlclBhc3NJZCA9IGhvc3RJbXBsLT5yb290TGF5ZXIoKS0+Y2hpbGRyZW4oKVswXS0+aWQoKTsK
QEAgLTI0MDksMTEgKzI0MDcsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IEV2aWN0aW9uVGVzdExheWVySW1wbChpZCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5Fdmlj
dGlvblRlc3RMYXllckltcGwoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NR
dWFkU2luayYsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykKKworICAgIHZpcnR1YWwgdm9pZCBhcHBl
bmRRdWFkcyhDQ1F1YWRTaW5rJiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERQogICAg
IHsKICAgICAgICAgQVNTRVJUX1RSVUUobV9oYXNUZXh0dXJlKTsKICAgICAgICAgQVNTRVJUX05F
KDB1LCBsYXllclRyZWVIb3N0SW1wbCgpLT5yZXNvdXJjZVByb3ZpZGVyKCktPm51bVJlc291cmNl
cygpKTsKICAgICB9CisKICAgICB2b2lkIHNldEhhc1RleHR1cmUoYm9vbCBoYXNUZXh0dXJlKSB7
IG1faGFzVGV4dHVyZSA9IGhhc1RleHR1cmU7IH0KIAogcHJpdmF0ZToKQEAgLTI1MTUsNyArMjUx
NSw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgYmVnaW5GcmFtZS9jb21taXQgcGFpci4KICAgICAv
LyBDb21taXRzIDUrNiB0ZXN0IHRoZSBwYXRoIHdoZXJlIGFuIGV2aWN0aW9uIGhhcHBlbnMgZHVy
aW5nIHRoZSBldmljdGlvbgogICAgIC8vIHJlY292ZXJ5IHBhdGguCi0gICAgdmlydHVhbCB2b2lk
IGRpZENvbW1pdEFuZERyYXdGcmFtZSgpCisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERy
YXdGcmFtZSgpIE9WRVJSSURFCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fbnVtQ29tbWl0cykg
ewogICAgICAgICBjYXNlIDE6CkBAIC0yNTQ5LDcgKzI1NDksNyBAQCBwdWJsaWM6CiAgICAgICAg
IG1faW1wbEZvckV2aWN0VGV4dHVyZXMgPSBpbXBsOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKQorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERQogICAgIHsKICAg
ICAgICAgKyttX251bUNvbW1pdHM7CiAgICAgICAgIHN3aXRjaCAobV9udW1Db21taXRzKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwCmluZGV4
IGNkZTg4ZjhlNjc1OGE4N2MzN2FhN2Y3ZDJmMDg0OTFkNzlkZmM2YzUuLjA0Mjk2YjM5YjgwZTM2
ZGM2Y2JiNjIwNDRjNzkyNjE2ZDIzYTQ0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwCkBAIC0yMDgsOSArMjA4LDkgQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUg
bW9ub3RvbmljVGltZSkgT1ZFUlJJREUKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3VibGUg
bW9ub3RvbmljVGltZSkgT1ZFUlJJREUKICAgICB7Ci0gICAgICAgIG1fdGVzdEhvb2tzLT51cGRh
dGVBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOworICAgICAgICBtX3Rlc3RIb29rcy0+YW5pbWF0
ZShtb25vdG9uaWNUaW1lKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZF
UlJJREUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRl
ZFRlc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuaApp
bmRleCAwZjg3ZGUxZjVlNmI3ODRmYThjMDQ4NTllNGNmYWQ2OGU3MWJhYmMyLi5lZTViZjMxMTQ4
ZDkwMjNlNTRlNWU1OWVlODg0MDJiYjIxMjQ5YmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBs
KiwgZG91YmxlIG1vbm90b25pY1RpbWUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsQW5pbWF0
ZUxheWVycyhXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsKiwgZG91YmxlIG1vbm90b25pY1Rp
bWUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBmbG9hdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlv
bnMoZG91YmxlIG1vbm90b25pY1RpbWUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRv
dWJsZSBtb25vdG9uaWNUaW1lKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShib29sIHN1Y2NlZWRlZCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZEFuaW1hdGlvbigpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQu
aAppbmRleCBiODczMDVhZmViOTYwMjNkYTAwMWRiMjQ2OTYzZmFiYzFmY2M3MDRhLi45MDAzMDg4
YTU4NDY4MGZiZWRkYzA4YTQ3YWFkZWZiYzdmOTcwNTA0IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaApAQCAt
MzcsNyArMzcsNyBAQCBjbGFzcyBGYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50IDogcHVibGljIEND
TGF5ZXJUcmVlSG9zdENsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZWdp
bkZyYW1lKCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRnJhbWUoKSBP
VkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgbW9u
b3RvbmljRnJhbWVCZWdpblRpbWUpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhbmlt
YXRlKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkgT1ZFUlJJREUgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGxheW91dCgpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNj
cm9sbEFuZFNjYWxlKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUp
IE9WRVJSSURFIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCAyNjYyN2VjOGQ3YTVmMzll
YzVlNzJhYzA4NmViNzVmMzA2NTUyNWUxLi5lMDg1NmUwNmExOGYxYzRkMzQ0OWQ4MDIzOGJiZGI0
ZjA2N2I1ZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dyYXBo
aWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTY2LDE0ICs2NiwxNCBAQCBwdWJs
aWM6CiAgICAgICAgIFdlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7CiAgICAgICAgIG1fZ3Jh
cGhpY3NMYXllciA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8R3JhcGhpY3NMYXllckNocm9taXVtPihH
cmFwaGljc0xheWVyOjpjcmVhdGUoJm1fY2xpZW50KSk7CiAgICAgICAgIG1fcGxhdGZvcm1MYXll
ciA9IG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpOwotICAgICAgICBtX2xheWVyVHJl
ZVZpZXcuaW5pdGlhbGl6ZSgmbV9sYXllclRyZWVWaWV3Q2xpZW50LCAqbV9wbGF0Zm9ybUxheWVy
LCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncygpKTsKLSAgICAgICAgbV9sYXllclRyZWVWaWV3
LnNldFZpZXdwb3J0U2l6ZShXZWJTaXplKDEsIDEpLCBXZWJTaXplKDEsIDEpKTsKKyAgICAgICAg
QVNTRVJUX1RSVUUobV9sYXllclRyZWVWaWV3ID0gYWRvcHRQdHIoV2ViTGF5ZXJUcmVlVmlldzo6
Y3JlYXRlKCZtX2xheWVyVHJlZVZpZXdDbGllbnQsICptX3BsYXRmb3JtTGF5ZXIsIFdlYkxheWVy
VHJlZVZpZXc6OlNldHRpbmdzKCkpKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0Vmll
d3BvcnRTaXplKFdlYlNpemUoMSwgMSksIFdlYlNpemUoMSwgMSkpOwogICAgIH0KIAogICAgIHZp
cnR1YWwgfkdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QoKQogICAgIHsKICAgICAgICAgbV9ncmFw
aGljc0xheWVyLmNsZWFyKCk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5yZXNldCgpOworICAg
ICAgICBtX2xheWVyVHJlZVZpZXcuY2xlYXIoKTsKICAgICAgICAgV2ViQ29tcG9zaXRvcjo6c2h1
dGRvd24oKTsKICAgICB9CiAKQEAgLTg4LDcgKzg4LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRl
OgogICAgIE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50IG1fbGF5ZXJUcmVlVmlld0NsaWVudDsK
LSAgICBXZWJMYXllclRyZWVWaWV3IG1fbGF5ZXJUcmVlVmlldzsKKyAgICBPd25QdHI8V2ViTGF5
ZXJUcmVlVmlldz4gbV9sYXllclRyZWVWaWV3OwogICAgIE1vY2tHcmFwaGljc0xheWVyQ2xpZW50
IG1fY2xpZW50OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJMYXllclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXll
clRlc3QuY3BwCmluZGV4IDliOGU1OGNhMTAwZTc3ZDkwMzY1YmQ0NjI4YjFkZTM4MTA5Mzc0MzIu
LjgwYTEwMzFmYjYyY2E3NjIzMDAzNDA1NWVhN2FkNGQzYjdiZDc0OTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2luY2x1ZGUgIkNvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNs
dWRlICJXZWJMYXllckltcGwuaCIKKyNpbmNsdWRlICJXZWJMYXllclRyZWVWaWV3VGVzdENvbW1v
bi5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yLmg+CiAjaW5jbHVkZSA8cHVibGlj
L1dlYkNvbnRlbnRMYXllci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb250ZW50TGF5ZXJDbGll
bnQuaD4KQEAgLTQ5LDIzICs1MCw2IEBAIHVzaW5nIHRlc3Rpbmc6Ol87CiAKIG5hbWVzcGFjZSB7
CiAKLWNsYXNzIE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50IDogcHVibGljIFdlYkxheWVyVHJl
ZVZpZXdDbGllbnQgewotcHVibGljOgotICAgIE1PQ0tfTUVUSE9EMChzY2hlZHVsZUNvbXBvc2l0
ZSwgdm9pZCgpKTsKLQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBm
cmFtZUJlZ2luVGltZSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRnJhbWUoKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGFwcGx5U2Ny
b2xsQW5kU2NhbGUoY29uc3QgV2ViU2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHNjYWxlRmFjdG9y
KSB7IH0KLSAgICB2aXJ0dWFsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjcmVhdGVDb250ZXh0M0Qo
KSB7IHJldHVybiBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoV2Vi
R3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMoKSkubGVha1B0cigpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlYmluZEdyYXBoaWNzQ29udGV4dChib29sIHN1Y2Nlc3MpIHsgfQotICAgIHZp
cnR1YWwgV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2UqIGNyZWF0ZU91dHB1dFN1cmZhY2UoKSB7
IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShi
b29sIHN1Y2Nlc3MpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0KCkgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgeyB9Ci19OwotCiBjbGFzcyBNb2NrV2ViQ29udGVu
dExheWVyQ2xpZW50IDogcHVibGljIFdlYkNvbnRlbnRMYXllckNsaWVudCB7CiBwdWJsaWM6CiAg
ICAgTU9DS19NRVRIT0QzKHBhaW50Q29udGVudHMsIHZvaWQoV2ViQ2FudmFzKiwgY29uc3QgV2Vi
UmVjdCYgY2xpcCwgV2ViRmxvYXRSZWN0JiBvcGFxdWUpKTsKQEAgLTc5LDcgKzYzLDcgQEAgcHVi
bGljOgogICAgICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7CiAgICAg
ICAgIG1fcm9vdExheWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKICAgICAgICAg
RVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEFueU51bWJl
cigpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUobV92aWV3LmluaXRpYWxpemUoJm1fY2xpZW50LCAq
bV9yb290TGF5ZXIsIFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzKCkpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUobV92aWV3ID0gYWRvcHRQdHIoV2ViTGF5ZXJUcmVlVmlldzo6Y3JlYXRlKCZtX2Ns
aWVudCwgKm1fcm9vdExheWVyLCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncygpKSkpOwogICAg
ICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwogICAgIH0K
IApAQCAtODcsMTYgKzcxLDE1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8vIFdlIG1heSBn
ZXQgYW55IG51bWJlciBvZiBzY2hlZHVsZUNvbXBvc2l0ZSBjYWxscyBkdXJpbmcgc2h1dGRvd24u
CiAgICAgICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1l
cyhBbnlOdW1iZXIoKSk7Ci0gICAgICAgIG1fdmlldy5zZXRSb290TGF5ZXIoMCk7CiAgICAgICAg
IG1fcm9vdExheWVyLmNsZWFyKCk7Ci0gICAgICAgIG1fdmlldy5yZXNldCgpOworICAgICAgICBt
X3ZpZXcuY2xlYXIoKTsKICAgICAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigp
OwogICAgIH0KIAogcHJvdGVjdGVkOgogICAgIE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50IG1f
Y2xpZW50OwogICAgIE93blB0cjxXZWJMYXllcj4gbV9yb290TGF5ZXI7Ci0gICAgV2ViTGF5ZXJU
cmVlVmlldyBtX3ZpZXc7CisgICAgT3duUHRyPFdlYkxheWVyVHJlZVZpZXc+IG1fdmlldzsKIH07
CiAKIC8vIFRlc3RzIHRoYXQgdGhlIGNsaWVudCBnZXRzIGNhbGxlZCB0byBhc2sgZm9yIGEgY29t
cG9zaXRlIGlmIHdlIGNoYW5nZSB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvV2ViTGF5ZXJUcmVlVmlld1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdC5jcHAKaW5kZXggMWMxNjAyYzIzNDE2OTlkOTg2
NWU4MzkzOWFkMTA0ZDBiM2IxMDlkYS4uNjkxNTRmN2E1Y2E2YTIyYTlhZmM1ZjU4Y2Y1MzIwMDNk
MzNjZTI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXll
clRyZWVWaWV3VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJM
YXllclRyZWVWaWV3VGVzdC5jcHAKQEAgLTYxLDMwICs2MSwyOSBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICBpbml0aWFsaXplQ29tcG9zaXRvcigpOwogICAgICAgICBtX3Jvb3RMYXllciA9IGFk
b3B0UHRyKFdlYkxheWVyOjpjcmVhdGUoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG1fdmlldy5p
bml0aWFsaXplKGNsaWVudCgpLCAqbV9yb290TGF5ZXIsIFdlYkxheWVyVHJlZVZpZXc6OlNldHRp
bmdzKCkpKTsKLSAgICAgICAgbV92aWV3LnNldFN1cmZhY2VSZWFkeSgpOworICAgICAgICBBU1NF
UlRfVFJVRShtX3ZpZXcgPSBhZG9wdFB0cihXZWJMYXllclRyZWVWaWV3OjpjcmVhdGUoY2xpZW50
KCksICptX3Jvb3RMYXllciwgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MoKSkpKTsKKyAgICAg
ICAgbV92aWV3LT5zZXRTdXJmYWNlUmVhZHkoKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKQogICAgIHsKICAgICAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlv
bnMoY2xpZW50KCkpOwogCi0gICAgICAgIG1fdmlldy5zZXRSb290TGF5ZXIoMCk7CiAgICAgICAg
IG1fcm9vdExheWVyLmNsZWFyKCk7Ci0gICAgICAgIG1fdmlldy5yZXNldCgpOworICAgICAgICBt
X3ZpZXcuY2xlYXIoKTsKICAgICAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigp
OwogICAgIH0KIAogcHJvdGVjdGVkOgogICAgIE93blB0cjxXZWJMYXllcj4gbV9yb290TGF5ZXI7
Ci0gICAgV2ViTGF5ZXJUcmVlVmlldyBtX3ZpZXc7CisgICAgT3duUHRyPFdlYkxheWVyVHJlZVZp
ZXc+IG1fdmlldzsKIH07CiAKIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdTaW5nbGVUaHJlYWRUZXN0
IDogcHVibGljIFdlYkxheWVyVHJlZVZpZXdUZXN0QmFzZSB7CiBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBjb21wb3NpdGUoKQogICAgIHsKLSAgICAgICAgbV92aWV3LmNvbXBvc2l0ZSgpOworICAgICAg
ICBtX3ZpZXctPmNvbXBvc2l0ZSgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplQ29tcG9zaXRvcigpIE9WRVJSSURFCkBAIC0xNTcsMTIgKzE1NiwxMiBAQCBwcm90ZWN0ZWQ6
CiAKICAgICB2b2lkIGNvbXBvc2l0ZSgpCiAgICAgewotICAgICAgICBtX3ZpZXcuc2V0TmVlZHNS
ZWRyYXcoKTsKKyAgICAgICAgbV92aWV3LT5zZXROZWVkc1JlZHJhdygpOwogICAgICAgICBSZWZQ
dHI8Q2FuY2VsYWJsZVRhc2tXcmFwcGVyPiB0aW1lb3V0VGFzayA9IGFkb3B0UmVmKG5ldyBDYW5j
ZWxhYmxlVGFza1dyYXBwZXIoYWRvcHRQdHIobmV3IFRpbWVvdXRUYXNrKCkpKSk7CiAgICAgICAg
IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y3VycmVudFRocmVhZCgpLT5wb3N0RGVsYXll
ZFRhc2sodGltZW91dFRhc2stPmNyZWF0ZVRhc2soKSwgNTAwMCk7CiAgICAgICAgIFdlYktpdDo6
UGxhdGZvcm06OmN1cnJlbnQoKS0+Y3VycmVudFRocmVhZCgpLT5lbnRlclJ1bkxvb3AoKTsKICAg
ICAgICAgdGltZW91dFRhc2stPmNhbmNlbCgpOwotICAgICAgICBtX3ZpZXcuZmluaXNoQWxsUmVu
ZGVyaW5nKCk7CisgICAgICAgIG1fdmlldy0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVDb21wb3NpdG9yKCkgT1ZFUlJJREUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUcmVlVmlld1Rlc3RD
b21tb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUcmVlVmlld1Rl
c3RDb21tb24uaAppbmRleCBlMmE2MmI2YTM4ZGEzZjQ3ODZlMjVjZWQxOTM3Zjg3NGMxZmY5Mjk5
Li40ODA3MWY5NTExZWMyNGZhOWFlNzRlOGVlZDMxMmJlYmQ2NjllMjYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0Q29tbW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdENv
bW1vbi5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBNb2Nr
V2ViTGF5ZXJUcmVlVmlld0NsaWVudCA6IHB1YmxpYyBXZWJMYXllclRyZWVWaWV3Q2xpZW50IHsK
IHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKSBPVkVSUklERSB7
IH0KKyAgICBNT0NLX01FVEhPRDAoc2NoZWR1bGVDb21wb3NpdGUsIHZvaWQoKSk7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSBPVkVSUklE
RSB7IH0KICAgICBNT0NLX01FVEhPRDAod2lsbEJlZ2luRnJhbWUsIHZvaWQoKSk7CiAgICAgTU9D
S19NRVRIT0QwKGRpZEJlZ2luRnJhbWUsIHZvaWQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTk2M2Q2MWUxODFkM2RmNTVkNTE0NGE0OGNm
NDU3OGE1OWExMzk2MS4uMzM3ZmFjOTQ1Mjc3NTNjYWUyMDM5MjY4N2EyYjY3YzcwZTA3ZGRjYyAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMwIEBACisyMDEyLTA4LTIzICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDb252ZXJ0IFdlYkxheWVyVHJlZVZpZXcgaW50ZXJm
YWNlIGludG8gcHVyZSB2aXJ0dWFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NDg2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwZGF0ZXMgRHVtcFJlbmRlclRyZWUncyBXZWJWaWV3SG9zdCB0byB2ZW5k
IGEgV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2Ugc28gRHVtcFJlbmRlclRyZWUgY2FuIHJ1biBj
b21wb3NpdGluZworICAgICAgICB0ZXN0cy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1
bXBSZW5kZXJUcmVlLmd5cGk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OmNyZWF0ZU91dHB1dFN1cmZhY2Up
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisgICAg
ICAgIChXZWJWaWV3SG9zdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3RPdXRwdXRTdXJmYWNlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdIb3N0T3V0cHV0U3VyZmFjZTo6V2ViVmlld0hvc3RPdXRwdXRT
dXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlOjp+V2Vi
Vmlld0hvc3RPdXRwdXRTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0hvc3RPdXRw
dXRTdXJmYWNlOjpiaW5kVG9DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SG9zdE91
dHB1dFN1cmZhY2U6OmNhcGFiaWxpdGllcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdIb3N0
T3V0cHV0U3VyZmFjZTo6Y29udGV4dDNEKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0hvc3RP
dXRwdXRTdXJmYWNlOjpzZW5kRnJhbWVUb1BhcmVudENvbXBvc2l0b3IpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0T3V0cHV0U3VyZmFjZS5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlZpZXdIb3N0T3V0cHV0U3VyZmFjZSk6CisK
IDIwMTItMDgtMjMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmVwbGF5IHRlc3RzIHRha2UgZm9yZXZlciB0byBsb2FkCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUuZ3lwaQppbmRleCAxNWNkOTQ0NDEyMWYwYTQ0MDdjNDFhMzg0NGUxMjVlM2Mz
YmU0NzE1Li43OTE5M2I1M2VjNzlkYzI5MGRjYzhiMjc0M2ZjNmNmOWU5MjYyNjJmIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKQEAgLTU0LDYgKzU0LDggQEAKICAg
ICAgICAgICAgICdjaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vV2Vi
Vmlld0hvc3QuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3RPdXRwdXRTdXJm
YWNlLmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNl
LmgnLAogICAgICAgICBdLAogICAgICAgICAndGVzdF9ydW5uZXJfZmlsZXMnOiBbCiAgICAgICAg
ICAgICAnRHVtcFJlbmRlclRyZWUuaCcsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggNjJlZTkzODkxZjViZWNmZjhlODU1Y2FlMDcyMDE0M2Iz
YTA1Y2U3NC4uZGIwZWE1ZWVmZjI5ZmFmZGJjMTAyYTExZjU2ZDBmODI2YTgyYTZmNiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtMzksMTQg
KzM5LDEyIEBACiAjaW5jbHVkZSAiVGVzdE5hdmlnYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiVGVzdFNoZWxsLmgiCiAjaW5jbHVkZSAiVGVzdFdlYlBsdWdpbi5oIgotI2luY2x1ZGUgInBs
YXRmb3JtL1dlYkNTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJDb25zb2xlTWVzc2FnZS5oIgogI2lu
Y2x1ZGUgIldlYkNvbnRleHRNZW51RGF0YS5oIgogI2luY2x1ZGUgIldlYkRPTU1lc3NhZ2VFdmVu
dC5oIgogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2UuaCIKICNpbmNsdWRlICJXZWJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2suaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgogI2luY2x1
ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgiCkBA
IC02MCwyMiArNTgsMjYgQEAKICNpbmNsdWRlICJXZWJQb3B1cFR5cGUuaCIKICNpbmNsdWRlICJX
ZWJQcmludFBhcmFtcy5oIgogI2luY2x1ZGUgIldlYlJhbmdlLmgiCi0jaW5jbHVkZSAicGxhdGZv
cm0vV2ViUmVjdC5oIgogI2luY2x1ZGUgIldlYlNjcmVlbkluZm8uaCIKLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJT
aXplLmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFjZS5oIgogI2luY2x1ZGUgIldlYlRl
eHRDaGVja2luZ0NvbXBsZXRpb24uaCIKICNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXN1bHQu
aCIKICNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgiCi0jaW5jbHVkZSAicGxhdGZv
cm0vV2ViVGhyZWFkLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMUmVxdWVzdC5oIgotI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYlVSTFJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgor
I2luY2x1ZGUgIldlYlZpZXdIb3N0T3V0cHV0U3VyZmFjZS5oIgogI2luY2x1ZGUgIldlYldpbmRv
d0ZlYXR1cmVzLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgiCiAjaW5jbHVkZSAic2tpYS9leHQvcGxhdGZvcm1fY2FudmFzLmgiCiAjaW5jbHVkZSAid2Vi
a2l0L3N1cHBvcnQvdGVzdF9tZWRpYV9zdHJlYW1fY2xpZW50LmgiCiAjaW5jbHVkZSAid2Via2l0
L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ1N0cmluZy5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZS5oPgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJEcmFnRGF0YS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+Cisj
aW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVGhyZWFkLmg+
CisjaW5jbHVkZSA8cHVibGljL1dlYlVSTFJlcXVlc3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
VVJMUmVzcG9uc2UuaD4KIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTI4NSwxMSArMjg3LDExIEBAIFdlYlN0b3JhZ2VOYW1lc3Bh
Y2UqIFdlYlZpZXdIb3N0OjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBx
dW90YSkKICAgICByZXR1cm4gd2Via2l0X3N1cHBvcnQ6OkNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKHF1b3RhKTsKIH0KIAotV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogV2ViVmll
d0hvc3Q6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dDNEKGNvbnN0IFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0Q6OkF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCitXZWJLaXQ6OldlYkNvbXBvc2l0b3JP
dXRwdXRTdXJmYWNlKiBXZWJWaWV3SG9zdDo6Y3JlYXRlT3V0cHV0U3VyZmFjZSgpCiB7CiAgICAg
aWYgKCF3ZWJWaWV3KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiB3ZWJraXRfc3Vw
cG9ydDo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0M0QoYXR0cmlidXRlcywgd2ViVmlldygpKTsKKyAg
ICByZXR1cm4gbmV3IFdlYktpdDo6V2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlKGFkb3B0UHRyKHdl
YmtpdF9zdXBwb3J0OjpDcmVhdGVHcmFwaGljc0NvbnRleHQzRChXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzKCksIHdlYlZpZXcoKSkpKTsKIH0KIAogdm9pZCBXZWJWaWV3
SG9zdDo6ZGlkQWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBXZWJDb25zb2xlTWVzc2FnZSYgbWVz
c2FnZSwgY29uc3QgV2ViU3RyaW5nJiBzb3VyY2VOYW1lLCB1bnNpZ25lZCBzb3VyY2VMaW5lKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggNzg5Mzk1
NDFkMGEwNjk4OWI3ZGViMDc2MTg4NTk4NjY3ZTY2NWVhYy4uNDYwOGY0NGI0MGVhY2EzNjA4N2Fh
MWNjMjc0ZWNkNTAzNzZiMWQyMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5oCkBAIC0xNDksNyArMTQ5LDcgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJs
aWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwK
ICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViV2lkZ2V0KiBjcmVhdGVQb3B1cE1lbnUoV2ViS2l0OjpX
ZWJQb3B1cFR5cGUpOwogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJXaWRnZXQqIGNyZWF0ZVBvcHVw
TWVudShjb25zdCBXZWJLaXQ6OldlYlBvcHVwTWVudUluZm8mKTsKICAgICB2aXJ0dWFsIFdlYktp
dDo6V2ViU3RvcmFnZU5hbWVzcGFjZSogY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodW5z
aWduZWQgcXVvdGEpOwotICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCog
Y3JlYXRlR3JhcGhpY3NDb250ZXh0M0QoY29uc3QgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQz
RDo6QXR0cmlidXRlcyYpOworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJDb21wb3NpdG9yT3V0cHV0
U3VyZmFjZSogY3JlYXRlT3V0cHV0U3VyZmFjZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRN
ZXNzYWdlVG9Db25zb2xlKGNvbnN0IFdlYktpdDo6V2ViQ29uc29sZU1lc3NhZ2UmLCBjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYgc291cmNlTmFtZSwgdW5zaWduZWQgc291cmNlTGluZSk7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZGluZygpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9w
TG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3RPdXRwdXRTdXJmYWNlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlZpZXdIb3N0T3V0cHV0U3VyZmFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQxYjU4NDBlOTZlNjBm
ZThkOTgyMDVlZGNjZTU2NTJlZDczZDZmNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0T3V0cHV0U3VyZmFjZS5jcHAKQEAgLTAsMCAr
MSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYlZpZXdI
b3N0T3V0cHV0U3VyZmFjZS5oIgorCisjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4
dDNELmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1dlYlZpZXdIb3N0T3V0cHV0U3VyZmFjZTo6V2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlKFBh
c3NPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKKyAgICA6IG1f
Y29udGV4dChjb250ZXh0KQoreworfQorCitXZWJWaWV3SG9zdE91dHB1dFN1cmZhY2U6On5XZWJW
aWV3SG9zdE91dHB1dFN1cmZhY2UoKQoreworfQorCitib29sIFdlYlZpZXdIb3N0T3V0cHV0U3Vy
ZmFjZTo6YmluZFRvQ2xpZW50KFdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlQ2xpZW50KikKK3sK
KyAgICByZXR1cm4gbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKK30KKworY29uc3Qg
V2ViS2l0OjpXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZTo6Q2FwYWJpbGl0aWVzJiBXZWJWaWV3
SG9zdE91dHB1dFN1cmZhY2U6OmNhcGFiaWxpdGllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
Y2FwYWJpbGl0aWVzOworfQorCitXZWJHcmFwaGljc0NvbnRleHQzRCogV2ViVmlld0hvc3RPdXRw
dXRTdXJmYWNlOjpjb250ZXh0M0QoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRleHQuZ2V0
KCk7Cit9CisKK3ZvaWQgV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlOjpzZW5kRnJhbWVUb1BhcmVu
dENvbXBvc2l0b3IoY29uc3QgV2ViQ29tcG9zaXRvckZyYW1lJikKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdE91dHB1dFN1cmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTJiYzUzOWQw
NDM2YjJlZmMxZTIyOGE3ZTQ2ZGM5Nzg4NTMwOWQzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlLmgKQEAgLTAs
MCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlX2gKKyNk
ZWZpbmUgV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlX2gKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJD
b21wb3NpdG9yT3V0cHV0U3VyZmFjZS5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
Q29tcG9zaXRvck91dHB1dFN1cmZhY2VDbGllbnQ7CitjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQz
RDsKKworY2xhc3MgV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlIDogcHVibGljIFdlYktpdDo6V2Vi
Q29tcG9zaXRvck91dHB1dFN1cmZhY2UgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlZpZXdI
b3N0T3V0cHV0U3VyZmFjZShQYXNzT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+
KTsKKyAgICB2aXJ0dWFsIH5XZWJWaWV3SG9zdE91dHB1dFN1cmZhY2UoKTsKKworICAgIHZpcnR1
YWwgYm9vbCBiaW5kVG9DbGllbnQoV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2VDbGllbnQqKSBP
VkVSUklERTsKKworICAgIHZpcnR1YWwgY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yT3V0cHV0
U3VyZmFjZTo6Q2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0QoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZEZyYW1lVG9QYXJlbnRDb21wb3NpdG9yKGNvbnN0IFdl
YkNvbXBvc2l0b3JGcmFtZSYpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIFdlYktpdDo6V2Vi
Q29tcG9zaXRvck91dHB1dFN1cmZhY2U6OkNhcGFiaWxpdGllcyBtX2NhcGFiaWxpdGllczsKKyAg
ICBPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworfTsKKwor
fQorCisjZW5kaWYgLy8gV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160298</attachid>
            <date>2012-08-23 17:55:13 -0700</date>
            <delta_ts>2012-08-24 10:12:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94866-20120823175509.patch</filename>
            <type>text/plain</type>
            <size>94865</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBiY2E1YWQ4YWRiYjY3
YmI2MTllYThmN2NlNDU4ZGM3ZWVhNzYwOTE1Li4wZmFjZTA3NzQxMDIwYmQ2ZGRiOGE3ZmVmNWRm
MDNhMDk2NzFlN2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMCBAQAogMjAxMi0wOC0yMyAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1
bV0gQ29udmVydCBXZWJMYXllclRyZWVWaWV3IGludGVyZmFjZSBpbnRvIHB1cmUgdmlydHVhbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ4NjYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1ha2Vz
IHRoZSBXZWJMYXllclRyZWVWaWV3IGludGVyZmFjZSBwdXJlIHZpcnR1YWwgdG8gcHJvdmlkZSBi
ZXR0ZXIgaW5zdWxhdGlvbiBmcm9tIHRoZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIGNo
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoU2V0dGluZ3MpOgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlldyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6On5XZWJMYXllclRyZWVWaWV3KToKKworMjAxMi0wOC0y
MyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJv
bWl1bV0gQ29udmVydCBXZWJBbmltYXRpb25DdXJ2ZSBzdWJ0eXBlcyBpbnRvIHB1cmUgdmlydHVh
bAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQwNjgK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDNmZWQwZGVjYjY3N2UxZTlkYjA1M2Q3MTFmYTE0MTIzOWQ5YTliNDQu
LmQyMmRiNzRhZTVjNjUzNWIzMDY5YjNiNTQ0M2M4YzFiYzk0MDU3NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAxMi0wOC0yMyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ29udmVydCBXZWJMYXllclRyZWVWaWV3IGlu
dGVyZmFjZSBpbnRvIHB1cmUgdmlydHVhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTQ4NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW5hbWVzIENDTGF5ZXJUcmVlSG9zdENsaWVudDo6dXBkYXRlQW5p
bWF0aW9ucyAtPiBDQ0xheWVyVHJlZUhvc3RDbGllbnQ6OmFuaW1hdGUgdG8gYXZvaWQgYSBuYW1p
bmcgY29sbGlzaW9uCisgICAgICAgIGFuZCB0byBiZXR0ZXIgbWF0Y2ggdGhlIG90aGVyIGltcGVy
YXRpdmUtc291bmRpbmcgY2FsbHMgKGxpa2UgbGF5b3V0KS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoQ0NM
YXllclRyZWVIb3N0Q2xpZW50KToKKwogMjAxMi0wOC0yMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYXR0ZW1wdCB0byBmaXggYnVpbGQgZmFp
bHVyZSBpbiBEZWJ1Zy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZDhhNWQ2NWEwOWMw
MTU4NzcxNTRiN2RhNzQzZDVmOTMwOWMyZjVhZi4uYzg0MDQxMmViOTNjMGE4YWJmMzYxOTk2ZDNi
N2M2ZGZjMmNhNWNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NyBA
QAorMjAxMi0wOC0yMyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtjaHJvbWl1bV0gQ29udmVydCBXZWJMYXllclRyZWVWaWV3IGludGVyZmFjZSBpbnRv
IHB1cmUgdmlydHVhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTQ4NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcGRhdGVzIFdlYkxheWVyVHJlZVZpZXcgaW1wbGVtZW50YXRpb24gYW5kIGNhbGxlcnMg
dG8gbmV3IGludGVyZmFjZS4gVGhlIGNyZWF0ZUdyYXBoaWNzQ29udGV4dDNEKCkgd3JhcHBlcgor
ICAgICAgICBzdHVmZiBjYW4ganVzdCBnbyBhd2F5IG5vdyBzaW5jZSBkb3duc3RyZWFtIGhhcyB1
cGRhdGVkIHRvIGNyZWF0ZU91dHB1dFN1cmZhY2UoKS4KKworICAgICAgICAqIFdlYktpdC5neXBp
OgorICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3LmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBzcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXll
clRyZWVWaWV3OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1w
bDo6V2ViTGF5ZXJUcmVlVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVW
aWV3SW1wbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0U3VyZmFjZVJlYWR5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNldFJvb3RMYXllcik6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVyVHJlZVZpZXdJbXBsOjpjbGVhclJvb3RMYXllcik6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVyVHJlZVZpZXdJbXBsOjpjb21wb3NpdG9ySWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpzZXRWaWV3cG9ydFNpemUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6bGF5b3V0Vmlld3BvcnRTaXplKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmRldmljZVZpZXdwb3J0U2l6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpzZXREZXZpY2VTY2FsZUZhY3Rv
cik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpkZXZpY2VTY2FsZUZh
Y3Rvcik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpzZXRCYWNrZ3Jv
dW5kQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0SGFz
VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmll
d0ltcGw6OnNldFZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1w
bDo6c2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJUcmVlVmlld0ltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNldE5lZWRzQW5pbWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpjb21taXRSZXF1ZXN0ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6Y29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTGF5ZXJUcmVlVmlld0ltcGw6OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6Y29tcG9zaXRlQW5kUmVhZGJhY2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6ZmluaXNoQWxsUmVuZGVyaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OnJlbmRlcmluZ1N0YXRzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNldEZvbnRBdGxhcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpsb3NlQ29tcG9zaXRvckNvbnRleHQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6d2lsbEJlZ2luRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkQmVnaW5GcmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjphbmltYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmxheW91dCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVyVHJlZVZpZXdJbXBsOjphcHBseVNjcm9sbEFuZFNjYWxlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZU91dHB1dFN1cmZhY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkUmVjcmVhdGVPdXRwdXRTdXJmYWNl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OndpbGxDb21taXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkQ29tbWl0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmRpZENvbW1pdEFuZERyYXdGcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpkaWRDb21wbGV0ZVN3YXBC
dWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNjaGVkdWxl
Q29tcG9zaXRlKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaDoKKyAgICAg
ICAgKFdlYkxheWVyVHJlZVZpZXdJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVuZGVyaW5nU3RhdHMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Q29tcG9zaXRvclN1cmZhY2VSZWFkeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjphbmltYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OmRvUGl4ZWxSZWFkYmFja1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnBhaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbXBvc2l0
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXROZWVkc1JlZHJhdyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjppc0lucHV0VGhyb3R0bGVkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6Omxvc2VDb21wb3NpdG9yQ29udGV4dCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXREZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpjb21wdXRlUGFnZVNjYWxlRmFjdG9yTGltaXRzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OnNldElzVHJhbnNwYXJlbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjppbnZhbGlkYXRlUm9vdExheWVyUmVjdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp1cGRhdGVMYXllclRyZWVWaWV3cG9ydCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRWaXNpYmlsaXR5U3RhdGUpOgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiB0
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1RocmVhZGVk
VGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NUaHJlYWRlZFRlc3QuaDoKKyAgICAgICAgKFdl
YktpdFRlc3RzOjpUZXN0SG9va3M6OmFuaW1hdGUpOgorICAgICAgICAqIHRlc3RzL0Zha2VDQ0xh
eWVyVHJlZUhvc3RDbGllbnQuaDoKKyAgICAgICAgKiB0ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21p
dW1UZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R3JhcGhpY3NMYXllckNocm9taXVtVGVzdDo6
R3JhcGhpY3NMYXllckNocm9taXVtVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OkdyYXBoaWNzTGF5
ZXJDaHJvbWl1bVRlc3Q6On5HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0KToKKyAgICAgICAgKEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QpOgorICAgICAgICAqIHRlc3RzL1dlYkxheWVyVGVzdC5j
cHA6CisgICAgICAgICogdGVzdHMvV2ViTGF5ZXJUcmVlVmlld1Rlc3QuY3BwOgorICAgICAgICAq
IHRlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0Q29tbW9uLmg6CisgICAgICAgIChNb2NrV2ViTGF5
ZXJUcmVlVmlld0NsaWVudCk6CisKIDIwMTItMDgtMjMgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IEV4cG9zZSBtZWNoYW5pc20gZm9yIGRh
dGFiYXNlIHRvIGZvcmNlIGEgY29ubmVjdGlvbiB0byBjbG9zZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCAxYWQ5NjdkYTFh
ZDY3MDJjNDNhNTljYTYwYzZlMGMzZjk3MzExYWY5Li40OTE4Mzc5YmY0OGEwYjk4NjRiMmVhNThh
NmM1MGQwNTIzNDM3M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyVHJlZVZpZXcuaApAQCAtMzMsMjEgKzMzLDE1IEBACiAjaW5jbHVkZSAiV2Vi
UHJpdmF0ZU93blB0ci5oIgogI2luY2x1ZGUgIldlYlNpemUuaCIKIAotbmFtZXNwYWNlIFdlYkNv
cmUgewotY2xhc3MgQ0NMYXllclRyZWVIb3N0Owotc3RydWN0IENDTGF5ZXJUcmVlU2V0dGluZ3M7
Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CiBj
bGFzcyBXZWJMYXllcjsKIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdDbGllbnQ7Ci1jbGFzcyBXZWJM
YXllclRyZWVWaWV3SW1wbDsKIHN0cnVjdCBXZWJQb2ludDsKIHN0cnVjdCBXZWJSZWN0Owogc3Ry
dWN0IFdlYlJlbmRlcmluZ1N0YXRzOwogCi1jbGFzcyBXZWJMYXllclRyZWVWaWV3IDogcHVibGlj
IFdlYk5vbkNvcHlhYmxlIHsKK2NsYXNzIFdlYkxheWVyVHJlZVZpZXcgewogcHVibGljOgogICAg
IHN0cnVjdCBTZXR0aW5ncyB7CiAgICAgICAgIFNldHRpbmdzKCkKQEAgLTcwLDgzICs2NCw3MyBA
QCBwdWJsaWM6CiAgICAgICAgIGRvdWJsZSByZWZyZXNoUmF0ZTsKICAgICAgICAgV2ViU2l6ZSBk
ZWZhdWx0VGlsZVNpemU7CiAgICAgICAgIFdlYlNpemUgbWF4VW50aWxlZExheWVyU2l6ZTsKLQot
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgICAgICBvcGVyYXRvciBXZWJDb3JlOjpDQ0xh
eWVyVHJlZVNldHRpbmdzKCkgY29uc3Q7Ci0jZW5kaWYKICAgICB9OwogCi0gICAgV2ViTGF5ZXJU
cmVlVmlldygpIHsgfQotICAgIH5XZWJMYXllclRyZWVWaWV3KCkgeyByZXNldCgpOyB9Ci0KLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyNkZWZpbmUgV0VCTEFZRVJUUkVFVklFV19J
U19QVVJFX1ZJUlRVQUwKKyAgICAvLyBBdHRlbXB0cyB0byBpbml0aWFsaXplIHRoaXMgV2ViTGF5
ZXJUcmVlVmlldyB3aXRoIHRoZSBnaXZlbiBjbGllbnQsIHJvb3QgbGF5ZXIsIGFuZCBzZXR0aW5n
cy4KKyAgICAvLyBJZiBpbml0aWFsaXphdGlvbiBmYWlscywgdGhpcyB3aWxsIHJldHVybiBuaWwu
CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViTGF5ZXJUcmVlVmlldyogY3JlYXRlKFdlYkxh
eWVyVHJlZVZpZXdDbGllbnQqLCBjb25zdCBXZWJMYXllciYgcm9vdCwgY29uc3QgU2V0dGluZ3Mm
KTsKIAotICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CisgICAgdmlydHVhbCB+V2ViTGF5ZXJUcmVl
VmlldygpIHsgfQogCiAgICAgLy8gSW5pdGlhbGl6YXRpb24gYW5kIGxpZmVjeWNsZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gICAgLy8gQXR0ZW1wdHMgdG8gaW5p
dGlhbGl6ZSB0aGlzIFdlYkxheWVyVHJlZVZpZXcgd2l0aCB0aGUgZ2l2ZW4gY2xpZW50LCByb290
IGxheWVyLCBhbmQgc2V0dGluZ3MuCi0gICAgLy8gSWYgaW5pdGlhbGl6YXRpb24gZmFpbHMsIHRo
aXMgd2lsbCByZXR1cm4gZmFsc2UgYW5kIC5pc051bGwoKSB3aWxsIHJldHVybiB0cnVlLgotICAg
IC8vIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgbWV0aG9kcyBiZWxvdy4KLSAgICBXRUJLSVRf
RVhQT1JUIGJvb2wgaW5pdGlhbGl6ZShXZWJMYXllclRyZWVWaWV3Q2xpZW50KiwgY29uc3QgV2Vi
TGF5ZXImIHJvb3QsIGNvbnN0IFNldHRpbmdzJik7Ci0KICAgICAvLyBJbmRpY2F0ZXMgdGhhdCB0
aGUgY29tcG9zaXRpbmcgc3VyZmFjZSB1c2VkIGJ5IHRoaXMgV2ViTGF5ZXJUcmVlVmlldyBpcyBy
ZWFkeSB0byB1c2UuCiAgICAgLy8gQSBXZWJMYXllclRyZWVWaWV3IG1heSByZXF1ZXN0IGEgY29u
dGV4dCBmcm9tIGl0cyBjbGllbnQgYmVmb3JlIHRoZSBzdXJmYWNlIGlzIHJlYWR5LAogICAgIC8v
IGJ1dCBpdCB3b24ndCBhdHRlbXB0IHRvIHVzZSBpdC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0U3VyZmFjZVJlYWR5KCk7CisgICAgdmlydHVhbCB2b2lkIHNldFN1cmZhY2VSZWFkeSgpID0g
MDsKIAogICAgIC8vIFNldHMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuIFRoZSByb290IGlzIHNldCBi
eSB3YXkgb2YgdGhlIGNvbnN0cnVjdG9yLgotICAgIC8vIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQg
dG8gZXhwbGljaXRseSBzZXQgdGhlIHJvb3QgdG8gbnVsbCB0byBicmVhawotICAgIC8vIGN5Y2xl
cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Um9vdExheWVyKFdlYkxheWVyKik7CisgICAg
dmlydHVhbCB2b2lkIHNldFJvb3RMYXllcihjb25zdCBXZWJMYXllciYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJSb290TGF5ZXIoKSA9IDA7CiAKICAgICAvLyBSZXR1cm5zIGEgdW5pcXVl
IGlkZW50aWZpZXIgdGhhdCBjYW4gYmUgdXNlZCBvbiB0aGUgY29tcG9zaXRvciB0aHJlYWQgdG8g
cmVxdWVzdCBhCiAgICAgLy8gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlciBpbnN0YW5jZS4KLSAg
ICBXRUJLSVRfRVhQT1JUIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpOworICAgIHZpcnR1YWwg
aW50IGNvbXBvc2l0b3JJZGVudGlmaWVyKCkgPSAwOwogCiAKICAgICAvLyBWaWV3IHByb3BlcnRp
ZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IFdlYlNpemUmIGxh
eW91dFZpZXdwb3J0U2l6ZSwgY29uc3QgV2ViU2l6ZSYgZGV2aWNlVmlld3BvcnRTaXplID0gV2Vi
U2l6ZSgpKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IFdlYlNpemUm
IGxheW91dFZpZXdwb3J0U2l6ZSwgY29uc3QgV2ViU2l6ZSYgZGV2aWNlVmlld3BvcnRTaXplID0g
V2ViU2l6ZSgpKSA9IDA7CiAgICAgLy8gR2l2ZXMgdGhlIHZpZXdwb3J0IHNpemUgaW4gbGF5ZXIg
c3BhY2UuCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIGxheW91dFZpZXdwb3J0U2l6ZSgpIGNv
bnN0OworICAgIHZpcnR1YWwgV2ViU2l6ZSBsYXlvdXRWaWV3cG9ydFNpemUoKSBjb25zdCA9IDA7
CiAgICAgLy8gR2l2ZXMgdGhlIHZpZXdwb3J0IHNpemUgaW4gcGh5c2ljYWwgZGV2aWNlIHBpeGVs
cyAobWF5IGJlIGRpZmZlcmVudAogICAgIC8vIGZyb20gdGhlIGFib3ZlIGlmIHRoZXJlIGV4aXN0
cyBwYWdlIHNjYWxlLCBkZXZpY2Ugc2NhbGUgb3IgZml4ZWQgbGF5b3V0CiAgICAgLy8gbW9kZSku
Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIGRldmljZVZpZXdwb3J0U2l6ZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgV2ViU2l6ZSBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25zdCA9IDA7CiAKLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOwotICAgIFdF
QktJVF9FWFBPUlQgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QgPSAwOwogCiAgICAgLy8gU2V0cyB0aGUgYmFja2dy
b3VuZCBjb2xvciBmb3IgdGhlIHZpZXdwb3J0LgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRC
YWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpOworICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5k
Q29sb3IoV2ViQ29sb3IpID0gMDsKIAogICAgIC8vIFNldHMgdGhlIGJhY2tncm91bmQgdHJhbnNw
YXJlbmN5IGZvciB0aGUgdmlld3BvcnQuIFRoZSBkZWZhdWx0IGlzICdmYWxzZScuCi0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChib29sKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGJvb2wpID0gMDsKIAogICAg
IC8vIFNldHMgd2hldGhlciB0aGlzIHZpZXcgaXMgdmlzaWJsZS4gSW4gdGhyZWFkZWQgbW9kZSwg
YSB2aWV3IHRoYXQgaXMgbm90IHZpc2libGUgd2lsbCBub3QKICAgICAvLyBjb21wb3NpdGUgb3Ig
dHJpZ2dlciB1cGRhdGVBbmltYXRpb25zKCkgb3IgbGF5b3V0KCkgY2FsbHMgdW50aWwgaXQgYmVj
b21lcyB2aXNpYmxlLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpID0gMDsKIAogICAgIC8vIFNldHMgdGhl
IGN1cnJlbnQgcGFnZSBzY2FsZSBmYWN0b3IgYW5kIG1pbmltdW0gLyBtYXhpbXVtIGxpbWl0cy4g
Qm90aCBsaW1pdHMgYXJlIGluaXRpYWxseSAxIChubyBwYWdlIHNjYWxlIGFsbG93ZWQpLgotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoZmxvYXQgcGFn
ZVNjYWxlRmFjdG9yLCBmbG9hdCBtaW5pbXVtLCBmbG9hdCBtYXhpbXVtKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKGZsb2F0IHBhZ2VTY2FsZUZhY3Rvciwg
ZmxvYXQgbWluaW11bSwgZmxvYXQgbWF4aW11bSkgPSAwOwogCiAgICAgLy8gU3RhcnRzIGFuIGFu
aW1hdGlvbiBvZiB0aGUgcGFnZSBzY2FsZSB0byBhIHRhcmdldCBzY2FsZSBmYWN0b3IgYW5kIHNj
cm9sbCBvZmZzZXQuCiAgICAgLy8gSWYgdXNlQW5jaG9yIGlzIHRydWUsIGRlc3RpbmF0aW9uIGlz
IGEgcG9pbnQgb24gdGhlIHNjcmVlbiB0aGF0IHdpbGwgcmVtYWluIGZpeGVkIGZvciB0aGUgZHVy
YXRpb24gb2YgdGhlIGFuaW1hdGlvbi4KICAgICAvLyBJZiB1c2VBbmNob3IgaXMgZmFsc2UsIGRl
c3RpbmF0aW9uIGlzIHRoZSBmaW5hbCB0b3AtbGVmdCBzY3JvbGwgcG9zaXRpb24uCi0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IFdlYlBvaW50JiBk
ZXN0aW5hdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IG5ld1BhZ2VTY2FsZSwgZG91YmxlIGR1
cmF0aW9uU2VjKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29u
c3QgV2ViUG9pbnQmIGRlc3RpbmF0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgbmV3UGFnZVNj
YWxlLCBkb3VibGUgZHVyYXRpb25TZWMpID0gMDsKIAogCiAgICAgLy8gRmxvdyBjb250cm9sIGFu
ZCBzY2hlZHVsaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAg
ICAgLy8gUmVxdWVzdHMgYW4gdXBkYXRlQW5pbWF0aW9ucygpIGNhbGwuCi0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldE5lZWRzQW5pbWF0ZSgpOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Fu
aW1hdGUoKSA9IDA7CiAKICAgICAvLyBJbmRpY2F0ZXMgdGhhdCB0aGUgdmlldyBuZWVkcyB0byBi
ZSByZWRyYXduLiBUaGlzIGlzIHR5cGljYWxseSB1c2VkIHdoZW4gdGhlIGZyb250YnVmZmVyIGlz
IGRhbWFnZWQuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE5lZWRzUmVkcmF3KCk7CisgICAg
dmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3KCkgPSAwOwogCiAgICAgLy8gSW5kaWNhdGVzIHdo
ZXRoZXIgYSBjb21taXQgaXMgcGVuZGluZy4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgY29tbWl0
UmVxdWVzdGVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNvbW1pdFJlcXVlc3RlZCgpIGNv
bnN0ID0gMDsKIAogICAgIC8vIFRyaWdnZXJzIGEgY29tcG9zaXRpbmcgcGFzcy4gSWYgdGhlIGNv
bXBvc2l0b3IgdGhyZWFkIHdhcyBub3QKICAgICAvLyBlbmFibGVkIHZpYSBXZWJDb21wb3NpdG9y
Ojppbml0aWFsaXplLCB0aGUgY29tcG9zaXRpbmcgcGFzcyBoYXBwZW5zCkBAIC0xNTUsMTIgKzEz
OSwxMiBAQCBwdWJsaWM6CiAgICAgLy8gcmV0dXJucyB3aGVuIHRoZSBjb21wb3NpdG9yIHRocmVh
ZCBpcyBkaXNhYmxlZCksIFdlYkNvbnRlbnRMYXllcnMgd2lsbCBiZQogICAgIC8vIGFza2VkIHRv
IHBhaW50IHRoZWlyIGRpcnR5IHJlZ2lvbiwgdGhyb3VnaAogICAgIC8vIFdlYkNvbnRlbnRMYXll
ckNsaWVudDo6cGFpbnRDb250ZW50cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgY29tcG9zaXRl
KCk7CisgICAgdmlydHVhbCB2b2lkIGNvbXBvc2l0ZSgpID0gMDsKIAogICAgIC8vIEltbWVkaWF0
ZWx5IHVwZGF0ZSBhbmltYXRpb25zLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBmcmFt
ZSBzY2hlZHVsaW5nIGlzIGhhbmRsZWQgYnkKICAgICAvLyB0aGUgV2ViTGF5ZXJUcmVlVmlldyB1
c2VyIGFuZCBub3QgaW50ZXJuYWxseSBieSB0aGUgY29tcG9zaXRvciwgbWVhbmluZyBvbmx5IGlu
IHNpbmdsZS10aHJlYWRlZAogICAgIC8vIG1vZGUuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHVw
ZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpID0gMDsKIAogICAgIC8vIENv
bXBvc2l0ZXMgYW5kIGF0dGVtcHRzIHRvIHJlYWQgYmFjayB0aGUgcmVzdWx0IGludG8gdGhlIHBy
b3ZpZGVkCiAgICAgLy8gYnVmZmVyLiBJZiBpdCB3YXNuJ3QgcG9zc2libGUsIGUuZy4gZHVlIHRv
IGNvbnRleHQgbG9zdCwgd2lsbCByZXR1cm4KQEAgLTE2OCwyNyArMTUyLDI0IEBAIHB1YmxpYzoK
ICAgICAvLyBsYXJnZSBlbm91Z2ggY29udGFpbiB2aWV3cG9ydFNpemUoKS53aWR0aCgpICogdmll
d3BvcnRTaXplKCkuaGVpZ2h0KCkKICAgICAvLyBwaXhlbHMuIFRoZSBXZWJMYXllclRyZWVWaWV3
IGRvZXMgbm90IGFzc3VtZSBvd25lcnNoaXAgb2YgdGhlIGJ1ZmZlci4KICAgICAvLyBUaGUgYnVm
ZmVyIGlzIG5vdCBtb2RpZmllZCBpZiB0aGUgZmFsc2UgaXMgcmV0dXJuZWQuCi0gICAgV0VCS0lU
X0VYUE9SVCBib29sIGNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgV2Vi
UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhl
bHMsIGNvbnN0IFdlYlJlY3QmKSA9IDA7CiAKICAgICAvLyBCbG9ja3MgdW50aWwgdGhlIG1vc3Qg
cmVjZW50bHkgY29tcG9zaXRlZCBmcmFtZSBoYXMgZmluaXNoZWQgcmVuZGVyaW5nIG9uIHRoZSBH
UFUuCiAgICAgLy8gVGhpcyBjYW4gaGF2ZSBhIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGltcGFj
dCBhbmQgc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXJlLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBm
aW5pc2hBbGxSZW5kZXJpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5n
KCkgPSAwOwogCiAgICAgLy8gRGVidWdnaW5nIC8gZGFuZ2Vyb3VzIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gRmlsbHMgaW4gYSBXZWJSZW5k
ZXJpbmdTdGF0cyBzdHJ1Y3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhdGUg
b2YgdGhlIGNvbXBvc2l0b3IuCiAgICAgLy8gVGhpcyBjYWxsIGlzIHJlbGF0aXZlbHkgZXhwZW5z
aXZlIGluIHRocmVhZGVkIG1vZGUgYXMgaXQgYmxvY2tzIG9uIHRoZSBjb21wb3NpdG9yIHRocmVh
ZC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3Rh
dHMmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5n
U3RhdHMmKSBjb25zdCA9IDA7CiAKICAgICAvLyBQcm92aWRlcyBhIGZvbnQgYXRsYXMgdG8gdXNl
IGZvciBkZWJ1ZyB2aXN1YWxpemF0aW9ucy4gVGhlIGF0bGFzIG11c3QgYmUgYSBiaXRtYXAgY29u
dGFpbmluZyBnbHlwaCBkYXRhLCBhIHRhYmxlIG9mCiAgICAgLy8gQVNDSUkgY2hhcmFjdGVyIHZh
bHVlcyB0byBhIHN1YnJlY3RhbmdsZSBvZiB0aGUgYXRsYXMgcmVwcmVzZW50aW5nIHRoZSBjb3Jy
ZXNwb25kaW5nIGdseXBoLCBhbmQgdGhlIGdseXBoIGhlaWdodC4KLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0Rm9udEF0bGFzKFNrQml0bWFwLCBXZWJSZWN0IGFzY2lpVG9SZWN0VGFibGVbMTI4
XSwgaW50IGZvbnRIZWlnaHQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRGb250QXRsYXMoU2tCaXRt
YXAsIFdlYlJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdLCBpbnQgZm9udEhlaWdodCkgPSAwOwog
CiAgICAgLy8gU2ltdWxhdGVzIGEgbG9zdCBjb250ZXh0LiBGb3IgdGVzdGluZyBvbmx5LgotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKTsK
LQotcHJvdGVjdGVkOgotICAgIFdlYlByaXZhdGVPd25QdHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+
IG1fcHJpdmF0ZTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBu
dW1UaW1lcykgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcAppbmRleCA1ZWUxYmY2ZTk1YzRiMmY2OGUzMjJmM2RlMDcyMTMwMTgx
NjdmOWNmLi4yNGEzMzRjM2ZjNzEyNDdhZjFjMjNiMzJjZmMyMmU5OGFmMjI3YjRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6YWNxdWlyZUxheWVyVGV4dHVyZXMoKQogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKQogewogICAg
IG1fYW5pbWF0aW5nID0gdHJ1ZTsKLSAgICBtX2NsaWVudC0+dXBkYXRlQW5pbWF0aW9ucyhtb25v
dG9uaWNGcmFtZUJlZ2luVGltZSk7CisgICAgbV9jbGllbnQtPmFuaW1hdGUobW9ub3RvbmljRnJh
bWVCZWdpblRpbWUpOwogICAgIGFuaW1hdGVMYXllcnMobW9ub3RvbmljRnJhbWVCZWdpblRpbWUp
OwogICAgIG1fYW5pbWF0aW5nID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgK
aW5kZXggY2MwYjQ1ZDNkN2ZjN2IxNWE0N2MxNTJlNTI3M2Y5YmM2ZWY1M2M3MC4uN2M1ODc1ZmZh
ODA1OTk1NGZmMDRhNmExYjAxNjAxYTgxZDFiYTQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVn
aW5GcmFtZSgpID0gMDsKICAgICAvLyBNYXJrcyBmaW5pc2hpbmcgY29tcG9zaXRpbmctcmVsYXRl
ZCB0YXNrcyBvbiB0aGUgbWFpbiB0aHJlYWQuIEluIHRocmVhZGVkIG1vZGUsIHRoaXMgY29ycmVz
cG9uZHMgdG8gZGlkQ29tbWl0KCkuCiAgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRnJhbWUoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5U
aW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGUoZG91YmxlIGZyYW1lQmVnaW5UaW1l
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgcGFn
ZVNjYWxlKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYktpdDo6V2ViQ29tcG9zaXRv
ck91dHB1dFN1cmZhY2U+IGNyZWF0ZU91dHB1dFN1cmZhY2UoKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwaQppbmRleCA4OTBiM2Y2NzU0ZDBhMzFjN2M3M2IzNTM4Y2IwNTk1YmVhYmMw
ZGE1Li5jNzIxMTEyYjA0YWQ1MmQxYzViYWRlOGNmZTY3NzE1MmY2MWJlODMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTE5NSw3ICsxOTUsNiBAQAogICAgICAgICAgICAgJ3Ny
Yy9XZWJJbWFnZUxheWVySW1wbC5oJywKICAgICAgICAgICAgICdzcmMvV2ViTGF5ZXJJbXBsLmNw
cCcsCiAgICAgICAgICAgICAnc3JjL1dlYkxheWVySW1wbC5oJywKLSAgICAgICAgICAgICdzcmMv
V2ViTGF5ZXJUcmVlVmlldy5jcHAnLAogICAgICAgICAgICAgJ3NyYy9XZWJMYXllclRyZWVWaWV3
SW1wbC5jcHAnLAogICAgICAgICAgICAgJ3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oJywKICAg
ICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3ZGZiY2QxMjllZTExNzVjMmFjMDU5Njg1ODI3ZGMwNWM0ZDFmYTFjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MjE0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgot
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSA8cHVibGlj
L1dlYkxheWVyVHJlZVZpZXcuaD4KLQotI2luY2x1ZGUgIkNDRm9udEF0bGFzLmgiCi0jaW5jbHVk
ZSAiQ0NHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJDQ0xheWVyVHJlZUhvc3QuaCIKLSNp
bmNsdWRlICJDQ1JlbmRlcmluZ1N0YXRzLmgiCi0jaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgot
I2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgotI2luY2x1ZGUgIldlYkxheWVyVHJlZVZpZXdJbXBs
LmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlBv
aW50Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2Vi
UmVuZGVyaW5nU3RhdHMuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViU2l6ZS5oPgotCi11c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkxheWVyVHJlZVZp
ZXc6OlNldHRpbmdzOjpvcGVyYXRvciBDQ0xheWVyVHJlZVNldHRpbmdzKCkgY29uc3QKLXsKLSAg
ICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwotICAgIHNldHRpbmdzLnNob3dGUFNDb3Vu
dGVyID0gc2hvd0ZQU0NvdW50ZXI7Ci0gICAgc2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVl
ID0gc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwotICAgIHNldHRpbmdzLnNob3dQYWludFJlY3RzID0g
c2hvd1BhaW50UmVjdHM7Ci0gICAgc2V0dGluZ3MucmVuZGVyVlN5bmNFbmFibGVkID0gcmVuZGVy
VlN5bmNFbmFibGVkOwotICAgIHNldHRpbmdzLnJlZnJlc2hSYXRlID0gcmVmcmVzaFJhdGU7Ci0g
ICAgc2V0dGluZ3MuZGVmYXVsdFRpbGVTaXplID0gZGVmYXVsdFRpbGVTaXplOwotICAgIHNldHRp
bmdzLm1heFVudGlsZWRMYXllclNpemUgPSBtYXhVbnRpbGVkTGF5ZXJTaXplOwotICAgIHNldHRp
bmdzLmFjY2VsZXJhdGVQYWludGluZyA9IGFjY2VsZXJhdGVQYWludGluZzsKLQotICAgIC8vIEZJ
WE1FOiBzaG93RlBTQ291bnRlciAvIHNob3dQbGF0Zm9ybUxheWVyVHJlZSAvIG1heFBhcnRpYWxU
ZXh0dXJlVXBkYXRlcyBhcmVuJ3Qgc3VwcG9ydGVkIGN1cnJlbnRseS4KLSAgICByZXR1cm4gc2V0
dGluZ3M7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6cmVzZXQoKQotewotICAgIG1fcHJp
dmF0ZS5yZXNldCgwKTsKLX0KLQotYm9vbCBXZWJMYXllclRyZWVWaWV3Ojppc051bGwoKSBjb25z
dAotewotICAgIHJldHVybiAhbV9wcml2YXRlLmdldCgpOwotfQotCi1ib29sIFdlYkxheWVyVHJl
ZVZpZXc6OmluaXRpYWxpemUoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCogY2xpZW50LCBjb25zdCBX
ZWJMYXllciYgcm9vdCwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MmIHNldHRpbmdz
KQotewotICAgIC8vIFdlIGhhdmUgdG8gbGVhayB0aGUgcG9pbnRlciBoZXJlIGludG8gYSBXZWJQ
cml2YXRlT3duUHRyLiBXZSBmcmVlIHRoaXMgb2JqZWN0IGluIHJlc2V0KCkuCi0gICAgbV9wcml2
YXRlLnJlc2V0KFdlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGUoY2xpZW50LCByb290LCBzZXR0
aW5ncykubGVha1B0cigpKTsKLSAgICByZXR1cm4gIWlzTnVsbCgpOwotfQotCi12b2lkIFdlYkxh
eWVyVHJlZVZpZXc6OnNldFN1cmZhY2VSZWFkeSgpCi17Ci0gICAgbV9wcml2YXRlLT5sYXllclRy
ZWVIb3N0KCktPnNldFN1cmZhY2VSZWFkeSgpOwotfQotCi12b2lkIFdlYkxheWVyVHJlZVZpZXc6
OnNldFJvb3RMYXllcihXZWJMYXllciAqcm9vdCkKLXsKLSAgICBpZiAocm9vdCkKLSAgICAgICAg
bV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcihzdGF0aWNfY2FzdDxXZWJM
YXllckltcGwqPihyb290KS0+bGF5ZXIoKSk7Ci0gICAgZWxzZQotICAgICAgICBtX3ByaXZhdGUt
PmxheWVyVHJlZUhvc3QoKS0+c2V0Um9vdExheWVyKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4o
KSk7Ci19Ci0KLWludCBXZWJMYXllclRyZWVWaWV3Ojpjb21wb3NpdG9ySWRlbnRpZmllcigpCi17
Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5jb21wb3NpdG9ySWRlbnRp
ZmllcigpOwotfQotCi12b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldFZpZXdwb3J0U2l6ZShjb25z
dCBXZWJTaXplJiBsYXlvdXRWaWV3cG9ydFNpemUsIGNvbnN0IFdlYlNpemUmIGRldmljZVZpZXdw
b3J0U2l6ZSkKLXsKLSAgICBpZiAoIWRldmljZVZpZXdwb3J0U2l6ZS5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRWaWV3cG9ydFNpemUobGF5b3V0Vmll
d3BvcnRTaXplLCBkZXZpY2VWaWV3cG9ydFNpemUpOwotICAgIGVsc2UKLSAgICAgICAgbV9wcml2
YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFZpZXdwb3J0U2l6ZShsYXlvdXRWaWV3cG9ydFNpemUs
IGxheW91dFZpZXdwb3J0U2l6ZSk7Ci19Ci0KLVdlYlNpemUgV2ViTGF5ZXJUcmVlVmlldzo6bGF5
b3V0Vmlld3BvcnRTaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViU2l6ZShtX3ByaXZhdGUt
PmxheWVyVHJlZUhvc3QoKS0+bGF5b3V0Vmlld3BvcnRTaXplKCkpOwotfQotCi1XZWJTaXplIFdl
YkxheWVyVHJlZVZpZXc6OmRldmljZVZpZXdwb3J0U2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IFdlYlNpemUobV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmRldmljZVZpZXdwb3J0U2l6ZSgp
KTsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXREZXZpY2VTY2FsZUZhY3Rvcihjb25z
dCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKLXsKLSAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhv
c3QoKS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwotfQotCi1mbG9h
dCBXZWJMYXllclRyZWVWaWV3OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotfQot
Ci12b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldEJhY2tncm91bmRDb2xvcihXZWJDb2xvciBjb2xv
cikKLXsKLSAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0QmFja2dyb3VuZENvbG9y
KGNvbG9yKTsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXRIYXNUcmFuc3BhcmVudEJh
Y2tncm91bmQoYm9vbCB0cmFuc3BhcmVudCkKLXsKLSAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhv
c3QoKS0+c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHRyYW5zcGFyZW50KTsKLX0KLQotdm9p
ZCBXZWJMYXllclRyZWVWaWV3OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKLXsKLSAgICBtX3By
aXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0VmlzaWJsZSh2aXNpYmxlKTsKLX0KLQotdm9pZCBX
ZWJMYXllclRyZWVWaWV3OjpzZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoZmxvYXQgcGFnZVNj
YWxlRmFjdG9yLCBmbG9hdCBtaW5pbXVtLCBmbG9hdCBtYXhpbXVtKQotewotICAgIG1fcHJpdmF0
ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMocGFnZVNjYWxl
RmFjdG9yLCBtaW5pbXVtLCBtYXhpbXVtKTsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3Ojpz
dGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBXZWJQb2ludCYgc2Nyb2xsLCBib29sIHVzZUFu
Y2hvciwgZmxvYXQgbmV3UGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCi17Ci0gICAgbV9w
cml2YXRlLT5sYXllclRyZWVIb3N0KCktPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKEludFNpemUo
c2Nyb2xsLngsIHNjcm9sbC55KSwgdXNlQW5jaG9yLCBuZXdQYWdlU2NhbGUsIGR1cmF0aW9uU2Vj
KTsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXROZWVkc0FuaW1hdGUoKQotewotICAg
IG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXROZWVkc0FuaW1hdGUoKTsKLX0KLQotdm9p
ZCBXZWJMYXllclRyZWVWaWV3OjpzZXROZWVkc1JlZHJhdygpCi17Ci0gICAgbV9wcml2YXRlLT5s
YXllclRyZWVIb3N0KCktPnNldE5lZWRzUmVkcmF3KCk7Ci19Ci0KLWJvb2wgV2ViTGF5ZXJUcmVl
Vmlldzo6Y29tbWl0UmVxdWVzdGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5s
YXllclRyZWVIb3N0KCktPmNvbW1pdFJlcXVlc3RlZCgpOwotfQotCi12b2lkIFdlYkxheWVyVHJl
ZVZpZXc6OmNvbXBvc2l0ZSgpCi17Ci0gICAgaWYgKENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSkK
LSAgICAgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldE5lZWRzQ29tbWl0KCk7Ci0g
ICAgZWxzZQotICAgICAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+Y29tcG9zaXRlKCk7
Ci19Ci0KLXZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6dXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJh
bWVCZWdpblRpbWUpCi17Ci0gICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnVwZGF0ZUFu
aW1hdGlvbnMoZnJhbWVCZWdpblRpbWUpOwotfQotCi1ib29sIFdlYkxheWVyVHJlZVZpZXc6OmNv
bXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgV2ViUmVjdCYgcmVjdCkKLXsK
LSAgICByZXR1cm4gbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmNvbXBvc2l0ZUFuZFJlYWRi
YWNrKHBpeGVscywgcmVjdCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6ZmluaXNoQWxs
UmVuZGVyaW5nKCkKLXsKLSAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+ZmluaXNoQWxs
UmVuZGVyaW5nKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6cmVuZGVyaW5nU3RhdHMo
V2ViUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAotewotICAgIENDUmVuZGVyaW5nU3RhdHMg
Y2NTdGF0czsKLSAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+cmVuZGVyaW5nU3RhdHMo
Y2NTdGF0cyk7Ci0KLSAgICBzdGF0cy5udW1BbmltYXRpb25GcmFtZXMgPSBjY1N0YXRzLm51bUFu
aW1hdGlvbkZyYW1lczsKLSAgICBzdGF0cy5udW1GcmFtZXNTZW50VG9TY3JlZW4gPSBjY1N0YXRz
Lm51bUZyYW1lc1NlbnRUb1NjcmVlbjsKLSAgICBzdGF0cy5kcm9wcGVkRnJhbWVDb3VudCA9IGNj
U3RhdHMuZHJvcHBlZEZyYW1lQ291bnQ7Ci0gICAgc3RhdHMudG90YWxQYWludFRpbWVJblNlY29u
ZHMgPSBjY1N0YXRzLnRvdGFsUGFpbnRUaW1lSW5TZWNvbmRzOwotICAgIHN0YXRzLnRvdGFsUmFz
dGVyaXplVGltZUluU2Vjb25kcyA9IGNjU3RhdHMudG90YWxSYXN0ZXJpemVUaW1lSW5TZWNvbmRz
OwotfQotCi12b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldEZvbnRBdGxhcyhTa0JpdG1hcCBiaXRt
YXAsIFdlYlJlY3QgYXNjaWlUb1dlYlJlY3RUYWJsZVsxMjhdLCBpbnQgZm9udEhlaWdodCkKLXsK
LSAgICBJbnRSZWN0IGFzY2lpVG9SZWN0VGFibGVbMTI4XTsKLSAgICBmb3IgKGludCBpID0gMDsg
aSA8IDEyODsgKytpKQotICAgICAgICBhc2NpaVRvUmVjdFRhYmxlW2ldID0gYXNjaWlUb1dlYlJl
Y3RUYWJsZVtpXTsKLSAgICBPd25QdHI8Q0NGb250QXRsYXM+IGZvbnRBdGxhcyA9IENDRm9udEF0
bGFzOjpjcmVhdGUoYml0bWFwLCBhc2NpaVRvUmVjdFRhYmxlLCBmb250SGVpZ2h0KTsKLSAgICBt
X3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0Rm9udEF0bGFzKGZvbnRBdGxhcy5yZWxlYXNl
KCkpOwotfQotCi12b2lkIFdlYkxheWVyVHJlZVZpZXc6Omxvc2VDb21wb3NpdG9yQ29udGV4dChp
bnQgbnVtVGltZXMpCi17Ci0gICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmxvc2VDb250
ZXh0KG51bVRpbWVzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKaW5kZXggMWZk
ODIzOTc2OGMwOWI2Njk1NGRjMDI1MGUyOGI2Zjk1ZjZmMDk1Ni4uODcwYjhmMWI2YzEwZWFiYmVl
YjI4MzMwMDNlYjNmM2NiMmJkMWI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcApAQCAtMjYsMTMwICsyNiwzMiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJlZVZpZXdJbXBsLmgiCiAKKyNp
bmNsdWRlICJDQ0ZvbnRBdGxhcy5oIgogI2luY2x1ZGUgIkNDTGF5ZXJUcmVlSG9zdC5oIgotI2lu
Y2x1ZGUgIkNDVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5j
bHVkZSAiV2ViTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4
dDNELmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YkxheWVyVHJlZVZpZXcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVu
dC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSZW5kZXJpbmdTdGF0cy5oPgogI2luY2x1ZGUgPHB1
YmxpYy9XZWJTaXplLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlRocmVhZC5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAotbmFtZXNwYWNlIHsKLQotLy8gQWRhcHRzIGEgcHVyZSBXZWJH
cmFwaGljc0NvbnRleHQzRCBpbnRvIGEgV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2UgdW50aWwK
LS8vIGRvd25zdHJlYW0gY29kZSBjYW4gYmUgdXBkYXRlZCB0byBwcm9kdWNlIG91dHB1dCBzdXJm
YWNlcyBkaXJlY3RseS4KLWNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dFRvT3V0cHV0U3VyZmFjZUFk
YXB0ZXIgOiBwdWJsaWMgV2ViS2l0OjpXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZSB7Ci1wdWJs
aWM6Ci0gICAgZXhwbGljaXQgV2ViR3JhcGhpY3NDb250ZXh0VG9PdXRwdXRTdXJmYWNlQWRhcHRl
cihQYXNzT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCi0gICAg
ICAgIDogbV9jb250ZXh0M0QoY29udGV4dCkKLSAgICAgICAgLCBtX2NsaWVudCgwKQotICAgIHsK
LSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgYmluZFRvQ2xpZW50KFdlYktpdDo6V2ViQ29tcG9z
aXRvck91dHB1dFN1cmZhY2VDbGllbnQqIGNsaWVudCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChjbGllbnQpOwotICAgICAgICBpZiAoIW1fY29udGV4dDNELT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9jbGllbnQgPSBj
bGllbnQ7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHZpcnR1YWwgY29uc3Qg
Q2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBPVkVSUklERQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOwotICAgIH0KLQotICAgIHZpcnR1YWwgV2ViS2l0OjpX
ZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNEKCkgY29uc3QgT1ZFUlJJREUKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2NvbnRleHQzRC5nZXQoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgc2VuZEZyYW1lVG9QYXJlbnRDb21wb3NpdG9yKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRv
ckZyYW1lJikgT1ZFUlJJREUKLSAgICB7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIE93blB0cjxX
ZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQzRDsKLSAgICBDYXBhYmlsaXRp
ZXMgbV9jYXBhYmlsaXRpZXM7Ci0gICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFj
ZUNsaWVudCogbV9jbGllbnQ7Ci19OworbmFtZXNwYWNlIFdlYktpdCB7CiAKK1dlYkxheWVyVHJl
ZVZpZXcqIFdlYkxheWVyVHJlZVZpZXc6OmNyZWF0ZShXZWJMYXllclRyZWVWaWV3Q2xpZW50KiBj
bGllbnQsIGNvbnN0IFdlYkxheWVyJiByb290LCBjb25zdCBXZWJMYXllclRyZWVWaWV3OjpTZXR0
aW5ncyYgc2V0dGluZ3MpCit7CisgICAgT3duUHRyPFdlYkxheWVyVHJlZVZpZXdJbXBsPiBsYXll
clRyZWVWaWV3SW1wbCA9IGFkb3B0UHRyKG5ldyBXZWJMYXllclRyZWVWaWV3SW1wbChjbGllbnQp
KTsKKyAgICBpZiAoIWxheWVyVHJlZVZpZXdJbXBsLT5pbml0aWFsaXplKHNldHRpbmdzKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgbGF5ZXJUcmVlVmlld0ltcGwtPnNldFJvb3RMYXllcihyb290
KTsKKyAgICByZXR1cm4gbGF5ZXJUcmVlVmlld0ltcGwubGVha1B0cigpOwogfQogCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotLy8gQ29udmVydHMgbWVzc2FnZXMgZnJvbSBDQ0xheWVyVHJlZUhvc3RD
bGllbnQgdG8gV2ViTGF5ZXJUcmVlVmlld0NsaWVudC4KLWNsYXNzIFdlYkxheWVyVHJlZVZpZXdD
bGllbnRBZGFwdGVyIDogcHVibGljIFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdENsaWVudCB7Ci1w
dWJsaWM6Ci0gICAgV2ViTGF5ZXJUcmVlVmlld0NsaWVudEFkYXB0ZXIoV2ViTGF5ZXJUcmVlVmll
d0NsaWVudCogY2xpZW50KQotICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAgICAgICAgLCBt
X3VzaW5nUmVhbE91dHB1dFN1cmZhY2UoZmFsc2UpCi0gICAgewotICAgIH0KLSAgICB2aXJ0dWFs
IH5XZWJMYXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcigpIHsgfQotCi0gICAgLy8gQ0NMYXllclRy
ZWVIb3N0Q2xpZW50IGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZy
YW1lKCkgT1ZFUlJJREUgeyBtX2NsaWVudC0+d2lsbEJlZ2luRnJhbWUoKTsgfQotICAgIHZpcnR1
YWwgdm9pZCBkaWRCZWdpbkZyYW1lKCkgT1ZFUlJJREUgeyBtX2NsaWVudC0+ZGlkQmVnaW5GcmFt
ZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25p
Y0ZyYW1lQmVnaW5UaW1lKSBPVkVSUklERSB7IG1fY2xpZW50LT51cGRhdGVBbmltYXRpb25zKG1v
bm90b25pY0ZyYW1lQmVnaW5UaW1lKTsgfQotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVS
UklERSB7IG1fY2xpZW50LT5sYXlvdXQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9s
bEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdl
U2NhbGUpIE9WRVJSSURFIHsgbV9jbGllbnQtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoc2Nyb2xsRGVs
dGEsIHBhZ2VTY2FsZSk7IH0KLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRvck91
dHB1dFN1cmZhY2U+IGNyZWF0ZU91dHB1dFN1cmZhY2UoKSBPVkVSUklERQotICAgIHsKLSAgICAg
ICAgV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2UqIG91dHB1dFN1cmZhY2UgPSBtX2NsaWVudC0+
Y3JlYXRlT3V0cHV0U3VyZmFjZSgpOwotICAgICAgICBpZiAob3V0cHV0U3VyZmFjZSkgewotICAg
ICAgICAgICAgbV91c2luZ1JlYWxPdXRwdXRTdXJmYWNlID0gdHJ1ZTsKLSAgICAgICAgICAgIHJl
dHVybiBhZG9wdFB0cihvdXRwdXRTdXJmYWNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFRl
bXBvcmFyaWx5LCBpZiB0aGUgb3V0cHV0IHN1cmZhY2UgY2FuJ3QgYmUgY3JlYXRlZCwgY3JlYXRl
IGEgV2ViR3JhcGhpY3NDb250ZXh0M0QKLSAgICAgICAgLy8gZGlyZWN0bHkuIFRoaXMgYWxsb3dz
IGJvb3RzdHJhcHBpbmcgdGhlIG91dHB1dCBzdXJmYWNlIHN5c3RlbSB3aGlsZSBkb3duc3RyZWFt
Ci0gICAgICAgIC8vIHVzZXJzIG9mIHRoZSBBUEkgc3RpbGwgdXNlIHRoZSBvbGQgYXBwcm9hY2gu
Ci0gICAgICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbV9jbGllbnQtPmNyZWF0
ZUNvbnRleHQzRCgpOwotICAgICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgICAgICBtX3VzaW5nUmVhbE91dHB1dFN1cmZhY2UgPSBmYWxzZTsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJHcmFwaGljc0NvbnRleHRUb091dHB1dFN1cmZh
Y2VBZGFwdGVyKGFkb3B0UHRyKGNvbnRleHQpKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lk
IGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShib29sIHN1Y2Nlc3MpIE9WRVJSSURFCi0gICAgewot
ICAgICAgICBpZiAobV91c2luZ1JlYWxPdXRwdXRTdXJmYWNlKSB7Ci0gICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkUmVjcmVhdGVPdXRwdXRTdXJmYWNlKHN1Y2Nlc3MpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fY2xpZW50LT5kaWRSZWJpbmRHcmFwaGljc0NvbnRl
eHQoc3VjY2Vzcyk7Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0KCkgT1ZFUlJJ
REUgeyBtX2NsaWVudC0+d2lsbENvbW1pdCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbW1p
dCgpIE9WRVJSSURFIHsgbV9jbGllbnQtPmRpZENvbW1pdCgpOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIE9WRVJSSURFIHsgbV9jbGllbnQtPmRpZENvbW1pdEFu
ZERyYXdGcmFtZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMo
KSBPVkVSUklERSB7IG1fY2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKSBPVkVSUklERSB7IG1fY2xpZW50LT5zY2hl
ZHVsZUNvbXBvc2l0ZSgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViTGF5ZXJUcmVlVmlld0NsaWVu
dCogbV9jbGllbnQ7Ci0gICAgYm9vbCBtX3VzaW5nUmVhbE91dHB1dFN1cmZhY2U7Ci19OwotCi1Q
YXNzT3duUHRyPFdlYkxheWVyVHJlZVZpZXdJbXBsPiBXZWJMYXllclRyZWVWaWV3SW1wbDo6Y3Jl
YXRlKFdlYkxheWVyVHJlZVZpZXdDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViTGF5ZXImIHJvb3Qs
IGNvbnN0IFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzJiBzZXR0aW5ncykKLXsKLSAgICBPd25Q
dHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+IGltcGwgPSBhZG9wdFB0cihuZXcgV2ViTGF5ZXJUcmVl
Vmlld0ltcGwoY2xpZW50LCBzZXR0aW5ncykpOwotICAgIGlmICghaW1wbC0+bGF5ZXJUcmVlSG9z
dCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpbXBsLT5sYXllclRyZWVIb3N0KCkt
PnNldFJvb3RMYXllcihzdGF0aWNfY2FzdDxjb25zdCBXZWJMYXllckltcGwqPigmcm9vdCktPmxh
eWVyKCkpOwotICAgIHJldHVybiBpbXBsLnJlbGVhc2UoKTsKLX0KLQotV2ViTGF5ZXJUcmVlVmll
d0ltcGw6OldlYkxheWVyVHJlZVZpZXdJbXBsKFdlYkxheWVyVHJlZVZpZXdDbGllbnQqIGNsaWVu
dCwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MmIHNldHRpbmdzKSAKLSAgICA6IG1f
Y2xpZW50QWRhcHRlcihhZG9wdFB0cihuZXcgV2ViTGF5ZXJUcmVlVmlld0NsaWVudEFkYXB0ZXIo
Y2xpZW50KSkpCi0gICAgLCBtX2xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUo
bV9jbGllbnRBZGFwdGVyLmdldCgpLCBzZXR0aW5ncykpCitXZWJMYXllclRyZWVWaWV3SW1wbDo6
V2ViTGF5ZXJUcmVlVmlld0ltcGwoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCogY2xpZW50KQorICAg
IDogbV9jbGllbnQoY2xpZW50KQogewogfQogCkBAIC0xNTcsNCArNTksMjE4IEBAIFdlYkxheWVy
VHJlZVZpZXdJbXBsOjp+V2ViTGF5ZXJUcmVlVmlld0ltcGwoKQogewogfQogCitib29sIFdlYkxh
eWVyVHJlZVZpZXdJbXBsOjppbml0aWFsaXplKGNvbnN0IFdlYkxheWVyVHJlZVZpZXc6OlNldHRp
bmdzJiB3ZWJTZXR0aW5ncykKK3sKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwor
ICAgIHNldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IHdlYlNldHRpbmdzLmFjY2VsZXJhdGVQ
YWludGluZzsKKyAgICBzZXR0aW5ncy5zaG93RlBTQ291bnRlciA9IHdlYlNldHRpbmdzLnNob3dG
UFNDb3VudGVyOworICAgIHNldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSA9IHdlYlNldHRp
bmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZTsKKyAgICBzZXR0aW5ncy5zaG93UGFpbnRSZWN0cyA9
IHdlYlNldHRpbmdzLnNob3dQYWludFJlY3RzOworICAgIHNldHRpbmdzLnJlbmRlclZTeW5jRW5h
YmxlZCA9IHdlYlNldHRpbmdzLnJlbmRlclZTeW5jRW5hYmxlZDsKKyAgICBzZXR0aW5ncy5yZWZy
ZXNoUmF0ZSA9IHdlYlNldHRpbmdzLnJlZnJlc2hSYXRlOworICAgIHNldHRpbmdzLmRlZmF1bHRU
aWxlU2l6ZSA9IHdlYlNldHRpbmdzLmRlZmF1bHRUaWxlU2l6ZTsKKyAgICBzZXR0aW5ncy5tYXhV
bnRpbGVkTGF5ZXJTaXplID0gd2ViU2V0dGluZ3MubWF4VW50aWxlZExheWVyU2l6ZTsKKyAgICBt
X2xheWVyVHJlZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBzZXR0aW5ncyk7
CisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0U3VyZmFjZVJl
YWR5KCkKK3sKKyAgICBtX2xheWVyVHJlZUhvc3QtPnNldFN1cmZhY2VSZWFkeSgpOworfQorCit2
b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpzZXRSb290TGF5ZXIoY29uc3QgV2ViTGF5ZXImIHJv
b3QpCit7CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIoc3RhdGljX2Nhc3Q8Y29u
c3QgV2ViTGF5ZXJJbXBsKj4oJnJvb3QpLT5sYXllcigpKTsKK30KKwordm9pZCBXZWJMYXllclRy
ZWVWaWV3SW1wbDo6Y2xlYXJSb290TGF5ZXIoKQoreworICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0
Um9vdExheWVyKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4oKSk7Cit9CisKK2ludCBXZWJMYXll
clRyZWVWaWV3SW1wbDo6Y29tcG9zaXRvcklkZW50aWZpZXIoKQoreworICAgIHJldHVybiBtX2xh
eWVyVHJlZUhvc3QtPmNvbXBvc2l0b3JJZGVudGlmaWVyKCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJU
cmVlVmlld0ltcGw6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBXZWJTaXplJiBsYXlvdXRWaWV3cG9y
dFNpemUsIGNvbnN0IFdlYlNpemUmIGRldmljZVZpZXdwb3J0U2l6ZSkKK3sKKyAgICBpZiAoIWRl
dmljZVZpZXdwb3J0U2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0
Vmlld3BvcnRTaXplKGxheW91dFZpZXdwb3J0U2l6ZSwgZGV2aWNlVmlld3BvcnRTaXplKTsKKyAg
ICBlbHNlCisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKGxheW91dFZp
ZXdwb3J0U2l6ZSwgbGF5b3V0Vmlld3BvcnRTaXplKTsKK30KKworV2ViU2l6ZSBXZWJMYXllclRy
ZWVWaWV3SW1wbDo6bGF5b3V0Vmlld3BvcnRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2Vi
U2l6ZShtX2xheWVyVHJlZUhvc3QtPmxheW91dFZpZXdwb3J0U2l6ZSgpKTsKK30KKworV2ViU2l6
ZSBXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGV2aWNlVmlld3BvcnRTaXplKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gV2ViU2l6ZShtX2xheWVyVHJlZUhvc3QtPmRldmljZVZpZXdwb3J0U2l6ZSgpKTsK
K30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0RGV2aWNlU2NhbGVGYWN0b3IoY29u
c3QgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCit7CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRE
ZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7Cit9CisKK2Zsb2F0IFdlYkxheWVy
VHJlZVZpZXdJbXBsOjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bGF5ZXJUcmVlSG9zdC0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKK30KKwordm9pZCBXZWJMYXllclRy
ZWVWaWV3SW1wbDo6c2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9yIGNvbG9yKQoreworICAgIG1f
bGF5ZXJUcmVlSG9zdC0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKK30KKwordm9pZCBXZWJM
YXllclRyZWVWaWV3SW1wbDo6c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGJvb2wgdHJhbnNw
YXJlbnQpCit7CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRIYXNUcmFuc3BhcmVudEJhY2tncm91
bmQodHJhbnNwYXJlbnQpOworfQorCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpzZXRWaXNp
YmxlKGJvb2wgdmlzaWJsZSkKK3sKKyAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpc2libGUodmlz
aWJsZSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNldFBhZ2VTY2FsZUZhY3Rv
ckFuZExpbWl0cyhmbG9hdCBwYWdlU2NhbGVGYWN0b3IsIGZsb2F0IG1pbmltdW0sIGZsb2F0IG1h
eGltdW0pCit7CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1p
dHMocGFnZVNjYWxlRmFjdG9yLCBtaW5pbXVtLCBtYXhpbXVtKTsKK30KKwordm9pZCBXZWJMYXll
clRyZWVWaWV3SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgV2ViUG9pbnQmIHNj
cm9sbCwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IG5ld1BhZ2VTY2FsZSwgZG91YmxlIGR1cmF0aW9u
U2VjKQoreworICAgIG1fbGF5ZXJUcmVlSG9zdC0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oSW50
U2l6ZShzY3JvbGwueCwgc2Nyb2xsLnkpLCB1c2VBbmNob3IsIG5ld1BhZ2VTY2FsZSwgZHVyYXRp
b25TZWMpOworfQorCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpzZXROZWVkc0FuaW1hdGUo
KQoreworICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNBbmltYXRlKCk7Cit9CisKK3ZvaWQg
V2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNldE5lZWRzUmVkcmF3KCkKK3sKKyAgICBtX2xheWVyVHJl
ZUhvc3QtPnNldE5lZWRzUmVkcmF3KCk7Cit9CisKK2Jvb2wgV2ViTGF5ZXJUcmVlVmlld0ltcGw6
OmNvbW1pdFJlcXVlc3RlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdC0+
Y29tbWl0UmVxdWVzdGVkKCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNvbXBv
c2l0ZSgpCit7CisgICAgaWYgKENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSkKKyAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOworICAgIGVsc2UKKyAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5jb21wb3NpdGUoKTsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6
dXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpCit7CisgICAgbV9sYXllclRy
ZWVIb3N0LT51cGRhdGVBbmltYXRpb25zKGZyYW1lQmVnaW5UaW1lKTsKK30KKworYm9vbCBXZWJM
YXllclRyZWVWaWV3SW1wbDo6Y29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25z
dCBXZWJSZWN0JiByZWN0KQoreworICAgIHJldHVybiBtX2xheWVyVHJlZUhvc3QtPmNvbXBvc2l0
ZUFuZFJlYWRiYWNrKHBpeGVscywgcmVjdCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0lt
cGw6OmZpbmlzaEFsbFJlbmRlcmluZygpCit7CisgICAgbV9sYXllclRyZWVIb3N0LT5maW5pc2hB
bGxSZW5kZXJpbmcoKTsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6cmVuZGVyaW5n
U3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAoreworICAgIENDUmVuZGVyaW5n
U3RhdHMgY2NTdGF0czsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnJlbmRlcmluZ1N0YXRzKGNjU3Rh
dHMpOworCisgICAgc3RhdHMubnVtQW5pbWF0aW9uRnJhbWVzID0gY2NTdGF0cy5udW1BbmltYXRp
b25GcmFtZXM7CisgICAgc3RhdHMubnVtRnJhbWVzU2VudFRvU2NyZWVuID0gY2NTdGF0cy5udW1G
cmFtZXNTZW50VG9TY3JlZW47CisgICAgc3RhdHMuZHJvcHBlZEZyYW1lQ291bnQgPSBjY1N0YXRz
LmRyb3BwZWRGcmFtZUNvdW50OworICAgIHN0YXRzLnRvdGFsUGFpbnRUaW1lSW5TZWNvbmRzID0g
Y2NTdGF0cy50b3RhbFBhaW50VGltZUluU2Vjb25kczsKKyAgICBzdGF0cy50b3RhbFJhc3Rlcml6
ZVRpbWVJblNlY29uZHMgPSBjY1N0YXRzLnRvdGFsUmFzdGVyaXplVGltZUluU2Vjb25kczsKK30K
Kwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0Rm9udEF0bGFzKFNrQml0bWFwIGJpdG1h
cCwgV2ViUmVjdCBhc2NpaVRvV2ViUmVjdFRhYmxlWzEyOF0sIGludCBmb250SGVpZ2h0KQorewor
ICAgIEludFJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdOworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgMTI4OyArK2kpCisgICAgICAgIGFzY2lpVG9SZWN0VGFibGVbaV0gPSBhc2NpaVRvV2ViUmVj
dFRhYmxlW2ldOworICAgIE93blB0cjxDQ0ZvbnRBdGxhcz4gZm9udEF0bGFzID0gQ0NGb250QXRs
YXM6OmNyZWF0ZShiaXRtYXAsIGFzY2lpVG9SZWN0VGFibGUsIGZvbnRIZWlnaHQpOworICAgIG1f
bGF5ZXJUcmVlSG9zdC0+c2V0Rm9udEF0bGFzKGZvbnRBdGxhcy5yZWxlYXNlKCkpOworfQorCit2
b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRp
bWVzKQoreworICAgIG1fbGF5ZXJUcmVlSG9zdC0+bG9zZUNvbnRleHQobnVtVGltZXMpOworfQor
Cit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjp3aWxsQmVnaW5GcmFtZSgpCit7CisgICAgbV9j
bGllbnQtPndpbGxCZWdpbkZyYW1lKCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6
OmRpZEJlZ2luRnJhbWUoKQoreworICAgIG1fY2xpZW50LT5kaWRCZWdpbkZyYW1lKCk7Cit9CisK
K3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmFuaW1hdGUoZG91YmxlIG1vbm90b25pY0ZyYW1l
QmVnaW5UaW1lKQoreworICAgIG1fY2xpZW50LT51cGRhdGVBbmltYXRpb25zKG1vbm90b25pY0Zy
YW1lQmVnaW5UaW1lKTsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6bGF5b3V0KCkK
K3sKKyAgICBtX2NsaWVudC0+bGF5b3V0KCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0lt
cGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVs
dGEsIGZsb2F0IHBhZ2VTY2FsZSkKK3sKKyAgICBtX2NsaWVudC0+YXBwbHlTY3JvbGxBbmRTY2Fs
ZShzY3JvbGxEZWx0YSwgcGFnZVNjYWxlKTsKK30KKworUGFzc093blB0cjxXZWJDb21wb3NpdG9y
T3V0cHV0U3VyZmFjZT4gV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZU91dHB1dFN1cmZhY2Uo
KQoreworICAgIHJldHVybiBhZG9wdFB0cihtX2NsaWVudC0+Y3JlYXRlT3V0cHV0U3VyZmFjZSgp
KTsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkUmVjcmVhdGVPdXRwdXRTdXJm
YWNlKGJvb2wgc3VjY2VzcykKK3sKKyAgICBtX2NsaWVudC0+ZGlkUmVjcmVhdGVPdXRwdXRTdXJm
YWNlKHN1Y2Nlc3MpOworfQorCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjp3aWxsQ29tbWl0
KCkKK3sKKyAgICBtX2NsaWVudC0+d2lsbENvbW1pdCgpOworfQorCit2b2lkIFdlYkxheWVyVHJl
ZVZpZXdJbXBsOjpkaWRDb21taXQoKQoreworICAgIG1fY2xpZW50LT5kaWRDb21taXQoKTsKK30K
Kwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkKK3sK
KyAgICBtX2NsaWVudC0+ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7Cit9CisKK3ZvaWQgV2ViTGF5
ZXJUcmVlVmlld0ltcGw6OmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKQoreworICAgIG1fY2xpZW50
LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0lt
cGw6OnNjaGVkdWxlQ29tcG9zaXRlKCkKK3sKKyAgICBtX2NsaWVudC0+c2NoZWR1bGVDb21wb3Np
dGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaAppbmRleCAzYmM0MzQxMGQ4YjIwYmIz
NTE0NDU4YWVhNDgzMGI3NzRkNjhkMzZhLi43MWFkZWQ1OGNlNTIwMGE5NTFjODZmNzk1YzE0OWM1
MjNjMDVhNDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXll
clRyZWVWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVy
VHJlZVZpZXdJbXBsLmgKQEAgLTI2LDMwICsyNiw2NSBAQAogI2lmbmRlZiBXZWJMYXllclRyZWVW
aWV3SW1wbF9oCiAjZGVmaW5lIFdlYkxheWVyVHJlZVZpZXdJbXBsX2gKIAorI2luY2x1ZGUgIkND
TGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg+CiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKLX0KLQogbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJMYXllcjsKIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdDbGllbnQ7
CiBjbGFzcyBXZWJMYXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcjsKIAotY2xhc3MgV2ViTGF5ZXJU
cmVlVmlld0ltcGwgeworY2xhc3MgV2ViTGF5ZXJUcmVlVmlld0ltcGwgOiBwdWJsaWMgV2ViTGF5
ZXJUcmVlVmlldywgcHVibGljIFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdENsaWVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+IGNyZWF0ZShX
ZWJMYXllclRyZWVWaWV3Q2xpZW50KiwgY29uc3QgV2ViTGF5ZXImIHJvb3QsIGNvbnN0IFdlYkxh
eWVyVHJlZVZpZXc6OlNldHRpbmdzJik7CisgICAgZXhwbGljaXQgV2ViTGF5ZXJUcmVlVmlld0lt
cGwoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCopOwogICAgIHZpcnR1YWwgfldlYkxheWVyVHJlZVZp
ZXdJbXBsKCk7CiAKLSAgICBXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3Qo
KSB7IHJldHVybiBtX2xheWVyVHJlZUhvc3QuZ2V0KCk7IH0KKyAgICBib29sIGluaXRpYWxpemUo
Y29uc3QgU2V0dGluZ3MmKTsKIAotcHJpdmF0ZToKLSAgICBXZWJMYXllclRyZWVWaWV3SW1wbChX
ZWJMYXllclRyZWVWaWV3Q2xpZW50KiwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3Mm
KTsKKyAgICAvLyBXZWJMYXllclRyZWVWaWV3IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwg
dm9pZCBzZXRTdXJmYWNlUmVhZHkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Um9v
dExheWVyKGNvbnN0IFdlYkxheWVyJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNsZWFy
Um9vdExheWVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgY29tcG9zaXRvcklkZW50aWZp
ZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IFdl
YlNpemUmIGxheW91dFZpZXdwb3J0U2l6ZSwgY29uc3QgV2ViU2l6ZSYgZGV2aWNlVmlld3BvcnRT
aXplID0gV2ViU2l6ZSgpKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYlNpemUgbGF5b3V0Vmll
d3BvcnRTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJTaXplIGRldmljZVZp
ZXdwb3J0U2l6ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREZXZpY2VT
Y2FsZUZhY3RvcihmbG9hdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvcigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5k
Q29sb3IoV2ViQ29sb3IpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRIYXNUcmFuc3Bh
cmVudEJhY2tncm91bmQoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFZpc2li
bGUoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvckFu
ZExpbWl0cyhmbG9hdCBwYWdlU2NhbGVGYWN0b3IsIGZsb2F0IG1pbmltdW0sIGZsb2F0IG1heGlt
dW0pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihj
b25zdCBXZWJQb2ludCYgZGVzdGluYXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBuZXdQYWdl
U2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzQW5pbWF0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJh
dygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjb21taXRSZXF1ZXN0ZWQoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcG9zaXRlKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBj
b25zdCBXZWJSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaEFsbFJlbmRl
cmluZygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW5kZXJpbmdTdGF0cyhXZWJSZW5k
ZXJpbmdTdGF0cyYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRGb250QXRs
YXMoU2tCaXRtYXAsIFdlYlJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdLCBpbnQgZm9udEhlaWdo
dCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQg
bnVtVGltZXMpIE9WRVJSSURFOwogCi0gICAgT3duUHRyPFdlYkxheWVyVHJlZVZpZXdDbGllbnRB
ZGFwdGVyPiBtX2NsaWVudEFkYXB0ZXI7CisgICAgLy8gV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
Q2xpZW50IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVnaW5GcmFtZSgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRCZWdpbkZyYW1lKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGFuaW1hdGUoZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xs
RGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzT3duUHRy
PFdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlPiBjcmVhdGVPdXRwdXRTdXJmYWNlKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShib29sIHN1Y2Nl
c3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0KCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
aWRDb21taXRBbmREcmF3RnJhbWUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29t
cGxldGVTd2FwQnVmZmVycygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNv
bXBvc2l0ZSgpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIFdlYkxheWVyVHJlZVZpZXdDbGll
bnQqIG1fY2xpZW50OwogICAgIE93blB0cjxXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q+IG1fbGF5
ZXJUcmVlSG9zdDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAppbmRleCBjNmY5ZjdlMDk2MTY1MDlhYzM1NzBlNzE4YWUxN2E2MTBiMGZhZTUwLi42MjNl
MzEwN2FkMTc5ZDZmNDY5MDY0MjdkY2I1OTU2ZGFhNzhkYzM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC03NjgsMTMgKzc2OCwxMyBAQCB2b2lkIFdl
YlZpZXdJbXBsOjp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgV2ViQWN0
aXZlV2hlZWxGbGluZ1BhcgogCiB2b2lkIFdlYlZpZXdJbXBsOjpyZW5kZXJpbmdTdGF0cyhXZWJS
ZW5kZXJpbmdTdGF0cyYgc3RhdHMpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2xheWVyVHJlZVZpZXcu
aXNOdWxsKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5yZW5kZXJpbmdTdGF0cyhzdGF0cyk7
CisgICAgaWYgKG1fbGF5ZXJUcmVlVmlldykKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LT5yZW5k
ZXJpbmdTdGF0cyhzdGF0cyk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnN0YXJ0UGFnZVNjYWxl
QW5pbWF0aW9uKGNvbnN0IEludFBvaW50JiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3Is
IGZsb2F0IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25JblNlY29uZHMpCiB7Ci0gICAgaWYgKG1f
bGF5ZXJUcmVlVmlldy5pc051bGwoKSkKKyAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldykKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgSW50UG9pbnQgY2xhbXBlZFBvaW50ID0gdGFyZ2V0UG9zaXRpb247
CkBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmlt
YXRpb24oY29uc3QgSW50UG9pbnQmIHRhcmdldFBvc2l0aW9uLCBib29sIHUKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fbGF5ZXJUcmVlVmlldy5zdGFydFBhZ2VTY2FsZUFuaW1hdGlv
bih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBuZXdTY2FsZSwgZHVyYXRpb25JblNlY29uZHMp
OworICAgIG1fbGF5ZXJUcmVlVmlldy0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24odGFyZ2V0UG9z
aXRpb24sIHVzZUFuY2hvciwgbmV3U2NhbGUsIGR1cmF0aW9uSW5TZWNvbmRzKTsKIH0KICNlbmRp
ZgogCkBAIC0xNjUwLDggKzE2NTAsOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVCYXR0ZXJ5
U3RhdHVzKGNvbnN0IFdlYkJhdHRlcnlTdGF0dXMmIHN0YXR1cykKIHZvaWQgV2ViVmlld0ltcGw6
OnNldENvbXBvc2l0b3JTdXJmYWNlUmVhZHkoKQogewogICAgIG1fY29tcG9zaXRvclN1cmZhY2VS
ZWFkeSA9IHRydWU7Ci0gICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpCi0gICAgICAg
IG1fbGF5ZXJUcmVlVmlldy5zZXRTdXJmYWNlUmVhZHkoKTsKKyAgICBpZiAobV9sYXllclRyZWVW
aWV3KQorICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNldFN1cmZhY2VSZWFkeSgpOwogfQogCiB2
b2lkIFdlYlZpZXdJbXBsOjphbmltYXRlKGRvdWJsZSkKQEAgLTE2NjMsNyArMTY2Myw3IEBAIHZv
aWQgV2ViVmlld0ltcGw6OmFuaW1hdGUoZG91YmxlKQogICAgIC8vIEluIGNvbXBvc2l0ZWQgbW9k
ZSwgd2UgYWx3YXlzIGdvIHRocm91Z2ggdGhlIGNvbXBvc2l0b3Igc28gaXQgY2FuIGFwcGx5CiAg
ICAgLy8gYXBwcm9wcmlhdGUgZmxvdy1jb250cm9sIG1lY2hhbmlzbXMuCiAgICAgaWYgKGlzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKQotICAgICAgICBtX2xheWVyVHJlZVZpZXcudXBk
YXRlQW5pbWF0aW9ucyhtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7CisgICAgICAgIG1fbGF5ZXJU
cmVlVmlldy0+dXBkYXRlQW5pbWF0aW9ucyhtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7CiAgICAg
ZWxzZQogI2VuZGlmCiAgICAgICAgIHVwZGF0ZUFuaW1hdGlvbnMobW9ub3RvbmljRnJhbWVCZWdp
blRpbWUpOwpAQCAtMTcxNyw3ICsxNzE3LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6bGF5b3V0KCkK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB2b2lkIFdlYlZpZXdJbXBsOjpkb1Bp
eGVsUmVhZGJhY2tUb0NhbnZhcyhXZWJDYW52YXMqIGNhbnZhcywgY29uc3QgSW50UmVjdCYgcmVj
dCkKIHsKLSAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSk7CisgICAgQVNTRVJU
KG1fbGF5ZXJUcmVlVmlldyk7CiAKICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIGNvbnRleHQoY2Fu
dmFzKTsKIApAQCAtMTczMSw3ICsxNzMxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZG9QaXhlbFJl
YWRiYWNrVG9DYW52YXMoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IEludFJlY3QmIHJlY3QKICAg
ICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocmVj
dC5zaXplKCkpKTsKICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVsQXJyYXkoVWlu
dDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVjdC5o
ZWlnaHQoKSAqIDQpKTsKICAgICBpZiAoaW1hZ2VCdWZmZXIgJiYgcGl4ZWxBcnJheSkgewotICAg
ICAgICBtX2xheWVyVHJlZVZpZXcuY29tcG9zaXRlQW5kUmVhZGJhY2socGl4ZWxBcnJheS0+ZGF0
YSgpLCBpbnZlcnRSZWN0KTsKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LT5jb21wb3NpdGVBbmRS
ZWFkYmFjayhwaXhlbEFycmF5LT5kYXRhKCksIGludmVydFJlY3QpOwogICAgICAgICBpbWFnZUJ1
ZmZlci0+cHV0Qnl0ZUFycmF5KFByZW11bHRpcGxpZWQsIHBpeGVsQXJyYXkuZ2V0KCksIHJlY3Qu
c2l6ZSgpLCBJbnRSZWN0KEludFBvaW50KCksIHJlY3Quc2l6ZSgpKSwgSW50UG9pbnQoKSk7CiAg
ICAgICAgIGdjLnNhdmUoKTsKICAgICAgICAgZ2MudHJhbnNsYXRlKEludFNpemUoMCwgYml0bWFw
SGVpZ2h0KSk7CkBAIC0xNzU5LDcgKzE3NTksNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwYWludChX
ZWJDYW52YXMqIGNhbnZhcywgY29uc3QgV2ViUmVjdCYgcmVjdCwgUGFpbnRPcHRpb25zIG9wdAog
ICAgICAgICBpZiAoY2FudmFzKSB7CiAgICAgICAgICAgICAvLyBDbGlwIHJlY3QgdG8gdGhlIGNv
bmZpbmVzIG9mIHRoZSByb290TGF5ZXJUZXh0dXJlLgogICAgICAgICAgICAgSW50UmVjdCByZXNp
emVSZWN0KHJlY3QpOwotICAgICAgICAgICAgcmVzaXplUmVjdC5pbnRlcnNlY3QoSW50UmVjdChJ
bnRQb2ludCgwLCAwKSwgbV9sYXllclRyZWVWaWV3LmRldmljZVZpZXdwb3J0U2l6ZSgpKSk7Cisg
ICAgICAgICAgICByZXNpemVSZWN0LmludGVyc2VjdChJbnRSZWN0KEludFBvaW50KDAsIDApLCBt
X2xheWVyVHJlZVZpZXctPmRldmljZVZpZXdwb3J0U2l6ZSgpKSk7CiAgICAgICAgICAgICBkb1Bp
eGVsUmVhZGJhY2tUb0NhbnZhcyhjYW52YXMsIHJlc2l6ZVJlY3QpOwogICAgICAgICB9CiAjZW5k
aWYKQEAgLTE3OTksNyArMTc5OSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmNvbXBvc2l0ZShib29s
KQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAoV2ViQ29tcG9z
aXRvcjo6dGhyZWFkaW5nRW5hYmxlZCgpKQotICAgICAgICBtX2xheWVyVHJlZVZpZXcuc2V0TmVl
ZHNSZWRyYXcoKTsKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXROZWVkc1JlZHJhdygpOwog
ICAgIGVsc2UgewogICAgICAgICBBU1NFUlQoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZl
KCkpOwogICAgICAgICBpZiAoIXBhZ2UoKSkKQEAgLTE4MDgsNyArMTgwOCw3IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OmNvbXBvc2l0ZShib29sKQogICAgICAgICBpZiAobV9wYWdlT3ZlcmxheXMpCiAg
ICAgICAgICAgICBtX3BhZ2VPdmVybGF5cy0+dXBkYXRlKCk7CiAKLSAgICAgICAgbV9sYXllclRy
ZWVWaWV3LmNvbXBvc2l0ZSgpOworICAgICAgICBtX2xheWVyVHJlZVZpZXctPmNvbXBvc2l0ZSgp
OwogICAgIH0KICNlbmRpZgogfQpAQCAtMTgxNiwxNiArMTgxNiwxNiBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpjb21wb3NpdGUoYm9vbCkKIHZvaWQgV2ViVmlld0ltcGw6OnNldE5lZWRzUmVkcmF3KCkK
IHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKCFtX2xheWVyVHJl
ZVZpZXcuaXNOdWxsKCkgJiYgaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpCi0gICAg
ICAgIG1fbGF5ZXJUcmVlVmlldy5zZXROZWVkc1JlZHJhdygpOworICAgIGlmIChtX2xheWVyVHJl
ZVZpZXcgJiYgaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpCisgICAgICAgIG1fbGF5
ZXJUcmVlVmlldy0+c2V0TmVlZHNSZWRyYXcoKTsKICNlbmRpZgogfQogCiBib29sIFdlYlZpZXdJ
bXBsOjppc0lucHV0VGhyb3R0bGVkKCkgY29uc3QKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCi0gICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkgJiYgaXNBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpCi0gICAgICAgIHJldHVybiBtX2xheWVyVHJlZVZpZXcu
Y29tbWl0UmVxdWVzdGVkKCk7CisgICAgaWYgKG1fbGF5ZXJUcmVlVmlldyAmJiBpc0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuIG1fbGF5ZXJUcmVlVmlldy0+
Y29tbWl0UmVxdWVzdGVkKCk7CiAjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xODMz
LDggKzE4MzMsOCBAQCBib29sIFdlYlZpZXdJbXBsOjppc0lucHV0VGhyb3R0bGVkKCkgY29uc3QK
IHZvaWQgV2ViVmlld0ltcGw6Omxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMpCiB7
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmICghbV9sYXllclRyZWVW
aWV3LmlzTnVsbCgpKQotICAgICAgICBtX2xheWVyVHJlZVZpZXcubG9zZUNvbXBvc2l0b3JDb250
ZXh0KG51bVRpbWVzKTsKKyAgICBpZiAobV9sYXllclRyZWVWaWV3KQorICAgICAgICBtX2xheWVy
VHJlZVZpZXctPmxvc2VDb21wb3NpdG9yQ29udGV4dChudW1UaW1lcyk7CiAjZW5kaWYKIH0KIApA
QCAtMjc2MSw5ICsyNzYxLDkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0RGV2aWNlU2NhbGVGYWN0
b3IoZmxvYXQgc2NhbGVGYWN0b3IpCiAKICAgICBwYWdlKCktPnNldERldmljZVNjYWxlRmFjdG9y
KHNjYWxlRmFjdG9yKTsKIAotICAgIGlmICghbV9sYXllclRyZWVWaWV3LmlzTnVsbCgpICYmIG1f
d2ViU2V0dGluZ3MtPmFwcGx5RGVmYXVsdERldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkp
IHsKKyAgICBpZiAobV9sYXllclRyZWVWaWV3ICYmIG1fd2ViU2V0dGluZ3MtPmFwcGx5RGVmYXVs
dERldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpIHsKICAgICAgICAgbV9kZXZpY2VTY2Fs
ZUluQ29tcG9zaXRvciA9IHBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICAgICAgbV9s
YXllclRyZWVWaWV3LnNldERldmljZVNjYWxlRmFjdG9yKG1fZGV2aWNlU2NhbGVJbkNvbXBvc2l0
b3IpOworICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNldERldmljZVNjYWxlRmFjdG9yKG1fZGV2
aWNlU2NhbGVJbkNvbXBvc2l0b3IpOwogICAgIH0KICAgICBpZiAobV9kZXZpY2VTY2FsZUluQ29t
cG9zaXRvciAhPSAxKSB7CiAgICAgICAgIC8vIERvbid0IGFsbG93IHBhZ2Ugc2NhbGluZyB3aGVu
IGNvbXBvc2l0b3Igc2NhbGluZyBpcyBiZWluZyB1c2VkLApAQCAtMjg1OCw4ICsyODU4LDggQEAg
Ym9vbCBXZWJWaWV3SW1wbDo6Y29tcHV0ZVBhZ2VTY2FsZUZhY3RvckxpbWl0cygpCiAKICAgICBm
bG9hdCBjbGFtcGVkU2NhbGUgPSBjbGFtcFBhZ2VTY2FsZUZhY3RvclRvTGltaXRzKHBhZ2VTY2Fs
ZUZhY3RvcigpKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKCFt
X2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRQYWdl
U2NhbGVGYWN0b3JBbmRMaW1pdHMoY2xhbXBlZFNjYWxlLCBtX21pbmltdW1QYWdlU2NhbGVGYWN0
b3IsIG1fbWF4aW11bVBhZ2VTY2FsZUZhY3Rvcik7CisgICAgaWYgKG1fbGF5ZXJUcmVlVmlldykK
KyAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoY2xh
bXBlZFNjYWxlLCBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IsIG1fbWF4aW11bVBhZ2VTY2FsZUZh
Y3Rvcik7CiAjZW5kaWYKICAgICBpZiAoY2xhbXBlZFNjYWxlICE9IHBhZ2VTY2FsZUZhY3Rvcigp
KSB7CiAgICAgICAgIHNldFBhZ2VTY2FsZUZhY3RvclByZXNlcnZpbmdTY3JvbGxPZmZzZXQoY2xh
bXBlZFNjYWxlKTsKQEAgLTMzMzQsOCArMzMzNCw4IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElz
VHJhbnNwYXJlbnQoYm9vbCBpc1RyYW5zcGFyZW50KQogICAgIGlmIChtX25vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdCkKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldE9wYXF1
ZSghaXNUcmFuc3BhcmVudCk7CiAKLSAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSkK
LSAgICAgICAgbV9sYXllclRyZWVWaWV3LnNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChpc1Ry
YW5zcGFyZW50KTsKKyAgICBpZiAobV9sYXllclRyZWVWaWV3KQorICAgICAgICBtX2xheWVyVHJl
ZVZpZXctPnNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChpc1RyYW5zcGFyZW50KTsKIH0KIAog
Ym9vbCBXZWJWaWV3SW1wbDo6aXNUcmFuc3BhcmVudCgpIGNvbnN0CkBAIC0zNjU1LDggKzM2NTUs
MTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXll
ciogbGF5ZXIpCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRTY3JvbGxM
YXllcihzY3JvbGxMYXllcik7CiAgICAgfQogCi0gICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNO
dWxsKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRSb290TGF5ZXIobV9yb290TGF5ZXIp
OworICAgIGlmIChtX2xheWVyVHJlZVZpZXcpIHsKKyAgICAgICAgaWYgKG1fcm9vdExheWVyKQor
ICAgICAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRSb290TGF5ZXIoKm1fcm9vdExheWVyKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9sYXllclRyZWVWaWV3LT5jbGVhclJvb3RMYXll
cigpOworICAgIH0KIAogICAgIEludFJlY3QgZGFtYWdlZFJlY3QoMCwgMCwgbV9zaXplLndpZHRo
LCBtX3NpemUuaGVpZ2h0KTsKICAgICBpZiAoIW1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0
aXZlKQpAQCAtMzY2NSw3ICszNjY5LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBo
aWNzTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnNjaGVk
dWxlQ29tcG9zaXRpbmdMYXllclN5bmMoKQogewotICAgIG1fbGF5ZXJUcmVlVmlldy5zZXROZWVk
c1JlZHJhdygpOworICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0TmVlZHNSZWRyYXcoKTsKIH0KIAog
dm9pZCBXZWJWaWV3SW1wbDo6c2Nyb2xsUm9vdExheWVyUmVjdChjb25zdCBJbnRTaXplJiwgY29u
c3QgSW50UmVjdCYpCkBAIC0zNjc1LDcgKzM2NzksNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzY3Jv
bGxSb290TGF5ZXJSZWN0KGNvbnN0IEludFNpemUmLCBjb25zdCBJbnRSZWN0JikKIAogdm9pZCBX
ZWJWaWV3SW1wbDo6aW52YWxpZGF0ZVJvb3RMYXllclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKLSAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSk7CisgICAgQVNTRVJUKG1f
bGF5ZXJUcmVlVmlldyk7CiAKICAgICBpZiAoIXBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MzY5Niw3ICszNzAwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0QmFja2dyb3VuZENvbG9yKGNv
bnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKICAgICBXZWJDb3JlOjpDb2xvciBkb2N1bWVudEJh
Y2tncm91bmRDb2xvciA9IGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogV2ViQ29yZTo6Q29sb3I6
OndoaXRlOwogICAgIFdlYkNvbG9yIHdlYkRvY3VtZW50QmFja2dyb3VuZENvbG9yID0gZG9jdW1l
bnRCYWNrZ3JvdW5kQ29sb3IucmdiKCk7CiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3Qt
PnNldEJhY2tncm91bmRDb2xvcihkb2N1bWVudEJhY2tncm91bmRDb2xvcik7Ci0gICAgbV9sYXll
clRyZWVWaWV3LnNldEJhY2tncm91bmRDb2xvcih3ZWJEb2N1bWVudEJhY2tncm91bmRDb2xvcik7
CisgICAgbV9sYXllclRyZWVWaWV3LT5zZXRCYWNrZ3JvdW5kQ29sb3Iod2ViRG9jdW1lbnRCYWNr
Z3JvdW5kQ29sb3IpOwogfQogCiBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBXZWJWaWV3SW1wbDo6
cm9vdEdyYXBoaWNzTGF5ZXIoKQpAQCAtMzcwOSw4ICszNzEzLDggQEAgdm9pZCBXZWJWaWV3SW1w
bDo6c2NoZWR1bGVBbmltYXRpb24oKQogewogICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdBY3RpdmUoKSkgewogICAgICAgICBpZiAoV2ViQ29tcG9zaXRvcjo6dGhyZWFkaW5nRW5hYmxl
ZCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSk7Ci0g
ICAgICAgICAgICBtX2xheWVyVHJlZVZpZXcuc2V0TmVlZHNBbmltYXRlKCk7CisgICAgICAgICAg
ICBBU1NFUlQobV9sYXllclRyZWVWaWV3KTsKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+
c2V0TmVlZHNBbmltYXRlKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9jbGllbnQt
PnNjaGVkdWxlQW5pbWF0aW9uKCk7CiAgICAgfSBlbHNlCkBAIC0zNzQ0LDE0ICszNzQ4LDE0IEBA
IHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29s
IGFjdGl2ZSkKICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUgPSBmYWxz
ZTsKICAgICAgICAgLy8gV2UgbmVlZCB0byBmaW5pc2ggYWxsIEdMIHJlbmRlcmluZyBiZWZvcmUg
c2VuZGluZyBkaWREZWFjdGl2YXRlQ29tcG9zaXRvcigpIHRvIHByZXZlbnQKICAgICAgICAgLy8g
ZmxpY2tlcmluZyB3aGVuIGNvbXBvc2l0aW5nIHR1cm5zIG9mZi4KLSAgICAgICAgaWYgKCFtX2xh
eWVyVHJlZVZpZXcuaXNOdWxsKCkpCi0gICAgICAgICAgICBtX2xheWVyVHJlZVZpZXcuZmluaXNo
QWxsUmVuZGVyaW5nKCk7CisgICAgICAgIGlmIChtX2xheWVyVHJlZVZpZXcpCisgICAgICAgICAg
ICBtX2xheWVyVHJlZVZpZXctPmZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgICAgICBtX2NsaWVu
dC0+ZGlkRGVhY3RpdmF0ZUNvbXBvc2l0b3IoKTsKLSAgICB9IGVsc2UgaWYgKCFtX2xheWVyVHJl
ZVZpZXcuaXNOdWxsKCkpIHsKKyAgICB9IGVsc2UgaWYgKG1fbGF5ZXJUcmVlVmlldykgewogICAg
ICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IHRydWU7CiAgICAgICAgIHVw
ZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCk7CiAKLSAgICAgICAgbV9jbGllbnQtPmRpZEFjdGl2YXRl
Q29tcG9zaXRvcihtX2xheWVyVHJlZVZpZXcuY29tcG9zaXRvcklkZW50aWZpZXIoKSk7CisgICAg
ICAgIG1fY2xpZW50LT5kaWRBY3RpdmF0ZUNvbXBvc2l0b3IobV9sYXllclRyZWVWaWV3LT5jb21w
b3NpdG9ySWRlbnRpZmllcigpKTsKICAgICB9IGVsc2UgewogICAgICAgICBUUkFDRV9FVkVOVDAo
IndlYmtpdCIsICJXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZl
KHRydWUpIik7CiAKQEAgLTM3NjksOCArMzc3Myw4IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgbV9ub25D
b21wb3NpdGVkQ29udGVudEhvc3QtPnNldFNob3dEZWJ1Z0JvcmRlcnMocGFnZSgpLT5zZXR0aW5n
cygpLT5zaG93RGVidWdCb3JkZXJzKCkpOwogICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdC0+c2V0T3BhcXVlKCFpc1RyYW5zcGFyZW50KCkpOwogCi0gICAgICAgIG1fbGF5ZXJUcmVl
Vmlldy5pbml0aWFsaXplKHRoaXMsICptX3Jvb3RMYXllciwgbGF5ZXJUcmVlVmlld1NldHRpbmdz
KTsKLSAgICAgICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9s
YXllclRyZWVWaWV3ID0gYWRvcHRQdHIoV2ViTGF5ZXJUcmVlVmlldzo6Y3JlYXRlKHRoaXMsICpt
X3Jvb3RMYXllciwgbGF5ZXJUcmVlVmlld1NldHRpbmdzKSk7CisgICAgICAgIGlmIChtX2xheWVy
VHJlZVZpZXcpIHsKICAgICAgICAgICAgIGlmIChtX3dlYlNldHRpbmdzLT5hcHBseURlZmF1bHRE
ZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpICYmIHBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSAhPSAxKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhZ2UoKS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSk7CiAKQEAgLTM3NzksMTMgKzM3ODMsMTMgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0
SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBib29sIHZpc2libGUgPSBwYWdlKCktPnZpc2liaWxpdHlTdGF0ZSgp
ID09IFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOwotICAgICAgICAgICAgbV9sYXllclRyZWVW
aWV3LnNldFZpc2libGUodmlzaWJsZSk7Ci0gICAgICAgICAgICBtX2xheWVyVHJlZVZpZXcuc2V0
UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKHBhZ2VTY2FsZUZhY3RvcigpLCBtX21pbmltdW1QYWdl
U2NhbGVGYWN0b3IsIG1fbWF4aW11bVBhZ2VTY2FsZUZhY3Rvcik7CisgICAgICAgICAgICBtX2xh
eWVyVHJlZVZpZXctPnNldFZpc2libGUodmlzaWJsZSk7CisgICAgICAgICAgICBtX2xheWVyVHJl
ZVZpZXctPnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhwYWdlU2NhbGVGYWN0b3IoKSwgbV9t
aW5pbXVtUGFnZVNjYWxlRmFjdG9yLCBtX21heGltdW1QYWdlU2NhbGVGYWN0b3IpOwogICAgICAg
ICAgICAgaWYgKG1fY29tcG9zaXRvclN1cmZhY2VSZWFkeSkKLSAgICAgICAgICAgICAgICBtX2xh
eWVyVHJlZVZpZXcuc2V0U3VyZmFjZVJlYWR5KCk7Ci0gICAgICAgICAgICBtX2xheWVyVHJlZVZp
ZXcuc2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGlzVHJhbnNwYXJlbnQoKSk7CisgICAgICAg
ICAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRTdXJmYWNlUmVhZHkoKTsKKyAgICAgICAgICAg
IG1fbGF5ZXJUcmVlVmlldy0+c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGlzVHJhbnNwYXJl
bnQoKSk7CiAgICAgICAgICAgICB1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgpOwotICAgICAgICAg
ICAgbV9jbGllbnQtPmRpZEFjdGl2YXRlQ29tcG9zaXRvcihtX2xheWVyVHJlZVZpZXcuY29tcG9z
aXRvcklkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQWN0aXZhdGVDb21w
b3NpdG9yKG1fbGF5ZXJUcmVlVmlldy0+Y29tcG9zaXRvcklkZW50aWZpZXIoKSk7CiAgICAgICAg
ICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IHRydWU7CiAgICAgICAgICAg
ICBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZCA9IGZhbHNlOwogICAgICAgICAgICAgaWYgKG1f
cGFnZU92ZXJsYXlzKQpAQCAtMzc5Nyw3ICszODAxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0
SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICAgICAg
ICAgIFdlYlJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdOwogICAgICAgICAgICAgICAgIGludCBm
b250SGVpZ2h0OwogICAgICAgICAgICAgICAgIFNrQml0bWFwIGJpdG1hcCA9IFdlYkNvcmU6OkNv
bXBvc2l0b3JIVURGb250QXRsYXM6OmdlbmVyYXRlRm9udEF0bGFzKGFzY2lpVG9SZWN0VGFibGUs
IGZvbnRIZWlnaHQpOwotICAgICAgICAgICAgICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRGb250QXRs
YXMoYml0bWFwLCBhc2NpaVRvUmVjdFRhYmxlLCBmb250SGVpZ2h0KTsKKyAgICAgICAgICAgICAg
ICBtX2xheWVyVHJlZVZpZXctPnNldEZvbnRBdGxhcyhiaXRtYXAsIGFzY2lpVG9SZWN0VGFibGUs
IGZvbnRIZWlnaHQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QuY2xlYXIoKTsKQEAgLTM5NDcsNyArMzk1MSw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNjaGVkdWxlQ29tcG9zaXRlKCkKIAogdm9pZCBXZWJWaWV3
SW1wbDo6dXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKQogewotICAgIGlmICghcGFnZSgpIHx8ICFt
X25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCB8fCBtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpCisg
ICAgaWYgKCFwYWdlKCkgfHwgIW1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0IHx8ICFtX2xheWVy
VHJlZVZpZXcpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lVmlldyogdmlldyA9IHBhZ2Uo
KS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKQEAgLTM5NjIsOCArMzk2Niw4IEBAIHZvaWQgV2ViVmll
d0ltcGw6OnVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCkKICAgICBJbnRTaXplIGxheW91dFZpZXdw
b3J0U2l6ZSA9IHNpemUoKTsKICAgICBJbnRTaXplIGRldmljZVZpZXdwb3J0U2l6ZSA9IHNpemUo
KTsKICAgICBkZXZpY2VWaWV3cG9ydFNpemUuc2NhbGUoZGV2aWNlU2NhbGUpOwotICAgIG1fbGF5
ZXJUcmVlVmlldy5zZXRWaWV3cG9ydFNpemUobGF5b3V0Vmlld3BvcnRTaXplLCBkZXZpY2VWaWV3
cG9ydFNpemUpOwotICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1p
dHMocGFnZVNjYWxlRmFjdG9yKCksIG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvciwgbV9tYXhpbXVt
UGFnZVNjYWxlRmFjdG9yKTsKKyAgICBtX2xheWVyVHJlZVZpZXctPnNldFZpZXdwb3J0U2l6ZShs
YXlvdXRWaWV3cG9ydFNpemUsIGRldmljZVZpZXdwb3J0U2l6ZSk7CisgICAgbV9sYXllclRyZWVW
aWV3LT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9yKCksIG1fbWlu
aW11bVBhZ2VTY2FsZUZhY3RvciwgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKTsKIH0KIAogV2Vi
R3JhcGhpY3NDb250ZXh0M0QqIFdlYlZpZXdJbXBsOjpzaGFyZWRHcmFwaGljc0NvbnRleHQzRCgp
CkBAIC00MDIyLDkgKzQwMjYsOSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRWaXNpYmlsaXR5U3Rh
dGUoV2ViUGFnZVZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUsCiAjZW5kaWYKIAogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldy5p
c051bGwoKSkgeworICAgIGlmIChtX2xheWVyVHJlZVZpZXcpIHsKICAgICAgICAgYm9vbCB2aXNp
YmxlID0gdmlzaWJpbGl0eVN0YXRlID09IFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOwot
ICAgICAgICBtX2xheWVyVHJlZVZpZXcuc2V0VmlzaWJsZSh2aXNpYmxlKTsKKyAgICAgICAgbV9s
YXllclRyZWVWaWV3LT5zZXRWaXNpYmxlKHZpc2libGUpOwogICAgIH0KICNlbmRpZgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMjA2Y2Y0NTcyOGFlYTli
Y2ZhMGEyOGM0YzM1ZjcxMWEzYzYyMGRkMi4uMmY2OTAzMzNlYmU4YTY4YTI1ODA4ZDU0NDIzYjBj
YTNmNjAxOTYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBA
IC01Miw3ICs1Miw2IEBACiAjaW5jbHVkZSAiV2ViVmlld0JlbmNobWFya1N1cHBvcnRJbXBsLmgi
CiAjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UXVhZC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJM
YXllci5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUG9p
bnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5oPgpAQCAtOTUsNyArOTQsNiBAQCBjbGFz
cyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OwogY2xhc3MgRHJhZ1Njcm9sbFRpbWVyOwog
Y2xhc3MgR2VvbG9jYXRpb25DbGllbnRQcm94eTsKIGNsYXNzIExpbmtIaWdobGlnaHQ7Ci1jbGFz
cyBXZWJIZWxwZXJQbHVnaW5JbXBsOwogY2xhc3MgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Owog
Y2xhc3MgUHJlcmVuZGVyZXJDbGllbnRJbXBsOwogY2xhc3MgU3BlZWNoSW5wdXRDbGllbnRJbXBs
OwpAQCAtMTA3LDE1ICsxMDUsMTcgQEAgY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKIGNs
YXNzIFdlYkRldlRvb2xzQWdlbnRQcml2YXRlOwogY2xhc3MgV2ViRnJhbWVJbXBsOwogY2xhc3Mg
V2ViR2VzdHVyZUV2ZW50OwotY2xhc3MgV2ViUGFnZVBvcHVwSW1wbDsKLWNsYXNzIFdlYlByZXJl
bmRlcmVyQ2xpZW50OwotY2xhc3MgV2ViVmlld0JlbmNobWFya1N1cHBvcnQ7CitjbGFzcyBXZWJI
ZWxwZXJQbHVnaW5JbXBsOwogY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50
OworY2xhc3MgV2ViTGF5ZXJUcmVlVmlldzsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBX
ZWJNb3VzZVdoZWVsRXZlbnQ7CitjbGFzcyBXZWJQYWdlUG9wdXBJbXBsOworY2xhc3MgV2ViUHJl
cmVuZGVyZXJDbGllbnQ7CiBjbGFzcyBXZWJTZXR0aW5nc0ltcGw7CiBjbGFzcyBXZWJUb3VjaEV2
ZW50OworY2xhc3MgV2ViVmlld0JlbmNobWFya1N1cHBvcnQ7CiAKIGNsYXNzIFdlYlZpZXdJbXBs
IDogcHVibGljIFdlYlZpZXcKICAgICAgICAgICAgICAgICAgICwgcHVibGljIFdlYkxheWVyVHJl
ZVZpZXdDbGllbnQKQEAgLTgyNCw3ICs4MjQsNyBAQCBwcml2YXRlOgogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fcm9vdExheWVyU2Nyb2xs
RGFtYWdlOwogICAgIE93blB0cjxOb25Db21wb3NpdGVkQ29udGVudEhvc3Q+IG1fbm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0OwotICAgIFdlYkxheWVyVHJlZVZpZXcgbV9sYXllclRyZWVWaWV3Owor
ICAgIE93blB0cjxXZWJMYXllclRyZWVWaWV3PiBtX2xheWVyVHJlZVZpZXc7CiAgICAgV2ViTGF5
ZXIqIG1fcm9vdExheWVyOwogICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIG1fcm9vdEdyYXBo
aWNzTGF5ZXI7CiAgICAgYm9vbCBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwCmluZGV4IDZiOWY5YjJiNTM4OTQ1ZTBiY2ZmYjkzZTc5NDM2Zjc4YTQ0ZTJjMDIuLjJhNDBi
NjBlNjc2NmZiYjJmYmIzOGExM2MwMGQzMGM2ZmRkNzcxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMTM1LDE0
ICsxMzUsMTQgQEAgcHVibGljOgogICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJl
YWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFk
KENDTGF5ZXJUcmVlSG9zdEltcGwqKQorICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9u
Q0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopIE9WRVJSSURFCiAgICAgewogICAgICAgICBt
X251bUNvbXBsZXRlQ29tbWl0cysrOwogICAgICAgICBpZiAobV9udW1Db21wbGV0ZUNvbW1pdHMg
PT0gMikKICAgICAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopCisgICAgdmlydHVhbCB2
b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKSBPVkVSUklERQog
ICAgIHsKICAgICAgICAgaWYgKG1fbnVtRHJhd3MgPT0gMSkKICAgICAgICAgICBwb3N0U2V0TmVl
ZHNDb21taXRUb01haW5UaHJlYWQoKTsKQEAgLTE4MCwxNCArMTgwLDE0IEBAIHB1YmxpYzoKICAg
ICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CiAgICAgfQogCi0gICAgdmly
dHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwp
CisgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdElt
cGwqIGltcGwpIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX251bURyYXdzKys7CiAgICAgICAg
IGlmICghaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSkKICAgICAgICAgICAgIGVuZFRlc3QoKTsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5
ZXJUcmVlSG9zdEltcGwqKQorICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJl
YWQoQ0NMYXllclRyZWVIb3N0SW1wbCopIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX251bUNv
bW1pdHMrKzsKICAgICB9CkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgogICAgICAgICBwb3N0
U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkg
T1ZFUlJJREUKICAgICB7CiAgICAgICAgIGlmICghaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSkK
ICAgICAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwpAQCAtMjMxLDcg
KzIzMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwq
KQorICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCopIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX251bUNvbW1pdHMrKzsKICAgICB9
CkBAIC0yNzIsNyArMjcyLDcgQEAgcHVibGljOgogICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRU
b01haW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NU
aHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xh
eWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkgT1ZFUlJJREUKICAgICB7
CiAgICAgICAgIEVYUEVDVF9FUSgwLCBpbXBsLT5zb3VyY2VGcmFtZU51bWJlcigpKTsKICAgICAg
ICAgaWYgKCFtX251bURyYXdzKQpAQCAtMjgyLDcgKzI4Miw3IEBAIHB1YmxpYzoKICAgICAgICAg
bV9udW1EcmF3cysrOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9u
Q0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENv
bXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikgT1ZFUlJJREUKICAgICB7CiAg
ICAgICAgIEVYUEVDVF9FUSgwLCBtX251bURyYXdzKTsKICAgICAgICAgbV9udW1Db21taXRzKys7
CkBAIC0zMTcsMTQgKzMxNywxNCBAQCBwdWJsaWM6CiAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1p
dFRvTWFpblRocmVhZCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25D
Q1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHZpcnR1YWwgdm9pZCBkcmF3
TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAg
IHsKICAgICAgICAgLy8gT25seSB0aGUgaW5pdGlhbCBkcmF3IHNob3VsZCBicmluZyB1cyBoZXJl
LgogICAgICAgICBFWFBFQ1RfVFJVRShpbXBsLT5jYW5EcmF3KCkpOwogICAgICAgICBFWFBFQ1Rf
RVEoMCwgaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2
b2lkIGNvbW1pdENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQor
ICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0
SW1wbCogaW1wbCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGlmIChtX251bUNvbW1pdHMgPj0g
MSkgewogICAgICAgICAgICAgLy8gQWZ0ZXIgdGhlIGZpcnN0IGNvbW1pdCwgd2Ugc2hvdWxkIG5v
dCBiZSBhYmxlIHRvIGRyYXcuCkBAIC0zNzQsMTMgKzM3NCwxMyBAQCBwdWJsaWM6CiAgICAgICAg
IHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwg
dm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAg
IHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBp
bXBsKSBPVkVSUklERQogICAgIHsKICAgICAgICAgbV9udW1EcmF3cysrOwogICAgICAgICBFWFBF
Q1RfRVEobV9udW1EcmF3cywgbV9udW1Db21taXRzKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKQorICAgIHZp
cnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCop
IE9WRVJSSURFCiAgICAgewogICAgICAgICBtX251bUNvbW1pdHMrKzsKICAgICAgICAgZW5kVGVz
dCgpOwpAQCAtNDE4LDcgKzQxOCw3IEBAIHB1YmxpYzoKICAgICAgICAgcG9zdFNldE5lZWRzQ29t
bWl0VG9NYWluVGhyZWFkKCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBs
ZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikKKyAgICB2aXJ0dWFsIHZvaWQgY29t
bWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKSBPVkVSUklERQogICAg
IHsKICAgICAgICAgbV9udW1Db21taXRzKys7CiAgICAgICAgIGlmIChtX251bUNvbW1pdHMgPT0g
MikKQEAgLTQ1Niw3ICs0NTYsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1
YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKQorICAgIHZpcnR1YWwgdm9pZCBkaWRDb21t
aXRBbmREcmF3RnJhbWUoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgbV9udW1Db21taXRzKys7
CiAgICAgICAgIGlmIChtX251bUNvbW1pdHMgPT0gMSkgewpAQCAtNTM1LDcgKzUzNSw3IEBAIHB1
YmxpYzoKICAgICAgICAgcG9zdFNldE5lZWRzQW5pbWF0ZVRvTWFpblRocmVhZCgpOwogICAgIH0K
IAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSkKKyAgICB2aXJ0dWFs
IHZvaWQgYW5pbWF0ZShkb3VibGUpIE9WRVJSSURFCiAgICAgewogICAgICAgICBpZiAoIW1fbnVt
QW5pbWF0ZXMpIHsKICAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNBbmltYXRl
KCk7CkBAIC01NzUsNyArNTc1LDcgQEAgcHVibGljOgogICAgICAgICBwb3N0QWRkSW5zdGFudEFu
aW1hdGlvblRvTWFpblRocmVhZCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRl
TGF5ZXJzKENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsLCBkb3VibGUgbW9u
b3RvbmljVGltZSkKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhDQ0xheWVyVHJlZUhv
c3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCwgZG91YmxlIG1vbm90b25pY1RpbWUpIE9WRVJSSURF
CiAgICAgewogICAgICAgICBpZiAoIW1fbnVtQW5pbWF0ZXMpIHsKICAgICAgICAgICAgIC8vIFRo
ZSBhbmltYXRpb24gaGFkIHplcm8gZHVyYXRpb24gc28gbGF5ZXJUcmVlSG9zdEltcGwgc2hvdWxk
IG5vCkBAIC01OTIsNyArNTkyLDcgQEAgcHVibGljOgogICAgICAgICBlbmRUZXN0KCk7CiAgICAg
fQogCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoZG91YmxlIHdhbGxD
bG9ja1RpbWUpCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoZG91Ymxl
IHdhbGxDbG9ja1RpbWUpIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX3JlY2VpdmVkQW5pbWF0
aW9uU3RhcnRlZE5vdGlmaWNhdGlvbiA9IHRydWU7CiAgICAgICAgIG1fc3RhcnRUaW1lID0gd2Fs
bENsb2NrVGltZTsKQEAgLTYzMiwxOCArNjMyLDE4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1hdGVMYXllcnMoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5
ZXJUcmVlSG9zdEltcGwsIGRvdWJsZSBtb25vdG9uaWNUaW1lKQorICAgIHZpcnR1YWwgdm9pZCBh
bmltYXRlTGF5ZXJzKENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsLCBkb3Vi
bGUgbW9ub3RvbmljVGltZSkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1fc3RhcnRlZEFuaW1h
dGluZyA9IHRydWU7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhy
ZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKQorICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25D
Q1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGlm
IChtX3N0YXJ0ZWRBbmltYXRpbmcpCiAgICAgICAgICAgICBlbmRUZXN0KCk7CiAgICAgfQogCi0g
ICAgdmlydHVhbCBib29sIHByZXBhcmVUb0RyYXdPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdElt
cGwqKQorICAgIHZpcnR1YWwgYm9vbCBwcmVwYXJlVG9EcmF3T25DQ1RocmVhZChDQ0xheWVyVHJl
ZUhvc3RJbXBsKikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CkBAIC02NzQsNyArNjc0LDcgQEAgcHVibGljOgogICAgIC8vIFVzZSB3aWxsQW5pbWF0ZUxheWVy
cyB0byBzZXQgdmlzaWJsZSBmYWxzZSBiZWZvcmUgdGhlIGFuaW1hdGlvbiBydW5zIGFuZAogICAg
IC8vIGNhdXNlcyBhIGNvbW1pdCwgc28gd2UgYmxvY2sgdGhlIHNlY29uZCB2aXNpYmxlIGFuaW1h
dGUgaW4gc2luZ2xlLXRocmVhZAogICAgIC8vIG1vZGUuCi0gICAgdmlydHVhbCB2b2lkIHdpbGxB
bmltYXRlTGF5ZXJzKENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsLCBkb3Vi
bGUgbW9ub3RvbmljVGltZSkKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEFuaW1hdGVMYXllcnMoQ0NM
YXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsIGRvdWJsZSBtb25vdG9uaWNUaW1l
KSBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYgKG1fbnVtQW5pbWF0ZXMgPCAyKSB7CiAgICAg
ICAgICAgICBpZiAoIW1fbnVtQW5pbWF0ZXMpIHsKQEAgLTcwOSw3ICs3MDksNyBAQCBwdWJsaWM6
CiAgICAgICAgIHBvc3RBZGRBbmltYXRpb25Ub01haW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVI
b3N0SW1wbCwgZG91YmxlIG1vbm90b25pY1RpbWUpCisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVM
YXllcnMoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsIGRvdWJsZSBtb25v
dG9uaWNUaW1lKSBPVkVSUklERQogICAgIHsKICAgICAgICAgY29uc3QgQ0NBY3RpdmVBbmltYXRp
b24qIGFuaW1hdGlvbiA9IG1fbGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPmxheWVyQW5pbWF0
aW9uQ29udHJvbGxlcigpLT5nZXRBY3RpdmVBbmltYXRpb24oMCwgQ0NBY3RpdmVBbmltYXRpb246
Ok9wYWNpdHkpOwogICAgICAgICBpZiAoIWFuaW1hdGlvbikKQEAgLTc1MCw3ICs3NTAsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHBvc3RBZGRBbmltYXRpb25Ub01haW5UaHJlYWQoKTsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9z
dEltcGwqKQorICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXll
clRyZWVIb3N0SW1wbCopIE9WRVJSSURFCiAgICAgewogICAgICAgICAvLyBJZiB0aGUgc3VidHJl
ZSB3YXMgc2tpcHBlZCB3aGVuIHByZXBhcmluZyB0byBkcmF3LCB0aGUgbGF5ZXIncyBkcmF3IG9w
YWNpdHkKICAgICAgICAgLy8gd2lsbCBub3QgaGF2ZSBiZWVuIHVwZGF0ZWQuIEl0IHNob3VsZCBi
ZSBzZXQgdG8gMCBkdWUgdG8gdGhlIGFuaW1hdGlvbi4KQEAgLTc4OCw3ICs3ODgsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgLy8gVGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIGNhbGxlZCBiZWZv
cmUgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycy4KLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbEFuaW1hdGVMYXllcnMoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGws
IGRvdWJsZSBtb25vdG9uaWNUaW1lKQorICAgIHZpcnR1YWwgdm9pZCB3aWxsQW5pbWF0ZUxheWVy
cyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCwgZG91YmxlIG1vbm90b25p
Y1RpbWUpIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsID0gbGF5
ZXJUcmVlSG9zdEltcGw7CiAgICAgfQpAQCAtODI5LDcgKzgyOSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcG9zdEFkZEluc3RhbnRBbmltYXRpb25Ub01haW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uRmluaXNoZWQoZG91YmxlIHRpbWUpCisgICAgdmly
dHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvbkZpbmlzaGVkKGRvdWJsZSB0aW1lKSBPVkVSUklERQog
ICAgIHsKICAgICAgICAgZW5kVGVzdCgpOwogICAgIH0KQEAgLTg2MCw3ICs4NjAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKQorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVS
UklERQogICAgIHsKICAgICAgICAgTGF5ZXJDaHJvbWl1bSogcm9vdCA9IG1fbGF5ZXJUcmVlSG9z
dC0+cm9vdExheWVyKCk7CiAgICAgICAgIGlmICghbV9sYXllclRyZWVIb3N0LT5jb21taXROdW1i
ZXIoKSkKQEAgLTg3Myw3ICs4NzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCog
aW1wbCkKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCogaW1wbCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIENDTGF5ZXJJbXBsKiByb290
ID0gaW1wbC0+cm9vdExheWVyKCk7CiAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxEZWx0
YSgpLCBJbnRTaXplKCkpOwpAQCAtODkzLDcgKzg5Myw3IEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNp
emUmIHNjcm9sbERlbHRhLCBmbG9hdCBzY2FsZSkKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3Jv
bGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgc2NhbGUpIE9WRVJS
SURFCiAgICAgewogICAgICAgICBJbnRQb2ludCBwb3NpdGlvbiA9IG1fbGF5ZXJUcmVlSG9zdC0+
cm9vdExheWVyKCktPnNjcm9sbFBvc2l0aW9uKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
cm9vdExheWVyKCktPnNldFNjcm9sbFBvc2l0aW9uKHBvc2l0aW9uICsgc2Nyb2xsRGVsdGEpOwpA
QCAtOTMyLDcgKzkzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9N
YWluVGhyZWFkKCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGJlZ2luQ29tbWl0T25DQ1Ro
cmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNv
bW1pdE9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkgT1ZFUlJJREUKICAgICB7
CiAgICAgICAgIExheWVyQ2hyb21pdW0qIHJvb3QgPSBtX2xheWVyVHJlZUhvc3QtPnJvb3RMYXll
cigpOwogICAgICAgICBpZiAoIWltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkpCkBAIC05NDMsNyAr
OTQzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgRVhQRUNUX0VRKHJvb3QtPnNjcm9sbFBvc2l0
aW9uKCksIG1faW5pdGlhbFNjcm9sbCArIG1fc2Nyb2xsQW1vdW50ICsgbV9zY3JvbGxBbW91bnQp
OwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVy
VHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVh
ZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsKICAgICAgICAgQ0NM
YXllckltcGwqIHJvb3QgPSBpbXBsLT5yb290TGF5ZXIoKTsKICAgICAgICAgcm9vdC0+c2V0U2Ny
b2xsYWJsZSh0cnVlKTsKQEAgLTk3NCw3ICs5NzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXpl
JiBzY3JvbGxEZWx0YSwgZmxvYXQgc2NhbGUpCisgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xs
QW5kU2NhbGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHNjYWxlKSBPVkVSUklE
RQogICAgIHsKICAgICAgICAgSW50UG9pbnQgcG9zaXRpb24gPSBtX2xheWVyVHJlZUhvc3QtPnJv
b3RMYXllcigpLT5zY3JvbGxQb3NpdGlvbigpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnJv
b3RMYXllcigpLT5zZXRTY3JvbGxQb3NpdGlvbihwb3NpdGlvbiArIHNjcm9sbERlbHRhKTsKQEAg
LTEwMTEsNyArMTAxMSw3IEBAIHB1YmxpYzoKICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9N
YWluVGhyZWFkKCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25D
Q1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHZpcnR1YWwgdm9pZCBjb21t
aXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkgT1ZFUlJJREUK
ICAgICB7CiAgICAgICAgIEVYUEVDVF9FUShJbnRTaXplKDIwLCAyMCksIGltcGwtPmxheW91dFZp
ZXdwb3J0U2l6ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKFNLX0NvbG9yR1JBWSwgaW1wbC0+YmFj
a2dyb3VuZENvbG9yKCkpOwpAQCAtMTA1Miw3ICsxMDUyLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgdGVzdC0+bGF5ZXJUcmVlSG9zdCgpLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihJbnRTaXpl
KCksIGZhbHNlLCAxLjI1LCAwKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVy
c09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkgT1ZFUlJJREUK
ICAgICB7CiAgICAgICAgIGltcGwtPnJvb3RMYXllcigpLT5zZXRTY3JvbGxhYmxlKHRydWUpOwog
ICAgICAgICBpbXBsLT5yb290TGF5ZXIoKS0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoKSk7
CkBAIC0xMDY1LDE0ICsxMDY1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAg
IHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNpemUmIHNjcm9sbERl
bHRhLCBmbG9hdCBzY2FsZSkKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShj
b25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgc2NhbGUpIE9WRVJSSURFCiAgICAgewog
ICAgICAgICBJbnRQb2ludCBwb3NpdGlvbiA9IG1fbGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCkt
PnNjcm9sbFBvc2l0aW9uKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCkt
PnNldFNjcm9sbFBvc2l0aW9uKHBvc2l0aW9uICsgc2Nyb2xsRGVsdGEpOwogICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhzY2FsZSwgMC41LCAyKTsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5
ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25D
Q1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsKICAgICAg
ICAgaW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRhcygpOwogICAgICAgICAvLyBXZSBnZXQgb25lIGNv
bW1pdCBiZWZvcmUgdGhlIGZpcnN0IGRyYXcsIGFuZCB0aGUgYW5pbWF0aW9uIGRvZXNuJ3QgaGFw
cGVuIHVudGlsIHRoZSBzZWNvbmQgZHJhdy4KQEAgLTExMTEsNyArMTExMSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcG9zdFNldFZpc2libGVUb01haW5UaHJlYWQodHJ1ZSk7IC8vIFRyaWdnZXJzIHRo
ZSByZWRyYXcuCiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFk
KENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNP
bkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpIE9WRVJSSURFCiAgICAgewogICAg
ICAgICBFWFBFQ1RfVFJVRShpbXBsLT52aXNpYmxlKCkpOwogICAgICAgICArK21fbnVtRHJhd3M7
CkBAIC0xMTQ1LDggKzExNDUsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGVzdC0+bGF5ZXJUcmVl
SG9zdCgpLT5yb290TGF5ZXIoKS0+c2V0T3BhY2l0eSgwKTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IGJvb2wgcHJlc2VydmVzM0QoKSB7IHJldHVybiBmYWxzZTsgfQotCiBwcml2YXRlOgogICAgIEND
TGF5ZXJUcmVlSG9zdFRlc3QqIG1fdGVzdDsKIH07CkBAIC0xMTk0LDcgKzExOTIsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0
SW1wbCopCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVy
VHJlZUhvc3RJbXBsKikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9
CkBAIC0xMjU2LDcgKzEyNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0Um9vdExheWVyKG1fcm9vdExheWVyKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29t
bWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgdmly
dHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBp
bXBsKSBPVkVSUklERQogICAgIHsKICAgICAgICAgLy8gR2V0IGFjY2VzcyB0byBwcm90ZWN0ZWQg
bWV0aG9kcy4KICAgICAgICAgTW9ja0xheWVyVHJlZUhvc3RJbXBsKiBtb2NrSW1wbCA9IHN0YXRp
Y19jYXN0PE1vY2tMYXllclRyZWVIb3N0SW1wbCo+KGltcGwpOwpAQCAtMTM1MCw3ICsxMzQ4LDcg
QEAgcHVibGljOgogICAgICAgICBwb3N0U2V0TmVlZHNSZWRyYXdUb01haW5UaHJlYWQoKTsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJU
cmVlSG9zdEltcGwqIGltcGwpCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25DQ1Ro
cmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsKICAgICAgICAg
Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNv
bnRleHQgPSBzdGF0aWNfY2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0
aFRleHR1cmVUcmFja2luZyo+KGltcGwtPmNvbnRleHQoKS0+Y29udGV4dDNEKCkpOwogCkBAIC0x
Mzg0LDcgKzEzODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCog
aW1wbCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3ND
b250ZXh0M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q29tcG9z
aXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqPihpbXBsLT5j
b250ZXh0KCktPmNvbnRleHQzRCgpKTsKIApAQCAtMTM5OSw3ICsxMzk3LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgZW5kVGVzdCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KQorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgbV9s
YXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgfQpAQCAtMTQ1NCw3ICsxNDUyLDcgQEAgcHVi
bGljOgogICAgICAgICBwb3N0U2V0TmVlZHNSZWRyYXdUb01haW5UaHJlYWQoKTsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9z
dEltcGwqIGltcGwpCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25DQ1RocmVhZChD
Q0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsKICAgICAgICAgQ29tcG9z
aXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqIGNvbnRleHQg
PSBzdGF0aWNfY2FzdDxDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1
cmVUcmFja2luZyo+KGltcGwtPmNvbnRleHQoKS0+Y29udGV4dDNEKCkpOwogCkBAIC0xNTA2LDcg
KzE1MDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkg
T1ZFUlJJREUKICAgICB7CiAgICAgICAgIENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0
M0RXaXRoVGV4dHVyZVRyYWNraW5nKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q29tcG9zaXRvckZh
a2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhUZXh0dXJlVHJhY2tpbmcqPihpbXBsLT5jb250ZXh0
KCktPmNvbnRleHQzRCgpKTsKIApAQCAtMTUyNSw3ICsxNTIzLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgZW5kVGVzdCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKQorICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgc3dpdGNoICht
X251bUNvbW1pdHMrKykgewogICAgICAgICBjYXNlIDA6CkBAIC0xOTYwLDEyICsxOTU4LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CiAgICAg
fQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpCisgICAgdmlydHVh
bCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIE9WRVJSSURFCiAgICAgewogICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPmxvc2VDb250ZXh0KDEpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNyZWF0ZU91dHB1dFN1cmZhY2UoYm9vbCBzdWNjZWVkZWQpCisgICAgdmlydHVhbCB2
b2lkIGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShib29sIHN1Y2NlZWRlZCkgT1ZFUlJJREUKICAg
ICB7CiAgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2NlZWRlZCk7CiAgICAgICAgIGVuZFRlc3QoKTsK
QEAgLTE5OTQsMTIgKzE5OTIsMTIgQEAgcHVibGljOgogICAgICAgICBwb3N0U2V0TmVlZHNDb21t
aXRUb01haW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5k
RHJhd0ZyYW1lKCkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgT1ZF
UlJJREUKICAgICB7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+bG9zZUNvbnRleHQoMTApOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZU91dHB1dFN1cmZhY2UoYm9vbCBz
dWNjZWVkZWQpCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShib29s
IHN1Y2NlZWRlZCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIEVYUEVDVF9GQUxTRShzdWNjZWVk
ZWQpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaEFsbFJlbmRlcmluZygpOwpAQCAt
MjAyOSw3ICsyMDI3LDcgQEAgcHVibGljOgogICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01h
aW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJl
YWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVy
c09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkgT1ZFUlJJREUKICAgICB7CiAg
ICAgICAgIENDTGF5ZXJJbXBsKiByb290ID0gaW1wbC0+cm9vdExheWVyKCk7CiAgICAgICAgIHJv
b3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKEludFNpemUoMTAwLCAxMDApKTsKQEAgLTIwNTEsNyAr
MjA0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgcm9vdC0+c2Nyb2xsQnkobV9zY3JvbGxBbW91bnQp
OwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IElu
dFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBzY2FsZSkKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlT
Y3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgc2NhbGUpIE9W
RVJSSURFCiAgICAgewogICAgICAgICBJbnRQb2ludCBwb3NpdGlvbiA9IG1fbGF5ZXJUcmVlSG9z
dC0+cm9vdExheWVyKCktPnNjcm9sbFBvc2l0aW9uKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+cm9vdExheWVyKCktPnNldFNjcm9sbFBvc2l0aW9uKHBvc2l0aW9uICsgc2Nyb2xsRGVsdGEp
OwpAQCAtMjA4Myw3ICsyMDgxLDcgQEAgcHVibGljOgogICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldE5lZWRzUmVkcmF3KCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFu
ZERyYXdGcmFtZSgpCisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIE9W
RVJSSURFCiAgICAgewogICAgICAgICBpZiAobV9vbmNlKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMjEwMiw3ICsyMTAwLDcgQEAgcHVibGljOgogICAgICAgICBlbmRUZXN0KCk7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdElt
cGwqIGltcGwpCisgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJU
cmVlSG9zdEltcGwqIGltcGwpIE9WRVJSSURFCiAgICAgewogICAgICAgICBMb2NrZXI8TXV0ZXg+
IGxvY2sobV9tdXRleCk7CiAgICAgICAgICsrbV9kcmF3Q291bnQ7CkBAIC0yMTQ4LDcgKzIxNDYs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQWRkQW5pbWF0aW9uKCkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQW5pbWF0aW9uKCkg
T1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1fYWRkZWRBbmltYXRpb24gPSB0cnVlOwogICAgIH0K
QEAgLTIyOTgsNyArMjI5Niw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXRSb290TGF5ZXIobV9yb290TGF5ZXIpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3
TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdElt
cGwpIE9WRVJSSURFCiAgICAgewogICAgICAgICBDQ1JlbmRlcmVyKiByZW5kZXJlciA9IGhvc3RJ
bXBsLT5yZW5kZXJlcigpOwogICAgICAgICB1bnNpZ25lZCBzdXJmYWNlMVJlbmRlclBhc3NJZCA9
IGhvc3RJbXBsLT5yb290TGF5ZXIoKS0+Y2hpbGRyZW4oKVswXS0+aWQoKTsKQEAgLTI0MDksMTEg
KzI0MDcsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV2aWN0aW9u
VGVzdExheWVySW1wbChpZCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5FdmljdGlvblRlc3RMYXll
ckltcGwoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGJv
b2wmIGhhZE1pc3NpbmdUaWxlcykKKworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1
YWRTaW5rJiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERQogICAgIHsKICAgICAgICAg
QVNTRVJUX1RSVUUobV9oYXNUZXh0dXJlKTsKICAgICAgICAgQVNTRVJUX05FKDB1LCBsYXllclRy
ZWVIb3N0SW1wbCgpLT5yZXNvdXJjZVByb3ZpZGVyKCktPm51bVJlc291cmNlcygpKTsKICAgICB9
CisKICAgICB2b2lkIHNldEhhc1RleHR1cmUoYm9vbCBoYXNUZXh0dXJlKSB7IG1faGFzVGV4dHVy
ZSA9IGhhc1RleHR1cmU7IH0KIAogcHJpdmF0ZToKQEAgLTI1MTUsNyArMjUxNSw3IEBAIHB1Ymxp
YzoKICAgICAvLyB0aGUgYmVnaW5GcmFtZS9jb21taXQgcGFpci4KICAgICAvLyBDb21taXRzIDUr
NiB0ZXN0IHRoZSBwYXRoIHdoZXJlIGFuIGV2aWN0aW9uIGhhcHBlbnMgZHVyaW5nIHRoZSBldmlj
dGlvbgogICAgIC8vIHJlY292ZXJ5IHBhdGguCi0gICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFu
ZERyYXdGcmFtZSgpCisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIE9W
RVJSSURFCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fbnVtQ29tbWl0cykgewogICAgICAgICBj
YXNlIDE6CkBAIC0yNTQ5LDcgKzI1NDksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1faW1wbEZvckV2
aWN0VGV4dHVyZXMgPSBpbXBsOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKQor
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgKyttX251
bUNvbW1pdHM7CiAgICAgICAgIHN3aXRjaCAobV9udW1Db21taXRzKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwCmluZGV4IGNkZTg4ZjhlNjc1
OGE4N2MzN2FhN2Y3ZDJmMDg0OTFkNzlkZmM2YzUuLjA0Mjk2YjM5YjgwZTM2ZGM2Y2JiNjIwNDRj
NzkyNjE2ZDIzYTQ0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NUaHJlYWRlZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NU
aHJlYWRlZFRlc3QuY3BwCkBAIC0yMDgsOSArMjA4LDkgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGlt
ZSkgT1ZFUlJJREUKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3VibGUgbW9ub3RvbmljVGlt
ZSkgT1ZFUlJJREUKICAgICB7Ci0gICAgICAgIG1fdGVzdEhvb2tzLT51cGRhdGVBbmltYXRpb25z
KG1vbm90b25pY1RpbWUpOworICAgICAgICBtX3Rlc3RIb29rcy0+YW5pbWF0ZShtb25vdG9uaWNU
aW1lKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuaAppbmRleCAwZjg3ZGUx
ZjVlNmI3ODRmYThjMDQ4NTllNGNmYWQ2OGU3MWJhYmMyLi5lZTViZjMxMTQ4ZDkwMjNlNTRlNWU1
OWVlODg0MDJiYjIxMjQ5YmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDVGhyZWFkZWRUZXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1RocmVhZGVkVGVzdC5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgYW5pbWF0ZUxheWVycyhXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsKiwgZG91YmxlIG1v
bm90b25pY1RpbWUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsQW5pbWF0ZUxheWVycyhXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsKiwgZG91YmxlIG1vbm90b25pY1RpbWUpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBmbG9hdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1v
bm90b25pY1RpbWUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBtb25vdG9u
aWNUaW1lKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShib29sIHN1Y2NlZWRlZCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZEFkZEFuaW1hdGlvbigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaAppbmRleCBiODcz
MDVhZmViOTYwMjNkYTAwMWRiMjQ2OTYzZmFiYzFmY2M3MDRhLi45MDAzMDg4YTU4NDY4MGZiZWRk
YzA4YTQ3YWFkZWZiYzdmOTcwNTA0IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaApAQCAtMzcsNyArMzcsNyBA
QCBjbGFzcyBGYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50IDogcHVibGljIENDTGF5ZXJUcmVlSG9z
dENsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZyYW1lKCkgT1ZF
UlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRnJhbWUoKSBPVkVSUklERSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljRnJhbWVC
ZWdpblRpbWUpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBt
b25vdG9uaWNGcmFtZUJlZ2luVGltZSkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxh
eW91dCgpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxl
KGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUpIE9WRVJSSURFIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dyYXBoaWNzTGF5
ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9HcmFwaGlj
c0xheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBjMGE5Y2YyZWY1ZmI0YjA1Y2YwZTY5MDFmMzNi
ZWFhNTJjYjQwNmQ1Li44MmQ3OWNkOTAxZTYwYjhmM2FiNzE0YjliMjBmOWQ2MWY4NGQ1NDc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvR3JhcGhpY3NM
YXllckNocm9taXVtVGVzdC5jcHAKQEAgLTY2LDE0ICs2NiwxNCBAQCBwdWJsaWM6CiAgICAgICAg
IFdlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7CiAgICAgICAgIG1fZ3JhcGhpY3NMYXllciA9
IHN0YXRpY19wb2ludGVyX2Nhc3Q8R3JhcGhpY3NMYXllckNocm9taXVtPihHcmFwaGljc0xheWVy
OjpjcmVhdGUoJm1fY2xpZW50KSk7CiAgICAgICAgIG1fcGxhdGZvcm1MYXllciA9IG1fZ3JhcGhp
Y3NMYXllci0+cGxhdGZvcm1MYXllcigpOwotICAgICAgICBtX2xheWVyVHJlZVZpZXcuaW5pdGlh
bGl6ZSgmbV9sYXllclRyZWVWaWV3Q2xpZW50LCAqbV9wbGF0Zm9ybUxheWVyLCBXZWJMYXllclRy
ZWVWaWV3OjpTZXR0aW5ncygpKTsKLSAgICAgICAgbV9sYXllclRyZWVWaWV3LnNldFZpZXdwb3J0
U2l6ZShXZWJTaXplKDEsIDEpLCBXZWJTaXplKDEsIDEpKTsKKyAgICAgICAgbV9sYXllclRyZWVW
aWV3ID0gYWRvcHRQdHIoV2ViTGF5ZXJUcmVlVmlldzo6Y3JlYXRlKCZtX2xheWVyVHJlZVZpZXdD
bGllbnQsICptX3BsYXRmb3JtTGF5ZXIsIFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzKCkpKTsK
KyAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRWaWV3cG9ydFNpemUoV2ViU2l6ZSgxLCAxKSwg
V2ViU2l6ZSgxLCAxKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckNocm9t
aXVtVGVzdCgpCiAgICAgewogICAgICAgICBtX2dyYXBoaWNzTGF5ZXIuY2xlYXIoKTsKLSAgICAg
ICAgbV9sYXllclRyZWVWaWV3LnJlc2V0KCk7CisgICAgICAgIG1fbGF5ZXJUcmVlVmlldy5jbGVh
cigpOwogICAgICAgICBXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0KIApAQCAtODgs
NyArODgsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgTW9ja1dlYkxheWVyVHJlZVZp
ZXdDbGllbnQgbV9sYXllclRyZWVWaWV3Q2xpZW50OwotICAgIFdlYkxheWVyVHJlZVZpZXcgbV9s
YXllclRyZWVWaWV3OworICAgIE93blB0cjxXZWJMYXllclRyZWVWaWV3PiBtX2xheWVyVHJlZVZp
ZXc7CiAgICAgTW9ja0dyYXBoaWNzTGF5ZXJDbGllbnQgbV9jbGllbnQ7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAKaW5kZXggOWI4ZTU4Y2Ex
MDBlNzdkOTAzNjViZDQ2MjhiMWRlMzgxMDkzNzQzMi4uODBhMTAzMWZiNjJjYTc2MjMwMDM0MDU1
ZWE3YWQ0ZDNiN2JkNzQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJMYXllclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2Vi
TGF5ZXJUZXN0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ29tcG9zaXRvckZh
a2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgorI2lu
Y2x1ZGUgIldlYkxheWVyVHJlZVZpZXdUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSA8cHVibGljL1dl
YkNvbXBvc2l0b3IuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29udGVudExheWVyLmg+CiAjaW5j
bHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllckNsaWVudC5oPgpAQCAtNDksMjMgKzUwLDYgQEAg
dXNpbmcgdGVzdGluZzo6XzsKIAogbmFtZXNwYWNlIHsKIAotY2xhc3MgTW9ja1dlYkxheWVyVHJl
ZVZpZXdDbGllbnQgOiBwdWJsaWMgV2ViTGF5ZXJUcmVlVmlld0NsaWVudCB7Ci1wdWJsaWM6Ci0g
ICAgTU9DS19NRVRIT0QwKHNjaGVkdWxlQ29tcG9zaXRlLCB2b2lkKCkpOwotCi0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQmVnaW5GcmFtZSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBXZWJTaXpl
JiBzY3JvbGxEZWx0YSwgZmxvYXQgc2NhbGVGYWN0b3IpIHsgfQotICAgIHZpcnR1YWwgV2ViR3Jh
cGhpY3NDb250ZXh0M0QqIGNyZWF0ZUNvbnRleHQzRCgpIHsgcmV0dXJuIENvbXBvc2l0b3JGYWtl
V2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmli
dXRlcygpKS5sZWFrUHRyKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmViaW5kR3JhcGhpY3ND
b250ZXh0KGJvb2wgc3VjY2VzcykgeyB9Ci0gICAgdmlydHVhbCBXZWJDb21wb3NpdG9yT3V0cHV0
U3VyZmFjZSogY3JlYXRlT3V0cHV0U3VyZmFjZSgpIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjcmVhdGVPdXRwdXRTdXJmYWNlKGJvb2wgc3VjY2VzcykgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHdpbGxDb21taXQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5k
RHJhd0ZyYW1lKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMo
KSB7IH0KLX07Ci0KIGNsYXNzIE1vY2tXZWJDb250ZW50TGF5ZXJDbGllbnQgOiBwdWJsaWMgV2Vi
Q29udGVudExheWVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBNT0NLX01FVEhPRDMocGFpbnRDb250
ZW50cywgdm9pZChXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0JiBjbGlwLCBXZWJGbG9hdFJlY3Qm
IG9wYXF1ZSkpOwpAQCAtNzksNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFdlYktpdDo6V2Vi
Q29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKICAgICAgICAgbV9yb290TGF5ZXIgPSBhZG9wdFB0
cihXZWJMYXllcjo6Y3JlYXRlKCkpOwogICAgICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2No
ZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkpOwotICAgICAgICBFWFBFQ1RfVFJV
RShtX3ZpZXcuaW5pdGlhbGl6ZSgmbV9jbGllbnQsICptX3Jvb3RMYXllciwgV2ViTGF5ZXJUcmVl
Vmlldzo6U2V0dGluZ3MoKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShtX3ZpZXcgPSBhZG9wdFB0
cihXZWJMYXllclRyZWVWaWV3OjpjcmVhdGUoJm1fY2xpZW50LCAqbV9yb290TGF5ZXIsIFdlYkxh
eWVyVHJlZVZpZXc6OlNldHRpbmdzKCkpKSk7CiAgICAgICAgIE1vY2s6OlZlcmlmeUFuZENsZWFy
RXhwZWN0YXRpb25zKCZtX2NsaWVudCk7CiAgICAgfQogCkBAIC04NywxNiArNzEsMTUgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBhbnkgbnVtYmVyIG9mIHNjaGVkdWxl
Q29tcG9zaXRlIGNhbGxzIGR1cmluZyBzaHV0ZG93bi4KICAgICAgICAgRVhQRUNUX0NBTEwobV9j
bGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEFueU51bWJlcigpKTsKLSAgICAgICAg
bV92aWV3LnNldFJvb3RMYXllcigwKTsKICAgICAgICAgbV9yb290TGF5ZXIuY2xlYXIoKTsKLSAg
ICAgICAgbV92aWV3LnJlc2V0KCk7CisgICAgICAgIG1fdmlldy5jbGVhcigpOwogICAgICAgICBX
ZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CiAg
ICAgTW9ja1dlYkxheWVyVHJlZVZpZXdDbGllbnQgbV9jbGllbnQ7CiAgICAgT3duUHRyPFdlYkxh
eWVyPiBtX3Jvb3RMYXllcjsKLSAgICBXZWJMYXllclRyZWVWaWV3IG1fdmlldzsKKyAgICBPd25Q
dHI8V2ViTGF5ZXJUcmVlVmlldz4gbV92aWV3OwogfTsKIAogLy8gVGVzdHMgdGhhdCB0aGUgY2xp
ZW50IGdldHMgY2FsbGVkIHRvIGFzayBmb3IgYSBjb21wb3NpdGUgaWYgd2UgY2hhbmdlIHRoZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRyZWVWaWV3
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdU
ZXN0LmNwcAppbmRleCAxYzE2MDJjMjM0MTY5OWQ5ODY1ZTgzOTM5YWQxMDRkMGIzYjEwOWRhLi42
OTE1NGY3YTVjYTZhMjJhOWFmYzVmNThjZjUzMjAwM2QzM2NlMjc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcApAQCAt
NjEsMzAgKzYxLDI5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGluaXRpYWxpemVDb21wb3Np
dG9yKCk7CiAgICAgICAgIG1fcm9vdExheWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgp
KTsKLSAgICAgICAgRVhQRUNUX1RSVUUobV92aWV3LmluaXRpYWxpemUoY2xpZW50KCksICptX3Jv
b3RMYXllciwgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MoKSkpOwotICAgICAgICBtX3ZpZXcu
c2V0U3VyZmFjZVJlYWR5KCk7CisgICAgICAgIEFTU0VSVF9UUlVFKG1fdmlldyA9IGFkb3B0UHRy
KFdlYkxheWVyVHJlZVZpZXc6OmNyZWF0ZShjbGllbnQoKSwgKm1fcm9vdExheWVyLCBXZWJMYXll
clRyZWVWaWV3OjpTZXR0aW5ncygpKSkpOworICAgICAgICBtX3ZpZXctPnNldFN1cmZhY2VSZWFk
eSgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCiAgICAgewogICAgICAg
ICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucyhjbGllbnQoKSk7CiAKLSAgICAgICAg
bV92aWV3LnNldFJvb3RMYXllcigwKTsKICAgICAgICAgbV9yb290TGF5ZXIuY2xlYXIoKTsKLSAg
ICAgICAgbV92aWV3LnJlc2V0KCk7CisgICAgICAgIG1fdmlldy5jbGVhcigpOwogICAgICAgICBX
ZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CiAg
ICAgT3duUHRyPFdlYkxheWVyPiBtX3Jvb3RMYXllcjsKLSAgICBXZWJMYXllclRyZWVWaWV3IG1f
dmlldzsKKyAgICBPd25QdHI8V2ViTGF5ZXJUcmVlVmlldz4gbV92aWV3OwogfTsKIAogY2xhc3Mg
V2ViTGF5ZXJUcmVlVmlld1NpbmdsZVRocmVhZFRlc3QgOiBwdWJsaWMgV2ViTGF5ZXJUcmVlVmll
d1Rlc3RCYXNlIHsKIHByb3RlY3RlZDoKICAgICB2b2lkIGNvbXBvc2l0ZSgpCiAgICAgewotICAg
ICAgICBtX3ZpZXcuY29tcG9zaXRlKCk7CisgICAgICAgIG1fdmlldy0+Y29tcG9zaXRlKCk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVDb21wb3NpdG9yKCkgT1ZFUlJJREUK
QEAgLTE1NywxMiArMTU2LDEyIEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgY29tcG9zaXRlKCkK
ICAgICB7Ci0gICAgICAgIG1fdmlldy5zZXROZWVkc1JlZHJhdygpOworICAgICAgICBtX3ZpZXct
PnNldE5lZWRzUmVkcmF3KCk7CiAgICAgICAgIFJlZlB0cjxDYW5jZWxhYmxlVGFza1dyYXBwZXI+
IHRpbWVvdXRUYXNrID0gYWRvcHRSZWYobmV3IENhbmNlbGFibGVUYXNrV3JhcHBlcihhZG9wdFB0
cihuZXcgVGltZW91dFRhc2soKSkpKTsKICAgICAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVu
dCgpLT5jdXJyZW50VGhyZWFkKCktPnBvc3REZWxheWVkVGFzayh0aW1lb3V0VGFzay0+Y3JlYXRl
VGFzaygpLCA1MDAwKTsKICAgICAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jdXJy
ZW50VGhyZWFkKCktPmVudGVyUnVuTG9vcCgpOwogICAgICAgICB0aW1lb3V0VGFzay0+Y2FuY2Vs
KCk7Ci0gICAgICAgIG1fdmlldy5maW5pc2hBbGxSZW5kZXJpbmcoKTsKKyAgICAgICAgbV92aWV3
LT5maW5pc2hBbGxSZW5kZXJpbmcoKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlh
bGl6ZUNvbXBvc2l0b3IoKSBPVkVSUklERQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdENvbW1vbi5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdENvbW1vbi5oCmluZGV4IGUyYTYyYjZh
MzhkYTNmNDc4NmUyNWNlZDE5MzdmODc0YzFmZjkyOTkuLjQ4MDcxZjk1MTFlYzI0ZmE5YWU3NGU4
ZWVkMzEyYmViZDY2OWUyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvV2ViTGF5ZXJUcmVlVmlld1Rlc3RDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0Q29tbW9uLmgKQEAgLTM0LDcgKzM0LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50IDog
cHVibGljIFdlYkxheWVyVHJlZVZpZXdDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9p
ZCBzY2hlZHVsZUNvbXBvc2l0ZSgpIE9WRVJSSURFIHsgfQorICAgIE1PQ0tfTUVUSE9EMChzY2hl
ZHVsZUNvbXBvc2l0ZSwgdm9pZCgpKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9u
cyhkb3VibGUgZnJhbWVCZWdpblRpbWUpIE9WRVJSSURFIHsgfQogICAgIE1PQ0tfTUVUSE9EMCh3
aWxsQmVnaW5GcmFtZSwgdm9pZCgpKTsKICAgICBNT0NLX01FVEhPRDAoZGlkQmVnaW5GcmFtZSwg
dm9pZCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBiOTY3MTg5NmM0MTcxNmVhZmIwYWE0ZmY0MTg5Mzg2MjExMzZiZmI5Li45MjE5ODhhNTQy
MmQzZTk5NWZlMmUwMDBjN2I4ODg0MjA5MGUwYzFmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDgtMjMgIEph
bWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IENvbnZlcnQgV2ViTGF5ZXJUcmVlVmlldyBpbnRlcmZhY2UgaW50byBwdXJlIHZpcnR1YWwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0ODY2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlcyBEdW1w
UmVuZGVyVHJlZSdzIFdlYlZpZXdIb3N0IHRvIHZlbmQgYSBXZWJDb21wb3NpdG9yT3V0cHV0U3Vy
ZmFjZSBzbyBEdW1wUmVuZGVyVHJlZSBjYW4gcnVuIGNvbXBvc2l0aW5nCisgICAgICAgIHRlc3Rz
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChX
ZWJWaWV3SG9zdDo6Y3JlYXRlT3V0cHV0U3VyZmFjZSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKyAgICAgICAgKFdlYlZpZXdIb3N0KToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdE91dHB1dFN1cmZhY2UuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3
SW1wbC5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0hvc3RP
dXRwdXRTdXJmYWNlOjpXZWJWaWV3SG9zdE91dHB1dFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SG9zdE91dHB1dFN1cmZhY2U6On5XZWJWaWV3SG9zdE91dHB1dFN1cmZhY2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SG9zdE91dHB1dFN1cmZhY2U6OmJpbmRUb0NsaWVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdIb3N0T3V0cHV0U3VyZmFjZTo6Y2FwYWJpbGl0aWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlOjpjb250ZXh0M0Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SG9zdE91dHB1dFN1cmZhY2U6OnNlbmRGcmFtZVRv
UGFyZW50Q29tcG9zaXRvcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3RPdXRwdXRTdXJmYWNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlKToKKwogMjAxMi0wOC0yMyAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXBsYXkgdGVzdHMgdGFrZSBmb3JldmVy
IHRvIGxvYWQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IDE1
Y2Q5NDQ0MTIxZjBhNDQwN2M0MWEzODQ0ZTEyNWUzYzNiZTQ3MTUuLjc5MTkzYjUzZWM3OWRjMjkw
ZGNjOGIyNzQzZmM2Y2Y5ZTkyNjI2MmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUuZ3lwaQpAQCAtNTQsNiArNTQsOCBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlVz
ZXJNZWRpYUNsaWVudE1vY2suaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3Qu
Y3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJWaWV3SG9zdC5oJywKKyAgICAgICAgICAg
ICdjaHJvbWl1bS9XZWJWaWV3SG9zdE91dHB1dFN1cmZhY2UuY3BwJywKKyAgICAgICAgICAgICdj
aHJvbWl1bS9XZWJWaWV3SG9zdE91dHB1dFN1cmZhY2UuaCcsCiAgICAgICAgIF0sCiAgICAgICAg
ICd0ZXN0X3J1bm5lcl9maWxlcyc6IFsKICAgICAgICAgICAgICdEdW1wUmVuZGVyVHJlZS5oJywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCA2
MmVlOTM4OTFmNWJlY2ZmOGU4NTVjYWUwNzIwMTQzYjNhMDVjZTc0Li5kYjBlYTVlZWZmMjlmYWZk
YmMxMDJhMTFmNTZkMGY4MjZhODJhNmY2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC0zOSwxNCArMzksMTIgQEAKICNpbmNsdWRlICJUZXN0
TmF2aWdhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJUZXN0U2hlbGwuaCIKICNpbmNsdWRl
ICJUZXN0V2ViUGx1Z2luLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ1N0cmluZy5oIgogI2lu
Y2x1ZGUgIldlYkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVEYXRh
LmgiCiAjaW5jbHVkZSAiV2ViRE9NTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNv
dXJjZS5oIgogI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIgogI2lu
Y2x1ZGUgIldlYkRvY3VtZW50LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViRHJhZ0RhdGEuaCIK
ICNpbmNsdWRlICJXZWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRl
ICJXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suaCIKQEAgLTYwLDIyICs1OCwyNiBAQAogI2luY2x1
ZGUgIldlYlBvcHVwVHlwZS5oIgogI2luY2x1ZGUgIldlYlByaW50UGFyYW1zLmgiCiAjaW5jbHVk
ZSAiV2ViUmFuZ2UuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCiAjaW5jbHVkZSAi
V2ViU2NyZWVuSW5mby5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKICNpbmNsdWRlICJXZWJTdG9y
YWdlTmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbi5oIgog
I2luY2x1ZGUgIldlYlRleHRDaGVja2luZ1Jlc3VsdC5oIgogI2luY2x1ZGUgIldlYlVzZXJNZWRp
YUNsaWVudE1vY2suaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJUaHJlYWQuaCIKLSNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJVUkxSZXF1ZXN0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMUmVz
cG9uc2UuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCisjaW5jbHVkZSAiV2ViVmlld0hvc3RPdXRw
dXRTdXJmYWNlLmgiCiAjaW5jbHVkZSAiV2ViV2luZG93RmVhdHVyZXMuaCIKKyNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJza2lhL2V4dC9w
bGF0Zm9ybV9jYW52YXMuaCIKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC90ZXN0X21lZGlhX3N0
cmVhbV9jbGllbnQuaCIKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5o
IgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDU3RyaW5nLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNv
bXBvc2l0b3JPdXRwdXRTdXJmYWNlLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkRyYWdEYXRhLmg+
CisjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU2l6ZS5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUaHJlYWQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVVJM
UmVxdWVzdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxSZXNwb25zZS5oPgogCiAjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtMjg1
LDExICsyODcsMTEgQEAgV2ViU3RvcmFnZU5hbWVzcGFjZSogV2ViVmlld0hvc3Q6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQogICAgIHJldHVybiB3ZWJraXRf
c3VwcG9ydDo6Q3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOwogfQogCi1XZWJL
aXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBXZWJWaWV3SG9zdDo6Y3JlYXRlR3JhcGhpY3NDb250
ZXh0M0QoY29uc3QgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyYgYXR0
cmlidXRlcykKK1dlYktpdDo6V2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2UqIFdlYlZpZXdIb3N0
OjpjcmVhdGVPdXRwdXRTdXJmYWNlKCkKIHsKICAgICBpZiAoIXdlYlZpZXcoKSkKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgcmV0dXJuIHdlYmtpdF9zdXBwb3J0OjpDcmVhdGVHcmFwaGljc0NvbnRl
eHQzRChhdHRyaWJ1dGVzLCB3ZWJWaWV3KCkpOworICAgIHJldHVybiBuZXcgV2ViS2l0OjpXZWJW
aWV3SG9zdE91dHB1dFN1cmZhY2UoYWRvcHRQdHIod2Via2l0X3N1cHBvcnQ6OkNyZWF0ZUdyYXBo
aWNzQ29udGV4dDNEKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMoKSwg
d2ViVmlldygpKSkpOwogfQogCiB2b2lkIFdlYlZpZXdIb3N0OjpkaWRBZGRNZXNzYWdlVG9Db25z
b2xlKGNvbnN0IFdlYkNvbnNvbGVNZXNzYWdlJiBtZXNzYWdlLCBjb25zdCBXZWJTdHJpbmcmIHNv
dXJjZU5hbWUsIHVuc2lnbmVkIHNvdXJjZUxpbmUpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuaAppbmRleCA3ODkzOTU0MWQwYTA2OTg5YjdkZWIwNzYxODg1OTg2
NjdlNjY1ZWFjLi40NjA4ZjQ0YjQwZWFjYTM2MDg3YWExY2MyNzRlY2Q1MDM3NmIxZDIzIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTE0OSw3ICsx
NDksNyBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQs
IHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJX
aWRnZXQqIGNyZWF0ZVBvcHVwTWVudShXZWJLaXQ6OldlYlBvcHVwVHlwZSk7CiAgICAgdmlydHVh
bCBXZWJLaXQ6OldlYldpZGdldCogY3JlYXRlUG9wdXBNZW51KGNvbnN0IFdlYktpdDo6V2ViUG9w
dXBNZW51SW5mbyYpOwogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlKiBj
cmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSk7Ci0gICAgdmlydHVh
bCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjcmVhdGVHcmFwaGljc0NvbnRleHQzRChj
b25zdCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzJik7CisgICAgdmly
dHVhbCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlKiBjcmVhdGVPdXRwdXRTdXJm
YWNlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgV2Vi
S2l0OjpXZWJDb25zb2xlTWVzc2FnZSYsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBzb3VyY2VO
YW1lLCB1bnNpZ25lZCBzb3VyY2VMaW5lKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2Fk
aW5nKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0b3BMb2FkaW5nKCk7CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdE91dHB1dFN1cmZhY2UuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xZDFiNTg0MGU5NmU2MGZlOGQ5ODIwNWVkY2NlNTY1MmVkNzNkNmY0
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3RPdXRwdXRTdXJmYWNlLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlLmgiCisKKyNp
bmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KKyNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViVmlld0hvc3RPdXRwdXRTdXJm
YWNlOjpXZWJWaWV3SG9zdE91dHB1dFN1cmZhY2UoUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNEPiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCit7Cit9CisK
K1dlYlZpZXdIb3N0T3V0cHV0U3VyZmFjZTo6fldlYlZpZXdIb3N0T3V0cHV0U3VyZmFjZSgpCit7
Cit9CisKK2Jvb2wgV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlOjpiaW5kVG9DbGllbnQoV2ViQ29t
cG9zaXRvck91dHB1dFN1cmZhY2VDbGllbnQqKQoreworICAgIHJldHVybiBtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpOworfQorCitjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JPdXRw
dXRTdXJmYWNlOjpDYXBhYmlsaXRpZXMmIFdlYlZpZXdIb3N0T3V0cHV0U3VyZmFjZTo6Y2FwYWJp
bGl0aWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jYXBhYmlsaXRpZXM7Cit9CisKK1dlYkdy
YXBoaWNzQ29udGV4dDNEKiBXZWJWaWV3SG9zdE91dHB1dFN1cmZhY2U6OmNvbnRleHQzRCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKK30KKwordm9pZCBXZWJWaWV3SG9z
dE91dHB1dFN1cmZhY2U6OnNlbmRGcmFtZVRvUGFyZW50Q29tcG9zaXRvcihjb25zdCBXZWJDb21w
b3NpdG9yRnJhbWUmKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdE91dHB1dFN1
cmZhY2UuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0T3V0cHV0
U3VyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxMmJjNTM5ZDA0MzZiMmVmYzFlMjI4YTdlNDZkYzk3ODg1
MzA5ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdE91dHB1dFN1cmZhY2UuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJWaWV3SG9zdE91dHB1dFN1cmZhY2VfaAorI2RlZmluZSBXZWJWaWV3SG9zdE91dHB1dFN1
cmZhY2VfaAorCisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlLmg+
CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZUNs
aWVudDsKK2NsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOworCitjbGFzcyBXZWJWaWV3SG9zdE91
dHB1dFN1cmZhY2UgOiBwdWJsaWMgV2ViS2l0OjpXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZSB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViVmlld0hvc3RPdXRwdXRTdXJmYWNlKFBhc3NPd25Q
dHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4pOworICAgIHZpcnR1YWwgfldlYlZpZXdI
b3N0T3V0cHV0U3VyZmFjZSgpOworCisgICAgdmlydHVhbCBib29sIGJpbmRUb0NsaWVudChXZWJD
b21wb3NpdG9yT3V0cHV0U3VyZmFjZUNsaWVudCopIE9WRVJSSURFOworCisgICAgdmlydHVhbCBj
b25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlOjpDYXBhYmlsaXRpZXMmIGNh
cGFiaWxpdGllcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQzRCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZW5k
RnJhbWVUb1BhcmVudENvbXBvc2l0b3IoY29uc3QgV2ViQ29tcG9zaXRvckZyYW1lJikgT1ZFUlJJ
REU7CisKK3ByaXZhdGU6CisgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZTo6
Q2FwYWJpbGl0aWVzIG1fY2FwYWJpbGl0aWVzOworICAgIE93blB0cjxXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJWaWV3SG9z
dE91dHB1dFN1cmZhY2VfaAo=
</data>
<flag name="review"
          id="170834"
          type_id="1"
          status="+"
          setter="enne"
    />
          </attachment>
      

    </bug>

</bugzilla>