<?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>94229</bug_id>
          
          <creation_ts>2012-08-16 10:56:12 -0700</creation_ts>
          <short_desc>[chromium] Remove unnecessary tree hierarchy inspection APIs from WebLayer</short_desc>
          <delta_ts>2012-08-17 17:17:20 -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>
          
          <blocked>94174</blocked>
          <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>697280</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-16 10:56:12 -0700</bug_when>
    <thetext>[chromium] Remove unnecessary tree hierarchy inspection APIs from WebLayer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697282</commentid>
    <comment_count>1</comment_count>
      <attachid>158854</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-16 10:59:29 -0700</bug_when>
    <thetext>Created attachment 158854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697286</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-16 11:01:17 -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>697289</commentid>
    <comment_count>3</comment_count>
      <attachid>158854</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-08-16 11:14:53 -0700</bug_when>
    <thetext>Comment on attachment 158854
Patch

If it&apos;s not needed by Aura (I don&apos;t think it is), then I&apos;m absolutely happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697305</commentid>
    <comment_count>4</comment_count>
      <attachid>158861</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-16 11:30:51 -0700</bug_when>
    <thetext>Created attachment 158861
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697635</commentid>
    <comment_count>5</comment_count>
      <attachid>158861</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-16 15:56:59 -0700</bug_when>
    <thetext>Comment on attachment 158861
Patch

R=me.  Ooh, nice to get rid of those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697642</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-16 16:11:13 -0700</bug_when>
    <thetext>Committed r125822: &lt;http://trac.webkit.org/changeset/125822&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698813</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-17 17:15:51 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698814</commentid>
    <comment_count>8</comment_count>
      <attachid>159233</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-17 17:15:57 -0700</bug_when>
    <thetext>Created attachment 159233
rebased and addresses feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698819</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-17 17:17:13 -0700</bug_when>
    <thetext>!! silly webkit-patch :(</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158854</attachid>
            <date>2012-08-16 10:59:29 -0700</date>
            <delta_ts>2012-08-16 11:30:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94229-20120816105854.patch</filename>
            <type>text/plain</type>
            <size>7622</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1Nzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBlMzc2MjA0MDdiZWZi
ODQwZjMwMmVjMjJlY2VmNGRmM2EwMTk4MTZiLi5hZjBlYTZmNzg4OWMzOWIyYzU1NDRjMjYwY2Qx
Y2NhOWYyYjExN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxOSBAQAogMjAxMi0wOC0xNiAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1
bV0gUmVtb3ZlIHVubmVjZXNzYXJ5IHRyZWUgaGllcmFyY2h5IGluc3BlY3Rpb24gQVBJcyBmcm9t
IFdlYkxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NDIyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFzIGl0IHR1cm5zIG91dCwgdGhlc2UgQVBJcyBhcmUgbmVlZGVkLiBXaXRob3V0IHRoZW0sIHRo
ZXJlIGlzIG5vIHdheSB0byByZS13cmFwIGFuIGV4aXN0aW5nIGxheWVyIHNvIHdlIGNhbgorICAg
ICAgICBrbm93IHRoYXQgd2hlbiBhbGwgV2ViTGF5ZXIgd3JhcHBlcnMgb2YgYSBnaXZlbiBsYXll
ciBnbyBhd2F5IHRoYXQgbGF5ZXIgd2lsbCBuZXZlciBiZSBleHBvc2VkIHRvIHRoZSBwdWJsaWMg
QVBJCisgICAgICAgIGFnYWluIGFuZCBydW4gYXBwcm9wcmlhdGUgY2xlYW51cCBjb2RlLgorCisg
ICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmg6CisgICAgICAgIChXZWJMYXllcik6
CisKKzIwMTItMDgtMTYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKwog
ICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBhbHdheXNSZXNlcnZlVGV4dHVyZXMgY29kZSAtIGl0
IGRvZXNuJ3QgZG8gYW55dGhpbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk0MTgzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3YjJkNDFkMGNiODUzYTVkZjYwZDEz
NzU1MzIwNTQ5ZGQzMzZiMzA5Li5iYWE0ZWE0Yjg0M2ZkMTRkNzU3YjU2N2ZlM2E2ZmQyY2RjNGEx
NjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAKIDIwMTItMDgtMTYgIEphbWVzIFJvYmlu
c29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSB1
bm5lY2Vzc2FyeSB0cmVlIGhpZXJhcmNoeSBpbnNwZWN0aW9uIEFQSXMgZnJvbSBXZWJMYXllcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQyMjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUd2VhayB1cGRh
dGVMYXllclByZXNlcnZlczNEKCkgbG9naWMgdG8gdXNlIHRoZSBleGlzdGluZyBHcmFwaGljc0xh
eWVyIHRyZWUgaGllcmFyY2h5IGluc3RlYWQgb2YgcHVsbGluZyB0aGUKKyAgICAgICAgaGllcmFy
Y2h5IG9mZiBvZiBXZWJMYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QpOgorCisyMDEyLTA4LTE2ICBK
YW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW2Nocm9taXVt
XSBSZW1vdmUgYWx3YXlzUmVzZXJ2ZVRleHR1cmVzIGNvZGUgLSBpdCBkb2Vzbid0IGRvIGFueXRo
aW5nCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDE4
MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDU1NjAzMmVlMWUxMDY0NjA2MzY5MzEz
ZDNmZDY4OTQzZDJjNDNiNDMuLjBiMjRkMDM0OTQxZDA1YmM1ZDllY2YyMmZhMTJjMjE4ZjEyOTM0
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTItMDgt
MTYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbY2hy
b21pdW1dIFJlbW92ZSB1bm5lY2Vzc2FyeSB0cmVlIGhpZXJhcmNoeSBpbnNwZWN0aW9uIEFQSXMg
ZnJvbSBXZWJMYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTQyMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZW1vdmUgZGVhZCBXZWJMYXllciBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMgYW5kIHRl
c3RzIG9mIHNhbWUuCisKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXIuY3BwOgorICAgICAgICAqIHRl
c3RzL1dlYkxheWVyVGVzdC5jcHA6CisKKzIwMTItMDgtMTYgIEphbWVzIFJvYmluc29uICA8amFt
ZXNyQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBhbHdheXNSZXNl
cnZlVGV4dHVyZXMgY29kZSAtIGl0IGRvZXNuJ3QgZG8gYW55dGhpbmcKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MTgzCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAppbmRleCBmMWI5ZGQzNWRhZTVkZDU2MDc0ZTBj
YmZlNTA5MWI4ZTVmNzA1NjQ5Li4xM2Q5MjcyOTQ2YmEyMzM3MzM3MTM4NjY4ZTZmMWNiZTg5ZmM2
NWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCkBAIC02
NywxMSArNjcsNiBAQCBwdWJsaWM6CiAgICAgLy8gU2V0cyB0aGUgZW50aXJlIGxheWVyIGFzIGlu
dmFsaWQsIGkuZS4gbmVlZHMgdG8gdXBkYXRlIGl0cyBjb250ZW50LgogICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBpbnZhbGlkYXRlKCk7CiAKLSAgICBXRUJLSVRfRVhQT1JUIFdlYkxheWVyIHJvb3RM
YXllcigpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgV2ViTGF5ZXIgcGFyZW50KCkgY29uc3Q7
Ci0gICAgV0VCS0lUX0VYUE9SVCBzaXplX3QgbnVtYmVyT2ZDaGlsZHJlbigpIGNvbnN0OwotICAg
IFdFQktJVF9FWFBPUlQgV2ViTGF5ZXIgY2hpbGRBdChzaXplX3QpIGNvbnN0OwotCiAgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIGFkZENoaWxkKGNvbnN0IFdlYkxheWVyJik7CiAgICAgV0VCS0lUX0VY
UE9SVCB2b2lkIGluc2VydENoaWxkKGNvbnN0IFdlYkxheWVyJiwgc2l6ZV90IGluZGV4KTsKICAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVwbGFjZUNoaWxkKGNvbnN0IFdlYkxheWVyJiByZWZlcmVu
Y2UsIGNvbnN0IFdlYkxheWVyJiBuZXdMYXllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNo
cm9taXVtLmNwcAppbmRleCBjMmNkMGY4ZTVhY2Y3ZWFhN2E0N2VmOWZlOWY0NTIyMjkxNTcwNjA5
Li5mYjA5MDBiYmMxYTc1N2MxZGEzYjgxY2NjYzcwMGJkOTQ0MmRiMmFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTc0MSwxNiArNzQxLDE2IEBAIHZvaWQgR3Jh
cGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNEKCkKICAgICAgICAgbV9s
YXllci5zZXRDb250ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUoKSk7CiAKICAgICAgICAgLy8gTW92
ZSB0aGlzIGxheWVyIHRvIGJlIGEgY2hpbGQgb2YgdGhlIHRyYW5zZm9ybSBsYXllci4KLSAgICAg
ICAgaWYgKCFtX2xheWVyLnBhcmVudCgpLmlzTnVsbCgpKQotICAgICAgICAgICAgbV9sYXllci5w
YXJlbnQoKS5yZXBsYWNlQ2hpbGQobV9sYXllciwgbV90cmFuc2Zvcm1MYXllcik7CisgICAgICAg
IGlmIChwYXJlbnQoKSkKKyAgICAgICAgICAgIHBhcmVudCgpLT5wbGF0Zm9ybUxheWVyKCktPnJl
cGxhY2VDaGlsZChtX2xheWVyLCBtX3RyYW5zZm9ybUxheWVyKTsKICAgICAgICAgbV90cmFuc2Zv
cm1MYXllci5hZGRDaGlsZChtX2xheWVyKTsKIAogICAgICAgICB1cGRhdGVDaGlsZExpc3QoKTsK
ICAgICB9IGVsc2UgaWYgKCFtX3ByZXNlcnZlczNEICYmICFtX3RyYW5zZm9ybUxheWVyLmlzTnVs
bCgpKSB7CiAgICAgICAgIC8vIFJlbGFjZSB0aGUgdHJhbnNmb3JtTGF5ZXIgaW4gdGhlIHBhcmVu
dCB3aXRoIHRoaXMgbGF5ZXIuCiAgICAgICAgIG1fbGF5ZXIucmVtb3ZlRnJvbVBhcmVudCgpOwot
ICAgICAgICBpZiAoIW1fdHJhbnNmb3JtTGF5ZXIucGFyZW50KCkuaXNOdWxsKCkpCi0gICAgICAg
ICAgICBtX3RyYW5zZm9ybUxheWVyLnBhcmVudCgpLnJlcGxhY2VDaGlsZChtX3RyYW5zZm9ybUxh
eWVyLCBtX2xheWVyKTsKKyAgICAgICAgaWYgKHBhcmVudCgpKQorICAgICAgICAgICAgcGFyZW50
KCktPnBsYXRmb3JtTGF5ZXIoKS0+cmVwbGFjZUNoaWxkKG1fdHJhbnNmb3JtTGF5ZXIsIG1fbGF5
ZXIpOwogCiAgICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7CiAgICAg
ICAgIG1fdHJhbnNmb3JtTGF5ZXIudHJhbnNmZXJBbmltYXRpb25zVG8oJm1fbGF5ZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCmluZGV4IGM1NTVhZTE4ZTIyOTdhZGJi
NGJiNWEwMjdjYmE2OTQ3MzA1ZDc2NDcuLmVlNjBkMjEzNzJlMTBiZTZiNjk5Y2M1MDhjYjM2ZjFk
ZGE2ZDI1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKQEAgLTEw
NywyNiArMTA3LDYgQEAgdm9pZCBXZWJMYXllcjo6aW52YWxpZGF0ZSgpCiAgICAgbV9wcml2YXRl
LT5zZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAotV2ViTGF5ZXIgV2ViTGF5ZXI6OnJvb3RMYXllcigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkxheWVyKGNvbnN0X2Nhc3Q8TGF5ZXJDaHJvbWl1bSo+
KG1fcHJpdmF0ZS0+cm9vdExheWVyKCkpKTsKLX0KLQotV2ViTGF5ZXIgV2ViTGF5ZXI6OnBhcmVu
dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkxheWVyKGNvbnN0X2Nhc3Q8TGF5ZXJDaHJvbWl1
bSo+KG1fcHJpdmF0ZS0+cGFyZW50KCkpKTsKLX0KLQotc2l6ZV90IFdlYkxheWVyOjpudW1iZXJP
ZkNoaWxkcmVuKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5jaGlsZHJlbigpLnNp
emUoKTsKLX0KLQotV2ViTGF5ZXIgV2ViTGF5ZXI6OmNoaWxkQXQoc2l6ZV90IGluZGV4KSBjb25z
dAotewotICAgIHJldHVybiBXZWJMYXllcihtX3ByaXZhdGUtPmNoaWxkcmVuKClbaW5kZXhdKTsK
LX0KLQogdm9pZCBXZWJMYXllcjo6YWRkQ2hpbGQoY29uc3QgV2ViTGF5ZXImIGNoaWxkKQogewog
ICAgIG1fcHJpdmF0ZS0+YWRkQ2hpbGQoY2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwCmluZGV4IDUzODExNzNlZjhlYzgwNTIzOGMzZjAxMzUz
NzNjNzgxM2E1ZjIwOTkuLjEyNDkwNDdkZTQzMDI3ZmI2OGRlZTVmY2JmZmQzNTNiZTBkMjBiNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAKQEAg
LTE4OSw0MiArMTg5LDQgQEAgVEVTVF9GKFdlYkxheWVyVGVzdCwgQ2xpZW50KQogICAgIEVYUEVD
VF9GQUxTRShjb250ZW50TGF5ZXIuZHJhd3NDb250ZW50KCkpOwogfQogCi1URVNUX0YoV2ViTGF5
ZXJUZXN0LCBIaWVyYXJjaHkpCi17Ci0gICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxl
Q29tcG9zaXRlKCkpLlRpbWVzKEFueU51bWJlcigpKTsKLSAgICBXZWJMYXllciBsYXllcjEgPSBX
ZWJMYXllcjo6Y3JlYXRlKCk7Ci0gICAgV2ViTGF5ZXIgbGF5ZXIyID0gV2ViTGF5ZXI6OmNyZWF0
ZSgpOwotCi0gICAgRVhQRUNUX1RSVUUobGF5ZXIxLnBhcmVudCgpLmlzTnVsbCgpKTsKLSAgICBF
WFBFQ1RfVFJVRShsYXllcjIucGFyZW50KCkuaXNOdWxsKCkpOwotCi0gICAgbGF5ZXIxLmFkZENo
aWxkKGxheWVyMik7Ci0gICAgRVhQRUNUX1RSVUUobGF5ZXIxLnBhcmVudCgpLmlzTnVsbCgpKTsK
LSAgICBFWFBFQ1RfRVEobGF5ZXIxLCBsYXllcjIucGFyZW50KCkpOwotCi0gICAgbGF5ZXIyLnJl
bW92ZUZyb21QYXJlbnQoKTsKLSAgICBFWFBFQ1RfVFJVRShsYXllcjIucGFyZW50KCkuaXNOdWxs
KCkpOwotCi0gICAgbGF5ZXIxLmFkZENoaWxkKGxheWVyMik7Ci0gICAgRVhQRUNUX0VRKGxheWVy
MSwgbGF5ZXIyLnBhcmVudCgpKTsKLSAgICBsYXllcjEucmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLSAg
ICBFWFBFQ1RfVFJVRShsYXllcjIucGFyZW50KCkuaXNOdWxsKCkpOwotCi0gICAgTW9ja1dlYkNv
bnRlbnRMYXllckNsaWVudCBjb250ZW50Q2xpZW50OwotICAgIEVYUEVDVF9DQUxMKGNvbnRlbnRD
bGllbnQsIHBhaW50Q29udGVudHMoXywgXywgXykpLlRpbWVzKEFueU51bWJlcigpKTsKLSAgICBX
ZWJDb250ZW50TGF5ZXIgY29udGVudExheWVyID0gV2ViQ29udGVudExheWVyOjpjcmVhdGUoJmNv
bnRlbnRDbGllbnQpOwotICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyIHRleHR1cmVMYXllciA9
IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoKTsKLQotICAgIHRleHR1cmVMYXllci5h
ZGRDaGlsZChjb250ZW50TGF5ZXIpOwotICAgIGNvbnRlbnRMYXllci5hZGRDaGlsZChsYXllcjEp
OwotICAgIGxheWVyMS5hZGRDaGlsZChsYXllcjIpOwotCi0gICAgLy8gUmVsZWFzZSByZWZlcmVu
Y2Ugb24gYWxsIGxheWVycywgY2hlY2tpbmcgdGhhdCBkZXN0cnVjdGlvbiAod2hpY2ggbWF5Ci0g
ICAgLy8gZ2VuZXJhdGUgY2FsbHMgdG8gdGhlIGNsaWVudCkgZG9lc24ndCBjcmFzaC4KLSAgICBs
YXllcjIucmVzZXQoKTsKLSAgICBsYXllcjEucmVzZXQoKTsKLSAgICBjb250ZW50TGF5ZXIucmVz
ZXQoKTsKLSAgICB0ZXh0dXJlTGF5ZXIucmVzZXQoKTsKLX0KLQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158861</attachid>
            <date>2012-08-16 11:30:51 -0700</date>
            <delta_ts>2012-08-17 17:15:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94229-20120816113016.patch</filename>
            <type>text/plain</type>
            <size>8583</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1Nzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBlMzc2MjA0MDdiZWZi
ODQwZjMwMmVjMjJlY2VmNGRmM2EwMTk4MTZiLi5hZjBlYTZmNzg4OWMzOWIyYzU1NDRjMjYwY2Qx
Y2NhOWYyYjExN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxOSBAQAogMjAxMi0wOC0xNiAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1
bV0gUmVtb3ZlIHVubmVjZXNzYXJ5IHRyZWUgaGllcmFyY2h5IGluc3BlY3Rpb24gQVBJcyBmcm9t
IFdlYkxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NDIyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFzIGl0IHR1cm5zIG91dCwgdGhlc2UgQVBJcyBhcmUgbmVlZGVkLiBXaXRob3V0IHRoZW0sIHRo
ZXJlIGlzIG5vIHdheSB0byByZS13cmFwIGFuIGV4aXN0aW5nIGxheWVyIHNvIHdlIGNhbgorICAg
ICAgICBrbm93IHRoYXQgd2hlbiBhbGwgV2ViTGF5ZXIgd3JhcHBlcnMgb2YgYSBnaXZlbiBsYXll
ciBnbyBhd2F5IHRoYXQgbGF5ZXIgd2lsbCBuZXZlciBiZSBleHBvc2VkIHRvIHRoZSBwdWJsaWMg
QVBJCisgICAgICAgIGFnYWluIGFuZCBydW4gYXBwcm9wcmlhdGUgY2xlYW51cCBjb2RlLgorCisg
ICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmg6CisgICAgICAgIChXZWJMYXllcik6
CisKKzIwMTItMDgtMTYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKwog
ICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBhbHdheXNSZXNlcnZlVGV4dHVyZXMgY29kZSAtIGl0
IGRvZXNuJ3QgZG8gYW55dGhpbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk0MTgzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3YjJkNDFkMGNiODUzYTVkZjYwZDEz
NzU1MzIwNTQ5ZGQzMzZiMzA5Li5iYWE0ZWE0Yjg0M2ZkMTRkNzU3YjU2N2ZlM2E2ZmQyY2RjNGEx
NjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAKIDIwMTItMDgtMTYgIEphbWVzIFJvYmlu
c29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSB1
bm5lY2Vzc2FyeSB0cmVlIGhpZXJhcmNoeSBpbnNwZWN0aW9uIEFQSXMgZnJvbSBXZWJMYXllcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQyMjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUd2VhayB1cGRh
dGVMYXllclByZXNlcnZlczNEKCkgbG9naWMgdG8gdXNlIHRoZSBleGlzdGluZyBHcmFwaGljc0xh
eWVyIHRyZWUgaGllcmFyY2h5IGluc3RlYWQgb2YgcHVsbGluZyB0aGUKKyAgICAgICAgaGllcmFy
Y2h5IG9mZiBvZiBXZWJMYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QpOgorCisyMDEyLTA4LTE2ICBK
YW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW2Nocm9taXVt
XSBSZW1vdmUgYWx3YXlzUmVzZXJ2ZVRleHR1cmVzIGNvZGUgLSBpdCBkb2Vzbid0IGRvIGFueXRo
aW5nCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDE4
MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDU1NjAzMmVlMWUxMDY0NjA2MzY5MzEz
ZDNmZDY4OTQzZDJjNDNiNDMuLjBiMjRkMDM0OTQxZDA1YmM1ZDllY2YyMmZhMTJjMjE4ZjEyOTM0
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTItMDgt
MTYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbY2hy
b21pdW1dIFJlbW92ZSB1bm5lY2Vzc2FyeSB0cmVlIGhpZXJhcmNoeSBpbnNwZWN0aW9uIEFQSXMg
ZnJvbSBXZWJMYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTQyMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZW1vdmUgZGVhZCBXZWJMYXllciBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMgYW5kIHRl
c3RzIG9mIHNhbWUuCisKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXIuY3BwOgorICAgICAgICAqIHRl
c3RzL1dlYkxheWVyVGVzdC5jcHA6CisKKzIwMTItMDgtMTYgIEphbWVzIFJvYmluc29uICA8amFt
ZXNyQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBhbHdheXNSZXNl
cnZlVGV4dHVyZXMgY29kZSAtIGl0IGRvZXNuJ3QgZG8gYW55dGhpbmcKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MTgzCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAppbmRleCBmMWI5ZGQzNWRhZTVkZDU2MDc0ZTBj
YmZlNTA5MWI4ZTVmNzA1NjQ5Li42NDMxZjg0OGM2YTk4ZjljNmViMjVjMWRjYWRjMmExMzYyM2Q2
NTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCkBAIC02
NywxMSArNjcsNiBAQCBwdWJsaWM6CiAgICAgLy8gU2V0cyB0aGUgZW50aXJlIGxheWVyIGFzIGlu
dmFsaWQsIGkuZS4gbmVlZHMgdG8gdXBkYXRlIGl0cyBjb250ZW50LgogICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBpbnZhbGlkYXRlKCk7CiAKLSAgICBXRUJLSVRfRVhQT1JUIFdlYkxheWVyIHJvb3RM
YXllcigpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgV2ViTGF5ZXIgcGFyZW50KCkgY29uc3Q7
Ci0gICAgV0VCS0lUX0VYUE9SVCBzaXplX3QgbnVtYmVyT2ZDaGlsZHJlbigpIGNvbnN0OwotICAg
IFdFQktJVF9FWFBPUlQgV2ViTGF5ZXIgY2hpbGRBdChzaXplX3QpIGNvbnN0OwotCiAgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIGFkZENoaWxkKGNvbnN0IFdlYkxheWVyJik7CiAgICAgV0VCS0lUX0VY
UE9SVCB2b2lkIGluc2VydENoaWxkKGNvbnN0IFdlYkxheWVyJiwgc2l6ZV90IGluZGV4KTsKICAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVwbGFjZUNoaWxkKGNvbnN0IFdlYkxheWVyJiByZWZlcmVu
Y2UsIGNvbnN0IFdlYkxheWVyJiBuZXdMYXllcik7CkBAIC05Miw4ICs4Nyw2IEBAIHB1YmxpYzoK
ICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgbWFza3NUb0JvdW5kcygpIGNvbnN0OwogCiAgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldE1hc2tMYXllcihjb25zdCBXZWJMYXllciYpOwotICAgIFdFQktJ
VF9FWFBPUlQgV2ViTGF5ZXIgbWFza0xheWVyKCkgY29uc3Q7Ci0KICAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0UmVwbGljYUxheWVyKGNvbnN0IFdlYkxheWVyJik7CiAKICAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgc2V0T3BhY2l0eShmbG9hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9t
aXVtLmNwcAppbmRleCBjMmNkMGY4ZTVhY2Y3ZWFhN2E0N2VmOWZlOWY0NTIyMjkxNTcwNjA5Li5m
YjA5MDBiYmMxYTc1N2MxZGEzYjgxY2NjYzcwMGJkOTQ0MmRiMmFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dy
YXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTc0MSwxNiArNzQxLDE2IEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNEKCkKICAgICAgICAgbV9sYXll
ci5zZXRDb250ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUoKSk7CiAKICAgICAgICAgLy8gTW92ZSB0
aGlzIGxheWVyIHRvIGJlIGEgY2hpbGQgb2YgdGhlIHRyYW5zZm9ybSBsYXllci4KLSAgICAgICAg
aWYgKCFtX2xheWVyLnBhcmVudCgpLmlzTnVsbCgpKQotICAgICAgICAgICAgbV9sYXllci5wYXJl
bnQoKS5yZXBsYWNlQ2hpbGQobV9sYXllciwgbV90cmFuc2Zvcm1MYXllcik7CisgICAgICAgIGlm
IChwYXJlbnQoKSkKKyAgICAgICAgICAgIHBhcmVudCgpLT5wbGF0Zm9ybUxheWVyKCktPnJlcGxh
Y2VDaGlsZChtX2xheWVyLCBtX3RyYW5zZm9ybUxheWVyKTsKICAgICAgICAgbV90cmFuc2Zvcm1M
YXllci5hZGRDaGlsZChtX2xheWVyKTsKIAogICAgICAgICB1cGRhdGVDaGlsZExpc3QoKTsKICAg
ICB9IGVsc2UgaWYgKCFtX3ByZXNlcnZlczNEICYmICFtX3RyYW5zZm9ybUxheWVyLmlzTnVsbCgp
KSB7CiAgICAgICAgIC8vIFJlbGFjZSB0aGUgdHJhbnNmb3JtTGF5ZXIgaW4gdGhlIHBhcmVudCB3
aXRoIHRoaXMgbGF5ZXIuCiAgICAgICAgIG1fbGF5ZXIucmVtb3ZlRnJvbVBhcmVudCgpOwotICAg
ICAgICBpZiAoIW1fdHJhbnNmb3JtTGF5ZXIucGFyZW50KCkuaXNOdWxsKCkpCi0gICAgICAgICAg
ICBtX3RyYW5zZm9ybUxheWVyLnBhcmVudCgpLnJlcGxhY2VDaGlsZChtX3RyYW5zZm9ybUxheWVy
LCBtX2xheWVyKTsKKyAgICAgICAgaWYgKHBhcmVudCgpKQorICAgICAgICAgICAgcGFyZW50KCkt
PnBsYXRmb3JtTGF5ZXIoKS0+cmVwbGFjZUNoaWxkKG1fdHJhbnNmb3JtTGF5ZXIsIG1fbGF5ZXIp
OwogCiAgICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7CiAgICAgICAg
IG1fdHJhbnNmb3JtTGF5ZXIudHJhbnNmZXJBbmltYXRpb25zVG8oJm1fbGF5ZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCmluZGV4IGM1NTVhZTE4ZTIyOTdhZGJiNGJi
NWEwMjdjYmE2OTQ3MzA1ZDc2NDcuLjM3ODk3ZTZmODEyYjE3MWY5MGYyMjY4ZWJjNTdkNTA2MTAz
Mzk3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKQEAgLTEwNywy
NiArMTA3LDYgQEAgdm9pZCBXZWJMYXllcjo6aW52YWxpZGF0ZSgpCiAgICAgbV9wcml2YXRlLT5z
ZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAotV2ViTGF5ZXIgV2ViTGF5ZXI6OnJvb3RMYXllcigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIFdlYkxheWVyKGNvbnN0X2Nhc3Q8TGF5ZXJDaHJvbWl1bSo+KG1f
cHJpdmF0ZS0+cm9vdExheWVyKCkpKTsKLX0KLQotV2ViTGF5ZXIgV2ViTGF5ZXI6OnBhcmVudCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkxheWVyKGNvbnN0X2Nhc3Q8TGF5ZXJDaHJvbWl1bSo+
KG1fcHJpdmF0ZS0+cGFyZW50KCkpKTsKLX0KLQotc2l6ZV90IFdlYkxheWVyOjpudW1iZXJPZkNo
aWxkcmVuKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5jaGlsZHJlbigpLnNpemUo
KTsKLX0KLQotV2ViTGF5ZXIgV2ViTGF5ZXI6OmNoaWxkQXQoc2l6ZV90IGluZGV4KSBjb25zdAot
ewotICAgIHJldHVybiBXZWJMYXllcihtX3ByaXZhdGUtPmNoaWxkcmVuKClbaW5kZXhdKTsKLX0K
LQogdm9pZCBXZWJMYXllcjo6YWRkQ2hpbGQoY29uc3QgV2ViTGF5ZXImIGNoaWxkKQogewogICAg
IG1fcHJpdmF0ZS0+YWRkQ2hpbGQoY2hpbGQpOwpAQCAtMjA3LDExICsxODcsNiBAQCB2b2lkIFdl
YkxheWVyOjpzZXRNYXNrTGF5ZXIoY29uc3QgV2ViTGF5ZXImIG1hc2tMYXllcikKICAgICBtX3By
aXZhdGUtPnNldE1hc2tMYXllcihyZWYudW53cmFwPExheWVyQ2hyb21pdW0+KCkpOwogfQogCi1X
ZWJMYXllciBXZWJMYXllcjo6bWFza0xheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViTGF5
ZXIobV9wcml2YXRlLT5tYXNrTGF5ZXIoKSk7Ci19Ci0KIHZvaWQgV2ViTGF5ZXI6OnNldFJlcGxp
Y2FMYXllcihjb25zdCBXZWJMYXllciYgcmVwbGljYUxheWVyKQogewogICAgIFdlYkxheWVyIHJl
ZiA9IHJlcGxpY2FMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvV2ViTGF5ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5
ZXJUZXN0LmNwcAppbmRleCA1MzgxMTczZWY4ZWM4MDUyMzhjM2YwMTM1MzczYzc4MTNhNWYyMDk5
Li42NjcyMDA0MTAzODU5NjM5YmVhNjIzY2NkZWY1MWI5MjMyMzBiNmQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwCkBAIC0xMzcsNyArMTM3LDYg
QEAgVEVTVF9GKFdlYkxheWVyVGVzdCwgQ2xpZW50KQogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50
LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKICAgICBsYXllci5zZXRN
YXNrTGF5ZXIob3RoZXJMYXllcik7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlv
bnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfRVEob3RoZXJMYXllciwgbGF5ZXIubWFza0xheWVy
KCkpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRp
bWVzKEF0TGVhc3QoMSkpOwogICAgIGZsb2F0IG9wYWNpdHkgPSAwLjEyM2Y7CkBAIC0xODksNDIg
KzE4OCw0IEBAIFRFU1RfRihXZWJMYXllclRlc3QsIENsaWVudCkKICAgICBFWFBFQ1RfRkFMU0Uo
Y29udGVudExheWVyLmRyYXdzQ29udGVudCgpKTsKIH0KIAotVEVTVF9GKFdlYkxheWVyVGVzdCwg
SGllcmFyY2h5KQotewotICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0
ZSgpKS5UaW1lcyhBbnlOdW1iZXIoKSk7Ci0gICAgV2ViTGF5ZXIgbGF5ZXIxID0gV2ViTGF5ZXI6
OmNyZWF0ZSgpOwotICAgIFdlYkxheWVyIGxheWVyMiA9IFdlYkxheWVyOjpjcmVhdGUoKTsKLQot
ICAgIEVYUEVDVF9UUlVFKGxheWVyMS5wYXJlbnQoKS5pc051bGwoKSk7Ci0gICAgRVhQRUNUX1RS
VUUobGF5ZXIyLnBhcmVudCgpLmlzTnVsbCgpKTsKLQotICAgIGxheWVyMS5hZGRDaGlsZChsYXll
cjIpOwotICAgIEVYUEVDVF9UUlVFKGxheWVyMS5wYXJlbnQoKS5pc051bGwoKSk7Ci0gICAgRVhQ
RUNUX0VRKGxheWVyMSwgbGF5ZXIyLnBhcmVudCgpKTsKLQotICAgIGxheWVyMi5yZW1vdmVGcm9t
UGFyZW50KCk7Ci0gICAgRVhQRUNUX1RSVUUobGF5ZXIyLnBhcmVudCgpLmlzTnVsbCgpKTsKLQot
ICAgIGxheWVyMS5hZGRDaGlsZChsYXllcjIpOwotICAgIEVYUEVDVF9FUShsYXllcjEsIGxheWVy
Mi5wYXJlbnQoKSk7Ci0gICAgbGF5ZXIxLnJlbW92ZUFsbENoaWxkcmVuKCk7Ci0gICAgRVhQRUNU
X1RSVUUobGF5ZXIyLnBhcmVudCgpLmlzTnVsbCgpKTsKLQotICAgIE1vY2tXZWJDb250ZW50TGF5
ZXJDbGllbnQgY29udGVudENsaWVudDsKLSAgICBFWFBFQ1RfQ0FMTChjb250ZW50Q2xpZW50LCBw
YWludENvbnRlbnRzKF8sIF8sIF8pKS5UaW1lcyhBbnlOdW1iZXIoKSk7Ci0gICAgV2ViQ29udGVu
dExheWVyIGNvbnRlbnRMYXllciA9IFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKCZjb250ZW50Q2xp
ZW50KTsKLSAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllciB0ZXh0dXJlTGF5ZXIgPSBXZWJFeHRl
cm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKCk7Ci0KLSAgICB0ZXh0dXJlTGF5ZXIuYWRkQ2hpbGQo
Y29udGVudExheWVyKTsKLSAgICBjb250ZW50TGF5ZXIuYWRkQ2hpbGQobGF5ZXIxKTsKLSAgICBs
YXllcjEuYWRkQ2hpbGQobGF5ZXIyKTsKLQotICAgIC8vIFJlbGVhc2UgcmVmZXJlbmNlIG9uIGFs
bCBsYXllcnMsIGNoZWNraW5nIHRoYXQgZGVzdHJ1Y3Rpb24gKHdoaWNoIG1heQotICAgIC8vIGdl
bmVyYXRlIGNhbGxzIHRvIHRoZSBjbGllbnQpIGRvZXNuJ3QgY3Jhc2guCi0gICAgbGF5ZXIyLnJl
c2V0KCk7Ci0gICAgbGF5ZXIxLnJlc2V0KCk7Ci0gICAgY29udGVudExheWVyLnJlc2V0KCk7Ci0g
ICAgdGV4dHVyZUxheWVyLnJlc2V0KCk7Ci19Ci0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159233</attachid>
            <date>2012-08-17 17:15:57 -0700</date>
            <delta_ts>2012-08-17 17:17:20 -0700</delta_ts>
            <desc>rebased and addresses feedback</desc>
            <filename>bug-94229-20120817171521.patch</filename>
            <type>text/plain</type>
            <size>200899</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBkY2RiNWVkZDAyZDlj
NmU4NDRiYmNiMzBhMjQ2NjQ2MTUzZTQ1ODg1Li4xZWVmZGE5OTlmNGJiMzU0YTU2Y2UzYTkzOWRj
NjM2YzI5YTEzMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMi0wOC0xNiAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gQ2hhbmdlIFdlYkxheWVyIGZyb20gYSBjb25jcmV0ZSB0eXBlIHRvIGEgcHVyZSB2aXJ0dWFs
IGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTQxNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGNoYW5nZXMgV2ViTGF5ZXIgZnJvbSBhIHZhbHVlIHR5cGUgdG8gYSBwdXJlIHZpcnR1
YWwgaW50ZXJmYWNlIGFuZCBjaGFuZ2VzIFdlYipMYXllcnMgZnJvbSBzdWJ0eXBlcyB0bworICAg
ICAgICBzdGFuZGFsb25lIHR5cGVzIHRoYXQgaGF2ZSBhIFdlYkxheWVyLiBUaGlzIGJldHRlciBp
c29sYXRlcyB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSB0aGUgaW50ZXJmYWNlIGFuZCwgc2luY2UK
KyAgICAgICAgaXQncyBub3QgcG9zc2libGUgdG8gcmUtd3JhcCBhbiBleGlzdGluZyBsYXllciwg
bWFrZXMgY2xlYW51cCBleHBsaWNpdCBpbnN0ZWFkIG9mIHJlcXVpcmluZyB0aGUgY2FsbGVyIHRv
IGludm9rZQorICAgICAgICBzcGVjaWFsIGNsZWFudXAgbWV0aG9kcyBiZWZvcmUgc2h1dGRvd24u
CisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmg6CisgICAgICAg
IChXZWJDb250ZW50TGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5h
bFRleHR1cmVMYXllci5oOgorICAgICAgICAoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJT1N1cmZhY2VMYXllci5oOgorICAgICAgICAoV2Vi
SU9TdXJmYWNlTGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJbWFnZUxheWVy
Lmg6CisgICAgICAgIChXZWJJbWFnZUxheWVyKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXIuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVyOjp+V2ViTGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJTY3JvbGxhYmxlTGF5ZXIuaDoKKyAgICAgICAgKFdlYlNjcm9sbGFibGVMYXllcik6
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhckxheWVyLmg6CisgICAgICAg
IChXZWJTY3JvbGxiYXJMYXllcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNvbGlk
Q29sb3JMYXllci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNvbGlkQ29sb3JM
YXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNvbGlkQ29sb3JMYXllcjo6fldlYlNvbGlkQ29s
b3JMYXllcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaDoKKyAg
ICAgICAgKFdlYlZpZGVvTGF5ZXIpOgorCiAyMDEyLTA4LTE3ICBaYWNoIEt1em5pYSAgPHpvcmtA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBTa2lhIE1hZ25pZmllciBm
aWx0ZXIgdG8gQ2hyb21pdW0gbGF5ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAwZjZiY2JjZTExNDE1NTBi
OGRjNjU5NGI3OWQxZDU2NGY2NzI2OS4uYzYzOTkzNDM2MjU1OWMzMmY4MmM5YzYyNWFhMGNjZjhl
MzQ1MTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxMi0wOC0xNiAgSmFtZXMg
Um9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ2hh
bmdlIFdlYkxheWVyIGZyb20gYSBjb25jcmV0ZSB0eXBlIHRvIGEgcHVyZSB2aXJ0dWFsIGludGVy
ZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQx
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHVwZGF0ZXMgV2ViQ29yZSBjb2RlIGZvciB0aGUgV2ViTGF5ZXIgaW50ZXJmYWNlIGNoYW5nZXMu
IENsYXNzZXMgdGhhdCBoYXZlIG93bmVyc2hpcCBvZiBzcGVjaWZpYyBsYXllcgorICAgICAgICB0
eXBlcyAoc3VjaCBhcyBEcmF3aW5nQnVmZmVyQ2hyb21pdW0sIENhbnZhczJETGF5ZXJCcmlkZ2Ug
YW5kIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0pIGhvbGQgb3duZXJzaGlwCisgICAgICAg
IG9mIGEgc3BlY2lmaWMgdHlwZSBhbmQgYSBwb2ludGVyIHRvIHRoZSBXZWJMYXllciB0byBHcmFw
aGljc0xheWVyQ2hyb21pdW0gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIGxheWVyCisgICAg
ICAgIHRyZWUuIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSBob2xkcyBhIFdlYkNvbnRlbnRMYXllciBh
bmQgKG9wdGlvbmFsbHkpIGEgV2ViSW1hZ2VMYXllciBhbmQgV2ViTGF5ZXIgKGZvcgorICAgICAg
ICBtX3RyYW5zZm9ybUxheWVyKSBhbmQgYXNzZW1ibGVzIHRoZSBmaW5hbCBsYXllciB0cmVlLgor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvclByaXZh
dGU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZSk6CisgICAgICAgIChTY3JvbGxpbmdDb29y
ZGluYXRvclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cml2YXRlOjpzZXRTY3JvbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29y
ZGluYXRvclByaXZhdGU6OnNldEhvcml6b250YWxTY3JvbGxiYXJMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvclByaXZhdGU6OnNldFZlcnRpY2FsU2Nyb2xsYmFy
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlOjpz
Y3JvbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxhYmxlTGF5ZXJGb3JHcmFwaGlj
c0xheWVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2Ny
b2xsYmFyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNl
dFNjcm9sbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpz
ZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvcjo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6
c2V0TGF5ZXJJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJC
cmlkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWREZXZpY2VDb250ZXh0OjpB
Y2NlbGVyYXRlZERldmljZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRE
ZXZpY2VDb250ZXh0OjpjbGVhckxheWVyKToKKyAgICAgICAgKEFjY2VsZXJhdGVkRGV2aWNlQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZERldmljZUNvbnRleHQ6OnByZXBh
cmVGb3JEcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJCcmlkZ2U6OkNhbnZh
czJETGF5ZXJCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6
fkNhbnZhczJETGF5ZXJCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJy
aWRnZTo6c2tDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6
bGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6Y29udGV4dEFj
cXVpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQnJpZGdlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhbnZhczJETGF5ZXJC
cmlkZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZm
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyUHJpdmF0ZTo6
RHJhd2luZ0J1ZmZlclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlclBy
aXZhdGU6On5EcmF3aW5nQnVmZmVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5n
QnVmZmVyUHJpdmF0ZTo6bGF5ZXIpOgorICAgICAgICAoRHJhd2luZ0J1ZmZlclByaXZhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OkdyYXBoaWNz
TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06
On5HcmFwaGljc0xheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNocm9taXVtOjp1cGRhdGVOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OnJlbW92ZUZyb21QYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNocm9taXVtOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6Y2xlYXJCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c09wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ2hyb21pdW06OnNldEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNocm9taXVtOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE1hc2tMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldEJhY2tmYWNlVmlzaWJpbGl0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE9wYWNpdHkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRSZXBsaWNhdGVkQnlMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzTmVl
ZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0
TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb01l
ZGlhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVu
dHNUbyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZEFuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnBhdXNlQW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVtb3Zl
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c3Vz
cGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVt
OjpyZXN1bWVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6YWRkTGlua0hpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OmRpZEZpbmlzaExpbmtIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNocm9taXVtOjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0RGVidWdCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXREZWJ1Z0JvcmRlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNoaWxkTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVBbmNo
b3JQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0
ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlTWFza3NUb0JvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllcklzRHJhd2FibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllckJhY2tncm91bmRD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9t
aXVtOjpzZXR1cENvbnRlbnRzTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjpoYXNDb250ZW50c0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6Y29udGVudExheWVyKToKKyAgICAgICAgKEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmNv
bnRlbnRzTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cm9vdExheWVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6
CisKIDIwMTItMDgtMTcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIEFkZCBtaXNzaW5nIGhlYWRlciBmaWxlcyB0byAuZ3lwaSBhbmQg
bWlzc2luZyBpbmNsdWRlIHRvIENDVGlsZWRMYXllckltcGwuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IGY4ZGVlMTFiMjY1N2I5ZjIxMDExYTkzOTA4ZWQxMDMxYmRkNTgxZWEuLjg1
OTU2ODAzMzExOWZmNDJmMDUzYzE5OGE3ZTBmYTkxZTg4NmM4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjE1IEBACisyMDEyLTA4LTE2ICBKYW1lcyBSb2JpbnNvbiAg
PGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDaGFuZ2UgV2ViTGF5
ZXIgZnJvbSBhIGNvbmNyZXRlIHR5cGUgdG8gYSBwdXJlIHZpcnR1YWwgaW50ZXJmYWNlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDE3NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgdXBkYXRlcyB0
aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFdlYipMYXllciBmYW1pbHkgdG8gdGhlIG5ldyBkZXNp
Z24gYW5kIHVwZGF0ZXMgY2FsbGVycyBpbiBXZWJWaWV3SW1wbCAvCisgICAgICAgIE5vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdC4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogc3Jj
L05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KToKKyAgICAgICAgKFdl
YktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRTY3JvbGxMYXllcik6CisgICAgICAg
IChXZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0Vmlld3BvcnQpOgorICAgICAg
ICAoV2ViS2l0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNjcm9sbExheWVyKToKKyAgICAg
ICAgKiBzcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Lmg6CisgICAgICAgICogc3JjL1dlYkNv
bnRlbnRMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6OldlYkNvbnRlbnRM
YXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXJJbXBsOjp+V2ViQ29u
dGVudExheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6Omxh
eWVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXll
ckltcGw6OmNsZWFyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVySW1w
bDo6c2V0RG91YmxlU2lkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXJJbXBs
OjpzZXRDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVySW1w
bDo6c2V0VXNlTENEVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6
OnNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZW50TGF5ZXJJbXBsOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBzcmMvV2ViQ29u
dGVudExheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29udGVudExheWVySW1wbCk6CisgICAgICAg
ICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBz
cmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpXZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGw6On5XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmxheWVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpjbGVhckNsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6c2V0VGV4dHVyZUlkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRGbGlwcGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRVVlJlY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldE9wYXF1ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6c2V0UHJlbXVsdGlw
bGllZEFscGhhKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBs
Ojp3aWxsTW9kaWZ5VGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbDo6c2V0UmF0ZUxpbWl0Q29udGV4dCk6CisgICAgICAgIChXZWJUZXh0dXJlVXBk
YXRlckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0dXJlVXBkYXRlckltcGw6OldlYlRl
eHR1cmVVcGRhdGVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxh
eWVySW1wbDo6cHJlcGFyZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckltcGw6OmNvbnRleHQpOgorICAgICAgICAqIHNyYy9XZWJFeHRlcm5hbFRleHR1
cmVMYXllckltcGwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkNvbnRlbnRMYXllci5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBs
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFj
ZUxheWVyLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklPU3Vy
ZmFjZUxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJT1N1cmZhY2VMYXllcklt
cGw6OldlYklPU3VyZmFjZUxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYklPU3VyZmFj
ZUxheWVySW1wbDo6fldlYklPU3VyZmFjZUxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklPU3VyZmFjZUxheWVySW1wbDo6c2V0SU9TdXJmYWNlUHJvcGVydGllcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklPU3VyZmFjZUxheWVySW1wbDo6bGF5ZXIpOgorICAgICAgICAqIHNyYy9XZWJJ
T1N1cmZhY2VMYXllckltcGwuaDogQ29waWVkIGZyb20gU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJJbWFnZUxheWVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJJT1N1cmZhY2VMYXllckltcGwpOgorICAgICAgICAqIHNyYy9X
ZWJJbWFnZUxheWVySW1wbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTb2xpZENvbG9yTGF5ZXIuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW1hZ2VMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1h
Z2VMYXllckltcGw6OldlYkltYWdlTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1h
Z2VMYXllckltcGw6On5XZWJJbWFnZUxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYklt
YWdlTGF5ZXJJbXBsOjpsYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlTGF5ZXJJbXBs
OjpzZXRCaXRtYXApOgorICAgICAgICAqIHNyYy9XZWJJbWFnZUxheWVySW1wbC5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VMYXllci5jcHAuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJJbWFnZUxheWVy
SW1wbCk6CisgICAgICAgICogc3JjL1dlYkxheWVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBz
cmMvV2ViTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6V2ViTGF5ZXJJbXBsKToKKyAgICAgICAg
KFdlYktpdDo6V2ViTGF5ZXJJbXBsOjp+V2ViTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6aW52YWxpZGF0ZVJlY3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMYXllckltcGw6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllckltcGw6OmFkZENoaWxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpp
bnNlcnRDaGlsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6cmVwbGFjZUNoaWxk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRDaGlsZHJlbik6CisgICAgICAg
IChXZWJLaXQ6OldlYkxheWVySW1wbDo6cmVtb3ZlRnJvbVBhcmVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVySW1wbDo6cmVtb3ZlQWxsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllckltcGw6OnNldEFuY2hvclBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJ
bXBsOjphbmNob3JQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0QW5j
aG9yUG9pbnRaKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjphbmNob3JQb2ludFop
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldEJvdW5kcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVySW1wbDo6Ym91bmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJ
bXBsOjpzZXRNYXNrc1RvQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpt
YXNrc1RvQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRNYXNrTGF5
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldFJlcGxpY2FMYXllcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0T3BhY2l0eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVySW1wbDo6b3BhY2l0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1w
bDo6c2V0T3BhcXVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpvcGFxdWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTGF5ZXJJbXBsOjpwb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
SW1wbDo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcklt
cGw6OnN1YmxheWVyVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpz
ZXRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0RHJhd3NDb250ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpkcmF3c0NvbnRlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllckltcGw6OnNldFByZXNlcnZlczNEKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJJbXBsOjpzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllckltcGw6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxheWVySW1wbDo6c2V0RmlsdGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6
c2V0QmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNl
dERlYnVnQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldERl
YnVnQm9yZGVyV2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldERlYnVn
TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0QW5pbWF0aW9uRGVsZWdh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OmFkZEFuaW1hdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6cmVtb3ZlQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTGF5ZXJJbXBsOjpwYXVzZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxheWVySW1wbDo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXll
ckltcGw6OnJlc3VtZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6
Omhhc0FjdGl2ZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6dHJh
bnNmZXJBbmltYXRpb25zVG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldEZv
cmNlUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6Y2xlYXJS
ZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRTY3JvbGxQ
b3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0U2Nyb2xsYWJsZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVy
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0U2hvdWxkU2Nyb2xsT25NYWlu
VGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXROb25GYXN0U2Nyb2xs
YWJsZVJlZ2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0SXNDb250YWlu
ZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBs
OjpzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcklt
cGw6OmxheWVyKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkxheWVySW1wbCk6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJl
ZVZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpzZXRSb290TGF5
ZXIpOgorICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHNyYy9XZWJN
ZWRpYVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXll
ckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpyZXBhaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsOjpzZXRPcGFxdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YVBsYXllckNsaWVudEltcGw6OmFjY2VsZXJhdGVkUmVuZGVyaW5nSW5Vc2UpOgorICAgICAgICAq
IHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5nVGV4dHVy
ZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2V0QmFja2lu
Z0lPU3VyZmFjZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6
Y29tbWl0QmFja2luZ1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWlu
ZXJJbXBsOjpzZXRPcGFxdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJ
bXBsOjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luQ29udGFpbmVySW1w
bC5oOgorICAgICAgICAoV2ViUGx1Z2luQ29udGFpbmVySW1wbCk6CisgICAgICAgICogc3JjL1dl
YlNjcm9sbGFibGVMYXllckltcGwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVyLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNjcm9sbGFibGVMYXllcjo6c2V0U2Nyb2xsUG9zaXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldFNjcm9sbGFibGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldFNob3VsZFNjcm9sbE9u
TWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGFibGVMYXllcjo6c2V0Tm9u
RmFzdFNjcm9sbGFibGVSZWdpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxhYmxlTGF5
ZXI6OnNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNjcm9sbGFibGVMYXllcjo6c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKToKKyAgICAg
ICAgKiBzcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGJhckxheWVyLmNwcC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJMYXllckltcGw6OldlYlNjcm9sbGJhckxheWVySW1wbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVySW1wbDo6fldlYlNjcm9sbGJhckxh
eWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVySW1wbDo6bGF5ZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJMYXllckltcGw6OnNldFNjcm9sbExheWVy
KToKKyAgICAgICAgKiBzcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuaC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNjcm9sbGJhckxh
eWVySW1wbCk6CisgICAgICAgICogc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTb2xpZENvbG9yTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNvbGlkQ29sb3JMYXllckltcGw6OldlYlNvbGlkQ29sb3JMYXllckltcGwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpsYXllcik6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpzZXRCYWNr
Z3JvdW5kQ29sb3IpOgorICAgICAgICAqIHNyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTb2xpZENv
bG9yTGF5ZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlkZW9MYXllckltcGwuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVyLmNwcC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvTGF5ZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvTGF5ZXJJbXBsOjpXZWJWaWRlb0xheWVySW1wbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvTGF5ZXJJbXBsOjp+V2ViVmlkZW9MYXllckltcGwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0xheWVySW1wbDo6bGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWRlb0xheWVySW1wbDo6YWN0aXZlKToKKyAgICAgICAgKiBzcmMvV2ViVmlk
ZW9MYXllckltcGwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZGVvTGF5ZXIuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViVmlkZW9MYXllckltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRSb290R3JhcGhpY3NMYXllcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAg
KiB0ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRF
U1QpOgorICAgICAgICAqIHRlc3RzL1dlYkxheWVyVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMv
V2ViTGF5ZXJUcmVlVmlld1Rlc3QuY3BwOgorCiAyMDEyLTA4LTE3ICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTI1OTIyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJDb250ZW50TGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29udGVudExheWVyLmgKaW5kZXggNzMzNmJmYWJjZDc0NjE4MjE4YjlkZWRlYmEwMWJjMjczMjMy
NmM2Ny4uNDUzODFlZTkzZmYwNjE4MGM1YzFhYjVkOGEwMzA1NjlmM2NkNTM1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaAorKysg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oCkBAIC0y
OSw1MyArMjksMzYgQEAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJTY3Jv
bGxhYmxlTGF5ZXIuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ29udGVudExheWVy
Q2hyb21pdW07Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29udGVudExheWVy
Q2xpZW50OwotY2xhc3MgV2ViQ29udGVudExheWVySW1wbDsKIAotY2xhc3MgV2ViQ29udGVudExh
eWVyIDogcHVibGljIFdlYlNjcm9sbGFibGVMYXllciB7CitjbGFzcyBXZWJDb250ZW50TGF5ZXIg
ewogcHVibGljOgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkNvbnRlbnRMYXllciBjcmVh
dGUoV2ViQ29udGVudExheWVyQ2xpZW50Kik7CisgICAgLy8gVGhlIGNsaWVudCBtdXN0IG91dGxp
dmUgdGhlIFdlYkNvbnRlbnRMYXllci4KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJDb250
ZW50TGF5ZXIqIGNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqKTsKIAotICAgIFdlYkNvbnRl
bnRMYXllcigpIHsgfQotICAgIFdlYkNvbnRlbnRMYXllcihjb25zdCBXZWJDb250ZW50TGF5ZXIm
IGxheWVyKSA6IFdlYlNjcm9sbGFibGVMYXllcihsYXllcikgeyB9CiAgICAgdmlydHVhbCB+V2Vi
Q29udGVudExheWVyKCkgeyB9Ci0gICAgV2ViQ29udGVudExheWVyJiBvcGVyYXRvcj0oY29uc3Qg
V2ViQ29udGVudExheWVyJiBsYXllcikKLSAgICB7Ci0gICAgICAgIFdlYkxheWVyOjphc3NpZ24o
bGF5ZXIpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQogCi0gICAgLy8gQ2FsbGVkIHdo
ZW4gdGhlIFdlYkNvbnRlbnRMYXllckNsaWVudCBpcyBnb2luZyBhd2F5IGFuZCBzaG91bGQgbm90
IGJlIHVzZWQuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGNsZWFyQ2xpZW50KCk7CisgICAgLy8g
VGhlIFdlYkNvbnRlbnRMYXllciBoYXMgb3duZXJzaGlwIG9mIHRoaXMgd3JhcHBlci4KKyAgICB2
aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpID0gMDsKIAogICAgIC8vIFNldCB0byB0cnVlIGlmIHRo
ZSBiYWNrc2lkZSBvZiB0aGlzIGxheWVyJ3MgY29udGVudHMgc2hvdWxkIGJlIHZpc2libGUgd2hl
biBjb21wb3NpdGVkLgogICAgIC8vIERlZmF1bHRzIHRvIGZhbHNlLgotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXREb3VibGVTaWRlZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RG91Ymxl
U2lkZWQoYm9vbCkgPSAwOwogCiAgICAgLy8gU2V0IHRvIGFwcGx5IGEgc2NhbGUgZmFjdG9yIHVz
ZWQgd2hlbiBwYWludGluZyBhbmQgZHJhd2luZyB0aGlzIGxheWVyJ3MgY29udGVudC4gRGVmYXVs
dHMgdG8gMS4wLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCkgPSAwOwogCiAgICAg
Ly8gU2V0IHRvIHJlbmRlciB0ZXh0IGluIHRoaXMgbGF5ZXIgd2l0aCBMQ0QgYW50aWFsaWFzaW5n
LiBPbmx5IHNldCBpZiB5b3Uga25vdyB0aGF0IHRoaXMgbGF5ZXIgd2lsbCBiZQogICAgIC8vIGRy
YXduIGluIGEgd2F5IHdoZXJlIHRoaXMgbWFrZXMgc2Vuc2UgLSBpLmUuIG9wYXF1ZSBiYWNrZ3Jv
dW5kLCBub3Qgcm90YXRlZCBvciBzY2FsZWQsIGV0Yy4KICAgICAvLyBEZWZhdWx0cyB0byBmYWxz
ZTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VXNlTENEVGV4dChib29sKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0VXNlTENEVGV4dChib29sKSA9IDA7CiAKICAgICAvLyBTZXQgdG8gZHJhdyBh
IHN5c3RlbS1kZWZpbmVkIGNoZWNrZXJib2FyZCBpZiB0aGUgY29tcG9zaXRvciB3b3VsZCBvdGhl
cndpc2UgZHJhdyBhIHRpbGUgaW4gdGhpcyBsYXllcgogICAgIC8vIGFuZCB0aGUgYWN0dWFsIGNv
bnRlbnRzIGFyZSB1bmF2YWlsYWJsZS4gSWYgZmFsc2UsIHRoZSBjb21wb3NpdG9yIHdpbGwgZHJh
dyB0aGUgbGF5ZXIncyBiYWNrZ3JvdW5kIGNvbG9yCiAgICAgLy8gZm9yIHRoZXNlIHRpbGVzLgog
ICAgIC8vIERlZmF1bHRzIHRvIGZhbHNlLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXREcmF3
Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKGJvb2wpOwotCi0jaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCi0gICAgV2ViQ29udGVudExheWVyKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpDb250ZW50TGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBXZWJDb250ZW50TGF5ZXImIG9wZXJhdG9y
PShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW0+Jik7
Ci0gICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9t
aXVtPigpIGNvbnN0OwotI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHNldERyYXdDaGVja2VyYm9h
cmRGb3JNaXNzaW5nVGlsZXMoYm9vbCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFs
VGV4dHVyZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4dGVy
bmFsVGV4dHVyZUxheWVyLmgKaW5kZXggYjE5YzA1ZjNlM2IwOThkOGViMDNlZTU2MTI3OTY0NmI5
MDgxZjQ1NC4uOTJkMmM0ZmVlODc2YTkxYmRiZjYwYmUzODUxMzczY2NlZjcxYjE3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVM
YXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXIuaApAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlICJXZWJGbG9hdFJlY3Qu
aCIKICNpbmNsdWRlICJXZWJMYXllci5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBU
ZXh0dXJlTGF5ZXJDaHJvbWl1bTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdl
YkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50OwpAQCAtNDQsNDkgKzQwLDQzIEBAIGNsYXNzIFdl
YkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50OwogLy8gV2hlbiBpbiBzaW5nbGUtdGhyZWFkIG1v
ZGUsIHRoaXMgbWVhbnMgZHVyaW5nIFdlYkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0ZSgpLgogLy8g
V2hlbiB1c2luZyB0aGUgdGhyZWFkZWQgY29tcG9zaXRvciwgdGhpcyBjYW4gbWVhbiBhdCBhbiBh
cmJpdHJhcnkgdGltZSB1bnRpbAogLy8gdGhlIFdlYkxheWVyVHJlZVZpZXcgaXMgZGVzdHJveWVk
LgotY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xh
c3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgewogcHVibGljOgogICAgIC8vIFRoZSBvd25lciBv
ZiB0aGlzIGxheWVyIG1heSBvcHRpb25hbGx5IHByb3ZpZGUgYSBjbGllbnQuIFRoaXMgY2xpZW50
IHdpbGwKICAgICAvLyBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIGNvbXBvc2l0b3Igd2lzaGVzIHRv
IHByb2R1Y2UgYSBuZXcgZnJhbWUgYW5kIGNhbgogICAgIC8vIHByb3ZpZGUgYSBuZXcgZnJvbnQg
YnVmZmVyIHRleHR1cmUgSUQuIFRoaXMgaXMgdXNlZnVsIGlmIHRoZSBjbGllbnQgd2FudHMgdG8K
ICAgICAvLyBpbXBsZW1lbnQgYSBkb3VibGUtYnVmZmVyaW5nIHNjaGVtZSB0aGF0IGlzIHN5bmNo
cm9uaXplZCB3aXRoIHRoZSBjb21wb3NpdG9yLCBmb3IgaW5zdGFuY2UuCi0gICAgV0VCS0lUX0VY
UE9SVCBzdGF0aWMgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgY3JlYXRlKFdlYkV4dGVybmFsVGV4
dHVyZUxheWVyQ2xpZW50KiA9IDApOwotCi0gICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIGNsaWVu
dCBmb3IgdGhpcyBsYXllciBpcyBnb2luZyBhd2F5IGFuZCBzaG91bGRuJ3QgYmUgdXNlZC4KLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgY2xlYXJDbGllbnQoKTsKKyAgICAvLyBUaGUgY2xpZW50IG11
c3Qgb3V0bGl2ZSB0aGUgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuCisgICAgV0VCS0lUX0VYUE9S
VCBzdGF0aWMgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIqIGNyZWF0ZShXZWJFeHRlcm5hbFRleHR1
cmVMYXllckNsaWVudCogPSAwKTsKIAotICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKCkgeyB9
CiAgICAgdmlydHVhbCB+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoKSB7IH0KIAorICAgIHZpcnR1
YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAwOworCiAgICAgLy8gU2V0cyB0aGUgdGV4dHVyZSBpZCB0
aGF0IHJlcHJlc2VudHMgdGhlIGxheWVyLCBpbiB0aGUgbmFtZXNwYWNlIG9mIHRoZQogICAgIC8v
IGNvbXBvc2l0b3IgY29udGV4dC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VGV4dHVyZUlk
KHVuc2lnbmVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkKSA9IDA7
CiAKICAgICAvLyBTZXRzIHdoZXRoZXIgb3Igbm90IHRoZSB0ZXh0dXJlIHNob3VsZCBiZSBmbGlw
cGVkIGluIHRoZSBZIGRpcmVjdGlvbiB3aGVuCiAgICAgLy8gcmVuZGVyZWQuCi0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldEZsaXBwZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldEZsaXBw
ZWQoYm9vbCkgPSAwOwogCiAgICAgLy8gU2V0cyB0aGUgcmVjdCBpbiBVViBzcGFjZSBvZiB0aGUg
dGV4dHVyZSB0aGF0IGlzIG1hcHBlZCB0byB0aGUgbGF5ZXIKICAgICAvLyBib3VuZHMuCi0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldFVWUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VVZSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYpID0gMDsKIAogICAgIC8v
IFNldHMgd2hldGhlciBldmVyeSBwaXhlbCBpbiB0aGlzIGxheWVyIGlzIG9wYXF1ZS4gRGVmYXVs
dHMgdG8gZmFsc2UuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYXF1ZShib29sKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpID0gMDsKIAogICAgIC8vIFNldHMgd2hldGhl
ciB0aGlzIGxheWVyJ3MgdGV4dHVyZSBoYXMgcHJlbXVsdGlwbGllZCBhbHBoYSBvciBub3QuIERl
ZmF1bHRzIHRvIHRydWUuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFByZW11bHRpcGxpZWRB
bHBoYShib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbXVsdGlwbGllZEFscGhhKGJvb2wp
ID0gMDsKIAogICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBtb3N0IHJlY2VudGx5IHByb3ZpZGVk
IHRleHR1cmUgSUQgaXMgYWJvdXQgdG8gYmUgbW9kaWZpZWQgZXh0ZXJuYWxseS4KLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgd2lsbE1vZGlmeVRleHR1cmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2ls
bE1vZGlmeVRleHR1cmUoKSA9IDA7CiAKICAgICAvLyBTZXRzIHdoZXRoZXIgdGhpcyBjb250ZXh0
IHNob3VsZCBiZSByYXRlIGxpbWl0ZWQgYnkgdGhlIGNvbXBvc2l0b3IuIFJhdGUgbGltaXRpbmcg
d29ya3MgYnkgYmxvY2tpbmcKICAgICAvLyBpbnZhbGlkYXRlKCkgYW5kIGludmFsaWRhdGVSZWN0
KCkgY2FsbHMgaWYgdGhlIGNvbXBvc2l0b3IgaXMgdG9vIG1hbnkgZnJhbWVzIGJlaGluZC4KLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmF0ZUxpbWl0Q29udGV4dChib29sKTsKLQotcHJpdmF0
ZToKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBleHBsaWNpdCBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllcihQYXNzUmVmUHRyPFdlYkNvcmU6OlRleHR1cmVMYXllckNocm9taXVtPik7Ci0j
ZW5kaWYKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZUxpbWl0Q29udGV4dChib29sKSA9IDA7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViSU9TdXJmYWNlTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViSU9TdXJmYWNlTGF5ZXIuaAppbmRleCAzN2E0YzY3OTJjMWM3NmVlY2Mw
YzYwYzBmM2ZjOWQwZWEzZDMzOWJiLi5iY2YxNDExMmFhNGI5NDkwZDAzNjlkYmE0YTdjZjVhMDg3
NjZmMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklP
U3VyZmFjZUxheWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJ
T1N1cmZhY2VMYXllci5oCkBAIC0zMCwyNyArMzAsMTkgQEAKICNpbmNsdWRlICJXZWJMYXllci5o
IgogI2luY2x1ZGUgIldlYlNpemUuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSU9T
dXJmYWNlTGF5ZXJDaHJvbWl1bTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIFRoaXMg
Y2xhc3MgcmVwcmVzZW50cyBhIGxheWVyIHRoYXQgcmVuZGVycyBhbiBleHRlcm5hbGx5IG1hbmFn
ZWQgSU9TdXJmYWNlLgotY2xhc3MgV2ViSU9TdXJmYWNlTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIg
eworY2xhc3MgV2ViSU9TdXJmYWNlTGF5ZXIgewogcHVibGljOgotICAgIFdFQktJVF9FWFBPUlQg
c3RhdGljIFdlYklPU3VyZmFjZUxheWVyIGNyZWF0ZSgpOworICAgIFdFQktJVF9FWFBPUlQgc3Rh
dGljIFdlYklPU3VyZmFjZUxheWVyKiBjcmVhdGUoKTsKIAotICAgIFdlYklPU3VyZmFjZUxheWVy
KCkgeyB9CiAgICAgdmlydHVhbCB+V2ViSU9TdXJmYWNlTGF5ZXIoKSB7IH0KIAotICAgIC8vIFNl
dHMgdGhlIElPIHN1cmZhY2UgaWQgdGhhdCByZXByZXNlbnRzIHRoaXMgbGF5ZXIncyBjb250ZW50
cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SU9TdXJmYWNlUHJvcGVydGllcyh1bnNpZ25l
ZCBpb1N1cmZhY2VJZCwgV2ViU2l6ZSk7CisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9
IDA7CiAKLXByaXZhdGU6Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQg
V2ViSU9TdXJmYWNlTGF5ZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpJT1N1cmZhY2VMYXllckNocm9t
aXVtPik7Ci0jZW5kaWYKKyAgICAvLyBTZXRzIHRoZSBJTyBzdXJmYWNlIGlkIHRoYXQgcmVwcmVz
ZW50cyB0aGlzIGxheWVyJ3MgY29udGVudHMuCisgICAgdmlydHVhbCB2b2lkIHNldElPU3VyZmFj
ZVByb3BlcnRpZXModW5zaWduZWQgaW9TdXJmYWNlSWQsIFdlYlNpemUpID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJJbWFnZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkltYWdlTGF5ZXIuaAppbmRleCBhOTE2ODM1ZjIwNWJjMDZmNTg0ZDQyMzMyYTQxZTRjNjBl
OTkwMGI0Li5jNzczN2YzMWEzNzk2ZmQwNGRjZGM0YmRlZjI2YjVhYjU2MGMwMTZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlTGF5ZXIuaApAQCAtMzAs
MjQgKzMwLDE2IEBACiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXIu
aCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW1hZ2VMYXllckNocm9taXVtOwotfQot
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViSW1hZ2VMYXllciA6IHB1YmxpYyBXZWJM
YXllciB7CitjbGFzcyBXZWJJbWFnZUxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JU
IHN0YXRpYyBXZWJJbWFnZUxheWVyIGNyZWF0ZSgpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGlj
IFdlYkltYWdlTGF5ZXIqIGNyZWF0ZSgpOwogCi0gICAgV2ViSW1hZ2VMYXllcigpIHsgfQogICAg
IHZpcnR1YWwgfldlYkltYWdlTGF5ZXIoKSB7IH0KIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXRCaXRtYXAoU2tCaXRtYXApOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgZXhw
bGljaXQgV2ViSW1hZ2VMYXllcihQYXNzUmVmUHRyPFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1
bT4pOwotI2VuZGlmCisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldEJpdG1hcChTa0JpdG1hcCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxh
eWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKaW5kZXgg
NjQzMWY4NDhjNmE5OGY5YzZlYjI1YzFkY2FkYzJhMTM2MjNkNjUxZi4uYWZlNTliMTlkNGExNzk5
ZmM4MTJlMDlkYjk3ZTU0YzA2YjM5ODhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXIuaApAQCAtMjksODggKzI5LDgzIEBACiAjaW5jbHVkZSAiV2ViQW5pbWF0
aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29sb3IuaCIKICNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNp
bmNsdWRlICJXZWJQb2ludC5oIgogI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRl
ICJXZWJSZWN0LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVmVjdG9y
LmgiCiAKIGNsYXNzIFNrTWF0cml4NDQ7Ci1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIExheWVy
Q2hyb21pdW07IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBbmltYXRpb25EZWxl
Z2F0ZTsKIGNsYXNzIFdlYkZpbHRlck9wZXJhdGlvbnM7CiBjbGFzcyBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeDsKK2NsYXNzIFdlYlNjcm9sbGFibGVMYXllcjsKIHN0cnVjdCBXZWJGbG9hdFBvaW50
Owogc3RydWN0IFdlYkZsb2F0UmVjdDsKIHN0cnVjdCBXZWJTaXplOwogCitjbGFzcyBXZWJMYXll
ckltcGw7CisKIGNsYXNzIFdlYkxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0
YXRpYyBXZWJMYXllciBjcmVhdGUoKTsKLQotICAgIFdlYkxheWVyKCkgeyB9Ci0gICAgV2ViTGF5
ZXIoY29uc3QgV2ViTGF5ZXImIGxheWVyKSB7IGFzc2lnbihsYXllcik7IH0KLSAgICB2aXJ0dWFs
IH5XZWJMYXllcigpIHsgcmVzZXQoKTsgfQotICAgIFdlYkxheWVyJiBvcGVyYXRvcj0oY29uc3Qg
V2ViTGF5ZXImIGxheWVyKQotICAgIHsKLSAgICAgICAgYXNzaWduKGxheWVyKTsKLSAgICAgICAg
cmV0dXJuICp0aGlzOwotICAgIH0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpdmF0ZS5pc051bGwoKTsgfQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViTGF5ZXImKTsKLSAgICBXRUJLSVRf
RVhQT1JUIGJvb2wgZXF1YWxzKGNvbnN0IFdlYkxheWVyJikgY29uc3Q7CisjZGVmaW5lIFdFQkxB
WUVSX0lTX1BVUkVfVklSVFVBTAorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkxheWVyKiBj
cmVhdGUoKTsKKworICAgIHZpcnR1YWwgfldlYkxheWVyKCkgeyB9CiAKICAgICAvLyBTZXRzIGEg
cmVnaW9uIG9mIHRoZSBsYXllciBhcyBpbnZhbGlkLCBpLmUuIG5lZWRzIHRvIHVwZGF0ZSBpdHMg
Y29udGVudC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgV2Vi
RmxvYXRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkZs
b2F0UmVjdCYpID0gMDsKIAogICAgIC8vIFNldHMgdGhlIGVudGlyZSBsYXllciBhcyBpbnZhbGlk
LCBpLmUuIG5lZWRzIHRvIHVwZGF0ZSBpdHMgY29udGVudC4KLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgaW52YWxpZGF0ZSgpOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgPSAwOwogCi0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFkZENoaWxkKGNvbnN0IFdlYkxheWVyJik7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIGluc2VydENoaWxkKGNvbnN0IFdlYkxheWVyJiwgc2l6ZV90IGluZGV4
KTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVwbGFjZUNoaWxkKGNvbnN0IFdlYkxheWVyJiBy
ZWZlcmVuY2UsIGNvbnN0IFdlYkxheWVyJiBuZXdMYXllcik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldENoaWxkcmVuKGNvbnN0IFdlYlZlY3RvcjxXZWJMYXllcj4mKTsKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBy
ZW1vdmVBbGxDaGlsZHJlbigpOworICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBkbyBub3QgdGFrZSBv
d25lcnNoaXAgb2YgdGhlIFdlYkxheWVyKiBwYXJhbWV0ZXIuCisgICAgdmlydHVhbCB2b2lkIGFk
ZENoaWxkKFdlYkxheWVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGlsZChXZWJM
YXllciosIHNpemVfdCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlQ2hpbGQo
V2ViTGF5ZXIqIHJlZmVyZW5jZSwgV2ViTGF5ZXIqIG5ld0xheWVyKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldENoaWxkcmVuKGNvbnN0IFdlYlZlY3RvcjxXZWJMYXllcio+JikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tUGFyZW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVBbGxDaGlsZHJlbigpID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRBbmNo
b3JQb2ludChjb25zdCBXZWJGbG9hdFBvaW50Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJGbG9h
dFBvaW50IGFuY2hvclBvaW50KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEFuY2hvclBv
aW50KGNvbnN0IFdlYkZsb2F0UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCBXZWJGbG9hdFBvaW50
IGFuY2hvclBvaW50KCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFu
Y2hvclBvaW50WihmbG9hdCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBmbG9hdCBhbmNob3JQb2ludFoo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0KSA9IDA7Cisg
ICAgdmlydHVhbCBmbG9hdCBhbmNob3JQb2ludFooKSBjb25zdCA9IDA7CiAKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0Qm91bmRzKGNvbnN0IFdlYlNpemUmKTsKLSAgICBXRUJLSVRfRVhQT1JU
IFdlYlNpemUgYm91bmRzKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEJvdW5kcyhjb25z
dCBXZWJTaXplJikgPSAwOworICAgIHZpcnR1YWwgV2ViU2l6ZSBib3VuZHMoKSBjb25zdCA9IDA7
CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKTsKLSAgICBX
RUJLSVRfRVhQT1JUIGJvb2wgbWFza3NUb0JvdW5kcygpIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgbWFza3NUb0Jv
dW5kcygpIGNvbnN0ID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRNYXNrTGF5ZXIo
Y29uc3QgV2ViTGF5ZXImKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVwbGljYUxheWVy
KGNvbnN0IFdlYkxheWVyJik7CisgICAgdmlydHVhbCB2b2lkIHNldE1hc2tMYXllcihXZWJMYXll
ciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGljYUxheWVyKFdlYkxheWVyKikgPSAw
OwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpOwotICAgIFdFQktJ
VF9FWFBPUlQgZmxvYXQgb3BhY2l0eSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFj
aXR5KGZsb2F0KSA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBvcGFjaXR5KCkgY29uc3QgPSAwOwog
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYXF1ZShib29sKTsKLSAgICBXRUJLSVRfRVhQ
T1JUIGJvb2wgb3BhcXVlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29s
KSA9IDA7CisgICAgdmlydHVhbCBib29sIG9wYXF1ZSgpIGNvbnN0ID0gMDsKIAotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBXZWJGbG9hdFBvaW50Jik7Ci0gICAgV0VC
S0lUX0VYUE9SVCBXZWJGbG9hdFBvaW50IHBvc2l0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIHNldFBvc2l0aW9uKGNvbnN0IFdlYkZsb2F0UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCBX
ZWJGbG9hdFBvaW50IHBvc2l0aW9uKCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKTsKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmKTsKLSAgICBXRUJLSVRfRVhQT1JUIFNrTWF0cml4NDQgc3VibGF5ZXJUcmFuc2Zvcm0o
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgU2tN
YXRyaXg0NCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29u
c3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKSA9IDA7CisgICAgdmlydHVhbCBTa01hdHJpeDQ0
IHN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldFRyYW5zZm9ybShjb25zdCBTa01hdHJpeDQ0Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldFRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotICAgIFdFQktJ
VF9FWFBPUlQgU2tNYXRyaXg0NCB0cmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dFRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKKyAgICB2aXJ0
dWFsIFNrTWF0cml4NDQgdHJhbnNmb3JtKCkgY29uc3QgPSAwOwogCiAgICAgLy8gU2V0cyB3aGV0
aGVyIHRoZSBsYXllciBkcmF3cyBpdHMgY29udGVudCB3aGVuIGNvbXBvc2l0aW5nLgotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9S
VCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0Nv
bnRlbnQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCA9
IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9vbCk7CisgICAg
dmlydHVhbCB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpID0gMDsKIAogICAgIC8vIE1hcmsgdGhh
dCB0aGlzIGxheWVyIHNob3VsZCB1c2UgaXRzIHBhcmVudCdzIHRyYW5zZm9ybSBhbmQgZG91Ymxl
LXNpZGVkCiAgICAgLy8gcHJvcGVydGllcyBpbiBkZXRlcm1pbmluZyB0aGlzIGxheWVyJ3MgYmFj
a2ZhY2UgdmlzaWJpbGl0eSBpbnN0ZWFkIG9mCkBAIC0xMTksMTA1ICsxMTQsNjggQEAgcHVibGlj
OgogICAgIC8vIE5vdGU6IFRoaXMgQVBJIGlzIHRvIHdvcmsgYXJvdW5kIGlzc3VlcyB3aXRoIHZp
c2liaWxpdHkgdGhlIGhhbmRsaW5nIG9mCiAgICAgLy8gV2ViS2l0IGxheWVycyB0aGF0IGhhdmUg
YSBjb250ZW50cyBsYXllciAoY2FudmFzLCBwbHVnaW4sIFdlYkdMLCB2aWRlbywKICAgICAvLyBl
dGMpLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxp
dHkoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0
eShib29sKSA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QmFja2dyb3VuZENvbG9y
KFdlYkNvbG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9y
KSA9IDA7CiAKICAgICAvLyBDbGVhciB0aGUgZmlsdGVycyBpbiB1c2UgYnkgcGFzc2luZyBpbiBh
IG5ld2x5IGluc3RhbnRpYXRlZAogICAgIC8vIFdlYkZpbHRlck9wZXJhdGlvbnMgb2JqZWN0Lgot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlv
bnMmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRp
b25zJikgPSAwOwogCiAgICAgLy8gQXBwbHkgZmlsdGVycyB0byBwaXhlbHMgdGhhdCBzaG93IHRo
cm91Z2ggdGhlIGJhY2tncm91bmQgb2YgdGhpcyBsYXllci4KICAgICAvLyBOb3RlOiBUaGVzZSBm
aWx0ZXJzIGFyZSBvbmx5IHBvc3NpYmxlIG9uIGxheWVycyB0aGF0IGFyZSBkcmF3biBkaXJlY3Rs
eQogICAgIC8vIHRvIGEgcm9vdCByZW5kZXIgc3VyZmFjZSB3aXRoIGFuIG9wYXF1ZSBiYWNrZ3Jv
dW5kLiBUaGlzIG1lYW5zIGlmIGFuCiAgICAgLy8gYW5jZXN0b3Igb2YgdGhlIGJhY2tncm91bmQt
ZmlsdGVyZWQgbGF5ZXIgc2V0cyBjZXJ0YWluIHByb3BlcnRpZXMKICAgICAvLyAob3BhY2l0eSwg
dHJhbnNmb3JtcyksIGl0IG1heSBjb25mbGljdCBhbmQgaGlkZSB0aGUgYmFja2dyb3VuZCBmaWx0
ZXJzLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBX
ZWJGaWx0ZXJPcGVyYXRpb25zJik7CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRGaWx0
ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmKSA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0RGVidWdCb3JkZXJDb2xvcihjb25zdCBXZWJDb2xvciYpOwotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXREZWJ1Z0JvcmRlcldpZHRoKGZsb2F0KTsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0RGVidWdOYW1lKFdlYlN0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIHNldERlYnVn
Qm9yZGVyQ29sb3IoY29uc3QgV2ViQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERl
YnVnQm9yZGVyV2lkdGgoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdOYW1l
KFdlYlN0cmluZykgPSAwOwogCiAgICAgLy8gQW4gYW5pbWF0aW9uIGRlbGVnYXRlIGlzIG5vdGlm
aWVkIHdoZW4gYW5pbWF0aW9ucyBhcmUgc3RhcnRlZCBhbmQKICAgICAvLyBzdG9wcGVkLiBUaGUg
V2ViTGF5ZXIgZG9lcyBub3QgdGFrZSBvd25lcnNoaXAgb2YgdGhlIGRlbGVnYXRlLCBhbmQgaXQg
aXMKICAgICAvLyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNsaWVudCB0byByZXNldCB0aGUg
bGF5ZXIncyBkZWxlZ2F0ZSBiZWZvcmUKICAgICAvLyBkZWxldGluZyB0aGUgZGVsZWdhdGUuCi0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFuaW1hdGlvbkRlbGVnYXRlKFdlYkFuaW1hdGlvbkRl
bGVnYXRlKik7CisgICAgdmlydHVhbCB2b2lkIHNldEFuaW1hdGlvbkRlbGVnYXRlKFdlYkFuaW1h
dGlvbkRlbGVnYXRlKikgPSAwOwogCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgYW5pbWF0
aW9uIGNhbm5vdCBiZSBhZGRlZC4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgYWRkQW5pbWF0aW9u
KFdlYkFuaW1hdGlvbiopOworICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24oV2ViQW5pbWF0
aW9uKikgPSAwOwogCiAgICAgLy8gUmVtb3ZlcyBhbGwgYW5pbWF0aW9ucyB3aXRoIHRoZSBnaXZl
biBpZC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRp
b25JZCk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQp
ID0gMDsKIAogICAgIC8vIFJlbW92ZXMgYWxsIGFuaW1hdGlvbnMgd2l0aCB0aGUgZ2l2ZW4gaWQg
dGFyZ2V0aW5nIHRoZSBnaXZlbiBwcm9wZXJ0eS4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVt
b3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0
eSk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQsIFdl
YkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkpID0gMDsKIAogICAgIC8vIFBhdXNlcyBhbGwgYW5p
bWF0aW9ucyB3aXRoIHRoZSBnaXZlbiBpZC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcGF1c2VB
bmltYXRpb24oaW50IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCk7CisgICAgdmlydHVh
bCB2b2lkIHBhdXNlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQp
ID0gMDsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHN1c3BlbmQgYW5kIHJlc3Vt
ZSBhbGwgYW5pbWF0aW9ucy4gVGhlIGdpdmVuIHRpbWUKICAgICAvLyBpcyBhc3N1bWVkIHRvIHVz
ZSB0aGUgc2FtZSB0aW1lIGJhc2UgYXMgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkuCi0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNU
aW1lKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW9ucyhkb3VibGUgbW9u
b3RvbmljVGltZSk7CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSBt
b25vdG9uaWNUaW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoZG91
YmxlIG1vbm90b25pY1RpbWUpID0gMDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGxh
eWVyIGhhcyBhbnkgYWN0aXZlIGFuaW1hdGlvbnMgLSB1c2VmdWwgZm9yIHRlc3RzLgotICAgIFdF
QktJVF9FWFBPUlQgYm9vbCBoYXNBY3RpdmVBbmltYXRpb24oKTsKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzQWN0aXZlQW5pbWF0aW9uKCkgPSAwOwogCiAgICAgLy8gVHJhbnNmZXJzIGFsbCBhbmltYXRp
b25zIHJ1bm5pbmcgb24gdGhlIGN1cnJlbnQgbGF5ZXIuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHRyYW5zZmVyQW5pbWF0aW9uc1RvKFdlYkxheWVyKik7CisgICAgdmlydHVhbCB2b2lkIHRyYW5z
ZmVyQW5pbWF0aW9uc1RvKFdlYkxheWVyKikgPSAwOworCisgICAgLy8gU2Nyb2xsaW5nCisgICAg
dmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKFdlYlBvaW50KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRIYXZl
V2hlZWxFdmVudEhhbmRsZXJzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxk
U2Nyb2xsT25NYWluVGhyZWFkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFz
dFNjcm9sbGFibGVSZWdpb24oY29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+JikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoYm9vbCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCkgPSAwOwog
CiAgICAgLy8gRm9yY2VzIHRoaXMgbGF5ZXIgdG8gdXNlIGEgcmVuZGVyIHN1cmZhY2UuIFRoZXJl
IGlzIG5vIGJlbmVmaXQgaW4gZG9pbmcKICAgICAvLyBzbywgYnV0IHRoaXMgaXMgdG8gZmFjaWxp
dGF0ZSBiZW5jaG1hcmtzIGFuZCB0ZXN0cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Rm9y
Y2VSZW5kZXJTdXJmYWNlKGJvb2wpOwotCi0gICAgLy8gRHJvcHMgdGhpcyBsYXllcidzIHJlbmRl
ciBzdXJmYWNlLCBpZiBpdCBoYXMgb25lLiBVc2VkIHRvIGJyZWFrIGN5Y2xlcyBpbiBzb21lCi0g
ICAgLy8gY2FzZXMgLSBpZiB5b3UgYXJlbid0IHN1cmUsIHlvdSBkb24ndCBuZWVkIHRvIGNhbGwg
dGhpcy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgY2xlYXJSZW5kZXJTdXJmYWNlKCk7Ci0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHRvKCkKLSAgICB7Ci0gICAgICAgIFQgcmVzOwotICAg
ICAgICByZXMuV2ViTGF5ZXI6OmFzc2lnbigqdGhpcyk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0g
ICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgVCB0b0NvbnN0KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIFQgcmVzOwotICAgICAgICByZXMuV2ViTGF5ZXI6OmFzc2lnbigqdGhp
cyk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfQotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFU
SU9OCi0gICAgV2ViTGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkxheWVyQ2hy
b21pdW0+Jik7Ci0gICAgV2ViTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4oKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBUKiB1bndyYXAoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQq
PihtX3ByaXZhdGUuZ2V0KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNv
bnN0IFQqIGNvbnN0VW53cmFwKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBUKj4obV9wcml2YXRlLmdldCgpKTsKLSAgICB9Ci0jZW5kaWYKLQotcHJvdGVj
dGVkOgotICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4gbV9wcml2YXRl
OworICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JjZVJlbmRlclN1cmZhY2UoYm9vbCkgPSAwOwogfTsK
IAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJMYXllciYgYSwgY29uc3QgV2ViTGF5
ZXImIGIpCi17Ci0gICAgcmV0dXJuIGEuZXF1YWxzKGIpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFdlYkxheWVyJiBhLCBjb25zdCBXZWJMYXllciYgYikKLXsKLSAgICByZXR1
cm4gIShhID09IGIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFdl
YkxheWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
U2Nyb2xsYWJsZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNj
cm9sbGFibGVMYXllci5oCmluZGV4IGVhMDJmOGM3Mzk2MWFmZDNmMzk1YzdlMmFjOWI2MzgwZmQ4
ZDc2YWQuLmFhMzQ1YWFhNTE4YmI0ZDI4OTQ1NGU0NDRkODhjYTIwNWYwMTZlNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmgK
KysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxhYmxlTGF5ZXIu
aApAQCAtMzQsMjkgKzM0LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJT
Y3JvbGxhYmxlTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xhc3MgV2ViU2Nyb2xsYWJsZUxh
eWVyIDogdmlydHVhbCBwdWJsaWMgV2ViTGF5ZXIgewogcHVibGljOgotICAgIFdlYlNjcm9sbGFi
bGVMYXllcigpIHsgfQotICAgIFdlYlNjcm9sbGFibGVMYXllcihjb25zdCBXZWJTY3JvbGxhYmxl
TGF5ZXImIGxheWVyKSA6IFdlYkxheWVyKGxheWVyKSB7IH0KLSAgICB2aXJ0dWFsIH5XZWJTY3Jv
bGxhYmxlTGF5ZXIoKSB7IH0KLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXImIG9wZXJhdG9yPShjb25z
dCBXZWJTY3JvbGxhYmxlTGF5ZXImIGxheWVyKQotICAgIHsKLSAgICAgICAgV2ViTGF5ZXI6OmFz
c2lnbihsYXllcik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oV2ViUG9pbnQpOwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRTY3JvbGxhYmxlKGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRI
YXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRT
aG91bGRTY3JvbGxPbk1haW5UaHJlYWQoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFdlYlZlY3RvcjxXZWJSZWN0PiYpOwotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMo
Ym9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZpeGVkVG9Db250YWluZXJMYXllcihi
b29sKTsKLQotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViU2Nyb2xsYWJsZUxh
eWVyKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpMYXllckNocm9taXVtPiYgbGF5ZXIp
IDogV2ViTGF5ZXIobGF5ZXIpIHsgfQotI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9s
bFBvc2l0aW9uKFdlYlBvaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGFibGUo
Ym9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJv
b2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKGJv
b2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29u
c3QgV2ViVmVjdG9yPFdlYlJlY3Q+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJc0NvbnRh
aW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNj
cm9sbGJhckxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9s
bGJhckxheWVyLmgKaW5kZXggMWJmZTdkNmFiYjNhNTlmM2YzZWEzMzA0NDhjYzY0MDdkMzExYTFh
OS4uNDUxYTBiOWMxMzRiNmM0NDQ5NTBlMWEyYjYyM2YzYmUxZjAyMTEwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5oCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaApAQCAt
MzIsMjkgKzMyLDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcm9sbGJhcjsK
LWNsYXNzIFNjcm9sbGJhckxheWVyQ2hyb21pdW07CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1jbGFzcyBXZWJTY3JvbGxiYXJMYXllciA6IHB1YmxpYyBXZWJMYXllciB7CitjbGFzcyBXZWJT
Y3JvbGxiYXJMYXllciB7CiBwdWJsaWM6Ci0gICAgV2ViU2Nyb2xsYmFyTGF5ZXIoKSB7IH0KLSAg
ICBXZWJTY3JvbGxiYXJMYXllcihjb25zdCBXZWJTY3JvbGxiYXJMYXllciYgbGF5ZXIpIDogV2Vi
TGF5ZXIobGF5ZXIpIHsgfQogICAgIHZpcnR1YWwgfldlYlNjcm9sbGJhckxheWVyKCkgeyB9Ci0g
ICAgV2ViU2Nyb2xsYmFyTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXZWJTY3JvbGxiYXJMYXllciYg
bGF5ZXIpCi0gICAgewotICAgICAgICBXZWJMYXllcjo6YXNzaWduKGxheWVyKTsKLSAgICAgICAg
cmV0dXJuICp0aGlzOwotICAgIH0KIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTY3JvbGxM
YXllcihjb25zdCBXZWJMYXllcik7CisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoV2ViTGF5ZXIqKSA9IDA7CiAKICNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBzdGF0aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgY3Jl
YXRlKFdlYkNvcmU6OlNjcm9sbGJhciosIFdlYlNjcm9sbGJhclRoZW1lUGFpbnRlciwgUGFzc093
blB0cjxXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Pik7Ci0gICAgZXhwbGljaXQgV2ViU2Nyb2xs
YmFyTGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hy
b21pdW0+Jik7Ci0gICAgV2ViU2Nyb2xsYmFyTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBvcGVyYXRv
ciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4oKSBjb25z
dDsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTY3JvbGxiYXJMYXllciogY3JlYXRlKFdl
YkNvcmU6OlNjcm9sbGJhciosIFdlYlNjcm9sbGJhclRoZW1lUGFpbnRlciwgUGFzc093blB0cjxX
ZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Pik7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmggYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oCmluZGV4IGFk
OTEyM2Q5NjJhZmVhZWE4YTU2MzEyOTQ1ZGUxZmM1Zjg5NmM5ZmMuLjAyZTQ2ZjA0N2ZhZjI1M2Fj
MTFlMTk3YzQ1MTA4MTdiYTFmNDgyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJTb2xpZENvbG9yTGF5ZXIuaApAQCAtMjYsMjEgKzI2LDIwIEBACiAj
aWZuZGVmIFdlYlNvbGlkQ29sb3JMYXllcl9oCiAjZGVmaW5lIFdlYlNvbGlkQ29sb3JMYXllcl9o
CiAKKyNpbmNsdWRlICJXZWJDb2xvci5oIgogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2luY2x1
ZGUgIldlYkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIldlYkxheWVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewotY2xhc3MgV2ViU29saWRDb2xvckxheWVySW1wbDsKK2NsYXNzIFdlYkxheWVyOwog
Ci1jbGFzcyBXZWJTb2xpZENvbG9yTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xhc3MgV2Vi
U29saWRDb2xvckxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJT
b2xpZENvbG9yTGF5ZXIgY3JlYXRlKCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEJhY2tn
cm91bmRDb2xvcihjb25zdCBXZWJDb2xvciYpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdl
YlNvbGlkQ29sb3JMYXllciogY3JlYXRlKCk7CiAKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
LSAgICBXZWJTb2xpZENvbG9yTGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYlNvbGlkQ29s
b3JMYXllckltcGw+Jik7Ci0jZW5kaWYKKyAgICB2aXJ0dWFsIH5XZWJTb2xpZENvbG9yTGF5ZXIo
KSB7IH0KKworICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJWaWRlb0xheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZpZGVv
TGF5ZXIuaAppbmRleCA1NGRhMzQ1NGJhMDNlZmZiNWUzNGIwZDMzMmI5MmMwMTEyNDc1YWE0Li4x
YWNmZmY1NGEwNzI3YjQ5OGRkOTQxZmNjNDZhMjc3MjZhYTdkNzBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaApAQCAtMjksMjcgKzI5LDIw
IEBACiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXIuaCIKIAotbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVmlkZW9MYXllckNocm9taXVtOwotfQotCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViVmlkZW9GcmFtZVByb3ZpZGVyOwogCi1jbGFzcyBXZWJW
aWRlb0xheWVyIDogcHVibGljIFdlYkxheWVyIHsKK2NsYXNzIFdlYlZpZGVvTGF5ZXIgewogcHVi
bGljOgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlZpZGVvTGF5ZXIgY3JlYXRlKFdlYlZp
ZGVvRnJhbWVQcm92aWRlciopOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlZpZGVvTGF5
ZXIqIGNyZWF0ZShXZWJWaWRlb0ZyYW1lUHJvdmlkZXIqKTsKIAotICAgIFdlYlZpZGVvTGF5ZXIo
KSB7IH0KICAgICB2aXJ0dWFsIH5XZWJWaWRlb0xheWVyKCkgeyB9CiAKLSAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhpcyBsYXllciBpcyBhY3RpdmVseSByZW5kZXJpbmcgKGUuZy4gY3VycmVudGx5
IGF0dGFjaGVkIHRvIGEgV2ViTGF5ZXJUcmVlVmlldykuCi0gICAgV0VCS0lUX0VYUE9SVCBib29s
IGFjdGl2ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAwOwogCi0j
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQgV2ViVmlkZW9MYXllcihQYXNz
UmVmUHRyPFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bT4pOwotI2VuZGlmCisgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHRoaXMgbGF5ZXIgaXMgYWN0aXZlbHkgcmVuZGVyaW5nIChlLmcuIGN1cnJl
bnRseSBhdHRhY2hlZCB0byBhIFdlYkxheWVyVHJlZVZpZXcpLgorICAgIHZpcnR1YWwgYm9vbCBh
Y3RpdmUoKSBjb25zdCA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21p
dW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKaW5kZXggMWRiNzU5NDA0N2M4OGNh
YjBkZGFmZTAwMzdhM2JlNmNhYzM4Njg4Ni4uZTI1NmJkZTFhNWE0YWU4N2E2NjA4MTk4YzczZGZh
ZjhlMTk4MTNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hy
b21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5j
cHAKQEAgLTI5LDEyICsyOSwxMiBAQAogCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5j
bHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgog
I2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgiCiAjaW5jbHVkZSAiV2ViU2Nyb2xs
YmFyVGhlbWVHZW9tZXRyeU5hdGl2ZS5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JvbGxhYmxl
TGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyLmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYlNjcm9sbGJhckxheWVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJhclRo
ZW1lR2VvbWV0cnkuaD4KQEAgLTQyLDcgKzQyLDYgQEAKIAogdXNpbmcgV2ViS2l0OjpXZWJMYXll
cjsKIHVzaW5nIFdlYktpdDo6V2ViUmVjdDsKLXVzaW5nIFdlYktpdDo6V2ViU2Nyb2xsYWJsZUxh
eWVyOwogdXNpbmcgV2ViS2l0OjpXZWJTY3JvbGxiYXJMYXllcjsKIHVzaW5nIFdlYktpdDo6V2Vi
VmVjdG9yOwogCkBAIC01MSwzNiArNTAsMzkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlIHsKIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZSk7CiBwdWJsaWM6Ci0gICAgU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcml2YXRlKCkgeyB9CisgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlKCkKKyAgICAg
ICAgOiBtX3Njcm9sbExheWVyKDApCisgICAgeworICAgIH0KKwogICAgIH5TY3JvbGxpbmdDb29y
ZGluYXRvclByaXZhdGUoKSB7IH0KIAotICAgIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoV2ViU2Nyb2xs
YWJsZUxheWVyIGxheWVyKQorICAgIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoV2ViTGF5ZXIqIGxheWVy
KQogICAgIHsKICAgICAgICAgbV9zY3JvbGxMYXllciA9IGxheWVyOwogCi0gICAgICAgIGlmICgh
bV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgICAgICBtX2hvcml6
b250YWxTY3JvbGxiYXJMYXllci5zZXRTY3JvbGxMYXllcihsYXllcik7Ci0gICAgICAgIGlmICgh
bV92ZXJ0aWNhbFNjcm9sbGJhckxheWVyLmlzTnVsbCgpKQotICAgICAgICAgICAgbV92ZXJ0aWNh
bFNjcm9sbGJhckxheWVyLnNldFNjcm9sbExheWVyKGxheWVyKTsKKyAgICAgICAgaWYgKG1faG9y
aXpvbnRhbFNjcm9sbGJhckxheWVyKQorICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFy
TGF5ZXItPnNldFNjcm9sbExheWVyKGxheWVyKTsKKyAgICAgICAgaWYgKG1fdmVydGljYWxTY3Jv
bGxiYXJMYXllcikKKyAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXJMYXllci0+c2V0U2Ny
b2xsTGF5ZXIobGF5ZXIpOwogICAgIH0KIAotICAgIHZvaWQgc2V0SG9yaXpvbnRhbFNjcm9sbGJh
ckxheWVyKFdlYlNjcm9sbGJhckxheWVyIGxheWVyKQorICAgIHZvaWQgc2V0SG9yaXpvbnRhbFNj
cm9sbGJhckxheWVyKFBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IGxheWVyKQogICAgIHsK
ICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIgPSBsYXllcjsKICAgICB9CiAKLSAg
ICB2b2lkIHNldFZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIoV2ViU2Nyb2xsYmFyTGF5ZXIgbGF5ZXIp
CisgICAgdm9pZCBzZXRWZXJ0aWNhbFNjcm9sbGJhckxheWVyKFBhc3NPd25QdHI8V2ViU2Nyb2xs
YmFyTGF5ZXI+IGxheWVyKQogICAgIHsKICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhckxheWVy
ID0gbGF5ZXI7CiAgICAgfQogCi0gICAgYm9vbCBoYXNTY3JvbGxMYXllcigpIGNvbnN0IHsgcmV0
dXJuICFtX3Njcm9sbExheWVyLmlzTnVsbCgpOyB9Ci0gICAgV2ViU2Nyb2xsYWJsZUxheWVyIHNj
cm9sbExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxMYXllcjsgfQorICAgIFdlYkxheWVy
KiBzY3JvbGxMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsTGF5ZXI7IH0KIAogcHJpdmF0
ZToKLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXIgbV9zY3JvbGxMYXllcjsKLSAgICBXZWJTY3JvbGxi
YXJMYXllciBtX2hvcml6b250YWxTY3JvbGxiYXJMYXllcjsKLSAgICBXZWJTY3JvbGxiYXJMYXll
ciBtX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXI7CisgICAgV2ViTGF5ZXIqIG1fc2Nyb2xsTGF5ZXI7
CisgICAgT3duUHRyPFdlYlNjcm9sbGJhckxheWVyPiBtX2hvcml6b250YWxTY3JvbGxiYXJMYXll
cjsKKyAgICBPd25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IG1fdmVydGljYWxTY3JvbGxiYXJMYXll
cjsKIH07CiAKIFBhc3NSZWZQdHI8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+IFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpjcmVhdGUoUGFnZSogcGFnZSkKQEAgLTExMiwxNSArMTE0LDIwIEBAIHN0YXRpYyBH
cmFwaGljc0xheWVyKiBzY3JvbGxMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmll
dykKICNlbmRpZgogfQogCi1zdGF0aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgY3JlYXRlU2Nyb2xsYmFy
TGF5ZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9sbGFibGVMYXllciBzY3JvbGxMYXll
ciwgR3JhcGhpY3NMYXllciogc2Nyb2xsYmFyR3JhcGhpY3NMYXllciwgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcpCitzdGF0aWMgV2ViTGF5ZXIqIHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIo
R3JhcGhpY3NMYXllciogbGF5ZXIpCit7CisgICAgcmV0dXJuIGxheWVyLT5wbGF0Zm9ybUxheWVy
KCk7Cit9CisKK3N0YXRpYyBQYXNzT3duUHRyPFdlYlNjcm9sbGJhckxheWVyPiBjcmVhdGVTY3Jv
bGxiYXJMYXllcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViTGF5ZXIqIHNjcm9sbExheWVyLCBH
cmFwaGljc0xheWVyKiBzY3JvbGxiYXJHcmFwaGljc0xheWVyLCBGcmFtZVZpZXcqIGZyYW1lVmll
dykKIHsKICAgICBBU1NFUlQoc2Nyb2xsYmFyKTsKICAgICBBU1NFUlQoc2Nyb2xsYmFyR3JhcGhp
Y3NMYXllcik7CiAKLSAgICBpZiAoc2Nyb2xsTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICBpZiAoIXNj
cm9sbExheWVyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBzb21ldGltZXMgd2UgZ2V0IGNhbGxlZCBi
ZWZvcmUgc2V0U2Nyb2xsTGF5ZXIsIHdvcmthcm91bmQgYnkgZmluZGluZyB0aGUgc2Nyb2xsIGxh
eW91dCBvdXJzZWx2ZXMuCi0gICAgICAgIHNjcm9sbExheWVyID0gc2Nyb2xsTGF5ZXJGb3JGcmFt
ZVZpZXcoZnJhbWVWaWV3KS0+cGxhdGZvcm1MYXllcigpLT50bzxXZWJTY3JvbGxhYmxlTGF5ZXI+
KCk7Ci0gICAgICAgIEFTU0VSVCghc2Nyb2xsTGF5ZXIuaXNOdWxsKCkpOworICAgICAgICBzY3Jv
bGxMYXllciA9IHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JG
cmFtZVZpZXcoZnJhbWVWaWV3KSk7CisgICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7CiAgICAg
fQogCiAgICAgLy8gUm9vdCBsYXllciBub24tb3ZlcmxheSBzY3JvbGxiYXJzIHNob3VsZCBiZSBt
YXJrZWQgb3BhcXVlIHRvIGRpc2FibGUKQEAgLTEzOCw3ICsxNDUsNyBAQCBzdGF0aWMgV2ViU2Ny
b2xsYmFyTGF5ZXIgY3JlYXRlU2Nyb2xsYmFyTGF5ZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdl
YlNjcm9sbGFibAogICAgIGlmICghcGxhdGZvcm1TdXBwb3J0ZWQgfHwgc2Nyb2xsYmFyLT5pc0N1
c3RvbVNjcm9sbGJhcigpKSB7CiAgICAgICAgIHNjcm9sbGJhckdyYXBoaWNzTGF5ZXItPnNldENv
bnRlbnRzVG9NZWRpYSgwKTsKICAgICAgICAgc2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+c2V0RHJh
d3NDb250ZW50KHRydWUpOwotICAgICAgICByZXR1cm4gV2ViU2Nyb2xsYmFyTGF5ZXIoKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgLy8gQWxsIENocm9taXVtIHNjcm9s
bGJhciB0aGVtZXMgZGVyaXZlIGZyb20gU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuCkBAIC0xNDYs
MTQgKzE1MywxNCBAQCBzdGF0aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgY3JlYXRlU2Nyb2xsYmFyTGF5
ZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9sbGFibAogICAgIFdlYktpdDo6V2ViU2Ny
b2xsYmFyVGhlbWVQYWludGVyIHBhaW50ZXIodGhlbWVDb21wb3NpdGUsIHNjcm9sbGJhcik7CiAg
ICAgT3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4gZ2VvbWV0cnkoV2Vi
S2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpjcmVhdGUodGhlbWVDb21wb3Np
dGUpKTsKIAotICAgIFdlYlNjcm9sbGJhckxheWVyIHNjcm9sbGJhckxheWVyID0gV2ViU2Nyb2xs
YmFyTGF5ZXI6OmNyZWF0ZShzY3JvbGxiYXIsIHBhaW50ZXIsIGdlb21ldHJ5LnJlbGVhc2UoKSk7
Ci0gICAgc2Nyb2xsYmFyTGF5ZXIuc2V0U2Nyb2xsTGF5ZXIoc2Nyb2xsTGF5ZXIpOworICAgIE93
blB0cjxXZWJTY3JvbGxiYXJMYXllcj4gc2Nyb2xsYmFyTGF5ZXIgPSBhZG9wdFB0cihXZWJTY3Jv
bGxiYXJMYXllcjo6Y3JlYXRlKHNjcm9sbGJhciwgcGFpbnRlciwgZ2VvbWV0cnkucmVsZWFzZSgp
KSk7CisgICAgc2Nyb2xsYmFyTGF5ZXItPnNldFNjcm9sbExheWVyKHNjcm9sbExheWVyKTsKIAot
ICAgIHNjcm9sbGJhckdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYSgmc2Nyb2xsYmFy
TGF5ZXIpOworICAgIHNjcm9sbGJhckdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYShz
Y3JvbGxiYXJMYXllci0+bGF5ZXIoKSk7CiAgICAgc2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+c2V0
RHJhd3NDb250ZW50KGZhbHNlKTsKLSAgICBzY3JvbGxiYXJMYXllci5zZXRPcGFxdWUoc2Nyb2xs
YmFyR3JhcGhpY3NMYXllci0+Y29udGVudHNPcGFxdWUoKSk7CisgICAgc2Nyb2xsYmFyTGF5ZXIt
PmxheWVyKCktPnNldE9wYXF1ZShzY3JvbGxiYXJHcmFwaGljc0xheWVyLT5jb250ZW50c09wYXF1
ZSgpKTsKIAotICAgIHJldHVybiBzY3JvbGxiYXJMYXllcjsKKyAgICByZXR1cm4gc2Nyb2xsYmFy
TGF5ZXIucmVsZWFzZSgpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZp
ZXdIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcs
IEdyYXBoaWNzTGF5ZXIqIGhvcml6b250YWxTY3JvbGxiYXJMYXllcikKQEAgLTE2MSw2ICsxNjgs
NyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdIb3Jpem9udGFsU2Nyb2xs
YmFyTGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KgogICAgIGlmICghaG9yaXpvbnRhbFNjcm9sbGJh
ckxheWVyIHx8ICFjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhmcmFtZVZpZXcpKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxMYXllckZvckZyYW1l
VmlldyhtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpKTsKICAgICBtX3ByaXZhdGUtPnNldEhv
cml6b250YWxTY3JvbGxiYXJMYXllcihjcmVhdGVTY3JvbGxiYXJMYXllcihmcmFtZVZpZXctPmhv
cml6b250YWxTY3JvbGxiYXIoKSwgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLCBob3Jpem9udGFs
U2Nyb2xsYmFyTGF5ZXIsIGZyYW1lVmlldykpOwogfQogCkBAIC0xNjksMjUgKzE3NywyNSBAQCB2
b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdWZXJ0aWNhbFNjcm9sbGJhckxheWVy
RGlkQ2hhbmdlKEZyYW1lVmlldyogZgogICAgIGlmICghdmVydGljYWxTY3JvbGxiYXJMYXllciB8
fCAhY29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKICAgICAgICAg
cmV0dXJuOwogCisgICAgc2V0U2Nyb2xsTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcobV9w
YWdlLT5tYWluRnJhbWUoKS0+dmlldygpKSk7CiAgICAgbV9wcml2YXRlLT5zZXRWZXJ0aWNhbFNj
cm9sbGJhckxheWVyKGNyZWF0ZVNjcm9sbGJhckxheWVyKGZyYW1lVmlldy0+dmVydGljYWxTY3Jv
bGxiYXIoKSwgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLCB2ZXJ0aWNhbFNjcm9sbGJhckxheWVy
LCBmcmFtZVZpZXcpKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xs
TGF5ZXIoR3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIpCiB7Ci0gICAgV2ViU2Nyb2xsYWJsZUxh
eWVyIGxheWVyOwotICAgIGlmIChzY3JvbGxMYXllcikKLSAgICAgICAgbGF5ZXIgPSBzY3JvbGxM
YXllci0+cGxhdGZvcm1MYXllcigpLT50bzxXZWJTY3JvbGxhYmxlTGF5ZXI+KCk7Ci0gICAgbV9w
cml2YXRlLT5zZXRTY3JvbGxMYXllcihsYXllcik7CisgICAgbV9wcml2YXRlLT5zZXRTY3JvbGxM
YXllcihzY3JvbGxMYXllciA/IHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIoc2Nyb2xs
TGF5ZXIpIDogMCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldE5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYgcmVnaW9uKQogewotICAgIGlmIChtX3ByaXZh
dGUtPmhhc1Njcm9sbExheWVyKCkpIHsKKyAgICAvLyBXZSB3b24ndCBuZWNlc3NhcmlseSBnZXQg
YSBzZXRTY3JvbGxMYXllcigpIGNhbGwgYmVmb3JlIHRoaXMgb25lLCBzbyBncmFiIHRoZSByb290
IG91cnNlbHZlcy4KKyAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxMYXllckZvckZyYW1lVmlldyht
X3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpKTsKKyAgICBpZiAobV9wcml2YXRlLT5zY3JvbGxM
YXllcigpKSB7CiAgICAgICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0cyA9IHJlZ2lvbi5yZWN0cygp
OwogICAgICAgICBXZWJWZWN0b3I8V2ViUmVjdD4gd2ViUmVjdHMocmVjdHMuc2l6ZSgpKTsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkKICAgICAgICAg
ICAgIHdlYlJlY3RzW2ldID0gcmVjdHNbaV07Ci0gICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5
ZXIoKS5zZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbih3ZWJSZWN0cyk7CisgICAgICAgIG1fcHJp
dmF0ZS0+c2Nyb2xsTGF5ZXIoKS0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24od2ViUmVjdHMp
OwogICAgIH0KIH0KIApAQCAtMTk4LDE0ICsyMDYsMTggQEAgdm9pZCBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6c2V0U2Nyb2xsUGFyYW1ldGVycyhjb25zdCBTY3JvbGxQYXJhbWV0ZXJzJikKIAogdm9p
ZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25l
ZCB3aGVlbEV2ZW50SGFuZGxlckNvdW50KQogewotICAgIGlmIChtX3ByaXZhdGUtPmhhc1Njcm9s
bExheWVyKCkpCi0gICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKS5zZXRIYXZlV2hlZWxF
dmVudEhhbmRsZXJzKHdoZWVsRXZlbnRIYW5kbGVyQ291bnQgPiAwKTsKKyAgICAvLyBXZSB3b24n
dCBuZWNlc3NhcmlseSBnZXQgYSBzZXRTY3JvbGxMYXllcigpIGNhbGwgYmVmb3JlIHRoaXMgb25l
LCBzbyBncmFiIHRoZSByb290IG91cnNlbHZlcy4KKyAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxM
YXllckZvckZyYW1lVmlldyhtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpKTsKKyAgICBpZiAo
bV9wcml2YXRlLT5zY3JvbGxMYXllcigpKQorICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVy
KCktPnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMod2hlZWxFdmVudEhhbmRsZXJDb3VudCA+IDAp
OwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkKQogewotICAgIGlmIChtX3ByaXZh
dGUtPmhhc1Njcm9sbExheWVyKCkpCi0gICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKS5z
ZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoc2hvdWxkKTsKKyAgICAvLyBXZSB3b24ndCBuZWNl
c3NhcmlseSBnZXQgYSBzZXRTY3JvbGxMYXllcigpIGNhbGwgYmVmb3JlIHRoaXMgb25lLCBzbyBn
cmFiIHRoZSByb290IG91cnNlbHZlcy4KKyAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxMYXllckZv
ckZyYW1lVmlldyhtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpKTsKKyAgICBpZiAobV9wcml2
YXRlLT5zY3JvbGxMYXllcigpKQorICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCktPnNl
dFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChzaG91bGQpOwogfQogCiBib29sIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjpzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSBjb25zdApAQCAtMjE1LDE0
ICsyMjcsMTQgQEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c3VwcG9ydHNGaXhlZFBvc2l0
aW9uTGF5ZXJzKCkgY29uc3QKIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0TGF5ZXJJ
c0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoR3JhcGhpY3NMYXllciogbGF5ZXIsIGJv
b2wgZW5hYmxlKQogewotICAgIGlmIChXZWJMYXllciogcGxhdGZvcm1MYXllciA9IGxheWVyLT5w
bGF0Zm9ybUxheWVyKCkpCi0gICAgICAgIHBsYXRmb3JtTGF5ZXItPnRvPFdlYlNjcm9sbGFibGVM
YXllcj4oKS5zZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoZW5hYmxlKTsKKyAg
ICBpZiAoV2ViTGF5ZXIqIHNjcm9sbGFibGVMYXllciA9IHNjcm9sbGFibGVMYXllckZvckdyYXBo
aWNzTGF5ZXIobGF5ZXIpKQorICAgICAgICBzY3JvbGxhYmxlTGF5ZXItPnNldElzQ29udGFpbmVy
Rm9yRml4ZWRQb3NpdGlvbkxheWVycyhlbmFibGUpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKEdyYXBoaWNzTGF5ZXIqIGxh
eWVyLCBib29sIGVuYWJsZSkKIHsKLSAgICBpZiAoV2ViTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBs
YXllci0+cGxhdGZvcm1MYXllcigpKQotICAgICAgICBwbGF0Zm9ybUxheWVyLT50bzxXZWJTY3Jv
bGxhYmxlTGF5ZXI+KCkuc2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGVuYWJsZSk7CisgICAgaWYg
KFdlYkxheWVyKiBzY3JvbGxhYmxlTGF5ZXIgPSBzY3JvbGxhYmxlTGF5ZXJGb3JHcmFwaGljc0xh
eWVyKGxheWVyKSkKKyAgICAgICAgc2Nyb2xsYWJsZUxheWVyLT5zZXRGaXhlZFRvQ29udGFpbmVy
TGF5ZXIoZW5hYmxlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcApp
bmRleCBkYjUxN2NhZDI2MzNiOGJmNGU3MTU0YjU3NDgyMjU3MmM0NjU5MGFhLi4xMDY1NDMxMmNm
MmVmYmFjN2U1YzIwYmYwZGMwNjUxYzg0ZjM0MDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
QnJpZGdlLmNwcApAQCAtNjksMjIgKzY5LDIxIEBAIENhbnZhczJETGF5ZXJCcmlkZ2U6OkNhbnZh
czJETGF5ZXJCcmlkZ2UoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwKICAg
ICAgICAgICAgIGdyQ29udGV4dC0+cmVzZXRDb250ZXh0KCk7CiAgICAgfQogCi0gICAgbV9sYXll
ciA9IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUodGhpcyk7Ci0gICAgbV9sYXllci5z
ZXRUZXh0dXJlSWQodGV4dHVyZUlkKTsKLSAgICBtX2xheWVyLnNldFJhdGVMaW1pdENvbnRleHQo
IVdlYktpdDo6V2ViQ29tcG9zaXRvcjo6dGhyZWFkaW5nRW5hYmxlZCgpIHx8IG1fdXNlRG91Ymxl
QnVmZmVyaW5nKTsKKyAgICBtX2xheWVyID0gYWRvcHRQdHIoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXI6OmNyZWF0ZSh0aGlzKSk7CisgICAgbV9sYXllci0+c2V0VGV4dHVyZUlkKHRleHR1cmVJZCk7
CisgICAgbV9sYXllci0+c2V0UmF0ZUxpbWl0Q29udGV4dCghV2ViS2l0OjpXZWJDb21wb3NpdG9y
Ojp0aHJlYWRpbmdFbmFibGVkKCkgfHwgbV91c2VEb3VibGVCdWZmZXJpbmcpOwogfQogCiBDYW52
YXMyRExheWVyQnJpZGdlOjp+Q2FudmFzMkRMYXllckJyaWRnZSgpCiB7CiAgICAgaWYgKFNrRGVm
ZXJyZWRDYW52YXMqIGRlZmVycmVkID0gZGVmZXJyZWRDYW52YXMoKSkKICAgICAgICAgZGVmZXJy
ZWQtPnNldE5vdGlmaWNhdGlvbkNsaWVudCgwKTsKLSAgICBtX2xheWVyLnNldFRleHR1cmVJZCgw
KTsKKyAgICBtX2xheWVyLT5zZXRUZXh0dXJlSWQoMCk7CiAgICAgaWYgKG1fdXNlRG91YmxlQnVm
ZmVyaW5nKSB7CiAgICAgICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAg
ICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShtX2Zyb250
QnVmZmVyVGV4dHVyZSkpOwogICAgICAgICBtX2NvbnRleHQtPmZsdXNoKCk7CiAgICAgfQotICAg
IG1fbGF5ZXIuY2xlYXJDbGllbnQoKTsKIH0KIAogU2tEZWZlcnJlZENhbnZhcyogQ2FudmFzMkRM
YXllckJyaWRnZTo6ZGVmZXJyZWRDYW52YXMoKQpAQCAtOTgsNyArOTcsNyBAQCB2b2lkIENhbnZh
czJETGF5ZXJCcmlkZ2U6OnByZXBhcmVGb3JEcmF3KCkKIHsKICAgICBBU1NFUlQoZGVmZXJyZWRD
YW52YXMoKSk7CiAgICAgaWYgKCFtX3VzZURvdWJsZUJ1ZmZlcmluZykKLSAgICAgICAgbV9sYXll
ci53aWxsTW9kaWZ5VGV4dHVyZSgpOworICAgICAgICBtX2xheWVyLT53aWxsTW9kaWZ5VGV4dHVy
ZSgpOwogICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiB9CiAKQEAgLTE0OCwx
MyArMTQ3LDEzIEBAIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBDYW52YXMyRExheWVyQnJpZGdlOjpj
b250ZXh0KCkKIAogV2ViS2l0OjpXZWJMYXllciogQ2FudmFzMkRMYXllckJyaWRnZTo6bGF5ZXIo
KQogewotICAgIHJldHVybiAmbV9sYXllcjsKKyAgICByZXR1cm4gbV9sYXllci0+bGF5ZXIoKTsK
IH0KIAogdm9pZCBDYW52YXMyRExheWVyQnJpZGdlOjpjb250ZXh0QWNxdWlyZWQoKQogewogICAg
IGlmIChtX2RlZmVycmFsTW9kZSA9PSBOb25EZWZlcnJlZCAmJiAhbV91c2VEb3VibGVCdWZmZXJp
bmcpCi0gICAgICAgIG1fbGF5ZXIud2lsbE1vZGlmeVRleHR1cmUoKTsKKyAgICAgICAgbV9sYXll
ci0+d2lsbE1vZGlmeVRleHR1cmUoKTsKIH0KIAogdW5zaWduZWQgQ2FudmFzMkRMYXllckJyaWRn
ZTo6YmFja0J1ZmZlclRleHR1cmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5oCmluZGV4
IDQwOWQyMDdjNTVlNDk1MThjMzkyNDRkMTQ4N2MwYTBhZjc0MTgyMWUuLjI3YjFlYTY1OWM0MWM3
YzY4YzMyNzQ1Y2ExZDEwNmFlNTA1NWE0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJCcmlkZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdl
LmgKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2JhY2tCdWZmZXJU
ZXh0dXJlOwogICAgIEludFNpemUgbV9zaXplOwogICAgIFNrQ2FudmFzKiBtX2NhbnZhczsKLSAg
ICBXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyIG1fbGF5ZXI7CisgICAgT3duUHRyPFdl
YktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IG1fbGF5ZXI7CiAgICAgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNo
cm9taXVtLmNwcAppbmRleCAxZDE2N2E1NTZlNmExZGZjZDExYWM2Zjg0OTE4ZjJkMWQ4ODk0ZDlh
Li42MTAyYTNlNmY3ODY5NzYwZTFmMzc4MDJkMDZmZTY1ZjRlYmQzNTI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKQEAgLTE1NiwxNiArMTU2LDE1IEBAIGNsYXNzIERy
YXdpbmdCdWZmZXJQcml2YXRlIDogcHVibGljIFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJDbGllbnQgewogcHVibGljOgogICAgIGV4cGxpY2l0IERyYXdpbmdCdWZmZXJQcml2YXRlKERy
YXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIpCiAgICAgICAgIDogbV9kcmF3aW5nQnVmZmVyKGRy
YXdpbmdCdWZmZXIpCi0gICAgICAgICwgbV9sYXllcihXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVy
ZUxheWVyOjpjcmVhdGUodGhpcykpCisgICAgICAgICwgbV9sYXllcihhZG9wdFB0cihXZWJLaXQ6
OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUodGhpcykpKQogICAgIHsKICAgICAgICAg
R3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IG1fZHJhd2luZ0J1ZmZl
ci0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICAgICAg
bV9sYXllci5zZXRPcGFxdWUoIWF0dHJpYnV0ZXMuYWxwaGEpOwotICAgICAgICBtX2xheWVyLnNl
dFByZW11bHRpcGxpZWRBbHBoYShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSk7CisgICAg
ICAgIG1fbGF5ZXItPnNldE9wYXF1ZSghYXR0cmlidXRlcy5hbHBoYSk7CisgICAgICAgIG1fbGF5
ZXItPnNldFByZW11bHRpcGxpZWRBbHBoYShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSk7
CiAgICAgfQogCiAgICAgdmlydHVhbCB+RHJhd2luZ0J1ZmZlclByaXZhdGUoKQogICAgIHsKLSAg
ICAgICAgbV9sYXllci5jbGVhckNsaWVudCgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdW5zaWdu
ZWQgcHJlcGFyZVRleHR1cmUoV2ViS2l0OjpXZWJUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikgT1ZF
UlJJREUKQEAgLTE4NywxMSArMTg2LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKG1fZHJhd2lu
Z0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0M0QoKSk7CiAgICAgfQogCi0gICAgV2ViS2l0OjpXZWJM
YXllciogbGF5ZXIoKSB7IHJldHVybiAmbV9sYXllcjsgfQorICAgIFdlYktpdDo6V2ViTGF5ZXIq
IGxheWVyKCkgeyByZXR1cm4gbV9sYXllci0+bGF5ZXIoKTsgfQogCiBwcml2YXRlOgogICAgIERy
YXdpbmdCdWZmZXIqIG1fZHJhd2luZ0J1ZmZlcjsKLSAgICBXZWJLaXQ6OldlYkV4dGVybmFsVGV4
dHVyZUxheWVyIG1fbGF5ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXI+IG1fbGF5ZXI7CiB9OwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3Jh
cGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZmIwOTAwYmJjMWE3NTdj
MWRhM2I4MWNjY2M3MDBiZDk0NDJkYjJhYy4uNGM3YTU1NmNiMGU5ZGFiOTkyMTY4ZjIyMmNlNmI2
MWRkYzZhMGFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC04
MywxNCArODMsMTUgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpj
cmVhdGUoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogCiBHcmFwaGljc0xheWVyQ2hyb21p
dW06OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAg
ICAgOiBHcmFwaGljc0xheWVyKGNsaWVudCkKKyAgICAsIG1fY29udGVudHNMYXllcigwKQogICAg
ICwgbV9jb250ZW50c0xheWVyUHVycG9zZShOb0NvbnRlbnRzTGF5ZXIpCiAgICAgLCBtX2NvbnRl
bnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29sb3IoZmFsc2UpCiAgICAgLCBtX2luU2V0Q2hpbGRyZW4o
ZmFsc2UpCiAgICAgLCBtX3BhZ2VTY2FsZUNoYW5nZWQoZmFsc2UpCiB7CiAgICAgbV9vcGFxdWVS
ZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZSA9IGFkb3B0UHRyKG5ldyBPcGFxdWVSZWN0
VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZSh0aGlzKSk7Ci0gICAgbV9sYXllciA9IFdlYkNv
bnRlbnRMYXllcjo6Y3JlYXRlKG1fb3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdh
dGUuZ2V0KCkpOwotICAgIG1fbGF5ZXIuc2V0RHJhd3NDb250ZW50KG1fZHJhd3NDb250ZW50ICYm
IG1fY29udGVudHNWaXNpYmxlKTsKKyAgICBtX2xheWVyID0gYWRvcHRQdHIoV2ViQ29udGVudExh
eWVyOjpjcmVhdGUobV9vcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZS5nZXQo
KSkpOworICAgIG1fbGF5ZXItPmxheWVyKCktPnNldERyYXdzQ29udGVudChtX2RyYXdzQ29udGVu
dCAmJiBtX2NvbnRlbnRzVmlzaWJsZSk7CiAgICAgaWYgKGNsaWVudCkKICAgICAgICAgZGV2aWNl
T3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7
CkBAIC05OCwzNCArOTksOSBAQCBHcmFwaGljc0xheWVyQ2hyb21pdW06OkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAKIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6fkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSgpCiB7Ci0gICAgLy8gRG8gY2xlYW51cCB3aGls
ZSB3ZSBjYW4gc3RpbGwgc2FmZWx5IGNhbGwgbWV0aG9kcyBvbiB0aGUgZGVyaXZlZCBjbGFzcy4K
ICAgICB3aWxsQmVEZXN0cm95ZWQoKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OndpbGxCZURlc3Ryb3llZCgpCi17Ci0gICAgaWYgKCFtX2xheWVyLmlzTnVsbCgpKSB7Ci0gICAg
ICAgIG1fbGF5ZXIuY2xlYXJDbGllbnQoKTsKLSAgICAgICAgbV9sYXllci5jbGVhclJlbmRlclN1
cmZhY2UoKTsKLSAgICAgICAgbV9sYXllci5zZXRBbmltYXRpb25EZWxlZ2F0ZSgwKTsKLSAgICB9
Ci0KLSAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkgewotICAgICAgICBtX2NvbnRl
bnRzTGF5ZXIuY2xlYXJSZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIG1fY29udGVudHNMYXllci5z
ZXRBbmltYXRpb25EZWxlZ2F0ZSgwKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fdHJhbnNmb3JtTGF5
ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAgbV90cmFuc2Zvcm1MYXllci5jbGVhclJlbmRlclN1cmZh
Y2UoKTsKLSAgICAgICAgbV90cmFuc2Zvcm1MYXllci5zZXRBbmltYXRpb25EZWxlZ2F0ZSgwKTsK
LSAgICB9Ci0KLSAgICBpZiAobV9saW5rSGlnaGxpZ2h0KQotICAgICAgICBtX2xpbmtIaWdobGln
aHQuY2xlYXIoKTsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OndpbGxCZURlc3Ryb3llZCgpOwotfQot
CiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmFtZShjb25zdCBTdHJpbmcmIGluTmFt
ZSkKIHsKICAgICBtX25hbWVCYXNlID0gaW5OYW1lOwpAQCAtMTM2LDIxICsxMTIsMTYgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5hbWUoY29uc3QgU3RyaW5nJiBpbk5hbWUpCiAK
IHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVOYW1lcygpCiB7Ci0gICAgaWYgKCFt
X2xheWVyLmlzTnVsbCgpKSB7Ci0gICAgICAgIFN0cmluZyBkZWJ1Z05hbWUgPSAiTGF5ZXIgZm9y
ICIgKyBtX25hbWVCYXNlOwotICAgICAgICBtX2xheWVyLnNldERlYnVnTmFtZShkZWJ1Z05hbWUp
OwotICAgIH0KLSAgICBpZiAoIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICBTdHJp
bmcgZGVidWdOYW1lID0gIkxheWVyIGZvciAiICsgbV9uYW1lQmFzZTsKKyAgICBtX2xheWVyLT5s
YXllcigpLT5zZXREZWJ1Z05hbWUoZGVidWdOYW1lKTsKKworICAgIGlmIChtX3RyYW5zZm9ybUxh
eWVyKSB7CiAgICAgICAgIFN0cmluZyBkZWJ1Z05hbWUgPSAiVHJhbnNmb3JtTGF5ZXIgZm9yICIg
KyBtX25hbWVCYXNlOwotICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnNldERlYnVnTmFtZShkZWJ1
Z05hbWUpOworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXREZWJ1Z05hbWUoZGVidWdOYW1l
KTsKICAgICB9Ci0gICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICBpZiAo
bV9jb250ZW50c0xheWVyKSB7CiAgICAgICAgIFN0cmluZyBkZWJ1Z05hbWUgPSAiQ29udGVudHNM
YXllciBmb3IgIiArIG1fbmFtZUJhc2U7Ci0gICAgICAgIG1fY29udGVudHNMYXllci5zZXREZWJ1
Z05hbWUoZGVidWdOYW1lKTsKLSAgICB9Ci0gICAgaWYgKG1fbGlua0hpZ2hsaWdodCkgewotICAg
ICAgICBTdHJpbmcgZGVidWdOYW1lID0gIkxpbmtIaWdobGlnaHQgZm9yICIgKyBtX25hbWVCYXNl
OwotICAgICAgICBtX2xpbmtIaWdobGlnaHQtPmNvbnRlbnRMYXllcigpLT5zZXREZWJ1Z05hbWUo
ZGVidWdOYW1lKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXREZWJ1Z05hbWUoZGVidWdO
YW1lKTsKICAgICB9CiB9CiAKQEAgLTIwMyw3ICsxNzQsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xh
eWVyKgogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlbW92ZUZyb21QYXJlbnQoKQogewog
ICAgIEdyYXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21QYXJlbnQoKTsKLSAgICBwcmltYXJ5TGF5ZXIo
KS5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgcGxhdGZvcm1MYXllcigpLT5yZW1vdmVGcm9tUGFy
ZW50KCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRQb3NpdGlvbihjb25z
dCBGbG9hdFBvaW50JiBwb2ludCkKQEAgLTIzMyw4ICsyMDQsOCBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgR3JhcGhpY3NM
YXllcjo6c2V0U2l6ZShjbGFtcGVkU2l6ZSk7CiAgICAgdXBkYXRlTGF5ZXJTaXplKCk7CiAKLSAg
ICBpZiAobV9wYWdlU2NhbGVDaGFuZ2VkICYmICFtX2xheWVyLmlzTnVsbCgpKQotICAgICAgICBt
X2xheWVyLmludmFsaWRhdGUoKTsKKyAgICBpZiAobV9wYWdlU2NhbGVDaGFuZ2VkKQorICAgICAg
ICBtX2xheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9wYWdlU2NhbGVDaGFuZ2Vk
ID0gZmFsc2U7CiB9CiAKQEAgLTMwMSwxMyArMjcyLDEzIEBAIHZvaWQgR3JhcGhpY3NMYXllckNo
cm9taXVtOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OmNsZWFyQmFja2dyb3VuZENvbG9yKCkKIHsKICAgICBHcmFwaGlj
c0xheWVyOjpjbGVhckJhY2tncm91bmRDb2xvcigpOwotICAgIG1fY29udGVudHNMYXllci5zZXRC
YWNrZ3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CisgICAgbV9jb250ZW50c0xh
eWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c09wYXF1ZShib29sIG9wYXF1ZSkK
IHsKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c09wYXF1ZShvcGFxdWUpOwotICAgIG1f
bGF5ZXIuc2V0T3BhcXVlKG1fY29udGVudHNPcGFxdWUpOworICAgIG1fbGF5ZXItPmxheWVyKCkt
PnNldE9wYXF1ZShtX2NvbnRlbnRzT3BhcXVlKTsKIH0KIAogc3RhdGljIGJvb2wgY29weVdlYkNv
cmVGaWx0ZXJPcGVyYXRpb25zVG9XZWJGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGZpbHRlcnMsIFdlYkZpbHRlck9wZXJhdGlvbnMmIHdlYkZpbHRlcnMpCkBAIC0zOTEs
MTEgKzM2MiwxMSBAQCBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0RmlsdGVycyhjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogICAgIGlmICghY29weVdlYkNvcmVGaWx0ZXJP
cGVyYXRpb25zVG9XZWJGaWx0ZXJPcGVyYXRpb25zKGZpbHRlcnMsIHdlYkZpbHRlcnMpKSB7CiAg
ICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgZmlsdGVycyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBwbGF0
Zm9ybSBsYXllciwgYXMgdGhleSBhcmUKICAgICAgICAgLy8gZ29pbmcgdG8gZmFsbGJhY2sgdG8g
c29mdHdhcmUgbW9kZS4KLSAgICAgICAgbV9sYXllci5zZXRGaWx0ZXJzKFdlYkZpbHRlck9wZXJh
dGlvbnMoKSk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEZpbHRlcnMoV2ViRmlsdGVy
T3BlcmF0aW9ucygpKTsKICAgICAgICAgR3JhcGhpY3NMYXllcjo6c2V0RmlsdGVycyhGaWx0ZXJP
cGVyYXRpb25zKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIG1fbGF5ZXIu
c2V0RmlsdGVycyh3ZWJGaWx0ZXJzKTsKKyAgICBtX2xheWVyLT5sYXllcigpLT5zZXRGaWx0ZXJz
KHdlYkZpbHRlcnMpOwogICAgIHJldHVybiBHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKGZpbHRl
cnMpOwogfQogCkBAIC00MDQsNyArMzc1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OnNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMKICAg
ICBXZWJGaWx0ZXJPcGVyYXRpb25zIHdlYkZpbHRlcnM7CiAgICAgaWYgKCFjb3B5V2ViQ29yZUZp
bHRlck9wZXJhdGlvbnNUb1dlYkZpbHRlck9wZXJhdGlvbnMoZmlsdGVycywgd2ViRmlsdGVycykp
CiAgICAgICAgIHJldHVybjsKLSAgICBtX2xheWVyLnNldEJhY2tncm91bmRGaWx0ZXJzKHdlYkZp
bHRlcnMpOworICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEJhY2tncm91bmRGaWx0ZXJzKHdlYkZp
bHRlcnMpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TWFza0xheWVyKEdy
YXBoaWNzTGF5ZXIqIG1hc2tMYXllcikKQEAgLTQxNCwyMyArMzg1LDIxIEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNocm9taXVtOjpzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciogbWFza0xheWVyKQog
CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0TWFza0xheWVyKG1hc2tMYXllcik7CiAKLSAgICBXZWJM
YXllciBtYXNrV2ViTGF5ZXI7Ci0gICAgaWYgKG1fbWFza0xheWVyKQotICAgICAgICBtYXNrV2Vi
TGF5ZXIgPSAqbV9tYXNrTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKLSAgICBtX2xheWVyLnNldE1h
c2tMYXllcihtYXNrV2ViTGF5ZXIpOworICAgIFdlYkxheWVyKiBtYXNrV2ViTGF5ZXIgPSBtX21h
c2tMYXllciA/IG1fbWFza0xheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwOworICAgIG1fbGF5ZXIt
PmxheWVyKCktPnNldE1hc2tMYXllcihtYXNrV2ViTGF5ZXIpOwogfQogCiB2b2lkIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6c2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wgdmlzaWJsZSkKIHsKICAg
ICBHcmFwaGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkodmlzaWJsZSk7Ci0gICAgbV9s
YXllci5zZXREb3VibGVTaWRlZChtX2JhY2tmYWNlVmlzaWJpbGl0eSk7CisgICAgbV9sYXllci0+
c2V0RG91YmxlU2lkZWQobV9iYWNrZmFjZVZpc2liaWxpdHkpOwogfQogCiB2b2lkIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQogewogICAgIGZsb2F0IGNs
YW1wZWRPcGFjaXR5ID0gbWF4KG1pbihvcGFjaXR5LCAxLjBmKSwgMC4wZik7CiAgICAgR3JhcGhp
Y3NMYXllcjo6c2V0T3BhY2l0eShjbGFtcGVkT3BhY2l0eSk7Ci0gICAgcHJpbWFyeUxheWVyKCku
c2V0T3BhY2l0eShvcGFjaXR5KTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnNldE9wYWNpdHkob3Bh
Y2l0eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRSZXBsaWNhdGVkQnlM
YXllcihHcmFwaGljc0xheWVyKiBsYXllcikKQEAgLTQzOCwyOSArNDA3LDI3IEBAIHZvaWQgR3Jh
cGhpY3NMYXllckNocm9taXVtOjpzZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKiBs
YXllcikKICAgICBHcmFwaGljc0xheWVyQ2hyb21pdW0qIGxheWVyQ2hyb21pdW0gPSBzdGF0aWNf
Y2FzdDxHcmFwaGljc0xheWVyQ2hyb21pdW0qPihsYXllcik7CiAgICAgR3JhcGhpY3NMYXllcjo6
c2V0UmVwbGljYXRlZEJ5TGF5ZXIobGF5ZXIpOwogCi0gICAgV2ViTGF5ZXIgd2ViUmVwbGljYUxh
eWVyOwotICAgIGlmIChsYXllckNocm9taXVtKQotICAgICAgICB3ZWJSZXBsaWNhTGF5ZXIgPSBs
YXllckNocm9taXVtLT5wcmltYXJ5TGF5ZXIoKTsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRSZXBs
aWNhTGF5ZXIod2ViUmVwbGljYUxheWVyKTsKKyAgICBXZWJMYXllciogd2ViUmVwbGljYUxheWVy
ID0gbGF5ZXJDaHJvbWl1bSA/IGxheWVyQ2hyb21pdW0tPnBsYXRmb3JtTGF5ZXIoKSA6IDA7Cisg
ICAgcGxhdGZvcm1MYXllcigpLT5zZXRSZXBsaWNhTGF5ZXIod2ViUmVwbGljYUxheWVyKTsKIH0K
IAogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXko
KQogewotICAgIGlmICghbV9jb250ZW50c0xheWVyLmlzTnVsbCgpKQotICAgICAgICBtX2NvbnRl
bnRzTGF5ZXIuaW52YWxpZGF0ZSgpOworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCisgICAgICAg
IG1fY29udGVudHNMYXllci0+aW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKICAgICBpZiAoZHJhd3NDb250ZW50KCkpCi0g
ICAgICAgIG1fbGF5ZXIuaW52YWxpZGF0ZSgpOworICAgICAgICBtX2xheWVyLT5sYXllcigpLT5p
bnZhbGlkYXRlKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXROZWVkc0Rp
c3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGlmIChkcmF3c0NvbnRl
bnQoKSkKLSAgICAgICAgbV9sYXllci5pbnZhbGlkYXRlUmVjdChyZWN0KTsKKyAgICAgICAgbV9s
YXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZVJlY3QocmVjdCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NM
YXllckNocm9taXVtOjpzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTQ3
Niw0NiArNDQzLDU2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1Rv
SW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7
CiAgICAgaWYgKGltYWdlKSB7Ci0gICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkg
fHwgbV9jb250ZW50c0xheWVyUHVycG9zZSAhPSBDb250ZW50c0xheWVyRm9ySW1hZ2UpIHsKLSAg
ICAgICAgICAgIFdlYktpdDo6V2ViSW1hZ2VMYXllciBpbWFnZUxheWVyID0gV2ViS2l0OjpXZWJJ
bWFnZUxheWVyOjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHNldHVwQ29udGVudHNMYXllcihpbWFn
ZUxheWVyKTsKKyAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIgfHwgbV9jb250ZW50c0xheWVy
UHVycG9zZSAhPSBDb250ZW50c0xheWVyRm9ySW1hZ2UpIHsKKyAgICAgICAgICAgIG1faW1hZ2VM
YXllciA9IGFkb3B0UHRyKFdlYkltYWdlTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgIHNl
dHVwQ29udGVudHNMYXllcihtX2ltYWdlTGF5ZXItPmxheWVyKCkpOwogICAgICAgICAgICAgbV9j
b250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JJbWFnZTsKICAgICAgICAgICAg
IGNoaWxkcmVuQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgV2ViS2l0OjpXZWJJ
bWFnZUxheWVyIGltYWdlTGF5ZXIgPSBtX2NvbnRlbnRzTGF5ZXIudG88V2ViS2l0OjpXZWJJbWFn
ZUxheWVyPigpOwogICAgICAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1hZ2Ut
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgICAgIGltYWdlTGF5ZXIuc2V0Qml0
bWFwKG5hdGl2ZUltYWdlLT5iaXRtYXAoKSk7Ci0gICAgICAgIGltYWdlTGF5ZXIuc2V0T3BhcXVl
KGltYWdlLT5pc0JpdG1hcEltYWdlKCkgJiYgIWltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgp
KTsKKyAgICAgICAgbV9pbWFnZUxheWVyLT5zZXRCaXRtYXAobmF0aXZlSW1hZ2UtPmJpdG1hcCgp
KTsKKyAgICAgICAgbV9pbWFnZUxheWVyLT5sYXllcigpLT5zZXRPcGFxdWUoaW1hZ2UtPmlzQml0
bWFwSW1hZ2UoKSAmJiAhaW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkpOwogICAgICAgICB1
cGRhdGVDb250ZW50c1JlY3QoKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIW1fY29udGVu
dHNMYXllci5pc051bGwoKSkgeworICAgICAgICBpZiAobV9pbWFnZUxheWVyKSB7CiAgICAgICAg
ICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwogCi0gICAgICAgICAgICAvLyBUaGUgb2xkIGNv
bnRlbnRzIGxheWVyIHdpbGwgYmUgcmVtb3ZlZCB2aWEgdXBkYXRlQ2hpbGRMaXN0LgotICAgICAg
ICAgICAgbV9jb250ZW50c0xheWVyLnJlc2V0KCk7CisgICAgICAgICAgICBtX2ltYWdlTGF5ZXIu
Y2xlYXIoKTsKICAgICAgICAgfQorICAgICAgICAvLyBUaGUgb2xkIGNvbnRlbnRzIGxheWVyIHdp
bGwgYmUgcmVtb3ZlZCB2aWEgdXBkYXRlQ2hpbGRMaXN0LgorICAgICAgICBtX2NvbnRlbnRzTGF5
ZXIgPSAwOwogICAgIH0KIAogICAgIGlmIChjaGlsZHJlbkNoYW5nZWQpCiAgICAgICAgIHVwZGF0
ZUNoaWxkTGlzdCgpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVu
dHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKQordm9pZCBHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogbGF5ZXIpCit7
CisgICAgc2V0Q29udGVudHNUbyhDb250ZW50c0xheWVyRm9yQ2FudmFzLCBsYXllcik7Cit9CisK
K3ZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1M
YXllciogbGF5ZXIpCit7CisgICAgc2V0Q29udGVudHNUbyhDb250ZW50c0xheWVyRm9yVmlkZW8s
IGxheWVyKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG8o
Q29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSwgV2ViS2l0OjpXZWJMYXllciogbGF5ZXIpCiB7
CiAgICAgYm9vbCBjaGlsZHJlbkNoYW5nZWQgPSBmYWxzZTsKLSAgICBpZiAocGxhdGZvcm1MYXll
cikgewotICAgICAgICBpZiAobV9jb250ZW50c0xheWVyICE9ICpwbGF0Zm9ybUxheWVyKSB7Ci0g
ICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIoKnBsYXRmb3JtTGF5ZXIpOwotICAgICAgICAg
ICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JDYW52YXM7CisgICAg
aWYgKGxheWVyKSB7CisgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgfHwgbV9jb250ZW50c0xh
eWVyUHVycG9zZSAhPSBwdXJwb3NlKSB7CisgICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIo
bGF5ZXIpOworICAgICAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IHB1cnBvc2U7CiAg
ICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHVw
ZGF0ZUNvbnRlbnRzUmVjdCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghbV9jb250ZW50
c0xheWVyLmlzTnVsbCgpKSB7CisgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKICAgICAg
ICAgICAgIGNoaWxkcmVuQ2hhbmdlZCA9IHRydWU7CiAKICAgICAgICAgICAgIC8vIFRoZSBvbGQg
Y29udGVudHMgbGF5ZXIgd2lsbCBiZSByZW1vdmVkIHZpYSB1cGRhdGVDaGlsZExpc3QuCi0gICAg
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXIucmVzZXQoKTsKKyAgICAgICAgICAgIG1fY29udGVudHNM
YXllciA9IDA7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTUyNSw3ICs1MDIsNyBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBw
bGF0Zm9ybUxheWVyKQogCiBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9u
KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZXMsIGNvbnN0IEludFNpemUmIGJveFNpemUs
IGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUs
IGRvdWJsZSB0aW1lT2Zmc2V0KQogewotICAgIHByaW1hcnlMYXllcigpLnNldEFuaW1hdGlvbkRl
bGVnYXRlKHRoaXMpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c2V0QW5pbWF0aW9uRGVsZWdhdGUo
dGhpcyk7CiAKICAgICBpbnQgYW5pbWF0aW9uSWQgPSBtYXBBbmltYXRpb25OYW1lVG9JZChhbmlt
YXRpb25OYW1lKTsKICAgICBpbnQgZ3JvdXBJZCA9IEFuaW1hdGlvbklkVmVuZG9yOjpnZXROZXh0
R3JvdXBJZCgpOwpAQCAtNTM0LDggKzUxMSw4IEBAIGJvb2wgR3JhcGhpY3NMYXllckNocm9taXVt
OjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlcywgY29uc3QKIAog
ICAgIGlmICh0b0FkZCkgewogICAgICAgICAvLyBSZW1vdmUgYW55IGV4aXN0aW5nIGFuaW1hdGlv
bnMgd2l0aCB0aGUgc2FtZSBhbmltYXRpb24gaWQgYW5kIHRhcmdldCBwcm9wZXJ0eS4KLSAgICAg
ICAgcHJpbWFyeUxheWVyKCkucmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCB0b0FkZC0+dGFy
Z2V0UHJvcGVydHkoKSk7Ci0gICAgICAgIHJldHVybiBwcmltYXJ5TGF5ZXIoKS5hZGRBbmltYXRp
b24odG9BZGQuZ2V0KCkpOworICAgICAgICBwbGF0Zm9ybUxheWVyKCktPnJlbW92ZUFuaW1hdGlv
bihhbmltYXRpb25JZCwgdG9BZGQtPnRhcmdldFByb3BlcnR5KCkpOworICAgICAgICByZXR1cm4g
cGxhdGZvcm1MYXllcigpLT5hZGRBbmltYXRpb24odG9BZGQuZ2V0KCkpOwogICAgIH0KIAogICAg
IHJldHVybiBmYWxzZTsKQEAgLTU0MywxMiArNTIwLDEyIEBAIGJvb2wgR3JhcGhpY3NMYXllckNo
cm9taXVtOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlcywgY29u
c3QKIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0
cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCiB7Ci0gICAgcHJpbWFyeUxh
eWVyKCkucGF1c2VBbmltYXRpb24obWFwQW5pbWF0aW9uTmFtZVRvSWQoYW5pbWF0aW9uTmFtZSks
IHRpbWVPZmZzZXQpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+cGF1c2VBbmltYXRpb24obWFwQW5p
bWF0aW9uTmFtZVRvSWQoYW5pbWF0aW9uTmFtZSksIHRpbWVPZmZzZXQpOwogfQogCiB2b2lkIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0
aW9uTmFtZSkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5yZW1vdmVBbmltYXRpb24obWFwQW5pbWF0
aW9uTmFtZVRvSWQoYW5pbWF0aW9uTmFtZSkpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+cmVtb3Zl
QW5pbWF0aW9uKG1hcEFuaW1hdGlvbk5hbWVUb0lkKGFuaW1hdGlvbk5hbWUpKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB3YWxsQ2xv
Y2tUaW1lKQpAQCAtNTU2LDg4ICs1MzMsNTQgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogICAgIC8vIHx3YWxsQ2xv
Y2tUaW1lfCBpcyBpbiB0aGUgd3JvbmcgdGltZSBiYXNlLiBOZWVkIHRvIGNvbnZlcnQgaGVyZS4K
ICAgICAvLyBGSVhNRTogZmluZCBhIG1vcmUgcmVsaWFibGUgd2F5IHRvIGRvIHRoaXMuCiAgICAg
ZG91YmxlIG1vbm90b25pY1RpbWUgPSB3YWxsQ2xvY2tUaW1lICsgbW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCkgLSBjdXJyZW50VGltZSgpOwotICAgIHByaW1hcnlMYXllcigpLnN1c3BlbmRB
bmltYXRpb25zKG1vbm90b25pY1RpbWUpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c3VzcGVuZEFu
aW1hdGlvbnMobW9ub3RvbmljVGltZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVt
OjpyZXN1bWVBbmltYXRpb25zKCkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5yZXN1bWVBbmltYXRp
b25zKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsKKyAgICBwbGF0Zm9ybUxheWVyKCkt
PnJlc3VtZUFuaW1hdGlvbnMobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOwogfQogCi12
b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkTGlua0hpZ2hsaWdodChjb25zdCBQYXRoJiBw
YXRoKQordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZExpbmtIaWdobGlnaHQoY29uc3Qg
UGF0aCYpCiB7Ci0gICAgbV9saW5rSGlnaGxpZ2h0ID0gTGlua0hpZ2hsaWdodDo6Y3JlYXRlKHRo
aXMsIHBhdGgsIEFuaW1hdGlvbklkVmVuZG9yOjpMaW5rSGlnaGxpZ2h0QW5pbWF0aW9uSWQsIEFu
aW1hdGlvbklkVmVuZG9yOjpnZXROZXh0R3JvdXBJZCgpKTsKLSAgICB1cGRhdGVDaGlsZExpc3Qo
KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmRpZEZpbmlzaExpbmtIaWdobGln
aHQoKQogewotICAgIGlmIChtX2xpbmtIaWdobGlnaHQpCi0gICAgICAgIG1fbGlua0hpZ2hsaWdo
dC0+Y29udGVudExheWVyKCktPnJlbW92ZUZyb21QYXJlbnQoKTsKLQotICAgIG1fbGlua0hpZ2hs
aWdodC5jbGVhcigpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVu
dHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQotewotICAgIGJvb2wgY2hpbGRyZW5DaGFu
Z2VkID0gZmFsc2U7Ci0gICAgaWYgKGxheWVyKSB7Ci0gICAgICAgIGlmIChtX2NvbnRlbnRzTGF5
ZXIuaXNOdWxsKCkgfHwgbV9jb250ZW50c0xheWVyUHVycG9zZSAhPSBDb250ZW50c0xheWVyRm9y
VmlkZW8pIHsKLSAgICAgICAgICAgIHNldHVwQ29udGVudHNMYXllcigqbGF5ZXIpOwotICAgICAg
ICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JWaWRlbzsKLSAg
ICAgICAgICAgIGNoaWxkcmVuQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgdXBk
YXRlQ29udGVudHNSZWN0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFtX2NvbnRlbnRz
TGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGNoaWxkcmVuQ2hhbmdlZCA9IHRydWU7Ci0K
LSAgICAgICAgICAgIC8vIFRoZSBvbGQgY29udGVudHMgbGF5ZXIgd2lsbCBiZSByZW1vdmVkIHZp
YSB1cGRhdGVDaGlsZExpc3QuCi0gICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXIucmVzZXQoKTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChjaGlsZHJlbkNoYW5nZWQpCi0gICAgICAgIHVw
ZGF0ZUNoaWxkTGlzdCgpOwotfQotCi1XZWJLaXQ6OldlYkxheWVyIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6cHJpbWFyeUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90cmFuc2Zvcm1MYXll
ci5pc051bGwoKSA/IG1fbGF5ZXIgOiBtX3RyYW5zZm9ybUxheWVyOwogfQogCiBQbGF0Zm9ybUxh
eWVyKiBHcmFwaGljc0xheWVyQ2hyb21pdW06OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotICAg
IHJldHVybiBjb25zdF9jYXN0PFBsYXRmb3JtTGF5ZXIqPihtX3RyYW5zZm9ybUxheWVyLmlzTnVs
bCgpID8gJm1fbGF5ZXIgOiAmbV90cmFuc2Zvcm1MYXllcik7CisgICAgcmV0dXJuIG1fdHJhbnNm
b3JtTGF5ZXIgPyBtX3RyYW5zZm9ybUxheWVyLmdldCgpIDogbV9sYXllci0+bGF5ZXIoKTsKIH0K
IAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldERlYnVnQmFja2dyb3VuZENvbG9yKGNv
bnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKQotICAgICAgICBt
X2xheWVyLnNldEJhY2tncm91bmRDb2xvcihjb2xvci5yZ2IoKSk7CisgICAgICAgIG1fbGF5ZXIt
PmxheWVyKCktPnNldEJhY2tncm91bmRDb2xvcihjb2xvci5yZ2IoKSk7CiAgICAgZWxzZQotICAg
ICAgICBtX2xheWVyLnNldEJhY2tncm91bmRDb2xvcihzdGF0aWNfY2FzdDxSR0JBMzI+KDApKTsK
KyAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0QmFja2dyb3VuZENvbG9yKHN0YXRpY19jYXN0
PFJHQkEzMj4oMCkpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0RGVidWdC
b3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCkKIHsKICAgICBpZiAo
Y29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIG1fbGF5ZXIuc2V0RGVidWdCb3JkZXJDb2xvcihj
b2xvci5yZ2IoKSk7Ci0gICAgICAgIG1fbGF5ZXIuc2V0RGVidWdCb3JkZXJXaWR0aChib3JkZXJX
aWR0aCk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNldERlYnVnQm9yZGVyQ29sb3IoY29s
b3IucmdiKCkpOworICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXREZWJ1Z0JvcmRlcldpZHRo
KGJvcmRlcldpZHRoKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2xheWVyLnNldERlYnVnQm9y
ZGVyQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7Ci0gICAgICAgIG1fbGF5ZXIuc2V0RGVi
dWdCb3JkZXJXaWR0aCgwKTsKKyAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RGVidWdCb3Jk
ZXJDb2xvcihzdGF0aWNfY2FzdDxSR0JBMzI+KDApKTsKKyAgICAgICAgbV9sYXllci0+bGF5ZXIo
KS0+c2V0RGVidWdCb3JkZXJXaWR0aCgwKTsKICAgICB9CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXll
ckNocm9taXVtOjp1cGRhdGVDaGlsZExpc3QoKQogewotICAgIFZlY3RvcjxXZWJMYXllcj4gbmV3
Q2hpbGRyZW47CisgICAgVmVjdG9yPFdlYkxheWVyKj4gbmV3Q2hpbGRyZW47CiAKLSAgICBpZiAo
IW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICBpZiAobV90cmFuc2Zvcm1MYXllcikg
ewogICAgICAgICAvLyBBZGQgdGhlIHByaW1hcnkgbGF5ZXIgZmlyc3QuIEV2ZW4gaWYgd2UgaGF2
ZSBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVuLCB0aGUgcHJpbWFyeSBsYXllciBhbHdheXMgY29t
ZXMgYmVoaW5kLgotICAgICAgICBuZXdDaGlsZHJlbi5hcHBlbmQobV9sYXllcik7Ci0gICAgfSBl
bHNlIGlmICghbV9jb250ZW50c0xheWVyLmlzTnVsbCgpKSB7CisgICAgICAgIG5ld0NoaWxkcmVu
LmFwcGVuZChtX2xheWVyLT5sYXllcigpKTsKKyAgICB9IGVsc2UgaWYgKG1fY29udGVudHNMYXll
cikgewogICAgICAgICAvLyBGSVhNRTogYWRkIHRoZSBjb250ZW50cyBsYXllciBpbiB0aGUgY29y
cmVjdCBvcmRlciB3aXRoIG5lZ2F0aXZlIHotb3JkZXIgY2hpbGRyZW4uCiAgICAgICAgIC8vIFRo
aXMgZG9lcyBub3QgY2F1c2UgdmlzaWJsZSByZW5kZXJpbmcgaXNzdWVzIGJlY2F1c2UgY3VycmVu
dGx5IGNvbnRlbnRzIGxheWVycyBhcmUgb25seSB1c2VkCiAgICAgICAgIC8vIGZvciByZXBsYWNl
ZCBlbGVtZW50cyB0aGF0IGRvbid0IGhhdmUgY2hpbGRyZW4uCkBAIC02NDksNzkgKzU5Miw3NiBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ2hpbGRMaXN0KCkKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKICAgICAgICAgR3JhcGhpY3NM
YXllckNocm9taXVtKiBjdXJDaGlsZCA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bSo+KGNoaWxkTGF5ZXJzW2ldKTsKIAotICAgICAgICBuZXdDaGlsZHJlbi5hcHBlbmQoY3VyQ2hp
bGQtPnByaW1hcnlMYXllcigpKTsKKyAgICAgICAgbmV3Q2hpbGRyZW4uYXBwZW5kKGN1ckNoaWxk
LT5wbGF0Zm9ybUxheWVyKCkpOwogICAgIH0KIAotICAgIGlmIChtX2xpbmtIaWdobGlnaHQpCi0g
ICAgICAgIG5ld0NoaWxkcmVuLmFwcGVuZChtX2xpbmtIaWdobGlnaHQtPmNvbnRlbnRMYXllcigp
KTsKLQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3Q2hpbGRyZW4uc2l6ZSgpOyArK2kp
Ci0gICAgICAgIG5ld0NoaWxkcmVuW2ldLnJlbW92ZUZyb21QYXJlbnQoKTsKKyAgICAgICAgbmV3
Q2hpbGRyZW5baV0tPnJlbW92ZUZyb21QYXJlbnQoKTsKIAotICAgIFdlYlZlY3RvcjxXZWJMYXll
cj4gbmV3V2ViQ2hpbGRyZW47CisgICAgV2ViVmVjdG9yPFdlYkxheWVyKj4gbmV3V2ViQ2hpbGRy
ZW47CiAgICAgbmV3V2ViQ2hpbGRyZW4uYXNzaWduKG5ld0NoaWxkcmVuLmRhdGEoKSwgbmV3Q2hp
bGRyZW4uc2l6ZSgpKTsKIAotICAgIGlmICghbV90cmFuc2Zvcm1MYXllci5pc051bGwoKSkgewot
ICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnNldENoaWxkcmVuKG5ld1dlYkNoaWxkcmVuKTsKKyAg
ICBpZiAobV90cmFuc2Zvcm1MYXllcikgeworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXRD
aGlsZHJlbihuZXdXZWJDaGlsZHJlbik7CiAKLSAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIu
aXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKG1fY29udGVudHNMYXllcikgewogICAgICAgICAgICAg
Ly8gSWYgd2UgaGF2ZSBhIHRyYW5zZm9ybSBsYXllciwgdGhlbiB0aGUgY29udGVudHMgbGF5ZXIg
aXMgcGFyZW50ZWQgaW4gdGhlCiAgICAgICAgICAgICAvLyBwcmltYXJ5IGxheWVyICh3aGljaCBp
cyBpdHNlbGYgYSBjaGlsZCBvZiB0aGUgdHJhbnNmb3JtIGxheWVyKS4KLSAgICAgICAgICAgIG1f
bGF5ZXIucmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLSAgICAgICAgICAgIG1fbGF5ZXIuYWRkQ2hpbGQo
bV9jb250ZW50c0xheWVyKTsKKyAgICAgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnJlbW92ZUFs
bENoaWxkcmVuKCk7CisgICAgICAgICAgICBtX2xheWVyLT5sYXllcigpLT5hZGRDaGlsZChtX2Nv
bnRlbnRzTGF5ZXIpOwogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIG1fbGF5ZXIuc2V0
Q2hpbGRyZW4obmV3V2ViQ2hpbGRyZW4pOworICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXRD
aGlsZHJlbihuZXdXZWJDaGlsZHJlbik7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVt
Ojp1cGRhdGVMYXllclBvc2l0aW9uKCkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRQb3NpdGlv
bihtX3Bvc2l0aW9uKTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnNldFBvc2l0aW9uKG1fcG9zaXRp
b24pOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJTaXplKCkK
IHsKICAgICBJbnRTaXplIGxheWVyU2l6ZShtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgp
KTsKLSAgICBpZiAoIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAgbV90cmFu
c2Zvcm1MYXllci5zZXRCb3VuZHMobGF5ZXJTaXplKTsKLSAgICAgICAgbV9sYXllci5zZXRQb3Np
dGlvbihGbG9hdFBvaW50KCkpOworICAgIGlmIChtX3RyYW5zZm9ybUxheWVyKSB7CisgICAgICAg
IG1fdHJhbnNmb3JtTGF5ZXItPnNldEJvdW5kcyhsYXllclNpemUpOworICAgICAgICBtX2xheWVy
LT5sYXllcigpLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KCkpOwogICAgIH0KIAotICAgIG1fbGF5
ZXIuc2V0Qm91bmRzKGxheWVyU2l6ZSk7CisgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0Qm91bmRz
KGxheWVyU2l6ZSk7CiAKLSAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgcmVzaXplIG1fY29udGVu
dHNMYXllci4gSXQncyB1cCB0aGUgY2FsbGVyIHRvIGRvIHRoYXQuCisgICAgLy8gTm90ZSB0aGF0
IHdlIGRvbid0IHJlc2l6ZSBtX2NvbnRlbnRzTGF5ZXItPiBJdCdzIHVwIHRoZSBjYWxsZXIgdG8g
ZG8gdGhhdC4KIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUFuY2hvclBv
aW50KCkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KG1f
YW5jaG9yUG9pbnQueCgpLCBtX2FuY2hvclBvaW50LnkoKSkpOwotICAgIHByaW1hcnlMYXllcigp
LnNldEFuY2hvclBvaW50WihtX2FuY2hvclBvaW50LnooKSk7CisgICAgcGxhdGZvcm1MYXllcigp
LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KG1fYW5jaG9yUG9pbnQueCgpLCBtX2FuY2hvclBv
aW50LnkoKSkpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c2V0QW5jaG9yUG9pbnRaKG1fYW5jaG9y
UG9pbnQueigpKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZVRyYW5z
Zm9ybSgpCiB7Ci0gICAgcHJpbWFyeUxheWVyKCkuc2V0VHJhbnNmb3JtKFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4KG1fdHJhbnNmb3JtKSk7CisgICAgcGxhdGZvcm1MYXllcigpLT5zZXRUcmFuc2Zv
cm0oV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgobV90cmFuc2Zvcm0pKTsKIH0KIAogdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCkKIHsKLSAgICBwcmlt
YXJ5TGF5ZXIoKS5zZXRTdWJsYXllclRyYW5zZm9ybShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCht
X2NoaWxkcmVuVHJhbnNmb3JtKSk7CisgICAgcGxhdGZvcm1MYXllcigpLT5zZXRTdWJsYXllclRy
YW5zZm9ybShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX2NoaWxkcmVuVHJhbnNmb3JtKSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVNYXNrc1RvQm91bmRzKCkKIHsK
LSAgICBtX2xheWVyLnNldE1hc2tzVG9Cb3VuZHMobV9tYXNrc1RvQm91bmRzKTsKKyAgICBtX2xh
eWVyLT5sYXllcigpLT5zZXRNYXNrc1RvQm91bmRzKG1fbWFza3NUb0JvdW5kcyk7CiAgICAgdXBk
YXRlRGVidWdJbmRpY2F0b3JzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1
cGRhdGVMYXllclByZXNlcnZlczNEKCkKIHsKLSAgICBpZiAobV9wcmVzZXJ2ZXMzRCAmJiBtX3Ry
YW5zZm9ybUxheWVyLmlzTnVsbCgpKSB7CisgICAgaWYgKG1fcHJlc2VydmVzM0QgJiYgIW1fdHJh
bnNmb3JtTGF5ZXIpIHsKICAgICAgICAgLy8gQ3JlYXRlIHRoZSB0cmFuc2Zvcm0gbGF5ZXIuCi0g
ICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIgPSBXZWJMYXllcjo6Y3JlYXRlKCk7Ci0gICAgICAgIG1f
dHJhbnNmb3JtTGF5ZXIuc2V0UHJlc2VydmVzM0QodHJ1ZSk7Ci0gICAgICAgIG1fdHJhbnNmb3Jt
TGF5ZXIuc2V0QW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7Ci0gICAgICAgIG1fbGF5ZXIudHJhbnNm
ZXJBbmltYXRpb25zVG8oJm1fdHJhbnNmb3JtTGF5ZXIpOworICAgICAgICBtX3RyYW5zZm9ybUxh
eWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICAgICAgbV90cmFuc2Zvcm1M
YXllci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNl
dEFuaW1hdGlvbkRlbGVnYXRlKHRoaXMpOworICAgICAgICBtX2xheWVyLT5sYXllcigpLT50cmFu
c2ZlckFuaW1hdGlvbnNUbyhtX3RyYW5zZm9ybUxheWVyLmdldCgpKTsKIAogICAgICAgICAvLyBD
b3B5IHRoZSBwb3NpdGlvbiBmcm9tIHRoaXMgbGF5ZXIuCiAgICAgICAgIHVwZGF0ZUxheWVyUG9z
aXRpb24oKTsKQEAgLTczMCwzNCArNjcwLDM0IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVt
Ojp1cGRhdGVMYXllclByZXNlcnZlczNEKCkKICAgICAgICAgdXBkYXRlVHJhbnNmb3JtKCk7CiAg
ICAgICAgIHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7CiAKLSAgICAgICAgbV9sYXllci5zZXRQ
b3NpdGlvbihGbG9hdFBvaW50Ojp6ZXJvKCkpOworICAgICAgICBtX2xheWVyLT5sYXllcigpLT5z
ZXRQb3NpdGlvbihGbG9hdFBvaW50Ojp6ZXJvKCkpOwogCi0gICAgICAgIG1fbGF5ZXIuc2V0QW5j
aG9yUG9pbnQoRmxvYXRQb2ludCgwLjVmLCAwLjVmKSk7Ci0gICAgICAgIG1fbGF5ZXIuc2V0VHJh
bnNmb3JtKFNrTWF0cml4NDQoKSk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEFuY2hv
clBvaW50KEZsb2F0UG9pbnQoMC41ZiwgMC41ZikpOworICAgICAgICBtX2xheWVyLT5sYXllcigp
LT5zZXRUcmFuc2Zvcm0oU2tNYXRyaXg0NCgpKTsKIAogICAgICAgICAvLyBTZXQgdGhlIG9sZCBs
YXllciB0byBvcGFjaXR5IG9mIDEuIEZ1cnRoZXIgZG93biB3ZSB3aWxsIHNldCB0aGUgb3BhY2l0
eSBvbiB0aGUgdHJhbnNmb3JtIGxheWVyLgotICAgICAgICBtX2xheWVyLnNldE9wYWNpdHkoMSk7
CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNldE9wYWNpdHkoMSk7CiAKLSAgICAgICAgbV9s
YXllci5zZXRDb250ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUoKSk7CisgICAgICAgIG1fbGF5ZXIt
PnNldENvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSgpKTsKIAogICAgICAgICAvLyBNb3ZlIHRo
aXMgbGF5ZXIgdG8gYmUgYSBjaGlsZCBvZiB0aGUgdHJhbnNmb3JtIGxheWVyLgogICAgICAgICBp
ZiAocGFyZW50KCkpCi0gICAgICAgICAgICBwYXJlbnQoKS0+cGxhdGZvcm1MYXllcigpLT5yZXBs
YWNlQ2hpbGQobV9sYXllciwgbV90cmFuc2Zvcm1MYXllcik7Ci0gICAgICAgIG1fdHJhbnNmb3Jt
TGF5ZXIuYWRkQ2hpbGQobV9sYXllcik7CisgICAgICAgICAgICBwYXJlbnQoKS0+cGxhdGZvcm1M
YXllcigpLT5yZXBsYWNlQ2hpbGQobV9sYXllci0+bGF5ZXIoKSwgbV90cmFuc2Zvcm1MYXllci5n
ZXQoKSk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPmFkZENoaWxkKG1fbGF5ZXItPmxheWVy
KCkpOwogCiAgICAgICAgIHVwZGF0ZUNoaWxkTGlzdCgpOwotICAgIH0gZWxzZSBpZiAoIW1fcHJl
c2VydmVzM0QgJiYgIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICB9IGVsc2UgaWYg
KG1fcHJlc2VydmVzM0QgJiYgIW1fdHJhbnNmb3JtTGF5ZXIpIHsKICAgICAgICAgLy8gUmVsYWNl
IHRoZSB0cmFuc2Zvcm1MYXllciBpbiB0aGUgcGFyZW50IHdpdGggdGhpcyBsYXllci4KLSAgICAg
ICAgbV9sYXllci5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCkt
PnJlbW92ZUZyb21QYXJlbnQoKTsKICAgICAgICAgaWYgKHBhcmVudCgpKQotICAgICAgICAgICAg
cGFyZW50KCktPnBsYXRmb3JtTGF5ZXIoKS0+cmVwbGFjZUNoaWxkKG1fdHJhbnNmb3JtTGF5ZXIs
IG1fbGF5ZXIpOworICAgICAgICAgICAgcGFyZW50KCktPnBsYXRmb3JtTGF5ZXIoKS0+cmVwbGFj
ZUNoaWxkKG1fdHJhbnNmb3JtTGF5ZXIuZ2V0KCksIG1fbGF5ZXItPmxheWVyKCkpOwogCi0gICAg
ICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7Ci0gICAgICAgIG1fdHJhbnNm
b3JtTGF5ZXIudHJhbnNmZXJBbmltYXRpb25zVG8oJm1fbGF5ZXIpOworICAgICAgICBtX2xheWVy
LT5sYXllcigpLT5zZXRBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKKyAgICAgICAgbV90cmFuc2Zv
cm1MYXllci0+dHJhbnNmZXJBbmltYXRpb25zVG8obV9sYXllci0+bGF5ZXIoKSk7CiAKICAgICAg
ICAgLy8gUmVsZWFzZSB0aGUgdHJhbnNmb3JtIGxheWVyLgotICAgICAgICBtX3RyYW5zZm9ybUxh
eWVyLnNldEFuaW1hdGlvbkRlbGVnYXRlKDApOwotICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnJl
c2V0KCk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldEFuaW1hdGlvbkRlbGVnYXRlKDAp
OworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLmNsZWFyKCk7CiAKICAgICAgICAgdXBkYXRlTGF5
ZXJQb3NpdGlvbigpOwogICAgICAgICB1cGRhdGVMYXllclNpemUoKTsKQEAgLTc2OCwzOSArNzA4
LDM5IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNE
KCkKICAgICAgICAgdXBkYXRlQ2hpbGRMaXN0KCk7CiAgICAgfQogCi0gICAgbV9sYXllci5zZXRQ
cmVzZXJ2ZXMzRChtX3ByZXNlcnZlczNEKTsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRPcGFjaXR5
KG1fb3BhY2l0eSk7CisgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0UHJlc2VydmVzM0QobV9wcmVz
ZXJ2ZXMzRCk7CisgICAgcGxhdGZvcm1MYXllcigpLT5zZXRPcGFjaXR5KG1fb3BhY2l0eSk7CiAg
ICAgdXBkYXRlTmFtZXMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0
ZUxheWVySXNEcmF3YWJsZSgpCiB7CiAgICAgLy8gRm9yIHRoZSByZXN0IG9mIHRoZSBhY2NlbGVy
YXRlZCBjb21wb3NpdG9yIGNvZGUsIHRoZXJlIGlzIG5vIHJlYXNvbiB0byBtYWtlIGEKLSAgICAv
LyBkaXN0aW5jdGlvbiBiZXR3ZWVuIGRyYXdzQ29udGVudCBhbmQgY29udGVudHNWaXNpYmxlLiBT
bywgZm9yIG1fbGF5ZXIsIHRoZXNlIHR3bworICAgIC8vIGRpc3RpbmN0aW9uIGJldHdlZW4gZHJh
d3NDb250ZW50IGFuZCBjb250ZW50c1Zpc2libGUuIFNvLCBmb3IgbV9sYXllci0+bGF5ZXIoKSwg
dGhlc2UgdHdvCiAgICAgLy8gZmxhZ3MgYXJlIGNvbWJpbmVkIGhlcmUuIG1fY29udGVudHNMYXll
ciBzaG91bGRuJ3QgcmVjZWl2ZSB0aGUgZHJhd3NDb250ZW50IGZsYWcKICAgICAvLyBzbyBpdCBp
cyBvbmx5IGdpdmVuIGNvbnRlbnRzVmlzaWJsZS4KIAotICAgIG1fbGF5ZXIuc2V0RHJhd3NDb250
ZW50KG1fZHJhd3NDb250ZW50ICYmIG1fY29udGVudHNWaXNpYmxlKTsKKyAgICBtX2xheWVyLT5s
YXllcigpLT5zZXREcmF3c0NvbnRlbnQobV9kcmF3c0NvbnRlbnQgJiYgbV9jb250ZW50c1Zpc2li
bGUpOwogCi0gICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1fY29u
dGVudHNMYXllci5zZXREcmF3c0NvbnRlbnQobV9jb250ZW50c1Zpc2libGUpOworICAgIGlmICht
X2NvbnRlbnRzTGF5ZXIpCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0RHJhd3NDb250ZW50
KG1fY29udGVudHNWaXNpYmxlKTsKIAogICAgIGlmIChtX2RyYXdzQ29udGVudCkKLSAgICAgICAg
bV9sYXllci5pbnZhbGlkYXRlKCk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPmludmFsaWRh
dGUoKTsKIAogICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwogfQogCiB2b2lkIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJCYWNrZ3JvdW5kQ29sb3IoKQogewotICAgIGlmICht
X2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpCisgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIFdlIG5ldmVyIGNyZWF0ZSB0aGUgY29udGVudHMgbGF5ZXIg
anVzdCBmb3IgYmFja2dyb3VuZCBjb2xvciB5ZXQuCiAgICAgaWYgKG1fYmFja2dyb3VuZENvbG9y
U2V0KQotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0QmFja2dyb3VuZENvbG9yKG1fYmFja2dy
b3VuZENvbG9yLnJnYigpKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNrZ3JvdW5k
Q29sb3IobV9iYWNrZ3JvdW5kQ29sb3IucmdiKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9jb250
ZW50c0xheWVyLnNldEJhY2tncm91bmRDb2xvcihzdGF0aWNfY2FzdDxSR0JBMzI+KDApKTsKKyAg
ICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdC
QTMyPigwKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50
c1ZpZGVvKCkKQEAgLTgxMCw1MCArNzUwLDQ5IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVt
Ojp1cGRhdGVDb250ZW50c1ZpZGVvKCkKIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbnRlbnRzUmVjdCgpCiB7Ci0gICAgaWYgKG1fY29udGVudHNMYXllci5pc051bGwoKSkK
KyAgICBpZiAoIW1fY29udGVudHNMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250
ZW50c0xheWVyLnNldFBvc2l0aW9uKEZsb2F0UG9pbnQobV9jb250ZW50c1JlY3QueCgpLCBtX2Nv
bnRlbnRzUmVjdC55KCkpKTsKLSAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0Qm91bmRzKEludFNpemUo
bV9jb250ZW50c1JlY3Qud2lkdGgoKSwgbV9jb250ZW50c1JlY3QuaGVpZ2h0KCkpKTsKKyAgICBt
X2NvbnRlbnRzTGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQobV9jb250ZW50c1JlY3QueCgp
LCBtX2NvbnRlbnRzUmVjdC55KCkpKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEJvdW5kcyhJ
bnRTaXplKG1fY29udGVudHNSZWN0LndpZHRoKCksIG1fY29udGVudHNSZWN0LmhlaWdodCgpKSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50c1NjYWxlKCkK
IHsKICAgICAvLyBJZiBwYWdlIHNjYWxlIGlzIGFscmVhZHkgYXBwbGllZCB0aGVuIHRoZXJlJ3Mg
bm8gbmVlZCB0byBhcHBseSBpdCBhZ2Fpbi4KLSAgICBpZiAoYXBwbGllc1BhZ2VTY2FsZSgpIHx8
IG1fbGF5ZXIuaXNOdWxsKCkpCisgICAgaWYgKGFwcGxpZXNQYWdlU2NhbGUoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9sYXllci5zZXRDb250ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUoKSk7
CisgICAgbV9sYXllci0+c2V0Q29udGVudHNTY2FsZShjb250ZW50c1NjYWxlKCkpOwogfQogCi12
b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0dXBDb250ZW50c0xheWVyKFdlYkxheWVyIGNv
bnRlbnRzTGF5ZXIpCit2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0dXBDb250ZW50c0xh
eWVyKFdlYkxheWVyKiBjb250ZW50c0xheWVyKQogewogICAgIGlmIChjb250ZW50c0xheWVyID09
IG1fY29udGVudHNMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2NvbnRlbnRz
TGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAgbV9jb250ZW50c0xheWVyLnNldFVzZVBhcmVudEJh
Y2tmYWNlVmlzaWJpbGl0eShmYWxzZSk7Ci0gICAgICAgIG1fY29udGVudHNMYXllci5yZW1vdmVG
cm9tUGFyZW50KCk7Ci0gICAgICAgIG1fY29udGVudHNMYXllci5yZXNldCgpOworICAgIGlmICht
X2NvbnRlbnRzTGF5ZXIpIHsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRVc2VQYXJlbnRC
YWNrZmFjZVZpc2liaWxpdHkoZmFsc2UpOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnJlbW92
ZUZyb21QYXJlbnQoKTsKICAgICB9CiAKICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjb250ZW50c0xh
eWVyOwogCi0gICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAgbV9j
b250ZW50c0xheWVyLnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwotICAgICAgICBt
X2NvbnRlbnRzTGF5ZXIuc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KHRydWUpOworICAg
IGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRBbmNo
b3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRV
c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkodHJ1ZSk7CiAKICAgICAgICAgLy8gSXQgaXMgbmVj
ZXNzYXJ5IHRvIGNhbGwgc2V0RHJhd3NDb250ZW50IGFzIHNvb24gYXMgd2UgcmVjZWl2ZSB0aGUg
bmV3IGNvbnRlbnRzTGF5ZXIsIGZvcgogICAgICAgICAvLyB0aGUgY29ycmVjdG5lc3Mgb2YgZWFy
bHkgZXhpdCBjb25kaXRpb25zIGluIHNldERyYXdzQ29udGVudCgpIGFuZCBzZXRDb250ZW50c1Zp
c2libGUoKS4KLSAgICAgICAgbV9jb250ZW50c0xheWVyLnNldERyYXdzQ29udGVudChtX2NvbnRl
bnRzVmlzaWJsZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0RHJhd3NDb250ZW50KG1f
Y29udGVudHNWaXNpYmxlKTsKIAogICAgICAgICAvLyBJbnNlcnQgdGhlIGNvbnRlbnQgbGF5ZXIg
Zmlyc3QuIFZpZGVvIGVsZW1lbnRzIHJlcXVpcmUgdGhpcywgYmVjYXVzZSB0aGV5IGhhdmUKICAg
ICAgICAgLy8gc2hhZG93IGNvbnRlbnQgdGhhdCBtdXN0IGRpc3BsYXkgaW4gZnJvbnQgb2YgdGhl
IHZpZGVvLgotICAgICAgICBtX2xheWVyLmluc2VydENoaWxkKG1fY29udGVudHNMYXllciwgMCk7
CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPmluc2VydENoaWxkKG1fY29udGVudHNMYXllciwg
MCk7CiAKICAgICAgICAgaWYgKHNob3dEZWJ1Z0JvcmRlcnMoKSkgewotICAgICAgICAgICAgbV9j
b250ZW50c0xheWVyLnNldERlYnVnQm9yZGVyQ29sb3IoQ29sb3IoMCwgMCwgMTI4LCAxODApLnJn
YigpKTsKLSAgICAgICAgICAgIG1fY29udGVudHNMYXllci5zZXREZWJ1Z0JvcmRlcldpZHRoKDEp
OworICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXREZWJ1Z0JvcmRlckNvbG9yKENvbG9y
KDAsIDAsIDEyOCwgMTgwKS5yZ2IoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNl
dERlYnVnQm9yZGVyV2lkdGgoMSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgdXBkYXRlRGVidWdJ
bmRpY2F0b3JzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGFhNjRl
YWQ2ZDY2NWUyNThkOTBkMDI2MGZhYTkxMTUwYjk2ZGFkNmIuLjU1N2FiNGRkODJjZmFjNDU2ZjRj
NGY4ZGMwZWUyNmE5MDViMTMwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5o
CkBAIC0zOSw2ICszOSw3IEBACiAKICNpbmNsdWRlIDxwdWJsaWMvV2ViQW5pbWF0aW9uRGVsZWdh
dGUuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29udGVudExheWVyLmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYkltYWdlTGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXIuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC0xMDEsNyArMTAyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKik7Ci0gICAgdmlydHVhbCBib29sIGhhc0Nv
bnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiAhbV9jb250ZW50c0xheWVyLmlzTnVsbCgpOyB9
CisgICAgdmlydHVhbCBib29sIGhhc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRlbnRzTGF5ZXI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5
ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24q
LCBjb25zdCBTdHJpbmcmLCBkb3VibGUgdGltZU9mZnNldCk7CiAgICAgdmlydHVhbCB2b2lkIHBh
dXNlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZz
ZXQpOwpAQCAtMTI1LDE1ICsxMjYsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBub3Rp
ZnlBbmltYXRpb25TdGFydGVkKGRvdWJsZSBzdGFydFRpbWUpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlBbmltYXRpb25GaW5pc2hlZChkb3VibGUgZmluaXNoVGltZSkgT1ZFUlJJ
REU7CiAKKyAgICBXZWJLaXQ6OldlYkNvbnRlbnRMYXllciogY29udGVudExheWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQorCiAgICAgLy8gRXhwb3NlZCBmb3IgdGVzdHMuCi0g
ICAgV2ViS2l0OjpXZWJMYXllciBjb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZW50c0xheWVyOyB9CisgICAgV2ViS2l0OjpXZWJMYXllciogY29udGVudHNMYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7Ci0K
LSAgICBXZWJLaXQ6OldlYkxheWVyIHByaW1hcnlMYXllcigpIGNvbnN0OwotCiAgICAgdm9pZCB1
cGRhdGVOYW1lcygpOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRMaXN0KCk7CiAgICAgdm9pZCB1cGRh
dGVMYXllclBvc2l0aW9uKCk7CkBAIC0xNTEsMzIgKzE1MCwzMiBAQCBwcml2YXRlOgogICAgIHZv
aWQgdXBkYXRlQ29udGVudHNSZWN0KCk7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50c1NjYWxlKCk7
CiAKLSAgICB2b2lkIHNldHVwQ29udGVudHNMYXllcihXZWJLaXQ6OldlYkxheWVyKTsKKyAgICBl
bnVtIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHsKKyAgICAgICAgTm9Db250ZW50c0xheWVyID0gMCwK
KyAgICAgICAgQ29udGVudHNMYXllckZvckltYWdlLAorICAgICAgICBDb250ZW50c0xheWVyRm9y
VmlkZW8sCisgICAgICAgIENvbnRlbnRzTGF5ZXJGb3JDYW52YXMsCisgICAgfTsKKworICAgIHZv
aWQgc2V0Q29udGVudHNUbyhDb250ZW50c0xheWVyUHVycG9zZSwgV2ViS2l0OjpXZWJMYXllciop
OworICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFdlYktpdDo6V2ViTGF5ZXIqKTsKIAogICAg
IGludCBtYXBBbmltYXRpb25OYW1lVG9JZChjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpOwog
CiAgICAgU3RyaW5nIG1fbmFtZUJhc2U7CiAKLSAgICBXZWJLaXQ6OldlYkNvbnRlbnRMYXllciBt
X2xheWVyOwotICAgIFdlYktpdDo6V2ViTGF5ZXIgbV90cmFuc2Zvcm1MYXllcjsKLSAgICBXZWJL
aXQ6OldlYkxheWVyIG1fY29udGVudHNMYXllcjsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJDb250
ZW50TGF5ZXI+IG1fbGF5ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViTGF5ZXI+IG1fdHJhbnNm
b3JtTGF5ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViSW1hZ2VMYXllcj4gbV9pbWFnZUxheWVy
OworICAgIFdlYktpdDo6V2ViTGF5ZXIqIG1fY29udGVudHNMYXllcjsKIAogICAgIE93blB0cjxP
cGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZT4gbV9vcGFxdWVSZWN0VHJhY2tp
bmdDb250ZW50TGF5ZXJEZWxlZ2F0ZTsKIAotICAgIGVudW0gQ29udGVudHNMYXllclB1cnBvc2Ug
ewotICAgICAgICBOb0NvbnRlbnRzTGF5ZXIgPSAwLAotICAgICAgICBDb250ZW50c0xheWVyRm9y
SW1hZ2UsCi0gICAgICAgIENvbnRlbnRzTGF5ZXJGb3JWaWRlbywKLSAgICAgICAgQ29udGVudHNM
YXllckZvckNhbnZhcywKLSAgICB9OwotCiAgICAgQ29udGVudHNMYXllclB1cnBvc2UgbV9jb250
ZW50c0xheWVyUHVycG9zZTsKICAgICBib29sIG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRD
b2xvciA6IDE7CiAgICAgYm9vbCBtX2luU2V0Q2hpbGRyZW47CiAgICAgYm9vbCBtX3BhZ2VTY2Fs
ZUNoYW5nZWQ7CiAKLSAgICBSZWZQdHI8TGlua0hpZ2hsaWdodD4gbV9saW5rSGlnaGxpZ2h0Owot
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgaW50PiBBbmltYXRpb25JZE1hcDsKICAgICBB
bmltYXRpb25JZE1hcCBtX2FuaW1hdGlvbklkTWFwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAK
aW5kZXggMzBjODFiNjVjOGU1ODgyMTAwYmE5MWJlOThhYzdmMTE5MmNkZjJmNC4uNGU3ZmE3NGY1
NTZlOTllODgwNDU5ZDU3NTM2Njg0ZGQ4MWEyODFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTIzNCwxMCArMjM0LDExIEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0Qm91bmRzKGNvbnN0
IEludFNpemUmIHNpemUpCiAgICAgICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKLWNvbnN0IExh
eWVyQ2hyb21pdW0qIExheWVyQ2hyb21pdW06OnJvb3RMYXllcigpIGNvbnN0CitMYXllckNocm9t
aXVtKiBMYXllckNocm9taXVtOjpyb290TGF5ZXIoKQogewotICAgIGNvbnN0IExheWVyQ2hyb21p
dW0qIGxheWVyID0gdGhpczsKLSAgICBmb3IgKExheWVyQ2hyb21pdW0qIHBhcmVudCA9IGxheWVy
LT5wYXJlbnQoKTsgcGFyZW50OyBsYXllciA9IHBhcmVudCwgcGFyZW50ID0gcGFyZW50LT5wYXJl
bnQoKSkgeyB9CisgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSB0aGlzOworICAgIHdoaWxlIChs
YXllci0+cGFyZW50KCkpCisgICAgICAgIGxheWVyID0gbGF5ZXItPnBhcmVudCgpOwogICAgIHJl
dHVybiBsYXllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGVjMTRhNTFhN2I0OTg4M2Uw
ZTVmZjdjNjYyZDBlMzVjOTdkMzVkNTAuLjJlNTQxZWU3YmVjYzNlMzdiNzliOTQ0NjRhZTY1NTY2
NGExZThjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgog
ICAgIC8vIFRoZSByb290IGxheWVyIGlzIGEgc3BlY2lhbCBjYXNlIC0tIGl0IG9wZXJhdGVzIGlu
IHBoeXNpY2FsIHBpeGVscy4KICAgICB2aXJ0dWFsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdHJhbnNm
b3JtOyB9CiAKLSAgICBjb25zdCBMYXllckNocm9taXVtKiByb290TGF5ZXIoKSBjb25zdDsKKyAg
ICBMYXllckNocm9taXVtKiByb290TGF5ZXIoKTsKICAgICBMYXllckNocm9taXVtKiBwYXJlbnQo
KSBjb25zdDsKICAgICB2b2lkIGFkZENoaWxkKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4pOwog
ICAgIHZvaWQgaW5zZXJ0Q2hpbGQoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiwgc2l6ZV90IGlu
ZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBlMzUyYmFkMzkxYWVmZThkN2Y0
MTlkZjEzMjE3MzhhYTkzOWRhZjYwLi44ZTU3Nzg0ZDNmNzgwMDVmY2Q1ZDg5ZTgzMWIzZmY5NGQw
OWM2OGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC00ODYsNyArNDg2LDYgQEAK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYkNvbW1vbi5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgnLAotICAgICAgICAgICAgICAgICdz
cmMvV2ViQ29udGVudExheWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb250ZW50
TGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb250ZW50TGF5ZXJJbXBs
LmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZS5jcHAnLApAQCAtNTE1LDcgKzUxNCw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJF
bGVtZW50LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJFbnRpdGllcy5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViRW50aXRpZXMuaCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9X
ZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJFeHRl
cm5hbFRleHR1cmVMYXllckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGaWxlQ2hv
b3NlckNvbXBsZXRpb25JbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGaWxlQ2hv
b3NlckNvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRmlsZVN5c3Rl
bUNhbGxiYWNrc0ltcGwuY3BwJywKQEAgLTU2NCw5ICs1NjQsMTEgQEAKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsLmgnLAotICAgICAgICAgICAgICAgICdzcmMv
V2ViSU9TdXJmYWNlTGF5ZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYklPU3VyZmFj
ZUxheWVySW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViSU9TdXJmYWNlTGF5ZXJJ
bXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW1hZ2VEZWNvZGVyLmNwcCcsCi0gICAg
ICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZUxheWVyLmNwcCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJJbWFnZUxheWVySW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViSW1hZ2VM
YXllckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZVNraWEuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYklucHV0RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViSW5wdXRFdmVudC5jcHAnLApAQCAtNTc3LDcgKzU3OSw2IEBACiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViS2l0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJMYWJlbEVsZW1lbnQuY3Bw
JywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYkxheWVyLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkxheWVySW1w
bC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwJywKQEAgLTYx
OCw4ICs2MTksOCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2NvcGVkTWljcm90YXNrU3Vw
cHJlc3Npb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjb3BlZFVzZXJHZXN0dXJl
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcCcsCi0g
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJMYXllci5jcHAnLAotICAgICAgICAgICAg
ICAgICdzcmMvV2ViU2Nyb2xsYWJsZUxheWVyLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJTY3JvbGxiYXJMYXllckltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcm9s
bGJhckxheWVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcm9sbGJhckltcGwu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcm9sbGJhckltcGwuaCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGwuY3BwJywKQEAgLTYzOCw4
ICs2MzksOCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViU29ja2V0LmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJTb2NrZXRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJTb2NrZXRJbXBsLmgnLAotICAgICAgICAgICAgICAgICdzcmMvV2ViU29saWRDb2xvckxheWVy
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmgnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViU3BlZWNoR3JhbW1hci5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViU3BlZWNoSW5wdXRSZXN1bHQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNw
ZWVjaFJlY29nbml0aW9uSGFuZGxlLmNwcCcsCkBAIC02NTUsNyArNjU2LDggQEAKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlNjb3BlZFVzZXJHZXN0dXJlLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYlZp
ZGVvTGF5ZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlZpZGVvTGF5ZXJJbXBsLmNw
cCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWRlb0xheWVySW1wbC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlZpZXdCZW5jaG1hcmtTdXBwb3J0SW1wbC5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViVmlld0JlbmNobWFya1N1cHBvcnRJbXBsLmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViVmlld0ltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCmluZGV4IDY1ZGFjNjJjYWUy
NTNkNTE2NTg3NWNlNGUzMzZiZTg1Zjk3OGMxYmEuLjRkZjQyMDRiMzQ3YmM4ZGNlODdmMTNhNmZi
MGM2MjM0NWU3MGNjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFw
aGljc0xheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNocm9taXVtLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5j
bHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllci5oPgpAQCAtNDgsMTEgKzQ5LDExIEBAIE5vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KFdlYlZpZXdJbXBs
KiB3ZWJWaWV3KQogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0TmFtZSgibm9uLWNvbXBvc2l0ZWQg
Y29udGVudCIpOwogI2VuZGlmCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXREcmF3c0NvbnRlbnQo
dHJ1ZSk7Ci0gICAgV2ViQ29udGVudExheWVyIGxheWVyID0gbV9ncmFwaGljc0xheWVyLT5wbGF0
Zm9ybUxheWVyKCktPnRvPFdlYkNvbnRlbnRMYXllcj4oKTsKLSAgICBsYXllci5zZXRVc2VMQ0RU
ZXh0KHRydWUpOwotICAgIGxheWVyLnNldE9wYXF1ZSh0cnVlKTsKKyAgICBXZWJDb250ZW50TGF5
ZXIqIGxheWVyID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtKj4o
bV9ncmFwaGljc0xheWVyLmdldCgpKS0+Y29udGVudExheWVyKCk7CisgICAgbGF5ZXItPnNldFVz
ZUxDRFRleHQodHJ1ZSk7CisgICAgbGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZSh0cnVlKTsKICNp
ZiAhT1MoQU5EUk9JRCkKLSAgICBsYXllci5zZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1Rp
bGVzKHRydWUpOworICAgIGxheWVyLT5zZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVz
KHRydWUpOwogI2VuZGlmCiB9CiAKQEAgLTgwLDcgKzgxLDcgQEAgdm9pZCBOb25Db21wb3NpdGVk
Q29udGVudEhvc3Q6OnNldFNjcm9sbExheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVy
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCpsYXllci0+cGxhdGZvcm1MYXll
cigpID09IHNjcm9sbExheWVyKCkpCisgICAgaWYgKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgPT0g
c2Nyb2xsTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbGF5ZXItPmFkZENoaWxkQXRJ
bmRleChtX2dyYXBoaWNzTGF5ZXIuZ2V0KCksIDApOwpAQCAtOTUsMTIgKzk2LDEyIEBAIHZvaWQg
Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRWaWV3cG9ydChjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiB2aWV3cG9ydFNpemUsCiAgICAgYm9vbCB2aXNpYmxlUmVjdENoYW5nZWQgPSBtX3ZpZXdw
b3J0U2l6ZSAhPSB2aWV3cG9ydFNpemU7CiAKICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0
U2l6ZTsKLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXIgbGF5ZXIgPSBzY3JvbGxMYXllcigpOwotICAg
IGxheWVyLnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uICsgc2Nyb2xsT3JpZ2luKTsK
LSAgICBsYXllci5zZXRQb3NpdGlvbihXZWJGbG9hdFBvaW50KC1zY3JvbGxQb3NpdGlvbikpOwor
ICAgIFdlYkxheWVyKiBsYXllciA9IHNjcm9sbExheWVyKCk7CisgICAgbGF5ZXItPnNldFNjcm9s
bFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uICsgc2Nyb2xsT3JpZ2luKTsKKyAgICBsYXllci0+c2V0
UG9zaXRpb24oV2ViRmxvYXRQb2ludCgtc2Nyb2xsUG9zaXRpb24pKTsKICAgICAvLyBEdWUgdG8g
dGhlIHBvc3NpYmlsaXR5IG9mIHBpbmNoIHpvb20sIHRoZSBub25jb21wb3NpdGVkIGxheWVyIGlz
IGFsd2F5cwogICAgIC8vIGFzc3VtZWQgdG8gYmUgc2Nyb2xsYWJsZS4KLSAgICBsYXllci5zZXRT
Y3JvbGxhYmxlKHRydWUpOworICAgIGxheWVyLT5zZXRTY3JvbGxhYmxlKHRydWUpOwogICAgIG1f
ZGV2aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VTY2FsZTsKICAgICBtX2dyYXBoaWNzTGF5ZXItPmRl
dmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0
U2l6ZShjb250ZW50c1NpemUpOwpAQCAtMTI3LDExICsxMjgsMTEgQEAgYm9vbCBOb25Db21wb3Np
dGVkQ29udGVudEhvc3Q6OmhhdmVTY3JvbGxMYXllcigpCiAgICAgcmV0dXJuIG1fZ3JhcGhpY3NM
YXllci0+cGFyZW50KCk7CiB9CiAKLVdlYlNjcm9sbGFibGVMYXllciBOb25Db21wb3NpdGVkQ29u
dGVudEhvc3Q6OnNjcm9sbExheWVyKCkKK1dlYkxheWVyKiBOb25Db21wb3NpdGVkQ29udGVudEhv
c3Q6OnNjcm9sbExheWVyKCkKIHsKICAgICBpZiAoIW1fZ3JhcGhpY3NMYXllci0+cGFyZW50KCkp
Ci0gICAgICAgIHJldHVybiBXZWJTY3JvbGxhYmxlTGF5ZXIoKTsKLSAgICByZXR1cm4gbV9ncmFw
aGljc0xheWVyLT5wYXJlbnQoKS0+cGxhdGZvcm1MYXllcigpLT50bzxXZWJTY3JvbGxhYmxlTGF5
ZXI+KCk7CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2dyYXBoaWNzTGF5ZXItPnBh
cmVudCgpLT5wbGF0Zm9ybUxheWVyKCk7CiB9CiAKIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0OjppbnZhbGlkYXRlUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3Qu
aAppbmRleCBlNjBlOWVmNDg2YjE0MjMxMjQ3MTNjNjhkZDZhYWMwZWVhNGE3ZGIzLi4wOGI1ZjZh
NDFmNzcwNjFlN2ViMjgxNTQyZjBmZThlNjM1ZmNjNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaApAQCAtMjksNyAr
MjksNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbnRT
aXplLmgiCiAKLSNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYkxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC04MCw3
ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvcigp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZGV2aWNlU2NhbGVGYWN0b3I7IH0KIAogICAgIGJv
b2wgaGF2ZVNjcm9sbExheWVyKCk7Ci0gICAgV2ViU2Nyb2xsYWJsZUxheWVyIHNjcm9sbExheWVy
KCk7CisgICAgV2ViTGF5ZXIqIHNjcm9sbExheWVyKCk7CiAKICAgICBPd25QdHI8V2ViQ29yZTo6
R3JhcGhpY3NMYXllcj4gbV9ncmFwaGljc0xheWVyOwogICAgIFdlYlZpZXdJbXBsKiBtX3dlYlZp
ZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVyLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZhNzQ2NWIxN2MxMzE2NzY5ODhmYTY1YThk
NmJhMDRmYjQ3YzY2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXIuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlIDxwdWJsaWMvV2ViQ29udGVudExheWVyLmg+Ci0KLSNpbmNsdWRlICJDb250ZW50TGF5
ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIldlYkNvbnRlbnRMYXllckltcGwuaCIKLQotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJDb250ZW50TGF5
ZXIgV2ViQ29udGVudExheWVyOjpjcmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50
Q2xpZW50KQotewotICAgIHJldHVybiBXZWJDb250ZW50TGF5ZXIoV2ViQ29udGVudExheWVySW1w
bDo6Y3JlYXRlKGNvbnRlbnRDbGllbnQpKTsKLX0KLQotdm9pZCBXZWJDb250ZW50TGF5ZXI6OmNs
ZWFyQ2xpZW50KCkKLXsKLSAgICB1bndyYXA8Q29udGVudExheWVyQ2hyb21pdW0+KCktPmNsZWFy
RGVsZWdhdGUoKTsKLX0KLQotdm9pZCBXZWJDb250ZW50TGF5ZXI6OnNldERvdWJsZVNpZGVkKGJv
b2wgZG91YmxlU2lkZWQpCi17Ci0gICAgbV9wcml2YXRlLT5zZXREb3VibGVTaWRlZChkb3VibGVT
aWRlZCk7Ci19Ci0KLXZvaWQgV2ViQ29udGVudExheWVyOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0
IHNjYWxlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0Q29udGVudHNTY2FsZShzY2FsZSk7Ci19Ci0K
LXZvaWQgV2ViQ29udGVudExheWVyOjpzZXRVc2VMQ0RUZXh0KGJvb2wgZW5hYmxlKQotewotICAg
IG1fcHJpdmF0ZS0+c2V0VXNlTENEVGV4dChlbmFibGUpOwotfQotCi12b2lkIFdlYkNvbnRlbnRM
YXllcjo6c2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhib29sIGVuYWJsZSkKLXsK
LSAgICBtX3ByaXZhdGUtPnNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMoZW5hYmxl
KTsKLX0KLQotV2ViQ29udGVudExheWVyOjpXZWJDb250ZW50TGF5ZXIoY29uc3QgUGFzc1JlZlB0
cjxDb250ZW50TGF5ZXJDaHJvbWl1bT4mIG5vZGUpCi0gICAgOiBXZWJTY3JvbGxhYmxlTGF5ZXIo
bm9kZSkKLXsKLX0KLQotV2ViQ29udGVudExheWVyJiBXZWJDb250ZW50TGF5ZXI6Om9wZXJhdG9y
PShjb25zdCBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPiYgbm9kZSkKLXsKLSAgICBt
X3ByaXZhdGUgPSBub2RlOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotV2ViQ29udGVudExheWVy
OjpvcGVyYXRvciBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRlbnRMYXllckNocm9taXVtKj4obV9wcml2YXRlLmdl
dCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3BwCmluZGV4IDY5ZGExZWEzZjBlODky
MDE2OTZkOGRkZWM3NjQ4ZTRmNDY0Yzk2NDguLmZhMjFlODk3NGZkM2IxYjk4MDZhNWMyZTFjYTk5
ZTY5YzY5OGRjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNv
bnRlbnRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNv
bnRlbnRMYXllckltcGwuY3BwCkBAIC0yNiwzNyArMjYsNjYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJDb250ZW50TGF5ZXJJbXBsLmgiCiAKKyNpbmNsdWRlICJTa01hdHJp
eDQ0LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllckNsaWVudC5oPgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJGbG9hdFBvaW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UmVj
dC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNp
emUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1QYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+IFdlYkNvbnRlbnRMYXllckltcGw6OmNy
ZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQpCitXZWJDb250ZW50TGF5
ZXIqIFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKFdlYkNvbnRlbnRMYXllckNsaWVudCogY2xpZW50
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29udGVudExheWVySW1wbChjb250ZW50
Q2xpZW50KSk7CisgICAgcmV0dXJuIG5ldyBXZWJDb250ZW50TGF5ZXJJbXBsKGNsaWVudCk7CiB9
CiAKLVdlYkNvbnRlbnRMYXllckltcGw6OldlYkNvbnRlbnRMYXllckltcGwoV2ViQ29udGVudExh
eWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KQotICAgIDogQ29udGVudExheWVyQ2hyb21pdW0odGhp
cykKLSAgICAsIG1fY29udGVudENsaWVudChjb250ZW50Q2xpZW50KQorV2ViQ29udGVudExheWVy
SW1wbDo6V2ViQ29udGVudExheWVySW1wbChXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNsaWVudCkK
KyAgICA6IG1fd2ViTGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBXZWJMYXllckltcGwoQ29udGVudExh
eWVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzKSkpKQorICAgICwgbV9jbGllbnQoY2xpZW50KQogewot
ICAgIHNldElzRHJhd2FibGUodHJ1ZSk7CisgICAgbV93ZWJMYXllckltcGwtPmxheWVyKCktPnNl
dElzRHJhd2FibGUodHJ1ZSk7CiB9CiAKIFdlYkNvbnRlbnRMYXllckltcGw6On5XZWJDb250ZW50
TGF5ZXJJbXBsKCkKIHsKLSAgICBjbGVhckRlbGVnYXRlKCk7CisgICAgc3RhdGljX2Nhc3Q8Q29u
dGVudExheWVyQ2hyb21pdW0qPihtX3dlYkxheWVySW1wbC0+bGF5ZXIoKSktPmNsZWFyRGVsZWdh
dGUoKTsKIH0KIAorV2ViTGF5ZXIqIFdlYkNvbnRlbnRMYXllckltcGw6OmxheWVyKCkKK3sKKyAg
ICByZXR1cm4gbV93ZWJMYXllckltcGwuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViQ29udGVudExheWVy
SW1wbDo6c2V0RG91YmxlU2lkZWQoYm9vbCBkb3VibGVTaWRlZCkKK3sKKyAgICBtX3dlYkxheWVy
SW1wbC0+bGF5ZXIoKS0+c2V0RG91YmxlU2lkZWQoZG91YmxlU2lkZWQpOworfQorCit2b2lkIFdl
YkNvbnRlbnRMYXllckltcGw6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQgc2NhbGUpCit7CisgICAg
bV93ZWJMYXllckltcGwtPmxheWVyKCktPnNldENvbnRlbnRzU2NhbGUoc2NhbGUpOworfQorCit2
b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OnNldFVzZUxDRFRleHQoYm9vbCBlbmFibGUpCit7Cisg
ICAgbV93ZWJMYXllckltcGwtPmxheWVyKCktPnNldFVzZUxDRFRleHQoZW5hYmxlKTsKK30KKwor
dm9pZCBXZWJDb250ZW50TGF5ZXJJbXBsOjpzZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1Rp
bGVzKGJvb2wgZW5hYmxlKQoreworICAgIG1fd2ViTGF5ZXJJbXBsLT5sYXllcigpLT5zZXREcmF3
Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKGVuYWJsZSk7Cit9CisKKwogdm9pZCBXZWJDb250
ZW50TGF5ZXJJbXBsOjpwYWludENvbnRlbnRzKFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0IEludFJl
Y3QmIGNsaXAsIEZsb2F0UmVjdCYgb3BhcXVlKQogewotICAgIGlmICghbV9jb250ZW50Q2xpZW50
KQorICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKICAgICBXZWJGbG9hdFJlY3Qg
d2ViT3BhcXVlOwotICAgIG1fY29udGVudENsaWVudC0+cGFpbnRDb250ZW50cyhjYW52YXMsIFdl
YlJlY3QoY2xpcCksIHdlYk9wYXF1ZSk7CisgICAgbV9jbGllbnQtPnBhaW50Q29udGVudHMoY2Fu
dmFzLCBXZWJSZWN0KGNsaXApLCB3ZWJPcGFxdWUpOwogICAgIG9wYXF1ZSA9IHdlYk9wYXF1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExh
eWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1w
bC5oCmluZGV4IDk3NzI5ZWExZTBjMjAxYTA4YjFmOTA5MDdhNjI4MjgxYTRlMTBiNTkuLjUxMWY4
ZTBiYTA4NjBiNDZhMDgxNTY1ZjA5ODdkZmYwZThhY2I1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmgKQEAgLTI3LDIzICsyNywzMyBA
QAogI2RlZmluZSBXZWJDb250ZW50TGF5ZXJJbXBsX2gKIAogI2luY2x1ZGUgIkNvbnRlbnRMYXll
ckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSA8cHVibGlj
L1dlYkNvbnRlbnRMYXllci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29udGVudExheWVyQ2xpZW50OwogCi1jbGFzcyBXZWJD
b250ZW50TGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtLCBw
dWJsaWMgV2ViQ29yZTo6Q29udGVudExheWVyRGVsZWdhdGUgeworY2xhc3MgV2ViQ29udGVudExh
eWVySW1wbCA6IHB1YmxpYyBXZWJDb250ZW50TGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRMYXllckRlbGVnYXRlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBsPiBjcmVhdGUoV2ViQ29udGVu
dExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KTsKKyAgICBleHBsaWNpdCBXZWJDb250ZW50TGF5
ZXJJbXBsKFdlYkNvbnRlbnRMYXllckNsaWVudCopOworCisgICAgLy8gV2ViQ29udGVudExheWVy
IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wpICBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCkgIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzZXRVc2VMQ0RUZXh0KGJvb2wpICBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhib29sKSAgT1ZFUlJJREU7CiAKIHBy
b3RlY3RlZDoKLSAgICBleHBsaWNpdCBXZWJDb250ZW50TGF5ZXJJbXBsKFdlYkNvbnRlbnRMYXll
ckNsaWVudCogY29udGVudENsaWVudCk7CiAgICAgdmlydHVhbCB+V2ViQ29udGVudExheWVySW1w
bCgpOwogCiAgICAgLy8gQ29udGVudExheWVyRGVsZWdhdGUgaW1wbGVtZW50YXRpb24uCiAgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoU2tDYW52YXMqLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBjbGlwLCBXZWJDb3JlOjpGbG9hdFJlY3QmIG9wYXF1ZSkgT1ZFUlJJREU7CiAKLSAgICBX
ZWJDb250ZW50TGF5ZXJDbGllbnQqIG1fY29udGVudENsaWVudDsKKyAgICBPd25QdHI8V2ViTGF5
ZXJJbXBsPiBtX3dlYkxheWVySW1wbDsKKyAgICBXZWJDb250ZW50TGF5ZXJDbGllbnQqIG1fY2xp
ZW50OwogICAgIGJvb2wgbV9kcmF3c0NvbnRlbnQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0YWZmNTcyMTk0YzA4YTliYTgzZmE5MzUzYmM0YzVmMWEz
MTZiZGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg+Ci0KLSNpbmNsdWRlICJD
Q1RleHR1cmVVcGRhdGVRdWV1ZS5oIgotI2luY2x1ZGUgIlRleHR1cmVMYXllckNocm9taXVtLmgi
Ci0jaW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50Lmg+Ci0jaW5j
bHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xh
c3MgV2ViVGV4dHVyZVVwZGF0ZXJJbXBsIDogcHVibGljIFdlYlRleHR1cmVVcGRhdGVyIHsKLXB1
YmxpYzoKLSAgICBleHBsaWNpdCBXZWJUZXh0dXJlVXBkYXRlckltcGwoQ0NUZXh0dXJlVXBkYXRl
UXVldWUmIHF1ZXVlKQotICAgICAgICA6IG1fcXVldWUocXVldWUpCi0gICAgewotICAgIH0KLQot
ICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRDb3B5KHVuc2lnbmVkIHNvdXJjZVRleHR1cmUsIHVuc2ln
bmVkIGRlc3RpbmF0aW9uVGV4dHVyZSwgV2ViU2l6ZSBzaXplKSBPVkVSUklERQotICAgIHsKLSAg
ICAgICAgVGV4dHVyZUNvcGllcjo6UGFyYW1ldGVycyBjb3B5ID0geyBzb3VyY2VUZXh0dXJlLCBk
ZXN0aW5hdGlvblRleHR1cmUsIHNpemUgfTsKLSAgICAgICAgbV9xdWV1ZS5hcHBlbmRDb3B5KGNv
cHkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBDQ1RleHR1cmVVcGRhdGVRdWV1ZSYgbV9xdWV1
ZTsKLX07Ci0KLWNsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCA6IHB1YmxpYyBUZXh0
dXJlTGF5ZXJDaHJvbWl1bUNsaWVudCwgcHVibGljIFRleHR1cmVMYXllckNocm9taXVtIHsKLXB1
YmxpYzoKLSAgICBleHBsaWNpdCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJDbGllbnQqIGNsaWVudCkKLSAgICAgICAgOiBUZXh0dXJlTGF5ZXJDaHJv
bWl1bShjbGllbnQgPyB0aGlzIDogMCkKLSAgICAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAg
ewotICAgIH0KLQotICAgIHZpcnR1YWwgdW5zaWduZWQgcHJlcGFyZVRleHR1cmUoQ0NUZXh0dXJl
VXBkYXRlUXVldWUmIHF1ZXVlKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgV2ViVGV4dHVyZVVw
ZGF0ZXJJbXBsIHVwZGF0ZXJJbXBsKHF1ZXVlKTsKLSAgICAgICAgcmV0dXJuIG1fY2xpZW50LT5w
cmVwYXJlVGV4dHVyZSh1cGRhdGVySW1wbCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCBXZWJLaXQ6
OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2NsaWVudC0+Y29udGV4dCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBXZWJF
eHRlcm5hbFRleHR1cmVMYXllckNsaWVudCogbV9jbGllbnQ7Ci19OwotCi1XZWJFeHRlcm5hbFRl
eHR1cmVMYXllciBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKFdlYkV4dGVybmFsVGV4
dHVyZUxheWVyQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgUmVmUHRyPFRleHR1cmVMYXllckNocm9t
aXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoY2xp
ZW50KSk7Ci0gICAgbGF5ZXItPnNldElzRHJhd2FibGUodHJ1ZSk7Ci0gICAgcmV0dXJuIFdlYkV4
dGVybmFsVGV4dHVyZUxheWVyKGxheWVyLnJlbGVhc2UoKSk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXI6OmNsZWFyQ2xpZW50KCkKLXsKLSAgICB1bndyYXA8VGV4dHVyZUxheWVy
Q2hyb21pdW0+KCktPmNsZWFyQ2xpZW50KCk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXI6OnNldFRleHR1cmVJZCh1bnNpZ25lZCBpZCkKLXsKLSAgICB1bndyYXA8VGV4dHVyZUxh
eWVyQ2hyb21pdW0+KCktPnNldFRleHR1cmVJZChpZCk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXI6OnNldEZsaXBwZWQoYm9vbCBmbGlwcGVkKQotewotICAgIHVud3JhcDxUZXh0
dXJlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0RmxpcHBlZChmbGlwcGVkKTsKLX0KLQotdm9pZCBXZWJF
eHRlcm5hbFRleHR1cmVMYXllcjo6c2V0VVZSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYgcmVjdCkK
LXsKLSAgICB1bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPnNldFVWUmVjdChyZWN0KTsK
LX0KLQotdm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0T3BhcXVlKGJvb2wgb3BhcXVl
KQotewotICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0T3BhcXVlKG9wYXF1
ZSk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldFByZW11bHRpcGxpZWRB
bHBoYShib29sIHByZW11bHRpcGxpZWRBbHBoYSkKLXsKLSAgICB1bndyYXA8VGV4dHVyZUxheWVy
Q2hyb21pdW0+KCktPnNldFByZW11bHRpcGxpZWRBbHBoYShwcmVtdWx0aXBsaWVkQWxwaGEpOwot
fQotCi12b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjp3aWxsTW9kaWZ5VGV4dHVyZSgpCi17
Ci0gICAgdW53cmFwPFRleHR1cmVMYXllckNocm9taXVtPigpLT53aWxsTW9kaWZ5VGV4dHVyZSgp
OwotfQotCi12b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRSYXRlTGltaXRDb250ZXh0
KGJvb2wgcmF0ZUxpbWl0KQotewotICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+
c2V0UmF0ZUxpbWl0Q29udGV4dChyYXRlTGltaXQpOwotfQotCi1XZWJFeHRlcm5hbFRleHR1cmVM
YXllcjo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoUGFzc1JlZlB0cjxUZXh0dXJlTGF5ZXJDaHJv
bWl1bT4gbGF5ZXIpCi0gICAgOiBXZWJMYXllcihsYXllcikKLXsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRl
cm5hbFRleHR1cmVMYXllckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjIxNjZmNDQ0MTU2OGRi
NGEyZjU5Njc0NWQ1MTNlZTJhZThjMjMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcApAQCAtMCwwICsx
LDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGwuaCIKKworI2luY2x1ZGUgIkNDVGV4dHVyZVVwZGF0ZVF1ZXVlLmgi
CisjaW5jbHVkZSAiVGV4dHVyZUxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllcklt
cGwuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQuaD4K
KyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNp
emUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitXZWJFeHRlcm5hbFRleHR1cmVMYXllciogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0
ZShXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBu
ZXcgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKGNsaWVudCk7Cit9CisKK1dlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCit7Cisg
ICAgUmVmUHRyPFRleHR1cmVMYXllckNocm9taXVtPiBsYXllcjsKKyAgICBpZiAobV9jbGllbnQp
CisgICAgICAgIGxheWVyID0gVGV4dHVyZUxheWVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzKTsKKyAg
ICBlbHNlCisgICAgICAgIGxheWVyID0gVGV4dHVyZUxheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsK
KyAgICBsYXllci0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKKyAgICBtX2xheWVyID0gYWRvcHRQdHIo
bmV3IFdlYkxheWVySW1wbChsYXllci5yZWxlYXNlKCkpKTsKK30KKworV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXJJbXBsOjp+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKCkKK3sKKyAgICBzdGF0
aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5jbGVhckNs
aWVudCgpOworfQorCitXZWJMYXllciogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpsYXll
cigpCit7CisgICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXJJbXBsOjpzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQpCit7CisgICAgc3RhdGlj
X2Nhc3Q8VGV4dHVyZUxheWVyQ2hyb21pdW0qPihtX2xheWVyLT5sYXllcigpKS0+c2V0VGV4dHVy
ZUlkKGlkKTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldEZsaXBw
ZWQoYm9vbCBmbGlwcGVkKQoreworICAgIHN0YXRpY19jYXN0PFRleHR1cmVMYXllckNocm9taXVt
Kj4obV9sYXllci0+bGF5ZXIoKSktPnNldEZsaXBwZWQoZmxpcHBlZCk7Cit9CisKK3ZvaWQgV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRVVlJlY3QoY29uc3QgV2ViRmxvYXRSZWN0JiBy
ZWN0KQoreworICAgIHN0YXRpY19jYXN0PFRleHR1cmVMYXllckNocm9taXVtKj4obV9sYXllci0+
bGF5ZXIoKSktPnNldFVWUmVjdChyZWN0KTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGw6OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0
dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5zZXRPcGFxdWUob3BhcXVlKTsK
K30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldFByZW11bHRpcGxpZWRB
bHBoYShib29sIHByZW11bHRpcGxpZWRBbHBoYSkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJl
TGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5zZXRQcmVtdWx0aXBsaWVkQWxwaGEo
cHJlbXVsdGlwbGllZEFscGhhKTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcklt
cGw6OndpbGxNb2RpZnlUZXh0dXJlKCkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJD
aHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT53aWxsTW9kaWZ5VGV4dHVyZSgpOworfQorCit2
b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6c2V0UmF0ZUxpbWl0Q29udGV4dChib29s
IHJhdGVMaW1pdCkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1f
bGF5ZXItPmxheWVyKCkpLT5zZXRSYXRlTGltaXRDb250ZXh0KHJhdGVMaW1pdCk7Cit9CisKK2Ns
YXNzIFdlYlRleHR1cmVVcGRhdGVySW1wbCA6IHB1YmxpYyBXZWJUZXh0dXJlVXBkYXRlciB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgV2ViVGV4dHVyZVVwZGF0ZXJJbXBsKENDVGV4dHVyZVVwZGF0
ZVF1ZXVlJiBxdWV1ZSkKKyAgICAgICAgOiBtX3F1ZXVlKHF1ZXVlKQorICAgIHsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kQ29weSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlLCB1bnNp
Z25lZCBkZXN0aW5hdGlvblRleHR1cmUsIFdlYlNpemUgc2l6ZSkgT1ZFUlJJREUKKyAgICB7Cisg
ICAgICAgIFRleHR1cmVDb3BpZXI6OlBhcmFtZXRlcnMgY29weSA9IHsgc291cmNlVGV4dHVyZSwg
ZGVzdGluYXRpb25UZXh0dXJlLCBzaXplIH07CisgICAgICAgIG1fcXVldWUuYXBwZW5kQ29weShj
b3B5KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ0NUZXh0dXJlVXBkYXRlUXVldWUmIG1fcXVl
dWU7Cit9OworCit1bnNpZ25lZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnByZXBhcmVU
ZXh0dXJlKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSkKK3sKKyAgICBBU1NFUlQobV9jbGll
bnQpOworICAgIFdlYlRleHR1cmVVcGRhdGVySW1wbCB1cGRhdGVySW1wbChxdWV1ZSk7CisgICAg
cmV0dXJuIG1fY2xpZW50LT5wcmVwYXJlVGV4dHVyZSh1cGRhdGVySW1wbCk7Cit9CisKK1dlYkdy
YXBoaWNzQ29udGV4dDNEKiBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmNvbnRleHQoKQor
eworICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5jb250ZXh0KCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
MzQ4ODk1YmYxY2Q1M2I1NDQ5M2IyMzU3ZDA4MTk2MmJmNTgzNGU1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBs
LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJJbXBsX2gKKyNkZWZpbmUgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsX2gKKworI2luY2x1
ZGUgIlRleHR1cmVMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFs
VGV4dHVyZUxheWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJMYXllcklt
cGw7CisKK2NsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCA6IHB1YmxpYyBXZWJFeHRl
cm5hbFRleHR1cmVMYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBXZWJDb3JlOjpUZXh0dXJlTGF5ZXJDaHJvbWl1bUNsaWVudCB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVyQ2xpZW50Kik7CisgICAgdmlydHVhbCB+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKCk7
CisKKyAgICAvLyBXZWJFeHRlcm5hbFRleHR1cmVMYXllciBpbXBsZW1lbnRhdGlvbi4KKyAgICB2
aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRU
ZXh0dXJlSWQodW5zaWduZWQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRGbGlwcGVk
KGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRVVlJlY3QoY29uc3QgV2ViRmxv
YXRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbXVsdGlwbGllZEFscGhhKGJvb2wpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsTW9kaWZ5VGV4dHVyZSgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzZXRSYXRlTGltaXRDb250ZXh0KGJvb2wpIE9WRVJSSURFOworCisgICAg
Ly8gVGV4dHVyZUxheWVyQ2hyb21pdW1DbGllbnQgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVh
bCB1bnNpZ25lZCBwcmVwYXJlVGV4dHVyZShXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVRdWV1ZSYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKSBP
VkVSUklERTsKKworcHJpdmF0ZToKKyAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudCog
bV9jbGllbnQ7CisgICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXllcjsKK307CisKK30KKwor
I2VuZGlmIC8vIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbF9oCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzdkYjBjODc3NzdmZmI0NWZjODNiYzk5MGQ1ZWRmOTI1NGZiODUxMi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJT1N1cmZhY2VMYXllci5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
LSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJJT1N1cmZhY2VMYXllci5oPgotCi0jaW5jbHVkZSAiSU9TdXJmYWNlTGF5ZXJDaHJvbWl1
bS5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSU9TdXJmYWNlTGF5ZXIgV2ViSU9TdXJm
YWNlTGF5ZXI6OmNyZWF0ZSgpCi17Ci0gICAgUmVmUHRyPElPU3VyZmFjZUxheWVyQ2hyb21pdW0+
IGxheWVyID0gSU9TdXJmYWNlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgbGF5ZXItPnNl
dElzRHJhd2FibGUodHJ1ZSk7Ci0gICAgcmV0dXJuIFdlYklPU3VyZmFjZUxheWVyKGxheWVyLnJl
bGVhc2UoKSk7Ci19Ci0KLXZvaWQgV2ViSU9TdXJmYWNlTGF5ZXI6OnNldElPU3VyZmFjZVByb3Bl
cnRpZXModW5zaWduZWQgaW9TdXJmYWNlSWQsIFdlYlNpemUgc2l6ZSkKLXsKLSAgICB1bndyYXA8
SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0SU9TdXJmYWNlUHJvcGVydGllcyhpb1N1cmZh
Y2VJZCwgc2l6ZSk7Ci19Ci0KLVdlYklPU3VyZmFjZUxheWVyOjpXZWJJT1N1cmZhY2VMYXllcihQ
YXNzUmVmUHRyPElPU3VyZmFjZUxheWVyQ2hyb21pdW0+IGxheWVyKQotICAgIDogV2ViTGF5ZXIo
bGF5ZXIpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmFiNzBjNjFkOGI0MTc0NDIyZDdmYzUzNTQzMjlmODkxZTkwOGI0ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5jcHAK
QEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJJT1N1cmZhY2VMYXllckltcGwuaCIKKworI2luY2x1ZGUgIklPU3VyZmFjZUxheWVyQ2hyb21p
dW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKKwordXNpbmcgV2ViQ29yZTo6SU9TdXJm
YWNlTGF5ZXJDaHJvbWl1bTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYklPU3VyZmFjZUxh
eWVyKiBXZWJJT1N1cmZhY2VMYXllcjo6Y3JlYXRlKCkKK3sKKyAgICBSZWZQdHI8SU9TdXJmYWNl
TGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBJT1N1cmZhY2VMYXllckNocm9taXVtOjpjcmVhdGUoKTsK
KyAgICBsYXllci0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKKyAgICByZXR1cm4gbmV3IFdlYklPU3Vy
ZmFjZUxheWVySW1wbChsYXllci5yZWxlYXNlKCkpOworfQorCitXZWJJT1N1cmZhY2VMYXllcklt
cGw6OldlYklPU3VyZmFjZUxheWVySW1wbChQYXNzUmVmUHRyPElPU3VyZmFjZUxheWVyQ2hyb21p
dW0+IGxheWVyKQorICAgIDogbV9sYXllcihhZG9wdFB0cihuZXcgV2ViTGF5ZXJJbXBsKGxheWVy
KSkpCit7Cit9CisKK1dlYklPU3VyZmFjZUxheWVySW1wbDo6fldlYklPU3VyZmFjZUxheWVySW1w
bCgpCit7Cit9CisKK3ZvaWQgV2ViSU9TdXJmYWNlTGF5ZXJJbXBsOjpzZXRJT1N1cmZhY2VQcm9w
ZXJ0aWVzKHVuc2lnbmVkIGlvU3VyZmFjZUlkLCBXZWJTaXplIHNpemUpCit7CisgICAgc3RhdGlj
X2Nhc3Q8SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5zZXRJT1N1
cmZhY2VQcm9wZXJ0aWVzKGlvU3VyZmFjZUlkLCBzaXplKTsKK30KKworV2ViTGF5ZXIqIFdlYklP
U3VyZmFjZUxheWVySW1wbDo6bGF5ZXIoKQoreworICAgIHJldHVybiBtX2xheWVyLmdldCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RiYjAyNzU5YTVjYmQ3
NGQzNTY0ODk5OGFlYzYyMTBhMmY0NzI5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5oCkBAIC0wLDAgKzEsNTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYklPU3VyZmFjZUxheWVySW1wbF9oCisjZGVmaW5lIFdlYklPU3Vy
ZmFjZUxheWVySW1wbF9oCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViSU9TdXJmYWNlTGF5ZXIuaD4K
KyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIElP
U3VyZmFjZUxheWVyQ2hyb21pdW07Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJJT1N1cmZhY2VMYXllckltcGwgOiBwdWJsaWMgV2ViSU9TdXJmYWNlTGF5ZXIgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IFdlYklPU3VyZmFjZUxheWVySW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6
OklPU3VyZmFjZUxheWVyQ2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJJT1N1cmZhY2VMYXll
ckltcGwoKTsKKworICAgIC8vIFdlYklPU3VyZmFjZUxheWVyIGltcGxlbWVudGF0aW9uLgorICAg
IHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNl
dElPU3VyZmFjZVByb3BlcnRpZXModW5zaWduZWQgaW9TdXJmYWNlSWQsIFdlYlNpemUpIE9WRVJS
SURFOworCitwcml2YXRlOgorICAgIE93blB0cjxXZWJMYXllckltcGw+IG1fbGF5ZXI7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBXZWJJT1N1cmZhY2VMYXllckltcGxfaAorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmNzYxNTE1MzBkMTA3NTdkMmNkNDRhNzgwMzBhOTY5ZjU2ZTI0MDZmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkltYWdlTGF5ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViSW1hZ2VM
YXllci5oPgotCi0jaW5jbHVkZSAiSW1hZ2VMYXllckNocm9taXVtLmgiCi0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi1XZWJJbWFnZUxheWVyIFdlYkltYWdlTGF5ZXI6OmNyZWF0ZSgpCi17Ci0gICAg
cmV0dXJuIFdlYkltYWdlTGF5ZXIoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjpjcmVhdGUo
KSk7Ci19Ci0KLVdlYkltYWdlTGF5ZXI6OldlYkltYWdlTGF5ZXIoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJbWFnZUxheWVyQ2hyb21pdW0+IGxheWVyKQotICAgIDogV2ViTGF5ZXIobGF5ZXIpCi17Ci19
Ci0KLXZvaWQgV2ViSW1hZ2VMYXllcjo6c2V0Qml0bWFwKFNrQml0bWFwIGJpdG1hcCkKLXsKLSAg
ICB1bndyYXA8V2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtPigpLT5zZXRCaXRtYXAoYml0bWFw
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJbWFnZUxheWVySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDkzYWY4MDQ1YTI2ZjY4
ZTgyNmQwMGNhZDRkOTI3NjVlOTFlOWRjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDYwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkltYWdlTGF5ZXJJbXBsLmgi
CisKKyNpbmNsdWRlICJJbWFnZUxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllcklt
cGwuaCIKKwordXNpbmcgV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworV2ViSW1hZ2VMYXllciogV2ViSW1hZ2VMYXllcjo6Y3JlYXRlKCkKK3sKKyAg
ICByZXR1cm4gbmV3IFdlYkltYWdlTGF5ZXJJbXBsKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCkpOworfQorCitXZWJJbWFnZUxheWVySW1wbDo6V2ViSW1hZ2VMYXllckltcGwo
UGFzc1JlZlB0cjxXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW0+IGxheWVyKQorICAgIDogbV9s
YXllcihhZG9wdFB0cihuZXcgV2ViTGF5ZXJJbXBsKGxheWVyKSkpCit7Cit9CisKK1dlYkltYWdl
TGF5ZXJJbXBsOjp+V2ViSW1hZ2VMYXllckltcGwoKQoreworfQorCitXZWJMYXllciogV2ViSW1h
Z2VMYXllckltcGw6OmxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKK30KKwor
dm9pZCBXZWJJbWFnZUxheWVySW1wbDo6c2V0Qml0bWFwKFNrQml0bWFwIGJpdG1hcCkKK3sKKyAg
ICBzdGF0aWNfY2FzdDxJbWFnZUxheWVyQ2hyb21pdW0qPihtX2xheWVyLT5sYXllcigpKS0+c2V0
Qml0bWFwKGJpdG1hcCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VMYXllckltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE0Yjhi
M2ViMGZmOTIyOTJiOWQ5MGVlZDFiZDU0MjdiYjg0NGYyOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmgKQEAgLTAsMCArMSw1
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViSW1hZ2VMYXllckltcGxfaAorI2RlZmluZSBXZWJJbWFn
ZUxheWVySW1wbF9oCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViSW1hZ2VMYXllci5oPgorI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW1hZ2VMYXll
ckNocm9taXVtOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkxheWVySW1wbDsK
KworY2xhc3MgV2ViSW1hZ2VMYXllckltcGwgOiBwdWJsaWMgV2ViSW1hZ2VMYXllciB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgV2ViSW1hZ2VMYXllckltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
bWFnZUxheWVyQ2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJJbWFnZUxheWVySW1wbCgpOwor
CisgICAgLy8gV2ViSW1hZ2VMYXllciBpbXBsZW1lbnRhdGlvbi4KKyAgICBXZWJMYXllciogbGF5
ZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Qml0bWFwKFNrQml0bWFwKSBPVkVS
UklERTsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8V2ViTGF5ZXJJbXBsPiBtX2xheWVyOworfTsK
KworfQorCisjZW5kaWYgLy8gV2ViSW1hZ2VMYXllckltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTGF5ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzg5N2U2
ZjgxMmIxNzFmOTBmMjI2OGViYzU3ZDUwNjEwMzM5N2JlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllci5oPgotCi0jaW5jbHVkZSAiTGF5
ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlNrTWF0cml4NDQuaCIKLSNpbmNsdWRlICJXZWJBbmlt
YXRpb25JbXBsLmgiCi0jaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSA8cHVibGlj
L1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRQb2ludC5o
PgotI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFJlY3QuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2Vi
U2l6ZS5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgotCi11
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXg7Ci0KLW5hbWVzcGFjZSB7Ci0KLVdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9y
bWF0aW9uTWF0cml4RnJvbVNrTWF0cml4NDQoY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQotewot
ICAgIGRvdWJsZSBkYXRhWzE2XTsKLSAgICBtYXRyaXguYXNDb2xNYWpvcmQoZGF0YSk7Ci0gICAg
cmV0dXJuIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0s
IGRhdGFbM10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbNF0sIGRh
dGFbNV0sIGRhdGFbNl0sIGRhdGFbN10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFbOF0sIGRhdGFbOV0sIGRhdGFbMTBdLCBkYXRhWzExXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YVsxMl0sIGRhdGFbMTNdLCBkYXRhWzE0XSwgZGF0YVsx
NV0pOwotfQotCi1Ta01hdHJpeDQ0IHNrTWF0cml4NDRGcm9tVHJhbnNmb3JtYXRpb25NYXRyaXgo
Y29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICBTa01hdHJpeDQ0
IHNrTWF0cml4OwotICAgIHNrTWF0cml4LnNldCgwLCAwLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRy
aXgubTExKCkpKTsKLSAgICBza01hdHJpeC5zZXQoMSwgMCwgU2tEb3VibGVUb01TY2FsYXIobWF0
cml4Lm0xMigpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDIsIDAsIFNrRG91YmxlVG9NU2NhbGFyKG1h
dHJpeC5tMTMoKSkpOwotICAgIHNrTWF0cml4LnNldCgzLCAwLCBTa0RvdWJsZVRvTVNjYWxhciht
YXRyaXgubTE0KCkpKTsKLSAgICBza01hdHJpeC5zZXQoMCwgMSwgU2tEb3VibGVUb01TY2FsYXIo
bWF0cml4Lm0yMSgpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDEsIDEsIFNrRG91YmxlVG9NU2NhbGFy
KG1hdHJpeC5tMjIoKSkpOwotICAgIHNrTWF0cml4LnNldCgyLCAxLCBTa0RvdWJsZVRvTVNjYWxh
cihtYXRyaXgubTIzKCkpKTsKLSAgICBza01hdHJpeC5zZXQoMywgMSwgU2tEb3VibGVUb01TY2Fs
YXIobWF0cml4Lm0yNCgpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDAsIDIsIFNrRG91YmxlVG9NU2Nh
bGFyKG1hdHJpeC5tMzEoKSkpOwotICAgIHNrTWF0cml4LnNldCgxLCAyLCBTa0RvdWJsZVRvTVNj
YWxhcihtYXRyaXgubTMyKCkpKTsKLSAgICBza01hdHJpeC5zZXQoMiwgMiwgU2tEb3VibGVUb01T
Y2FsYXIobWF0cml4Lm0zMygpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDMsIDIsIFNrRG91YmxlVG9N
U2NhbGFyKG1hdHJpeC5tMzQoKSkpOwotICAgIHNrTWF0cml4LnNldCgwLCAzLCBTa0RvdWJsZVRv
TVNjYWxhcihtYXRyaXgubTQxKCkpKTsKLSAgICBza01hdHJpeC5zZXQoMSwgMywgU2tEb3VibGVU
b01TY2FsYXIobWF0cml4Lm00MigpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDIsIDMsIFNrRG91Ymxl
VG9NU2NhbGFyKG1hdHJpeC5tNDMoKSkpOwotICAgIHNrTWF0cml4LnNldCgzLCAzLCBTa0RvdWJs
ZVRvTVNjYWxhcihtYXRyaXgubTQ0KCkpKTsKLSAgICByZXR1cm4gc2tNYXRyaXg7Ci19Ci0KLX0g
Ly8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViTGF5ZXIg
V2ViTGF5ZXI6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIFdlYkxheWVyKFdlYkxheWVySW1wbDo6
Y3JlYXRlKCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpyZXNldCgpCi17Ci0gICAgbV9wcml2YXRl
LnJlc2V0KCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OmFzc2lnbihjb25zdCBXZWJMYXllciYgb3Ro
ZXIpCi17Ci0gICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOwotfQotCi1ib29sIFdlYkxh
eWVyOjplcXVhbHMoY29uc3QgV2ViTGF5ZXImIG4pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChtX3By
aXZhdGUuZ2V0KCkgPT0gbi5tX3ByaXZhdGUuZ2V0KCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpp
bnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmIGRpcnR5UmVjdCkKLXsKLSAgICBtX3By
aXZhdGUtPnNldE5lZWRzRGlzcGxheVJlY3QoZGlydHlSZWN0KTsKLX0KLQotdm9pZCBXZWJMYXll
cjo6aW52YWxpZGF0ZSgpCi17Ci0gICAgbV9wcml2YXRlLT5zZXROZWVkc0Rpc3BsYXkoKTsKLX0K
LQotdm9pZCBXZWJMYXllcjo6YWRkQ2hpbGQoY29uc3QgV2ViTGF5ZXImIGNoaWxkKQotewotICAg
IG1fcHJpdmF0ZS0+YWRkQ2hpbGQoY2hpbGQpOwotfQotCi12b2lkIFdlYkxheWVyOjppbnNlcnRD
aGlsZChjb25zdCBXZWJMYXllciYgY2hpbGQsIHNpemVfdCBpbmRleCkKLXsKLSAgICBtX3ByaXZh
dGUtPmluc2VydENoaWxkKGNoaWxkLCBpbmRleCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnJlcGxh
Y2VDaGlsZChjb25zdCBXZWJMYXllciYgcmVmZXJlbmNlLCBjb25zdCBXZWJMYXllciYgbmV3TGF5
ZXIpCi17Ci0gICAgV2ViTGF5ZXIgcmVmID0gcmVmZXJlbmNlOwotICAgIG1fcHJpdmF0ZS0+cmVw
bGFjZUNoaWxkKHJlZi51bndyYXA8TGF5ZXJDaHJvbWl1bT4oKSwgbmV3TGF5ZXIpOwotfQotCi12
b2lkIFdlYkxheWVyOjpzZXRDaGlsZHJlbihjb25zdCBXZWJWZWN0b3I8V2ViTGF5ZXI+JiB3ZWJD
aGlsZHJlbikKLXsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gY2hpbGRyZW4o
d2ViQ2hpbGRyZW4uc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYkNoaWxk
cmVuLnNpemUoKTsgKytpKQotICAgICAgICBjaGlsZHJlbltpXSA9IHdlYkNoaWxkcmVuW2ldLnVu
d3JhcDxMYXllckNocm9taXVtPigpOwotICAgIG1fcHJpdmF0ZS0+c2V0Q2hpbGRyZW4oY2hpbGRy
ZW4pOwotfQotCi12b2lkIFdlYkxheWVyOjpyZW1vdmVGcm9tUGFyZW50KCkKLXsKLSAgICBtX3By
aXZhdGUtPnJlbW92ZUZyb21QYXJlbnQoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6cmVtb3ZlQWxs
Q2hpbGRyZW4oKQotewotICAgIG1fcHJpdmF0ZS0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLX0KLQot
dm9pZCBXZWJMYXllcjo6c2V0QW5jaG9yUG9pbnQoY29uc3QgV2ViRmxvYXRQb2ludCYgYW5jaG9y
UG9pbnQpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRBbmNob3JQb2ludChhbmNob3JQb2ludCk7Ci19
Ci0KLVdlYkZsb2F0UG9pbnQgV2ViTGF5ZXI6OmFuY2hvclBvaW50KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gV2ViRmxvYXRQb2ludChtX3ByaXZhdGUtPmFuY2hvclBvaW50KCkpOwotfQotCi12b2lk
IFdlYkxheWVyOjpzZXRBbmNob3JQb2ludFooZmxvYXQgYW5jaG9yUG9pbnRaKQotewotICAgIG1f
cHJpdmF0ZS0+c2V0QW5jaG9yUG9pbnRaKGFuY2hvclBvaW50Wik7Ci19Ci0KLWZsb2F0IFdlYkxh
eWVyOjphbmNob3JQb2ludFooKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPmFuY2hv
clBvaW50WigpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRCb3VuZHMoY29uc3QgV2ViU2l6ZSYg
c2l6ZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldEJvdW5kcyhzaXplKTsKLX0KLQotV2ViU2l6ZSBX
ZWJMYXllcjo6Ym91bmRzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViU2l6ZShtX3ByaXZhdGUt
PmJvdW5kcygpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1h
c2tzVG9Cb3VuZHMpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRNYXNrc1RvQm91bmRzKG1hc2tzVG9C
b3VuZHMpOwotfQotCi1ib29sIFdlYkxheWVyOjptYXNrc1RvQm91bmRzKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9wcml2YXRlLT5tYXNrc1RvQm91bmRzKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6
OnNldE1hc2tMYXllcihjb25zdCBXZWJMYXllciYgbWFza0xheWVyKQotewotICAgIFdlYkxheWVy
IHJlZiA9IG1hc2tMYXllcjsKLSAgICBtX3ByaXZhdGUtPnNldE1hc2tMYXllcihyZWYudW53cmFw
PExheWVyQ2hyb21pdW0+KCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRSZXBsaWNhTGF5ZXIo
Y29uc3QgV2ViTGF5ZXImIHJlcGxpY2FMYXllcikKLXsKLSAgICBXZWJMYXllciByZWYgPSByZXBs
aWNhTGF5ZXI7Ci0gICAgbV9wcml2YXRlLT5zZXRSZXBsaWNhTGF5ZXIocmVmLnVud3JhcDxMYXll
ckNocm9taXVtPigpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0T3BhY2l0eShmbG9hdCBvcGFj
aXR5KQotewotICAgIG1fcHJpdmF0ZS0+c2V0T3BhY2l0eShvcGFjaXR5KTsKLX0KLQotZmxvYXQg
V2ViTGF5ZXI6Om9wYWNpdHkoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPm9wYWNp
dHkoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQotewotICAg
IG1fcHJpdmF0ZS0+c2V0T3BhcXVlKG9wYXF1ZSk7Ci19Ci0KLWJvb2wgV2ViTGF5ZXI6Om9wYXF1
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+b3BhcXVlKCk7Ci19Ci0KLXZvaWQg
V2ViTGF5ZXI6OnNldFBvc2l0aW9uKGNvbnN0IFdlYkZsb2F0UG9pbnQmIHBvc2l0aW9uKQotewot
ICAgIG1fcHJpdmF0ZS0+c2V0UG9zaXRpb24ocG9zaXRpb24pOwotfQotCi1XZWJGbG9hdFBvaW50
IFdlYkxheWVyOjpwb3NpdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkZsb2F0UG9pbnQo
bV9wcml2YXRlLT5wb3NpdGlvbigpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0U3VibGF5ZXJU
cmFuc2Zvcm0oY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQotewotICAgIG1fcHJpdmF0ZS0+c2V0
U3VibGF5ZXJUcmFuc2Zvcm0odHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tU2tNYXRyaXg0NChtYXRy
aXgpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICBtX3ByaXZhdGUtPnNldFN1Ymxh
eWVyVHJhbnNmb3JtKG1hdHJpeCk7Ci19Ci0KLVNrTWF0cml4NDQgV2ViTGF5ZXI6OnN1YmxheWVy
VHJhbnNmb3JtKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc2tNYXRyaXg0NEZyb21UcmFuc2Zvcm1h
dGlvbk1hdHJpeChtX3ByaXZhdGUtPnN1YmxheWVyVHJhbnNmb3JtKCkpOwotfQotCi12b2lkIFdl
YkxheWVyOjpzZXRUcmFuc2Zvcm0oY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQotewotICAgIG1f
cHJpdmF0ZS0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbVNrTWF0cml4NDQo
bWF0cml4KSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldFRyYW5zZm9ybShjb25zdCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQotewotICAgIG1fcHJpdmF0ZS0+c2V0VHJhbnNmb3Jt
KG1hdHJpeCk7Ci19Ci0KLVNrTWF0cml4NDQgV2ViTGF5ZXI6OnRyYW5zZm9ybSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHNrTWF0cml4NDRGcm9tVHJhbnNmb3JtYXRpb25NYXRyaXgobV9wcml2YXRl
LT50cmFuc2Zvcm0oKSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldERyYXdzQ29udGVudChib29s
IGRyYXdzQ29udGVudCkKLXsKLSAgICBtX3ByaXZhdGUtPnNldElzRHJhd2FibGUoZHJhd3NDb250
ZW50KTsKLX0KLQotYm9vbCBXZWJMYXllcjo6ZHJhd3NDb250ZW50KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9wcml2YXRlLT5kcmF3c0NvbnRlbnQoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0
UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZTNEKQotewotICAgIG1fcHJpdmF0ZS0+c2V0UHJlc2Vy
dmVzM0QocHJlc2VydmUzRCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldFVzZVBhcmVudEJhY2tm
YWNlVmlzaWJpbGl0eShib29sIHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSkKLXsKLSAgICBt
X3ByaXZhdGUtPnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSh1c2VQYXJlbnRCYWNrZmFj
ZVZpc2liaWxpdHkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRCYWNrZ3JvdW5kQ29sb3IoV2Vi
Q29sb3IgY29sb3IpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3Ip
OwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotfQot
Ci12b2lkIFdlYkxheWVyOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVy
YXRpb25zJiBmaWx0ZXJzKQotewotICAgIG1fcHJpdmF0ZS0+c2V0QmFja2dyb3VuZEZpbHRlcnMo
ZmlsdGVycyk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldERlYnVnQm9yZGVyQ29sb3IoY29uc3Qg
V2ViQ29sb3ImIGNvbG9yKQotewotICAgIG1fcHJpdmF0ZS0+c2V0RGVidWdCb3JkZXJDb2xvcihj
b2xvcik7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQgd2lk
dGgpCi17Ci0gICAgbV9wcml2YXRlLT5zZXREZWJ1Z0JvcmRlcldpZHRoKHdpZHRoKTsKLX0KLQot
dm9pZCBXZWJMYXllcjo6c2V0RGVidWdOYW1lKFdlYlN0cmluZyBuYW1lKQotewotICAgIG1fcHJp
dmF0ZS0+c2V0RGVidWdOYW1lKG5hbWUpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRBbmltYXRp
b25EZWxlZ2F0ZShXZWJBbmltYXRpb25EZWxlZ2F0ZSogZGVsZWdhdGUpCi17Ci0gICAgbV9wcml2
YXRlLT5zZXRMYXllckFuaW1hdGlvbkRlbGVnYXRlKGRlbGVnYXRlKTsKLX0KLQotYm9vbCBXZWJM
YXllcjo6YWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiogYW5pbWF0aW9uKQotewotICAgIHJldHVy
biBtX3ByaXZhdGUtPmFkZEFuaW1hdGlvbihzdGF0aWNfY2FzdDxXZWJBbmltYXRpb25JbXBsKj4o
YW5pbWF0aW9uKS0+Y2xvbmVUb0NDQW5pbWF0aW9uKCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpy
ZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkKQotewotICAgIG1fcHJpdmF0ZS0+cmVtb3Zl
QW5pbWF0aW9uKGFuaW1hdGlvbklkKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6cmVtb3ZlQW5pbWF0
aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQ
cm9wZXJ0eSkKLXsKLSAgICBtX3ByaXZhdGUtPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5y
ZW1vdmVBbmltYXRpb24oYW5pbWF0aW9uSWQsIHN0YXRpY19jYXN0PENDQWN0aXZlQW5pbWF0aW9u
OjpUYXJnZXRQcm9wZXJ0eT4odGFyZ2V0UHJvcGVydHkpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6
cGF1c2VBbmltYXRpb24oaW50IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCkKLXsKLSAg
ICBtX3ByaXZhdGUtPnBhdXNlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCB0aW1lT2Zmc2V0KTsKLX0K
LQotdm9pZCBXZWJMYXllcjo6c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUp
Ci17Ci0gICAgbV9wcml2YXRlLT5zdXNwZW5kQW5pbWF0aW9ucyhtb25vdG9uaWNUaW1lKTsKLX0K
LQotdm9pZCBXZWJMYXllcjo6cmVzdW1lQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkK
LXsKLSAgICBtX3ByaXZhdGUtPnJlc3VtZUFuaW1hdGlvbnMobW9ub3RvbmljVGltZSk7Ci19Ci0K
LWJvb2wgV2ViTGF5ZXI6Omhhc0FjdGl2ZUFuaW1hdGlvbigpCi17Ci0gICAgcmV0dXJuIG1fcHJp
dmF0ZS0+aGFzQWN0aXZlQW5pbWF0aW9uKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnRyYW5zZmVy
QW5pbWF0aW9uc1RvKFdlYkxheWVyKiBvdGhlcikKLXsKLSAgICBBU1NFUlQob3RoZXIpOwotICAg
IGlmIChvdGhlcikKLSAgICAgICAgb3RoZXItPm1fcHJpdmF0ZS0+c2V0TGF5ZXJBbmltYXRpb25D
b250cm9sbGVyKG1fcHJpdmF0ZS0+cmVsZWFzZUxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpKTsK
LX0KLQotdm9pZCBXZWJMYXllcjo6c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wgZm9yY2VSZW5k
ZXJTdXJmYWNlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGZvcmNl
UmVuZGVyU3VyZmFjZSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OmNsZWFyUmVuZGVyU3VyZmFjZSgp
Ci17Ci0gICAgbV9wcml2YXRlLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKLX0KLQotV2ViTGF5ZXI6
OldlYkxheWVyKGNvbnN0IFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4mIG5vZGUpCi0gICAgOiBt
X3ByaXZhdGUobm9kZSkKLXsKLX0KLQotV2ViTGF5ZXImIFdlYkxheWVyOjpvcGVyYXRvcj0oY29u
c3QgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiYgbm9kZSkKLXsKLSAgICBtX3ByaXZhdGUgPSBu
b2RlOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotV2ViTGF5ZXI6Om9wZXJhdG9yIFBhc3NSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4oKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVySW1wbC5jcHAKaW5kZXggMTZlMTIwNmNhMzM1YzNlOTgxNGRlYmVjYjRlZDhiYjJi
MDJlYjc3Ny4uNTRhNzFkODA5MDgyMTViNGQzNGZkYjYzMjUwODc4OWZmMDMwNmY3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuY3BwCkBAIC0yNiwyNSArMjYs
MzcxIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCiAK
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNp
bmNsdWRlICJTa01hdHJpeDQ0LmgiCisjaW5jbHVkZSAiV2ViQW5pbWF0aW9uSW1wbC5oIgorI2lu
Y2x1ZGUgImNjL0NDQWN0aXZlQW5pbWF0aW9uLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0
UG9pbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYlNpemUuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgu
aD4KKwordXNpbmcgV2ViQ29yZTo6Q0NBY3RpdmVBbmltYXRpb247Cit1c2luZyBXZWJDb3JlOjpM
YXllckNocm9taXVtOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJMYXll
ckltcGw+IFdlYkxheWVySW1wbDo6Y3JlYXRlKCkKK25hbWVzcGFjZSB7CisKK1dlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IHRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbVNrTWF0cml4NDQoY29uc3QgU2tN
YXRyaXg0NCYgbWF0cml4KQoreworICAgIGRvdWJsZSBkYXRhWzE2XTsKKyAgICBtYXRyaXguYXND
b2xNYWpvcmQoZGF0YSk7CisgICAgcmV0dXJuIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KGRhdGFb
MF0sIGRhdGFbMV0sIGRhdGFbMl0sIGRhdGFbM10sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGFbNF0sIGRhdGFbNV0sIGRhdGFbNl0sIGRhdGFbN10sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbOF0sIGRhdGFbOV0sIGRhdGFbMTBdLCBkYXRh
WzExXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsxMl0sIGRhdGFb
MTNdLCBkYXRhWzE0XSwgZGF0YVsxNV0pOworfQorCitTa01hdHJpeDQ0IHNrTWF0cml4NDRGcm9t
VHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJp
eCkKK3sKKyAgICBTa01hdHJpeDQ0IHNrTWF0cml4OworICAgIHNrTWF0cml4LnNldCgwLCAwLCBT
a0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTExKCkpKTsKKyAgICBza01hdHJpeC5zZXQoMSwgMCwg
U2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0xMigpKSk7CisgICAgc2tNYXRyaXguc2V0KDIsIDAs
IFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMTMoKSkpOworICAgIHNrTWF0cml4LnNldCgzLCAw
LCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTE0KCkpKTsKKyAgICBza01hdHJpeC5zZXQoMCwg
MSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yMSgpKSk7CisgICAgc2tNYXRyaXguc2V0KDEs
IDEsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMjIoKSkpOworICAgIHNrTWF0cml4LnNldCgy
LCAxLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTIzKCkpKTsKKyAgICBza01hdHJpeC5zZXQo
MywgMSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yNCgpKSk7CisgICAgc2tNYXRyaXguc2V0
KDAsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzEoKSkpOworICAgIHNrTWF0cml4LnNl
dCgxLCAyLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTMyKCkpKTsKKyAgICBza01hdHJpeC5z
ZXQoMiwgMiwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0zMygpKSk7CisgICAgc2tNYXRyaXgu
c2V0KDMsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzQoKSkpOworICAgIHNrTWF0cml4
LnNldCgwLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQxKCkpKTsKKyAgICBza01hdHJp
eC5zZXQoMSwgMywgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm00MigpKSk7CisgICAgc2tNYXRy
aXguc2V0KDIsIDMsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tNDMoKSkpOworICAgIHNrTWF0
cml4LnNldCgzLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQ0KCkpKTsKKyAgICByZXR1
cm4gc2tNYXRyaXg7Cit9CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCisKK1dlYkxheWVy
KiBXZWJMYXllcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkxheWVy
SW1wbCgpKTsKKyAgICByZXR1cm4gbmV3IFdlYkxheWVySW1wbChMYXllckNocm9taXVtOjpjcmVh
dGUoKSk7CiB9CiAKLVdlYkxheWVySW1wbDo6V2ViTGF5ZXJJbXBsKCkKLSAgICA6IExheWVyQ2hy
b21pdW0oKQorV2ViTGF5ZXJJbXBsOjpXZWJMYXllckltcGwoUGFzc1JlZlB0cjxMYXllckNocm9t
aXVtPiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCiB7Ci0gICAgLy8gTWFrZSBzdXJlIHRo
YXQgdGhpcyBsYXllciBkb2VzIG5vdCBkcmF3IGNvbnRlbnQuIFRoaXMgd2F5IHdlIGRvbid0IGhh
dmUgdG8gb3ZlcnJpZGUKLSAgICAvLyB0aGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbiBvZiBk
cmF3c0NvbnRlbnQoKS4KLSAgICBBU1NFUlQoIWRyYXdzQ29udGVudCgpKTsKIH0KIAogV2ViTGF5
ZXJJbXBsOjp+V2ViTGF5ZXJJbXBsKCkKIHsKKyAgICBtX2xheWVyLT5jbGVhclJlbmRlclN1cmZh
Y2UoKTsKKyAgICBtX2xheWVyLT5zZXRMYXllckFuaW1hdGlvbkRlbGVnYXRlKDApOworfQorCit2
b2lkIFdlYkxheWVySW1wbDo6aW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViRmxvYXRSZWN0JiByZWN0
KQoreworICAgIG1fbGF5ZXItPnNldE5lZWRzRGlzcGxheVJlY3QocmVjdCk7Cit9CisKK3ZvaWQg
V2ViTGF5ZXJJbXBsOjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX2xheWVyLT5zZXROZWVkc0Rpc3Bs
YXkoKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OmFkZENoaWxkKFdlYkxheWVyKiBjaGlsZCkK
K3sKKyAgICBtX2xheWVyLT5hZGRDaGlsZChzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihjaGls
ZCktPmxheWVyKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6aW5zZXJ0Q2hpbGQoV2ViTGF5
ZXIqIGNoaWxkLCBzaXplX3QgaW5kZXgpCit7CisgICAgbV9sYXllci0+aW5zZXJ0Q2hpbGQoc3Rh
dGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4oY2hpbGQpLT5sYXllcigpLCBpbmRleCk7Cit9CisKK3Zv
aWQgV2ViTGF5ZXJJbXBsOjpyZXBsYWNlQ2hpbGQoV2ViTGF5ZXIqIHJlZmVyZW5jZSwgV2ViTGF5
ZXIqIG5ld0xheWVyKQoreworICAgIG1fbGF5ZXItPnJlcGxhY2VDaGlsZChzdGF0aWNfY2FzdDxX
ZWJMYXllckltcGwqPihyZWZlcmVuY2UpLT5sYXllcigpLCBzdGF0aWNfY2FzdDxXZWJMYXllcklt
cGwqPihuZXdMYXllciktPmxheWVyKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0Q2hp
bGRyZW4oY29uc3QgV2ViVmVjdG9yPFdlYkxheWVyKj4mIHdlYkNoaWxkcmVuKQoreworICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBjaGlsZHJlbih3ZWJDaGlsZHJlbi5zaXplKCkp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViQ2hpbGRyZW4uc2l6ZSgpOyArK2kpCisg
ICAgICAgIGNoaWxkcmVuW2ldID0gc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4od2ViQ2hpbGRy
ZW5baV0pLT5sYXllcigpOworICAgIG1fbGF5ZXItPnNldENoaWxkcmVuKGNoaWxkcmVuKTsKK30K
Kwordm9pZCBXZWJMYXllckltcGw6OnJlbW92ZUZyb21QYXJlbnQoKQoreworICAgIG1fbGF5ZXIt
PnJlbW92ZUZyb21QYXJlbnQoKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnJlbW92ZUFsbENo
aWxkcmVuKCkKK3sKKyAgICBtX2xheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOworfQorCit2b2lk
IFdlYkxheWVySW1wbDo6c2V0QW5jaG9yUG9pbnQoY29uc3QgV2ViRmxvYXRQb2ludCYgYW5jaG9y
UG9pbnQpCit7CisgICAgbV9sYXllci0+c2V0QW5jaG9yUG9pbnQoYW5jaG9yUG9pbnQpOworfQor
CitXZWJGbG9hdFBvaW50IFdlYkxheWVySW1wbDo6YW5jaG9yUG9pbnQoKSBjb25zdAoreworICAg
IHJldHVybiBXZWJGbG9hdFBvaW50KG1fbGF5ZXItPmFuY2hvclBvaW50KCkpOworfQorCit2b2lk
IFdlYkxheWVySW1wbDo6c2V0QW5jaG9yUG9pbnRaKGZsb2F0IGFuY2hvclBvaW50WikKK3sKKyAg
ICBtX2xheWVyLT5zZXRBbmNob3JQb2ludFooYW5jaG9yUG9pbnRaKTsKK30KKworZmxvYXQgV2Vi
TGF5ZXJJbXBsOjphbmNob3JQb2ludFooKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyLT5h
bmNob3JQb2ludFooKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldEJvdW5kcyhjb25zdCBX
ZWJTaXplJiBzaXplKQoreworICAgIG1fbGF5ZXItPnNldEJvdW5kcyhzaXplKTsKK30KKworV2Vi
U2l6ZSBXZWJMYXllckltcGw6OmJvdW5kcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlNpemUo
bV9sYXllci0+Ym91bmRzKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0TWFza3NUb0Jv
dW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCit7CisgICAgbV9sYXllci0+c2V0TWFza3NUb0JvdW5k
cyhtYXNrc1RvQm91bmRzKTsKK30KKworYm9vbCBXZWJMYXllckltcGw6Om1hc2tzVG9Cb3VuZHMo
KSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyLT5tYXNrc1RvQm91bmRzKCk7Cit9CisKK3Zv
aWQgV2ViTGF5ZXJJbXBsOjpzZXRNYXNrTGF5ZXIoV2ViTGF5ZXIqIG1hc2tMYXllcikKK3sKKyAg
ICBtX2xheWVyLT5zZXRNYXNrTGF5ZXIobWFza0xheWVyID8gc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJ
bXBsKj4obWFza0xheWVyKS0+bGF5ZXIoKSA6IDApOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6
c2V0UmVwbGljYUxheWVyKFdlYkxheWVyKiByZXBsaWNhTGF5ZXIpCit7CisgICAgbV9sYXllci0+
c2V0UmVwbGljYUxheWVyKHJlcGxpY2FMYXllciA/IHN0YXRpY19jYXN0PFdlYkxheWVySW1wbCo+
KHJlcGxpY2FMYXllciktPmxheWVyKCkgOiAwKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNl
dE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBtX2xheWVyLT5zZXRPcGFjaXR5KG9wYWNp
dHkpOworfQorCitmbG9hdCBXZWJMYXllckltcGw6Om9wYWNpdHkoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2xheWVyLT5vcGFjaXR5KCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRPcGFx
dWUoYm9vbCBvcGFxdWUpCit7CisgICAgbV9sYXllci0+c2V0T3BhcXVlKG9wYXF1ZSk7Cit9CisK
K2Jvb2wgV2ViTGF5ZXJJbXBsOjpvcGFxdWUoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVy
LT5vcGFxdWUoKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldFBvc2l0aW9uKGNvbnN0IFdl
YkZsb2F0UG9pbnQmIHBvc2l0aW9uKQoreworICAgIG1fbGF5ZXItPnNldFBvc2l0aW9uKHBvc2l0
aW9uKTsKK30KKworV2ViRmxvYXRQb2ludCBXZWJMYXllckltcGw6OnBvc2l0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gV2ViRmxvYXRQb2ludChtX2xheWVyLT5wb3NpdGlvbigpKTsKK30KKwor
dm9pZCBXZWJMYXllckltcGw6OnNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQm
IG1hdHJpeCkKK3sKKyAgICBtX2xheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybSh0cmFuc2Zvcm1h
dGlvbk1hdHJpeEZyb21Ta01hdHJpeDQ0KG1hdHJpeCkpOworfQorCit2b2lkIFdlYkxheWVySW1w
bDo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1h
dHJpeCkKK3sKKyAgICBtX2xheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShtYXRyaXgpOworfQor
CitTa01hdHJpeDQ0IFdlYkxheWVySW1wbDo6c3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdAorewor
ICAgIHJldHVybiBza01hdHJpeDQ0RnJvbVRyYW5zZm9ybWF0aW9uTWF0cml4KG1fbGF5ZXItPnN1
YmxheWVyVHJhbnNmb3JtKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0VHJhbnNmb3Jt
KGNvbnN0IFNrTWF0cml4NDQmIG1hdHJpeCkKK3sKKyAgICBtX2xheWVyLT5zZXRUcmFuc2Zvcm0o
dHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tU2tNYXRyaXg0NChtYXRyaXgpKTsKK30KKwordm9pZCBX
ZWJMYXllckltcGw6OnNldFRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bWF0cml4KQoreworICAgIG1fbGF5ZXItPnNldFRyYW5zZm9ybShtYXRyaXgpOworfQorCitTa01h
dHJpeDQ0IFdlYkxheWVySW1wbDo6dHJhbnNmb3JtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2tN
YXRyaXg0NEZyb21UcmFuc2Zvcm1hdGlvbk1hdHJpeChtX2xheWVyLT50cmFuc2Zvcm0oKSk7Cit9
CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXREcmF3c0NvbnRlbnQoYm9vbCBkcmF3c0NvbnRlbnQp
Cit7CisgICAgbV9sYXllci0+c2V0SXNEcmF3YWJsZShkcmF3c0NvbnRlbnQpOworfQorCitib29s
IFdlYkxheWVySW1wbDo6ZHJhd3NDb250ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXll
ci0+ZHJhd3NDb250ZW50KCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRQcmVzZXJ2ZXMz
RChib29sIHByZXNlcnZlM0QpCit7CisgICAgbV9sYXllci0+c2V0UHJlc2VydmVzM0QocHJlc2Vy
dmUzRCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2li
aWxpdHkoYm9vbCB1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkpCit7CisgICAgbV9sYXllci0+
c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0
eSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3Ig
Y29sb3IpCit7CisgICAgbV9sYXllci0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKK30KKwor
dm9pZCBXZWJMYXllckltcGw6OnNldEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycykKK3sKKyAgICBtX2xheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworfQorCit2b2lk
IFdlYkxheWVySW1wbDo6c2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0
aW9ucyYgZmlsdGVycykKK3sKKyAgICBtX2xheWVyLT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhmaWx0
ZXJzKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldERlYnVnQm9yZGVyQ29sb3IoY29uc3Qg
V2ViQ29sb3ImIGNvbG9yKQoreworICAgIG1fbGF5ZXItPnNldERlYnVnQm9yZGVyQ29sb3IoY29s
b3IpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0RGVidWdCb3JkZXJXaWR0aChmbG9hdCB3
aWR0aCkKK3sKKyAgICBtX2xheWVyLT5zZXREZWJ1Z0JvcmRlcldpZHRoKHdpZHRoKTsKK30KKwor
dm9pZCBXZWJMYXllckltcGw6OnNldERlYnVnTmFtZShXZWJTdHJpbmcgbmFtZSkKK3sKKyAgICBt
X2xheWVyLT5zZXREZWJ1Z05hbWUobmFtZSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRB
bmltYXRpb25EZWxlZ2F0ZShXZWJBbmltYXRpb25EZWxlZ2F0ZSogZGVsZWdhdGUpCit7CisgICAg
bV9sYXllci0+c2V0TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZShkZWxlZ2F0ZSk7Cit9CisKK2Jvb2wg
V2ViTGF5ZXJJbXBsOjphZGRBbmltYXRpb24oV2ViQW5pbWF0aW9uKiBhbmltYXRpb24pCit7Cisg
ICAgcmV0dXJuIG1fbGF5ZXItPmFkZEFuaW1hdGlvbihzdGF0aWNfY2FzdDxXZWJBbmltYXRpb25J
bXBsKj4oYW5pbWF0aW9uKS0+Y2xvbmVUb0NDQW5pbWF0aW9uKCkpOworfQorCit2b2lkIFdlYkxh
eWVySW1wbDo6cmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCkKK3sKKyAgICBtX2xheWVy
LT5yZW1vdmVBbmltYXRpb24oYW5pbWF0aW9uSWQpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6
cmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9w
ZXJ0eSB0YXJnZXRQcm9wZXJ0eSkKK3sKKyAgICBtX2xheWVyLT5sYXllckFuaW1hdGlvbkNvbnRy
b2xsZXIoKS0+cmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCBzdGF0aWNfY2FzdDxDQ0FjdGl2
ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHk+KHRhcmdldFByb3BlcnR5KSk7Cit9CisKK3ZvaWQg
V2ViTGF5ZXJJbXBsOjpwYXVzZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1l
T2Zmc2V0KQoreworICAgIG1fbGF5ZXItPnBhdXNlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCB0aW1l
T2Zmc2V0KTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnN1c3BlbmRBbmltYXRpb25zKGRvdWJs
ZSBtb25vdG9uaWNUaW1lKQoreworICAgIG1fbGF5ZXItPnN1c3BlbmRBbmltYXRpb25zKG1vbm90
b25pY1RpbWUpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6cmVzdW1lQW5pbWF0aW9ucyhkb3Vi
bGUgbW9ub3RvbmljVGltZSkKK3sKKyAgICBtX2xheWVyLT5yZXN1bWVBbmltYXRpb25zKG1vbm90
b25pY1RpbWUpOworfQorCitib29sIFdlYkxheWVySW1wbDo6aGFzQWN0aXZlQW5pbWF0aW9uKCkK
K3sKKyAgICByZXR1cm4gbV9sYXllci0+aGFzQWN0aXZlQW5pbWF0aW9uKCk7Cit9CisKK3ZvaWQg
V2ViTGF5ZXJJbXBsOjp0cmFuc2ZlckFuaW1hdGlvbnNUbyhXZWJMYXllciogb3RoZXIpCit7Cisg
ICAgQVNTRVJUKG90aGVyKTsKKyAgICBzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihvdGhlcikt
Pm1fbGF5ZXItPnNldExheWVyQW5pbWF0aW9uQ29udHJvbGxlcihtX2xheWVyLT5yZWxlYXNlTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0Rm9y
Y2VSZW5kZXJTdXJmYWNlKGJvb2wgZm9yY2VSZW5kZXJTdXJmYWNlKQoreworICAgIG1fbGF5ZXIt
PnNldEZvcmNlUmVuZGVyU3VyZmFjZShmb3JjZVJlbmRlclN1cmZhY2UpOworfQorCit2b2lkIFdl
YkxheWVySW1wbDo6c2V0U2Nyb2xsUG9zaXRpb24oV2ViUG9pbnQgcG9zaXRpb24pCit7CisgICAg
bV9sYXllci0+c2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24pOworfQorCit2b2lkIFdlYkxheWVy
SW1wbDo6c2V0U2Nyb2xsYWJsZShib29sIHNjcm9sbGFibGUpCit7CisgICAgbV9sYXllci0+c2V0
U2Nyb2xsYWJsZShzY3JvbGxhYmxlKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldEhhdmVX
aGVlbEV2ZW50SGFuZGxlcnMoYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKQoreworICAgIG1f
bGF5ZXItPnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoaGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7
Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoYm9v
bCBzaG91bGRTY3JvbGxPbk1haW5UaHJlYWQpCit7CisgICAgbV9sYXllci0+c2V0U2hvdWxkU2Ny
b2xsT25NYWluVGhyZWFkKHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCk7Cit9CisKK3ZvaWQgV2Vi
TGF5ZXJJbXBsOjpzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBXZWJWZWN0b3I8V2Vi
UmVjdD4mIHJlY3RzKQoreworICAgIFdlYkNvcmU6OlJlZ2lvbiByZWdpb247CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkgeworICAgICAgICBXZWJDb3JlOjpJ
bnRSZWN0IHJlY3QgPSByZWN0c1tpXTsKKyAgICAgICAgcmVnaW9uLnVuaXRlKHJlY3QpOworICAg
IH0KKyAgICBtX2xheWVyLT5zZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihyZWdpb24pOworCit9
CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXll
cnMoYm9vbCBlbmFibGUpCit7CisgICAgbV9sYXllci0+c2V0SXNDb250YWluZXJGb3JGaXhlZFBv
c2l0aW9uTGF5ZXJzKGVuYWJsZSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRGaXhlZFRv
Q29udGFpbmVyTGF5ZXIoYm9vbCBlbmFibGUpCit7CisgICAgbV9sYXllci0+c2V0Rml4ZWRUb0Nv
bnRhaW5lckxheWVyKGVuYWJsZSk7Cit9CisKK0xheWVyQ2hyb21pdW0qIFdlYkxheWVySW1wbDo6
bGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyLmdldCgpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkxheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgK
aW5kZXggN2U0ZTc1MDYyNDhmNGNhNWVlNjdlNzUxYzM4ZThlYmY0YzE5YzE5Yi4uNGI0NGZiY2Q0
NDY5ZmExOTY4ZTU3NGM2YzkzNDk3ZmI5Yzc0ZTQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTGF5ZXJJbXBsLmgKQEAgLTI2LDE4ICsyNiw4MyBAQAogI2lmbmRlZiBXZWJMYXll
ckltcGxfaAogI2RlZmluZSBXZWJMYXllckltcGxfaAogCi0jaW5jbHVkZSAiTGF5ZXJDaHJvbWl1
bS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkxh
eWVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBMYXllckNocm9taXVtOworfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2Vi
TGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OkxheWVyQ2hyb21pdW0geworY2xhc3MgV2ViTGF5
ZXJJbXBsIDogcHVibGljIFdlYkxheWVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJMYXllckltcGw+IGNyZWF0ZSgpOworICAgIGV4cGxpY2l0IFdlYkxheWVySW1wbChQYXNz
UmVmUHRyPFdlYkNvcmU6OkxheWVyQ2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJMYXllcklt
cGwoKTsKKworICAgIC8vIFdlYkxheWVyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9p
ZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgaW52YWxpZGF0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGls
ZChXZWJMYXllciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGlsZChXZWJM
YXllciosIHNpemVfdCBpbmRleCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlcGxhY2VD
aGlsZChXZWJMYXllciogcmVmZXJlbmNlLCBXZWJMYXllciogbmV3TGF5ZXIpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRDaGlsZHJlbihjb25zdCBXZWJWZWN0b3I8V2ViTGF5ZXIqPiYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tUGFyZW50KCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IFdlYkZsb2F0UG9pbnQmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIFdlYkZsb2F0UG9pbnQgYW5jaG9yUG9pbnQoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0KSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGZsb2F0IGFuY2hvclBvaW50WigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzZXRCb3VuZHMoY29uc3QgV2ViU2l6ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2Vi
U2l6ZSBib3VuZHMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWFza3NU
b0JvdW5kcyhib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgbWFza3NUb0JvdW5kcygp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrTGF5ZXIoV2ViTGF5ZXIq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGljYUxheWVyKFdlYkxheWVyKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzZXRPcGFxdWUoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIG9wYXF1ZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBXZWJG
bG9hdFBvaW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJGbG9hdFBvaW50IHBvc2l0aW9u
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3Jt
KGNvbnN0IFNrTWF0cml4NDQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3VibGF5
ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFNrTWF0cml4NDQgc3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTa01hdHJpeDQ0IHRyYW5zZm9ybSgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgV2Vi
RmlsdGVyT3BlcmF0aW9ucyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0Jv
cmRlckNvbG9yKGNvbnN0IFdlYkNvbG9yJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNl
dERlYnVnQm9yZGVyV2lkdGgoZmxvYXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRE
ZWJ1Z05hbWUoV2ViU3RyaW5nKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0
aW9uRGVsZWdhdGUoV2ViQW5pbWF0aW9uRGVsZWdhdGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgYWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiopIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpU
YXJnZXRQcm9wZXJ0eSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlQW5pbWF0aW9u
KGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNBY3RpdmVBbmltYXRpb24oKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBbmltYXRpb25zVG8oV2ViTGF5ZXIqKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihXZWJQb2ludCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChib29sKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgV2Vi
VmVjdG9yPFdlYlJlY3Q+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldElzQ29udGFp
bmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wpIE9WRVJSSURFOworCisgICAgV2ViQ29y
ZTo6TGF5ZXJDaHJvbWl1bSogbGF5ZXIoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIFdlYkxh
eWVySW1wbCgpOwotICAgIHZpcnR1YWwgfldlYkxheWVySW1wbCgpOworICAgIFJlZlB0cjxXZWJD
b3JlOjpMYXllckNocm9taXVtPiBtX2xheWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmlu
ZGV4IGYzOTdlNTM0YTg0MWQ0NTZiYTIzNzNkYjM1MTllYzVhZjRhZDZkNWIuLjdkZmJjZDEyOWVl
MTE3NWMyYWMwNTk2ODU4MjdkYzA1YzRkMWZhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiQ0NSZW5kZXJpbmdTdGF0cy5oIgogI2lu
Y2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKICNpbmNs
dWRlICJXZWJMYXllclRyZWVWaWV3SW1wbC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllci5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJQb2ludC5oPgpAQCAtODMsNyArODQsNyBAQCB2b2lkIFdl
YkxheWVyVHJlZVZpZXc6OnNldFN1cmZhY2VSZWFkeSgpCiB2b2lkIFdlYkxheWVyVHJlZVZpZXc6
OnNldFJvb3RMYXllcihXZWJMYXllciAqcm9vdCkKIHsKICAgICBpZiAocm9vdCkKLSAgICAgICAg
bV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcigqcm9vdCk7CisgICAgICAg
IG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRSb290TGF5ZXIoc3RhdGljX2Nhc3Q8V2Vi
TGF5ZXJJbXBsKj4ocm9vdCktPmxheWVyKCkpOwogICAgIGVsc2UKICAgICAgICAgbV9wcml2YXRl
LT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcihQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVl
Vmlld0ltcGwuY3BwCmluZGV4IDFmMTkzM2ZjOTY2ZGEwYTkzNTA4NGUzMzJmMzRkYmY0Y2JlMWMx
NjAuLjFmZDgyMzk3NjhjMDliNjY5NTRkYzAyNTBlMjhiNmY5NWY2ZjA5NTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJD
Q1RocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIldl
YkxheWVySW1wbC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgog
I2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllclRy
ZWVWaWV3Lmg+CkBAIC0xNDIsNyArMTQzLDcgQEAgUGFzc093blB0cjxXZWJMYXllclRyZWVWaWV3
SW1wbD4gV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZShXZWJMYXllclRyZWVWaWV3Q2wKICAg
ICBPd25QdHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+IGltcGwgPSBhZG9wdFB0cihuZXcgV2ViTGF5
ZXJUcmVlVmlld0ltcGwoY2xpZW50LCBzZXR0aW5ncykpOwogICAgIGlmICghaW1wbC0+bGF5ZXJU
cmVlSG9zdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpbXBsLT5sYXllclRyZWVI
b3N0KCktPnNldFJvb3RMYXllcihyb290KTsKKyAgICBpbXBsLT5sYXllclRyZWVIb3N0KCktPnNl
dFJvb3RMYXllcihzdGF0aWNfY2FzdDxjb25zdCBXZWJMYXllckltcGwqPigmcm9vdCktPmxheWVy
KCkpOwogICAgIHJldHVybiBpbXBsLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKaW5kZXgg
NGE5MGE5ODhkNDFjNmNlNGU1NmJhNTlhNGQ3NmJkNjVhZmE5MTNkZC4uY2I3NTYyMzNlMWE3ZTQ4
OGIxNzE1M2YzMmEyM2YwNzlkZDcwYWVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC0xMDksOSArMTA5
LDkgQEAgdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKCkK
ICAgICBBU1NFUlQobV9tZWRpYVBsYXllcik7CiAgICAgbV9tZWRpYVBsYXllci0+cmVhZHlTdGF0
ZUNoYW5nZWQoKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKGhh
c1ZpZGVvKCkgJiYgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYmIG1fdmlkZW9MYXll
ci5pc051bGwoKSkgewotICAgICAgICBtX3ZpZGVvTGF5ZXIgPSBXZWJWaWRlb0xheWVyOjpjcmVh
dGUodGhpcyk7Ci0gICAgICAgIG1fdmlkZW9MYXllci5zZXRPcGFxdWUobV9vcGFxdWUpOworICAg
IGlmIChoYXNWaWRlbygpICYmIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSAmJiAhbV92
aWRlb0xheWVyKSB7CisgICAgICAgIG1fdmlkZW9MYXllciA9IGFkb3B0UHRyKFdlYlZpZGVvTGF5
ZXI6OmNyZWF0ZSh0aGlzKSk7CisgICAgICAgIG1fdmlkZW9MYXllci0+bGF5ZXIoKS0+c2V0T3Bh
cXVlKG1fb3BhcXVlKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTEzOCw4ICsxMzgsOCBAQCB2b2lk
IFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVwYWludCgpCiB7CiAgICAgQVNTRVJUKG1fbWVk
aWFQbGF5ZXIpOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAoIW1f
dmlkZW9MYXllci5pc051bGwoKSAmJiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpCi0g
ICAgICAgIG1fdmlkZW9MYXllci5pbnZhbGlkYXRlKCk7CisgICAgaWYgKG1fdmlkZW9MYXllciAm
JiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpCisgICAgICAgIG1fdmlkZW9MYXllci0+
bGF5ZXIoKS0+aW52YWxpZGF0ZSgpOwogI2VuZGlmCiAgICAgbV9tZWRpYVBsYXllci0+cmVwYWlu
dCgpOwogfQpAQCAtMTY2LDggKzE2Niw4IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
OjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQogICAgIG1fb3BhcXVlID0gb3BhcXVlOwotICAgIGlmICghbV92aWRlb0xheWVyLmlzTnVs
bCgpKQotICAgICAgICBtX3ZpZGVvTGF5ZXIuc2V0T3BhcXVlKG1fb3BhcXVlKTsKKyAgICBpZiAo
bV92aWRlb0xheWVyKQorICAgICAgICBtX3ZpZGVvTGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZSht
X29wYXF1ZSk7CiAjZW5kaWYKIH0KIApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsOjpjYW5jZWxMb2FkKCkKIFdlYkxheWVyKiBXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewogICAgIEFTU0VSVChtX3N1cHBvcnRz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZyk7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2ViVmlkZW9M
YXllcio+KCZtX3ZpZGVvTGF5ZXIpOworICAgIHJldHVybiBtX3ZpZGVvTGF5ZXIgPyBtX3ZpZGVv
TGF5ZXItPmxheWVyKCkgOiAwOwogfQogI2VuZGlmCiAKQEAgLTc0NSw3ICs3NDUsNyBAQCBib29s
IFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygp
IGNvbnN0CiAKIGJvb2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjphY2NlbGVyYXRlZFJlbmRl
cmluZ0luVXNlKCkKIHsKLSAgICByZXR1cm4gIW1fdmlkZW9MYXllci5pc051bGwoKSAmJiBtX3Zp
ZGVvTGF5ZXIuYWN0aXZlKCk7CisgICAgcmV0dXJuIG1fdmlkZW9MYXllciAmJiBtX3ZpZGVvTGF5
ZXItPmFjdGl2ZSgpOwogfQogCiB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c2V0Vmlk
ZW9GcmFtZVByb3ZpZGVyQ2xpZW50KFdlYlZpZGVvRnJhbWVQcm92aWRlcjo6Q2xpZW50KiBjbGll
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXll
ckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbC5oCmluZGV4IDM3MzAxNWViNzU2YWYwZjQ1MTFkYWU5ODFlNmJmMmUxYjU0ZGQ0
ODguLjMyOWZkOWVjMGY0ODhhOWVhYWZlYTZlOTVjOGZiYjI0OTA0MTVjMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5o
CkBAIC0yMDUsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllcjo6
UHJlbG9hZCBtX3ByZWxvYWQ7CiAgICAgUmVmUHRyPFdlYkhlbHBlclBsdWdpbkltcGw+IG1faGVs
cGVyUGx1Z2luOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBXZWJWaWRl
b0xheWVyIG1fdmlkZW9MYXllcjsKKyAgICBPd25QdHI8V2ViVmlkZW9MYXllcj4gbV92aWRlb0xh
eWVyOwogICAgIGJvb2wgbV9zdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmc7CiAgICAgYm9v
bCBtX29wYXF1ZTsKICAgICBXZWJWaWRlb0ZyYW1lUHJvdmlkZXI6OkNsaWVudCogbV92aWRlb0Zy
YW1lUHJvdmlkZXJDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCmluZGV4IDcxMzYxNzgwYjQ1YWI0YjlmMDg3MGFm
YzRlMDU3ZTRjMTI5ZTQ3MjAuLmYxMDc1NDkwNDJkZWM5MjBjYTI0YzM4ZTIwNWMyYmM4ZDRkNTk1
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRh
aW5lckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNv
bnRhaW5lckltcGwuY3BwCkBAIC0zNjYsMTEgKzM2NiwxMSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRh
aW5lckltcGw6OnNldEJhY2tpbmdUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKQogICAgIGlm
IChtX3RleHR1cmVJZCA9PSB0ZXh0dXJlSWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VS
VChtX2lvU3VyZmFjZUxheWVyLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQoIW1faW9TdXJmYWNlTGF5
ZXIpOwogCi0gICAgaWYgKG1fdGV4dHVyZUxheWVyLmlzTnVsbCgpKQotICAgICAgICBtX3RleHR1
cmVMYXllciA9IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoKTsKLSAgICBtX3RleHR1
cmVMYXllci5zZXRUZXh0dXJlSWQodGV4dHVyZUlkKTsKKyAgICBpZiAoIW1fdGV4dHVyZUxheWVy
KQorICAgICAgICBtX3RleHR1cmVMYXllciA9IGFkb3B0UHRyKFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVyOjpjcmVhdGUoKSk7CisgICAgbV90ZXh0dXJlTGF5ZXItPnNldFRleHR1cmVJZCh0ZXh0dXJl
SWQpOwogCiAgICAgLy8gSWYgYW55b25lIG9mIHRoZSBJRHMgaXMgemVybyB3ZSBuZWVkIHRvIHN3
aXRjaCBiZXR3ZWVuIGhhcmR3YXJlCiAgICAgLy8gYW5kIHNvZnR3YXJlIGNvbXBvc2l0aW5nLiBU
aGlzIGlzIGRvbmUgYnkgdHJpZ2dlcmluZyBhIHN0eWxlIHJlY2FsYwpAQCAtMzkwLDExICszOTAs
MTEgQEAgdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5nSU9TdXJmYWNlSWQo
aW50IHdpZHRoLAogICAgIGlmIChpb1N1cmZhY2VJZCA9PSBtX2lvU3VyZmFjZUlkKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBBU1NFUlQobV90ZXh0dXJlTGF5ZXIuaXNOdWxsKCkpOworICAgIEFT
U0VSVCghbV90ZXh0dXJlTGF5ZXIpOwogCi0gICAgaWYgKG1faW9TdXJmYWNlTGF5ZXIuaXNOdWxs
KCkpCi0gICAgICAgIG1faW9TdXJmYWNlTGF5ZXIgPSBXZWJJT1N1cmZhY2VMYXllcjo6Y3JlYXRl
KCk7Ci0gICAgbV9pb1N1cmZhY2VMYXllci5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGlvU3VyZmFj
ZUlkLCBXZWJTaXplKHdpZHRoLCBoZWlnaHQpKTsKKyAgICBpZiAoIW1faW9TdXJmYWNlTGF5ZXIp
CisgICAgICAgIG1faW9TdXJmYWNlTGF5ZXIgPSBhZG9wdFB0cihXZWJJT1N1cmZhY2VMYXllcjo6
Y3JlYXRlKCkpOworICAgIG1faW9TdXJmYWNlTGF5ZXItPnNldElPU3VyZmFjZVByb3BlcnRpZXMo
aW9TdXJmYWNlSWQsIFdlYlNpemUod2lkdGgsIGhlaWdodCkpOwogCiAgICAgLy8gSWYgYW55b25l
IG9mIHRoZSBJRHMgaXMgemVybyB3ZSBuZWVkIHRvIHN3aXRjaCBiZXR3ZWVuIGhhcmR3YXJlCiAg
ICAgLy8gYW5kIHNvZnR3YXJlIGNvbXBvc2l0aW5nLiBUaGlzIGlzIGRvbmUgYnkgdHJpZ2dlcmlu
ZyBhIHN0eWxlIHJlY2FsYwpAQCAtNDA5LDExICs0MDksMTEgQEAgdm9pZCBXZWJQbHVnaW5Db250
YWluZXJJbXBsOjpzZXRCYWNraW5nSU9TdXJmYWNlSWQoaW50IHdpZHRoLAogdm9pZCBXZWJQbHVn
aW5Db250YWluZXJJbXBsOjpjb21taXRCYWNraW5nVGV4dHVyZSgpCiB7CiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmICghbV90ZXh0dXJlTGF5ZXIuaXNOdWxsKCkpCi0g
ICAgICAgIG1fdGV4dHVyZUxheWVyLmludmFsaWRhdGUoKTsKKyAgICBpZiAobV90ZXh0dXJlTGF5
ZXIpCisgICAgICAgIG1fdGV4dHVyZUxheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CiAKLSAg
ICBpZiAoIW1faW9TdXJmYWNlTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1faW9TdXJmYWNlTGF5
ZXIuaW52YWxpZGF0ZSgpOworICAgIGlmIChtX2lvU3VyZmFjZUxheWVyKQorICAgICAgICBtX2lv
U3VyZmFjZUxheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CiAjZW5kaWYKIH0KIApAQCAtNDgw
LDExICs0ODAsMTEgQEAgdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjp6b29tTGV2ZWxDaGFu
Z2VkKGRvdWJsZSB6b29tTGV2ZWwpCiB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldE9w
YXF1ZShib29sIG9wYXF1ZSkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0g
ICAgaWYgKCFtX3RleHR1cmVMYXllci5pc051bGwoKSkKLSAgICAgICAgbV90ZXh0dXJlTGF5ZXIu
c2V0T3BhcXVlKG9wYXF1ZSk7CisgICAgaWYgKG1fdGV4dHVyZUxheWVyKQorICAgICAgICBtX3Rl
eHR1cmVMYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKG9wYXF1ZSk7CiAKLSAgICBpZiAoIW1faW9T
dXJmYWNlTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1faW9TdXJmYWNlTGF5ZXIuc2V0T3BhcXVl
KG9wYXF1ZSk7CisgICAgaWYgKG1faW9TdXJmYWNlTGF5ZXIpCisgICAgICAgIG1faW9TdXJmYWNl
TGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZShvcGFxdWUpOwogI2VuZGlmCiB9CiAKQEAgLTU3Niw5
ICs1NzYsOSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OndpbGxEZXN0cm95UGx1Z2lu
TG9hZE9ic2VydmVyKFdlYlBsdWdpbkxvYWRPYnNlcnZlcgogV2ViTGF5ZXIqIFdlYlBsdWdpbkNv
bnRhaW5lckltcGw6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewogICAgIGlmIChtX3RleHR1cmVJ
ZCkKLSAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIqPigm
bV90ZXh0dXJlTGF5ZXIpOworICAgICAgICByZXR1cm4gbV90ZXh0dXJlTGF5ZXItPmxheWVyKCk7
CiAgICAgaWYgKG1faW9TdXJmYWNlSWQpCi0gICAgICAgIHJldHVybiBjb25zdF9jYXN0PFdlYklP
U3VyZmFjZUxheWVyKj4oJm1faW9TdXJmYWNlTGF5ZXIpOworICAgICAgICByZXR1cm4gbV9pb1N1
cmZhY2VMYXllci0+bGF5ZXIoKTsKICAgICByZXR1cm4gMDsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCmluZGV4
IDA3NGEwY2NkY2QwM2JiNTI1NmUzNjU4MDcyYTgxZTlhNWY4M2M4ODYuLjk5OGJlNmU0MTlmODk1
ZmE4MjE3OTQwMzkzNDRiYzE2ZjMxMWY5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgKQEAgLTE4NiwxMCArMTg2LDEwIEBA
IHByaXZhdGU6CiAgICAgLy8gQSBjb21wb3NpdGVkIHBsdWdpbiB3aWxsIGVpdGhlciBoYXZlIG5v
IGNvbXBvc2l0ZWQgbGF5ZXIsIGEgdGV4dHVyZSBsYXllciwgb3IgYW4gSU9TdXJmYWNlIGxheWVy
LgogICAgIC8vIEl0IHdpbGwgbmV2ZXIgaGF2ZSBib3RoIGEgdGV4dHVyZSBhbmQgSU9TdXJmYWNl
IG91dHB1dC4KICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKLSAgICBXZWJFeHRlcm5hbFRleHR1
cmVMYXllciBtX3RleHR1cmVMYXllcjsKKyAgICBPd25QdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXI+IG1fdGV4dHVyZUxheWVyOwogCiAgICAgdW5zaWduZWQgbV9pb1N1cmZhY2VJZDsKLSAgICBX
ZWJJT1N1cmZhY2VMYXllciBtX2lvU3VyZmFjZUxheWVyOworICAgIE93blB0cjxXZWJJT1N1cmZh
Y2VMYXllcj4gbV9pb1N1cmZhY2VMYXllcjsKICNlbmRpZgogCiAgICAgLy8gVGhlIGFzc29jaWF0
ZWQgc2Nyb2xsYmFyIGdyb3VwIG9iamVjdCwgY3JlYXRlZCBsYXppbHkuIFVzZWQgZm9yIFBlcHBl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGFibGVMYXllci5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMGU4MWQ4MTM3NTljM2Y3OTA5N2Ey
OWMxNDY5YjI1NzBmOWJhODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVyLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGFibGVMYXllci5oPgotCi0jaW5jbHVkZSAi
TGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlJlZ2lvbi5oIgotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotdm9pZCBXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldFNjcm9sbFBvc2l0aW9uKFdlYlBvaW50
IHBvc2l0aW9uKQotewotICAgIG1fcHJpdmF0ZS0+c2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24p
OwotfQotCi12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0U2Nyb2xsYWJsZShib29sIHNjcm9s
bGFibGUpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRTY3JvbGxhYmxlKHNjcm9sbGFibGUpOwotfQot
Ci12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29s
IGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRIYXZlV2hlZWxF
dmVudEhhbmRsZXJzKGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMpOwotfQotCi12b2lkIFdlYlNjcm9s
bGFibGVMYXllcjo6c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkU2Nyb2xs
T25NYWluVGhyZWFkKQotewotICAgIG1fcHJpdmF0ZS0+c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhy
ZWFkKHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCk7Ci19Ci0KLXZvaWQgV2ViU2Nyb2xsYWJsZUxh
eWVyOjpzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBXZWJWZWN0b3I8V2ViUmVjdD4m
IHJlY3RzKQotewotICAgIFdlYkNvcmU6OlJlZ2lvbiByZWdpb247Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkgewotICAgICAgICBXZWJDb3JlOjpJbnRSZWN0
IHJlY3QgPSByZWN0c1tpXTsKLSAgICAgICAgcmVnaW9uLnVuaXRlKHJlY3QpOwotICAgIH0KLSAg
ICBtX3ByaXZhdGUtPnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKHJlZ2lvbik7Ci0KLX0KLQot
dm9pZCBXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxh
eWVycyhib29sIGVuYWJsZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldElzQ29udGFpbmVyRm9yRml4
ZWRQb3NpdGlvbkxheWVycyhlbmFibGUpOwotfQotCi12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6
c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wgZW5hYmxlKQotewotICAgIG1fcHJpdmF0ZS0+
c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGVuYWJsZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJs
ZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxhYmxl
TGF5ZXJJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjBlODFkODEzNzU5YzNmNzkwOTdhMjljMTQ2OWIy
NTcwZjliYTg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2Nyb2xsYWJsZUxheWVySW1wbC5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmg+CisK
KyNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiUmVnaW9uLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0U2Nyb2xsUG9zaXRp
b24oV2ViUG9pbnQgcG9zaXRpb24pCit7CisgICAgbV9wcml2YXRlLT5zZXRTY3JvbGxQb3NpdGlv
bihwb3NpdGlvbik7Cit9CisKK3ZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRTY3JvbGxhYmxl
KGJvb2wgc2Nyb2xsYWJsZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldFNjcm9sbGFibGUoc2Nyb2xs
YWJsZSk7Cit9CisKK3ZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRIYXZlV2hlZWxFdmVudEhh
bmRsZXJzKGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycykKK3sKKyAgICBtX3ByaXZhdGUtPnNl
dEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoaGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7Cit9CisKK3Zv
aWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoYm9vbCBz
aG91bGRTY3JvbGxPbk1haW5UaHJlYWQpCit7CisgICAgbV9wcml2YXRlLT5zZXRTaG91bGRTY3Jv
bGxPbk1haW5UaHJlYWQoc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKTsKK30KKwordm9pZCBXZWJT
Y3JvbGxhYmxlTGF5ZXI6OnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFdlYlZlY3Rv
cjxXZWJSZWN0PiYgcmVjdHMpCit7CisgICAgV2ViQ29yZTo6UmVnaW9uIHJlZ2lvbjsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY3RzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFdlYkNv
cmU6OkludFJlY3QgcmVjdCA9IHJlY3RzW2ldOworICAgICAgICByZWdpb24udW5pdGUocmVjdCk7
CisgICAgfQorICAgIG1fcHJpdmF0ZS0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24ocmVnaW9u
KTsKKworfQorCit2b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0SXNDb250YWluZXJGb3JGaXhl
ZFBvc2l0aW9uTGF5ZXJzKGJvb2wgZW5hYmxlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0SXNDb250
YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGVuYWJsZSk7Cit9CisKK3ZvaWQgV2ViU2Nyb2xs
YWJsZUxheWVyOjpzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCBlbmFibGUpCit7CisgICAg
bV9wcml2YXRlLT5zZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoZW5hYmxlKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTY3JvbGxiYXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3Jv
bGxiYXJMYXllci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiZDFiMjBmYjQw
ZjdjNjRkN2UxNzYzYWE2ODY2YjE0ZTE1ZjliYWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xs
YmFyTGF5ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaD4KLQot
I2luY2x1ZGUgIlNjcm9sbGJhckxheWVyQ2hyb21pdW0uaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFdlYlNjcm9sbGJhckxheWVyOjpz
ZXRTY3JvbGxMYXllcihjb25zdCBXZWJMYXllciBsYXllcikKLXsKLSAgICBpbnQgaWQgPSBsYXll
ci5pc051bGwoKSA/IDAgOiBsYXllci5jb25zdFVud3JhcDxMYXllckNocm9taXVtPigpLT5pZCgp
OwotICAgIHVud3JhcDxTY3JvbGxiYXJMYXllckNocm9taXVtPigpLT5zZXRTY3JvbGxMYXllcklk
KGlkKTsKLX0KLQotV2ViU2Nyb2xsYmFyTGF5ZXIgV2ViU2Nyb2xsYmFyTGF5ZXI6OmNyZWF0ZShX
ZWJDb3JlOjpTY3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyIHBh
aW50ZXIsIFBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4gZ2VvbWV0cnkpCi17
Ci0gICAgcmV0dXJuIFdlYlNjcm9sbGJhckxheWVyKFNjcm9sbGJhckxheWVyQ2hyb21pdW06OmNy
ZWF0ZShXZWJTY3JvbGxiYXI6OmNyZWF0ZShzY3JvbGxiYXIpLCBwYWludGVyLCBnZW9tZXRyeSwg
MCkpOwotfQotCi1XZWJTY3JvbGxiYXJMYXllcjo6V2ViU2Nyb2xsYmFyTGF5ZXIoY29uc3QgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW0+JiBsYXllcikKLSAg
ICA6IFdlYkxheWVyKGxheWVyKQotewotfQotCi1XZWJTY3JvbGxiYXJMYXllciYgV2ViU2Nyb2xs
YmFyTGF5ZXI6Om9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bT4mIGxheWVyKQotewotICAgIG1fcHJpdmF0ZSA9IGxheWVyOwotICAg
IHJldHVybiAqdGhpczsKLX0KLQotV2ViU2Nyb2xsYmFyTGF5ZXI6Om9wZXJhdG9yIFBhc3NSZWZQ
dHI8U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4oKSBjb25zdAotewotICAgIHJldHVybiB1bndyYXA8
U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4oKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJMYXllcklt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBs
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lYzZlOTg5NWRkYmQ1OTE5NTdlMWFkMGU0ODVjMWIwMTBmYmZmODIy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xs
YmFyTGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYlNjcm9sbGJhckxheWVySW1wbC5oIgorCisjaW5jbHVkZSAiU2Ny
b2xsYmFyTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgorCit1c2lu
ZyBXZWJDb3JlOjpTY3JvbGxiYXI7Cit1c2luZyBXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9t
aXVtOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2Nyb2xsYmFyTGF5ZXIqIFdlYlNjcm9s
bGJhckxheWVyOjpjcmVhdGUoV2ViQ29yZTo6U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9s
bGJhclRoZW1lUGFpbnRlciBwYWludGVyLCBQYXNzT3duUHRyPFdlYlNjcm9sbGJhclRoZW1lR2Vv
bWV0cnk+IGdlb21ldHJ5KQoreworICAgIHJldHVybiBuZXcgV2ViU2Nyb2xsYmFyTGF5ZXJJbXBs
KFNjcm9sbGJhckxheWVyQ2hyb21pdW06OmNyZWF0ZShXZWJTY3JvbGxiYXI6OmNyZWF0ZShzY3Jv
bGxiYXIpLCBwYWludGVyLCBnZW9tZXRyeSwgMCkpOworfQorCisKK1dlYlNjcm9sbGJhckxheWVy
SW1wbDo6V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCisgICAgOiBtX2xheWVyKGFkb3B0UHRyKG5ldyBXZWJMYXll
ckltcGwobGF5ZXIpKSkKK3sKK30KKworV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsOjp+V2ViU2Nyb2xs
YmFyTGF5ZXJJbXBsKCkKK3sKK30KKworV2ViTGF5ZXIqIFdlYlNjcm9sbGJhckxheWVySW1wbDo6
bGF5ZXIoKQoreworICAgIHJldHVybiBtX2xheWVyLmdldCgpOworfQorCit2b2lkIFdlYlNjcm9s
bGJhckxheWVySW1wbDo6c2V0U2Nyb2xsTGF5ZXIoV2ViTGF5ZXIqIGxheWVyKQoreworICAgIGlu
dCBpZCA9IGxheWVyID8gc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4obGF5ZXIpLT5sYXllcigp
LT5pZCgpIDogMDsKKyAgICBzdGF0aWNfY2FzdDxTY3JvbGxiYXJMYXllckNocm9taXVtKj4obV9s
YXllci0+bGF5ZXIoKSktPnNldFNjcm9sbExheWVySWQoaWQpOworfQorCisKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
Y3JvbGxiYXJMYXllckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9s
bGJhckxheWVySW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyMGY3OWM1NThlNDEwMjJhZWNkNjI5OWVjNmZk
NDE4M2YxMjI5YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTY3JvbGxiYXJMYXllckltcGwuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJTY3JvbGxiYXJMYXllckltcGxfaAorI2RlZmluZSBXZWJTY3JvbGxiYXJMYXllckltcGxf
aAorCisjaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJhckxheWVyLmg+CisjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIFNjcm9sbGJhckxheWVyQ2hyb21pdW07Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworY2xhc3MgV2ViTGF5ZXJJbXBsOworCitjbGFzcyBXZWJTY3JvbGxiYXJMYXllckltcGwg
OiBwdWJsaWMgV2ViU2Nyb2xsYmFyTGF5ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlNj
cm9sbGJhckxheWVySW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21p
dW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJTY3JvbGxiYXJMYXllckltcGwoKTsKKworICAgIC8vIFdl
YlNjcm9sbGJhckxheWVyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxh
eWVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbExheWVyKFdlYkxheWVy
KikgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXll
cjsKK307CisKK30KKworI2VuZGlmIC8vIFdlYlNjcm9sbGJhckxheWVySW1wbF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVyLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODM5MTRiMjYzMjk0YjUzZjU0NjYxMWFkY2E4OTgzODQ2
MTY3MGFlZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXIuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlIDxwdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmg+Ci0KLSNpbmNsdWRlICJXZWJTb2xpZENv
bG9yTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5oPgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotV2ViU29saWRDb2xvckxheWVyIFdlYlNvbGlkQ29sb3JMYXllcjo6
Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gV2ViU29saWRDb2xvckxheWVyKFdlYlNvbGlkQ29sb3JM
YXllckltcGw6OmNyZWF0ZSgpKTsKLX0KLQotV2ViU29saWRDb2xvckxheWVyOjpXZWJTb2xpZENv
bG9yTGF5ZXIoY29uc3QgUGFzc1JlZlB0cjxXZWJTb2xpZENvbG9yTGF5ZXJJbXBsPiYgbm9kZSkK
LSAgICA6IFdlYkxheWVyKG5vZGUpCi17Ci19Ci0KLXZvaWQgV2ViU29saWRDb2xvckxheWVyOjpz
ZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29sb3ImIGNvbG9yKQotewotICAgIG1fcHJpdmF0
ZS0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXll
ckltcGwuY3BwCmluZGV4IDMzYjFhMzBlMzhjMzBhOTU3ZGRlM2E4NjFhNDg3ZGExN2M4MWQyOTku
Ljk0NDA0MjYyY2E4MWMzYTY3ZmI0ZTIxMmYzYmZlZDg2MTk5NjBlMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuY3BwCkBA
IC0yNiwyNCArMjYsMzcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTb2xp
ZENvbG9yTGF5ZXJJbXBsLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworI2luY2x1ZGUg
IlNvbGlkQ29sb3JMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCisK
K3VzaW5nIFdlYkNvcmU6OlNvbGlkQ29sb3JMYXllckNocm9taXVtOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotUGFzc1JlZlB0cjxXZWJTb2xpZENvbG9yTGF5ZXJJbXBsPiBXZWJTb2xpZENvbG9y
TGF5ZXJJbXBsOjpjcmVhdGUoKQorV2ViU29saWRDb2xvckxheWVyKiBXZWJTb2xpZENvbG9yTGF5
ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2xpZENvbG9yTGF5
ZXJJbXBsKCkpOworICAgIHJldHVybiBuZXcgV2ViU29saWRDb2xvckxheWVySW1wbChTb2xpZENv
bG9yTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpOwogfQogCi1XZWJTb2xpZENvbG9yTGF5ZXJJbXBs
OjpXZWJTb2xpZENvbG9yTGF5ZXJJbXBsKCkKLSAgICA6IFNvbGlkQ29sb3JMYXllckNocm9taXVt
KCkKK1dlYlNvbGlkQ29sb3JMYXllckltcGw6OldlYlNvbGlkQ29sb3JMYXllckltcGwoUGFzc1Jl
ZlB0cjxTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCisgICAgOiBtX2xheWVyKGFkb3B0
UHRyKG5ldyBXZWJMYXllckltcGwobGF5ZXIpKSkKIHsKLSAgICBzZXRJc0RyYXdhYmxlKHRydWUp
OworICAgIG1fbGF5ZXItPmxheWVyKCktPnNldElzRHJhd2FibGUodHJ1ZSk7CiB9CiAKIFdlYlNv
bGlkQ29sb3JMYXllckltcGw6On5XZWJTb2xpZENvbG9yTGF5ZXJJbXBsKCkKIHsKIH0KIAorV2Vi
TGF5ZXIqIFdlYlNvbGlkQ29sb3JMYXllckltcGw6OmxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9s
YXllci5nZXQoKTsKK30KKwordm9pZCBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpzZXRCYWNrZ3Jv
dW5kQ29sb3IoV2ViQ29sb3IgY29sb3IpCit7CisgICAgbV9sYXllci0+c2V0QmFja2dyb3VuZENv
bG9yKGNvbG9yKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuaAppbmRleCBkMjY3
M2I0MmI2OGY4Y2QxZTcxMWI5MWUxMjcwZDY3NmQ1ZDc2OWVhLi43NzQyYmE0OTJkNGM1MTRkYzM3
ODI3YzBiZDZlMDUzMGRkZDQwMTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU29saWRDb2xvckxheWVySW1wbC5oCkBAIC0yNiwxOCArMjYsMjggQEAKICNpZm5k
ZWYgV2ViU29saWRDb2xvckxheWVySW1wbF9oCiAjZGVmaW5lIFdlYlNvbGlkQ29sb3JMYXllcklt
cGxfaAogCi0jaW5jbHVkZSAiU29saWRDb2xvckxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlIDxw
dWJsaWMvV2ViU29saWRDb2xvckxheWVyLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNv
bGlkQ29sb3JMYXllckNocm9taXVtOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdl
YkxheWVySW1wbDsKIAotY2xhc3MgV2ViU29saWRDb2xvckxheWVySW1wbCA6IHB1YmxpYyBXZWJD
b3JlOjpTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bSB7CitjbGFzcyBXZWJTb2xpZENvbG9yTGF5ZXJJ
bXBsIDogcHVibGljIFdlYlNvbGlkQ29sb3JMYXllciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViU29saWRDb2xvckxheWVySW1wbD4gY3JlYXRlKCk7Ci0KLXByb3RlY3RlZDoK
LSAgICBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsKCk7CisgICAgZXhwbGljaXQgV2ViU29saWRDb2xv
ckxheWVySW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OlNvbGlkQ29sb3JMYXllckNocm9taXVtPik7
CiAgICAgdmlydHVhbCB+V2ViU29saWRDb2xvckxheWVySW1wbCgpOworCisgICAgLy8gV2ViU29s
aWRDb2xvckxheWVyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVy
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihXZWJDb2xv
cikgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXll
cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWRlb0xheWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYz
NDIxNTVkYWNlZWFhYTdkODY2NjUzN2Y3MDAzYWExOTMzMDQyZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWRlb0xheWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVmlkZW9MYXllckNocm9taXVtLmgiCi0jaW5j
bHVkZSA8cHVibGljL1dlYlZpZGVvTGF5ZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdl
YlZpZGVvTGF5ZXIgV2ViVmlkZW9MYXllcjo6Y3JlYXRlKFdlYlZpZGVvRnJhbWVQcm92aWRlciog
cHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIFdlYlZpZGVvTGF5ZXIoV2ViQ29yZTo6VmlkZW9MYXll
ckNocm9taXVtOjpjcmVhdGUocHJvdmlkZXIpKTsKLX0KLQotV2ViVmlkZW9MYXllcjo6V2ViVmlk
ZW9MYXllcihQYXNzUmVmUHRyPFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCi0g
ICAgOiBXZWJMYXllcihsYXllcikKLXsKLX0KLQotYm9vbCBXZWJWaWRlb0xheWVyOjphY3RpdmUo
KSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWRlb0xheWVySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWJmZWQ2NzQyZjJkYzdmOTA5ZmFlMjU1
MzcyMjZlMWFkMGUwOWJkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlZpZGVvTGF5ZXJJbXBsLmgiCisKKyNpbmNs
dWRlICJWaWRlb0xheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlZpZGVvTGF5ZXIqIFdlYlZpZGVvTGF5ZXI6OmNyZWF0
ZShXZWJWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQoreworICAgIHJldHVybiBuZXcgV2Vi
VmlkZW9MYXllckltcGwoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUocHJvdmlk
ZXIpKTsKK30KKworV2ViVmlkZW9MYXllckltcGw6OldlYlZpZGVvTGF5ZXJJbXBsKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtPiBsYXllcikKKyAgICA6IG1fbGF5ZXIoYWRv
cHRQdHIobmV3IFdlYkxheWVySW1wbChsYXllcikpKQoreworfQorCitXZWJWaWRlb0xheWVySW1w
bDo6fldlYlZpZGVvTGF5ZXJJbXBsKCkKK3sKK30KKworV2ViTGF5ZXIqIFdlYlZpZGVvTGF5ZXJJ
bXBsOjpsYXllcigpCit7CisgICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9CisKK2Jvb2wgV2Vi
VmlkZW9MYXllckltcGw6OmFjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXItPmxh
eWVyKCktPmxheWVyVHJlZUhvc3QoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVySW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllckltcGwuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yODdlNGI1ZTIwZGM5NmFiNzJiNjQwYjExYTI5YjY5ODdmZmNmZmFkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllckltcGwuaApAQCAt
MCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJWaWRlb0xheWVySW1wbF9oCisjZGVmaW5l
IFdlYlZpZGVvTGF5ZXJJbXBsX2gKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJWaWRlb0xheWVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFZpZGVvTGF5ZXJDaHJvbWl1bTsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJMYXllckltcGw7CisKK2NsYXNzIFdlYlZpZGVv
TGF5ZXJJbXBsIDogcHVibGljIFdlYlZpZGVvTGF5ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0
IFdlYlZpZGVvTGF5ZXJJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVt
Pik7CisgICAgdmlydHVhbCB+V2ViVmlkZW9MYXllckltcGwoKTsKKworICAgIC8vIFdlYlZpZGVv
TGF5ZXIgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgYWN0aXZlKCkgY29uc3QgT1ZFUlJJREU7CisKK3ByaXZh
dGU6CisgICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXllcjsKK307CisKK30KKworI2VuZGlm
IC8vIFdlYlZpZGVvTGF5ZXJJbXBsX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCmluZGV4IDBiZDNlYTExNmU0YzA1MmRlYWEwNWU2NjMwNzY0ZTMyZjljYTQx
NjguLjYwYzc1YzI5ZjJmYmQ0M2Q5MjZkYjgzYTY1MTkzZGMyYmEyNjM3ZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTQxMCw2ICs0MTAsNyBAQCBX
ZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogICAgICwgbV9p
c0NhbmNlbGluZ0Z1bGxTY3JlZW4oZmFsc2UpCiAgICAgLCBtX2JlbmNobWFya1N1cHBvcnQodGhp
cykKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgLCBtX3Jvb3RMYXllcigw
KQogICAgICwgbV9yb290R3JhcGhpY3NMYXllcigwKQogICAgICwgbV9pc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdBY3RpdmUoZmFsc2UpCiAgICAgLCBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZChm
YWxzZSkKQEAgLTM1MTQsNiArMzUxNSw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OmFsbG93c0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmcoKQogdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5
ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CiAgICAgbV9yb290R3JhcGhpY3NMYXllciA9IGxh
eWVyOworICAgIG1fcm9vdExheWVyID0gbGF5ZXIgPyBsYXllci0+cGxhdGZvcm1MYXllcigpIDog
MDsKIAogICAgIHNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShsYXllcik7CiAgICAg
aWYgKG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KSB7CkBAIC0zNTI3LDExICszNTI5LDggQEAg
dm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5
ZXIpCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRTY3JvbGxMYXllcihz
Y3JvbGxMYXllcik7CiAgICAgfQogCi0gICAgaWYgKGxheWVyKQotICAgICAgICBtX3Jvb3RMYXll
ciA9ICpsYXllci0+cGxhdGZvcm1MYXllcigpOwotCiAgICAgaWYgKCFtX2xheWVyVHJlZVZpZXcu
aXNOdWxsKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRSb290TGF5ZXIobGF5ZXIgPyAm
bV9yb290TGF5ZXIgOiAwKTsKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LnNldFJvb3RMYXllciht
X3Jvb3RMYXllcik7CiAKICAgICBJbnRSZWN0IGRhbWFnZWRSZWN0KDAsIDAsIG1fc2l6ZS53aWR0
aCwgbV9zaXplLmhlaWdodCk7CiAgICAgaWYgKCFtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Fj
dGl2ZSkKQEAgLTM2NDQsNyArMzY0Myw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgbV9ub25Db21wb3Np
dGVkQ29udGVudEhvc3QtPnNldFNob3dEZWJ1Z0JvcmRlcnMocGFnZSgpLT5zZXR0aW5ncygpLT5z
aG93RGVidWdCb3JkZXJzKCkpOwogICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+
c2V0T3BhcXVlKCFpc1RyYW5zcGFyZW50KCkpOwogCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5p
bml0aWFsaXplKHRoaXMsIG1fcm9vdExheWVyLCBsYXllclRyZWVWaWV3U2V0dGluZ3MpOworICAg
ICAgICBtX2xheWVyVHJlZVZpZXcuaW5pdGlhbGl6ZSh0aGlzLCAqbV9yb290TGF5ZXIsIGxheWVy
VHJlZVZpZXdTZXR0aW5ncyk7CiAgICAgICAgIGlmICghbV9sYXllclRyZWVWaWV3LmlzTnVsbCgp
KSB7CiAgICAgICAgICAgICBpZiAobV93ZWJTZXR0aW5ncy0+YXBwbHlEZWZhdWx0RGV2aWNlU2Nh
bGVGYWN0b3JJbkNvbXBvc2l0b3IoKSAmJiBwYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCkgIT0g
MSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChwYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMzk3ODM2ODBm
YTE5ODk4ODZjNDYwYjEzZDQwZGQxNDA0MWEyYTQyYi4uMTIzZjM4YzRjMzViZGU5NzEwOThkZGMy
NjBkODgxNDM1YTI5MmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCkBAIC04MTQsNyArODE0LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1f
cm9vdExheWVyU2Nyb2xsRGFtYWdlOwogICAgIE93blB0cjxOb25Db21wb3NpdGVkQ29udGVudEhv
c3Q+IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OwogICAgIFdlYkxheWVyVHJlZVZpZXcgbV9s
YXllclRyZWVWaWV3OwotICAgIFdlYkxheWVyIG1fcm9vdExheWVyOworICAgIFdlYkxheWVyKiBt
X3Jvb3RMYXllcjsKICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX3Jvb3RHcmFwaGljc0xh
eWVyOwogICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmU7CiAgICAgYm9v
bCBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGE1Y2E1NTEy
NGMyOTA0NzJjMjc0N2QwOTM5ZmIwMGRhMjA1OWY3N2QuLjQ5NDhmOTdjYzU4OGEwYjViYjIwMGQx
NDM5YmM0ZjkxNzliNDlmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMTIyLDEzICsxMjIsMTMgQEAg
VEVTVChJbWFnZUxheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVJbWFnZXMpCiAgICAgUmVmUHRyPElt
YWdlPiBub25PcGFxdWVJbWFnZSA9IFRlc3RJbWFnZTo6Y3JlYXRlKEludFNpemUoMTAwLCAxMDAp
LCBmYWxzZSk7CiAgICAgQVNTRVJUX1RSVUUobm9uT3BhcXVlSW1hZ2UuZ2V0KCkpOwogCi0gICAg
QVNTRVJUX1RSVUUoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigpLmlzTnVsbCgpKTsKKyAg
ICBBU1NFUlRfRkFMU0UoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigpKTsKIAogICAgIGdy
YXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShvcGFxdWVJbWFnZS5nZXQoKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigpLm9wYXF1ZSgpKTsKKyAg
ICBBU1NFUlRfVFJVRShncmFwaGljc0xheWVyLT5jb250ZW50c0xheWVyKCktPm9wYXF1ZSgpKTsK
IAogICAgIGdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShub25PcGFxdWVJbWFnZS5n
ZXQoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzTGF5ZXIoKS5v
cGFxdWUoKSk7CisgICAgQVNTRVJUX0ZBTFNFKGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzTGF5ZXIo
KS0+b3BhcXVlKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwCmluZGV4IDY2NzIwMDQxMDM4NTk2MzliZWE2MjNj
Y2RlZjUxYjkyMzIzMGI2ZDAuLjliOGU1OGNhMTAwZTc3ZDkwMzY1YmQ0NjI4YjFkZTM4MTA5Mzc0
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXIuaD4KIAogI2luY2x1
ZGUgIkNvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJXZWJM
YXllckltcGwuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvci5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJDb250ZW50TGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29udGVudExh
eWVyQ2xpZW50Lmg+CkBAIC03Niw5ICs3Nyw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8v
IEluaXRpYWxpemUgd2l0aG91dCB0aHJlYWRpbmcgc3VwcG9ydC4KICAgICAgICAgV2ViS2l0OjpX
ZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOwotICAgICAgICBtX3Jvb3RMYXllciA9IFdlYkxh
eWVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9yb290TGF5ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6
Y3JlYXRlKCkpOwogICAgICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3Np
dGUoKSkuVGltZXMoQW55TnVtYmVyKCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShtX3ZpZXcuaW5p
dGlhbGl6ZSgmbV9jbGllbnQsIG1fcm9vdExheWVyLCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5n
cygpKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1fdmlldy5pbml0aWFsaXplKCZtX2NsaWVudCwg
Km1fcm9vdExheWVyLCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncygpKSk7CiAgICAgICAgIE1v
Y2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7CiAgICAgfQogCkBAIC04
NywxNCArODgsMTQgQEAgcHVibGljOgogICAgICAgICAvLyBXZSBtYXkgZ2V0IGFueSBudW1iZXIg
b2Ygc2NoZWR1bGVDb21wb3NpdGUgY2FsbHMgZHVyaW5nIHNodXRkb3duLgogICAgICAgICBFWFBF
Q1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkp
OwogICAgICAgICBtX3ZpZXcuc2V0Um9vdExheWVyKDApOwotICAgICAgICBtX3Jvb3RMYXllci5y
ZXNldCgpOworICAgICAgICBtX3Jvb3RMYXllci5jbGVhcigpOwogICAgICAgICBtX3ZpZXcucmVz
ZXQoKTsKICAgICAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0K
IAogcHJvdGVjdGVkOgogICAgIE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50IG1fY2xpZW50Owot
ICAgIFdlYkxheWVyIG1fcm9vdExheWVyOworICAgIE93blB0cjxXZWJMYXllcj4gbV9yb290TGF5
ZXI7CiAgICAgV2ViTGF5ZXJUcmVlVmlldyBtX3ZpZXc7CiB9OwogCkBAIC0xMDQsNzMgKzEwNSw3
MyBAQCBURVNUX0YoV2ViTGF5ZXJUZXN0LCBDbGllbnQpCiB7CiAgICAgLy8gQmFzZSBsYXllci4K
ICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55
TnVtYmVyKCkpOwotICAgIFdlYkxheWVyIGxheWVyID0gV2ViTGF5ZXI6OmNyZWF0ZSgpOwotICAg
IG1fcm9vdExheWVyLmFkZENoaWxkKGxheWVyKTsKKyAgICBPd25QdHI8V2ViTGF5ZXI+IGxheWVy
ID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRkQ2hp
bGQobGF5ZXIuZ2V0KCkpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZt
X2NsaWVudCk7CiAKICAgICBXZWJGbG9hdFBvaW50IHBvaW50KDMsIDQpOwogICAgIEVYUEVDVF9D
QUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKLSAg
ICBsYXllci5zZXRBbmNob3JQb2ludChwb2ludCk7CisgICAgbGF5ZXItPnNldEFuY2hvclBvaW50
KHBvaW50KTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQp
OwotICAgIEVYUEVDVF9FUShwb2ludCwgbGF5ZXIuYW5jaG9yUG9pbnQoKSk7CisgICAgRVhQRUNU
X0VRKHBvaW50LCBsYXllci0+YW5jaG9yUG9pbnQoKSk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX2Ns
aWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7CiAgICAgZmxvYXQg
YW5jaG9yWiA9IDU7Ci0gICAgbGF5ZXIuc2V0QW5jaG9yUG9pbnRaKGFuY2hvclopOworICAgIGxh
eWVyLT5zZXRBbmNob3JQb2ludFooYW5jaG9yWik7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJF
eHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfRVEoYW5jaG9yWiwgbGF5ZXIuYW5j
aG9yUG9pbnRaKCkpOworICAgIEVYUEVDVF9FUShhbmNob3JaLCBsYXllci0+YW5jaG9yUG9pbnRa
KCkpOwogCiAgICAgV2ViU2l6ZSBzaXplKDcsIDgpOwogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50
LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKLSAgICBsYXllci5zZXRC
b3VuZHMoc2l6ZSk7CisgICAgbGF5ZXItPnNldEJvdW5kcyhzaXplKTsKICAgICBNb2NrOjpWZXJp
ZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAgIEVYUEVDVF9FUShzaXplLCBs
YXllci5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKHNpemUsIGxheWVyLT5ib3VuZHMoKSk7CiAK
ICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRM
ZWFzdCgxKSk7Ci0gICAgbGF5ZXIuc2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAgICBsYXllci0+
c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0
aW9ucygmbV9jbGllbnQpOwotICAgIEVYUEVDVF9UUlVFKGxheWVyLm1hc2tzVG9Cb3VuZHMoKSk7
CisgICAgRVhQRUNUX1RSVUUobGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSk7CiAKICAgICBFWFBFQ1Rf
Q0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkpOwot
ICAgIFdlYkxheWVyIG90aGVyTGF5ZXIgPSBXZWJMYXllcjo6Y3JlYXRlKCk7Ci0gICAgbV9yb290
TGF5ZXIuYWRkQ2hpbGQob3RoZXJMYXllcik7CisgICAgT3duUHRyPFdlYkxheWVyPiBvdGhlckxh
eWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRk
Q2hpbGQob3RoZXJMYXllci5nZXQoKSk7CiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVk
dWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGxheWVyLnNldE1hc2tMYXll
cihvdGhlckxheWVyKTsKKyAgICBsYXllci0+c2V0TWFza0xheWVyKG90aGVyTGF5ZXIuZ2V0KCkp
OwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7CiAKICAg
ICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFz
dCgxKSk7CiAgICAgZmxvYXQgb3BhY2l0eSA9IDAuMTIzZjsKLSAgICBsYXllci5zZXRPcGFjaXR5
KG9wYWNpdHkpOworICAgIGxheWVyLT5zZXRPcGFjaXR5KG9wYWNpdHkpOwogICAgIE1vY2s6OlZl
cmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7Ci0gICAgRVhQRUNUX0VRKG9wYWNp
dHksIGxheWVyLm9wYWNpdHkoKSk7CisgICAgRVhQRUNUX0VRKG9wYWNpdHksIGxheWVyLT5vcGFj
aXR5KCkpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkp
LlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGxheWVyLnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXll
ci0+c2V0T3BhcXVlKHRydWUpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25z
KCZtX2NsaWVudCk7Ci0gICAgRVhQRUNUX1RSVUUobGF5ZXIub3BhcXVlKCkpOworICAgIEVYUEVD
VF9UUlVFKGxheWVyLT5vcGFxdWUoKSk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2No
ZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7Ci0gICAgbGF5ZXIuc2V0UG9zaXRp
b24ocG9pbnQpOworICAgIGxheWVyLT5zZXRQb3NpdGlvbihwb2ludCk7CiAgICAgTW9jazo6VmVy
aWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfRVEocG9pbnQs
IGxheWVyLnBvc2l0aW9uKCkpOworICAgIEVYUEVDVF9FUShwb2ludCwgbGF5ZXItPnBvc2l0aW9u
KCkpOwogCiAgICAgLy8gVGV4dHVyZSBsYXllci4KICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwg
c2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkpOwotICAgIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyIHRleHR1cmVMYXllciA9IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVh
dGUoKTsKLSAgICBtX3Jvb3RMYXllci5hZGRDaGlsZCh0ZXh0dXJlTGF5ZXIpOworICAgIE93blB0
cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllcj4gdGV4dHVyZUxheWVyID0gYWRvcHRQdHIoV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQo
dGV4dHVyZUxheWVyLT5sYXllcigpKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0
aW9ucygmbV9jbGllbnQpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29t
cG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIHRleHR1cmVMYXllci5zZXRUZXh0dXJl
SWQoMyk7CisgICAgdGV4dHVyZUxheWVyLT5zZXRUZXh0dXJlSWQoMyk7CiAgICAgTW9jazo6VmVy
aWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKIAogICAgIEVYUEVDVF9DQUxMKG1f
Y2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKLSAgICB0ZXh0
dXJlTGF5ZXIuc2V0RmxpcHBlZCh0cnVlKTsKKyAgICB0ZXh0dXJlTGF5ZXItPnNldEZsaXBwZWQo
dHJ1ZSk7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsK
IAogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhB
dExlYXN0KDEpKTsKICAgICBXZWJGbG9hdFJlY3QgdXZSZWN0KDAuMWYsIDAuMWYsIDAuOWYsIDAu
OWYpOwotICAgIHRleHR1cmVMYXllci5zZXRVVlJlY3QodXZSZWN0KTsKKyAgICB0ZXh0dXJlTGF5
ZXItPnNldFVWUmVjdCh1dlJlY3QpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRp
b25zKCZtX2NsaWVudCk7CiAKIApAQCAtMTc4LDE0ICsxNzksMTQgQEAgVEVTVF9GKFdlYkxheWVy
VGVzdCwgQ2xpZW50KQogICAgIE1vY2tXZWJDb250ZW50TGF5ZXJDbGllbnQgY29udGVudENsaWVu
dDsKICAgICBFWFBFQ1RfQ0FMTChjb250ZW50Q2xpZW50LCBwYWludENvbnRlbnRzKF8sIF8sIF8p
KS5UaW1lcyhBbnlOdW1iZXIoKSk7CiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxl
Q29tcG9zaXRlKCkpLlRpbWVzKEFueU51bWJlcigpKTsKLSAgICBXZWJDb250ZW50TGF5ZXIgY29u
dGVudExheWVyID0gV2ViQ29udGVudExheWVyOjpjcmVhdGUoJmNvbnRlbnRDbGllbnQpOwotICAg
IG1fcm9vdExheWVyLmFkZENoaWxkKGNvbnRlbnRMYXllcik7CisgICAgT3duUHRyPFdlYkNvbnRl
bnRMYXllcj4gY29udGVudExheWVyID0gYWRvcHRQdHIoV2ViQ29udGVudExheWVyOjpjcmVhdGUo
JmNvbnRlbnRDbGllbnQpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQoY29udGVudExheWVy
LT5sYXllcigpKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGll
bnQpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRp
bWVzKEF0TGVhc3QoMSkpOwotICAgIGNvbnRlbnRMYXllci5zZXREcmF3c0NvbnRlbnQoZmFsc2Up
OworICAgIGNvbnRlbnRMYXllci0+bGF5ZXIoKS0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKICAg
ICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAgIEVYUEVD
VF9GQUxTRShjb250ZW50TGF5ZXIuZHJhd3NDb250ZW50KCkpOworICAgIEVYUEVDVF9GQUxTRShj
b250ZW50TGF5ZXItPmxheWVyKCktPmRyYXdzQ29udGVudCgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcApp
bmRleCBiZWMyYzYwMzVhY2FlZjA3MzQwYTFiOGMzNjRlMWE5OTA4MmYzY2Q1Li4xYzE2MDJjMjM0
MTY5OWQ5ODY1ZTgzOTM5YWQxMDRkMGIzYjEwOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcApAQCAtNjAsOCArNjAs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKICAgICB7CiAgICAgICAgIGlu
aXRpYWxpemVDb21wb3NpdG9yKCk7Ci0gICAgICAgIG1fcm9vdExheWVyID0gV2ViTGF5ZXI6OmNy
ZWF0ZSgpOwotICAgICAgICBFWFBFQ1RfVFJVRShtX3ZpZXcuaW5pdGlhbGl6ZShjbGllbnQoKSwg
bV9yb290TGF5ZXIsIFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzKCkpKTsKKyAgICAgICAgbV9y
b290TGF5ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShtX3ZpZXcuaW5pdGlhbGl6ZShjbGllbnQoKSwgKm1fcm9vdExheWVyLCBXZWJMYXllclRy
ZWVWaWV3OjpTZXR0aW5ncygpKSk7CiAgICAgICAgIG1fdmlldy5zZXRTdXJmYWNlUmVhZHkoKTsK
ICAgICB9CiAKQEAgLTcwLDEzICs3MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIE1vY2s6OlZlcmlm
eUFuZENsZWFyRXhwZWN0YXRpb25zKGNsaWVudCgpKTsKIAogICAgICAgICBtX3ZpZXcuc2V0Um9v
dExheWVyKDApOwotICAgICAgICBtX3Jvb3RMYXllci5yZXNldCgpOworICAgICAgICBtX3Jvb3RM
YXllci5jbGVhcigpOwogICAgICAgICBtX3ZpZXcucmVzZXQoKTsKICAgICAgICAgV2ViS2l0OjpX
ZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIFdlYkxh
eWVyIG1fcm9vdExheWVyOworICAgIE93blB0cjxXZWJMYXllcj4gbV9yb290TGF5ZXI7CiAgICAg
V2ViTGF5ZXJUcmVlVmlldyBtX3ZpZXc7CiB9OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>