<?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>79425</bug_id>
          
          <creation_ts>2012-02-23 17:31:19 -0800</creation_ts>
          <short_desc>[chromium] Move Web*Layer* headers into Platform</short_desc>
          <delta_ts>2012-02-24 11:29:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>79428</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danakj</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>vangelis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>563735</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-23 17:31:19 -0800</bug_when>
    <thetext>[chromium] Move Web*Layer* headers into Platform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563743</commentid>
    <comment_count>1</comment_count>
      <attachid>128616</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-23 17:33:22 -0800</bug_when>
    <thetext>Created attachment 128616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563746</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-23 17:35:11 -0800</bug_when>
    <thetext>This moves Web*Layer* headers over to Platform so that I can start depending on these inside WebCore.  This will conflict with the changes to WebLayerTreeView in https://bugs.webkit.org/show_bug.cgi?id=75591, after I land whichever one I can get a review on first I&apos;ll take care of the conflicts to the other patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564125</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2012-02-24 02:16:28 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564126</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2012-02-24 02:16:37 -0800</bug_when>
    <thetext>Attachment 128616 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/Platform/chromium/public/WebPrivatePtr.h:42:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/Platform/chromium/public/WebColorName.h:69:  One space before end of line comments  [whitespace/comments] [5]
Source/Platform/chromium/public/WebColor.h:39:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 3 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564186</commentid>
    <comment_count>5</comment_count>
      <attachid>128706</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-02-24 04:31:59 -0800</bug_when>
    <thetext>Created attachment 128706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564195</commentid>
    <comment_count>6</comment_count>
      <attachid>128706</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-02-24 04:36:15 -0800</bug_when>
    <thetext>Comment on attachment 128706
Patch

Please disregard my attachment, uploaded to a wrong bug, sorry!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564499</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-24 11:29:06 -0800</bug_when>
    <thetext>Committed r108829: &lt;http://trac.webkit.org/changeset/108829&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128616</attachid>
            <date>2012-02-23 17:33:22 -0800</date>
            <delta_ts>2012-02-24 10:05:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79425-20120223173321.patch</filename>
            <type>text/plain</type>
            <size>77939</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA0NWM4NTA0ZWRlZTEy
M2EyNDY3NjczYTE0Yjc2YjQ1NDgwZTRhYzZhLi43ZjBiM2U3MDdiZWI3NmEzMTIzN2UxMDJmMGVk
NjE2Y2E5NDVmMGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OSBAQAorMjAxMi0wMi0yMyAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gTW92ZSBXZWIqTGF5ZXIqIGhlYWRlcnMgaW50byBQbGF0Zm9ybQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0MjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1vdmVzIHRoZSBXZWIqTGF5ZXIq
IGhlYWRlcnMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcyBmcm9tIFdlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vIGludG8KKyAgICAgICAgUGxhdGZvcm0vY2hyb21pdW0vcHVibGljLgorCisg
ICAgICAgICogUGxhdGZvcm0uZ3lwaToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViQ2Fu
dmFzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYkNhbnZhcy5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJs
aWMvV2ViQ29sb3IuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViQ29sb3IuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogY2hyb21p
dW0vcHVibGljL1dlYkNvbG9yTmFtZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDb2xvck5hbWUuaC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDb250ZW50TGF5ZXIuaC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb250ZW50TGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZW50TGF5ZXI6OldlYkNvbnRlbnRMYXllcik6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRlbnRMYXllcjo6fldlYkNvbnRlbnRMYXllcik6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRlbnRMYXllcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViQ29udGVudExheWVyQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYkNvbnRlbnRMYXllckNsaWVudC5oLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYkNvbnRlbnRMYXllckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRlbnRMYXllckNsaWVudDo6fldlYkNvbnRlbnRMYXllckNsaWVudCk6CisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkV4dGVybmFsVGV4dHVy
ZUxheWVyLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6V2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVM
YXllcjo6fldlYkV4dGVybmFsVGV4dHVyZUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgICogY2hyb21pdW0vcHVibGlj
L1dlYkxheWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYkxheWVyLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTGF5ZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6V2ViTGF5ZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllcjo6fldlYkxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6Om9wZXJh
dG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjppc051bGwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllcjo6dG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6dG9Db25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjp1bndyYXApOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllcjo6Y29uc3RVbndyYXApOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdlYktpdDo6b3BlcmF0b3IhPSk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dl
YkxheWVyVHJlZVZpZXcuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmlldy5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlldyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChTZXR0
aW5ncyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OldlYkxheWVyVHJlZVZp
ZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Ojp+V2ViTGF5ZXJUcmVlVmll
dyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6Om9wZXJhdG9yPSk6CisgICAg
ICAgIChXZWJLaXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJMYXllclRy
ZWVWaWV3Q2xpZW50LmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTGF5ZXJUcmVl
Vmlld0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdDbGllbnQ6On5X
ZWJMYXllclRyZWVWaWV3Q2xpZW50KToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViUHJp
dmF0ZVB0ci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJQcml2YXRlUHRyLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUHJp
dmF0ZVB0cik6CisgICAgICAgIChXZWJLaXQ6OldlYlByaXZhdGVQdHI6OldlYlByaXZhdGVQdHIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcml2YXRlUHRyOjp+V2ViUHJpdmF0ZVB0cik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByaXZhdGVQdHI6OmlzTnVsbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByaXZhdGVQdHI6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJpdmF0ZVB0cjo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJpdmF0ZVB0cjo6Z2V0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJpdmF0ZVB0cjo6b3BlcmF0b3ItPik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByaXZhdGVQdHI6OmFzc2lnbik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNvbGlk
Q29sb3JMYXllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJTb2xpZENvbG9yTGF5ZXIuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJTb2xpZENvbG9yTGF5ZXIpOgorCiAyMDEyLTAyLTA4ICBKYW1lcyBSb2JpbnNvbiAgPGph
bWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgcjEwNzA0MiBjYXVzZWQgY29tcGlsZSBicmVh
a2FnZXMgb24gY2hyb21pdW0gdHJ5IGJvdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
YjljNWMxNDNhNjM5OTEyOWJiNjliZWRjMzhlNTEwMjY3NTQ4MWFmOC4uODg4ZjdkNzdkODczMTg0
NmQ1Njk5MTBjMjEzZjY2MTcwM2U3OGQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNyBAQAorMjAxMi0wMi0yMyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTW92ZSBXZWIqTGF5ZXIqIGhlYWRlcnMgaW50
byBQbGF0Zm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Nzk0MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRzIGZvcndhcmRpbmcgaGVhZGVycyBmb3IgV2ViKkxheWVyKiBBUElzIGFuZCB0aGVpciBk
ZXBlbmRlbmNpZXMuICBUaGUgZm9yd2FyZGluZyBoZWFkZXJzIGZvciB0aGUgV2ViKkxheWVyKgor
ICAgICAgICBBUElzIGFyZSB0ZW1wb3Jhcnkgc2luY2UgV2ViKkxheWVyKiBpcyBub3QgZXhwb3Nl
ZCBpbiB0aGUgY2xpZW50IGludGVyZmFjZS4gIFRoZSBvdGhlciBoZWFkZXJzIChzdWNoIGFzCisg
ICAgICAgIFdlYkNvbG9yKSBhcmUgZXhwb3NlZCBpbiBib3RoIHRoZSBjbGllbnQgYW5kIHBsYXRm
b3JtIEFQSXMsIHNvIHRoZSBmb3J3YXJkaW5nIGhlYWRlcnMgYXJlIHBlcm1hbmVudCwgYWx0aG91
Z2ggd2UKKyAgICAgICAgbWlnaHQgbW92ZSB0aGVtIGJhY2sgZG93biB0byBwdWJsaWMvIGF0IHNv
bWUgcG9pbnQuCisKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViQ2FudmFzLmg6CisgICAg
ICAgICogcHVibGljL3BsYXRmb3JtL1dlYkNvbG9yLmg6CisgICAgICAgICogcHVibGljL3BsYXRm
b3JtL1dlYkNvbG9yTmFtZS5oOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJDb250ZW50
TGF5ZXIuaDoKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViQ29udGVudExheWVyQ2xpZW50
Lmg6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg6
CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYkxheWVyLmg6CisgICAgICAgICogcHVibGlj
L3BsYXRmb3JtL1dlYkxheWVyVHJlZVZpZXcuaDoKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0v
V2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJQ
cml2YXRlUHRyLmg6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYlNvbGlkQ29sb3JMYXll
ci5oOgorCiAyMDEyLTAyLTIxICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW2Nocm9taXVtXSBOb3RpZnkgY29tcG9zaXRvciBvZiB3aGVlbCBldmVudCBy
ZWdpc3RyYXRpb24gdmlhIFNjcm9sbGluZ0Nvb3JkaW5hdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
UGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCmlu
ZGV4IGM0ZGE0ZDlkYzQyYWNmNzRmZjk4Y2JmYTg2MjI2ZWRmYzVkYzMyMGMuLmIwNzZjYjgyNTVh
M2RiNDA0NjgzN2MxYWJjMWNjMjNmNjhmOWY5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9y
bS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBAIC0z
MiwxNCArMzIsMjUgQEAKICAgICAndmFyaWFibGVzJzogewogICAgICAgICAncGxhdGZvcm1fZmls
ZXMnOiBbCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNTdHJpbmcuaCcsCisgICAg
ICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNhbnZhcy5oJywKKyAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViQ29sb3IuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dl
YkNvbG9yTmFtZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uLmgn
LAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaCcsCisgICAg
ICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllckNsaWVudC5oJywKKyAgICAg
ICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UG9pbnQuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYkZsb2F0UXVhZC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViRmxvYXRSZWN0LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJM
YXllci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5o
JywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5o
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViTWltZVJlZ2lzdHJ5LmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQb2ludC5oJywKKyAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViUHJpdmF0ZVB0ci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViUmVjdC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2l6ZS5oJywK
KyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vc3JjL1dlYkNTdHJpbmcuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9zcmMvV2Vi
RmxvYXRRdWFkLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkNhbnZhcy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDYW52
YXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40Y2Y3MjllZTFhOWM4MmQzYWMwYTk5YzViZGZiYmFkY2MzMzIyMWEz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJD
YW52YXMuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDYW52YXNfaAorI2RlZmluZSBXZWJD
YW52YXNfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKKyNpZiBXRUJLSVRfVVNJTkdfU0tJ
QQorY2xhc3MgU2tDYW52YXM7CisjZWxpZiBXRUJLSVRfVVNJTkdfQ0cKK3N0cnVjdCBDR0NvbnRl
eHQ7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZiBXRUJLSVRfVVNJTkdfU0tJ
QQordHlwZWRlZiBTa0NhbnZhcyBXZWJDYW52YXM7CisjZWxpZiBXRUJLSVRfVVNJTkdfQ0cKK3R5
cGVkZWYgc3RydWN0IENHQ29udGV4dCBXZWJDYW52YXM7CisjZWxzZQorI2Vycm9yICJOZWVkIHRv
IGRlZmluZSBXZWJDYW52YXMiCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb2xv
ci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb2xvci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRhNDVlYjFjNmU0OTU4NjRlYzRhYjJhOTdjOWFhODQ0MTljYTk2YzcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbG9yLmgKQEAgLTAs
MCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViQ29sb3JfaAorI2RlZmluZSBXZWJDb2xvcl9oCisKKyNpbmNs
dWRlICJXZWJDb2xvck5hbWUuaCIKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3R5cGVkZWYgdW5zaWduZWQgV2ViQ29sb3I7ICAvLyBSR0JBIHF1YWQuIEVx
dWl2YWxlbnQgdG8gU2tDb2xvci4KKworLy8gU2V0cyB0aGUgdmFsdWVzIG9mIGEgc2V0IG9mIG5h
bWVkIGNvbG9ycy4KK1dFQktJVF9FWFBPUlQgdm9pZCBzZXROYW1lZENvbG9ycyhjb25zdCBXZWJD
b2xvck5hbWUqLCBjb25zdCBXZWJDb2xvciosIHNpemVfdCBsZW5ndGgpOworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkNvbG9yTmFtZS5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJDb2xvck5hbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTdlZDI2NWYzYmU2MGUzOGY0NjM0Yjk4ODgw
NWJjN2ZlM2EwMzc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJDb2xvck5hbWUuaApAQCAtMCwwICsxLDcxIEBACisvKgorKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyogbWV0OgorKgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisqIGRpc3RyaWJ1dGlvbi4KKyogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisqLworCisjaWZuZGVmIFdlYkNvbG9yTmFtZV9oCisjZGVmaW5lIFdlYkNvbG9yTmFtZV9o
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFdlYkNvbG9yTmFtZSB7CisgICAgV2ViQ29s
b3JBY3RpdmVCb3JkZXIsCisgICAgV2ViQ29sb3JBY3RpdmVDYXB0aW9uLAorICAgIFdlYkNvbG9y
QXBwd29ya3NwYWNlLAorICAgIFdlYkNvbG9yQmFja2dyb3VuZCwKKyAgICBXZWJDb2xvckJ1dHRv
bkZhY2UsCisgICAgV2ViQ29sb3JCdXR0b25IaWdobGlnaHQsCisgICAgV2ViQ29sb3JCdXR0b25T
aGFkb3csCisgICAgV2ViQ29sb3JCdXR0b25UZXh0LAorICAgIFdlYkNvbG9yQ2FwdGlvblRleHQs
CisgICAgV2ViQ29sb3JHcmF5VGV4dCwKKyAgICBXZWJDb2xvckhpZ2hsaWdodCwKKyAgICBXZWJD
b2xvckhpZ2hsaWdodFRleHQsCisgICAgV2ViQ29sb3JJbmFjdGl2ZUJvcmRlciwKKyAgICBXZWJD
b2xvckluYWN0aXZlQ2FwdGlvbiwKKyAgICBXZWJDb2xvckluYWN0aXZlQ2FwdGlvblRleHQsCisg
ICAgV2ViQ29sb3JJbmZvQmFja2dyb3VuZCwKKyAgICBXZWJDb2xvckluZm9UZXh0LAorICAgIFdl
YkNvbG9yTWVudSwKKyAgICBXZWJDb2xvck1lbnVUZXh0LAorICAgIFdlYkNvbG9yU2Nyb2xsYmFy
LAorICAgIFdlYkNvbG9yVGV4dCwKKyAgICBXZWJDb2xvclRocmVlZERhcmtTaGFkb3csCisgICAg
V2ViQ29sb3JUaHJlZWRTaGFkb3csCisgICAgV2ViQ29sb3JUaHJlZWRGYWNlLAorICAgIFdlYkNv
bG9yVGhyZWVkSGlnaGxpZ2h0LAorICAgIFdlYkNvbG9yVGhyZWVkTGlnaHRTaGFkb3csCisgICAg
V2ViQ29sb3JXZWJraXRGb2N1c1JpbmdDb2xvciwKKyAgICBXZWJDb2xvcldpbmRvdywKKyAgICBX
ZWJDb2xvcldpbmRvd0ZyYW1lLAorICAgIFdlYkNvbG9yV2luZG93VGV4dAorfTsKKworfSAgLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkN2Y5MTQ4MzAxYTA1OGFj
ZjljYjUxYzkyZDc3ZjlhZGRlZjNmNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oCkBAIC0wLDAgKzEsNzEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYkNvbnRlbnRMYXllcl9oCisjZGVmaW5lIFdlYkNvbnRlbnRMYXllcl9o
CisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJMYXllci5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkNvbnRlbnRMYXllckNsaWVudDsKK2NsYXNzIFdlYkNv
bnRlbnRMYXllckltcGw7CitzdHJ1Y3QgV2ViRmxvYXRSZWN0OworCitjbGFzcyBXZWJDb250ZW50
TGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworcHVibGljOgorICAgIFdFQktJVF9FWFBPUlQgc3Rh
dGljIFdlYkNvbnRlbnRMYXllciBjcmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50Kik7CisKKyAg
ICBXZWJDb250ZW50TGF5ZXIoKSB7IH0KKyAgICBXZWJDb250ZW50TGF5ZXIoY29uc3QgV2ViQ29u
dGVudExheWVyJiBsYXllcikgOiBXZWJMYXllcihsYXllcikgeyB9CisgICAgdmlydHVhbCB+V2Vi
Q29udGVudExheWVyKCkgeyB9CisgICAgV2ViQ29udGVudExheWVyJiBvcGVyYXRvcj0oY29uc3Qg
V2ViQ29udGVudExheWVyJiBsYXllcikKKyAgICB7CisgICAgICAgIFdlYkxheWVyOjphc3NpZ24o
bGF5ZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgLy8gU2V0cyB3aGV0
aGVyIHRoZSBsYXllciBkcmF3cyBpdHMgY29udGVudCB3aGVuIGNvbXBvc2l0aW5nLgorICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7CisgICAgV0VCS0lUX0VYUE9S
VCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OworCisgICAgLy8gU2V0cyBhIHJlZ2lvbiBvZiB0
aGUgbGF5ZXIgYXMgaW52YWxpZCwgaS5lLiBuZWVkcyB0byB1cGRhdGUgaXRzIGNvbnRlbnQuCisg
ICAgLy8gVGhlIHZpc2libGUgYXJlYSBvZiB0aGUgZGlydHkgcmVjdCB3aWxsIGJlIHBhc3NlZCB0
byBvbmUgb3IgbW9yZSBjYWxscyB0bworICAgIC8vIFdlYkNvbnRlbnRMYXllckNsaWVudDo6cGFp
bnRDb250ZW50cyBiZWZvcmUgdGhlIGNvbXBvc2l0aW5nIHBhc3Mgb2NjdXJzLgorICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKTsKKworICAg
IC8vIFNldHMgdGhlIGVudGlyZSBsYXllciBhcyBpbnZhbGlkLCBpLmUuIG5lZWRzIHRvIHVwZGF0
ZSBpdHMgY29udGVudC4KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZSgpOworCisj
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViQ29udGVudExheWVyKGNvbnN0IFdURjo6
UGFzc1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBsPiYpOworICAgIFdlYkNvbnRlbnRMYXllciYg
b3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBsPiYpOwor
ICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBsPigpIGNvbnN0
OworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkNv
bnRlbnRMYXllcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkNvbnRlbnRMYXllckNsaWVudC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJDb250ZW50TGF5ZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZWIzNmUwNzdkMTkwMzNiNjRh
MmM5ZThlZDQwMWMwM2FmYmNhNjYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXJDbGllbnQuaApAQCAtMCwwICsxLDQ4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJDb250ZW50TGF5ZXJDbGllbnRfaAorI2RlZmluZSBXZWJDb250
ZW50TGF5ZXJDbGllbnRfaAorCisjaW5jbHVkZSAiV2ViQ2FudmFzLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworc3RydWN0IFdlYlJlY3Q7CisKK2NsYXNzIFdlYkNvbnRlbnRMYXllckNsaWVudCB7
CitwdWJsaWM6CisgICAgLy8gUGFpbnRzIHRoZSBjb250ZW50IGFyZWEgZm9yIHRoZSBsYXllciwg
dHlwaWNhbGx5IGRpcnR5IHJlY3RzIHN1Ym1pdHRlZAorICAgIC8vIHRocm91Z2ggV2ViQ29udGVu
dExheWVyOjpzZXROZWVkc0Rpc3BsYXksIHN1Ym1pdHRpbmcgZHJhd2luZyBjb21tYW5kcworICAg
IC8vIHRocm91Z2ggdGhlIFdlYkNhbnZhcy4KKyAgICAvLyBUaGUgY2FudmFzIGlzIGFscmVhZHkg
Y2xpcHBlZCB0byB0aGUgfGNsaXB8IHJlY3QuCisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHMoV2ViQ2FudmFzKiwgY29uc3QgV2ViUmVjdCYgY2xpcCkgPSAwOworCitwcm90ZWN0ZWQ6Cisg
ICAgdmlydHVhbCB+V2ViQ29udGVudExheWVyQ2xpZW50KCkgeyB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkNvbnRlbnRMYXllckNsaWVudF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxh
eWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVy
ZUxheWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2U4N2JiMjM4NzYyNTJjZTE1ZDU5MzY0MWJjMzQ0YjI0NjIx
MmRlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJFeHRlcm5hbFRleHR1cmVMYXllcl9oCisjZGVmaW5lIFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVyX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkZsb2F0UmVjdC5o
IgorI2luY2x1ZGUgIldlYkxheWVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOworCisvLyBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBs
YXllciB0aGF0IHJlbmRlcnMgYSB0ZXh0dXJlIHRoYXQgaXMgZ2VuZXJhdGVkCisvLyBleHRlcm5h
bGx5IChub3QgbWFuYWdlZCBieSB0aGUgV2ViTGF5ZXJUcmVlVmlldykuCisvLyBUaGUgdGV4dHVy
ZSB3aWxsIGJlIHVzZWQgYnkgdGhlIFdlYkxheWVyVHJlZVZpZXcgZHVyaW5nIGNvbXBvc2l0aW5n
IHBhc3Nlcy4KKy8vIFdoZW4gaW4gc2luZ2xlLXRocmVhZCBtb2RlLCB0aGlzIG1lYW5zIGR1cmlu
ZyBXZWJMYXllclRyZWVWaWV3Ojpjb21wb3NpdGUoKS4KKy8vIFdoZW4gdXNpbmcgdGhlIHRocmVh
ZGVkIGNvbXBvc2l0b3IsIHRoaXMgY2FuIG1lYW4gYXQgYW4gYXJiaXRyYXJ5IHRpbWUgdW50aWwK
Ky8vIHRoZSBXZWJMYXllclRyZWVWaWV3IGlzIGRlc3Ryb3llZC4KK2NsYXNzIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyIDogcHVibGljIFdlYkxheWVyIHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfRVhQ
T1JUIHN0YXRpYyBXZWJFeHRlcm5hbFRleHR1cmVMYXllciBjcmVhdGUoKTsKKworICAgIFdlYkV4
dGVybmFsVGV4dHVyZUxheWVyKCkgeyB9CisgICAgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoY29u
c3QgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXImIGxheWVyKSA6IFdlYkxheWVyKGxheWVyKSB7IH0K
KyAgICB2aXJ0dWFsIH5XZWJFeHRlcm5hbFRleHR1cmVMYXllcigpIHsgfQorICAgIFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVyJiBvcGVyYXRvcj0oY29uc3QgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIm
IGxheWVyKQorICAgIHsKKyAgICAgICAgV2ViTGF5ZXI6OmFzc2lnbihsYXllcik7CisgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICAvLyBTZXRzIHRoZSB0ZXh0dXJlIGlkIHRoYXQg
cmVwcmVzZW50cyB0aGUgbGF5ZXIsIGluIHRoZSBuYW1lc3BhY2Ugb2YgdGhlCisgICAgLy8gY29t
cG9zaXRvciBjb250ZXh0LgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRUZXh0dXJlSWQodW5z
aWduZWQpOworICAgIFdFQktJVF9FWFBPUlQgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3Q7CisK
KyAgICAvLyBTZXRzIHdoZXRoZXIgb3Igbm90IHRoZSB0ZXh0dXJlIHNob3VsZCBiZSBmbGlwcGVk
IGluIHRoZSBZIGRpcmVjdGlvbiB3aGVuCisgICAgLy8gcmVuZGVyZWQuCisgICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldEZsaXBwZWQoYm9vbCk7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGZsaXBw
ZWQoKSBjb25zdDsKKworICAgIC8vIFNldHMgdGhlIHJlY3QgaW4gVVYgc3BhY2Ugb2YgdGhlIHRl
eHR1cmUgdGhhdCBpcyBtYXBwZWQgdG8gdGhlIGxheWVyCisgICAgLy8gYm91bmRzLgorICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXRVVlJlY3QoY29uc3QgV2ViRmxvYXRSZWN0Jik7CisgICAgV0VC
S0lUX0VYUE9SVCBXZWJGbG9hdFJlY3QgdXZSZWN0KCkgY29uc3Q7CisKKyAgICAvLyBNYXJrcyBh
IHJlZ2lvbiBvZiB0aGUgbGF5ZXIgYXMgbmVlZGluZyBhIGRpc3BsYXkuIFRoZXNlIHJlZ2lvbnMg
YXJlCisgICAgLy8gY29sbGVjdGVkIGluIGEgdW5pb24gdW50aWwgdGhlIGRpc3BsYXkgb2NjdXJz
LgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJl
Y3QmKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVyKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+
Jik7CisgICAgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBh
c3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiYpOworICAgIG9wZXJhdG9yIFdU
Rjo6UGFzc1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+KCkgY29uc3Q7CisjZW5k
aWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJMYXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNkOTE5ZmE0NjAzNTE1MWU1OWE0NTIyYWI1OGRjNTAzZGVlOGNjZGIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
LmgKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkxheWVyX2gKKyNkZWZpbmUg
V2ViTGF5ZXJfaAorCisjaW5jbHVkZSAiV2ViQ29sb3IuaCIKKyNpbmNsdWRlICJXZWJDb21tb24u
aCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisKK2NsYXNzIFNrTWF0cml4NDQ7CituYW1l
c3BhY2UgV2ViQ29yZSB7IGNsYXNzIExheWVyQ2hyb21pdW07IH0KKworbmFtZXNwYWNlIFdlYktp
dCB7CitzdHJ1Y3QgV2ViRmxvYXRQb2ludDsKK3N0cnVjdCBXZWJTaXplOworCitjbGFzcyBXZWJM
YXllciB7CitwdWJsaWM6CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViTGF5ZXIgY3JlYXRl
KCk7CisKKyAgICBXZWJMYXllcigpIHsgfQorICAgIFdlYkxheWVyKGNvbnN0IFdlYkxheWVyJiBs
YXllcikgeyBhc3NpZ24obGF5ZXIpOyB9CisgICAgdmlydHVhbCB+V2ViTGF5ZXIoKSB7IHJlc2V0
KCk7IH0KKyAgICBXZWJMYXllciYgb3BlcmF0b3I9KGNvbnN0IFdlYkxheWVyJiBsYXllcikKKyAg
ICB7CisgICAgICAgIGFzc2lnbihsYXllcik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisgICAgYm9vbCBpc051bGwoKSB7IHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KKyAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWdu
KGNvbnN0IFdlYkxheWVyJik7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGVxdWFscyhjb25zdCBX
ZWJMYXllciYpIGNvbnN0OworCisgICAgV0VCS0lUX0VYUE9SVCBXZWJMYXllciByb290TGF5ZXIo
KSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYkxheWVyIHBhcmVudCgpIGNvbnN0OworICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBhZGRDaGlsZChjb25zdCBXZWJMYXllciYpOworICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBpbnNlcnRDaGlsZChjb25zdCBXZWJMYXllciYsIHNpemVfdCBpbmRleCk7
CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlcGxhY2VDaGlsZChjb25zdCBXZWJMYXllciYgcmVm
ZXJlbmNlLCBjb25zdCBXZWJMYXllciYgbmV3TGF5ZXIpOworICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCByZW1vdmVGcm9tUGFyZW50KCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlbW92ZUFsbENo
aWxkcmVuKCk7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3Qg
V2ViRmxvYXRQb2ludCYpOworICAgIFdFQktJVF9FWFBPUlQgV2ViRmxvYXRQb2ludCBhbmNob3JQ
b2ludCgpIGNvbnN0OworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFuY2hvclBvaW50Wihm
bG9hdCk7CisgICAgV0VCS0lUX0VYUE9SVCBmbG9hdCBhbmNob3JQb2ludFooKSBjb25zdDsKKwor
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCb3VuZHMoY29uc3QgV2ViU2l6ZSYpOworICAgIFdF
QktJVF9FWFBPUlQgV2ViU2l6ZSBib3VuZHMoKSBjb25zdDsKKworICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpOworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBtYXNr
c1RvQm91bmRzKCkgY29uc3Q7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0TWFza0xheWVy
KGNvbnN0IFdlYkxheWVyJik7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJMYXllciBtYXNrTGF5ZXIo
KSBjb25zdDsKKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KTsKKyAg
ICBXRUJLSVRfRVhQT1JUIGZsb2F0IG9wYWNpdHkoKSBjb25zdDsKKworICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIG9wYXF1ZSgp
IGNvbnN0OworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IFdlYkZs
b2F0UG9pbnQmKTsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYkZsb2F0UG9pbnQgcG9zaXRpb24oKSBj
b25zdDsKKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTdWJsYXllclRyYW5zZm9ybShjb25z
dCBTa01hdHJpeDQ0Jik7CisgICAgV0VCS0lUX0VYUE9SVCBTa01hdHJpeDQ0IHN1YmxheWVyVHJh
bnNmb3JtKCkgY29uc3Q7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VHJhbnNmb3JtKGNv
bnN0IFNrTWF0cml4NDQmKTsKKyAgICBXRUJLSVRfRVhQT1JUIFNrTWF0cml4NDQgdHJhbnNmb3Jt
KCkgY29uc3Q7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RGVidWdCb3JkZXJDb2xvcihj
b25zdCBXZWJDb2xvciYpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXREZWJ1Z0JvcmRlcldp
ZHRoKGZsb2F0KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgdG8oKQorICAgIHsKKyAg
ICAgICAgVCByZXM7CisgICAgICAgIHJlcy5XZWJMYXllcjo6YXNzaWduKCp0aGlzKTsKKyAgICAg
ICAgcmV0dXJuIHJlczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdCBU
IHRvQ29uc3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgVCByZXM7CisgICAgICAgIHJlcy5XZWJM
YXllcjo6YXNzaWduKCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisKKyNpZiBX
RUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJMYXllcihjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4mKTsKKyAgICBXZWJMYXllciYgb3BlcmF0b3I9KGNvbnN0
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpMYXllckNocm9taXVtPiYpOworICAgIG9wZXJhdG9y
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpMYXllckNocm9taXVtPigpIGNvbnN0OworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IFQqIHVud3JhcCgpCisgICAgeworICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VCo+KG1fcHJpdmF0ZS5nZXQoKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gY29uc3QgVCogY29uc3RVbndyYXAoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IFQqPihtX3ByaXZhdGUuZ2V0KCkpOworICAgIH0KKyNlbmRp
ZgorCitwcm90ZWN0ZWQ6CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpMYXllckNocm9taXVt
PiBtX3ByaXZhdGU7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYkxheWVy
JiBhLCBjb25zdCBXZWJMYXllciYgYikKK3sKKyAgICByZXR1cm4gYS5lcXVhbHMoYik7Cit9CisK
K2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2ViTGF5ZXImIGEsIGNvbnN0IFdlYkxheWVy
JiBiKQoreworICAgIHJldHVybiAhKGEgPT0gYik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gV2ViTGF5ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xN2E4NzZhOTg1MWRkZmMw
Y2Y5YTU2MWM5ODZhZGMyM2JiZDZhYWI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKQEAgLTAsMCArMSwxMzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYkxheWVyVHJlZVZpZXdfaAorI2RlZmluZSBXZWJMYXllclRyZWVW
aWV3X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0NMYXllclRyZWVIb3N0Oworc3RydWN0
IENDU2V0dGluZ3M7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViTGF5ZXI7Citj
bGFzcyBXZWJMYXllclRyZWVWaWV3Q2xpZW50Oworc3RydWN0IFdlYlJlY3Q7CitzdHJ1Y3QgV2Vi
U2l6ZTsKKworY2xhc3MgV2ViTGF5ZXJUcmVlVmlldyB7CitwdWJsaWM6CisgICAgc3RydWN0IFNl
dHRpbmdzIHsKKyAgICAgICAgU2V0dGluZ3MoKQorICAgICAgICAgICAgOiBhY2NlbGVyYXRlUGFp
bnRpbmcoZmFsc2UpCisgICAgICAgICAgICAsIGNvbXBvc2l0ZU9mZnNjcmVlbihmYWxzZSkKKyAg
ICAgICAgICAgICwgc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCisgICAgICAgICAgICAsIHNob3dQbGF0
Zm9ybUxheWVyVHJlZShmYWxzZSkKKyAgICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkKKyAgICAg
ICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQorICAgICAgICAgICAgLCBwYXJ0aWFsU3dh
cEVuYWJsZWQoZmFsc2UpCisgICAgICAgICAgICAsIHRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZChm
YWxzZSkgeyB9CisKKyAgICAgICAgYm9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7CisgICAgICAgIGJv
b2wgY29tcG9zaXRlT2Zmc2NyZWVuOworICAgICAgICBib29sIHNob3dGUFNDb3VudGVyOworICAg
ICAgICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJlZTsKKyAgICAgICAgZG91YmxlIHJlZnJlc2hS
YXRlOworICAgICAgICBib29sIHBlclRpbGVQYWludGluZzsKKyAgICAgICAgYm9vbCBwYXJ0aWFs
U3dhcEVuYWJsZWQ7CisgICAgICAgIGJvb2wgdGhyZWFkZWRBbmltYXRpb25FbmFibGVkOworI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgICAgICBvcGVyYXRvciBXZWJDb3JlOjpDQ1NldHRp
bmdzKCkgY29uc3Q7CisjZW5kaWYKKyAgICB9OworCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMg
V2ViTGF5ZXJUcmVlVmlldyBjcmVhdGUoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCosIGNvbnN0IFdl
YkxheWVyJiByb290LCBjb25zdCBTZXR0aW5ncyYpOworCisgICAgV2ViTGF5ZXJUcmVlVmlldygp
IHsgfQorICAgIFdlYkxheWVyVHJlZVZpZXcoY29uc3QgV2ViTGF5ZXJUcmVlVmlldyYgbGF5ZXIp
IHsgYXNzaWduKGxheWVyKTsgfQorICAgIH5XZWJMYXllclRyZWVWaWV3KCkgeyByZXNldCgpOyB9
CisgICAgV2ViTGF5ZXJUcmVlVmlldyYgb3BlcmF0b3I9KGNvbnN0IFdlYkxheWVyVHJlZVZpZXcm
IGxheWVyKQorICAgIHsKKyAgICAgICAgYXNzaWduKGxheWVyKTsKKyAgICAgICAgcmV0dXJuICp0
aGlzOworICAgIH0KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYkxheWVyVHJlZVZpZXcmKTsKKyAgICBXRUJLSVRf
RVhQT1JUIGJvb2wgZXF1YWxzKGNvbnN0IFdlYkxheWVyVHJlZVZpZXcmKSBjb25zdDsKKworICAg
IC8vIFRyaWdnZXJzIGEgY29tcG9zaXRpbmcgcGFzcy4gSWYgdGhlIGNvbXBvc2l0b3IgdGhyZWFk
IHdhcyBub3QKKyAgICAvLyBlbmFibGVkIHZpYSBXZWJDb21wb3NpdG9yOjppbml0aWFsaXplLCB0
aGUgY29tcG9zaXRpbmcgcGFzcyBoYXBwZW5zCisgICAgLy8gaW1tZWRpYXRlbHkuIElmIGl0IGlz
IGVuYWJsZWQsIHRoZSBjb21wb3NpdGluZyBwYXNzIHdpbGwgaGFwcGVuIGF0IGEKKyAgICAvLyBs
YXRlciB0aW1lLiBCZWZvcmUgdGhlIGNvbXBvc2l0aW5nIHBhc3MgaGFwcGVucyAoaS5lLiBiZWZv
cmUgY29tcG9zaXRlKCkKKyAgICAvLyByZXR1cm5zIHdoZW4gdGhlIGNvbXBvc2l0b3IgdGhyZWFk
IGlzIGRpc2FibGVkKSwgV2ViQ29udGVudExheWVycyB3aWxsIGJlCisgICAgLy8gYXNrZWQgdG8g
cGFpbnQgdGhlaXIgZGlydHkgcmVnaW9uLCB0aHJvdWdoCisgICAgLy8gV2ViQ29udGVudExheWVy
Q2xpZW50OjpwYWludENvbnRlbnRzLgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBjb21wb3NpdGUo
KTsKKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgV2ViU2l6
ZSYpOworICAgIFdFQktJVF9FWFBPUlQgV2ViU2l6ZSB2aWV3cG9ydFNpemUoKSBjb25zdDsKKwor
ICAgIC8vIENvbXBvc2l0ZXMgYW5kIGF0dGVtcHRzIHRvIHJlYWQgYmFjayB0aGUgcmVzdWx0IGlu
dG8gdGhlIHByb3ZpZGVkCisgICAgLy8gYnVmZmVyLiBJZiBpdCB3YXNuJ3QgcG9zc2libGUsIGUu
Zy4gZHVlIHRvIGNvbnRleHQgbG9zdCwgd2lsbCByZXR1cm4KKyAgICAvLyBmYWxzZS4gUGl4ZWwg
Zm9ybWF0IGlzIDMyYml0IChSR0JBKSwgYW5kIHRoZSBwcm92aWRlZCBidWZmZXIgbXVzdCBiZQor
ICAgIC8vIGxhcmdlIGVub3VnaCBjb250YWluIHZpZXdwb3J0U2l6ZSgpLndpZHRoKCkgKiB2aWV3
cG9ydFNpemUoKS5oZWlnaHQoKQorICAgIC8vIHBpeGVscy4gVGhlIFdlYkxheWVyVHJlZVZpZXcg
ZG9lcyBub3QgYXNzdW1lIG93bmVyc2hpcCBvZiB0aGUgYnVmZmVyLgorICAgIC8vIFRoZSBidWZm
ZXIgaXMgbm90IG1vZGlmaWVkIGlmIHRoZSBmYWxzZSBpcyByZXR1cm5lZC4KKyAgICBXRUJLSVRf
RVhQT1JUIGJvb2wgY29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBXZWJS
ZWN0Jik7CisKKyAgICAvLyBTZXRzIHRoZSByb290IG9mIHRoZSB0cmVlLiBUaGUgcm9vdCBpcyBz
ZXQgYnkgd2F5IG9mIHRoZSBjb25zdHJ1Y3Rvci4KKyAgICAvLyBUaGlzIGlzIHR5cGljYWxseSB1
c2VkIHRvIGV4cGxpY2l0bHkgc2V0IHRoZSByb290IHRvIG51bGwgdG8gYnJlYWsKKyAgICAvLyBj
eWNsZXMuCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJvb3RMYXllcihXZWJMYXllciopOwor
CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViTGF5ZXJUcmVlVmlldyhjb25zdCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0PiYpOworICAgIFdlYkxheWVy
VHJlZVZpZXcmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0PiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q+KCkgY29uc3Q7CisjZW5kaWYKKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXROZWVkc1JlZHJhdygpOworCitwcm90ZWN0ZWQ6CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3Q+IG1fcHJpdmF0ZTsKK307CisKK2lubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgV2ViTGF5ZXJUcmVlVmlldyYgYSwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldyYgYikK
K3sKKyAgICByZXR1cm4gYS5lcXVhbHMoYik7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgV2ViTGF5ZXJUcmVlVmlldyYgYSwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldyYgYikKK3sK
KyAgICByZXR1cm4gIShhID09IGIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFdlYkxheWVyVHJlZVZpZXdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmggYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzRk
ZmI3N2I3NzExNGIwZWY2N2IwMTdiZmE0YmQyMjNiM2FiNmE2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmgK
QEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTGF5ZXJUcmVlVmlld0NsaWVudF9o
CisjZGVmaW5lIFdlYkxheWVyVHJlZVZpZXdDbGllbnRfaAorCituYW1lc3BhY2UgV2ViS2l0IHsK
K2NsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOworc3RydWN0IFdlYlNpemU7CitjbGFzcyBXZWJU
aHJlYWQ7CisKK2NsYXNzIFdlYkxheWVyVHJlZVZpZXdDbGllbnQgeworcHVibGljOgorICAgIC8v
IFVwZGF0ZXMgYW5pbWF0aW9uIGFuZCBsYXlvdXQuIFRoZXNlIGFyZSBjYWxsZWQgYmVmb3JlIHRo
ZSBjb21wb3NpdGluZworICAgIC8vIHBhc3Mgc28gdGhhdCBsYXllcnMgY2FuIGJlIHVwZGF0ZWQg
YXQgdGhlIGdpdmVuIGZyYW1lIHRpbWUuCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlv
bnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgp
ID0gMDsKKworICAgIC8vIEFwcGxpZXMgYSBzY3JvbGwgZGVsdGEgdG8gdGhlIHJvb3QgbGF5ZXIs
IHdoaWNoIGlzIGJ1bmRsZWQgd2l0aCBhIHBhZ2UKKyAgICAvLyBzY2FsZSBmYWN0b3IgdGhhdCBt
YXkgYXBwbHkgYSBDU1MgdHJhbnNmb3JtIG9uIHRoZSB3aG9sZSBkb2N1bWVudCAodXNlZAorICAg
IC8vIGZvciBtb2JpbGUtZGV2aWNlIHBpbmNoIHpvb21pbmcpLiBUaGlzIGlzIHRyaWdnZXJlZCBi
eSBldmVudHMgc2VudCB0byB0aGUKKyAgICAvLyBjb21wb3NpdG9yIHRocmVhZCB0aHJvdWdoIHRo
ZSBXZWJDb21wb3NpdG9yIGludGVyZmFjZS4KKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxB
bmRTY2FsZShjb25zdCBXZWJTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgc2NhbGVGYWN0b3IpID0g
MDsKKworICAgIC8vIENyZWF0ZXMgYSAzRCBjb250ZXh0IHN1aXRhYmxlIGZvciB0aGUgY29tcG9z
aXRpbmcuIFRoaXMgbWF5IGJlIGNhbGxlZAorICAgIC8vIG1vcmUgdGhhbiBvbmNlIGlmIHRoZSBj
b250ZXh0IGdldHMgbG9zdC4KKyAgICB2aXJ0dWFsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjcmVh
dGVDb250ZXh0M0QoKSA9IDA7CisKKyAgICAvLyBTaWduYWxzIGEgc3VjY2Vzc2Z1bCByZWJpbmRp
bmcgb2YgdGhlIDNEIGNvbnRleHQgKGUuZy4gYWZ0ZXIgYSBsb3N0CisgICAgLy8gY29udGV4dCBl
dmVudCkuCisgICAgdmlydHVhbCB2b2lkIGRpZFJlYmluZEdyYXBoaWNzQ29udGV4dChib29sIHN1
Y2Nlc3MpID0gMDsKKworICAgIC8vIFNjaGVkdWxlcyBhIGNvbXBvc2l0aW5nIHBhc3MsIG1lYW5p
bmcgdGhlIGNsaWVudCBzaG91bGQgY2FsbAorICAgIC8vIFdlYkxheWVyVHJlZVZpZXc6OmNvbXBv
c2l0ZSBhdCBhIGxhdGVyIHRpbWUuIFRoaXMgaXMgb25seSBjYWxsZWQgaWYgdGhlCisgICAgLy8g
Y29tcG9zaXRvciB0aHJlYWQgaXMgZGlzYWJsZWQ7IHdoZW4gZW5hYmxlZCwgdGhlIGNvbXBvc2l0
b3Igd2lsbAorICAgIC8vIGludGVybmFsbHkgc2NoZWR1bGUgYSBjb21wb3NpdGluZyBwYXNzIHdo
ZW4gbmVlZGVkLgorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgpID0gMDsKKwor
cHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfldlYkxheWVyVHJlZVZpZXdDbGllbnQoKSB7IH0KK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViTGF5ZXJUcmVlVmlld0Ns
aWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlBy
aXZhdGVQdHIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUHJpdmF0ZVB0
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjMxZDA5YTkwYmRhY2YyZGViMzkzNzIxZTExMDMzNTk4NDBjZDdjZDcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlBy
aXZhdGVQdHIuaApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUHJpdmF0ZVB0cl9oCisjZGVm
aW5lIFdlYlByaXZhdGVQdHJfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKKyNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBUaGlzIGNsYXNzIGlzIGFuIGltcGxlbWVudGF0aW9u
IGRldGFpbCBvZiB0aGUgV2ViS2l0IEFQSS4gIEl0IGV4aXN0cworLy8gdG8gaGVscCBzaW1wbGlm
eSB0aGUgaW1wbGVtZW50YXRpb24gb2YgV2ViS2l0IGludGVyZmFjZXMgdGhhdCBtZXJlbHkKKy8v
IHdyYXAgYSByZWZlcmVuY2UgY291bnRlZCBXZWJDb3JlIGNsYXNzLgordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitjbGFzcyBXZWJQcml2YXRlUHRyIHsKK3B1YmxpYzoKKyAgICBXZWJQcml2YXRlUHRy
KCkgOiBtX3B0cigwKSB7IH0KKyAgICB+V2ViUHJpdmF0ZVB0cigpIHsgV0VCS0lUX0FTU0VSVCgh
bV9wdHIpOyB9CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQor
CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViUHJpdmF0ZVB0cihjb25zdCBQYXNz
UmVmUHRyPFQ+JiBwcnApCisgICAgICAgIDogbV9wdHIocHJwLmxlYWtSZWYoKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdm9pZCByZXNldCgpCisgICAgeworICAgICAgICBhc3NpZ24oMCk7CisgICAg
fQorCisgICAgV2ViUHJpdmF0ZVB0cjxUPiYgb3BlcmF0b3I9KGNvbnN0IFdlYlByaXZhdGVQdHI8
VD4mIG90aGVyKQorICAgIHsKKyAgICAgICAgVCogcCA9IG90aGVyLm1fcHRyOworICAgICAgICBp
ZiAocCkKKyAgICAgICAgICAgIHAtPnJlZigpOworICAgICAgICBhc3NpZ24ocCk7CisgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXZWJQcml2YXRlUHRyPFQ+JiBvcGVyYXRvcj0o
Y29uc3QgUGFzc1JlZlB0cjxUPiYgcHJwKQorICAgIHsKKyAgICAgICAgYXNzaWduKHBycC5sZWFr
UmVmKCkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgVCogZ2V0KCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3B0cjsKKyAgICB9CisKKyAgICBUKiBvcGVyYXRv
ci0+KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3B0cik7CisgICAgICAgIHJldHVy
biBtX3B0cjsKKyAgICB9CisjZW5kaWYKKworcHJpdmF0ZToKKyNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KKyAgICB2b2lkIGFzc2lnbihUKiBwKQorICAgIHsKKyAgICAgICAgLy8gcCBpcyBhbHJl
YWR5IHJlZidkIGZvciB1cyBieSB0aGUgY2FsbGVyCisgICAgICAgIGlmIChtX3B0cikKKyAgICAg
ICAgICAgIG1fcHRyLT5kZXJlZigpOworICAgICAgICBtX3B0ciA9IHA7CisgICAgfQorI2VuZGlm
CisKKyAgICBUKiBtX3B0cjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU29saWRDb2xv
ckxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNvbGlkQ29sb3JM
YXllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFkOTEyM2Q5NjJhZmVhZWE4YTU2MzEyOTQ1ZGUxZmM1Zjg5NmM5
ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YlNvbGlkQ29sb3JMYXllci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNv
bGlkQ29sb3JMYXllcl9oCisjZGVmaW5lIFdlYlNvbGlkQ29sb3JMYXllcl9oCisKKyNpbmNsdWRl
ICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJXZWJM
YXllci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlNvbGlkQ29sb3JMYXllcklt
cGw7CisKK2NsYXNzIFdlYlNvbGlkQ29sb3JMYXllciA6IHB1YmxpYyBXZWJMYXllciB7CitwdWJs
aWM6CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViU29saWRDb2xvckxheWVyIGNyZWF0ZSgp
OworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29s
b3ImKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYlNvbGlkQ29sb3JMYXll
cihjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViU29saWRDb2xvckxheWVySW1wbD4mKTsKKyNlbmRp
ZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJTb2xpZENvbG9y
TGF5ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vV2ViQ2FudmFzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJDYW52YXMuaAppbmRleCA0Y2Y3MjllZTFhOWM4MmQzYWMwYTk5YzViZGZiYmFkY2MzMzIyMWEz
Li5iYTJhNzE4OWQwZTM2MWIyMzllOTc0MjUwYjA5Njc0YTNlZWE5ZTRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDYW52YXMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDYW52YXMuaApAQCAtMSw1
NCArMSwyNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CiAgKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ2FudmFzX2gK
LSNkZWZpbmUgV2ViQ2FudmFzX2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotCi0jaWYgV0VC
S0lUX1VTSU5HX1NLSUEKLWNsYXNzIFNrQ2FudmFzOwotI2VsaWYgV0VCS0lUX1VTSU5HX0NHCi1z
dHJ1Y3QgQ0dDb250ZXh0OwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0jaWYgV0VC
S0lUX1VTSU5HX1NLSUEKLXR5cGVkZWYgU2tDYW52YXMgV2ViQ2FudmFzOwotI2VsaWYgV0VCS0lU
X1VTSU5HX0NHCi10eXBlZGVmIHN0cnVjdCBDR0NvbnRleHQgV2ViQ2FudmFzOwotI2Vsc2UKLSNl
cnJvciAiTmVlZCB0byBkZWZpbmUgV2ViQ2FudmFzIgotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYKKyNpbmNsdWRlICIuLi8uLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViQ2FudmFzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJDb2xvci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViQ29sb3IuaAppbmRleCBkYTQ1ZWIxYzZlNDk1ODY0ZWM0YWIyYTk3Yzlh
YTg0NDE5Y2E5NmM3Li42NTY3N2RhZTkxNjJkODEwZjc0NDI1ZGM2ZDkyM2MzNGMxYWQ5MmUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDb2xv
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkNvbG9y
LmgKQEAgLTEsNDYgKzEsMjYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgogICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgogICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdl
YkNvbG9yX2gKLSNkZWZpbmUgV2ViQ29sb3JfaAotCi0jaW5jbHVkZSAiV2ViQ29sb3JOYW1lLmgi
Ci0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi10eXBlZGVm
IHVuc2lnbmVkIFdlYkNvbG9yOyAgLy8gUkdCQSBxdWFkLiBFcXVpdmFsZW50IHRvIFNrQ29sb3Iu
Ci0KLS8vIFNldHMgdGhlIHZhbHVlcyBvZiBhIHNldCBvZiBuYW1lZCBjb2xvcnMuCi1XRUJLSVRf
RVhQT1JUIHZvaWQgc2V0TmFtZWRDb2xvcnMoY29uc3QgV2ViQ29sb3JOYW1lKiwgY29uc3QgV2Vi
Q29sb3IqLCBzaXplX3QgbGVuZ3RoKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZgorI2luY2x1ZGUgIi4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb2xv
ci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViQ29sb3JOYW1lLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJDb2xvck5hbWUuaAppbmRleCBmOTdlZDI2NWYzYmU2MGUzOGY0NjM0Yjk4ODgwNWJjN2ZlM2Ew
Mzc1Li4xN2RmM2YyODg2YzQwZmE2MWQ1ZWYwYmNmODE4YWY3NDM5NmU3ZTY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDb2xvck5hbWUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDb2xvck5hbWUu
aApAQCAtMSw3MSArMSwyNiBAQAogLyoKLSogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0qCi0qIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0q
IG1ldDoKLSoKLSogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0qIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotKiBkaXN0cmlidXRpb24uCi0qICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSoKLSogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0qIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0qIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0qIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCiAKLSNpZm5kZWYg
V2ViQ29sb3JOYW1lX2gKLSNkZWZpbmUgV2ViQ29sb3JOYW1lX2gKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLWVudW0gV2ViQ29sb3JOYW1lIHsKLSAgICBXZWJDb2xvckFjdGl2ZUJvcmRlciwKLSAg
ICBXZWJDb2xvckFjdGl2ZUNhcHRpb24sCi0gICAgV2ViQ29sb3JBcHB3b3Jrc3BhY2UsCi0gICAg
V2ViQ29sb3JCYWNrZ3JvdW5kLAotICAgIFdlYkNvbG9yQnV0dG9uRmFjZSwKLSAgICBXZWJDb2xv
ckJ1dHRvbkhpZ2hsaWdodCwKLSAgICBXZWJDb2xvckJ1dHRvblNoYWRvdywKLSAgICBXZWJDb2xv
ckJ1dHRvblRleHQsCi0gICAgV2ViQ29sb3JDYXB0aW9uVGV4dCwKLSAgICBXZWJDb2xvckdyYXlU
ZXh0LAotICAgIFdlYkNvbG9ySGlnaGxpZ2h0LAotICAgIFdlYkNvbG9ySGlnaGxpZ2h0VGV4dCwK
LSAgICBXZWJDb2xvckluYWN0aXZlQm9yZGVyLAotICAgIFdlYkNvbG9ySW5hY3RpdmVDYXB0aW9u
LAotICAgIFdlYkNvbG9ySW5hY3RpdmVDYXB0aW9uVGV4dCwKLSAgICBXZWJDb2xvckluZm9CYWNr
Z3JvdW5kLAotICAgIFdlYkNvbG9ySW5mb1RleHQsCi0gICAgV2ViQ29sb3JNZW51LAotICAgIFdl
YkNvbG9yTWVudVRleHQsCi0gICAgV2ViQ29sb3JTY3JvbGxiYXIsCi0gICAgV2ViQ29sb3JUZXh0
LAotICAgIFdlYkNvbG9yVGhyZWVkRGFya1NoYWRvdywKLSAgICBXZWJDb2xvclRocmVlZFNoYWRv
dywKLSAgICBXZWJDb2xvclRocmVlZEZhY2UsCi0gICAgV2ViQ29sb3JUaHJlZWRIaWdobGlnaHQs
Ci0gICAgV2ViQ29sb3JUaHJlZWRMaWdodFNoYWRvdywKLSAgICBXZWJDb2xvcldlYmtpdEZvY3Vz
UmluZ0NvbG9yLAotICAgIFdlYkNvbG9yV2luZG93LAotICAgIFdlYkNvbG9yV2luZG93RnJhbWUs
Ci0gICAgV2ViQ29sb3JXaW5kb3dUZXh0Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZgorI2luY2x1ZGUgIi4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJDb2xvck5hbWUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL1dlYkNvbnRlbnRMYXllci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViQ29udGVudExheWVyLmgKaW5kZXggNmQ3ZjkxNDgzMDFhMDU4YWNmOWNi
NTFjOTJkNzdmOWFkZGVmM2Y2Yy4uOTBhMTZlZDkxYzhmNzNkNTNkNDQzZTkwNmI2YjU4NGQ5Nzc0
OTJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViQ29udGVudExheWVyLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViQ29udGVudExheWVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNDkgKzIzLDQgQEAKICAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmbmRlZiBXZWJDb250ZW50TGF5ZXJfaAotI2RlZmluZSBXZWJDb250ZW50TGF5ZXJfaAotCi0j
aW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViTGF5ZXIuaCIKLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci1jbGFzcyBXZWJDb250ZW50TGF5ZXJDbGllbnQ7Ci1jbGFzcyBXZWJDb250ZW50
TGF5ZXJJbXBsOwotc3RydWN0IFdlYkZsb2F0UmVjdDsKLQotY2xhc3MgV2ViQ29udGVudExheWVy
IDogcHVibGljIFdlYkxheWVyIHsKLXB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBX
ZWJDb250ZW50TGF5ZXIgY3JlYXRlKFdlYkNvbnRlbnRMYXllckNsaWVudCopOwotCi0gICAgV2Vi
Q29udGVudExheWVyKCkgeyB9Ci0gICAgV2ViQ29udGVudExheWVyKGNvbnN0IFdlYkNvbnRlbnRM
YXllciYgbGF5ZXIpIDogV2ViTGF5ZXIobGF5ZXIpIHsgfQotICAgIHZpcnR1YWwgfldlYkNvbnRl
bnRMYXllcigpIHsgfQotICAgIFdlYkNvbnRlbnRMYXllciYgb3BlcmF0b3I9KGNvbnN0IFdlYkNv
bnRlbnRMYXllciYgbGF5ZXIpCi0gICAgewotICAgICAgICBXZWJMYXllcjo6YXNzaWduKGxheWVy
KTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIC8vIFNldHMgd2hldGhlciB0
aGUgbGF5ZXIgZHJhd3MgaXRzIGNvbnRlbnQgd2hlbiBjb21wb3NpdGluZy4KLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgYm9v
bCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLQotICAgIC8vIFNldHMgYSByZWdpb24gb2YgdGhlIGxh
eWVyIGFzIGludmFsaWQsIGkuZS4gbmVlZHMgdG8gdXBkYXRlIGl0cyBjb250ZW50LgotICAgIC8v
IFRoZSB2aXNpYmxlIGFyZWEgb2YgdGhlIGRpcnR5IHJlY3Qgd2lsbCBiZSBwYXNzZWQgdG8gb25l
IG9yIG1vcmUgY2FsbHMgdG8KLSAgICAvLyBXZWJDb250ZW50TGF5ZXJDbGllbnQ6OnBhaW50Q29u
dGVudHMgYmVmb3JlIHRoZSBjb21wb3NpdGluZyBwYXNzIG9jY3Vycy4KLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViRmxvYXRSZWN0Jik7Ci0KLSAgICAvLyBT
ZXRzIHRoZSBlbnRpcmUgbGF5ZXIgYXMgaW52YWxpZCwgaS5lLiBuZWVkcyB0byB1cGRhdGUgaXRz
IGNvbnRlbnQuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGludmFsaWRhdGUoKTsKLQotI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYkNvbnRlbnRMYXllcihjb25zdCBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29udGVudExheWVySW1wbD4mKTsKLSAgICBXZWJDb250ZW50TGF5ZXImIG9wZXJh
dG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29udGVudExheWVySW1wbD4mKTsKLSAgICBv
cGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29udGVudExheWVySW1wbD4oKSBjb25zdDsKLSNl
bmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJDb250ZW50
TGF5ZXJfaAorI2luY2x1ZGUgIi4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJDb250ZW50TGF5ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYkNvbnRlbnRMYXllckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQ29udGVudExheWVyQ2xpZW50LmgKaW5kZXggZGViMzZl
MDc3ZDE5MDMzYjY0YTJjOWU4ZWQ0MDFjMDNhZmJjYTY2My4uOGYxY2EzMzI0NGVhMTBmNzA0YTNl
NjRkYzNhOTYwYTQ0MTBlNTY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvcGxhdGZvcm0vV2ViQ29udGVudExheWVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQ29udGVudExheWVyQ2xpZW50LmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjYgKzIz
LDQgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJDb250ZW50TGF5ZXJDbGllbnRf
aAotI2RlZmluZSBXZWJDb250ZW50TGF5ZXJDbGllbnRfaAotCi0jaW5jbHVkZSAiV2ViQ2FudmFz
LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotc3RydWN0IFdlYlJlY3Q7Ci0KLWNsYXNzIFdlYkNv
bnRlbnRMYXllckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgLy8gUGFpbnRzIHRoZSBjb250ZW50IGFy
ZWEgZm9yIHRoZSBsYXllciwgdHlwaWNhbGx5IGRpcnR5IHJlY3RzIHN1Ym1pdHRlZAotICAgIC8v
IHRocm91Z2ggV2ViQ29udGVudExheWVyOjpzZXROZWVkc0Rpc3BsYXksIHN1Ym1pdHRpbmcgZHJh
d2luZyBjb21tYW5kcwotICAgIC8vIHRocm91Z2ggdGhlIFdlYkNhbnZhcy4KLSAgICAvLyBUaGUg
Y2FudmFzIGlzIGFscmVhZHkgY2xpcHBlZCB0byB0aGUgfGNsaXB8IHJlY3QuCi0gICAgdmlydHVh
bCB2b2lkIHBhaW50Q29udGVudHMoV2ViQ2FudmFzKiwgY29uc3QgV2ViUmVjdCYgY2xpcCkgPSAw
OwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+V2ViQ29udGVudExheWVyQ2xpZW50KCkgeyB9
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkNvbnRlbnRMYXll
ckNsaWVudF9oCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkNvbnRlbnRMYXllckNsaWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmgK
aW5kZXggY2U4N2JiMjM4NzYyNTJjZTE1ZDU5MzY0MWJjMzQ0YjI0NjIxMmRlOC4uMDAwODI2ZGY3
ZTk3MWI3YjBhNDI0MDYwMjRmYWFiNjk2ZDA2NjAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJFeHRlcm5hbFRleHR1
cmVMYXllci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIzLDYxICsyMyw0IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJfaAotI2RlZmluZSBXZWJFeHRlcm5hbFRleHR1cmVMYXllcl9oCi0K
LSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJGbG9hdFJlY3QuaCIKLSNpbmNs
dWRlICJXZWJMYXllci5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbDsKLQotLy8gVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgbGF5ZXIgdGhh
dCByZW5kZXJzIGEgdGV4dHVyZSB0aGF0IGlzIGdlbmVyYXRlZAotLy8gZXh0ZXJuYWxseSAobm90
IG1hbmFnZWQgYnkgdGhlIFdlYkxheWVyVHJlZVZpZXcpLgotLy8gVGhlIHRleHR1cmUgd2lsbCBi
ZSB1c2VkIGJ5IHRoZSBXZWJMYXllclRyZWVWaWV3IGR1cmluZyBjb21wb3NpdGluZyBwYXNzZXMu
Ci0vLyBXaGVuIGluIHNpbmdsZS10aHJlYWQgbW9kZSwgdGhpcyBtZWFucyBkdXJpbmcgV2ViTGF5
ZXJUcmVlVmlldzo6Y29tcG9zaXRlKCkuCi0vLyBXaGVuIHVzaW5nIHRoZSB0aHJlYWRlZCBjb21w
b3NpdG9yLCB0aGlzIGNhbiBtZWFuIGF0IGFuIGFyYml0cmFyeSB0aW1lIHVudGlsCi0vLyB0aGUg
V2ViTGF5ZXJUcmVlVmlldyBpcyBkZXN0cm95ZWQuCi1jbGFzcyBXZWJFeHRlcm5hbFRleHR1cmVM
YXllciA6IHB1YmxpYyBXZWJMYXllciB7Ci1wdWJsaWM6Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0
aWMgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgY3JlYXRlKCk7Ci0KLSAgICBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllcigpIHsgfQotICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKGNvbnN0IFdlYkV4
dGVybmFsVGV4dHVyZUxheWVyJiBsYXllcikgOiBXZWJMYXllcihsYXllcikgeyB9Ci0gICAgdmly
dHVhbCB+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoKSB7IH0KLSAgICBXZWJFeHRlcm5hbFRleHR1
cmVMYXllciYgb3BlcmF0b3I9KGNvbnN0IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyJiBsYXllcikK
LSAgICB7Ci0gICAgICAgIFdlYkxheWVyOjphc3NpZ24obGF5ZXIpOwotICAgICAgICByZXR1cm4g
KnRoaXM7Ci0gICAgfQotCi0gICAgLy8gU2V0cyB0aGUgdGV4dHVyZSBpZCB0aGF0IHJlcHJlc2Vu
dHMgdGhlIGxheWVyLCBpbiB0aGUgbmFtZXNwYWNlIG9mIHRoZQotICAgIC8vIGNvbXBvc2l0b3Ig
Y29udGV4dC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkKTsK
LSAgICBXRUJLSVRfRVhQT1JUIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0OwotCi0gICAgLy8g
U2V0cyB3aGV0aGVyIG9yIG5vdCB0aGUgdGV4dHVyZSBzaG91bGQgYmUgZmxpcHBlZCBpbiB0aGUg
WSBkaXJlY3Rpb24gd2hlbgotICAgIC8vIHJlbmRlcmVkLgotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzZXRGbGlwcGVkKGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBmbGlwcGVkKCkgY29u
c3Q7Ci0KLSAgICAvLyBTZXRzIHRoZSByZWN0IGluIFVWIHNwYWNlIG9mIHRoZSB0ZXh0dXJlIHRo
YXQgaXMgbWFwcGVkIHRvIHRoZSBsYXllcgotICAgIC8vIGJvdW5kcy4KLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgc2V0VVZSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYpOwotICAgIFdFQktJVF9FWFBP
UlQgV2ViRmxvYXRSZWN0IHV2UmVjdCgpIGNvbnN0OwotCi0gICAgLy8gTWFya3MgYSByZWdpb24g
b2YgdGhlIGxheWVyIGFzIG5lZWRpbmcgYSBkaXNwbGF5LiBUaGVzZSByZWdpb25zIGFyZQotICAg
IC8vIGNvbGxlY3RlZCBpbiBhIHVuaW9uIHVudGlsIHRoZSBkaXNwbGF5IG9jY3Vycy4KLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViRmxvYXRSZWN0Jik7Ci0K
LSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllcihj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiYpOwotICAg
IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRy
PFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4mKTsKLSAgICBvcGVyYXRvciBXVEY6OlBhc3NS
ZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPigpIGNvbnN0OwotI2VuZGlmCi19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVyX2gKKyNpbmNsdWRlICIuLi8uLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYkxheWVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJMYXllci5oCmluZGV4IDNkOTE5ZmE0NjAzNTE1MWU1OWE0NTIyYWI1
OGRjNTAzZGVlOGNjZGIuLjIzNGMyZmM0YjE0ZDAzZDdmM2JkMmNjMDQ0Mjk4Nzg5N2M5MjZkNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkxh
eWVyLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTGF5
ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMywxMjEgKzIzLDQgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJMYXllcl9o
Ci0jZGVmaW5lIFdlYkxheWVyX2gKLQotI2luY2x1ZGUgIldlYkNvbG9yLmgiCi0jaW5jbHVkZSAi
V2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgotCi1jbGFzcyBTa01hdHJp
eDQ0OwotbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBMYXllckNocm9taXVtOyB9Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotc3RydWN0IFdlYkZsb2F0UG9pbnQ7Ci1zdHJ1Y3QgV2ViU2l6ZTsKLQot
Y2xhc3MgV2ViTGF5ZXIgewotcHVibGljOgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkxh
eWVyIGNyZWF0ZSgpOwotCi0gICAgV2ViTGF5ZXIoKSB7IH0KLSAgICBXZWJMYXllcihjb25zdCBX
ZWJMYXllciYgbGF5ZXIpIHsgYXNzaWduKGxheWVyKTsgfQotICAgIHZpcnR1YWwgfldlYkxheWVy
KCkgeyByZXNldCgpOyB9Ci0gICAgV2ViTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXZWJMYXllciYg
bGF5ZXIpCi0gICAgewotICAgICAgICBhc3NpZ24obGF5ZXIpOwotICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgfQotICAgIGJvb2wgaXNOdWxsKCkgeyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgp
OyB9Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIGFzc2lnbihjb25zdCBXZWJMYXllciYpOwotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBlcXVh
bHMoY29uc3QgV2ViTGF5ZXImKSBjb25zdDsKLQotICAgIFdFQktJVF9FWFBPUlQgV2ViTGF5ZXIg
cm9vdExheWVyKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJMYXllciBwYXJlbnQoKSBj
b25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYWRkQ2hpbGQoY29uc3QgV2ViTGF5ZXImKTsK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW5zZXJ0Q2hpbGQoY29uc3QgV2ViTGF5ZXImLCBzaXpl
X3QgaW5kZXgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXBsYWNlQ2hpbGQoY29uc3QgV2Vi
TGF5ZXImIHJlZmVyZW5jZSwgY29uc3QgV2ViTGF5ZXImIG5ld0xheWVyKTsKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBy
ZW1vdmVBbGxDaGlsZHJlbigpOwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFuY2hvclBv
aW50KGNvbnN0IFdlYkZsb2F0UG9pbnQmKTsKLSAgICBXRUJLSVRfRVhQT1JUIFdlYkZsb2F0UG9p
bnQgYW5jaG9yUG9pbnQoKSBjb25zdDsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRBbmNo
b3JQb2ludFooZmxvYXQpOwotICAgIFdFQktJVF9FWFBPUlQgZmxvYXQgYW5jaG9yUG9pbnRaKCkg
Y29uc3Q7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Qm91bmRzKGNvbnN0IFdlYlNpemUm
KTsKLSAgICBXRUJLSVRfRVhQT1JUIFdlYlNpemUgYm91bmRzKCkgY29uc3Q7Ci0KLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKTsKLSAgICBXRUJLSVRfRVhQT1JU
IGJvb2wgbWFza3NUb0JvdW5kcygpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dE1hc2tMYXllcihjb25zdCBXZWJMYXllciYpOwotICAgIFdFQktJVF9FWFBPUlQgV2ViTGF5ZXIg
bWFza0xheWVyKCkgY29uc3Q7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0T3BhY2l0eShm
bG9hdCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBmbG9hdCBvcGFjaXR5KCkgY29uc3Q7Ci0KLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0T3BhcXVlKGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgYm9v
bCBvcGFxdWUoKSBjb25zdDsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRQb3NpdGlvbihj
b25zdCBXZWJGbG9hdFBvaW50Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJGbG9hdFBvaW50IHBv
c2l0aW9uKCkgY29uc3Q7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0U3VibGF5ZXJUcmFu
c2Zvcm0oY29uc3QgU2tNYXRyaXg0NCYpOwotICAgIFdFQktJVF9FWFBPUlQgU2tNYXRyaXg0NCBz
dWJsYXllclRyYW5zZm9ybSgpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFRy
YW5zZm9ybShjb25zdCBTa01hdHJpeDQ0Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCBTa01hdHJpeDQ0
IHRyYW5zZm9ybSgpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERlYnVnQm9y
ZGVyQ29sb3IoY29uc3QgV2ViQ29sb3ImKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RGVi
dWdCb3JkZXJXaWR0aChmbG9hdCk7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHRvKCkK
LSAgICB7Ci0gICAgICAgIFQgcmVzOwotICAgICAgICByZXMuV2ViTGF5ZXI6OmFzc2lnbigqdGhp
cyk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY29uc3QgVCB0b0NvbnN0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFQgcmVzOwotICAgICAg
ICByZXMuV2ViTGF5ZXI6OmFzc2lnbigqdGhpcyk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAg
fQotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViTGF5ZXIoY29uc3QgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OkxheWVyQ2hyb21pdW0+Jik7Ci0gICAgV2ViTGF5ZXImIG9wZXJh
dG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4mKTsKLSAg
ICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4oKSBjb25z
dDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUKiB1bndyYXAoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX3ByaXZhdGUuZ2V0KCkpOwotICAgIH0KLQotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIGNvbnN0VW53cmFwKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBUKj4obV9wcml2YXRlLmdldCgpKTsKLSAg
ICB9Ci0jZW5kaWYKLQotcHJvdGVjdGVkOgotICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bT4gbV9wcml2YXRlOwotfTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBXZWJMYXllciYgYSwgY29uc3QgV2ViTGF5ZXImIGIpCi17Ci0gICAgcmV0dXJuIGEuZXF1YWxz
KGIpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYkxheWVyJiBhLCBjb25z
dCBXZWJMYXllciYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkxheWVyX2gKKyNpbmNsdWRlICIuLi8uLi8uLi8u
Li9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkxheWVyVHJlZVZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkxheWVyVHJlZVZpZXcuaApp
bmRleCAxN2E4NzZhOTg1MWRkZmMwY2Y5YTU2MWM5ODZhZGMyM2JiZDZhYWI2Li4yZWEyOTE1ZTE5
NTAxOGQ3MTgzYjlmMTBiYTI3NWVjZTc3ODE3NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3LmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmlldy5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDExMCAr
MjMsNCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkxheWVyVHJlZVZpZXdfaAot
I2RlZmluZSBXZWJMYXllclRyZWVWaWV3X2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2lu
Y2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ0NM
YXllclRyZWVIb3N0Owotc3RydWN0IENDU2V0dGluZ3M7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotY2xhc3MgV2ViTGF5ZXI7Ci1jbGFzcyBXZWJMYXllclRyZWVWaWV3Q2xpZW50Owotc3RydWN0
IFdlYlJlY3Q7Ci1zdHJ1Y3QgV2ViU2l6ZTsKLQotY2xhc3MgV2ViTGF5ZXJUcmVlVmlldyB7Ci1w
dWJsaWM6Ci0gICAgc3RydWN0IFNldHRpbmdzIHsKLSAgICAgICAgU2V0dGluZ3MoKQotICAgICAg
ICAgICAgOiBhY2NlbGVyYXRlUGFpbnRpbmcoZmFsc2UpCi0gICAgICAgICAgICAsIGNvbXBvc2l0
ZU9mZnNjcmVlbihmYWxzZSkKLSAgICAgICAgICAgICwgc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCi0g
ICAgICAgICAgICAsIHNob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKLSAgICAgICAgICAgICwg
cmVmcmVzaFJhdGUoMCkKLSAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQotICAg
ICAgICAgICAgLCBwYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIHRocmVh
ZGVkQW5pbWF0aW9uRW5hYmxlZChmYWxzZSkgeyB9Ci0KLSAgICAgICAgYm9vbCBhY2NlbGVyYXRl
UGFpbnRpbmc7Ci0gICAgICAgIGJvb2wgY29tcG9zaXRlT2Zmc2NyZWVuOwotICAgICAgICBib29s
IHNob3dGUFNDb3VudGVyOwotICAgICAgICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJlZTsKLSAg
ICAgICAgZG91YmxlIHJlZnJlc2hSYXRlOwotICAgICAgICBib29sIHBlclRpbGVQYWludGluZzsK
LSAgICAgICAgYm9vbCBwYXJ0aWFsU3dhcEVuYWJsZWQ7Ci0gICAgICAgIGJvb2wgdGhyZWFkZWRB
bmltYXRpb25FbmFibGVkOwotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgICAgICBvcGVy
YXRvciBXZWJDb3JlOjpDQ1NldHRpbmdzKCkgY29uc3Q7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAg
V0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViTGF5ZXJUcmVlVmlldyBjcmVhdGUoV2ViTGF5ZXJUcmVl
Vmlld0NsaWVudCosIGNvbnN0IFdlYkxheWVyJiByb290LCBjb25zdCBTZXR0aW5ncyYpOwotCi0g
ICAgV2ViTGF5ZXJUcmVlVmlldygpIHsgfQotICAgIFdlYkxheWVyVHJlZVZpZXcoY29uc3QgV2Vi
TGF5ZXJUcmVlVmlldyYgbGF5ZXIpIHsgYXNzaWduKGxheWVyKTsgfQotICAgIH5XZWJMYXllclRy
ZWVWaWV3KCkgeyByZXNldCgpOyB9Ci0gICAgV2ViTGF5ZXJUcmVlVmlldyYgb3BlcmF0b3I9KGNv
bnN0IFdlYkxheWVyVHJlZVZpZXcmIGxheWVyKQotICAgIHsKLSAgICAgICAgYXNzaWduKGxheWVy
KTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
cmVzZXQoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYkxheWVyVHJl
ZVZpZXcmKTsKLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZXF1YWxzKGNvbnN0IFdlYkxheWVyVHJl
ZVZpZXcmKSBjb25zdDsKLQotICAgIC8vIFRyaWdnZXJzIGEgY29tcG9zaXRpbmcgcGFzcy4gSWYg
dGhlIGNvbXBvc2l0b3IgdGhyZWFkIHdhcyBub3QKLSAgICAvLyBlbmFibGVkIHZpYSBXZWJDb21w
b3NpdG9yOjppbml0aWFsaXplLCB0aGUgY29tcG9zaXRpbmcgcGFzcyBoYXBwZW5zCi0gICAgLy8g
aW1tZWRpYXRlbHkuIElmIGl0IGlzIGVuYWJsZWQsIHRoZSBjb21wb3NpdGluZyBwYXNzIHdpbGwg
aGFwcGVuIGF0IGEKLSAgICAvLyBsYXRlciB0aW1lLiBCZWZvcmUgdGhlIGNvbXBvc2l0aW5nIHBh
c3MgaGFwcGVucyAoaS5lLiBiZWZvcmUgY29tcG9zaXRlKCkKLSAgICAvLyByZXR1cm5zIHdoZW4g
dGhlIGNvbXBvc2l0b3IgdGhyZWFkIGlzIGRpc2FibGVkKSwgV2ViQ29udGVudExheWVycyB3aWxs
IGJlCi0gICAgLy8gYXNrZWQgdG8gcGFpbnQgdGhlaXIgZGlydHkgcmVnaW9uLCB0aHJvdWdoCi0g
ICAgLy8gV2ViQ29udGVudExheWVyQ2xpZW50OjpwYWludENvbnRlbnRzLgotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBjb21wb3NpdGUoKTsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRWaWV3
cG9ydFNpemUoY29uc3QgV2ViU2l6ZSYpOwotICAgIFdFQktJVF9FWFBPUlQgV2ViU2l6ZSB2aWV3
cG9ydFNpemUoKSBjb25zdDsKLQotICAgIC8vIENvbXBvc2l0ZXMgYW5kIGF0dGVtcHRzIHRvIHJl
YWQgYmFjayB0aGUgcmVzdWx0IGludG8gdGhlIHByb3ZpZGVkCi0gICAgLy8gYnVmZmVyLiBJZiBp
dCB3YXNuJ3QgcG9zc2libGUsIGUuZy4gZHVlIHRvIGNvbnRleHQgbG9zdCwgd2lsbCByZXR1cm4K
LSAgICAvLyBmYWxzZS4gUGl4ZWwgZm9ybWF0IGlzIDMyYml0IChSR0JBKSwgYW5kIHRoZSBwcm92
aWRlZCBidWZmZXIgbXVzdCBiZQotICAgIC8vIGxhcmdlIGVub3VnaCBjb250YWluIHZpZXdwb3J0
U2l6ZSgpLndpZHRoKCkgKiB2aWV3cG9ydFNpemUoKS5oZWlnaHQoKQotICAgIC8vIHBpeGVscy4g
VGhlIFdlYkxheWVyVHJlZVZpZXcgZG9lcyBub3QgYXNzdW1lIG93bmVyc2hpcCBvZiB0aGUgYnVm
ZmVyLgotICAgIC8vIFRoZSBidWZmZXIgaXMgbm90IG1vZGlmaWVkIGlmIHRoZSBmYWxzZSBpcyBy
ZXR1cm5lZC4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgY29tcG9zaXRlQW5kUmVhZGJhY2sodm9p
ZCAqcGl4ZWxzLCBjb25zdCBXZWJSZWN0Jik7Ci0KLSAgICAvLyBTZXRzIHRoZSByb290IG9mIHRo
ZSB0cmVlLiBUaGUgcm9vdCBpcyBzZXQgYnkgd2F5IG9mIHRoZSBjb25zdHJ1Y3Rvci4KLSAgICAv
LyBUaGlzIGlzIHR5cGljYWxseSB1c2VkIHRvIGV4cGxpY2l0bHkgc2V0IHRoZSByb290IHRvIG51
bGwgdG8gYnJlYWsKLSAgICAvLyBjeWNsZXMuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJv
b3RMYXllcihXZWJMYXllciopOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2Vi
TGF5ZXJUcmVlVmlldyhjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0PiYpOwotICAgIFdlYkxheWVyVHJlZVZpZXcmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0PiYpOwotICAgIG9wZXJhdG9yIFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q+KCkgY29uc3Q7Ci0jZW5kaWYKLQotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXROZWVkc1JlZHJhdygpOwotCi1wcm90ZWN0ZWQ6Ci0gICAg
V2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q+IG1fcHJpdmF0ZTsKLX07Ci0K
LWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViTGF5ZXJUcmVlVmlldyYgYSwgY29uc3Qg
V2ViTGF5ZXJUcmVlVmlldyYgYikKLXsKLSAgICByZXR1cm4gYS5lcXVhbHMoYik7Ci19Ci0KLWlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2ViTGF5ZXJUcmVlVmlldyYgYSwgY29uc3QgV2Vi
TGF5ZXJUcmVlVmlldyYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkxheWVyVHJlZVZpZXdfaAorI2luY2x1ZGUg
Ii4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJM
YXllclRyZWVWaWV3Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmgKaW5kZXggOWM0ZGZiNzdiNzcxMTRiMGVmNjdi
MDE3YmZhNGJkMjIzYjNhYjZhNi4uMzZjNjFmNTg0MDViZjRmZDlmNjBmMjVmYTZjN2IzYjcwYzgy
MzZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw0NSArMjMsNCBAQAogICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkxheWVyVHJlZVZpZXdDbGllbnRfaAotI2RlZmluZSBX
ZWJMYXllclRyZWVWaWV3Q2xpZW50X2gKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJH
cmFwaGljc0NvbnRleHQzRDsKLXN0cnVjdCBXZWJTaXplOwotY2xhc3MgV2ViVGhyZWFkOwotCi1j
bGFzcyBXZWJMYXllclRyZWVWaWV3Q2xpZW50IHsKLXB1YmxpYzoKLSAgICAvLyBVcGRhdGVzIGFu
aW1hdGlvbiBhbmQgbGF5b3V0LiBUaGVzZSBhcmUgY2FsbGVkIGJlZm9yZSB0aGUgY29tcG9zaXRp
bmcKLSAgICAvLyBwYXNzIHNvIHRoYXQgbGF5ZXJzIGNhbiBiZSB1cGRhdGVkIGF0IHRoZSBnaXZl
biBmcmFtZSB0aW1lLgotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBm
cmFtZUJlZ2luVGltZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSA9IDA7Ci0KLSAg
ICAvLyBBcHBsaWVzIGEgc2Nyb2xsIGRlbHRhIHRvIHRoZSByb290IGxheWVyLCB3aGljaCBpcyBi
dW5kbGVkIHdpdGggYSBwYWdlCi0gICAgLy8gc2NhbGUgZmFjdG9yIHRoYXQgbWF5IGFwcGx5IGEg
Q1NTIHRyYW5zZm9ybSBvbiB0aGUgd2hvbGUgZG9jdW1lbnQgKHVzZWQKLSAgICAvLyBmb3IgbW9i
aWxlLWRldmljZSBwaW5jaCB6b29taW5nKS4gVGhpcyBpcyB0cmlnZ2VyZWQgYnkgZXZlbnRzIHNl
bnQgdG8gdGhlCi0gICAgLy8gY29tcG9zaXRvciB0aHJlYWQgdGhyb3VnaCB0aGUgV2ViQ29tcG9z
aXRvciBpbnRlcmZhY2UuCi0gICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29u
c3QgV2ViU2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHNjYWxlRmFjdG9yKSA9IDA7Ci0KLSAgICAv
LyBDcmVhdGVzIGEgM0QgY29udGV4dCBzdWl0YWJsZSBmb3IgdGhlIGNvbXBvc2l0aW5nLiBUaGlz
IG1heSBiZSBjYWxsZWQKLSAgICAvLyBtb3JlIHRoYW4gb25jZSBpZiB0aGUgY29udGV4dCBnZXRz
IGxvc3QuCi0gICAgdmlydHVhbCBXZWJHcmFwaGljc0NvbnRleHQzRCogY3JlYXRlQ29udGV4dDNE
KCkgPSAwOwotCi0gICAgLy8gU2lnbmFscyBhIHN1Y2Nlc3NmdWwgcmViaW5kaW5nIG9mIHRoZSAz
RCBjb250ZXh0IChlLmcuIGFmdGVyIGEgbG9zdAotICAgIC8vIGNvbnRleHQgZXZlbnQpLgotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWJpbmRHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNjZXNzKSA9IDA7
Ci0KLSAgICAvLyBTY2hlZHVsZXMgYSBjb21wb3NpdGluZyBwYXNzLCBtZWFuaW5nIHRoZSBjbGll
bnQgc2hvdWxkIGNhbGwKLSAgICAvLyBXZWJMYXllclRyZWVWaWV3Ojpjb21wb3NpdGUgYXQgYSBs
YXRlciB0aW1lLiBUaGlzIGlzIG9ubHkgY2FsbGVkIGlmIHRoZQotICAgIC8vIGNvbXBvc2l0b3Ig
dGhyZWFkIGlzIGRpc2FibGVkOyB3aGVuIGVuYWJsZWQsIHRoZSBjb21wb3NpdG9yIHdpbGwKLSAg
ICAvLyBpbnRlcm5hbGx5IHNjaGVkdWxlIGEgY29tcG9zaXRpbmcgcGFzcyB3aGVuIG5lZWRlZC4K
LSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKSA9IDA7Ci0KLXByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIH5XZWJMYXllclRyZWVWaWV3Q2xpZW50KCkgeyB9Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkxheWVyVHJlZVZpZXdDbGllbnRfaAorI2lu
Y2x1ZGUgIi4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVW
aWV3Q2xpZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJQcml2YXRlUHRyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgKaW5kZXggMzFkMDlhOTBiZGFjZjJkZWIzOTM3MjFlMTEw
MzM1OTg0MGNkN2NkNy4uMjA4MDk2ZWQzNGYyY2U3YjBiNjNmMDllZTc1MzE4ZGI3YTRjZTdhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViUHJp
dmF0ZVB0ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dl
YlByaXZhdGVQdHIuaApAQCAtMSwxMDcgKzEsMjYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgogICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgogICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIFdlYlByaXZhdGVQdHJfaAotI2RlZmluZSBXZWJQcml2YXRlUHRyX2gKLQotI2lu
Y2x1ZGUgIldlYkNvbW1vbi5oIgotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8g
VGhpcyBjbGFzcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2YgdGhlIFdlYktpdCBBUEku
ICBJdCBleGlzdHMKLS8vIHRvIGhlbHAgc2ltcGxpZnkgdGhlIGltcGxlbWVudGF0aW9uIG9mIFdl
YktpdCBpbnRlcmZhY2VzIHRoYXQgbWVyZWx5Ci0vLyB3cmFwIGEgcmVmZXJlbmNlIGNvdW50ZWQg
V2ViQ29yZSBjbGFzcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgV2ViUHJpdmF0ZVB0
ciB7Ci1wdWJsaWM6Ci0gICAgV2ViUHJpdmF0ZVB0cigpIDogbV9wdHIoMCkgeyB9Ci0gICAgfldl
YlByaXZhdGVQdHIoKSB7IFdFQktJVF9BU1NFUlQoIW1fcHRyKTsgfQotCi0gICAgYm9vbCBpc051
bGwoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgotICAgIFdlYlByaXZhdGVQdHIoY29uc3QgUGFzc1JlZlB0cjxUPiYgcHJwKQotICAgICAgICA6
IG1fcHRyKHBycC5sZWFrUmVmKCkpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgcmVzZXQoKQot
ICAgIHsKLSAgICAgICAgYXNzaWduKDApOwotICAgIH0KLQotICAgIFdlYlByaXZhdGVQdHI8VD4m
IG9wZXJhdG9yPShjb25zdCBXZWJQcml2YXRlUHRyPFQ+JiBvdGhlcikKLSAgICB7Ci0gICAgICAg
IFQqIHAgPSBvdGhlci5tX3B0cjsKLSAgICAgICAgaWYgKHApCi0gICAgICAgICAgICBwLT5yZWYo
KTsKLSAgICAgICAgYXNzaWduKHApOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0g
ICAgV2ViUHJpdmF0ZVB0cjxUPiYgb3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VD4mIHBycCkK
LSAgICB7Ci0gICAgICAgIGFzc2lnbihwcnAubGVha1JlZigpKTsKLSAgICAgICAgcmV0dXJuICp0
aGlzOwotICAgIH0KLQotICAgIFQqIGdldCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV9wdHI7Ci0gICAgfQotCi0gICAgVCogb3BlcmF0b3ItPigpIGNvbnN0Ci0gICAgewotICAgICAg
ICBBU1NFUlQobV9wdHIpOwotICAgICAgICByZXR1cm4gbV9wdHI7Ci0gICAgfQotI2VuZGlmCi0K
LXByaXZhdGU6Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgdm9pZCBhc3NpZ24oVCog
cCkKLSAgICB7Ci0gICAgICAgIC8vIHAgaXMgYWxyZWFkeSByZWYnZCBmb3IgdXMgYnkgdGhlIGNh
bGxlcgotICAgICAgICBpZiAobV9wdHIpCi0gICAgICAgICAgICBtX3B0ci0+ZGVyZWYoKTsKLSAg
ICAgICAgbV9wdHIgPSBwOwotICAgIH0KLSNlbmRpZgotCi0gICAgVCogbV9wdHI7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlByaXZhdGVQdHIuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlNvbGlkQ29sb3JMYXllci5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViU29saWRDb2xvckxheWVy
LmgKaW5kZXggYWQ5MTIzZDk2MmFmZWFlYThhNTYzMTI5NDVkZTFmYzVmODk2YzlmYy4uZjRlZGJk
NDg5Yjc4YmY0YmRhMTA1OTY1NjAwMjZmNzgwYmYxZjZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViU29saWRDb2xvckxheWVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViU29saWRDb2xvckxheWVy
LmgKQEAgLTIzLDI2ICsyMyw0IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViU29s
aWRDb2xvckxheWVyX2gKLSNkZWZpbmUgV2ViU29saWRDb2xvckxheWVyX2gKLQotI2luY2x1ZGUg
IldlYkNvbW1vbi5oIgotI2luY2x1ZGUgIldlYkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIldlYkxh
eWVyLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViU29saWRDb2xvckxheWVySW1w
bDsKLQotY2xhc3MgV2ViU29saWRDb2xvckxheWVyIDogcHVibGljIFdlYkxheWVyIHsKLXB1Ymxp
YzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTb2xpZENvbG9yTGF5ZXIgY3JlYXRlKCk7
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb2xv
ciYpOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViU29saWRDb2xvckxheWVy
KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJTb2xpZENvbG9yTGF5ZXJJbXBsPiYpOwotI2VuZGlm
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYlNvbGlkQ29sb3JM
YXllcl9oCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YlNvbGlkQ29sb3JMYXllci5oIgo=
</data>
<flag name="review"
          id="131230"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>128706</attachid>
            <date>2012-02-24 04:31:59 -0800</date>
            <delta_ts>2012-02-24 04:36:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79425-20120224163157.patch</filename>
            <type>text/plain</type>
            <size>15054</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGIzYTM2ZGE4N2Y1MjY3
NzliMzQ1ZDJkYzcwYzhmNmU0YTY3MTVkNC4uOWMzM2I5ODk4YTEyODNmYjZhNDQzZWUzMWQyZGRk
YTZjN2E3MzNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAyLTIyICBBbmRy
ZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogaW4gc3RhcnQtYXQtemVybyBtb2RlIG9mIHRpbWVsaW5lIHBhbmVsLCBjYWxjdWxhdGUgd2lu
ZG93IGJvdW5kYXJpZXMgYmFzZWQgb24gZmlsdGVyZWQgZXZlbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTI0NQorCisgICAgICAgIC0gdXNlIGFi
c29sdXRlICh0aW1lKSBib3VuZGFyaWVzIHdoZW4gZmlsdGVyaW5nIHJlY29yZHM7IGtlZXAgdGhl
bSBpbiBUaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsCisgICAgICAgIC0gcmVjYWxjdWxhdGUgZXZl
bnQgYm91bmRhcmllcyBhZnRlciBmaWx0ZXJpbmcgZXZlbnRzICh1c2VkIHRvIGJlIGJlZm9yZSkK
KyAgICAgICAgLSBmZXcgZHJpdmUtYnkgZml4ZXMgYXJvdW5kIE1lbW9yeVN0YXRpc3RpY3MKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsLnByb3RvdHlwZS5fcmVmcmVzaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZUJvdW5kYXJpZXMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9yZWZyZXNoUmVjb3Jkcyk6CisKIDIwMTIt
MDItMjQgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1ha2Ug
Tm9kZTo6c2hvd1RyZWVGb3JUaGlzIChhbmQgTm9kZTo6c2hvd1RyZWVGb3JUaGlzQWNyb3NzRnJh
bWUpIGR1bXAgbXVsdGlwbGUgc2hhZG93IHJvb3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZW1vcnlTdGF0aXN0aWNzLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZW1vcnlTdGF0aXN0aWNzLmpzCmluZGV4IGQ5ZDJmYmNm
ZmJhMjQ3ZjMwODVlMGU2YmMxN2E5NDQ4M2M5YWMzODIuLjE5OGQ2MzVlNTI3MGY5ZGRjZGI0MDQ0
NzY5M2JiMjQ2ZTNiNjY0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanMKQEAgLTEzNSwxMSArMTM1LDExIEBAIFdl
Ykluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJu
IGNvbnRhaW5lcjsKICAgICB9LAogCi0gICAgYWRkVGltbGluZUV2ZW50OiBmdW5jdGlvbihldmVu
dCkKKyAgICBhZGRUaW1saW5lUmVjb3JkOiBmdW5jdGlvbihyZWNvcmQpCiAgICAgewotICAgICAg
ICB2YXIgY291bnRlcnMgPSBldmVudC5kYXRhWyJjb3VudGVycyJdOworICAgICAgICB2YXIgY291
bnRlcnMgPSByZWNvcmRbImNvdW50ZXJzIl07CiAgICAgICAgIHRoaXMuX2NvdW50ZXJzLnB1c2go
ewotICAgICAgICAgICAgdGltZTogZXZlbnQuZGF0YS5lbmRUaW1lIHx8IGV2ZW50LmRhdGEuc3Rh
cnRUaW1lLAorICAgICAgICAgICAgdGltZTogcmVjb3JkLmVuZFRpbWUgfHwgcmVjb3JkLnN0YXJ0
VGltZSwKICAgICAgICAgICAgIGRvY3VtZW50Q291bnQ6IGNvdW50ZXJzWyJkb2N1bWVudHMiXSwK
ICAgICAgICAgICAgIG5vZGVDb3VudDogY291bnRlcnNbIm5vZGVzIl0sCiAgICAgICAgICAgICBs
aXN0ZW5lckNvdW50OiBjb3VudGVyc1sianNFdmVudExpc3RlbmVycyJdCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5lLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFu
ZS5qcwppbmRleCA4NTg3NDJjNmM1YTRiMGMwMGUxOGY4MDMwMWZmY2Y5MTk5Yzc3NTkzLi41Njgz
NWMyNjRjYWI0MGY2OTJmYjk5ZWQzZGY1ZTAxYTYwOGRiMThlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUu
anMKQEAgLTE1Miw3ICsxNTIsMTMgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5l
LnByb3RvdHlwZSA9IHsKIAogICAgIF9vbldpbmRvd0NoYW5nZWQ6IGZ1bmN0aW9uKCkKICAgICB7
Ci0gICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnNldFdpbmRvd1Bvc2l0aW9uKHRoaXMu
X292ZXJ2aWV3V2luZG93LndpbmRvd0xlZnQsIHRoaXMuX292ZXJ2aWV3V2luZG93LndpbmRvd1Jp
Z2h0KTsKKyAgICAgICAgdmFyIHRpbWVTcGFuID0gdGhpcy5fb3ZlcnZpZXdDYWxjdWxhdG9yLmJv
dW5kYXJ5U3BhbjsKKyAgICAgICAgdmFyIGxlZnRUaW1lID0gdGhpcy5fb3ZlcnZpZXdDYWxjdWxh
dG9yLm1pbmltdW1Cb3VuZGFyeSArIHRoaXMuX292ZXJ2aWV3V2luZG93LndpbmRvd0xlZnQgKiB0
aW1lU3BhbjsKKyAgICAgICAgdmFyIHJpZ2h0VGltZSA9IHRoaXMuX292ZXJ2aWV3Q2FsY3VsYXRv
ci5taW5pbXVtQm91bmRhcnkgKyB0aGlzLl9vdmVydmlld1dpbmRvdy53aW5kb3dSaWdodCAqIHRp
bWVTcGFuOworICAgICAgICBpZiAocmlnaHRUaW1lICsgdGltZVNwYW4gLyAxMDAgPj0gdGhpcy5f
b3ZlcnZpZXdDYWxjdWxhdG9yLm1heGltdW1Cb3VuZGFyeSkKKyAgICAgICAgICAgIHJpZ2h0VGlt
ZSA9IG51bGw7CisKKyAgICAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuc2V0V2luZG93VGlt
ZXMobGVmdFRpbWUsIHJpZ2h0VGltZSk7CiAgICAgfSwKIAogICAgIF9vbkNhdGVnb3J5VmlzaWJp
bGl0eUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtNDk2LDE1ICs1MDIsMTAgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdDYWxjdWxhdG9yLnByb3RvdHlwZSA9IHsKIAogICAgIHVw
ZGF0ZUJvdW5kYXJpZXM6IGZ1bmN0aW9uKHJlY29yZCkKICAgICB7Ci0gICAgICAgIGlmICh0eXBl
b2YgdGhpcy5taW5pbXVtQm91bmRhcnkgPT09ICJ1bmRlZmluZWQiIHx8IHJlY29yZC5zdGFydFRp
bWUgPCB0aGlzLm1pbmltdW1Cb3VuZGFyeSkgeworICAgICAgICBpZiAodHlwZW9mIHRoaXMubWlu
aW11bUJvdW5kYXJ5ID09PSAidW5kZWZpbmVkIiB8fCByZWNvcmQuc3RhcnRUaW1lIDwgdGhpcy5t
aW5pbXVtQm91bmRhcnkpCiAgICAgICAgICAgICB0aGlzLm1pbmltdW1Cb3VuZGFyeSA9IHJlY29y
ZC5zdGFydFRpbWU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAodHlwZW9mIHRoaXMubWF4aW11bUJvdW5kYXJ5ID09PSAidW5kZWZpbmVkIiB8fCByZWNv
cmQuZW5kVGltZSA+IHRoaXMubWF4aW11bUJvdW5kYXJ5KSB7CisgICAgICAgIGlmICh0eXBlb2Yg
dGhpcy5tYXhpbXVtQm91bmRhcnkgPT09ICJ1bmRlZmluZWQiIHx8IHJlY29yZC5lbmRUaW1lID4g
dGhpcy5tYXhpbXVtQm91bmRhcnkpCiAgICAgICAgICAgICB0aGlzLm1heGltdW1Cb3VuZGFyeSA9
IHJlY29yZC5lbmRUaW1lOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0sCiAKICAgICBnZXQgYm91bmRhcnlTcGFuKCkKQEAg
LTc2MCw3ICs3NjEsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTdGFydEF0WmVyb092ZXJ2aWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY2FsY3VsYXRvci5yZXNldCgpOwogICAgICAg
ICByZWNvcmRzID0gdGhpcy5fZmlsdGVyUmVjb3JkcyhyZWNvcmRzKTsKICAgICAgICAgcmVjb3Jk
cy5mb3JFYWNoKHRoaXMuX2NhbGN1bGF0b3IudXBkYXRlQm91bmRhcmllcywgdGhpcy5fY2FsY3Vs
YXRvcik7Ci0gICAgICAgIHRoaXMuX2NhbGN1bGF0b3IuY2FsY3VsYXRlV2luZG93KCk7CiAKICAg
ICAgICAgdmFyIHNjYWxlID0gKHRoaXMuX292ZXJ2aWV3RWxlbWVudC5jbGllbnRIZWlnaHQgLSA0
KSAvIHRoaXMuX2NhbGN1bGF0b3IuYm91bmRhcnlTcGFuOwogICAgICAgICB0aGlzLl9yZWNvcmRz
UGVyQmFyID0gTWF0aC5tYXgoMSwgcmVjb3Jkcy5sZW5ndGggKiA0IC8gdGhpcy5lbGVtZW50LmNs
aWVudFdpZHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVGltZWxpbmVQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VGltZWxpbmVQYW5lbC5qcwppbmRleCBiZjU4MGNkMjEzZTc1ZDk2YjUzNGYwYmY4NDZlYjZjOTBm
MWYyN2Y4Li4xNTRjYjAzNjU5YjI3YzQ1YjllYzA4YTc5ODllYjQ1Njc1ODk4ZjA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpz
CkBAIC00ODMsNyArNDgzLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl9yZXNldFBhbmVsKCk7CiAgICAgICAgIHZhciByZWNvcmRzID0g
dGhpcy5fbW9kZWwucmVjb3JkczsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWNvcmRz
Lmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5faW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5l
KHJlY29yZHNbaV0sIHRoaXMuX3Jvb3RSZWNvcmQpOworICAgICAgICAgICAgdGhpcy5fYWRkUmVj
b3JkVG9UaW1lbGluZShyZWNvcmRzW2ldKTsKICAgICAgICAgdGhpcy5fc2NoZWR1bGVSZWZyZXNo
KGZhbHNlKTsKICAgICB9LAogCkBAIC00OTQsMTEgKzQ5NCw4IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9vblRpbWVsaW5lRXZlbnRSZWNvcmRlZDog
ZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB0aGlzLl9pbm5lckFkZFJlY29yZFRvVGlt
ZWxpbmUoZXZlbnQuZGF0YSwgdGhpcy5fcm9vdFJlY29yZCk7CisgICAgICAgIHRoaXMuX2FkZFJl
Y29yZFRvVGltZWxpbmUoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVz
aChmYWxzZSk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX21lbW9yeVN0YXRpc3RpY3MgJiYgZXZlbnQu
ZGF0YVsiY291bnRlcnMiXSkKLSAgICAgICAgICAgIHRoaXMuX21lbW9yeVN0YXRpc3RpY3MuYWRk
VGltbGluZUV2ZW50KGV2ZW50KTsKICAgICB9LAogCiAgICAgX2ZpbmRQYXJlbnRSZWNvcmQ6IGZ1
bmN0aW9uKHJlY29yZCkKQEAgLTUyMSw2ICs1MTgsMTMgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gcGFyZW50UmVjb3JkOwogICAgIH0s
CiAKKyAgICBfYWRkUmVjb3JkVG9UaW1lbGluZTogZnVuY3Rpb24ocmVjb3JkKQorICAgIHsKKyAg
ICAgICAgdGhpcy5faW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lKHJlY29yZCwgdGhpcy5fcm9vdFJl
Y29yZCk7CisgICAgICAgIGlmICh0aGlzLl9tZW1vcnlTdGF0aXN0aWNzICYmIHJlY29yZFsiY291
bnRlcnMiXSkKKyAgICAgICAgICAgIHRoaXMuX21lbW9yeVN0YXRpc3RpY3MuYWRkVGltbGluZVJl
Y29yZChyZWNvcmQpOworICAgIH0sCisKICAgICBfaW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lOiBm
dW5jdGlvbihyZWNvcmQsIHBhcmVudFJlY29yZCkKICAgICB7CiAgICAgICAgIHZhciBjb25uZWN0
ZWRUb09sZFJlY29yZCA9IGZhbHNlOwpAQCAtNzAzLDM1ICs3MDcsMzAgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5f
b3ZlcnZpZXdQYW5lLnVwZGF0ZSh0aGlzLl9yb290UmVjb3JkLmNoaWxkcmVuLCB0aGlzLl9zaG93
U2hvcnRFdmVudHMpOwotCi0gICAgICAgIGlmICghdGhpcy5fYm91bmRhcmllc0FyZVZhbGlkKQot
ICAgICAgICAgICAgdGhpcy5fdXBkYXRlQm91bmRhcmllcygpOwogICAgICAgICB0aGlzLl9yZWZy
ZXNoUmVjb3JkcyghdGhpcy5fYm91bmRhcmllc0FyZVZhbGlkKTsKICAgICAgICAgdGhpcy5fdXBk
YXRlUmVjb3Jkc0NvdW50ZXIoKTsKLSAgICAgICAgaWYoIXRoaXMuX2JvdW5kYXJpZXNBcmVWYWxp
ZCkKKyAgICAgICAgaWYgKCF0aGlzLl9ib3VuZGFyaWVzQXJlVmFsaWQpCiAgICAgICAgICAgICB0
aGlzLl91cGRhdGVFdmVudERpdmlkZXJzKCk7CiAgICAgICAgIGlmICh0aGlzLl9tZW1vcnlTdGF0
aXN0aWNzICYmIHRoaXMuX21lbW9yeVN0YXRpc3RpY3MudmlzaWJsZSgpKQogICAgICAgICAgICAg
dGhpcy5fbWVtb3J5U3RhdGlzdGljcy5yZWZyZXNoKCk7CiAgICAgICAgIHRoaXMuX2JvdW5kYXJp
ZXNBcmVWYWxpZCA9IHRydWU7CiAgICAgfSwKIAotICAgIF91cGRhdGVCb3VuZGFyaWVzOiBmdW5j
dGlvbigpCisgICAgX3VwZGF0ZUJvdW5kYXJpZXM6IGZ1bmN0aW9uKHJlY29yZHMpCiAgICAgewog
ICAgICAgICB0aGlzLl9jYWxjdWxhdG9yLnJlc2V0KCk7Ci0gICAgICAgIHRoaXMuX2NhbGN1bGF0
b3Iud2luZG93TGVmdCA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLndpbmRvd0xlZnQ7Ci0gICAg
ICAgIHRoaXMuX2NhbGN1bGF0b3Iud2luZG93UmlnaHQgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2Rl
bC53aW5kb3dSaWdodDsKIAotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3Jvb3RS
ZWNvcmQuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdG9y
LnVwZGF0ZUJvdW5kYXJpZXModGhpcy5fcm9vdFJlY29yZC5jaGlsZHJlbltpXSk7CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgcmVjb3Jkcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRo
aXMuX2NhbGN1bGF0b3IudXBkYXRlQm91bmRhcmllcyhyZWNvcmRzW2ldKTsKIAotICAgICAgICB0
aGlzLl9jYWxjdWxhdG9yLmNhbGN1bGF0ZVdpbmRvdygpOworICAgICAgICB0aGlzLl9jYWxjdWxh
dG9yLnNldFdpbmRvdyh0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC53aW5kb3dUaW1lTGVmdCwgdGhp
cy5fcHJlc2VudGF0aW9uTW9kZWwud2luZG93VGltZVJpZ2h0KTsKICAgICB9LAogCiAgICAgX2Zp
bHRlclJlY29yZHM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciByZWNvcmRzSW5XaW5k
b3cgPSBbXTsKICAgICAgICAgdmFyIGZpbHRlciA9IHRoaXMuX3N0YXJ0QXRaZXJvID8gbmV3IFdl
Ykluc3BlY3Rvci5UaW1lbGluZVN0YXJ0QXRaZXJvUmVjb3JkRmlsdGVyKHRoaXMuX3ByZXNlbnRh
dGlvbk1vZGVsLCB0aGlzLl9yb290UmVjb3JkLCB0aGlzLl9zaG93U2hvcnRFdmVudHMpCi0gICAg
ICAgICAgICA6IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGaWx0ZXIodGhpcy5fY2Fs
Y3VsYXRvciwgdGhpcy5fc2hvd1Nob3J0RXZlbnRzKTsKKyAgICAgICAgICAgIDogbmV3IFdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZEZpbHRlcih0aGlzLl9wcmVzZW50YXRpb25Nb2RlbCwgdGhp
cy5fc2hvd1Nob3J0RXZlbnRzKTsKICAgICAgICAgdGhpcy5fcm9vdFJlY29yZC5fdmlzaWJsZVJl
Y29yZHNDb3VudCA9IDA7CiAKICAgICAgICAgdmFyIHN0YWNrID0gW3tjaGlsZHJlbjogdGhpcy5f
cm9vdFJlY29yZC5jaGlsZHJlbiwgaW5kZXg6IDAsIHBhcmVudElzQ29sbGFwc2VkOiBmYWxzZX1d
OwpAQCAtNzY5LDYgKzc2OCw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICBfcmVmcmVzaFJlY29yZHM6IGZ1bmN0aW9uKHVwZGF0ZUJvdW5kYXJpZXMpCiAg
ICAgewogICAgICAgICB2YXIgcmVjb3Jkc0luV2luZG93ID0gdGhpcy5fZmlsdGVyUmVjb3Jkcygp
OworICAgICAgICBpZiAodXBkYXRlQm91bmRhcmllcykKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0
ZUJvdW5kYXJpZXMocmVjb3Jkc0luV2luZG93KTsKIAogICAgICAgICAvLyBDYWxjdWxhdGUgdGhl
IHZpc2libGUgYXJlYS4KICAgICAgICAgdGhpcy5fc2Nyb2xsVG9wID0gdGhpcy5fY29udGFpbmVy
RWxlbWVudC5zY3JvbGxUb3A7CkBAIC04NDEsNyArODQyLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pdGVtc0dyYXBoc0VsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5fZXhwYW5kRWxlbWVudHMpOwogICAgICAgICB0aGlzLnNwbGl0Vmll
dy5zaWRlYmFyUmVzaXplckVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5zaWRlYmFyRWxlbWVu
dC5jbGllbnRIZWlnaHQgKyAicHgiOwogICAgICAgICAvLyBSZXNlcnZlIHNvbWUgcm9vbSBmb3Ig
ZXhwYW5kIC8gY29sbGFwc2UgY29udHJvbHMgdG8gdGhlIGxlZnQgZm9yIHJlY29yZHMgdGhhdCBz
dGFydCBhdCAwbXMuCi0gICAgICAgIHZhciB0aW1lbGluZVBhZGRpbmdMZWZ0ID0gdGhpcy5fY2Fs
Y3VsYXRvci53aW5kb3dMZWZ0ID09PSAwID8gdGhpcy5fZXhwYW5kT2Zmc2V0IDogMDsKKyAgICAg
ICAgdmFyIHRpbWVsaW5lUGFkZGluZ0xlZnQgPSB0aGlzLl9jYWxjdWxhdG9yLmlzV2luZG93QXRT
dGFydCgpID8gdGhpcy5fZXhwYW5kT2Zmc2V0IDogMDsKICAgICAgICAgaWYgKHVwZGF0ZUJvdW5k
YXJpZXMpCiAgICAgICAgICAgICB0aGlzLl90aW1lbGluZUdyaWQudXBkYXRlRGl2aWRlcnModHJ1
ZSwgdGhpcy5fY2FsY3VsYXRvciwgdGltZWxpbmVQYWRkaW5nTGVmdCk7CiAgICAgICAgIHRoaXMu
X2FkanVzdFNjcm9sbFBvc2l0aW9uKChyZWNvcmRzSW5XaW5kb3cubGVuZ3RoICsgMSkgKiByb3dI
ZWlnaHQpOwpAQCAtOTIwLDggKzkyMSw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZUNhdGVnb3J5
ID0gZnVuY3Rpb24obmFtZSwgdGl0bGUsIGNvbG9yKQogV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2Fs
Y3VsYXRvciA9IGZ1bmN0aW9uKCkKIHsKICAgICB0aGlzLnJlc2V0KCk7Ci0gICAgdGhpcy53aW5k
b3dMZWZ0ID0gMC4wOwotICAgIHRoaXMud2luZG93UmlnaHQgPSAxLjA7CiB9CiAKIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZUNhbGN1bGF0b3IucHJvdG90eXBlID0gewpAQCAtOTQ4LDEzICs5NDcsMTgg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2FsY3VsYXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHJldHVybiB7bGVmdDogbGVmdCwgd2lkdGg6IHdpZHRoLCB3aWR0aFdpdGhDaGlsZHJlbjogd2lk
dGhXaXRoQ2hpbGRyZW59OwogICAgIH0sCiAKLSAgICBjYWxjdWxhdGVXaW5kb3c6IGZ1bmN0aW9u
KCkKKyAgICBzZXRXaW5kb3c6IGZ1bmN0aW9uKGxlZnQsIHJpZ2h0KQogICAgIHsKLSAgICAgICAg
dGhpcy5taW5pbXVtQm91bmRhcnkgPSB0aGlzLl9hYnNvbHV0ZU1pbmltdW1Cb3VuZGFyeSArIHRo
aXMud2luZG93TGVmdCAqICh0aGlzLl9hYnNvbHV0ZU1heGltdW1Cb3VuZGFyeSAtIHRoaXMuX2Fi
c29sdXRlTWluaW11bUJvdW5kYXJ5KTsKLSAgICAgICAgdGhpcy5tYXhpbXVtQm91bmRhcnkgPSB0
aGlzLl9hYnNvbHV0ZU1pbmltdW1Cb3VuZGFyeSArIHRoaXMud2luZG93UmlnaHQgKiAodGhpcy5f
YWJzb2x1dGVNYXhpbXVtQm91bmRhcnkgLSB0aGlzLl9hYnNvbHV0ZU1pbmltdW1Cb3VuZGFyeSk7
CisgICAgICAgIHRoaXMubWluaW11bUJvdW5kYXJ5ID0gbGVmdCA/IGxlZnQgOiB0aGlzLl9hYnNv
bHV0ZU1pbmltdW1Cb3VuZGFyeTsKKyAgICAgICAgdGhpcy5tYXhpbXVtQm91bmRhcnkgPSByaWdo
dCA/IHJpZ2h0IDogdGhpcy5fYWJzb2x1dGVNYXhpbXVtQm91bmRhcnk7CiAgICAgICAgIHRoaXMu
Ym91bmRhcnlTcGFuID0gdGhpcy5tYXhpbXVtQm91bmRhcnkgLSB0aGlzLm1pbmltdW1Cb3VuZGFy
eTsKICAgICB9LAogCisgICAgaXNXaW5kb3dBdFN0YXJ0OiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5taW5pbXVtQm91bmRhcnkgPT09IHRoaXMuX2Fic29sdXRlTWluaW11
bUJvdW5kYXJ5OworICAgIH0sCisKICAgICByZXNldDogZnVuY3Rpb24oKQogICAgIHsKICAgICAg
ICAgdGhpcy5fYWJzb2x1dGVNaW5pbXVtQm91bmRhcnkgPSAtMTsKQEAgLTk4Nyw4ICs5OTEsNiBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yLnByb3RvdHlwZSA9IHsKIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVN0YXJ0QXRaZXJvQ2FsY3VsYXRvciA9IGZ1bmN0aW9uKCkKIHsKICAgICB0
aGlzLnJlc2V0KCk7Ci0gICAgdGhpcy53aW5kb3dMZWZ0ID0gMC4wOwotICAgIHRoaXMud2luZG93
UmlnaHQgPSAxLjA7CiB9CiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZVN0YXJ0QXRaZXJvQ2FsY3Vs
YXRvci5wcm90b3R5cGUgPSB7CkBAIC0xMDAyLDUyICsxMDA0LDM3IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVN0YXJ0QXRaZXJvQ2FsY3VsYXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH07CiAg
ICAgfSwKIAotICAgIGNvbXB1dGVCYXJHcmFwaFdpbmRvd1Bvc2l0aW9uOiBmdW5jdGlvbihyZWNv
cmQsIGNsaWVudFdpZHRoKQotICAgIHsKLSAgICAgICAgY29uc3QgbWluV2lkdGggPSA1OwotICAg
ICAgICBjb25zdCBib3JkZXJXaWR0aCA9IDQ7Ci0gICAgICAgIHZhciB3b3JraW5nQXJlYSA9IGNs
aWVudFdpZHRoIC0gbWluV2lkdGggLSBib3JkZXJXaWR0aDsKLSAgICAgICAgdmFyIHBlcmNlbnRh
Z2VzID0gdGhpcy5jb21wdXRlQmFyR3JhcGhQZXJjZW50YWdlcyhyZWNvcmQpOwotICAgICAgICB2
YXIgbGVmdCA9IHBlcmNlbnRhZ2VzLnN0YXJ0IC8gMTAwICogd29ya2luZ0FyZWE7Ci0gICAgICAg
IHZhciB3aWR0aCA9IChwZXJjZW50YWdlcy5lbmQgLSBwZXJjZW50YWdlcy5zdGFydCkgLyAxMDAg
KiB3b3JraW5nQXJlYSArIG1pbldpZHRoOwotICAgICAgICB2YXIgd2lkdGhXaXRoQ2hpbGRyZW4g
PSAgKHBlcmNlbnRhZ2VzLmVuZFdpdGhDaGlsZHJlbiAtIHBlcmNlbnRhZ2VzLnN0YXJ0KSAvIDEw
MCAqIHdvcmtpbmdBcmVhOwotICAgICAgICBpZiAocGVyY2VudGFnZXMuZW5kV2l0aENoaWxkcmVu
ID4gcGVyY2VudGFnZXMuZW5kKQotICAgICAgICAgICAgd2lkdGhXaXRoQ2hpbGRyZW4gKz0gYm9y
ZGVyV2lkdGggKyBtaW5XaWR0aDsKLQotICAgICAgICByZXR1cm4ge2xlZnQ6IGxlZnQsIHdpZHRo
OiB3aWR0aCwgd2lkdGhXaXRoQ2hpbGRyZW46IHdpZHRoV2l0aENoaWxkcmVufTsKLSAgICB9LAot
Ci0gICAgY2FsY3VsYXRlV2luZG93OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLm1p
bmltdW1Cb3VuZGFyeSA9IHRoaXMuX2Fic29sdXRlTWluaW11bUJvdW5kYXJ5OwotICAgICAgICB0
aGlzLm1heGltdW1Cb3VuZGFyeSA9IHRoaXMuX2Fic29sdXRlTWF4aW11bUJvdW5kYXJ5ICogMS4w
NTsKLSAgICAgICAgdGhpcy5ib3VuZGFyeVNwYW4gPSB0aGlzLm1heGltdW1Cb3VuZGFyeSA+PSAw
ID8gdGhpcy5tYXhpbXVtQm91bmRhcnkgOiAwOwotICAgIH0sCi0KICAgICByZXNldDogZnVuY3Rp
b24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fYWJzb2x1dGVNaW5pbXVtQm91bmRhcnkgPSAtMTsK
LSAgICAgICAgdGhpcy5fYWJzb2x1dGVNYXhpbXVtQm91bmRhcnkgPSAtMTsKKyAgICAgICAgdGhp
cy5taW5pbXVtQm91bmRhcnkgPSAtMTsKKyAgICAgICAgdGhpcy5tYXhpbXVtQm91bmRhcnkgPSAt
MTsKICAgICB9LAogCiAgICAgdXBkYXRlQm91bmRhcmllczogZnVuY3Rpb24ocmVjb3JkKQogICAg
IHsKICAgICAgICAgdmFyIGxvd2VyQm91bmQgPSByZWNvcmQuc3RhcnRUaW1lOwotICAgICAgICBp
ZiAodGhpcy5fYWJzb2x1dGVNaW5pbXVtQm91bmRhcnkgPT09IC0xIHx8IGxvd2VyQm91bmQgPCB0
aGlzLl9hYnNvbHV0ZU1pbmltdW1Cb3VuZGFyeSkKLSAgICAgICAgICAgIHRoaXMuX2Fic29sdXRl
TWluaW11bUJvdW5kYXJ5ID0gbG93ZXJCb3VuZDsKKyAgICAgICAgaWYgKHRoaXMubWluaW11bUJv
dW5kYXJ5ID09PSAtMSB8fCBsb3dlckJvdW5kIDwgdGhpcy5taW5pbXVtQm91bmRhcnkpCisgICAg
ICAgICAgICB0aGlzLm1pbmltdW1Cb3VuZGFyeSA9IGxvd2VyQm91bmQ7CiAKICAgICAgICAgY29u
c3QgbWluaW11bVRpbWVGcmFtZSA9IDAuMDAxOwogICAgICAgICB2YXIgdXBwZXJCb3VuZCA9IE1h
dGgubWF4KHJlY29yZC5lbmRUaW1lIC0gcmVjb3JkLnN0YXJ0VGltZSwgbWluaW11bVRpbWVGcmFt
ZSk7Ci0gICAgICAgIGlmICh0aGlzLl9hYnNvbHV0ZU1heGltdW1Cb3VuZGFyeSA9PT0gLTEgfHwg
dXBwZXJCb3VuZCA+IHRoaXMuX2Fic29sdXRlTWF4aW11bUJvdW5kYXJ5KQotICAgICAgICAgICAg
dGhpcy5fYWJzb2x1dGVNYXhpbXVtQm91bmRhcnkgPSB1cHBlckJvdW5kOworICAgICAgICBpZiAo
dGhpcy5tYXhpbXVtQm91bmRhcnkgPT09IC0xIHx8IHVwcGVyQm91bmQgPiB0aGlzLm1heGltdW1C
b3VuZGFyeSkKKyAgICAgICAgICAgIHRoaXMubWF4aW11bUJvdW5kYXJ5ID0gdXBwZXJCb3VuZDsK
KyAgICAgICAgdGhpcy5ib3VuZGFyeVNwYW4gPSB0aGlzLm1heGltdW1Cb3VuZGFyeSA+PSAwID8g
dGhpcy5tYXhpbXVtQm91bmRhcnkgOiAwOwogICAgIH0sCiAKICAgICBmb3JtYXRWYWx1ZTogZnVu
Y3Rpb24odmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gTnVtYmVyLnNlY29uZHNUb1N0cmlu
Zyh2YWx1ZSwgdHJ1ZSk7CisgICAgfSwKKworICAgIHNldFdpbmRvdzogZnVuY3Rpb24oKQorICAg
IHsKICAgICB9CiB9OwogCitXZWJJbnNwZWN0b3IuVGltZWxpbmVTdGFydEF0WmVyb0NhbGN1bGF0
b3IucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZUNhbGN1bGF0b3Iu
cHJvdG90eXBlOworCiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICovCkBAIC0xNjYyLDggKzE2NDks
OCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMgPSB7CiBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAg
cmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMud2luZG93TGVmdCA9IDAuMDsK
LSAgICAgICAgdGhpcy53aW5kb3dSaWdodCA9IDEuMDsKKyAgICAgICAgdGhpcy53aW5kb3dUaW1l
TGVmdCA9IDAuMDsKKyAgICAgICAgdGhpcy53aW5kb3dUaW1lUmlnaHQgPSBudWxsOwogICAgICAg
ICB0aGlzLndpbmRvd0luZGV4TGVmdCA9IDA7CiAgICAgICAgIHRoaXMud2luZG93SW5kZXhSaWdo
dCA9IG51bGw7CiAgICAgfSwKQEAgLTE2ODMsMTIgKzE2NzAsMTIgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogCiAgICAgLyoqCiAgICAgICog
QHBhcmFtIHtudW1iZXJ9IGxlZnQKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gcmlnaHQKKyAgICAg
KiBAcGFyYW0gez9udW1iZXJ9IHJpZ2h0CiAgICAgICovCi0gICAgc2V0V2luZG93UG9zaXRpb246
IGZ1bmN0aW9uKGxlZnQsIHJpZ2h0KQorICAgIHNldFdpbmRvd1RpbWVzOiBmdW5jdGlvbihsZWZ0
LCByaWdodCkKICAgICB7Ci0gICAgICAgIHRoaXMud2luZG93TGVmdCA9IGxlZnQ7Ci0gICAgICAg
IHRoaXMud2luZG93UmlnaHQgPSByaWdodDsKKyAgICAgICAgdGhpcy53aW5kb3dUaW1lTGVmdCA9
IGxlZnQ7CisgICAgICAgIHRoaXMud2luZG93VGltZVJpZ2h0ID0gcmlnaHQ7CiAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRh
dGlvbk1vZGVsLkV2ZW50cy5XaW5kb3dDaGFuZ2VkKTsKICAgICB9LAogCkBAIC0xNzE2LDEyICsx
NzAzLDEzIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlw
ZSA9IHsKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRp
bWVsaW5lQ2FsY3VsYXRvcn0gY2FsY3VsYXRvcgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQcmVzZW50YXRpb25Nb2RlbH0gbW9kZWwKICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvd1No
b3J0RXZlbnRzCiAgKi8KLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZpbHRlciA9IGZ1bmN0
aW9uKGNhbGN1bGF0b3IsIHNob3dTaG9ydEV2ZW50cykKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZEZpbHRlciA9IGZ1bmN0aW9uKG1vZGVsLCBzaG93U2hvcnRFdmVudHMpCiB7Ci0gICAgdGhp
cy5fY2FsY3VsYXRvciA9IGNhbGN1bGF0b3I7CisgICAgdGhpcy5fd2luZG93VGltZUxlZnQgPSBt
b2RlbC53aW5kb3dUaW1lTGVmdDsKKyAgICB0aGlzLl93aW5kb3dUaW1lUmlnaHQgPSBtb2RlbC53
aW5kb3dUaW1lUmlnaHQ7CiAgICAgdGhpcy5fc2hvd1Nob3J0RXZlbnRzID0gc2hvd1Nob3J0RXZl
bnRzOwogfQogCkBAIC0xNzM1LDggKzE3MjMsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRGaWx0ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBpZiAoIXRoaXMuX3Nob3dTaG9ydEV2ZW50cyAmJiAhcmVjb3JkLmlzTG9uZygpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB2YXIgcGVyY2VudGFnZXMgPSB0aGlzLl9jYWxj
dWxhdG9yLmNvbXB1dGVCYXJHcmFwaFBlcmNlbnRhZ2VzKHJlY29yZCk7Ci0gICAgICAgIHJldHVy
biBwZXJjZW50YWdlcy5zdGFydCA8PSAxMDAgJiYgcGVyY2VudGFnZXMuZW5kV2l0aENoaWxkcmVu
ID49IDA7CisgICAgICAgIHJldHVybiAodHlwZW9mIHRoaXMuX3dpbmRvd1RpbWVSaWdodCAhPT0g
Im51bWJlciIgfHwgcmVjb3JkLnN0YXJ0VGltZSA8PSB0aGlzLl93aW5kb3dUaW1lUmlnaHQpICYm
IHJlY29yZC5fbGFzdENoaWxkRW5kVGltZSA+PSB0aGlzLl93aW5kb3dUaW1lTGVmdDsKICAgICB9
CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>