<?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>75278</bug_id>
          
          <creation_ts>2011-12-27 16:23:41 -0800</creation_ts>
          <short_desc>REGRESSION(r103734): Broke cr-mac (Requested by dslomov on #webkit).</short_desc>
          <delta_ts>2011-12-27 16:39:25 -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>66509</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>dslomov</cc>
    
    <cc>levin</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>527498</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-27 16:23:41 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/103734 broke the build:
Broke cr-mac (Requested by dslomov on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527499</commentid>
    <comment_count>1</comment_count>
      <attachid>120623</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-27 16:24:10 -0800</bug_when>
    <thetext>Created attachment 120623
ROLLOUT of r103734

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527500</commentid>
    <comment_count>2</comment_count>
      <attachid>120623</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-27 16:33:40 -0800</bug_when>
    <thetext>Comment on attachment 120623
ROLLOUT of r103734

Clearing flags on attachment: 120623

Committed r103741: &lt;http://trac.webkit.org/changeset/103741&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527501</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-27 16:33:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527502</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-27 16:39:25 -0800</bug_when>
    <thetext>Also broke Windows build: http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Win%20Builder/builds/18196/steps/compile/logs/stdio</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120623</attachid>
            <date>2011-12-27 16:24:10 -0800</date>
            <delta_ts>2011-12-27 16:33:40 -0800</delta_ts>
            <desc>ROLLOUT of r103734</desc>
            <filename>bug-75278-20111228002440.patch</filename>
            <type>text/plain</type>
            <size>85022</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGMyMzM0YzQ3ZmRmZjhjYzA3MjFhZGZlNGU2OGZmNzllNDMwMTJmY2IuLjMyMDI0ZWJlOGMzOTdk
YjgyOGQ5NDgxNTMzNmFkNWE3YWRjY2Y5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsOTkgQEAKKzIwMTEtMTItMjcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDM3MzQu
CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEwMzczNAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUyNzgKKworICAgICAg
ICBCcm9rZSBjci1tYWMgKFJlcXVlc3RlZCBieSBkc2xvbW92IG9uICN3ZWJraXQpLgorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQ29tbW9uV29ya2VyQ2xpZW50
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbW1vbldvcmtlckNsaWVudDo6cG9zdENvbnNvbGVN
ZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21tb25Xb3JrZXJD
bGllbnQ6OmFsbG93RmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbW1vbldvcmtl
ckNsaWVudDo6b3BlbkZpbGVTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21tb25Xb3Jr
ZXJDbGllbnQ6OmRpc3BhdGNoRGV2VG9vbHNNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29tbW9uV29ya2VyQ2xpZW50OjpzYXZlRGV2VG9vbHNBZ2VudFN0YXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29tbW9uV29ya2VyQ2xpZW50Ojp+V2ViQ29tbW9uV29ya2VyQ2xpZW50KToKKyAg
ICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVDbGllbnQ6OmNyZWF0ZVdvcmtlcik6CisgICAgICAgICogcHVibGljL1dlYlNoYXJlZFdvcmtl
ci5oOgorICAgICAgICAqIHB1YmxpYy9XZWJTaGFyZWRXb3JrZXJDbGllbnQuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwdWJsaWMvV2ViV29ya2VyQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YldvcmtlckNsaWVudDo6fldlYldvcmtlckNsaWVudCk6CisgICAgICAgICogc3JjL0RhdGFiYXNl
T2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBbGxvd0RhdGFiYXNlTWFpblRocmVhZEJy
aWRnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6QWxsb3dEYXRhYmFzZU1haW5UaHJlYWRC
cmlkZ2U6OkFsbG93RGF0YWJhc2VNYWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAgKFdlYktpdDo6
QWxsb3dEYXRhYmFzZU1haW5UaHJlYWRCcmlkZ2U6OmFsbG93RGF0YWJhc2VUYXNrKToKKyAgICAg
ICAgKFdlYktpdDo6YWxsb3dEYXRhYmFzZUZvcldvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZU9ic2VydmVyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZSk6CisgICAgICAgICogc3JjL0lE
QkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJGYWN0b3J5QmFj
a2VuZFByb3h5OjpvcGVuRnJvbVdvcmtlcik6CisgICAgICAgICogc3JjL0xvY2FsRmlsZVN5c3Rl
bUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GaWxlU3lzdGVtSGVscGVyKToK
KyAgICAgICAgKiBzcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlNoYXJlZFdvcmtlckltcGw6OldlYlNoYXJlZFdvcmtlckltcGwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXJJbXBsOjp+V2ViU2hhcmVkV29ya2VySW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlckltcGw6OmNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNoYXJlZFdvcmtlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBzcmMvV2ViU2hhcmVkV29ya2Vy
SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJJbXBsOjpjb21tb25DbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJJbXBsOjpuZXdDb21tb25DbGll
bnQpOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
aW5pdGlhbGl6ZVdlYktpdFN0YXRpY1ZhbHVlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtl
ckJhc2U6OldlYldvcmtlckJhc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjp+
V2ViV29ya2VyQmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OnN0b3BXb3Jr
ZXJUaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjppbml0aWFsaXplTG9h
ZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9NYWlu
VGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6aW52b2tlVGFza01ldGhv
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OmRpZENyZWF0ZURhdGFTb3VyY2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpjcmVhdGVBcHBsaWNhdGlvbkNhY2hl
SG9zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OnBvc3RNZXNzYWdlVG9Xb3Jr
ZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpwb3N0TWVzc2FnZVRh
c2spOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpwb3N0RXhjZXB0aW9uVG9Xb3Jr
ZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpwb3N0RXhjZXB0aW9u
VGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2Fn
ZVRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6cG9zdENv
bnNvbGVNZXNzYWdlVGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OnBvc3RN
ZXNzYWdlVG9QYWdlSW5zcGVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6
cG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3JUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29y
a2VyQmFzZTo6dXBkYXRlSW5zcGVjdG9yU3RhdGVDb29raWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJXb3JrZXJCYXNlOjp1cGRhdGVJbnNwZWN0b3JTdGF0ZUNvb2tpZVRhc2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpjb25maXJtTWVzc2FnZVRhc2spOgorICAg
ICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHlUYXNrKToK
KyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6d29ya2VyQ29udGV4dENsb3NlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OndvcmtlckNvbnRleHRDbG9zZWRUYXNrKToK
KyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6d29ya2VyQ29udGV4dERlc3Ryb3llZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OndvcmtlckNvbnRleHREZXN0cm95ZWRU
YXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6cG9zdFRhc2tUb0xvYWRlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
Q29udGV4dCk6CisgICAgICAgICogc3JjL1dlYldvcmtlckJhc2UuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViV29ya2VyQmFzZTo6dmlldyk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6
OnNldFdvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6Ondvcmtl
clRocmVhZCk6CisgICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwOgorICAgICAg
ICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtl
ckNsaWVudEltcGw6Om5ld0NvbW1vbkNsaWVudCk6CisgICAgICAgICogc3JjL1dlYldvcmtlcklt
cGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJXb3JrZXJJbXBsOjpXZWJXb3JrZXJJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViV29ya2VySW1wbDo6fldlYldvcmtlckltcGwpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJXb3JrZXJJbXBsOjpuZXdDb21tb25DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3Jr
ZXJJbXBsOjpjb21tb25DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJJbXBsOjpw
b3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dFRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3Jr
ZXJJbXBsOjpzdGFydFdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJJ
bXBsOjp0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2Vy
SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJX
b3JrZXJJbXBsOjp3b3JrZXJPYmplY3REZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJX
b3JrZXJJbXBsOjpjbGllbnREZXN0cm95ZWQpOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJJbXBs
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2Uu
Y3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJJbXBsOjpjbGllbnQpOgorICAgICAgICAq
IHNyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdE9wZW5GaWxlU3lzdGVtVG9N
YWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZTo6b3BlbkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQpOgorICAgICAgICAqIHNyYy9Xb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmg6CisKIDIwMTEtMTItMjcgIERtaXRyeSBMb21vdiAg
PGRzbG9tb3ZAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbV2ViV29ya2Vyc11bQ2hyb21pdW1dIFJl
bW92ZSByZW1haW5zIG9mIGNyb3NzLXByb2Nlc3MgZGVkaWNhdGVkIHdvcmtlciBpbXBsZW1lbnRh
dGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBkMmMyNzAxMWZlM2JjZmFjOTQ0
NmI3OGI1NGNkYmY4NmJjOGVlNzM3Li4yYmE0ZjQ0MDdlMmYyMDM5ZjM2OTg1OWUyNjcxYTMxOTRh
ZTBiN2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yMzUsNyArMjM1LDYgQEAK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNlY3VyaXR5UG9saWN5LmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViU2VsZWN0RWxlbWVudC5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlNldHRpbmdzLmgnLAotICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2hhcmVkV29y
a2VyQ2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2hhcmVkV29ya2VyLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNvY2tldC5oJywKQEAgLTY2Niw2ICs2NjUsOCBA
QAogICAgICAgICAgICAgICAgICdzcmMvV2ViV29ya2VyQmFzZS5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YldvcmtlckNsaWVudEltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJJbXBs
LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJJbXBsLmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViV29ya2VyUnVuTG9vcC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uV29ya2VyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb25Xb3JrZXJDbGllbnQuaAppbmRleCAyZmZiNTRk
NTdhM2YzN2IwY2MyZWY3YzhmZjY4ZmJhYjhlOGI0MzBjLi5hNzk0NTM5ZTkxMzhmYTVhMjljNDIz
M2RjZDA4NzkxMWRlY2UxYTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJDb21tb25Xb3JrZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJDb21tb25Xb3JrZXJDbGllbnQuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBX
ZWJTdHJpbmc7CiBjbGFzcyBXZWJXb3JrZXI7CiBjbGFzcyBXZWJXb3JrZXJDbGllbnQ7CiAKLWNs
YXNzIFdlYkNvbW1vbldvcmtlckNsaWVudCB7CitjbGFzcyBOZXdXZWJDb21tb25Xb3JrZXJDbGll
bnQgewogcHVibGljOgogICAgIC8vIENhbGxlZCBvbiB0aGUgbWFpbiB3ZWJraXQgdGhyZWFkIGJl
Zm9yZSBvcGVuaW5nIGEgd2ViIGRhdGFiYXNlLgogICAgIHZpcnR1YWwgYm9vbCBhbGxvd0RhdGFi
YXNlKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRp
c3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpID0gMDsKQEAgLTU2LDYgKzU2
LDY2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5
c3RlbTo6VHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzKikgPSAwOwogfTsKIAorLy8gUHJvdmlkZXMgYW4gaW50ZXJmYWNlIGJhY2sgdG8gdGhl
IGluLXBhZ2Ugc2NyaXB0IG9iamVjdCBmb3IgYSB3b3JrZXIuCisvLyBUaGlzIGludGVyZmFjZSBj
b250YWlucyBjb21tb24gQVBJcyB1c2VkIGJ5IGJvdGggc2hhcmVkIGFuZCBkZWRpY2F0ZWQKKy8v
IHdvcmtlcnMuCisvLyBBbGwgZnVuY3Rpb25zIGFyZSBleHBlY3RlZCB0byBiZSBjYWxsZWQgYmFj
ayBvbiB0aGUgdGhyZWFkIHRoYXQgY3JlYXRlZAorLy8gdGhlIFdvcmtlciBvYmplY3QsIHVubGVz
cyBub3RlZC4KK2NsYXNzIFdlYkNvbW1vbldvcmtlckNsaWVudCA6IHB1YmxpYyBOZXdXZWJDb21t
b25Xb3JrZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBwb3N0RXhjZXB0aW9u
VG9Xb3JrZXJPYmplY3QoCisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZXJyb3JTdHJpbmcsIGlu
dCBsaW5lTnVtYmVyLAorICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOwor
CisgICAgLy8gRklYTUU6IHRoZSBiZWxvdyBpcyBmb3IgY29tcGF0aWJpbGl0eSBvbmx5IGFuZCBz
aG91bGQgYmUgICAKKyAgICAvLyByZW1vdmVkIG9uY2UgQ2hyb21pdW0gaXMgdXBkYXRlZCB0byBy
ZW1vdmUgbWVzc2FnZQorICAgIC8vIGRlc3RpbmF0aW9uIHBhcmFtZXRlciA8aHR0cDovL3dlYmtp
dC5vcmcvYi8zNzE1NT4uCisgICAgdmlydHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29y
a2VyT2JqZWN0KGludCwgaW50IHNvdXJjZUlkZW50aWZpZXIsIGludCBtZXNzYWdlVHlwZSwgaW50
IG1lc3NhZ2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3Qg
V2ViU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29s
ZU1lc3NhZ2VUb1dvcmtlck9iamVjdChpbnQgc291cmNlSWRlbnRpZmllciwgaW50IG1lc3NhZ2VU
eXBlLCBpbnQgbWVzc2FnZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVy
LCBjb25zdCBXZWJTdHJpbmcmIHNvdXJjZVVSTCkKKyAgICB7CisgICAgICAgIHBvc3RDb25zb2xl
TWVzc2FnZVRvV29ya2VyT2JqZWN0KDAsIHNvdXJjZUlkZW50aWZpZXIsIG1lc3NhZ2VUeXBlLCBt
ZXNzYWdlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IHdvcmtlckNvbnRleHRDbG9zZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdvcmtlckNvbnRl
eHREZXN0cm95ZWQoKSA9IDA7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBub3RpZmljYXRpb24gcHJl
c2VudGVyIGZvciB0aGlzIHdvcmtlciBjb250ZXh0LiAgUG9pbnRlcgorICAgIC8vIGlzIG93bmVk
IGJ5IHRoZSBvYmplY3QgaW1wbGVtZW50aW5nIFdlYkNvbW1vbldvcmtlckNsaWVudC4KKyAgICB2
aXJ0dWFsIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCkg
PSAwOworCisgICAgLy8gVGhpcyBjYW4gYmUgY2FsbGVkIG9uIGFueSB0aHJlYWQgdG8gY3JlYXRl
IGEgbmVzdGVkIFdlYldvcmtlci4KKyAgICAvLyBXZWJTaGFyZWRXb3JrZXJzIGFyZSBub3QgaW5z
dGFudGlhdGVkIHZpYSB0aGlzIEFQSSAtIGluc3RlYWQKKyAgICAvLyB0aGV5IGFyZSBjcmVhdGVk
IHZpYSB0aGUgV2ViU2hhcmVkV29ya2VyUmVwb3NpdG9yeS4KKyAgICB2aXJ0dWFsIFdlYldvcmtl
ciogY3JlYXRlV29ya2VyKFdlYldvcmtlckNsaWVudCogY2xpZW50KSA9IDA7CisKKyAgICAvLyBD
YWxsZWQgb24gdGhlIG1haW4gd2Via2l0IHRocmVhZCBpbiB0aGUgd29ya2VyIHByb2Nlc3MgZHVy
aW5nIGluaXRpYWxpemF0aW9uLgorICAgIHZpcnR1YWwgV2ViQXBwbGljYXRpb25DYWNoZUhvc3Qq
IGNyZWF0ZUFwcGxpY2F0aW9uQ2FjaGVIb3N0KFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50
KikgPSAwOworCisgICAgLy8gQ2FsbGVkIG9uIHRoZSBtYWluIHdlYmtpdCB0aHJlYWQgYmVmb3Jl
IG9wZW5pbmcgYSB3ZWIgZGF0YWJhc2UuCisgICAgdmlydHVhbCBib29sIGFsbG93RGF0YWJhc2Uo
V2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgZGlzcGxh
eU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkgPSAwOworCisgICAgLy8gQ2FsbGVk
IG9uIHRoZSBtYWluIHdlYmtpdCB0aHJlYWQgYmVmb3JlIG9wZW5pbmcgYSBmaWxlIHN5c3RlbS4K
KyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dGaWxlU3lzdGVtKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIC8vIENhbGxlZCBvbiB0aGUgbWFpbiB3ZWJraXQgdGhyZWFk
IGJlZm9yZSBvcGVuaW5nIGEgZmlsZSBzeXN0ZW0uCisgICAgdmlydHVhbCB2b2lkIG9wZW5GaWxl
U3lzdGVtKFdlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwg
V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopCisgICAgeworICAgICAgICBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGV2VG9vbHNN
ZXNzYWdlKGNvbnN0IFdlYlN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzYXZlRGV2VG9v
bHNBZ2VudFN0YXRlKGNvbnN0IFdlYlN0cmluZyYpIHsgfQorCitwcm90ZWN0ZWQ6CisgICAgfldl
YkNvbW1vbldvcmtlckNsaWVudCgpIHsgfQorfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCmluZGV4
IDk0YWJlODNmYjBhODIxODY4YjAwYzI5OWZhZDE3NTJlZDYzMDQ3ZWEuLmNhZTZhZmE4YTRlMGQz
YmIzODZiYWZkOTIxMzIzY2Y2Y2JjMWZhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaApAQCAtNjksNyArNjksNyBAQCBjbGFzcyBXZWJVUkxM
b2FkZXI7CiBjbGFzcyBXZWJVUkxSZXF1ZXN0OwogY2xhc3MgV2ViVVJMUmVzcG9uc2U7CiBjbGFz
cyBXZWJXb3JrZXI7Ci1jbGFzcyBXZWJTaGFyZWRXb3JrZXJDbGllbnQ7CitjbGFzcyBXZWJXb3Jr
ZXJDbGllbnQ7CiBzdHJ1Y3QgV2ViUGx1Z2luUGFyYW1zOwogc3RydWN0IFdlYlJlY3Q7CiBzdHJ1
Y3QgV2ViU2l6ZTsKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViUGx1
Z2luKiBjcmVhdGVQbHVnaW4oV2ViRnJhbWUqLCBjb25zdCBXZWJQbHVnaW5QYXJhbXMmKSB7IHJl
dHVybiAwOyB9CiAKICAgICAvLyBNYXkgcmV0dXJuIG51bGwuCi0gICAgdmlydHVhbCBXZWJXb3Jr
ZXIqIGNyZWF0ZVdvcmtlcihXZWJGcmFtZSosIFdlYlNoYXJlZFdvcmtlckNsaWVudCopIHsgcmV0
dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFdlYldvcmtlciogY3JlYXRlV29ya2VyKFdlYkZyYW1lKiwg
V2ViV29ya2VyQ2xpZW50KikgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gTWF5IHJldHVybiBudWxs
LgogICAgIHZpcnR1YWwgV2ViU2hhcmVkV29ya2VyKiBjcmVhdGVTaGFyZWRXb3JrZXIoV2ViRnJh
bWUqLCBjb25zdCBXZWJVUkwmLCBjb25zdCBXZWJTdHJpbmcmLCB1bnNpZ25lZCBsb25nIGxvbmcp
IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlNoYXJlZFdvcmtlci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2hh
cmVkV29ya2VyLmgKaW5kZXggNDQ3ZjdmNDg2NzExM2U5YmFlMDA4ZGZjMTNmOTYwYzczZWZiOTY5
Ny4uN2Q1ZDAwMzVhMzhiNTA1N2U5Y2ZiOGE0OTZlYmFkMjJlZDYyYmE3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2hhcmVkV29ya2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2hhcmVkV29ya2VyLmgKQEAgLTQxLDcgKzQx
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlN0cmluZzsKIGNsYXNzIFdlYk1l
c3NhZ2VQb3J0Q2hhbm5lbDsKLWNsYXNzIFdlYlNoYXJlZFdvcmtlckNsaWVudDsKK2NsYXNzIFdl
YkNvbW1vbldvcmtlckNsaWVudDsKIGNsYXNzIFdlYlVSTDsKIAogLy8gVGhpcyBpcyB0aGUgaW50
ZXJmYWNlIHRvIGEgU2hhcmVkV29ya2VyIHRocmVhZC4KQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3Mg
V2ViVVJMOwogY2xhc3MgV2ViU2hhcmVkV29ya2VyIHsKIHB1YmxpYzoKICAgICAvLyBJbnZva2Vk
IGZyb20gdGhlIHdvcmtlciB0aHJlYWQgdG8gaW5zdGFudGlhdGUgYSBXZWJTaGFyZWRXb3JrZXIg
dGhhdCBpbnRlcmFjdHMgd2l0aCB0aGUgV2ViS2l0IHdvcmtlciBjb21wb25lbnRzLgotICAgIFdF
QktJVF9FWFBPUlQgc3RhdGljIFdlYlNoYXJlZFdvcmtlciogY3JlYXRlKFdlYlNoYXJlZFdvcmtl
ckNsaWVudCopOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlNoYXJlZFdvcmtlciogY3Jl
YXRlKFdlYkNvbW1vbldvcmtlckNsaWVudCopOwogCiAgICAgdmlydHVhbCB+V2ViU2hhcmVkV29y
a2VyKCkge307CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNoYXJlZFdvcmtlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
U2hhcmVkV29ya2VyQ2xpZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNzAw
YzZjMWI3NjVlZjBmMzhhMTU1MmE3ZTMzYzRmZjJkZDdhZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU2hhcmVkV29ya2VyQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgV2ViU2hhcmVkV29ya2VyQ2xpZW50X2gKLSNkZWZpbmUgV2ViU2hhcmVkV29ya2VyQ2xp
ZW50X2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbldvcmtlckNsaWVudC5oIgotI2luY2x1ZGUgIldl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2Vi
Tm90aWZpY2F0aW9uUHJlc2VudGVyOwotY2xhc3MgV2ViU3RyaW5nOwotY2xhc3MgV2ViV29ya2Vy
OwotCi0vLyBQcm92aWRlcyBhbiBpbnRlcmZhY2UgYmFjayB0byB0aGUgaW4tcGFnZSBzY3JpcHQg
b2JqZWN0IGZvciBhIHdvcmtlci4KLS8vIEFsbCBmdW5jdGlvbnMgYXJlIGV4cGVjdGVkIHRvIGJl
IGNhbGxlZCBiYWNrIG9uIHRoZSB0aHJlYWQgdGhhdCBjcmVhdGVkCi0vLyB0aGUgV29ya2VyIG9i
amVjdCwgdW5sZXNzIG5vdGVkLgotY2xhc3MgV2ViU2hhcmVkV29ya2VyQ2xpZW50IDogcHVibGlj
IFdlYkNvbW1vbldvcmtlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RN
ZXNzYWdlVG9Xb3JrZXJPYmplY3QoCi0gICAgICAgIGNvbnN0IFdlYlN0cmluZyYsCi0gICAgICAg
IGNvbnN0IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5JikgPSAwOwotCi0gICAgdmlydHVhbCB2
b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQ
ZW5kaW5nQWN0aXZpdHkpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBwb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3QoCi0gICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBs
aW5lTnVtYmVyLAotICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOwotCi0g
ICAgLy8gRklYTUU6IHRoZSBiZWxvdyBpcyBmb3IgY29tcGF0aWJpbGl0eSBvbmx5IGFuZCBzaG91
bGQgYmUgICAKLSAgICAvLyByZW1vdmVkIG9uY2UgQ2hyb21pdW0gaXMgdXBkYXRlZCB0byByZW1v
dmUgbWVzc2FnZQotICAgIC8vIGRlc3RpbmF0aW9uIHBhcmFtZXRlciA8aHR0cDovL3dlYmtpdC5v
cmcvYi8zNzE1NT4uCi0gICAgdmlydHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2Vy
T2JqZWN0KGludCwgaW50IHNvdXJjZUlkZW50aWZpZXIsIGludCBtZXNzYWdlVHlwZSwgaW50IG1l
c3NhZ2VMZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgV2Vi
U3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1l
c3NhZ2VUb1dvcmtlck9iamVjdChpbnQgc291cmNlSWRlbnRpZmllciwgaW50IG1lc3NhZ2VUeXBl
LCBpbnQgbWVzc2FnZUxldmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBj
b25zdCBXZWJTdHJpbmcmIHNvdXJjZVVSTCkKLSAgICB7Ci0gICAgICAgIHBvc3RDb25zb2xlTWVz
c2FnZVRvV29ya2VyT2JqZWN0KDAsIHNvdXJjZUlkZW50aWZpZXIsIG1lc3NhZ2VUeXBlLCBtZXNz
YWdlTGV2ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3Nh
Z2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHdv
cmtlckNvbnRleHRDbG9zZWQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdvcmtlckNvbnRleHRE
ZXN0cm95ZWQoKSA9IDA7Ci0KLSAgICAvLyBSZXR1cm5zIHRoZSBub3RpZmljYXRpb24gcHJlc2Vu
dGVyIGZvciB0aGlzIHdvcmtlciBjb250ZXh0LiBQb2ludGVyCi0gICAgLy8gaXMgb3duZWQgYnkg
dGhlIG9iamVjdCBpbXBsZW1lbnRpbmcgV2ViQ29tbW9uV29ya2VyQ2xpZW50LgotICAgIHZpcnR1
YWwgV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKSA9IDA7
Ci0KLSAgICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgb24gYW55IHRocmVhZCB0byBjcmVhdGUgYSBu
ZXN0ZWQgV2ViV29ya2VyLgotICAgIC8vIFdlYlNoYXJlZFdvcmtlcnMgYXJlIG5vdCBpbnN0YW50
aWF0ZWQgdmlhIHRoaXMgQVBJIC0gaW5zdGVhZAotICAgIC8vIHRoZXkgYXJlIGNyZWF0ZWQgdmlh
IHRoZSBXZWJTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LgotICAgIHZpcnR1YWwgV2ViV29ya2VyKiBj
cmVhdGVXb3JrZXIoV2ViU2hhcmVkV29ya2VyQ2xpZW50KikgPSAwOwotCi0gICAgLy8gQ2FsbGVk
IG9uIHRoZSBtYWluIHdlYmtpdCB0aHJlYWQgaW4gdGhlIHdvcmtlciBwcm9jZXNzIGR1cmluZyBp
bml0aWFsaXphdGlvbi4KLSAgICB2aXJ0dWFsIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBjcmVh
dGVBcHBsaWNhdGlvbkNhY2hlSG9zdChXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudCopID0g
MDsKLQotICAgIC8vIENhbGxlZCBvbiB0aGUgbWFpbiB3ZWJraXQgdGhyZWFkIGJlZm9yZSBvcGVu
aW5nIGEgd2ViIGRhdGFiYXNlLgotICAgIHZpcnR1YWwgYm9vbCBhbGxvd0RhdGFiYXNlKFdlYkZy
YW1lKiwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRpc3BsYXlOYW1l
LCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpID0gMDsKLQotICAgIC8vIENhbGxlZCBvbiB0
aGUgbWFpbiB3ZWJraXQgdGhyZWFkIGJlZm9yZSBvcGVuaW5nIGEgZmlsZSBzeXN0ZW0uCi0gICAg
dmlydHVhbCBib29sIGFsbG93RmlsZVN5c3RlbSgpCi0gICAgewotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0KLSAgICAvLyBDYWxsZWQgb24gdGhlIG1haW4gd2Via2l0IHRocmVhZCBiZWZv
cmUgb3BlbmluZyBhIGZpbGUgc3lzdGVtLgotICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5c3Rl
bShXZWJGaWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdlYkZp
bGVTeXN0ZW1DYWxsYmFja3MqKQotICAgIHsKLSAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERldlRvb2xzTWVzc2Fn
ZShjb25zdCBXZWJTdHJpbmcmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZURldlRvb2xzQWdl
bnRTdGF0ZShjb25zdCBXZWJTdHJpbmcmKSB7IH0KLQotcHJvdGVjdGVkOgotICAgIH5XZWJTaGFy
ZWRXb3JrZXJDbGllbnQoKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV29ya2VyQ2xpZW50LmgK
aW5kZXggNTk2OTk5ZGRjMzkzOTMxOTQ0NWM4ZDViOTFmM2UzNzgyNGJmMWY2ZS4uZWIyZTYzZTVj
ZTkzM2YzMzFiZjAwYTJjYTU2YjhmMzM2OGQ1NDQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViV29ya2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViV29ya2VyQ2xpZW50LmgKQEAgLTMxLDggKzMxLDMxIEBACiAjaWZu
ZGVmIFdlYldvcmtlckNsaWVudF9oCiAjZGVmaW5lIFdlYldvcmtlckNsaWVudF9oCiAKLSNpbmNs
dWRlICJXZWJTaGFyZWRXb3JrZXJDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJDb21tb25Xb3JrZXJD
bGllbnQuaCIKKyNpbmNsdWRlICJXZWJNZXNzYWdlUG9ydENoYW5uZWwuaCIKIAotI2RlZmluZSBX
ZWJXb3JrZXJDbGllbnQgV2ViU2hhcmVkV29ya2VyQ2xpZW50CituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOworY2xhc3MgV2ViU3RyaW5nOworY2xh
c3MgV2ViV29ya2VyOworCisvLyBQcm92aWRlcyBhbiBpbnRlcmZhY2UgYmFjayB0byB0aGUgaW4t
cGFnZSBzY3JpcHQgb2JqZWN0IGZvciBhIHdvcmtlci4KKy8vIEFsbCBmdW5jdGlvbnMgYXJlIGV4
cGVjdGVkIHRvIGJlIGNhbGxlZCBiYWNrIG9uIHRoZSB0aHJlYWQgdGhhdCBjcmVhdGVkCisvLyB0
aGUgV29ya2VyIG9iamVjdCwgdW5sZXNzIG5vdGVkLgorY2xhc3MgV2ViV29ya2VyQ2xpZW50IDog
cHVibGljIFdlYkNvbW1vbldvcmtlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lk
IHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoCisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYsCisg
ICAgICAgIGNvbnN0IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5JikgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1BlbmRpbmdB
Y3Rpdml0eSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9v
bCBoYXNQZW5kaW5nQWN0aXZpdHkpID0gMDsKKworcHJvdGVjdGVkOgorICAgIH5XZWJXb3JrZXJD
bGllbnQoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGFiYXNlT2JzZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGF0YWJhc2VPYnNlcnZlci5jcHAKaW5kZXggNDBi
NTA0ODAzNDE1MjhiYzNkMGQ3MjQxNWY2OWQ5OTc2OGY5YjExMS4uMTg3YjU1ZTgyNjEwZTkxOWVj
OTNjNWZiODJkNjE4ZTZjYzU5ODczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRGF0YWJhc2VPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRGF0YWJhc2VPYnNlcnZlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIGNvbnN0IGNo
YXIgYWxsb3dEYXRhYmFzZU1vZGVbXSA9ICJhbGxvd0RhdGFiYXNlTW9kZSI7CiAvLyBjYWxsIGJh
Y2sgdG8gdGhlIHdvcmtlciBjb250ZXh0LgogY2xhc3MgQWxsb3dEYXRhYmFzZU1haW5UaHJlYWRC
cmlkZ2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWxsb3dEYXRhYmFzZU1haW5UaHJl
YWRCcmlkZ2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBbGxvd0RhdGFiYXNl
TWFpblRocmVhZEJyaWRnZT4gY3JlYXRlKFdlYkNvcmU6OldvcmtlckxvYWRlclByb3h5KiB3b3Jr
ZXJMb2FkZXJQcm94eSwgY29uc3QgU3RyaW5nJiBtb2RlLCBXZWJDb21tb25Xb3JrZXJDbGllbnQq
IGNvbW1vbkNsaWVudCwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBbGxvd0RhdGFiYXNlTWFpblRocmVhZEJyaWRnZT4gY3JlYXRlKFdl
YkNvcmU6OldvcmtlckxvYWRlclByb3h5KiB3b3JrZXJMb2FkZXJQcm94eSwgY29uc3QgU3RyaW5n
JiBtb2RlLCBOZXdXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCwgV2ViRnJhbWUq
IGZyYW1lLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVu
c2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQWxsb3dEYXRhYmFzZU1haW5UaHJlYWRCcmlkZ2Uod29ya2VyTG9hZGVyUHJveHksIG1v
ZGUsIGNvbW1vbkNsaWVudCwgZnJhbWUsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXpl
KSk7CiAgICAgfQpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIEFsbG93RGF0YWJhc2VNYWluVGhyZWFkQnJpZGdlKFdlYkNvcmU6OldvcmtlckxvYWRlclBy
b3h5KiB3b3JrZXJMb2FkZXJQcm94eSwgY29uc3QgU3RyaW5nJiBtb2RlLCBXZWJDb21tb25Xb3Jr
ZXJDbGllbnQqIGNvbW1vbkNsaWVudCwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6
ZSkKKyAgICBBbGxvd0RhdGFiYXNlTWFpblRocmVhZEJyaWRnZShXZWJDb3JlOjpXb3JrZXJMb2Fk
ZXJQcm94eSogd29ya2VyTG9hZGVyUHJveHksIGNvbnN0IFN0cmluZyYgbW9kZSwgTmV3V2ViQ29t
bW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGlt
YXRlZFNpemUpCiAgICAgICAgIDogbV93b3JrZXJMb2FkZXJQcm94eSh3b3JrZXJMb2FkZXJQcm94
eSkKICAgICB7CiAgICAgICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVh
ZCgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhbGxvd0RhdGFiYXNlVGFz
ayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcg
bW9kZSwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIFdlYkZyYW1lKiBmcmFt
ZSwgY29uc3QgU3RyaW5nIG5hbWUsIGNvbnN0IFN0cmluZyBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPEFsbG93RGF0YWJhc2VNYWluVGhyZWFkQnJp
ZGdlPiBicmlkZ2UpCisgICAgc3RhdGljIHZvaWQgYWxsb3dEYXRhYmFzZVRhc2soV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nIG1vZGUsIE5ld1dl
YkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50LCBXZWJGcmFtZSogZnJhbWUsIGNvbnN0
IFN0cmluZyBuYW1lLCBjb25zdCBTdHJpbmcgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0
aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxBbGxvd0RhdGFiYXNlTWFpblRocmVhZEJyaWRnZT4gYnJp
ZGdlKQogICAgIHsKICAgICAgICAgYm9vbCBhbGxvd0RhdGFiYXNlID0gY29tbW9uQ2xpZW50ID8g
Y29tbW9uQ2xpZW50LT5hbGxvd0RhdGFiYXNlKGZyYW1lLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0
aW1hdGVkU2l6ZSkgOiBmYWxzZTsKICAgICAgICAgYnJpZGdlLT5zaWduYWxDb21wbGV0ZWQobW9k
ZSwgYWxsb3dEYXRhYmFzZSk7CkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBXZWJD
b3JlOjpXb3JrZXJMb2FkZXJQcm94eSogbV93b3JrZXJMb2FkZXJQcm94eTsKIH07CiAKLWJvb2wg
YWxsb3dEYXRhYmFzZUZvcldvcmtlcihXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVu
dCwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmlu
ZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKK2Jvb2wgYWxsb3dE
YXRhYmFzZUZvcldvcmtlcihOZXdXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCwg
V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYg
ZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKIHsKICAgICBXZWJDb3Jl
OjpXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBjb250cm9sbGVyID0gV2ViQ29yZTo6V29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6Y29udHJvbGxlckZvckNvbnRleHQoKTsKICAgICBXZWJDb3JlOjpXb3Jr
ZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gY29udHJvbGxlci0+d29ya2VyQ29udGV4dCgpOwpA
QCAtMTY0LDggKzE2NCw4IEBAIGJvb2wgRGF0YWJhc2VPYnNlcnZlcjo6Y2FuRXN0YWJsaXNoRGF0
YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0CiAjaWYgRU5BQkxFKFdP
UktFUlMpCiAgICAgICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxXb3JrZXJDb250ZXh0Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgICAgIFdvcmtl
ckxvYWRlclByb3h5KiB3b3JrZXJMb2FkZXJQcm94eSA9ICZ3b3JrZXJDb250ZXh0LT50aHJlYWQo
KS0+d29ya2VyTG9hZGVyUHJveHkoKTsKLSAgICAgICAgV2ViV29ya2VyQmFzZSogd2ViV29ya2Vy
ID0gc3RhdGljX2Nhc3Q8V2ViV29ya2VyQmFzZSo+KHdvcmtlckxvYWRlclByb3h5KTsKLSAgICAg
ICAgcmV0dXJuIGFsbG93RGF0YWJhc2VGb3JXb3JrZXIod2ViV29ya2VyLT5jb21tb25DbGllbnQo
KSwgd2ViV29ya2VyLT52aWV3KCktPm1haW5GcmFtZSgpLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0
aW1hdGVkU2l6ZSk7CisgICAgICAgIE5ld1dlYldvcmtlckJhc2UqIHdlYldvcmtlciA9IHN0YXRp
Y19jYXN0PE5ld1dlYldvcmtlckJhc2UqPih3b3JrZXJMb2FkZXJQcm94eSk7CisgICAgICAgIHJl
dHVybiBhbGxvd0RhdGFiYXNlRm9yV29ya2VyKHdlYldvcmtlci0+bmV3Q29tbW9uQ2xpZW50KCks
IHdlYldvcmtlci0+dmlldygpLT5tYWluRnJhbWUoKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGlt
YXRlZFNpemUpOwogI2Vsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5k
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQ
cm94eS5jcHAKaW5kZXggYzIyMzA5YjJhMDIwMWZhYjMwZjNmMDQ4YzY0YjhkNGM3ZmI0MDRiOC4u
N2FlNmU2MTIxNTBiY2VhZDdiMDVmY2FiZDJmMTE5OGJjZDQ2YzY1NCAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKQEAg
LTk5LDcgKzk5LDcgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuRnJvbVdvcmtl
cihjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyogY2EKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBXb3JrZXJMb2FkZXJQcm94eSogd29ya2VyTG9hZGVyUHJveHkgPSAmY29udGV4
dC0+dGhyZWFkKCktPndvcmtlckxvYWRlclByb3h5KCk7Ci0gICAgV2ViV29ya2VyQmFzZSogd2Vi
V29ya2VyID0gc3RhdGljX2Nhc3Q8V2ViV29ya2VyQmFzZSo+KHdvcmtlckxvYWRlclByb3h5KTsK
KyAgICBOZXdXZWJXb3JrZXJCYXNlKiB3ZWJXb3JrZXIgPSBzdGF0aWNfY2FzdDxOZXdXZWJXb3Jr
ZXJCYXNlKj4od29ya2VyTG9hZGVyUHJveHkpOwogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdl
Yldvcmtlci0+dmlldygpLT5tYWluRnJhbWUoKTsKICAgICBtX3dlYklEQkZhY3RvcnktPm9wZW4o
bmFtZSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFt
ZSwgZGF0YURpcik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0xvY2FsRmlsZVN5c3RlbUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0xvY2FsRmlsZVN5c3RlbUNocm9taXVtLmNwcAppbmRleCA5ZTBlNzMwMjZhZTM4MjUyNmM5
YjM1MTYzOGI4MGU4MTZmNTgxZDAxLi43NTdlZjgyNTNlMmY5ZmFkMmY0MzU4OTIxMGJiOThjZGM0
YTQzMzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbEZpbGVT
eXN0ZW1DaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxG
aWxlU3lzdGVtQ2hyb21pdW0uY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyBjb25zdCBjaGFy
IG9wZW5GaWxlU3lzdGVtTW9kZVtdID0gIm9wZW5GaWxlU3lzdGVtTW9kZSI7CiAvLyBjYWxsIGJh
Y2sgdG8gdGhlIHdvcmtlciBjb250ZXh0LgogY2xhc3MgQWxsb3dGaWxlU3lzdGVtTWFpblRocmVh
ZEJyaWRnZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBbGxvd0ZpbGVTeXN0ZW1NYWlu
VGhyZWFkQnJpZGdlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QWxsb3dGaWxl
U3lzdGVtTWFpblRocmVhZEJyaWRnZT4gY3JlYXRlKFdlYkNvcmU6OldvcmtlckxvYWRlclByb3h5
KiB3b3JrZXJMb2FkZXJQcm94eSwgY29uc3QgV1RGOjpTdHJpbmcmIG1vZGUsIFdlYkNvbW1vbldv
cmtlckNsaWVudCogY29tbW9uQ2xpZW50KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFsbG93Rmls
ZVN5c3RlbU1haW5UaHJlYWRCcmlkZ2U+IGNyZWF0ZShXZWJDb3JlOjpXb3JrZXJMb2FkZXJQcm94
eSogd29ya2VyTG9hZGVyUHJveHksIGNvbnN0IFdURjo6U3RyaW5nJiBtb2RlLCBOZXdXZWJDb21t
b25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQWxsb3dGaWxlU3lzdGVtTWFpblRocmVhZEJyaWRnZSh3b3JrZXJMb2FkZXJQcm94
eSwgbW9kZSwgY29tbW9uQ2xpZW50KSk7CiAgICAgfQpAQCAtMTA2LDcgKzEwNiw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQWxsb3dGaWxlU3lzdGVtTWFpblRocmVhZEJyaWRn
ZShXZWJDb3JlOjpXb3JrZXJMb2FkZXJQcm94eSogd29ya2VyTG9hZGVyUHJveHksIGNvbnN0IFdU
Rjo6U3RyaW5nJiBtb2RlLCBXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCkKKyAg
ICBBbGxvd0ZpbGVTeXN0ZW1NYWluVGhyZWFkQnJpZGdlKFdlYkNvcmU6OldvcmtlckxvYWRlclBy
b3h5KiB3b3JrZXJMb2FkZXJQcm94eSwgY29uc3QgV1RGOjpTdHJpbmcmIG1vZGUsIE5ld1dlYkNv
bW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50KQogICAgICAgICA6IG1fd29ya2VyTG9hZGVy
UHJveHkod29ya2VyTG9hZGVyUHJveHkpCiAgICAgICAgICwgbV9tb2RlKG1vZGUpCiAgICAgewpA
QCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2
b2lkIGFsbG93RmlsZVN5c3RlbVRhc2soV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIFBhc3NSZWZQdHI8
QWxsb3dGaWxlU3lzdGVtTWFpblRocmVhZEJyaWRnZT4gYnJpZGdlKQorICAgIHN0YXRpYyB2b2lk
IGFsbG93RmlsZVN5c3RlbVRhc2soV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgTmV3V2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIFBhc3NSZWZQdHI8
QWxsb3dGaWxlU3lzdGVtTWFpblRocmVhZEJyaWRnZT4gYnJpZGdlKQogICAgIHsKICAgICAgICAg
aWYgKGNvbW1vbkNsaWVudCkKICAgICAgICAgICAgIGJyaWRnZS0+c2lnbmFsQ29tcGxldGVkKGNv
bW1vbkNsaWVudC0+YWxsb3dGaWxlU3lzdGVtKCkpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZh
dGU6CiAgICAgV1RGOjpTdHJpbmcgbV9tb2RlOwogfTsKIAotYm9vbCBhbGxvd0ZpbGVTeXN0ZW1G
b3JXb3JrZXIoV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQpCitib29sIGFsbG93
RmlsZVN5c3RlbUZvcldvcmtlcihOZXdXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVu
dCkKIHsKICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBjb250cm9sbGVyID0gV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6Y29udHJvbGxlckZvckNvbnRleHQoKTsKICAgICBXb3JrZXJDb250ZXh0
KiB3b3JrZXJDb250ZXh0ID0gY29udHJvbGxlci0+d29ya2VyQ29udGV4dCgpOwpAQCAtMTU3LDcg
KzE1Nyw3IEBAIGJvb2wgYWxsb3dGaWxlU3lzdGVtRm9yV29ya2VyKFdlYkNvbW1vbldvcmtlckNs
aWVudCogY29tbW9uQ2xpZW50KQogICAgIHJldHVybiBicmlkZ2UtPnJlc3VsdCgpOwogfQogCi12
b2lkIG9wZW5GaWxlU3lzdGVtRm9yV29ya2VyKFdlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9u
Q2xpZW50LCBXZWJGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNy
ZWF0ZSwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzLCBib29sIHN5bmNocm9ub3Vz
KQordm9pZCBvcGVuRmlsZVN5c3RlbUZvcldvcmtlcihOZXdXZWJDb21tb25Xb3JrZXJDbGllbnQq
IGNvbW1vbkNsaWVudCwgV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwg
Ym9vbCBjcmVhdGUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcywgYm9vbCBzeW5j
aHJvbm91cykKIHsKICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBjb250cm9sbGVyID0gV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6Y29udHJvbGxlckZvckNvbnRleHQoKTsKICAgICBXb3JrZXJD
b250ZXh0KiB3b3JrZXJDb250ZXh0ID0gY29udHJvbGxlci0+d29ya2VyQ29udGV4dCgpOwpAQCAt
MjAzLDExICsyMDMsMTEgQEAgc3RhdGljIHZvaWQgb3BlbkZpbGVTeXN0ZW1IZWxwZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXN5bmNGaWxlU3lzdGUKICNpZiBFTkFCTEUoV09S
S0VSUykKICAgICAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHN0YXRpY19jYXN0
PFdvcmtlckNvbnRleHQqPihjb250ZXh0KTsKICAgICAgICAgV29ya2VyTG9hZGVyUHJveHkqIHdv
cmtlckxvYWRlclByb3h5ID0gJndvcmtlckNvbnRleHQtPnRocmVhZCgpLT53b3JrZXJMb2FkZXJQ
cm94eSgpOwotICAgICAgICBXZWJXb3JrZXJCYXNlKiB3ZWJXb3JrZXIgPSBzdGF0aWNfY2FzdDxX
ZWJXb3JrZXJCYXNlKj4od29ya2VyTG9hZGVyUHJveHkpOwotICAgICAgICBpZiAoIWFsbG93Rmls
ZVN5c3RlbUZvcldvcmtlcih3ZWJXb3JrZXItPmNvbW1vbkNsaWVudCgpKSkKKyAgICAgICAgTmV3
V2ViV29ya2VyQmFzZSogd2ViV29ya2VyID0gc3RhdGljX2Nhc3Q8TmV3V2ViV29ya2VyQmFzZSo+
KHdvcmtlckxvYWRlclByb3h5KTsKKyAgICAgICAgaWYgKCFhbGxvd0ZpbGVTeXN0ZW1Gb3JXb3Jr
ZXIod2ViV29ya2VyLT5uZXdDb21tb25DbGllbnQoKSkpCiAgICAgICAgICAgICBhbGxvd2VkID0g
ZmFsc2U7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG9wZW5GaWxlU3lzdGVtRm9yV29ya2Vy
KHdlYldvcmtlci0+Y29tbW9uQ2xpZW50KCksIHN0YXRpY19jYXN0PFdlYkZpbGVTeXN0ZW06OlR5
cGU+KHR5cGUpLCBzaXplLCBjcmVhdGUgPT0gQ3JlYXRlSWZOb3RQcmVzZW50LCBuZXcgV2ViRmls
ZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzLCB0eXBlLCBjb250ZXh0LCBzeW5jaHJvbm91
cyksIHN5bmNocm9ub3VzKTsKKyAgICAgICAgICAgIG9wZW5GaWxlU3lzdGVtRm9yV29ya2VyKHdl
Yldvcmtlci0+bmV3Q29tbW9uQ2xpZW50KCksIHN0YXRpY19jYXN0PFdlYkZpbGVTeXN0ZW06OlR5
cGU+KHR5cGUpLCBzaXplLCBjcmVhdGUgPT0gQ3JlYXRlSWZOb3RQcmVzZW50LCBuZXcgV2ViRmls
ZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzLCB0eXBlLCBjb250ZXh0LCBzeW5jaHJvbm91
cyksIHN5bmNocm9ub3VzKTsKIAogI2Vsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwu
Y3BwCmluZGV4IDIzMWFhYWMyZTUwYzhkMjY0MTY0NTk3NDQ4YTA1OGQ4M2FjNjEyZWQuLjE0NDVm
OGVjOTY3NmVjNTc5Yzc0MWUxMWE5ZTc5MGQ4MmE3ZDUyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwCkBAIC0zMiwzMDIgKzMy
LDM2IEBACiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VySW1wbC5oIgogCiAjaW5jbHVkZSAiQ3Jv
c3NUaHJlYWRUYXNrLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCi0jaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVsLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZXNzYWdl
UG9ydENoYW5uZWwuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSAiV2ViRGF0YVNvdXJj
ZUltcGwuaCIKLSNpbmNsdWRlICJXZWJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJXZWJGcmFtZUNs
aWVudC5oIgotI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgotI2luY2x1ZGUgIldlYk1lc3NhZ2VQ
b3J0Q2hhbm5lbC5oIgotI2luY2x1ZGUgIldlYlJ1bnRpbWVGZWF0dXJlcy5oIgotI2luY2x1ZGUg
IldlYlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ2xpZW50LmgiCi0jaW5j
bHVkZSAiV2ViVmlldy5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJX
b3JrZXJEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
ci5oIgotI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCi0jaW5jbHVkZSAiV29ya2VyVGhy
ZWFkLmgiCisKKyNpbmNsdWRlICJXZWJNZXNzYWdlUG9ydENoYW5uZWwuaCIKICNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwuaCIKLSNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCi0vLyBUaGlzIGZ1
bmN0aW9uIGlzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgdG8gZm9yY2UgdG8gaW5pdGlhbGl6
ZSBzb21lIHN0YXRpYwotLy8gdmFsdWVzIHVzZWQgaW4gV2ViS2l0IGJlZm9yZSBhbnkgd29ya2Vy
IHRocmVhZCBpcyBzdGFydGVkLiBUaGlzIGlzIGJlY2F1c2UgaW4KLS8vIG91ciB3b3JrZXIgcHJv
Y2Vzc3MsIHdlIGRvIG5vdCBydW4gYW55IFdlYktpdCBjb2RlIGluIG1haW4gdGhyZWFkIGFuZCB0
aHVzCi0vLyB3aGVuIG11bHRpcGxlIHdvcmtlcnMgdHJ5IHRvIHN0YXJ0IGF0IHRoZSBzYW1lIHRp
bWUsIHdlIG1pZ2h0IGhpdCBjcmFzaCBkdWUKLS8vIHRvIGNvbnRlbnRpb24gZm9yIGluaXRpYWxp
emluZyBzdGF0aWMgdmFsdWVzLgotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVdlYktpdFN0YXRpY1Zh
bHVlcygpCi17Ci0gICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKLSAgICBpZiAo
IWluaXRpYWxpemVkKSB7Ci0gICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICAgICAgLy8g
Tm90ZSB0aGF0IHdlIGhhdmUgdG8gcGFzcyBhIFVSTCB3aXRoIHZhbGlkIHByb3RvY29sIGluIG9y
ZGVyIHRvIGZvbGxvdwotICAgICAgICAvLyB0aGUgcGF0aCB0byBkbyBzdGF0aWMgdmFsdWUgaW5p
dGlhbGl6YXRpb25zLgotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9Ci0g
ICAgICAgICAgICBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAi
aHR0cDovL2xvY2FsaG9zdCIpKTsKLSAgICAgICAgb3JpZ2luLnJlbGVhc2UoKTsKLSAgICB9Ci19
CiAKLVdlYlNoYXJlZFdvcmtlckltcGw6OldlYlNoYXJlZFdvcmtlckltcGwoV2ViU2hhcmVkV29y
a2VyQ2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3dlYlZpZXcoMCkKLSAgICAsIG1fYXNrZWRUb1Rl
cm1pbmF0ZShmYWxzZSkKLSAgICAsIG1fY2xpZW50KGNsaWVudCkKK1dlYlNoYXJlZFdvcmtlcklt
cGw6OldlYlNoYXJlZFdvcmtlckltcGwoV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjbGllbnQpCisg
ICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3BhdXNlV29ya2VyQ29udGV4dE9uU3RhcnQo
ZmFsc2UpCiB7Ci0gICAgaW5pdGlhbGl6ZVdlYktpdFN0YXRpY1ZhbHVlcygpOwogfQogCiBXZWJT
aGFyZWRXb3JrZXJJbXBsOjp+V2ViU2hhcmVkV29ya2VySW1wbCgpCiB7Ci0gICAgQVNTRVJUKG1f
d2ViVmlldyk7Ci0gICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZy
YW1lSW1wbCo+KG1fd2ViVmlldy0+bWFpbkZyYW1lKCkpOwotICAgIGlmICh3ZWJGcmFtZSkKLSAg
ICAgICAgd2ViRnJhbWUtPnNldENsaWVudCgwKTsKLSAgICBtX3dlYlZpZXctPmNsb3NlKCk7Ci19
Ci0KLXZvaWQgV2ViU2hhcmVkV29ya2VySW1wbDo6c3RvcFdvcmtlclRocmVhZCgpCi17Ci0gICAg
aWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fYXNrZWRUb1Rl
cm1pbmF0ZSA9IHRydWU7Ci0gICAgaWYgKG1fd29ya2VyVGhyZWFkKQotICAgICAgICBtX3dvcmtl
clRocmVhZC0+c3RvcCgpOwotfQotCi12b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6OmluaXRpYWxp
emVMb2FkZXIoY29uc3QgV2ViVVJMJiB1cmwpCi17Ci0gICAgLy8gQ3JlYXRlICdzaGFkb3cgcGFn
ZScuIFRoaXMgcGFnZSBpcyBuZXZlciBkaXNwbGF5ZWQsIGl0IGlzIHVzZWQgdG8gcHJveHkgdGhl
Ci0gICAgLy8gbG9hZGluZyByZXF1ZXN0cyBmcm9tIHRoZSB3b3JrZXIgY29udGV4dCB0byB0aGUg
cmVzdCBvZiBXZWJLaXQgYW5kIENocm9taXVtCi0gICAgLy8gaW5mcmFzdHJ1Y3R1cmUuCi0gICAg
QVNTRVJUKCFtX3dlYlZpZXcpOwotICAgIG1fd2ViVmlldyA9IFdlYlZpZXc6OmNyZWF0ZSgwKTsK
LSAgICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
RW5hYmxlZChXZWJSdW50aW1lRmVhdHVyZXM6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKSk7
Ci0gICAgLy8gRklYTUU6IFNldHRpbmdzIGluZm9ybWF0aW9uIHNob3VsZCBiZSBwYXNzZWQgdG8g
dGhlIFdvcmtlciBwcm9jZXNzIGZyb20gQnJvd3NlciBwcm9jZXNzIHdoZW4gdGhlIHdvcmtlcgot
ICAgIC8vIGlzIGNyZWF0ZWQgKHNpbWlsYXIgdG8gUmVuZGVyVGhyZWFkOjpPbkNyZWF0ZU5ld1Zp
ZXcpLgotICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0SGl4aWU3NldlYlNvY2tldFByb3Rv
Y29sRW5hYmxlZChmYWxzZSk7Ci0gICAgbV93ZWJWaWV3LT5pbml0aWFsaXplTWFpbkZyYW1lKHRo
aXMpOwotCi0gICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1l
SW1wbCo+KG1fd2ViVmlldy0+bWFpbkZyYW1lKCkpOwotCi0gICAgLy8gQ29uc3RydWN0IHN1YnN0
aXR1dGUgZGF0YSBzb3VyY2UgZm9yIHRoZSAnc2hhZG93IHBhZ2UnLiBXZSBvbmx5IG5lZWQgaXQK
LSAgICAvLyB0byBoYXZlIHNhbWUgb3JpZ2luIGFzIHRoZSB3b3JrZXIgc28gdGhlIGxvYWRpbmcg
Y2hlY2tzIHdvcmsgY29ycmVjdGx5LgotICAgIENTdHJpbmcgY29udGVudCgiIik7Ci0gICAgaW50
IGxlbiA9IHN0YXRpY19jYXN0PGludD4oY29udGVudC5sZW5ndGgoKSk7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnQuZGF0YSgpLCBsZW4p
KTsKLSAgICBTdWJzdGl0dXRlRGF0YSBzdWJzdERhdGEoYnVmLCBTdHJpbmcoInRleHQvaHRtbCIp
LCBTdHJpbmcoIlVURi04IiksIEtVUkwoKSk7Ci0gICAgd2ViRnJhbWUtPmZyYW1lKCktPmxvYWRl
cigpLT5sb2FkKFJlc291cmNlUmVxdWVzdCh1cmwpLCBzdWJzdERhdGEsIGZhbHNlKTsKLQotICAg
IC8vIFRoaXMgZG9jdW1lbnQgd2lsbCBiZSB1c2VkIGFzICdsb2FkaW5nIGNvbnRleHQnIGZvciB0
aGUgd29ya2VyLgotICAgIG1fbG9hZGluZ0RvY3VtZW50ID0gd2ViRnJhbWUtPmZyYW1lKCktPmRv
Y3VtZW50KCk7Ci19Ci0KLXZvaWQgV2ViU2hhcmVkV29ya2VySW1wbDo6ZGlkQ3JlYXRlRGF0YVNv
dXJjZShXZWJGcmFtZSosIFdlYkRhdGFTb3VyY2UqIGRzKQotewotICAgIC8vIFRlbGwgdGhlIGxv
YWRlciB0byBsb2FkIHRoZSBkYXRhIGludG8gdGhlICdzaGFkb3cgcGFnZScgc3luY2hyb25vdXNs
eSwKLSAgICAvLyBzbyB3ZSBjYW4gZ3JhYiB0aGUgcmVzdWx0aW5nIERvY3VtZW50IHJpZ2h0IGFm
dGVyIGxvYWQuCi0gICAgc3RhdGljX2Nhc3Q8V2ViRGF0YVNvdXJjZUltcGwqPihkcyktPnNldERl
ZmVyTWFpblJlc291cmNlRGF0YUxvYWQoZmFsc2UpOwotfQotCi1XZWJBcHBsaWNhdGlvbkNhY2hl
SG9zdCogV2ViU2hhcmVkV29ya2VySW1wbDo6Y3JlYXRlQXBwbGljYXRpb25DYWNoZUhvc3QoV2Vi
RnJhbWUqLCBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudCogYXBwY2FjaGVIb3N0Q2xpZW50
KQotewotICAgIGlmIChjbGllbnQoKSkKLSAgICAgICAgcmV0dXJuIGNsaWVudCgpLT5jcmVhdGVB
cHBsaWNhdGlvbkNhY2hlSG9zdChhcHBjYWNoZUhvc3RDbGllbnQpOwotICAgIHJldHVybiAwOwot
fQotCi0vLyBXb3JrZXJPYmplY3RQcm94eSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi12b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6
OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCi17
Ci0gICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxi
YWNrVGFzaygmcG9zdE1lc3NhZ2VUYXNrLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS0+
dG9XaXJlU3RyaW5nKCksIGNoYW5uZWxzKSk7Ci19Ci0KLXZvaWQgV2ViU2hhcmVkV29ya2VySW1w
bDo6cG9zdE1lc3NhZ2VUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJTaGFyZWRXb3JrZXJJbXBs
KiB0aGlzUHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKLXsKLSAgICBpZiAo
IXRoaXNQdHItPmNsaWVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJNZXNzYWdlUG9y
dENoYW5uZWxBcnJheSB3ZWJDaGFubmVscyhjaGFubmVscyA/IGNoYW5uZWxzLT5zaXplKCkgOiAw
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYkNoYW5uZWxzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIHdlYkNoYW5uZWxzW2ldID0gKCpjaGFubmVscylbaV0tPmNoYW5uZWwoKS0+d2Vi
Q2hhbm5lbFJlbGVhc2UoKTsKLSAgICAgICAgd2ViQ2hhbm5lbHNbaV0tPnNldENsaWVudCgwKTsK
LSAgICB9Ci0KLSAgICB0aGlzUHRyLT5jbGllbnQoKS0+cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVj
dChtZXNzYWdlLCB3ZWJDaGFubmVscyk7Ci19Ci0KLXZvaWQgV2ViU2hhcmVkV29ya2VySW1wbDo6
cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGxpbmVOdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKLXsKLSAgICBXZWJXb3JrZXJCYXNl
OjpkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCi0gICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygm
cG9zdEV4Y2VwdGlvblRhc2ssIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBzb3VyY2VVUkwpKTsKLX0KLQotdm9pZCBXZWJTaGFyZWRXb3JrZXJJ
bXBsOjpwb3N0RXhjZXB0aW9uVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJTaGFyZWRXb3Jr
ZXJJbXBsKiB0aGlzUHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKQotewotICAgIGlmICghdGhpc1B0ci0+Y2xpZW50KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIHRoaXNQdHItPmNsaWVudCgpLT5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoZXJyb3JN
ZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGluZU51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNvdXJjZVVSTCk7Ci19Ci0KLXZvaWQgV2ViU2hhcmVkV29ya2VySW1wbDo6cG9z
dENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSBzb3VyY2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1l
c3NhZ2VUeXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VMZXZlbCBsZXZlbCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbGluZU51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCi17
Ci0gICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxi
YWNrVGFzaygmcG9zdENvbnNvbGVNZXNzYWdlVGFzaywgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0
aGlzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNl
LCB0eXBlLCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKSk7Ci19Ci0KLXZvaWQgV2ViU2hhcmVk
V29ya2VySW1wbDo6cG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYlNoYXJlZFdvcmtlckltcGwqIHRoaXNQdHIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvdXJjZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHlwZSwgaW50IGxldmVsLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgbGluZU51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKLXsKLSAgICBpZiAoIXRoaXNQ
dHItPmNsaWVudCgpKQotICAgICAgICByZXR1cm47Ci0gICAgdGhpc1B0ci0+Y2xpZW50KCktPnBv
c3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KHNvdXJjZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwgbGV2ZWws
IG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7Ci19Ci0KLXZvaWQgV2ViU2hh
cmVkV29ya2VySW1wbDo6cG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3IoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQotewotICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZChj
cmVhdGVDYWxsYmFja1Rhc2soJnBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yVGFzaywgQWxsb3dD
cm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbWVzc2FnZSkpOwogfQogCi12b2lkIFdlYlNoYXJlZFdv
cmtlckltcGw6OnBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgV2ViU2hhcmVkV29ya2VySW1wbCogdGhpc1B0ciwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQotewotICAgIGlmICghdGhpc1B0ci0+Y2xpZW50KCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICB0aGlzUHRyLT5jbGllbnQoKS0+ZGlzcGF0Y2hEZXZUb29sc01lc3NhZ2UobWVzc2FnZSk7Ci19
Ci0KLXZvaWQgV2ViU2hhcmVkV29ya2VySW1wbDo6dXBkYXRlSW5zcGVjdG9yU3RhdGVDb29raWUo
Y29uc3QgV1RGOjpTdHJpbmcmIGNvb2tpZSkKLXsKLSAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRj
aFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ1cGRhdGVJbnNwZWN0b3JTdGF0
ZUNvb2tpZVRhc2ssIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIGNvb2tpZSkpOwotfQot
Ci12b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6OnVwZGF0ZUluc3BlY3RvclN0YXRlQ29va2llVGFz
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViU2hhcmVkV29ya2VySW1wbCogdGhpc1B0ciwg
Y29uc3QgU3RyaW5nJiBjb29raWUpCi17Ci0gICAgaWYgKCF0aGlzUHRyLT5jbGllbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIHRoaXNQdHItPmNsaWVudCgpLT5zYXZlRGV2VG9vbHNBZ2VudFN0
YXRlKGNvb2tpZSk7Ci19Ci0KLXZvaWQgV2ViU2hhcmVkV29ya2VySW1wbDo6Y29uZmlybU1lc3Nh
Z2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQotewotICAgIFdlYldv
cmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJmNv
bmZpcm1NZXNzYWdlVGFzaywgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUGVuZGluZ0FjdGl2aXR5KSk7
Ci19Ci0KLXZvaWQgV2ViU2hhcmVkV29ya2VySW1wbDo6Y29uZmlybU1lc3NhZ2VUYXNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJTaGFyZWRXb3JrZXJJbXBsKiB0aGlzUHRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZp
dHkpCi17Ci0gICAgaWYgKCF0aGlzUHRyLT5jbGllbnQoKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IHRoaXNQdHItPmNsaWVudCgpLT5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoaGFzUGVu
ZGluZ0FjdGl2aXR5KTsKLX0KLQotdm9pZCBXZWJTaGFyZWRXb3JrZXJJbXBsOjpyZXBvcnRQZW5k
aW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCi17Ci0gICAgV2ViV29ya2VyQmFz
ZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmcmVwb3J0UGVu
ZGluZ0FjdGl2aXR5VGFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGFzUGVuZGluZ0FjdGl2aXR5KSk7Ci19Ci0KLXZvaWQg
V2ViU2hhcmVkV29ya2VySW1wbDo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5VGFzayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYlNoYXJlZFdvcmtlckltcGwqIHRoaXNQdHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNQZW5k
aW5nQWN0aXZpdHkpCi17Ci0gICAgaWYgKCF0aGlzUHRyLT5jbGllbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIHRoaXNQdHItPmNsaWVudCgpLT5yZXBvcnRQZW5kaW5nQWN0aXZpdHkoaGFzUGVu
ZGluZ0FjdGl2aXR5KTsKLX0KLQotdm9pZCBXZWJTaGFyZWRXb3JrZXJJbXBsOjp3b3JrZXJDb250
ZXh0Q2xvc2VkKCkKLXsKLSAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJl
YWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0Q2xvc2VkVGFzaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vz
cyh0aGlzKSkpOwotfQotCi12b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6OndvcmtlckNvbnRleHRD
bG9zZWRUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlNoYXJlZFdvcmtlckltcGwq
IHRoaXNQdHIpCi17Ci0gICAgaWYgKHRoaXNQdHItPmNsaWVudCgpKQotICAgICAgICB0aGlzUHRy
LT5jbGllbnQoKS0+d29ya2VyQ29udGV4dENsb3NlZCgpOwotCi0gICAgdGhpc1B0ci0+c3RvcFdv
cmtlclRocmVhZCgpOwotfQotCi12b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6OndvcmtlckNvbnRl
eHREZXN0cm95ZWQoKQotewotICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFpblRo
cmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREZXN0cm95ZWRUYXNrLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSkpOwotfQotCi12b2lkIFdlYlNoYXJlZFdv
cmtlckltcGw6OndvcmtlckNvbnRleHREZXN0cm95ZWRUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYlNoYXJlZFdvcmtlckltcGwqIHRoaXNQdHIpCi17Ci0gICAgaWYgKHRoaXNQ
dHItPmNsaWVudCgpKQotICAgICAgICB0aGlzUHRyLT5jbGllbnQoKS0+d29ya2VyQ29udGV4dERl
c3Ryb3llZCgpOwotICAgIC8vIFRoZSBsaWZldGltZSBvZiB0aGlzIHByb3h5IGlzIGNvbnRyb2xs
ZWQgYnkgdGhlIHdvcmtlciBjb250ZXh0LgotICAgIGRlbGV0ZSB0aGlzUHRyOwotfQotCi0vLyBX
b3JrZXJMb2FkZXJQcm94eSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotCi12b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6OnBvc3RUYXNr
VG9Mb2FkZXIoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQot
ewotICAgIEFTU0VSVChtX2xvYWRpbmdEb2N1bWVudC0+aXNEb2N1bWVudCgpKTsKLSAgICBtX2xv
YWRpbmdEb2N1bWVudC0+cG9zdFRhc2sodGFzayk7Ci19Ci0KLXZvaWQgV2ViU2hhcmVkV29ya2Vy
SW1wbDo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KAotICAgIFBhc3NPd25QdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQotewot
ICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKHRhc2ssIG1vZGUp
OwotfQotCi0KLQogYm9vbCBXZWJTaGFyZWRXb3JrZXJJbXBsOjppc1N0YXJ0ZWQoKQogewogICAg
IC8vIFNob3VsZCBub3QgZXZlciBiZSBjYWxsZWQgZnJvbSB0aGUgd29ya2VyIHRocmVhZCAodGhp
cyBBUEkgaXMgb25seSBjYWxsZWQgb24gV2ViU2hhcmVkV29ya2VyUHJveHkgb24gdGhlIHJlbmRl
cmVyIHRocmVhZCkuCkBAIC00NDMsMTAgKzE3NywxOSBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlcklt
cGw6OmRpc3BhdGNoRGV2VG9vbHNNZXNzYWdlKGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKICAg
ICB3b3JrZXJUaHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShjcmVhdGVDYWxsYmFj
a1Rhc2soZGlzcGF0Y2hPbkluc3BlY3RvckJhY2tlbmRUYXNrLCBTdHJpbmcobWVzc2FnZSkpLCBX
b3JrZXJEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlclRhc2tNb2RlKTsKIH0KIAotV2ViU2hhcmVkV29y
a2VyKiBXZWJTaGFyZWRXb3JrZXI6OmNyZWF0ZShXZWJTaGFyZWRXb3JrZXJDbGllbnQqIGNsaWVu
dCkKK1dlYldvcmtlckNsaWVudCogV2ViU2hhcmVkV29ya2VySW1wbDo6Y2xpZW50KCkKK3sKKyAg
ICAvLyBXZSBzaG91bGQgbmV2ZXIgYmUgYXNrZWQgZm9yIGEgV2ViV29ya2VyQ2xpZW50IChvbmx5
IGRlZGljYXRlZCB3b3JrZXJzIGhhdmUgYW4gYXNzb2NpYXRlZCBXZWJXb3JrZXJDbGllbnQpLgor
ICAgIC8vIEl0IHNob3VsZCBub3QgYmUgcG9zc2libGUgZm9yIFNoYXJlZFdvcmtlckNvbnRleHQg
dG8gZ2VuZXJhdGUgYW4gQVBJIGNhbGwgb3V0c2lkZSB0aG9zZSBzdXBwb3J0ZWQgYnkgV2ViQ29t
bW9uV29ya2VyQ2xpZW50LgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAw
OworfQorCitXZWJTaGFyZWRXb3JrZXIqIFdlYlNoYXJlZFdvcmtlcjo6Y3JlYXRlKFdlYkNvbW1v
bldvcmtlckNsaWVudCogY2xpZW50KQogewogICAgIHJldHVybiBuZXcgV2ViU2hhcmVkV29ya2Vy
SW1wbChjbGllbnQpOwogfQorCiAjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNoYXJlZFdvcmtlckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNoYXJlZFdvcmtlckltcGwuaAppbmRleCA4M2QzNjFhZWUyYWEwYjMzMTg2ZTQxMGM5NGYzYjhh
N2JiMzA5MzMwLi40MzdiYjJiYzdmZmIzNmRkNmVjYTA0M2M4YTczODA4Y2FkY2I3NjYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5oCkBA
IC0zNCw2NCArMzQsMjAgQEAKICNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXIuaCIKIAogI2lmIEVO
QUJMRShTSEFSRURfV09SS0VSUykKKwogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKLSNpbmNsdWRlICJXZWJDb21tb25Xb3JrZXJDbGllbnQuaCIKLSNpbmNsdWRlICJXZWJGcmFt
ZUNsaWVudC5oIgotI2luY2x1ZGUgIldlYldvcmtlckJhc2UuaCIKLSNpbmNsdWRlICJXZWJXb3Jr
ZXJDbGllbnQuaCIKLSNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgotI2luY2x1ZGUgIldv
cmtlck9iamVjdFByb3h5LmgiCi0jaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKKyNpbmNsdWRlICJX
ZWJXb3JrZXJCYXNlLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViQXBwbGljYXRp
b25DYWNoZUhvc3Q7Ci1jbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudDsKLWNsYXNz
IFdlYldvcmtlckNsaWVudDsKLWNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOwotY2xhc3MgV2ViU3Ry
aW5nOwotY2xhc3MgV2ViVVJMOwotY2xhc3MgV2ViVmlldzsKLWNsYXNzIFdlYldvcmtlcjsKLWNs
YXNzIFdlYlNoYXJlZFdvcmtlckNsaWVudDsKKwogLy8gVGhpcyBjbGFzcyBpcyB1c2VkIGJ5IHRo
ZSB3b3JrZXIgcHJvY2VzcyBjb2RlIHRvIHRhbGsgdG8gdGhlIFdlYkNvcmU6OlNoYXJlZFdvcmtl
ciBpbXBsZW1lbnRhdGlvbi4KIC8vIEl0IGNhbid0IHVzZSBpdCBkaXJlY3RseSBzaW5jZSBpdCB1
c2VzIFdlYktpdCB0eXBlcywgc28gdGhpcyBjbGFzcyBjb252ZXJ0cyB0aGUgZGF0YSB0eXBlcy4K
IC8vIFdoZW4gdGhlIFdlYkNvcmU6OlNoYXJlZFdvcmtlciBvYmplY3Qgd2FudHMgdG8gY2FsbCBX
ZWJDb3JlOjpXb3JrZXJSZXBvcnRpbmdQcm94eSwgdGhpcyBjbGFzcyB3aWxsCiAvLyBjb252ZXJ0
IHRvIENocm9tZSBkYXRhIHR5cGVzIGZpcnN0IGFuZCB0aGVuIGNhbGwgdGhlIHN1cHBsaWVkIFdl
YkNvbW1vbldvcmtlckNsaWVudC4KLWNsYXNzIFdlYlNoYXJlZFdvcmtlckltcGwgOiBwdWJsaWMg
V2ViQ29yZTo6V29ya2VyT2JqZWN0UHJveHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLCBw
dWJsaWMgV2ViV29ya2VyQmFzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBX
ZWJGcmFtZUNsaWVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBXZWJTaGFy
ZWRXb3JrZXIgeworY2xhc3MgV2ViU2hhcmVkV29ya2VySW1wbCA6IHB1YmxpYyBXZWJXb3JrZXJC
YXNlLCBwdWJsaWMgV2ViU2hhcmVkV29ya2VyIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJT
aGFyZWRXb3JrZXJJbXBsKFdlYlNoYXJlZFdvcmtlckNsaWVudCopOwotCi0gICAgdmlydHVhbCB2
b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoCi0gICAgICAgIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwKLSAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0RXhjZXB0aW9u
VG9Xb3JrZXJPYmplY3QoCi0gICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiwgaW50LCBjb25zdCBX
VEY6OlN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtl
ck9iamVjdCgKLSAgICAgICAgV2ViQ29yZTo6TWVzc2FnZVNvdXJjZSwgV2ViQ29yZTo6TWVzc2Fn
ZVR5cGUsCi0gICAgICAgIFdlYkNvcmU6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgV1RGOjpTdHJpbmcm
LCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdl
VG9QYWdlSW5zcGVjdG9yKGNvbnN0IFdURjo6U3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUluc3BlY3RvclN0YXRlQ29va2llKGNvbnN0IFdURjo6U3RyaW5nJik7Ci0gICAgdmlydHVh
bCB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCB3b3Jr
ZXJDb250ZXh0Q2xvc2VkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHdvcmtlckNvbnRleHREZXN0cm95
ZWQoKTsKLSAgICB2aXJ0dWFsIFdlYlZpZXcqIHZpZXcoKSBjb25zdCB7IHJldHVybiBtX3dlYlZp
ZXc7IH0KLQotICAgIC8vIFdlYkNvcmU6OldvcmtlckxvYWRlclByb3h5IG1ldGhvZHM6Ci0gICAg
dmlydHVhbCB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoUGFzc093blB0cjxXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPik7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyQ29udGV4dCgKLSAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgV1RGOjpTdHJpbmcmIG1vZGUpOwotCi0gICAgLy8g
V2ViRnJhbWVDbGllbnQgbWV0aG9kcyB0byBzdXBwb3J0IHJlc291cmNlIGxvYWRpbmcgdGhydSB0
aGUgJ3NoYWRvdyBwYWdlJy4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRGF0YVNvdXJjZShX
ZWJGcmFtZSosIFdlYkRhdGFTb3VyY2UqKTsKLSAgICB2aXJ0dWFsIFdlYkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KiBjcmVhdGVBcHBsaWNhdGlvbkNhY2hlSG9zdChXZWJGcmFtZSosIFdlYkFwcGxpY2F0
aW9uQ2FjaGVIb3N0Q2xpZW50Kik7Ci0KKyAgICBleHBsaWNpdCBXZWJTaGFyZWRXb3JrZXJJbXBs
KFdlYkNvbW1vbldvcmtlckNsaWVudCogY2xpZW50KTsKIAogICAgIC8vIFdlYlNoYXJlZFdvcmtl
ciBtZXRob2RzOgogICAgIHZpcnR1YWwgYm9vbCBpc1N0YXJ0ZWQoKTsKQEAgLTEwNyw3MiArNjMs
MTkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hEZXZUb29scygpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERldlRvb2xzTWVzc2FnZShjb25zdCBXZWJTdHJpbmcmKTsKIAor
ICAgIC8vIFdlYldvcmtlckJhc2UgbWV0aG9kczoKKyAgICBXZWJXb3JrZXJDbGllbnQqIGNsaWVu
dCgpOworICAgIFdlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50KCkgeyByZXR1cm4g
bV9jbGllbnQ7IH0KIAogICAgIC8vIE5ld1dlYldvcmtlckJhc2UgbWV0aG9kczoKLSAgICBXZWJD
b21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9Cisg
ICAgTmV3V2ViQ29tbW9uV29ya2VyQ2xpZW50KiBuZXdDb21tb25DbGllbnQoKSB7IHJldHVybiBt
X2NsaWVudDsgfQogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgfldlYlNoYXJlZFdvcmtlckltcGwo
KTsKIAotICAgIFdlYlNoYXJlZFdvcmtlckNsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9jbGll
bnQ7IH0KLQotICAgIHZvaWQgc2V0V29ya2VyVGhyZWFkKFBhc3NSZWZQdHI8V2ViQ29yZTo6V29y
a2VyVGhyZWFkPiB0aHJlYWQpIHsgbV93b3JrZXJUaHJlYWQgPSB0aHJlYWQ7IH0KLSAgICBXZWJD
b3JlOjpXb3JrZXJUaHJlYWQqIHdvcmtlclRocmVhZCgpIHsgcmV0dXJuIG1fd29ya2VyVGhyZWFk
LmdldCgpOyB9Ci0KLSAgICAvLyBTaHV0cyBkb3duIHRoZSB3b3JrZXIgdGhyZWFkLgotICAgIHZv
aWQgc3RvcFdvcmtlclRocmVhZCgpOwotCi0gICAgLy8gQ3JlYXRlcyB0aGUgc2hhZG93IGxvYWRl
ciB1c2VkIGZvciB3b3JrZXIgbmV0d29yayByZXF1ZXN0cy4KLSAgICB2b2lkIGluaXRpYWxpemVM
b2FkZXIoY29uc3QgV2ViVVJMJik7Ci0KLQogICAgIHN0YXRpYyB2b2lkIGNvbm5lY3RUYXNrKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzT3duUHRyPFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0Q2hhbm5lbD4pOwotICAgIC8vIFRhc2tzIHRoYXQgYXJlIHJ1biBvbiB0aGUgbWFpbiB0
aHJlYWQuCi0gICAgc3RhdGljIHZvaWQgcG9zdE1lc3NhZ2VUYXNrKAotICAgICAgICBXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwKLSAgICAgICAgV2ViU2hhcmVkV29ya2VySW1wbCog
dGhpc1B0ciwKLSAgICAgICAgV1RGOjpTdHJpbmcgbWVzc2FnZSwKLSAgICAgICAgUGFzc093blB0
cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpOwotICAgIHN0YXRp
YyB2b2lkIHBvc3RFeGNlcHRpb25UYXNrKAotICAgICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwKLSAgICAgICAgV2ViU2hhcmVkV29ya2VySW1wbCogdGhpc1B0ciwKLSAgICAg
ICAgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgIGludCBsaW5lTnVtYmVyLAot
ICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgc291cmNlVVJMKTsKLSAgICBzdGF0aWMgdm9pZCBw
b3N0Q29uc29sZU1lc3NhZ2VUYXNrKAotICAgICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwKLSAgICAgICAgV2ViU2hhcmVkV29ya2VySW1wbCogdGhpc1B0ciwKLSAgICAgICAg
aW50IHNvdXJjZSwKLSAgICAgICAgaW50IHR5cGUsCi0gICAgICAgIGludCBsZXZlbCwKLSAgICAg
ICAgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgIGludCBsaW5lTnVtYmVyLAot
ICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgc291cmNlVVJMKTsKLSAgICBzdGF0aWMgdm9pZCBw
b3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvclRhc2soV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFdlYlNoYXJlZFdvcmtlckltcGwqLCBjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIHN0
YXRpYyB2b2lkIHVwZGF0ZUluc3BlY3RvclN0YXRlQ29va2llVGFzayhXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgV2ViU2hhcmVkV29ya2VySW1wbCogdGhpc1B0ciwgY29uc3QgV1RG
OjpTdHJpbmcmIGNvb2tpZSk7Ci0gICAgc3RhdGljIHZvaWQgY29uZmlybU1lc3NhZ2VUYXNrKAot
ICAgICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwKLSAgICAgICAgV2ViU2hh
cmVkV29ya2VySW1wbCogdGhpc1B0ciwKLSAgICAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkp
OwotICAgIHN0YXRpYyB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eVRhc2soCi0gICAgICAgIFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLAotICAgICAgICBXZWJTaGFyZWRXb3JrZXJJ
bXBsKiB0aGlzUHRyLAotICAgICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSk7Ci0gICAgc3Rh
dGljIHZvaWQgd29ya2VyQ29udGV4dENsb3NlZFRhc2soCi0gICAgICAgIFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLAotICAgICAgICBXZWJTaGFyZWRXb3JrZXJJbXBsKiB0aGlzUHRy
KTsKLSAgICBzdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGVzdHJveWVkVGFzaygKLSAgICAgICAg
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosCi0gICAgICAgIFdlYlNoYXJlZFdvcmtl
ckltcGwqIHRoaXNQdHIpOwotCi0gICAgLy8gJ3NoYWRvdyBwYWdlJyAtIGNyZWF0ZWQgdG8gcHJv
eHkgbG9hZGluZyByZXF1ZXN0cyBmcm9tIHRoZSB3b3JrZXIuCi0gICAgUmVmUHRyPFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fbG9hZGluZ0RvY3VtZW50OwotICAgIFdlYlZpZXcq
IG1fd2ViVmlldzsKLSAgICBib29sIG1fYXNrZWRUb1Rlcm1pbmF0ZTsKLQotICAgIFJlZlB0cjxX
ZWJDb3JlOjpXb3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOwotCi0gICAgV2ViU2hhcmVkV29y
a2VyQ2xpZW50KiBtX2NsaWVudDsKKworICAgIFdlYkNvbW1vbldvcmtlckNsaWVudCogbV9jbGll
bnQ7CiAgICAgYm9vbCBtX3BhdXNlV29ya2VyQ29udGV4dE9uU3RhcnQ7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3BwCmluZGV4IGIxMmRiN2Q4MzQz
ODcwYzZkZWQzYTc3NDY3MjRlOTVjZTM2YmY0Y2UuLjkzZjg0MGM4MzQ3YmIzMDdiMDc2Nzc2Y2Y2
MTc5MDUyODk1MjA4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtl
ckJhc2UuY3BwCkBAIC0zMiw3ICszMiwyMCBAQAogI2luY2x1ZGUgIldlYldvcmtlckJhc2UuaCIK
IAogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgorI2luY2x1ZGUgIkRhdGFiYXNlVGFzay5o
IgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVsLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCIKKyNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogCisjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZUltcGwuaCIKKyNpbmNsdWRl
ICJXZWJGaWxlRXJyb3IuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgorI2luY2x1ZGUg
IldlYkZyYW1lSW1wbC5oIgorI2luY2x1ZGUgIldlYk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgorI2lu
Y2x1ZGUgIldlYlJ1bnRpbWVGZWF0dXJlcy5oIgorI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCisj
aW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgIldlYldvcmtlckNsaWVudC5oIgogCiAjaW5j
bHVkZSAiV29ya2VyQ29udGV4dC5oIgpAQCAtNDYsNyArNTksODIgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAotc3RhdGljIHZvaWQgaW52b2tlVGFza01ldGhv
ZCh2b2lkKiBwYXJhbSkKKy8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9uIHRoZSBtYWluIHRo
cmVhZCB0byBmb3JjZSB0byBpbml0aWFsaXplIHNvbWUgc3RhdGljCisvLyB2YWx1ZXMgdXNlZCBp
biBXZWJLaXQgYmVmb3JlIGFueSB3b3JrZXIgdGhyZWFkIGlzIHN0YXJ0ZWQuIFRoaXMgaXMgYmVj
YXVzZSBpbgorLy8gb3VyIHdvcmtlciBwcm9jZXNzcywgd2UgZG8gbm90IHJ1biBhbnkgV2ViS2l0
IGNvZGUgaW4gbWFpbiB0aHJlYWQgYW5kIHRodXMKKy8vIHdoZW4gbXVsdGlwbGUgd29ya2VycyB0
cnkgdG8gc3RhcnQgYXQgdGhlIHNhbWUgdGltZSwgd2UgbWlnaHQgaGl0IGNyYXNoIGR1ZQorLy8g
dG8gY29udGVudGlvbiBmb3IgaW5pdGlhbGl6aW5nIHN0YXRpYyB2YWx1ZXMuCitzdGF0aWMgdm9p
ZCBpbml0aWFsaXplV2ViS2l0U3RhdGljVmFsdWVzKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpbml0
aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgaW5pdGlh
bGl6ZWQgPSB0cnVlOworICAgICAgICAvLyBOb3RlIHRoYXQgd2UgaGF2ZSB0byBwYXNzIGEgVVJM
IHdpdGggdmFsaWQgcHJvdG9jb2wgaW4gb3JkZXIgdG8gZm9sbG93CisgICAgICAgIC8vIHRoZSBw
YXRoIHRvIGRvIHN0YXRpYyB2YWx1ZSBpbml0aWFsaXphdGlvbnMuCisgICAgICAgIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gb3JpZ2luID0KKyAgICAgICAgICAgIFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUoS1VSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vbG9jYWxob3N0IikpOworICAgICAgICBv
cmlnaW4ucmVsZWFzZSgpOworICAgIH0KK30KKworV2ViV29ya2VyQmFzZTo6V2ViV29ya2VyQmFz
ZSgpCisgICAgOiBtX3dlYlZpZXcoMCkKKyAgICAsIG1fYXNrZWRUb1Rlcm1pbmF0ZShmYWxzZSkK
K3sKKyAgICBpbml0aWFsaXplV2ViS2l0U3RhdGljVmFsdWVzKCk7Cit9CisKK1dlYldvcmtlckJh
c2U6On5XZWJXb3JrZXJCYXNlKCkKK3sKKyAgICBBU1NFUlQobV93ZWJWaWV3KTsKKyAgICBXZWJG
cmFtZUltcGwqIHdlYkZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4obV93ZWJWaWV3
LT5tYWluRnJhbWUoKSk7CisgICAgaWYgKHdlYkZyYW1lKQorICAgICAgICB3ZWJGcmFtZS0+c2V0
Q2xpZW50KDApOworICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsKK30KKwordm9pZCBXZWJXb3JrZXJC
YXNlOjpzdG9wV29ya2VyVGhyZWFkKCkKK3sKKyAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQor
ICAgICAgICByZXR1cm47CisgICAgbV9hc2tlZFRvVGVybWluYXRlID0gdHJ1ZTsKKyAgICBpZiAo
bV93b3JrZXJUaHJlYWQpCisgICAgICAgIG1fd29ya2VyVGhyZWFkLT5zdG9wKCk7Cit9CisKK3Zv
aWQgV2ViV29ya2VyQmFzZTo6aW5pdGlhbGl6ZUxvYWRlcihjb25zdCBXZWJVUkwmIHVybCkKK3sK
KyAgICAvLyBDcmVhdGUgJ3NoYWRvdyBwYWdlJy4gVGhpcyBwYWdlIGlzIG5ldmVyIGRpc3BsYXll
ZCwgaXQgaXMgdXNlZCB0byBwcm94eSB0aGUKKyAgICAvLyBsb2FkaW5nIHJlcXVlc3RzIGZyb20g
dGhlIHdvcmtlciBjb250ZXh0IHRvIHRoZSByZXN0IG9mIFdlYktpdCBhbmQgQ2hyb21pdW0KKyAg
ICAvLyBpbmZyYXN0cnVjdHVyZS4KKyAgICBBU1NFUlQoIW1fd2ViVmlldyk7CisgICAgbV93ZWJW
aWV3ID0gV2ViVmlldzo6Y3JlYXRlKDApOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0
T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKFdlYlJ1bnRpbWVGZWF0dXJlczo6aXNB
cHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpKTsKKyAgICAvLyBGSVhNRTogU2V0dGluZ3MgaW5mb3Jt
YXRpb24gc2hvdWxkIGJlIHBhc3NlZCB0byB0aGUgV29ya2VyIHByb2Nlc3MgZnJvbSBCcm93c2Vy
IHByb2Nlc3Mgd2hlbiB0aGUgd29ya2VyCisgICAgLy8gaXMgY3JlYXRlZCAoc2ltaWxhciB0byBS
ZW5kZXJUaHJlYWQ6Ok9uQ3JlYXRlTmV3VmlldykuCisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygp
LT5zZXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkKGZhbHNlKTsKKyAgICBtX3dlYlZp
ZXctPmluaXRpYWxpemVNYWluRnJhbWUodGhpcyk7CisKKyAgICBXZWJGcmFtZUltcGwqIHdlYkZy
YW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4obV93ZWJWaWV3LT5tYWluRnJhbWUoKSk7
CisKKyAgICAvLyBDb25zdHJ1Y3Qgc3Vic3RpdHV0ZSBkYXRhIHNvdXJjZSBmb3IgdGhlICdzaGFk
b3cgcGFnZScuIFdlIG9ubHkgbmVlZCBpdAorICAgIC8vIHRvIGhhdmUgc2FtZSBvcmlnaW4gYXMg
dGhlIHdvcmtlciBzbyB0aGUgbG9hZGluZyBjaGVja3Mgd29yayBjb3JyZWN0bHkuCisgICAgQ1N0
cmluZyBjb250ZW50KCIiKTsKKyAgICBpbnQgbGVuID0gc3RhdGljX2Nhc3Q8aW50Pihjb250ZW50
Lmxlbmd0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWYoU2hhcmVkQnVmZmVyOjpj
cmVhdGUoY29udGVudC5kYXRhKCksIGxlbikpOworICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0RGF0
YShidWYsIFN0cmluZygidGV4dC9odG1sIiksIFN0cmluZygiVVRGLTgiKSwgS1VSTCgpKTsKKyAg
ICB3ZWJGcmFtZS0+ZnJhbWUoKS0+bG9hZGVyKCktPmxvYWQoUmVzb3VyY2VSZXF1ZXN0KHVybCks
IHN1YnN0RGF0YSwgZmFsc2UpOworCisgICAgLy8gVGhpcyBkb2N1bWVudCB3aWxsIGJlIHVzZWQg
YXMgJ2xvYWRpbmcgY29udGV4dCcgZm9yIHRoZSB3b3JrZXIuCisgICAgbV9sb2FkaW5nRG9jdW1l
bnQgPSB3ZWJGcmFtZS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKTsKK30KKwordm9pZCBXZWJXb3JrZXJC
YXNlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPiB0YXNrKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoaW52b2tlVGFza01l
dGhvZCwgdGFzay5sZWFrUHRyKCkpOworfQorCit2b2lkIFdlYldvcmtlckJhc2U6Omludm9rZVRh
c2tNZXRob2Qodm9pZCogcGFyYW0pCiB7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayogdGFzayA9CiAgICAgICAgIHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2sqPihwYXJhbSk7CkBAIC01NCwxMCArMTQyLDE5MyBAQCBzdGF0aWMgdm9pZCBpbnZva2VUYXNr
TWV0aG9kKHZvaWQqIHBhcmFtKQogICAgIGRlbGV0ZSB0YXNrOwogfQogCit2b2lkIFdlYldvcmtl
ckJhc2U6OmRpZENyZWF0ZURhdGFTb3VyY2UoV2ViRnJhbWUqLCBXZWJEYXRhU291cmNlKiBkcykK
K3sKKyAgICAvLyBUZWxsIHRoZSBsb2FkZXIgdG8gbG9hZCB0aGUgZGF0YSBpbnRvIHRoZSAnc2hh
ZG93IHBhZ2UnIHN5bmNocm9ub3VzbHksCisgICAgLy8gc28gd2UgY2FuIGdyYWIgdGhlIHJlc3Vs
dGluZyBEb2N1bWVudCByaWdodCBhZnRlciBsb2FkLgorICAgIHN0YXRpY19jYXN0PFdlYkRhdGFT
b3VyY2VJbXBsKj4oZHMpLT5zZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKGZhbHNlKTsKK30K
IAotdm9pZCBXZWJXb3JrZXJCYXNlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoUGFzc093blB0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQorV2ViQXBwbGljYXRpb25DYWNo
ZUhvc3QqIFdlYldvcmtlckJhc2U6OmNyZWF0ZUFwcGxpY2F0aW9uQ2FjaGVIb3N0KFdlYkZyYW1l
KiwgV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQqIGFwcGNhY2hlSG9zdENsaWVudCkKIHsK
LSAgICBjYWxsT25NYWluVGhyZWFkKGludm9rZVRhc2tNZXRob2QsIHRhc2subGVha1B0cigpKTsK
KyAgICBpZiAoY29tbW9uQ2xpZW50KCkpCisgICAgICAgIHJldHVybiBjb21tb25DbGllbnQoKS0+
Y3JlYXRlQXBwbGljYXRpb25DYWNoZUhvc3QoYXBwY2FjaGVIb3N0Q2xpZW50KTsKKyAgICByZXR1
cm4gMDsKK30KKworLy8gV29ya2VyT2JqZWN0UHJveHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBXZWJXb3JrZXJCYXNl
Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQoreworICAg
IGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RNZXNzYWdl
VGFzaywgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UtPnRvV2lyZVN0cmluZygpLCBjaGFu
bmVscykpOworfQorCit2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RNZXNzYWdlVGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViV29ya2VyQmFzZSogdGhpc1B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFN0cmluZyBtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCit7Cisg
ICAgaWYgKCF0aGlzUHRyLT5jbGllbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViTWVz
c2FnZVBvcnRDaGFubmVsQXJyYXkgd2ViQ2hhbm5lbHMoY2hhbm5lbHMgPyBjaGFubmVscy0+c2l6
ZSgpIDogMCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJDaGFubmVscy5zaXplKCk7
ICsraSkgeworICAgICAgICB3ZWJDaGFubmVsc1tpXSA9ICgqY2hhbm5lbHMpW2ldLT5jaGFubmVs
KCktPndlYkNoYW5uZWxSZWxlYXNlKCk7CisgICAgICAgIHdlYkNoYW5uZWxzW2ldLT5zZXRDbGll
bnQoMCk7CisgICAgfQorCisgICAgdGhpc1B0ci0+Y2xpZW50KCktPnBvc3RNZXNzYWdlVG9Xb3Jr
ZXJPYmplY3QobWVzc2FnZSwgd2ViQ2hhbm5lbHMpOworfQorCit2b2lkIFdlYldvcmtlckJhc2U6
OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5l
TnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFk
KAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RFeGNlcHRpb25UYXNrLCBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKHRoaXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JN
ZXNzYWdlLCBsaW5lTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlVVJM
KSk7Cit9CisKK3ZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdEV4Y2VwdGlvblRhc2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViV29ya2VyQmFzZSogdGhpc1B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCkKK3sKKyAgICBpZiAoIXRoaXNQdHItPmNvbW1vbkNsaWVudCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICB0aGlzUHRyLT5jb21tb25DbGllbnQoKS0+cG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0KGVycm9yTWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VVUkwpOworfQorCit2b2lk
IFdlYldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VT
b3VyY2Ugc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBNZXNzYWdlVHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlTGV2ZWwgbGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGxpbmVOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIGRpc3Bh
dGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RDb25zb2xlTWVzc2Fn
ZVRhc2ssIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsIHR5cGUsIGxldmVsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSwgbGluZU51
bWJlciwgc291cmNlVVJMKSk7Cit9CisKK3ZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdENvbnNvbGVN
ZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckJhc2UqIHRoaXNQdHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvdXJjZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHlwZSwgaW50IGxl
dmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgbGluZU51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBpZiAoIXRoaXNQdHItPmNvbW1v
bkNsaWVudCgpKQorICAgICAgICByZXR1cm47CisgICAgdGhpc1B0ci0+Y29tbW9uQ2xpZW50KCkt
PnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KHNvdXJjZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwgbGV2
ZWwsIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7Cit9CisKK3ZvaWQgV2Vi
V29ya2VyQmFzZTo6cG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3IoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQoreworICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2so
JnBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yVGFzaywgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0
aGlzKSwgbWVzc2FnZSkpOworfQorCit2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RNZXNzYWdlVG9Q
YWdlSW5zcGVjdG9yVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViV29ya2VyQmFzZSog
dGhpc1B0ciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmICghdGhpc1B0ci0+Y29t
bW9uQ2xpZW50KCkpCisgICAgICAgIHJldHVybjsKKyAgICB0aGlzUHRyLT5jb21tb25DbGllbnQo
KS0+ZGlzcGF0Y2hEZXZUb29sc01lc3NhZ2UobWVzc2FnZSk7Cit9CisKK3ZvaWQgV2ViV29ya2Vy
QmFzZTo6dXBkYXRlSW5zcGVjdG9yU3RhdGVDb29raWUoY29uc3QgV1RGOjpTdHJpbmcmIGNvb2tp
ZSkKK3sKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ1
cGRhdGVJbnNwZWN0b3JTdGF0ZUNvb2tpZVRhc2ssIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhp
cyksIGNvb2tpZSkpOworfQorCit2b2lkIFdlYldvcmtlckJhc2U6OnVwZGF0ZUluc3BlY3RvclN0
YXRlQ29va2llVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViV29ya2VyQmFzZSogdGhp
c1B0ciwgY29uc3QgU3RyaW5nJiBjb29raWUpCit7CisgICAgaWYgKCF0aGlzUHRyLT5jb21tb25D
bGllbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHRoaXNQdHItPmNvbW1vbkNsaWVudCgpLT5z
YXZlRGV2VG9vbHNBZ2VudFN0YXRlKGNvb2tpZSk7Cit9CisKK3ZvaWQgV2ViV29ya2VyQmFzZTo6
Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQor
eworICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJmNvbmZp
cm1NZXNzYWdlVGFzaywgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1BlbmRpbmdBY3Rpdml0eSkp
OworfQorCit2b2lkIFdlYldvcmtlckJhc2U6OmNvbmZpcm1NZXNzYWdlVGFzayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViV29ya2VyQmFzZSogdGhpc1B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQoreworICAgIGlmICghdGhpc1B0
ci0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybjsKKyAgICB0aGlzUHRyLT5jbGllbnQoKS0+Y29u
ZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGhhc1BlbmRpbmdBY3Rpdml0eSk7Cit9CisKK3Zv
aWQgV2ViV29ya2VyQmFzZTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0Fj
dGl2aXR5KQoreworICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rh
c2soJnJlcG9ydFBlbmRpbmdBY3Rpdml0eVRhc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUGVuZGluZ0Fj
dGl2aXR5KSk7Cit9CisKK3ZvaWQgV2ViV29ya2VyQmFzZTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5
VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckJhc2UqIHRoaXNQdHIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNQZW5kaW5n
QWN0aXZpdHkpCit7CisgICAgaWYgKCF0aGlzUHRyLT5jbGllbnQoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIHRoaXNQdHItPmNsaWVudCgpLT5yZXBvcnRQZW5kaW5nQWN0aXZpdHkoaGFzUGVuZGlu
Z0FjdGl2aXR5KTsKK30KKwordm9pZCBXZWJXb3JrZXJCYXNlOjp3b3JrZXJDb250ZXh0Q2xvc2Vk
KCkKK3sKKyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3
b3JrZXJDb250ZXh0Q2xvc2VkVGFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKK30KKwordm9p
ZCBXZWJXb3JrZXJCYXNlOjp3b3JrZXJDb250ZXh0Q2xvc2VkVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJXb3JrZXJCYXNlKiB0aGlzUHRyKQoreworICAgIGlmICh0aGlzUHRyLT5jb21tb25D
bGllbnQoKSkKKyAgICAgICAgdGhpc1B0ci0+Y29tbW9uQ2xpZW50KCktPndvcmtlckNvbnRleHRD
bG9zZWQoKTsKKworICAgIHRoaXNQdHItPnN0b3BXb3JrZXJUaHJlYWQoKTsKK30KKwordm9pZCBX
ZWJXb3JrZXJCYXNlOjp3b3JrZXJDb250ZXh0RGVzdHJveWVkKCkKK3sKKyAgICBkaXNwYXRjaFRh
c2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGVzdHJveWVk
VGFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKK30KKwordm9pZCBXZWJXb3JrZXJCYXNlOjp3
b3JrZXJDb250ZXh0RGVzdHJveWVkVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXb3Jr
ZXJCYXNlKiB0aGlzUHRyKQoreworICAgIGlmICh0aGlzUHRyLT5jb21tb25DbGllbnQoKSkKKyAg
ICAgICAgdGhpc1B0ci0+Y29tbW9uQ2xpZW50KCktPndvcmtlckNvbnRleHREZXN0cm95ZWQoKTsK
KyAgICAvLyBUaGUgbGlmZXRpbWUgb2YgdGhpcyBwcm94eSBpcyBjb250cm9sbGVkIGJ5IHRoZSB3
b3JrZXIgY29udGV4dC4KKyAgICBkZWxldGUgdGhpc1B0cjsKK30KKworLy8gV29ya2VyTG9hZGVy
UHJveHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKwordm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0VGFza1RvTG9hZGVyKFBhc3NPd25Q
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKK3sKKyAgICBBU1NFUlQobV9s
b2FkaW5nRG9jdW1lbnQtPmlzRG9jdW1lbnQoKSk7CisgICAgbV9sb2FkaW5nRG9jdW1lbnQtPnBv
c3RUYXNrKHRhc2spOworfQorCit2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyQ29udGV4dCgKKyAgICBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKK3sKKyAgICBtX3dvcmtlclRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrRm9yTW9kZSh0YXNrLCBtb2RlKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29y
a2VyQmFzZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCmlu
ZGV4IGM0M2M2MzkzMWIwNDE4NTA2NDdhNWU1MjJjZGU0Y2UwMTkxMzVjYmIuLjkzNTk5ZjRmZGUy
YzYzODRjY2YxOWJiNDM3MzBmNGQyYmFiYmI3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJXb3JrZXJCYXNlLmgKQEAgLTM1LDI2ICszNSwxMzggQEAKIAogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb21tb25Xb3JrZXJDbGllbnQu
aCIKKyNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldvcmtlckxvYWRlclBy
b3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKKyNpbmNsdWRlICJXb3JrZXJU
aHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV29ya2VyVGhyZWFkOworfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0OworY2xhc3Mg
V2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQ7CitjbGFzcyBXZWJDb21tb25Xb3JrZXJDbGll
bnQ7CitjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFdlYlN0cmluZzsKK2NsYXNzIFdl
YlVSTDsKIGNsYXNzIFdlYlZpZXc7CitjbGFzcyBXZWJXb3JrZXI7CitjbGFzcyBXZWJXb3JrZXJD
bGllbnQ7CiAKIC8vIEJhc2UgY2xhc3MgZm9yIFdlYlNoYXJlZFdvcmtlckltcGwsIFdlYldvcmtl
ckNsaWVudEltcGwgYW5kIChkZWZ1bmN0KSBXZWJXb3JrZXJJbXBsCiAvLyBjb250YWluaW5nIGNv
bW1vbiBpbnRlcmZhY2UgZm9yIHNoYXJlZCB3b3JrZXJzIGFuZCBkZWRpY2F0ZWQgaW4tcHJvYyB3
b3JrZXJzIGltcGxlbWVudGF0aW9uLgogLy8KIC8vIEZJWE1FOiBSZW5hbWUgdGhpcyBjbGFzcyBp
bnRvIFdlYldvcmtlckJhc2UsIG1lcmdlIGV4aXN0aW5nIFdlYldvcmtlckJhc2UgYW5kIFdlYlNo
YXJlZFdvcmtlci4KLWNsYXNzIFdlYldvcmtlckJhc2UgOiBwdWJsaWMgV2ViQ29yZTo6V29ya2Vy
TG9hZGVyUHJveHkgeworY2xhc3MgTmV3V2ViV29ya2VyQmFzZSA6IHB1YmxpYyBXZWJDb3JlOjpX
b3JrZXJMb2FkZXJQcm94eSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBXZWJDb21tb25Xb3JrZXJD
bGllbnQqIGNvbW1vbkNsaWVudCgpID0gMDsKKyAgICB2aXJ0dWFsIE5ld1dlYkNvbW1vbldvcmtl
ckNsaWVudCogbmV3Q29tbW9uQ2xpZW50KCkgPSAwOwogICAgIHZpcnR1YWwgV2ViVmlldyogdmll
dygpIGNvbnN0ID0gMDsKK307CisKKy8vIEJhc2UgY2xhc3MgZm9yIFdlYlNoYXJlZFdvcmtlcklt
cGwgYW5kIFdlYldvcmtlckltcGwuIEl0IGNvbnRhaW5zIGNvbW1vbgorLy8gY29kZSB1c2VkIGJ5
IGJvdGggaW1wbGVtZW50YXRpb24gY2xhc3NlcywgaW5jbHVkaW5nIGltcGxlbWVudGF0aW9ucyBv
ZiB0aGUKKy8vIFdvcmtlck9iamVjdFByb3h5IGFuZCBXb3JrZXJMb2FkZXJQcm94eSBpbnRlcmZh
Y2VzLgorY2xhc3MgV2ViV29ya2VyQmFzZSA6IHB1YmxpYyBXZWJDb3JlOjpXb3JrZXJPYmplY3RQ
cm94eQorICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBOZXdXZWJXb3JrZXJCYXNlCisgICAg
ICAgICAgICAgICAgICAgICwgcHVibGljIFdlYkZyYW1lQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBX
ZWJXb3JrZXJCYXNlKCk7CisgICAgdmlydHVhbCB+V2ViV29ya2VyQmFzZSgpOworCisgICAgLy8g
V2ViQ29tbW9uV29ya2VyQmFzZSBtZXRob2RzOgorICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2Fn
ZVRvV29ya2VyT2JqZWN0KAorICAgICAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4sCisgICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
KAorICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYsIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoCisgICAg
ICAgIFdlYkNvcmU6Ok1lc3NhZ2VTb3VyY2UsIFdlYkNvcmU6Ok1lc3NhZ2VUeXBlLAorICAgICAg
ICBXZWJDb3JlOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFdURjo6U3RyaW5nJiwgaW50LCBjb25zdCBX
VEY6OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvUGFnZUluc3BlY3Rv
cihjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJbnNwZWN0b3JT
dGF0ZUNvb2tpZShjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBjb25maXJt
TWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydFBl
bmRpbmdBY3Rpdml0eShib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgd29ya2VyQ29udGV4dENsb3Nl
ZCgpOworICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0RGVzdHJveWVkKCk7CisgICAgdmly
dHVhbCBXZWJWaWV3KiB2aWV3KCkgY29uc3QgeyByZXR1cm4gbV93ZWJWaWV3OyB9CisKKyAgICAv
LyBXZWJDb3JlOjpXb3JrZXJMb2FkZXJQcm94eSBtZXRob2RzOgorICAgIHZpcnR1YWwgdm9pZCBw
b3N0VGFza1RvTG9hZGVyKFBhc3NPd25QdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4pOworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRl
eHQoCisgICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4sIGNvbnN0IFdURjo6U3RyaW5nJiBtb2RlKTsKKworICAgIC8vIFdlYkZyYW1lQ2xpZW50
IG1ldGhvZHMgdG8gc3VwcG9ydCByZXNvdXJjZSBsb2FkaW5nIHRocnUgdGhlICdzaGFkb3cgcGFn
ZScuCisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZURhdGFTb3VyY2UoV2ViRnJhbWUqLCBXZWJE
YXRhU291cmNlKik7CisgICAgdmlydHVhbCBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdCogY3JlYXRl
QXBwbGljYXRpb25DYWNoZUhvc3QoV2ViRnJhbWUqLCBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENs
aWVudCopOwogCiAgICAgLy8gRXhlY3V0ZXMgdGhlIGdpdmVuIHRhc2sgb24gdGhlIG1haW4gdGhy
ZWFkLgogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChQYXNzT3duUHRy
PFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsKKworcHJvdGVjdGVkOgor
ICAgIHZpcnR1YWwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQoKSA9IDA7Cisg
ICAgdmlydHVhbCBXZWJXb3JrZXJDbGllbnQqIGNsaWVudCgpID0gMDsKKworICAgIHZvaWQgc2V0
V29ya2VyVGhyZWFkKFBhc3NSZWZQdHI8V2ViQ29yZTo6V29ya2VyVGhyZWFkPiB0aHJlYWQpIHsg
bV93b3JrZXJUaHJlYWQgPSB0aHJlYWQ7IH0KKyAgICBXZWJDb3JlOjpXb3JrZXJUaHJlYWQqIHdv
cmtlclRocmVhZCgpIHsgcmV0dXJuIG1fd29ya2VyVGhyZWFkLmdldCgpOyB9CisKKyAgICAvLyBT
aHV0cyBkb3duIHRoZSB3b3JrZXIgdGhyZWFkLgorICAgIHZvaWQgc3RvcFdvcmtlclRocmVhZCgp
OworCisgICAgLy8gQ3JlYXRlcyB0aGUgc2hhZG93IGxvYWRlciB1c2VkIGZvciB3b3JrZXIgbmV0
d29yayByZXF1ZXN0cy4KKyAgICB2b2lkIGluaXRpYWxpemVMb2FkZXIoY29uc3QgV2ViVVJMJik7
CisKK3ByaXZhdGU6CisgICAgLy8gRnVuY3Rpb24gdXNlZCB0byBpbnZva2UgdGFza3Mgb24gdGhl
IG1haW4gdGhyZWFkLgorICAgIHN0YXRpYyB2b2lkIGludm9rZVRhc2tNZXRob2Qodm9pZCopOwor
CisgICAgLy8gVGFza3MgdGhhdCBhcmUgcnVuIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICBzdGF0
aWMgdm9pZCBwb3N0TWVzc2FnZVRhc2soCisgICAgICAgIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsCisgICAgICAgIFdlYldvcmtlckJhc2UqIHRoaXNQdHIsCisgICAg
ICAgIFdURjo6U3RyaW5nIG1lc3NhZ2UsCisgICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKTsKKyAgICBzdGF0aWMgdm9pZCBwb3N0RXhj
ZXB0aW9uVGFzaygKKyAgICAgICAgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwKKyAgICAgICAgV2ViV29ya2VyQmFzZSogdGhpc1B0ciwKKyAgICAgICAgY29uc3QgV1RG
OjpTdHJpbmcmIG1lc3NhZ2UsCisgICAgICAgIGludCBsaW5lTnVtYmVyLAorICAgICAgICBjb25z
dCBXVEY6OlN0cmluZyYgc291cmNlVVJMKTsKKyAgICBzdGF0aWMgdm9pZCBwb3N0Q29uc29sZU1l
c3NhZ2VUYXNrKAorICAgICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LAorICAgICAgICBXZWJXb3JrZXJCYXNlKiB0aGlzUHRyLAorICAgICAgICBpbnQgc291cmNl
LAorICAgICAgICBpbnQgdHlwZSwKKyAgICAgICAgaW50IGxldmVsLAorICAgICAgICBjb25zdCBX
VEY6OlN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAgaW50IGxpbmVOdW1iZXIsCisgICAgICAgIGNv
bnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkwpOworICAgIHN0YXRpYyB2b2lkIHBvc3RNZXNzYWdl
VG9QYWdlSW5zcGVjdG9yVGFzayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2Vi
V29ya2VyQmFzZSosIGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgc3RhdGljIHZvaWQgdXBkYXRl
SW5zcGVjdG9yU3RhdGVDb29raWVUYXNrKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBXZWJXb3JrZXJCYXNlKiB0aGlzUHRyLCBjb25zdCBXVEY6OlN0cmluZyYgY29va2llKTsKKyAg
ICBzdGF0aWMgdm9pZCBjb25maXJtTWVzc2FnZVRhc2soCisgICAgICAgIFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCisgICAgICAgIFdlYldvcmtlckJhc2UqIHRoaXNQ
dHIsCisgICAgICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KTsKKyAgICBzdGF0aWMgdm9pZCBy
ZXBvcnRQZW5kaW5nQWN0aXZpdHlUYXNrKAorICAgICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LAorICAgICAgICBXZWJXb3JrZXJCYXNlKiB0aGlzUHRyLAorICAg
ICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSk7CisgICAgc3RhdGljIHZvaWQgd29ya2VyQ29u
dGV4dENsb3NlZFRhc2soCisgICAgICAgIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsCisgICAgICAgIFdlYldvcmtlckJhc2UqIHRoaXNQdHIpOworICAgIHN0YXRpYyB2
b2lkIHdvcmtlckNvbnRleHREZXN0cm95ZWRUYXNrKAorICAgICAgICBXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAorICAgICAgICBXZWJXb3JrZXJCYXNlKiB0aGlzUHRy
KTsKKworICAgIC8vICdzaGFkb3cgcGFnZScgLSBjcmVhdGVkIHRvIHByb3h5IGxvYWRpbmcgcmVx
dWVzdHMgZnJvbSB0aGUgd29ya2VyLgorICAgIFJlZlB0cjxXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0PiBtX2xvYWRpbmdEb2N1bWVudDsKKyAgICBXZWJWaWV3KiBtX3dlYlZpZXc7Cisg
ICAgYm9vbCBtX2Fza2VkVG9UZXJtaW5hdGU7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6V29ya2Vy
VGhyZWFkPiBtX3dvcmtlclRocmVhZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcApp
bmRleCA1MDkwYWZmYmM1MTU3NjZiY2EwMDc3ZWVjY2UyZTRmZjBlNDhlMzAxLi41YjlmMzIwNDdk
ZGU1NzM5YWM5Y2MzNmI5YTViMWJiMmQwNjdhMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcApAQCAtNjMsNiArNjMsNyBAQAog
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAj
aW5jbHVkZSAiV2ViV29ya2VyLmgiCisjaW5jbHVkZSAiV2ViV29ya2VySW1wbC5oIgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViV29ya2VyQ2xpZW50SW1wbC5oCmluZGV4IDUxODlhZDE0YTY0NTQ0YmRiZjdiNjQ5M2IzMGI4
NjlmM2RmYjcyYTcuLjcwMDZhOTRjZjdkOTZhNjQzYzgzOWI5NTk5YTU3ZDlkNGIwZTY2YjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgK
QEAgLTU4LDggKzU4LDggQEAgY2xhc3MgV2ViRnJhbWVJbXBsOwogLy8gSW4gZXNzZW5jZSwgdGhp
cyBjbGFzcyB3cmFwcyBXb3JrZXJNZXNzYWdpbmdQcm94eS4KIGNsYXNzIFdlYldvcmtlckNsaWVu
dEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6V29ya2VyQ29udGV4dFByb3h5CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICwgcHVibGljIFdlYkNvcmU6Oldvcmtlck9iamVjdFByb3h5Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICwgcHVibGljIFdlYldvcmtlckJhc2UKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgLCBwdWJsaWMgV2ViQ29tbW9uV29ya2VyQ2xpZW50IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgLCBwdWJsaWMgTmV3V2ViV29ya2VyQmFzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAsIHB1YmxpYyBOZXdXZWJDb21tb25Xb3JrZXJDbGllbnQgewogcHVibGljOgog
ICAgIC8vIFdlYkNvcmU6OldvcmtlckNvbnRleHRQcm94eSBGYWN0b3J5LgogICAgIHN0YXRpYyBX
ZWJDb3JlOjpXb3JrZXJDb250ZXh0UHJveHkqIGNyZWF0ZVdvcmtlckNvbnRleHRQcm94eShXZWJD
b3JlOjpXb3JrZXIqKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKIAogICAgIC8vIFdl
YkNvbW1lbnRXb3JrZXJCYXNlIG1ldGhvZHM6Ci0gICAgdmlydHVhbCBXZWJDb21tb25Xb3JrZXJD
bGllbnQqIGNvbW1vbkNsaWVudCgpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICB2aXJ0dWFsIE5ld1dl
YkNvbW1vbldvcmtlckNsaWVudCogbmV3Q29tbW9uQ2xpZW50KCkgeyByZXR1cm4gdGhpczsgfQog
ICAgIHZpcnR1YWwgV2ViVmlldyogdmlldygpIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VySW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2JmZWVl
OGE0YmM4NjRlZTY1OGI5NGEwZDNkMGNiNDIwYTljNGNkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VySW1wbC5jcHAKQEAgLTAsMCArMSwxNjMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViV29ya2VySW1wbC5oIgorCisjaW5j
bHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCisjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29udGV4
dC5oIgorI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgIktVUkwu
aCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgor
I2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlN1YnN0aXR1dGVEYXRhLmgiCisjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworI2luY2x1ZGUg
IlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgiCisjaW5jbHVkZSAiV2ViTWVzc2FnZVBvcnRD
aGFubmVsLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAicGxh
dGZvcm0vV2ViVVJMLmgiCisjaW5jbHVkZSAiV2ViV29ya2VyQ2xpZW50LmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2lmIEVOQUJMRShXT1JL
RVJTKQorCitXZWJXb3JrZXIqIFdlYldvcmtlcjo6Y3JlYXRlKFdlYldvcmtlckNsaWVudCogY2xp
ZW50KQoreworICAgIHJldHVybiBuZXcgV2ViV29ya2VySW1wbChjbGllbnQpOworfQorCisKK1dl
YldvcmtlckltcGw6OldlYldvcmtlckltcGwoV2ViV29ya2VyQ2xpZW50KiBjbGllbnQpCisgICAg
OiBtX2NsaWVudChjbGllbnQpCit7Cit9CisKK1dlYldvcmtlckltcGw6On5XZWJXb3JrZXJJbXBs
KCkKK3sKK30KKworTmV3V2ViQ29tbW9uV29ya2VyQ2xpZW50KiBXZWJXb3JrZXJJbXBsOjpuZXdD
b21tb25DbGllbnQoKQoreworICAgIHJldHVybiBtX2NsaWVudDsKK30KKworV2ViQ29tbW9uV29y
a2VyQ2xpZW50KiBXZWJXb3JrZXJJbXBsOjpjb21tb25DbGllbnQoKQoreworICAgIHJldHVybiBt
X2NsaWVudDsKK30KKwordm9pZCBXZWJXb3JrZXJJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyQ29u
dGV4dFRhc2soV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlcklt
cGwqIHRoaXNQdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFy
cmF5PiBjaGFubmVscykKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkp
OworICAgIERlZGljYXRlZFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPQorICAgICAgICBz
dGF0aWNfY2FzdDxEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Kj4oY29udGV4dCk7CisKKyAgICBPd25Q
dHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMgPQorICAgICAgICBNZXNzYWdlUG9ydDo6ZW50YW5n
bGVQb3J0cygqY29udGV4dCwgY2hhbm5lbHMpOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHNlcmlhbGl6ZWRNZXNzYWdlID0KKyAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGVGcm9tV2lyZShtZXNzYWdlKTsKKyAgICB3b3JrZXJDb250ZXh0LT5kaXNwYXRjaEV2
ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKAorICAgICAgICBwb3J0cy5yZWxlYXNlKCksIHNlcmlh
bGl6ZWRNZXNzYWdlLnJlbGVhc2UoKSkpOworICAgIHRoaXNQdHItPmNvbmZpcm1NZXNzYWdlRnJv
bVdvcmtlck9iamVjdCh3b3JrZXJDb250ZXh0LT5oYXNQZW5kaW5nQWN0aXZpdHkoKSk7Cit9CisK
Ky8vIFdlYldvcmtlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgV2ViV29ya2VySW1wbDo6c3RhcnRXb3Jr
ZXJDb250ZXh0KGNvbnN0IFdlYlVSTCYgc2NyaXB0VXJsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiB1c2VyQWdlbnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHNvdXJjZUNvZGUp
Cit7CisgICAgaW5pdGlhbGl6ZUxvYWRlcihzY3JpcHRVcmwpOworICAgIHNldFdvcmtlclRocmVh
ZChEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzY3JpcHRVcmwsIHVzZXJBZ2VudCwgc291
cmNlQ29kZSwgKnRoaXMsICp0aGlzLCBEb250UGF1c2VXb3JrZXJDb250ZXh0T25TdGFydCkpOwor
ICAgIC8vIFdvcmtlciBpbml0aWFsaXphdGlvbiBtZWFucyBhIHBlbmRpbmcgYWN0aXZpdHkuCisg
ICAgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KHRydWUpOworICAgIHdvcmtlclRocmVhZCgpLT5zdGFy
dCgpOworfQorCit2b2lkIFdlYldvcmtlckltcGw6OnRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKQor
eworICAgIHN0b3BXb3JrZXJUaHJlYWQoKTsKK30KKwordm9pZCBXZWJXb3JrZXJJbXBsOjpwb3N0
TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYk1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5JiB3ZWJDaGFubmVscykKK3sKKyAgICBPd25QdHI8TWVzc2FnZVBvcnRD
aGFubmVsQXJyYXk+IGNoYW5uZWxzOworICAgIGlmICh3ZWJDaGFubmVscy5zaXplKCkpIHsKKyAg
ICAgICAgY2hhbm5lbHMgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkod2Vi
Q2hhbm5lbHMuc2l6ZSgpKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViQ2hh
bm5lbHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbD4gcGxhdGZvcm1fY2hhbm5lbCA9CisgICAgICAgICAgICAgICAgUGxhdGZvcm1N
ZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZSh3ZWJDaGFubmVsc1tpXSk7CisgICAgICAgICAgICB3
ZWJDaGFubmVsc1tpXS0+c2V0Q2xpZW50KHBsYXRmb3JtX2NoYW5uZWwuZ2V0KCkpOworICAgICAg
ICAgICAgKCpjaGFubmVscylbaV0gPSBNZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShwbGF0Zm9y
bV9jaGFubmVsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHdvcmtlclRocmVhZCgpLT5ydW5M
b29wKCkucG9zdFRhc2soCisgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdE1lc3NhZ2VU
b1dvcmtlckNvbnRleHRUYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9z
c1RocmVhZEFjY2Vzcyh0aGlzKSwgU3RyaW5nKG1lc3NhZ2UpLCBjaGFubmVscy5yZWxlYXNlKCkp
KTsKK30KKwordm9pZCBXZWJXb3JrZXJJbXBsOjp3b3JrZXJPYmplY3REZXN0cm95ZWQoKQorewor
ICAgIC8vIFdvcmtlciBvYmplY3QgaW4gdGhlIHJlbmRlcmVyIHdhcyBkZXN0cm95ZWQsIHBlcmhh
cHMgYSByZXN1bHQgb2YgR0MuCisgICAgLy8gRm9yIHVzLCBpdCdzIGEgc2lnbmFsIHRvIHN0YXJ0
IHRlcm1pbmF0aW5nIHRoZSBXb3JrZXJDb250ZXh0IHRvby4KKyAgICAvLyBGSVhNRTogd2hlbiAn
a2lsbCBhIHdvcmtlcicgaHRtbDUgc3BlYyBhbGdvcml0aG0gaXMgaW1wbGVtZW50ZWQsIGl0Cisg
ICAgLy8gc2hvdWxkIGJlIHVzZWQgaGVyZSBpbnN0ZWFkIG9mICd0ZXJtaW5hdGUgYSB3b3JrZXIn
LgorICAgIHRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKTsKK30KKwordm9pZCBXZWJXb3JrZXJJbXBs
OjpjbGllbnREZXN0cm95ZWQoKQoreworICAgIG1fY2xpZW50ID0gMDsKK30KKworI2Vsc2UKKwor
V2ViV29ya2VyKiBXZWJXb3JrZXI6OmNyZWF0ZShXZWJXb3JrZXJDbGllbnQqIGNsaWVudCkKK3sK
KyAgICByZXR1cm4gMDsKK30KKworI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckltcGwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZjA1MmE3OTFlNWYyYzRmYWM4ZTU3ZGUzNmU4NTA3Nzg1M2Y3NjY3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VySW1w
bC5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYldvcmtlckltcGxfaAorI2RlZmluZSBXZWJX
b3JrZXJJbXBsX2gKKworI2luY2x1ZGUgIldlYldvcmtlci5oIgorCisjaWYgRU5BQkxFKFdPUktF
UlMpCisKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKKyNpbmNsdWRlICJX
ZWJXb3JrZXJCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBUaGlzIGNsYXNzIGlz
IHVzZWQgYnkgdGhlIHdvcmtlciBwcm9jZXNzIGNvZGUgdG8gdGFsayB0byB0aGUgV2ViQ29yZTo6
V29ya2VyCisvLyBpbXBsZW1lbnRhdGlvbi4gIEl0IGNhbid0IHVzZSBpdCBkaXJlY3RseSBzaW5j
ZSBpdCB1c2VzIFdlYktpdCB0eXBlcywgc28gdGhpcworLy8gY2xhc3MgY29udmVydHMgdGhlIGRh
dGEgdHlwZXMuICBXaGVuIHRoZSBXZWJDb3JlOjpXb3JrZXIgb2JqZWN0IHdhbnRzIHRvIGNhbGwK
Ky8vIFdlYkNvcmU6Oldvcmtlck9iamVjdFByb3h5LCB0aGlzIGNsYXNzIHdpbGwgY29udmVyIHRv
IENocm9tZSBkYXRhIHR5cGVzIGZpcnN0CisvLyBhbmQgdGhlbiBjYWxsIHRoZSBzdXBwbGllZCBX
ZWJXb3JrZXJDbGllbnQuCitjbGFzcyBXZWJXb3JrZXJJbXBsIDogcHVibGljIFdlYldvcmtlckJh
c2UsIHB1YmxpYyBXZWJXb3JrZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYldvcmtlcklt
cGwoV2ViV29ya2VyQ2xpZW50KiBjbGllbnQpOworCisgICAgLy8gV2ViV29ya2VyIG1ldGhvZHM6
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0V29ya2VyQ29udGV4dChjb25zdCBXZWJVUkwmLCBjb25z
dCBXZWJTdHJpbmcmLCBjb25zdCBXZWJTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGVybWlu
YXRlV29ya2VyQ29udGV4dCgpOworICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2Vy
Q29udGV4dChjb25zdCBXZWJTdHJpbmcmLCBjb25zdCBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eSYpOworICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgY2xpZW50RGVzdHJveWVkKCk7CisKKyAgICAvLyBXZWJXb3JrZXJCYXNlIG1ldGhv
ZHM6CisgICAgdmlydHVhbCBXZWJXb3JrZXJDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xp
ZW50OyB9CisgICAgdmlydHVhbCBXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCgp
OworCisgICAgLy8gTmV3V2ViV29ya2VyQmFzZSBtZXRob2RzOgorICAgIHZpcnR1YWwgTmV3V2Vi
Q29tbW9uV29ya2VyQ2xpZW50KiBuZXdDb21tb25DbGllbnQoKTsKKworcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIH5XZWJXb3JrZXJJbXBsKCk7CisKKyAgICAvLyBUYXNrcyB0aGF0IGFyZSBydW4gb24g
dGhlIHdvcmtlciB0aHJlYWQuCisgICAgc3RhdGljIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNv
bnRleHRUYXNrKAorICAgICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LAorICAgICAgICBXZWJXb3JrZXJJbXBsKiB0aGlzUHRyLAorICAgICAgICBjb25zdCBXVEY6
OlN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAgUGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9y
dENoYW5uZWxBcnJheT4gY2hhbm5lbHMpOworCisgICAgV2ViV29ya2VyQ2xpZW50KiBtX2NsaWVu
dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdPUktF
UlMpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcAppbmRleCA4Y2U1ZTY5NzZi
YjA5MTkzZDNhNzQwOWE1YTFjZjc4ZmM0YzA1NTcxLi41MjNlZjc1YWZlMmM4NWVhNmQwOGU3OGJm
NDg1NjhiMTYyY2QyMDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcApAQCAtMTU2LDcg
KzE1Niw3IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6c3RvcCgpCiAg
ICAgfQogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RPcGVu
RmlsZVN5c3RlbVRvTWFpblRocmVhZChXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVu
dCwgV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUs
IGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZTo6cG9zdE9wZW5GaWxlU3lzdGVtVG9NYWluVGhyZWFkKE5ld1dlYkNvbW1vbldvcmtlckNsaWVu
dCogY29tbW9uQ2xpZW50LCBXZWJGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGxvbmcgbG9uZyBzaXpl
LCBib29sIGNyZWF0ZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGRpc3BhdGNoVGFza1Rv
TWFpblRocmVhZCgKICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZvcGVuRmlsZVN5c3RlbU9u
TWFpblRocmVhZCwKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U6OnBvc3RSZWFkRGlyZWN0b3J5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwg
bW9kZSkpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6Om9wZW5G
aWxlU3lzdGVtT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb21tb25X
b3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCwgV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25n
IGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2Uq
IGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlOjpvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgTmV3V2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIFdlYkZpbGVTeXN0
ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBp
ZiAoIWNvbW1vbkNsaWVudCkKICAgICAgICAgYnJpZGdlLT5kaWRGYWlsT25NYWluVGhyZWFkKFdl
YkZpbGVFcnJvckFib3J0LCBtb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaAppbmRleCA5YzQ0
Y2IxYTk3NmU4ZDY1MmUwNjA0ZmM2MWU3MGE5MmUzYTJlZGU5Li44YWU3ZWIzNDk1MTBmNDlmMDI5
NmQ1YmQ0OTI0MDU1Mjc3NGEwM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5oCkBAIC01MSw3
ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBBc3luY0ZpbGVTeXN0ZW07CiBj
bGFzcyBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrczsKLWNsYXNzIFdlYkNvbW1vbldvcmtl
ckNsaWVudDsKK2NsYXNzIE5ld1dlYkNvbW1vbldvcmtlckNsaWVudDsKIGNsYXNzIFRocmVhZGFi
bGVDYWxsYmFja3NCcmlkZ2VXcmFwcGVyOwogY2xhc3MgV2ViRmlsZVN5c3RlbUNhbGxiYWNrczsK
IHN0cnVjdCBXZWJGaWxlSW5mbzsKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIC8vIE1ldGhvZHMgdGhhdCBjcmVhdGUgYW4gaW5zdGFuY2UgYW5kIHBvc3QgYW4gaW5pdGlh
bCByZXF1ZXN0IHRhc2sgdG8gdGhlIG1haW4gdGhyZWFkLiBUaGV5IG11c3QgYmUgY2FsbGVkIG9u
IHRoZSB3b3JrZXIgdGhyZWFkLgotICAgIHZvaWQgcG9zdE9wZW5GaWxlU3lzdGVtVG9NYWluVGhy
ZWFkKFdlYkNvbW1vbldvcmtlckNsaWVudCosIFdlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9u
ZyBzaXplLCBib29sIGNyZWF0ZSwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICB2b2lkIHBvc3RP
cGVuRmlsZVN5c3RlbVRvTWFpblRocmVhZChOZXdXZWJDb21tb25Xb3JrZXJDbGllbnQqLCBXZWJG
aWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIGNvbnN0IFN0cmlu
ZyYgbW9kZSk7CiAgICAgdm9pZCBwb3N0TW92ZVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgc3JjUGF0aCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZGVzdFBh
dGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAgICAgdm9pZCBwb3N0Q29weVRvTWFpblRocmVhZChX
ZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgc3JjUGF0aCwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgZGVzdFBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAgICAgdm9pZCBwb3N0UmVt
b3ZlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRo
LCBjb25zdCBTdHJpbmcmIG1vZGUpOwpAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6CiAgICAg
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShXZWJDb3JlOjpXb3JrZXJMb2FkZXJQcm94
eSosIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzKik7CiAKICAgICAvLyBNZXRob2RzIHRoYXQgYXJlIHRvIGJlIGNhbGxlZCBvbiB0aGUgbWFp
biB0aHJlYWQuCi0gICAgc3RhdGljIHZvaWQgb3BlbkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvbW1vbldvcmtlckNsaWVudCosIFdl
YkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgc3RhdGlj
IHZvaWQgb3BlbkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIE5ld1dlYkNvbW1vbldvcmtlckNsaWVudCosIFdlYkZpbGVTeXN0ZW06OlR5cGUs
IGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAgICAgc3RhdGljIHZvaWQgbW92ZU9uTWFpblRo
cmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNv
bnN0IFdlYkNvcmU6OktVUkwmIHNyY1BhdGgsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGRlc3RQYXRo
LCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsK
ICAgICBzdGF0aWMgdm9pZCBjb3B5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgc3JjUGF0aCwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgZGVzdFBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOwogICAgIHN0YXRpYyB2b2lkIHJlbW92ZU9uTWFp
blRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSos
IGNvbnN0IFdlYkNvcmU6OktVUkwmIHBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE2ZmYyZjUwMzM4OWE0OTdjZTYwOGY3ODhhNDFkZmUwMDgz
MDY3MzIuLjYwY2VmZTMwN2YyYzM5MDZkZjRhZGM5Nzk2YTdlYzJjODU4YzFkYzkgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxMS0xMi0yNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+
CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwMzczNC4KKyAgICAgICAgaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTAzNzM0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTI3OAorCisgICAgICAgIEJyb2tlIGNyLW1h
YyAoUmVxdWVzdGVkIGJ5IGRzbG9tb3Ygb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0V2ViV29ya2VyLmg6CisgICAgICAgIChUZXN0V2ViV29ya2Vy
OjpjcmVhdGVXb3JrZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpjcmVhdGVXb3JrZXIpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisKIDIwMTEtMTItMjcg
IERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KIAogCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0V2ViV29ya2VyLmggYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0V2ViV29ya2VyLmgKaW5kZXggYWQ4MmE4N2U5ZWM1Y2VhM2Zi
NmZkNzc3ZWE2MzY3OTgzNmUyZDFkOS4uNzFiZmZjZTYyOGY3YjAwYjA0NjhkMDNiMzc3MjY4Y2I2
ZjVlZjkzZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdl
Yldvcmtlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJXb3Jr
ZXIuaApAQCAtMzIsOCArMzIsOCBAQAogI2RlZmluZSBUZXN0V2ViV29ya2VyX2gKIAogI2luY2x1
ZGUgIldlYk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgotI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNs
aWVudC5oIgogI2luY2x1ZGUgIldlYldvcmtlci5oIgorI2luY2x1ZGUgIldlYldvcmtlckNsaWVu
dC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNDMsNyArNDMsNyBAQCBjbGFzcyBXZWJVUkw7CiB9CiAKIGNsYXNzIFRlc3RXZWJXb3JrZXIg
OiBwdWJsaWMgV2ViS2l0OjpXZWJXb3JrZXIsCi0gICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFdlYktpdDo6V2ViU2hhcmVkV29ya2VyQ2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBXZWJLaXQ6OldlYldvcmtlckNsaWVudCwKICAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWMgV1RGOjpSZWZDb3VudGVkPFRlc3RXZWJXb3JrZXI+IHsKIHB1YmxpYzoKICAgICBUZXN0V2Vi
V29ya2VyKCkKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICAvLyBSZWxlYXNlcyB0
aGUgcmVmZXJlbmNlIGhlbGQgZm9yIHdvcmtlciBjb250ZXh0IG9iamVjdC4KICAgICAgICAgZGVy
ZWYoKTsKICAgICB9Ci0gICAgdmlydHVhbCBXZWJLaXQ6OldlYldvcmtlciogY3JlYXRlV29ya2Vy
KFdlYktpdDo6V2ViU2hhcmVkV29ya2VyQ2xpZW50KikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1
YWwgV2ViS2l0OjpXZWJXb3JrZXIqIGNyZWF0ZVdvcmtlcihXZWJLaXQ6OldlYldvcmtlckNsaWVu
dCopIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJl
c2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVh
bCBXZWJLaXQ6OldlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBjcmVhdGVBcHBsaWNhdGlvbkNhY2hl
SG9zdChXZWJLaXQ6OldlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50KikgeyByZXR1cm4gMDsg
fQogICAgIHZpcnR1YWwgYm9vbCBhbGxvd0RhdGFiYXNlKFdlYktpdDo6V2ViRnJhbWUqLCBjb25z
dCBXZWJLaXQ6OldlYlN0cmluZyYsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiwgdW5zaWduZWQg
bG9uZykgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuY3BwCmluZGV4IDFiMDY4N2RkMDZmNWQ5MTAzM2ZiMWYxYmU2YzQ5ZTJkNDBi
NTVhY2YuLmRlNjVlOTA1NDk3ZmI4N2QyZmE1OGY1ZTI0ZWYzZDAxMGM1Y2U4YTIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTgzNyw3ICs4
MzcsNyBAQCBXZWJQbHVnaW4qIFdlYlZpZXdIb3N0OjpjcmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZy
YW1lLCBjb25zdCBXZWJQbHVnaW5QYXJhbXMmIHBhcgogICAgIHJldHVybiB3ZWJraXRfc3VwcG9y
dDo6Q3JlYXRlV2ViUGx1Z2luKGZyYW1lLCBwYXJhbXMpOwogfQogCi1XZWJXb3JrZXIqIFdlYlZp
ZXdIb3N0OjpjcmVhdGVXb3JrZXIoV2ViRnJhbWUqLCBXZWJTaGFyZWRXb3JrZXJDbGllbnQqKQor
V2ViV29ya2VyKiBXZWJWaWV3SG9zdDo6Y3JlYXRlV29ya2VyKFdlYkZyYW1lKiwgV2ViV29ya2Vy
Q2xpZW50KikKIHsKICAgICByZXR1cm4gbmV3IFRlc3RXZWJXb3JrZXIoKTsKIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4IDBiYzRjMzhlNjczOTVk
ZGIyYzhkNDhkZGFlMTQxYmMwYmVjYjY2MzMuLjMxZWNkNzk2YWRjNzk3OWRkMzkwMmJkYmI2NDFl
YzE5MDg2MDQyNDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuaApAQCAtNTUsNyArNTUsNiBAQCBjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2s7CiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudDsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uQ2xp
ZW50TW9jazsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s7Ci1jbGFzcyBXZWJTaGFy
ZWRXb3JrZXJDbGllbnQ7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI7CiBjbGFzcyBX
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrOwogY2xhc3MgV2ViU3BlZWNoSW5wdXRMaXN0ZW5l
cjsKQEAgLTE3NCw3ICsxNzMsNyBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6
OldlYlNwZWxsQ2hlY2tDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbAogCiAgICAgLy8g
V2ViS2l0OjpXZWJGcmFtZUNsaWVudAogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJQbHVnaW4qIGNy
ZWF0ZVBsdWdpbihXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJQbHVnaW5QYXJh
bXMmKTsKLSAgICB2aXJ0dWFsIFdlYktpdDo6V2ViV29ya2VyKiBjcmVhdGVXb3JrZXIoV2ViS2l0
OjpXZWJGcmFtZSosIFdlYktpdDo6V2ViU2hhcmVkV29ya2VyQ2xpZW50Kik7CisgICAgdmlydHVh
bCBXZWJLaXQ6OldlYldvcmtlciogY3JlYXRlV29ya2VyKFdlYktpdDo6V2ViRnJhbWUqLCBXZWJL
aXQ6OldlYldvcmtlckNsaWVudCopOwogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJNZWRpYVBsYXll
ciogY3JlYXRlTWVkaWFQbGF5ZXIoV2ViS2l0OjpXZWJGcmFtZSosIFdlYktpdDo6V2ViTWVkaWFQ
bGF5ZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViQXBwbGljYXRpb25DYWNoZUhv
c3QqIGNyZWF0ZUFwcGxpY2F0aW9uQ2FjaGVIb3N0KFdlYktpdDo6V2ViRnJhbWUqLCBXZWJLaXQ6
OldlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRV
UkxFeHRlcm5hbGx5KFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6OldlYlVSTFJlcXVl
c3QmLCBXZWJLaXQ6OldlYk5hdmlnYXRpb25Qb2xpY3kpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>