<?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>126813</bug_id>
          
          <creation_ts>2014-01-11 06:14:52 -0800</creation_ts>
          <short_desc>[SOUP] Add SoupNetworkSession class to wrap a SoupSession</short_desc>
          <delta_ts>2014-01-13 10:21:46 -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>Platform</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>Soup</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>966778</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-11 06:14:52 -0800</bug_when>
    <thetext>It would simplify the code that uses SoupSession directly and would avoid duplicated code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966779</commentid>
    <comment_count>1</comment_count>
      <attachid>220928</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-11 06:45:08 -0800</bug_when>
    <thetext>Created attachment 220928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966780</commentid>
    <comment_count>2</comment_count>
      <attachid>220928</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-11 06:48:32 -0800</bug_when>
    <thetext>Comment on attachment 220928
Patch

Attachment 220928 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/5803630930165760</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966783</commentid>
    <comment_count>3</comment_count>
      <attachid>220928</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-11 06:51:28 -0800</bug_when>
    <thetext>Comment on attachment 220928
Patch

Attachment 220928 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/5057096894644224</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966784</commentid>
    <comment_count>4</comment_count>
      <attachid>220930</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-11 06:52:36 -0800</bug_when>
    <thetext>Created attachment 220930
Try to fix EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966785</commentid>
    <comment_count>5</comment_count>
      <attachid>220930</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-11 06:57:55 -0800</bug_when>
    <thetext>Comment on attachment 220930
Try to fix EFL build

Attachment 220930 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/5924820411744256</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966787</commentid>
    <comment_count>6</comment_count>
      <attachid>220932</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-11 07:02:09 -0800</bug_when>
    <thetext>Created attachment 220932
Try to fix EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966788</commentid>
    <comment_count>7</comment_count>
      <attachid>220932</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-11 07:06:52 -0800</bug_when>
    <thetext>Comment on attachment 220932
Try to fix EFL build

Attachment 220932 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/5367878714916864</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966789</commentid>
    <comment_count>8</comment_count>
      <attachid>220933</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-11 07:12:08 -0800</bug_when>
    <thetext>Created attachment 220933
Try to fix EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966954</commentid>
    <comment_count>9</comment_count>
      <attachid>220933</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-01-12 07:59:11 -0800</bug_when>
    <thetext>Comment on attachment 220933
Try to fix EFL build

Why not use NetworkStorageSessionSoup as the wrapper class? It feels like adding a new class just adds churn in this case, although I may be missing some life-cycle related issues?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966955</commentid>
    <comment_count>10</comment_count>
      <attachid>220933</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-01-12 08:07:28 -0800</bug_when>
    <thetext>Comment on attachment 220933
Try to fix EFL build

View in context: https://bugs.webkit.org/attachment.cgi?id=220933&amp;action=review

LGTM! Just wondering about the new class being required or if using the NetworkStorage would do it.

&gt; Source/WebKit/efl/ewk/ewk_cookies.cpp:47
&gt; +    g_object_unref(cookieJar);

Any reason not use GRefPtr for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966963</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-12 08:46:24 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 220933 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=220933&amp;action=review
&gt; 
&gt; LGTM! Just wondering about the new class being required or if using the NetworkStorage would do it.

Well, NetworkStorage is a cross-platform class in the end, this is just to wrap a SoupSession, with very specific soup code.

&gt; &gt; Source/WebKit/efl/ewk/ewk_cookies.cpp:47
&gt; &gt; +    g_object_unref(cookieJar);
&gt; 
&gt; Any reason not use GRefPtr for this?

I noticed that GRefPtr was not used anywhere in Source/WebKit/efl/ewk, and I thought it could be for some reason, so I used the explicit unref.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967360</commentid>
    <comment_count>12</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-01-13 09:11:41 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; LGTM! Just wondering about the new class being required or if using the NetworkStorage would do it.
&gt; 
&gt; Well, NetworkStorage is a cross-platform class in the end, this is just to wrap a SoupSession, with very specific soup code.

But it already has a soup-specific implementation, and soup-specific assessors, so we could use it, do you think there would be a downside? 

&gt; &gt; &gt; Source/WebKit/efl/ewk/ewk_cookies.cpp:47
&gt; &gt; &gt; +    g_object_unref(cookieJar);
&gt; &gt; 
&gt; &gt; Any reason not use GRefPtr for this?
&gt; 
&gt; I noticed that GRefPtr was not used anywhere in Source/WebKit/efl/ewk, and I thought it could be for some reason, so I used the explicit unref.

Makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967371</commentid>
    <comment_count>13</comment_count>
      <attachid>220933</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-01-13 09:47:31 -0800</bug_when>
    <thetext>Comment on attachment 220933
Try to fix EFL build

OK, after our quick chat on IRC I think you&apos;re right about the NetworkStorageSession not being conceptually analog to the session, using NetworkingContext would make it more conceptually correct but it&apos;s per-frame, so I think your idea of a separate class makes sense. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967389</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-13 10:21:46 -0800</bug_when>
    <thetext>Committed r161890: &lt;http://trac.webkit.org/changeset/161890&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220928</attachid>
            <date>2014-01-11 06:45:08 -0800</date>
            <delta_ts>2014-01-11 06:52:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>soup-network-session.diff</filename>
            <type>text/plain</type>
            <size>57960</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4Y2EwZWQ2Li45OWUzMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkg
QEAKKzIwMTQtMDEtMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtTT1VQXSBBZGQgU291cE5ldHdvcmtTZXNzaW9uIGNsYXNzIHRvIHdyYXAg
YSBTb3VwU2Vzc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI2ODEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIFNvdXBOZXR3b3JrU2Vzc2lvbiBjbGFzcyB0aGF0IHdyYXBzIGEgU291cFNlc3Np
b24gYW5kIG1vdmUgYWxsCisgICAgICAgIHRoZSBjb2RlIHJlbGF0ZWQgdG8gdGhlIFNvdXBTZXNz
aW9uIGZyb20gUmVzb3VyY2VIYW5kbGUgdG8KKyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uLCBp
bmNsdWRpbmcgdGhlIHN0YXRpYyBtZXRob2RzIHRvIGdldCB0aGUKKyAgICAgICAgZGVmYXVsdCBz
ZXNzaW9uIGFuZCBjcmVhdGUgdGVzdGluZyBhbmQgcHJpdmF0ZSBzZXNzaW9ucy4KKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oOiBVc2UgU291cE5ldHdvcmtTZXNzaW9uCisgICAgICAgIGluc3RlYWQgb2YgU291
cFNlc3Npb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvb2tpZUphckZvclNlc3Npb24pOiBVc2UgU291cE5ldHdvcmtTZXNzaW9u
IHRvIGdldCB0aGUKKyAgICAgICAgU291cFNlc3Npb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9zb3VwL0ROU1NvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVl
OjpwbGF0Zm9ybVJlc29sdmUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbik6IFVzZQorICAgICAgICBT
b3VwTmV0d29ya1Nlc3Npb24gaW5zdGVhZCBvZiBTb3VwU2Vzc2lvbi4KKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6fk5ldHdvcmtTdG9yYWdlU2Vzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lv
bik6IENyZWF0ZSBhCisgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB3aXRoIGEgTlVMTCBT
b3VwTmV0d29ya1Nlc3Npb24gd2hpY2ggbWVhbnMKKyAgICAgICAgdGhhdCB0aGUgZGVmYXVsdCBT
b3VwTmV0d29ya1Nlc3Npb24gd2lsbCBiZSB1c2VkLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAg
Q2FsbCBTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSB0
byBjcmVhdGUKKyAgICAgICAgdGhlIHByaXZhdGUgc2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbik6IENhbGwK
KyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uOjpjcmVhdGVUZXN0aW5nU2Vzc2lvbigpIHRvIGNy
ZWF0ZSB0aGUgdGVzdGluZworICAgICAgICBzZXNzaW9uLgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzb3VwTmV0d29ya1Nlc3Npb24pOiBSZXR1cm4gdGhlCisgICAg
ICAgIFNvdXBOZXR3b3JrU2Vzc2lvbiBvciB0aGUgZGVmYXVsdCBvbmUuCisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFNvdXBOZXR3b3JrU2Vzc2lvbik6IFNldCBh
IG5ldworICAgICAgICBTb3VwTmV0d29ya1Nlc3Npb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXNz
aW9uRnJvbUNvbnRleHQpOiBVc2UgU291cE5ldHdvcmtTZXNzaW9uIHRvIGdldCB0aGUKKyAgICAg
ICAgU291cFNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFs
Ojpzb3VwU2Vzc2lvbik6IFNpbXBseSBjYWxsCisgICAgICAgIHNlc3Npb25Gcm9tQ29udGV4dCgp
LCBzaW5jZSBlbnN1cmVTZXNzaW9uSXNJbml0aWFsaXplZCgpIGlzIG5vCisgICAgICAgIGxvbmdl
ciBuZWVkZWQsIGJlY2F1c2UgdGhlIFNvdXBTZXNzaW9uIGFyZSBub3cgaW5pdGlhbGl6ZWQgaW4g
dGhlCisgICAgICAgIFNvdXBOZXR3b3JrU2Vzc2lvbiBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpkaWRTdGFydFJlcXVlc3QpOiBGdW5jdGlvbiB0byBub3Rp
ZnkgdGhlCisgICAgICAgIFJlc291cmNlSGFuZGxlIHRoYXQgY3VycmVudCByZXF1ZXN0IGhhcyBq
dXN0IHN0YXJ0ZWQgZm9yIHdlYiB0aW1pbmcuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c291
cExvZ1ByaW50ZXIpOiBMb2dnZXIgY2FsbGJhY2suCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0
d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKTogUmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAg
IHRvIHRoZSBkZWZhdWx0IFNvdXBOZXR3b3JrU2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNv
dXBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAg
IENyZWF0ZSBhIG5ldyBwcml2YXRlIHNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0
d29ya1Nlc3Npb246OmNyZWF0ZVRlc3RpbmdTZXNzaW9uKTogQ3JlYXRlIGEgbmV3CisgICAgICAg
IHRlc3Rpbmcgc2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6
Y3JlYXRlRm9yU291cFNlc3Npb24pOiBDcmVhdGUgYSBuZXcKKyAgICAgICAgU291cE5ldHdvcmtT
ZXNzaW9uIGZvciB0aGUgZ2l2ZW4gU291cFNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjphdXRo
ZW50aWNhdGVDYWxsYmFjayk6IENhbGxiYWNrIGVtaXR0ZWQgYnkgdGhlCisgICAgICAgIFNvdXBT
ZXNzaW9uIHdoZW4gdGhlIHJlcXVlc3QgbmVlZHMgYXV0aGVudGljYXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpyZXF1ZXN0U3RhcnRlZENhbGxiYWNrKTogQ2FsbGJhY2sgZW1pdHRlZCBieSB0aGUK
KyAgICAgICAgU291cFNlc3Npb24gd2hlbiBhcyByZXF1ZXN0IGhhcyBqdXN0IHN0YXJ0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OlNvdXBOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246On5Tb3VwTmV0d29ya1Nlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpzZXR1cExvZ2dlcik6
IEhlbHBlciBwcml2YXRlCisgICAgICAgIGZ1bmN0aW9uIHRvIHNldHVwIHRoZSBsb2dnZXIuCisg
ICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OnNldENvb2tpZUphcik6IFNldCBh
IG5ldyBDb29raWVKYXIKKyAgICAgICAgaW4gdGhlIHNlc3Npb24gcmVwbGFjaW5nIHRoZSBleGlz
dGluZyBvbmUuCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmNvb2tpZUph
cik6IFJldHVybiB0aGUgY3VycmVudAorICAgICAgICBDb29raWVKYXIgb2YgdGhlIHNlc3Npb24u
CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OnNldENhY2hlKTogU2V0IGEg
ZGlzayBjYWNoZS4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2FjaGUp
OiBSZXR1cm4gdGhlIGN1cnJlbnQgZGlzayBjYWNoZS4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXBO
ZXR3b3JrU2Vzc2lvbjo6c2V0U1NMUG9saWN5KTogU2V0IHRoZSBTU0wgcG9saWN5LgorICAgICAg
ICAoV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpzc2xQb2xpY3kpOiBHZXQgdGhlIGN1cnJl
bnQgU1NMIHBvbGljeS4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0
SFRUUFByb3h5KTogU2V0IHRoZSBIVFRQIHByb3h5LgorICAgICAgICAoV2ViQ29yZTo6U291cE5l
dHdvcmtTZXNzaW9uOjpodHRwUHJveHkpOiBHZXQgdGhlIGN1cnJlbnQgSFRUUCBwcm94eS4KKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0dXBIVFRQUHJveHlGcm9tRW52
aXJvbm1lbnQpOiBTZXQKKyAgICAgICAgdGhlIEhUVFAgcHJveHkgdXNpbmcgdGhlIGVudmlyb25t
ZW50IHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQWNjZXB0TGFuZ3VhZ2VzKTog
SGVscGVyIGZ1bmN0aW9uIGJ1aWxkIHRoZSBhY2NlcHQKKyAgICAgICAgbGFuZ3VhZ2Ugc3RyaW5n
IGluIHRoZSBmb3JtYXQgZXhwZWN0ZWQgYnkgc291cCAoUkZDIDI2MTYpLgorICAgICAgICAoV2Vi
Q29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpzZXRBY2NlcHRMYW5ndWFnZXMpOiBTZXQgdGhlIGFj
Y2VwdAorICAgICAgICBsYW5ndWFnZSBmb3IgdGhlIGdpdmVuIGxpc3Qgb2YgbGFuZ3VhZ2VzLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OnNvdXBTZXNzaW9uKTog
UmV0dXJuIHRoZSBTb3VwU2Vzc2lvbi4KKwogMjAxNC0wMS0wOSAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSAubXAzIG1lZGlhIGRvY3VtZW50IGNvbnRy
b2xzIG1pc3NpbmcgdGhlaXIgYmFja2dyb3VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
aW5kZXggOTY5Njc1OC4uNTZiY2Y0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC01NDY0LDcgKzU0NjQsNiBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmggXAotCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUluZm8uaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iU3RvcmFnZURhdGEuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5oIFwKQEAgLTU0ODYsNiAr
NTQ4NSw3IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlU291cC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0
aWZpY2F0ZUluZm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nl
cnRpZmljYXRlSW5mby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Db29raWVKYXJTb3VwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0Nvb2tpZUphclNvdXAuaCBcCkBAIC01NDk4LDYgKzU0OTgsOCBAQCB3ZWJjb3JlX3BsYXRm
b3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50U291
cC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDUwZTcyZDAuLjcxMDVlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC0xNjYsNiArMTY2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCiAgICAgcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcAorICAgIHBsYXRmb3JtL25ldHdv
cmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvdXBVUklVdGlscy5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU3luY2hyb25vdXNM
b2FkZXJDbGllbnRTb3VwLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGQwOWU2
OWMuLmMwZWU2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMjMsNiArMTIzLDcg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJl
YW1IYW5kbGVTb3VwLmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nl
c3Npb24uY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGlscy5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU3luY2hyb25vdXNMb2FkZXJDbGllbnRTb3VwLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaAppbmRleCA1NmEwYTU5Li5iYjZmYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAg
LTMyLDE1ICszMiwxMiBAQAogI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkxTdG9yYWdlU2Vzc2lvbiogQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZjsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqICBDRkhU
VFBDb29raWVTdG9yYWdlUmVmOwotI2VsaWYgVVNFKFNPVVApCi0jaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1JlZlB0ci5oPgotdHlwZWRlZiBzdHJ1Y3QgX1NvdXBDb29raWVKYXIgU291cENvb2tpZUph
cjsKLXR5cGVkZWYgc3RydWN0IF9Tb3VwU2Vzc2lvbiBTb3VwU2Vzc2lvbjsKICNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OworY2xhc3MgU291
cE5ldHdvcmtTZXNzaW9uOwogCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtNjAsOSArNTcsMTAgQEAgcHVibGljOgogICAgIENGVVJMU3RvcmFnZVNl
c3Npb25SZWYgcGxhdGZvcm1TZXNzaW9uKCkgeyByZXR1cm4gbV9wbGF0Zm9ybVNlc3Npb24uZ2V0
KCk7IH0KICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFn
ZSgpIGNvbnN0OwogI2VsaWYgVVNFKFNPVVApCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFNv
dXBTZXNzaW9uKik7Ci0gICAgdm9pZCBzZXRTb3VwU2Vzc2lvbihTb3VwU2Vzc2lvbiogc2Vzc2lv
bikgeyBtX3Nlc3Npb24gPSBzZXNzaW9uOyB9Ci0gICAgU291cFNlc3Npb24qIHNvdXBTZXNzaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CisgICAgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+KTsKKyAgICB+TmV0d29y
a1N0b3JhZ2VTZXNzaW9uKCk7CisgICAgU291cE5ldHdvcmtTZXNzaW9uJiBzb3VwTmV0d29ya1Nl
c3Npb24oKSBjb25zdDsKKyAgICB2b2lkIHNldFNvdXBOZXR3b3JrU2Vzc2lvbihzdGQ6OnVuaXF1
ZV9wdHI8U291cE5ldHdvcmtTZXNzaW9uPik7CiAjZWxzZQogICAgIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbihOZXR3b3JraW5nQ29udGV4dCopOwogICAgIH5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsK
QEAgLTc0LDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsK
ICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gbV9wbGF0Zm9ybVNlc3Npb247
CiAjZWxpZiBVU0UoU09VUCkKLSAgICBHUmVmUHRyPFNvdXBTZXNzaW9uPiBtX3Nlc3Npb247Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lvbj4gbV9zZXNzaW9uOwogI2Vsc2UK
ICAgICBSZWZQdHI8TmV0d29ya2luZ0NvbnRleHQ+IG1fY29udGV4dDsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IDIx
OWU0N2UuLjRmOGVmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmgKQEAgLTE4MCw5ICsxODAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBj
YW5jZWxsZWRPckNsaWVudGxlc3MoKTsKICAgICB2b2lkIGVuc3VyZVJlYWRCdWZmZXIoKTsKICAg
ICBzaXplX3QgY3VycmVudFN0cmVhbVBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgc3RhdGljIFNvdXBT
ZXNzaW9uKiBkZWZhdWx0U2Vzc2lvbigpOwotICAgIHN0YXRpYyBTb3VwU2Vzc2lvbiogY3JlYXRl
VGVzdGluZ1Nlc3Npb24oKTsKLSAgICBzdGF0aWMgU291cFNlc3Npb24qIGNyZWF0ZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKTsKKyAgICB2b2lkIGRpZFN0YXJ0UmVxdWVzdCgpOwogICAgIHN0YXRp
YyB1aW50NjRfdCBnZXRTb3VwUmVxdWVzdEluaXRpYXRpbmdQYWdlSUQoU291cFJlcXVlc3QqKTsK
ICAgICBzdGF0aWMgdm9pZCBzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBT
dHJpbmcmKTsKICAgICBzdGF0aWMgdm9pZCBzZXRDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJp
bmcmIGhvc3QsIEdUbHNDZXJ0aWZpY2F0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCmluZGV4IGRkNWRiZDUuLjE1
ZmQ3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9D
b29raWVKYXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvQ29va2llSmFyU291cC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29va2ll
SmFyLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJTb3VwTmV0d29y
a1Nlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0zNCw4ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIFNvdXBDb29raWVKYXIqIGNvb2tpZUphckZvclNlc3Npb24oY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIEFTU0VSVChzZXNzaW9uLnNvdXBT
ZXNzaW9uKCkpOwotICAgIHJldHVybiBTT1VQX0NPT0tJRV9KQVIoc291cF9zZXNzaW9uX2dldF9m
ZWF0dXJlKHNlc3Npb24uc291cFNlc3Npb24oKSwgU09VUF9UWVBFX0NPT0tJRV9KQVIpKTsKKyAg
ICByZXR1cm4gc2Vzc2lvbi5zb3VwTmV0d29ya1Nlc3Npb24oKS5jb29raWVKYXIoKTsKIH0KIAog
c3RhdGljIEdSZWZQdHI8U291cENvb2tpZUphcj4mIGRlZmF1bHRDb29raWVKYXIoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCmluZGV4IGJh
YmEyMDQuLjJlYWI5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvRE5TU291cC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJETlNSZXNvbHZl
UXVldWUuaCIKIAogI2luY2x1ZGUgIkdPd25QdHJTb3VwLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlIDxsaWJz
b3VwL3NvdXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBETlNSZXNvbHZlUXVldWU6OnBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKLSAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKFJlc291cmNlSGFu
ZGxlOjpkZWZhdWx0U2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCAwLCByZXNvbHZl
ZENhbGxiYWNrLCAwKTsKKyAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKFNvdXBOZXR3b3Jr
U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCku
ZGF0YSgpLCBudWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKIH0KIAogdm9pZCBw
cmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCmluZGV4IDc0ZDEwOGEuLjY3ZjE5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cC5jcHAKQEAgLTI4LDE3ICsyOCwyMiBAQAogI2luY2x1ZGUgIk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oIgogCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRl
ICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKFNvdXBTZXNzaW9uKiBz
ZXNzaW9uKQotICAgIDogbV9zZXNzaW9uKGFkb3B0R1JlZihzZXNzaW9uKSkKK05ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0
d29ya1Nlc3Npb24+IHNlc3Npb24pCisgICAgOiBtX3Nlc3Npb24oc3RkOjptb3ZlKHNlc3Npb24p
KQogICAgICwgbV9pc1ByaXZhdGUoZmFsc2UpCiB7CiB9CiAKK05ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6fk5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpCit7Cit9CisKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgZGVmYXVsdFNlc3Npb24oKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CkBAIC00OSwyMCArNTQsMzAgQEAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBkZWZhdWx0U2Vzc2lvbigpCiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCkKIHsKICAgICBpZiAoIWRlZmF1bHRTZXNzaW9uKCkpCi0gICAgICAgIGRlZmF1bHRTZXNzaW9u
KCkgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUmVzb3VyY2VIYW5k
bGU6OmRlZmF1bHRTZXNzaW9uKCkpOworICAgICAgICBkZWZhdWx0U2Vzc2lvbigpID0gc3RkOjpt
YWtlX3VuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KG51bGxwdHIpOwogICAgIHJldHVybiAq
ZGVmYXVsdFNlc3Npb24oKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgYXV0byBzZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxO
ZXR3b3JrU3RvcmFnZVNlc3Npb24+KFJlc291cmNlSGFuZGxlOjpjcmVhdGVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCkpOworICAgIGF1dG8gc2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPihTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKSk7CiAgICAgc2Vzc2lvbi0+bV9pc1ByaXZhdGUgPSB0cnVlOwogICAgIHJldHVy
biBzZXNzaW9uOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdU
ZXN0aW5nU2Vzc2lvbigpCiB7Ci0gICAgZGVmYXVsdFNlc3Npb24oKSA9IHN0ZDo6bWFrZV91bmlx
dWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlVGVzdGluZ1Nl
c3Npb24oKSk7CisgICAgZGVmYXVsdFNlc3Npb24oKSA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPihTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVRlc3RpbmdTZXNzaW9u
KCkpOworfQorCitTb3VwTmV0d29ya1Nlc3Npb24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c291
cE5ldHdvcmtTZXNzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZXNzaW9uID8gKm1fc2Vz
c2lvbiA6IFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKTsKK30KKwordm9pZCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFNvdXBOZXR3b3JrU2Vzc2lvbihzdGQ6OnVuaXF1ZV9w
dHI8U291cE5ldHdvcmtTZXNzaW9uPiBzZXNzaW9uKQoreworICAgIG1fc2Vzc2lvbiA9IHN0ZDo6
bW92ZShzZXNzaW9uKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCAwN2E1M2Ey
Li40YzcwNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2lu
Y2x1ZGUgIkdPd25QdHJTb3VwLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRl
ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC00NCw2ICs0Myw3IEBACiAjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNp
bmNsdWRlICJTb3VwVVJJVXRpbHMuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNs
dWRlIDxlcnJuby5oPgpAQCAtNzIsMTUgKzcyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1pbmxpbmUgc3RhdGljIHZvaWQgc291cExvZ1ByaW50ZXIoU291cExvZ2dlciosIFNvdXBMb2dn
ZXJMb2dMZXZlbCwgY2hhciBkaXJlY3Rpb24sIGNvbnN0IGNoYXIqIGRhdGEsIGdwb2ludGVyKQot
ewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShkaXJlY3Rpb24pOwotICAgIFVO
VVNFRF9QQVJBTShkYXRhKTsKLSNlbmRpZgotICAgIExPRyhOZXR3b3JrLCAiJWMgJXMiLCBkaXJl
Y3Rpb24sIGRhdGEpOwotfQotCiBzdGF0aWMgYm9vbCBsb2FkaW5nU3luY2hyb25vdXNSZXF1ZXN0
ID0gZmFsc2U7CiBzdGF0aWMgY29uc3Qgc2l6ZV90IGdEZWZhdWx0UmVhZEJ1ZmZlclNpemUgPSA4
MTkyOwogCkBAIC0yNjAsOCArMjUxLDggQEAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291
cmNlSGFuZGxlSW50ZXJuYWwoKQogc3RhdGljIFNvdXBTZXNzaW9uKiBzZXNzaW9uRnJvbUNvbnRl
eHQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKCFjb250ZXh0IHx8ICFj
b250ZXh0LT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBSZXNvdXJjZUhhbmRsZTo6ZGVmYXVs
dFNlc3Npb24oKTsKLSAgICByZXR1cm4gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5zb3VwU2Vz
c2lvbigpOworICAgICAgICByZXR1cm4gU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lv
bigpLnNvdXBTZXNzaW9uKCk7CisgICAgcmV0dXJuIGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCku
c291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKTsKIH0KIAogUmVzb3VyY2VIYW5kbGU6
On5SZXNvdXJjZUhhbmRsZSgpCkBAIC0yNjksMzYgKzI2MCw5IEBAIFJlc291cmNlSGFuZGxlOjp+
UmVzb3VyY2VIYW5kbGUoKQogICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbih0aGlzLCB0
cnVlKTsKIH0KIAotc3RhdGljIHZvaWQgZW5zdXJlU2Vzc2lvbklzSW5pdGlhbGl6ZWQoU291cFNl
c3Npb24qIHNlc3Npb24pCi17Ci0gICAgaWYgKGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNl
c3Npb24pLCAid2Via2l0LWluaXQiKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHNlc3Np
b24gPT0gUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCkpIHsKLSAgICAgICAgU291cENv
b2tpZUphciogamFyID0gU09VUF9DT09LSUVfSkFSKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShz
ZXNzaW9uLCBTT1VQX1RZUEVfQ09PS0lFX0pBUikpOwotICAgICAgICBpZiAoIWphcikKLSAgICAg
ICAgICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1NFU1NJT05fRkVB
VFVSRShzb3VwQ29va2llSmFyKCkpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc2V0U291
cENvb2tpZUphcihqYXIpOwotICAgIH0KLQotI2lmICFMT0dfRElTQUJMRUQKLSAgICBpZiAoIXNv
dXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1RZUEVfTE9HR0VSKSAmJiBMb2dO
ZXR3b3JrLnN0YXRlID09IFdURkxvZ0NoYW5uZWxPbikgewotICAgICAgICBTb3VwTG9nZ2VyKiBs
b2dnZXIgPSBzb3VwX2xvZ2dlcl9uZXcoc3RhdGljX2Nhc3Q8U291cExvZ2dlckxvZ0xldmVsPihT
T1VQX0xPR0dFUl9MT0dfQk9EWSksIC0xKTsKLSAgICAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0
dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFUVVJFKGxvZ2dlcikpOwotICAgICAgICBzb3Vw
X2xvZ2dlcl9zZXRfcHJpbnRlcihsb2dnZXIsIHNvdXBMb2dQcmludGVyLCAwLCAwKTsKLSAgICAg
ICAgZ19vYmplY3RfdW5yZWYobG9nZ2VyKTsKLSAgICB9Ci0jZW5kaWYgLy8gIUxPR19ESVNBQkxF
RAotCi0gICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1Qoc2Vzc2lvbiksICJ3ZWJraXQtaW5p
dCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4ZGVhZGJlZWYpKTsKLX0KLQogU291cFNlc3Np
b24qIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OnNvdXBTZXNzaW9uKCkKIHsKLSAgICBTb3VwU2Vz
c2lvbiogc2Vzc2lvbiA9IHNlc3Npb25Gcm9tQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAg
IGVuc3VyZVNlc3Npb25Jc0luaXRpYWxpemVkKHNlc3Npb24pOwotICAgIHJldHVybiBzZXNzaW9u
OworICAgIHJldHVybiBzZXNzaW9uRnJvbUNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKIH0KIAog
Ym9vbCBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsbGVkT3JDbGllbnRsZXNzKCkKQEAgLTg3OSwxMyAr
ODQzLDkgQEAgc3RhdGljIHZvaWQgd3JvdGVCb2R5Q2FsbGJhY2soU291cE1lc3NhZ2UqLCBncG9p
bnRlciBkYXRhKQogICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCktPnNlbmRF
bmQgPSBtaWxpc2Vjb25kc1NpbmNlUmVxdWVzdChkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRp
bWluZygpLT5yZXF1ZXN0VGltZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlcXVlc3RTdGFydGVkQ2Fs
bGJhY2soU291cFNlc3Npb24qLCBTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIFNvdXBTb2NrZXQq
LCBncG9pbnRlcikKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFN0YXJ0UmVxdWVzdCgpCiB7Ci0g
ICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhh
bmRsZSo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhhbmRsZSIp
KTsKLSAgICBpZiAoIWhhbmRsZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKKyAgICBSZXNvdXJjZUhhbmRs
ZUludGVybmFsKiBkID0gZ2V0SW50ZXJuYWwoKTsKICAgICBpZiAoIWQtPm1fcmVzcG9uc2UucmVz
b3VyY2VMb2FkVGltaW5nKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTQzMSw2MiArMTM5MSw2
IEBAIHN0YXRpYyBnYm9vbGVhbiByZXF1ZXN0VGltZW91dENhbGxiYWNrKGdwb2ludGVyIGRhdGEp
CiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgdm9pZCBhdXRoZW50aWNhdGVDYWxsYmFj
ayhTb3VwU2Vzc2lvbiogc2Vzc2lvbiwgU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBTb3VwQXV0
aCogc291cEF1dGgsIGdib29sZWFuIHJldHJ5aW5nKQotewotICAgIFJlZlB0cjxSZXNvdXJjZUhh
bmRsZT4gaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihnX29iamVjdF9nZXRf
ZGF0YShHX09CSkVDVChzb3VwTWVzc2FnZSksICJoYW5kbGUiKSk7Ci0gICAgaWYgKCFoYW5kbGUp
Ci0gICAgICAgIHJldHVybjsKLSAgICBoYW5kbGUtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShzZXNzaW9uLCBzb3VwTWVzc2FnZSwgc291
cEF1dGgsIHJldHJ5aW5nLCBoYW5kbGUuZ2V0KCkpKTsKLX0KLQotc3RhdGljIFNvdXBTZXNzaW9u
KiBjcmVhdGVTb3VwU2Vzc2lvbigpCi17Ci0gICAgLy8gVmFsdWVzIHRha2VuIGZyb20gaHR0cDov
L3d3dy5icm93c2Vyc2NvcGUub3JnLyAgZm9sbG93aW5nCi0gICAgLy8gdGhlIHJ1bGUgIkRvIFdo
YXQgRXZlcnkgT3RoZXIgTW9kZXJuIEJyb3dzZXIgSXMgRG9pbmciLiBUaGV5IHNlZW0KLSAgICAv
LyB0byBzaWduaWZpY2FudGx5IGltcHJvdmUgcGFnZSBsb2FkaW5nIHRpbWUgY29tcGFyZWQgdG8g
c291cCdzCi0gICAgLy8gZGVmYXVsdCB2YWx1ZXMuCi0gICAgc3RhdGljIGNvbnN0IGludCBtYXhD
b25uZWN0aW9ucyA9IDM1OwotICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4Q29ubmVjdGlvbnNQZXJI
b3N0ID0gNjsKLQotICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gc291cF9zZXNzaW9uX2FzeW5j
X25ldygpOwotICAgIGdfb2JqZWN0X3NldChzZXNzaW9uLAotICAgICAgICBTT1VQX1NFU1NJT05f
TUFYX0NPTk5TLCBtYXhDb25uZWN0aW9ucywKLSAgICAgICAgU09VUF9TRVNTSU9OX01BWF9DT05O
U19QRVJfSE9TVCwgbWF4Q29ubmVjdGlvbnNQZXJIb3N0LAotICAgICAgICBTT1VQX1NFU1NJT05f
QUREX0ZFQVRVUkVfQllfVFlQRSwgU09VUF9UWVBFX0NPTlRFTlRfREVDT0RFUiwKLSAgICAgICAg
U09VUF9TRVNTSU9OX0FERF9GRUFUVVJFX0JZX1RZUEUsIFNPVVBfVFlQRV9DT05URU5UX1NOSUZG
RVIsCi0gICAgICAgIFNPVVBfU0VTU0lPTl9BRERfRkVBVFVSRV9CWV9UWVBFLCBTT1VQX1RZUEVf
UFJPWFlfUkVTT0xWRVJfREVGQVVMVCwKLSAgICAgICAgU09VUF9TRVNTSU9OX1VTRV9USFJFQURf
Q09OVEVYVCwgVFJVRSwKLSAgICAgICAgTlVMTCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChzZXNz
aW9uLCAiYXV0aGVudGljYXRlIiwgR19DQUxMQkFDSyhhdXRoZW50aWNhdGVDYWxsYmFjayksIDAp
OwotCi0jaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgZ19zaWduYWxfY29ubmVjdChzZXNzaW9u
LCAicmVxdWVzdC1zdGFydGVkIiwgR19DQUxMQkFDSyhyZXF1ZXN0U3RhcnRlZENhbGxiYWNrKSwg
MCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBzZXNzaW9uOwotfQotCi1Tb3VwU2Vzc2lvbiogUmVz
b3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCkKLXsKLSAgICBzdGF0aWMgU291cFNlc3Npb24q
IHNlc3Npb24gPSBjcmVhdGVTb3VwU2Vzc2lvbigpOwotICAgIHJldHVybiBzZXNzaW9uOwotfQot
Ci1Tb3VwU2Vzc2lvbiogUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZVRlc3RpbmdTZXNzaW9uKCkKLXsK
LSAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IGNyZWF0ZVNvdXBTZXNzaW9uKCk7Ci0gICAgLy8g
VGhlIHRlc3Rpbmcgc2Vzc2lvbiBvcGVyYXRlcyB3aXRoIHRoZSBkZWZhdWx0IGNvb2tpZSBqYXIu
Ci0gICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFU
VVJFKHNvdXBDb29raWVKYXIoKSkpOwotICAgIHJldHVybiBzZXNzaW9uOwotfQotCi1Tb3VwU2Vz
c2lvbiogUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewot
ICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gY3JlYXRlU291cFNlc3Npb24oKTsKLSAgICBzb3Vw
X3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9TRVNTSU9OX0ZFQVRVUkUoY3JlYXRl
UHJpdmF0ZUJyb3dzaW5nQ29va2llSmFyKCkpKTsKLSAgICByZXR1cm4gc2Vzc2lvbjsKLX0KLQog
dWludDY0X3QgUmVzb3VyY2VIYW5kbGU6OmdldFNvdXBSZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJRChT
b3VwUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICB1aW50NjRfdCogaW5pdGlhdGluZ1BhZ2VJRFB0
ciA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Kj4oZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QocmVx
dWVzdCksIGdTb3VwUmVxdWVzdEluaXRpYXRpbmdQYWdlSURLZXkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lv
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIxYzY2NgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0
d29ya1Nlc3Npb24uY3BwCkBAIC0wLDAgKzEsMjc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNv
dXBOZXR3b3JrU2Vzc2lvbi5oIgorCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKKyNpbmNsdWRlICJDb29raWVKYXJTb3VwLmgiCisjaW5jbHVkZSAiR093blB0clNvdXAuaCIK
KyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNs
dWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCisjaWYgUExBVEZPUk0oRUZMKQorI2lu
Y2x1ZGUgIlByb3h5UmVzb2x2ZXJTb3VwLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisjaWYgIUxPR19ESVNBQkxFRAoraW5saW5lIHN0YXRpYyB2b2lkIHNvdXBMb2dQcmludGVy
KFNvdXBMb2dnZXIqLCBTb3VwTG9nZ2VyTG9nTGV2ZWwsIGNoYXIgZGlyZWN0aW9uLCBjb25zdCBj
aGFyKiBkYXRhLCBncG9pbnRlcikKK3sKKyAgICBMT0coTmV0d29yaywgIiVjICVzIiwgZGlyZWN0
aW9uLCBkYXRhKTsKK30KKyNlbmRpZgorCitTb3VwTmV0d29ya1Nlc3Npb24mIFNvdXBOZXR3b3Jr
U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
b3VwTmV0d29ya1Nlc3Npb24+IG5ldHdvcmtTZXNzaW9uKHNvdXBDb29raWVKYXIoKSk7CisgICAg
cmV0dXJuIG5ldHdvcmtTZXNzaW9uOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdvcmtT
ZXNzaW9uPiBTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
KQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdvcmtTZXNzaW9uPihuZXcg
U291cE5ldHdvcmtTZXNzaW9uKHNvdXBDb29raWVKYXIoKSkpOworfQorCitzdGQ6OnVuaXF1ZV9w
dHI8U291cE5ldHdvcmtTZXNzaW9uPiBTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVRlc3RpbmdT
ZXNzaW9uKCkKK3sKKyAgICBHUmVmUHRyPFNvdXBDb29raWVKYXI+IGNvb2tpZUphciA9IGFkb3B0
R1JlZihjcmVhdGVQcml2YXRlQnJvd3NpbmdDb29raWVKYXIoKSk7CisgICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+KG5ldyBTb3VwTmV0d29ya1Nlc3Npb24oY29v
a2llSmFyLmdldCgpKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+
IFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlRm9yU291cFNlc3Npb24oU291cFNlc3Npb24qIHNv
dXBTZXNzaW9uKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdvcmtTZXNz
aW9uPihuZXcgU291cE5ldHdvcmtTZXNzaW9uKHNvdXBTZXNzaW9uKSk7Cit9CisKK3N0YXRpYyB2
b2lkIGF1dGhlbnRpY2F0ZUNhbGxiYWNrKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2Fn
ZSogc291cE1lc3NhZ2UsIFNvdXBBdXRoKiBzb3VwQXV0aCwgZ2Jvb2xlYW4gcmV0cnlpbmcpCit7
CisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJj
ZUhhbmRsZSo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhhbmRs
ZSIpKTsKKyAgICBpZiAoIWhhbmRsZSkKKyAgICAgICAgcmV0dXJuOworICAgIGhhbmRsZS0+ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHNl
c3Npb24sIHNvdXBNZXNzYWdlLCBzb3VwQXV0aCwgcmV0cnlpbmcsIGhhbmRsZS5nZXQoKSkpOwor
fQorCitzdGF0aWMgdm9pZCByZXF1ZXN0U3RhcnRlZENhbGxiYWNrKFNvdXBTZXNzaW9uKiwgU291
cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBTb3VwU29ja2V0KiwgZ3BvaW50ZXIpCit7CisgICAgUmVm
UHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+
KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhhbmRsZSIpKTsKKyAg
ICBpZiAoIWhhbmRsZSkKKyAgICAgICAgcmV0dXJuOworICAgIGhhbmRsZS0+ZGlkU3RhcnRSZXF1
ZXN0KCk7Cit9CisKK1NvdXBOZXR3b3JrU2Vzc2lvbjo6U291cE5ldHdvcmtTZXNzaW9uKFNvdXBD
b29raWVKYXIqIGNvb2tpZUphcikKKyAgICA6IG1fc291cFNlc3Npb24oYWRvcHRHUmVmKHNvdXBf
c2Vzc2lvbl9hc3luY19uZXcoKSkpCit7CisgICAgLy8gVmFsdWVzIHRha2VuIGZyb20gaHR0cDov
L3d3dy5icm93c2Vyc2NvcGUub3JnLyBmb2xsb3dpbmcKKyAgICAvLyB0aGUgcnVsZSAiRG8gV2hh
dCBFdmVyeSBPdGhlciBNb2Rlcm4gQnJvd3NlciBJcyBEb2luZyIuIFRoZXkgc2VlbQorICAgIC8v
IHRvIHNpZ25pZmljYW50bHkgaW1wcm92ZSBwYWdlIGxvYWRpbmcgdGltZSBjb21wYXJlZCB0byBz
b3VwJ3MKKyAgICAvLyBkZWZhdWx0IHZhbHVlcy4KKyAgICBzdGF0aWMgY29uc3QgaW50IG1heENv
bm5lY3Rpb25zID0gMzU7CisgICAgc3RhdGljIGNvbnN0IGludCBtYXhDb25uZWN0aW9uc1Blckhv
c3QgPSA2OworCisgICAgZ19vYmplY3Rfc2V0KG1fc291cFNlc3Npb24uZ2V0KCksCisgICAgICAg
IFNPVVBfU0VTU0lPTl9NQVhfQ09OTlMsIG1heENvbm5lY3Rpb25zLAorICAgICAgICBTT1VQX1NF
U1NJT05fTUFYX0NPTk5TX1BFUl9IT1NULCBtYXhDb25uZWN0aW9uc1Blckhvc3QsCisgICAgICAg
IFNPVVBfU0VTU0lPTl9BRERfRkVBVFVSRV9CWV9UWVBFLCBTT1VQX1RZUEVfQ09OVEVOVF9ERUNP
REVSLAorICAgICAgICBTT1VQX1NFU1NJT05fQUREX0ZFQVRVUkVfQllfVFlQRSwgU09VUF9UWVBF
X0NPTlRFTlRfU05JRkZFUiwKKyAgICAgICAgU09VUF9TRVNTSU9OX0FERF9GRUFUVVJFX0JZX1RZ
UEUsIFNPVVBfVFlQRV9QUk9YWV9SRVNPTFZFUl9ERUZBVUxULAorICAgICAgICBTT1VQX1NFU1NJ
T05fQUREX0ZFQVRVUkUsIGNvb2tpZUphciwKKyAgICAgICAgU09VUF9TRVNTSU9OX1VTRV9USFJF
QURfQ09OVEVYVCwgVFJVRSwKKyAgICAgICAgbnVsbHB0cik7CisKKyAgICBzZXR1cExvZ2dlcigp
OworCisgICAgZ19zaWduYWxfY29ubmVjdChtX3NvdXBTZXNzaW9uLmdldCgpLCAiYXV0aGVudGlj
YXRlIiwgR19DQUxMQkFDSyhhdXRoZW50aWNhdGVDYWxsYmFjayksIG51bGxwdHIpOworI2lmIEVO
QUJMRShXRUJfVElNSU5HKQorICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9zb3VwU2Vzc2lvbi5nZXQo
KSwgInJlcXVlc3Qtc3RhcnRlZCIsIEdfQ0FMTEJBQ0socmVxdWVzdFN0YXJ0ZWRDYWxsYmFjayks
IG51bGxwdHIpOworI2VuZGlmCit9CisKK1NvdXBOZXR3b3JrU2Vzc2lvbjo6U291cE5ldHdvcmtT
ZXNzaW9uKFNvdXBTZXNzaW9uKiBzb3VwU2Vzc2lvbikKKyAgICA6IG1fc291cFNlc3Npb24oc291
cFNlc3Npb24pCit7CisgICAgc2V0dXBMb2dnZXIoKTsKK30KKworU291cE5ldHdvcmtTZXNzaW9u
Ojp+U291cE5ldHdvcmtTZXNzaW9uKCkKK3sKK30KKwordm9pZCBTb3VwTmV0d29ya1Nlc3Npb246
OnNldHVwTG9nZ2VyKCkKK3sKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgaWYgKExvZ05ldHdvcmsu
c3RhdGUgIT0gV1RGTG9nQ2hhbm5lbE9uIHx8IHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShtX3Nv
dXBTZXNzaW9uLmdldCgpLCBTT1VQX1RZUEVfTE9HR0VSKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgR1JlZlB0cjxTb3VwTG9nZ2VyPiBsb2dnZXIgPSBhZG9wdEdSZWYoc291cF9sb2dnZXJfbmV3
KFNPVVBfTE9HR0VSX0xPR19CT0RZLCAtMSkpOworICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVy
ZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1NFU1NJT05fRkVBVFVSRShsb2dnZXIuZ2V0KCkp
KTsKKyAgICBzb3VwX2xvZ2dlcl9zZXRfcHJpbnRlcihsb2dnZXIuZ2V0KCksIHNvdXBMb2dQcmlu
dGVyLCBudWxscHRyLCBudWxscHRyKTsKKyNlbmRpZgorfQorCit2b2lkIFNvdXBOZXR3b3JrU2Vz
c2lvbjo6c2V0Q29va2llSmFyKFNvdXBDb29raWVKYXIqIGphcikKK3sKKyAgICBpZiAoU291cENv
b2tpZUphciogY3VycmVudEphciA9IGNvb2tpZUphcigpKQorICAgICAgICBzb3VwX3Nlc3Npb25f
cmVtb3ZlX2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9TRVNTSU9OX0ZFQVRVUkUo
Y3VycmVudEphcikpOworICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShtX3NvdXBTZXNzaW9u
LmdldCgpLCBTT1VQX1NFU1NJT05fRkVBVFVSRShqYXIpKTsKK30KKworU291cENvb2tpZUphciog
U291cE5ldHdvcmtTZXNzaW9uOjpjb29raWVKYXIoKSBjb25zdAoreworICAgIHJldHVybiBTT1VQ
X0NPT0tJRV9KQVIoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCks
IFNPVVBfVFlQRV9DT09LSUVfSkFSKSk7Cit9CisKK3ZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpz
ZXRDYWNoZShTb3VwQ2FjaGUqIGNhY2hlKQoreworICAgIEFTU0VSVCghc291cF9zZXNzaW9uX2dl
dF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9DQUNIRSkpOworICAgIHNv
dXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1NFU1NJT05f
RkVBVFVSRShjYWNoZSkpOworfQorCitTb3VwQ2FjaGUqIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2Fj
aGUoKSBjb25zdAoreworICAgIFNvdXBTZXNzaW9uRmVhdHVyZSogc291cENhY2hlID0gc291cF9z
ZXNzaW9uX2dldF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9DQUNIRSk7
CisgICAgcmV0dXJuIHNvdXBDYWNoZSA/IFNPVVBfQ0FDSEUoc291cENhY2hlKSA6IG51bGxwdHI7
Cit9CisKK3ZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpzZXRTU0xQb2xpY3koU1NMUG9saWN5IGZs
YWdzKQoreworICAgIGdfb2JqZWN0X3NldChtX3NvdXBTZXNzaW9uLmdldCgpLAorICAgICAgICBT
T1VQX1NFU1NJT05fU1NMX1VTRV9TWVNURU1fQ0FfRklMRSwgZmxhZ3MgJiBTU0xVc2VTeXN0ZW1D
QUZpbGUgPyBUUlVFIDogRkFMU0UsCisgICAgICAgIFNPVVBfU0VTU0lPTl9TU0xfU1RSSUNULCBm
bGFncyAmIFNTTFN0cmljdCA/IFRSVUUgOiBGQUxTRSwKKyAgICAgICAgbnVsbHB0cik7Cit9CisK
K1NvdXBOZXR3b3JrU2Vzc2lvbjo6U1NMUG9saWN5IFNvdXBOZXR3b3JrU2Vzc2lvbjo6c3NsUG9s
aWN5KCkgY29uc3QKK3sKKyAgICBnYm9vbGVhbiB1c2VTeXN0ZW1DQUZpbGUsIHN0cmljdDsKKyAg
ICBnX29iamVjdF9nZXQobV9zb3VwU2Vzc2lvbi5nZXQoKSwKKyAgICAgICAgU09VUF9TRVNTSU9O
X1NTTF9VU0VfU1lTVEVNX0NBX0ZJTEUsICZ1c2VTeXN0ZW1DQUZpbGUsCisgICAgICAgIFNPVVBf
U0VTU0lPTl9TU0xfU1RSSUNULCAmc3RyaWN0LAorICAgICAgICBudWxscHRyKTsKKworICAgIFNT
TFBvbGljeSBmbGFncyA9IDA7CisgICAgaWYgKHVzZVN5c3RlbUNBRmlsZSkKKyAgICAgICAgZmxh
Z3MgfD0gU1NMVXNlU3lzdGVtQ0FGaWxlOworICAgIGlmIChzdHJpY3QpCisgICAgICAgIGZsYWdz
IHw9IFNTTFN0cmljdDsKKyAgICByZXR1cm4gZmxhZ3M7Cit9CisKK3ZvaWQgU291cE5ldHdvcmtT
ZXNzaW9uOjpzZXRIVFRQUHJveHkoY29uc3QgY2hhciogaHR0cFByb3h5LCBjb25zdCBjaGFyKiBo
dHRwUHJveHlFeGNlcHRpb25zKQoreworI2lmIFBMQVRGT1JNKEVGTCkKKyAgICAvLyBPbmx5IGZv
ciBFRkwgYmVjYXVzZSBHVEsgcG9ydCB1c2VzIHRoZSBkZWZhdWx0IHJlc29sdmVyLCB3aGljaCB1
c2VzIEdJTydzIHByb3h5IHJlc29sdmVyLgorICAgIGlmICghaHR0cFByb3h5KSB7CisgICAgICAg
IHNvdXBfc2Vzc2lvbl9yZW1vdmVfZmVhdHVyZV9ieV90eXBlKG1fc291cFNlc3Npb24uZ2V0KCks
IFNPVVBfVFlQRV9QUk9YWV9VUklfUkVTT0xWRVIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgR1JlZlB0cjxTb3VwUHJveHlVUklSZXNvbHZlcj4gcmVzb2x2ZXIgPSBhZG9wdEdSZWYo
c291cFByb3h5UmVzb2x2ZXJXa05ldyhodHRwUHJveHksIGh0dHBQcm94eUV4Y2VwdGlvbnMpKTsK
KyAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9T
RVNTSU9OX0ZFQVRVUkUocmVzb2x2ZXIuZ2V0KCkpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KGh0dHBQcm94eSk7CisgICAgVU5VU0VEX1BBUkFNKGh0dHBQcm94eUV4Y2VwdGlvbnMpOworI2Vu
ZGlmCit9CisKK2NoYXIqIFNvdXBOZXR3b3JrU2Vzc2lvbjo6aHR0cFByb3h5KCkgY29uc3QKK3sK
KyNpZiBQTEFURk9STShFRkwpCisgICAgU291cFNlc3Npb25GZWF0dXJlKiBzb3VwUmVzb2x2ZXIg
PSBzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9UWVBF
X1BST1hZX1VSSV9SRVNPTFZFUik7CisgICAgaWYgKCFzb3VwUmVzb2x2ZXIpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgR093blB0cjxTb3VwVVJJPiB1cmk7CisgICAgZ19vYmplY3Rf
Z2V0KHJlc29sdmVyLCBTT1VQX1BST1hZX1JFU09MVkVSX1dLX1BST1hZX1VSSSwgJnVyaS5vdXRQ
dHIoKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gdXJpID8gc291cF91cmlfdG9fc3RyaW5nKHVy
aS5nZXQoKSwgRkFMU0UpIDogbnVsbHB0cjsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7Cisj
ZW5kaWYKK30KKwordm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OnNldHVwSFRUUFByb3h5RnJvbUVu
dmlyb25tZW50KCkKK3sKKyNpZiBQTEFURk9STShFRkwpCisgICAgY29uc3QgY2hhciogaHR0cFBy
b3h5ID0gZ2V0ZW52KCJodHRwX3Byb3h5Iik7CisgICAgaWYgKCFodHRwUHJveHkpCisgICAgICAg
IHJldHVybjsKKworICAgIHNldEhUVFBQcm94eShodHRwUHJveHksIGdldGVudigibm9fcHJveHki
KSk7CisjZW5kaWYKK30KKworc3RhdGljIENTdHJpbmcgYnVpbGRBY2NlcHRMYW5ndWFnZXMoVmVj
dG9yPFN0cmluZz4gbGFuZ3VhZ2VzKQoreworICAgIC8vIElnbm9yZSAiQyIgbG9jYWxlLgorICAg
IHNpemVfdCBwb3NpdGlvbiA9IGxhbmd1YWdlcy5maW5kKCJjIik7CisgICAgaWYgKHBvc2l0aW9u
ICE9IG5vdEZvdW5kKQorICAgICAgICBsYW5ndWFnZXMucmVtb3ZlKHBvc2l0aW9uKTsKKworICAg
IC8vIEZhbGxiYWNrIHRvICJlbiIgaWYgdGhlIGxpc3QgaXMgZW1wdHkuCisgICAgaWYgKGxhbmd1
YWdlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAiZW4iOworCisgICAgLy8gQ2FsY3VsYXRl
IGRlbHRhcyBmb3IgdGhlIHF1YWxpdHkgdmFsdWVzLgorICAgIGludCBkZWx0YTsKKyAgICBpZiAo
bGFuZ3VhZ2VzLnNpemUoKSA8IDEwKQorICAgICAgICBkZWx0YSA9IDEwOworICAgIGVsc2UgaWYg
KGxhbmd1YWdlcy5zaXplKCkgPCAyMCkKKyAgICAgICAgZGVsdGEgPSA1OworICAgIGVsc2UKKyAg
ICAgICAgZGVsdGEgPSAxOworCisgICAgLy8gU2V0IHF1YWxpdHkgdmFsdWVzIGZvciBlYWNoIGxh
bmd1YWdlLgorICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxhbmd1YWdlcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoaSkKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOworCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxhbmd1
YWdlc1tpXSk7CisKKyAgICAgICAgaW50IHF1YWxpdHkgPSAxMDAgLSBpICogZGVsdGE7CisgICAg
ICAgIGlmIChxdWFsaXR5ID4gMCAmJiBxdWFsaXR5IDwgMTAwKSB7CisgICAgICAgICAgICBjaGFy
IGJ1ZmZlcls4XTsKKyAgICAgICAgICAgIGdfYXNjaWlfZm9ybWF0ZChidWZmZXIsIDgsICIlLjJm
IiwgcXVhbGl0eSAvIDEwMC4wKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6
Zm9ybWF0KCI7cT0lcyIsIGJ1ZmZlcikpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7Cit9CisKK3ZvaWQgU291cE5ldHdvcmtTZXNzaW9u
OjpzZXRBY2NlcHRMYW5ndWFnZXMoVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzKQoreworICAgIGdf
b2JqZWN0X3NldChtX3NvdXBTZXNzaW9uLmdldCgpLCAiYWNjZXB0LWxhbmd1YWdlIiwgYnVpbGRB
Y2NlcHRMYW5ndWFnZXMobGFuZ3VhZ2VzKS5kYXRhKCksIG51bGxwdHIpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xNzlkMjJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCkBAIC0wLDAgKzEsODYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFNvdXBOZXR3b3JrU2Vzc2lvbl9oCisjZGVmaW5lIFNvdXBOZXR3b3JrU2Vzc2lvbl9oCisKKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit0eXBlZGVmIHN0cnVjdCBf
U291cENhY2hlIFNvdXBDYWNoZTsKK3R5cGVkZWYgc3RydWN0IF9Tb3VwQ29va2llSmFyIFNvdXBD
b29raWVKYXI7Cit0eXBlZGVmIHN0cnVjdCBfU291cFNlc3Npb24gU291cFNlc3Npb247CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU291cE5ldHdvcmtTZXNzaW9uIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShTb3VwTmV0d29ya1Nlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8U291cE5ldHdvcmtTZXNzaW9u
PjsKK3B1YmxpYzoKKyAgICB+U291cE5ldHdvcmtTZXNzaW9uKCk7CisKKyAgICBzdGF0aWMgU291
cE5ldHdvcmtTZXNzaW9uJiBkZWZhdWx0U2Vzc2lvbigpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8U291cE5ldHdvcmtTZXNzaW9uPiBjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+IGNyZWF0ZVRl
c3RpbmdTZXNzaW9uKCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nl
c3Npb24+IGNyZWF0ZUZvclNvdXBTZXNzaW9uKFNvdXBTZXNzaW9uKik7CisKKyAgICBlbnVtIFNT
TFBvbGljeUZsYWdzIHsKKyAgICAgICAgU1NMU3RyaWN0ID0gMSA8PCAwLAorICAgICAgICBTU0xV
c2VTeXN0ZW1DQUZpbGUgPSAxIDw8IDEKKyAgICB9OworICAgIHR5cGVkZWYgdW5zaWduZWQgU1NM
UG9saWN5OworCisgICAgU291cFNlc3Npb24qIHNvdXBTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VwU2Vzc2lvbi5nZXQoKTsgfQorCisgICAgdm9pZCBzZXRDb29raWVKYXIoU291cENvb2tp
ZUphciopOworICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphcigpIGNvbnN0OworCisgICAgdm9p
ZCBzZXRDYWNoZShTb3VwQ2FjaGUqKTsKKyAgICBTb3VwQ2FjaGUqIGNhY2hlKCkgY29uc3Q7CisK
KyAgICB2b2lkIHNldFNTTFBvbGljeShTU0xQb2xpY3kpOworICAgIFNTTFBvbGljeSBzc2xQb2xp
Y3koKSBjb25zdDsKKworICAgIHZvaWQgc2V0SFRUUFByb3h5KGNvbnN0IGNoYXIqIGh0dHBQcm94
eSwgY29uc3QgY2hhciogaHR0cFByb3h5RXhjZXB0aW9ucyk7CisgICAgY2hhciogaHR0cFByb3h5
KCkgY29uc3Q7CisgICAgdm9pZCBzZXR1cEhUVFBQcm94eUZyb21FbnZpcm9ubWVudCgpOworCisg
ICAgdm9pZCBzZXRBY2NlcHRMYW5ndWFnZXMoVmVjdG9yPFN0cmluZz4pOworCitwcml2YXRlOgor
ICAgIFNvdXBOZXR3b3JrU2Vzc2lvbihTb3VwQ29va2llSmFyKik7CisgICAgU291cE5ldHdvcmtT
ZXNzaW9uKFNvdXBTZXNzaW9uKik7CisKKyAgICB2b2lkIHNldHVwTG9nZ2VyKCk7CisKKyAgICBH
UmVmUHRyPFNvdXBTZXNzaW9uPiBtX3NvdXBTZXNzaW9uOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBlOWJkYmQwLi4xOGRkMWE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTQtMDEtMTEgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTT1VQXSBBZGQgU291
cE5ldHdvcmtTZXNzaW9uIGNsYXNzIHRvIHdyYXAgYSBTb3VwU2Vzc2lvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2ODEzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBuZXcgU291cE5ldHdv
cmtTZXNzaW9uIEFQSS4KKworICAgICAgICAqIGV3ay9ld2tfY29va2llcy5jcHA6CisgICAgICAg
IChld2tfY29va2llc19maWxlX3NldCk6CisgICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKKyAg
ICAgICAgKF9ld2tfaW5pdF9ib2R5KToKKyAgICAgICAgKiBld2svZXdrX25ldHdvcmsuY3BwOgor
ICAgICAgICAoZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldCk6CisgICAgICAgIChld2tfbmV0d29y
a19wcm94eV91cmlfZ2V0KToKKyAgICAgICAgKGV3a19uZXR3b3JrX3Rsc19jZXJ0aWZpY2F0ZV9j
aGVja19nZXQpOgorICAgICAgICAoZXdrX25ldHdvcmtfdGxzX2NlcnRpZmljYXRlX2NoZWNrX3Nl
dCk6CisgICAgICAgIChld2tfbmV0d29ya190bHNfY2FfY2VydGlmaWNhdGVzX3BhdGhfZ2V0KToK
KyAgICAgICAgKGV3a19uZXR3b3JrX3Rsc19jYV9jZXJ0aWZpY2F0ZXNfcGF0aF9zZXQpOgorICAg
ICAgICAoZXdrX25ldHdvcmtfZGVmYXVsdF9zb3VwX3Nlc3Npb25fZ2V0KToKKyAgICAgICAgKiBl
d2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdfc291cF9zZXNzaW9uX2dldCk6Cisg
ICAgICAgIChld2tfdmlld19zb3VwX3Nlc3Npb25fc2V0KToKKwogMjAxNC0wMS0wOCAgUnl1YW4g
Q2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gTWVyZ2UgZXdr
X3ZpZXdfc2luZ2xlIGludG8gZXdrX3ZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfY29va2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Nvb2tpZXMu
Y3BwCmluZGV4IGJiZWU4ZTQuLmVkMDFlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfY29va2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb29r
aWVzLmNwcApAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1ZGUgImV3a19jb29raWVzLmgiCiAKICNp
bmNsdWRlICJDb29raWVKYXJTb3VwLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNp
bmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVk
ZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgpAQCAtNDIsMTMgKzQy
LDkgQEAgRWluYV9Cb29sIGV3a19jb29raWVzX2ZpbGVfc2V0KGNvbnN0IGNoYXIqIGZpbGVuYW1l
KQogCiAgICAgc291cF9jb29raWVfamFyX3NldF9hY2NlcHRfcG9saWN5KGNvb2tpZUphciwgU09V
UF9DT09LSUVfSkFSX0FDQ0VQVF9OT19USElSRF9QQVJUWSk7CiAKLSAgICBTb3VwU2Vzc2lvbiog
c2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwotICAg
IFNvdXBTZXNzaW9uRmVhdHVyZSogb2xkamFyID0gc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNl
c3Npb24sIFNPVVBfVFlQRV9DT09LSUVfSkFSKTsKLSAgICBpZiAob2xkamFyKQotICAgICAgICBz
b3VwX3Nlc3Npb25fcmVtb3ZlX2ZlYXR1cmUoc2Vzc2lvbiwgb2xkamFyKTsKLQorICAgIFNvdXBO
ZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRDb29raWVKYXIoY29va2llSmFyKTsK
ICAgICBXZWJDb3JlOjpzZXRTb3VwQ29va2llSmFyKGNvb2tpZUphcik7Ci0gICAgc291cF9zZXNz
aW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFUVVJFKGNvb2tpZUphcikp
OworICAgIGdfb2JqZWN0X3VucmVmKGNvb2tpZUphcik7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX21haW4uY3BwCmluZGV4IGQ3MTY3NzcuLjk1N2JmYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19tYWluLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZVRyYWNrZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlVHJhY2tlckNsaWVudEVmbC5oIgog
I2luY2x1ZGUgImV3a19hdXRoX3NvdXBfcHJpdmF0ZS5oIgpAQCAtMjA2LDcgKzIwNyw3IEBAIEVp
bmFfQm9vbCBfZXdrX2luaXRfYm9keSh2b2lkKQogCiAgICAgU291cFNlc3Npb24qIHNlc3Npb24g
PSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKICAgICBTb3VwU2Vz
c2lvbkZlYXR1cmUqIGF1dGhfZGlhbG9nID0gc3RhdGljX2Nhc3Q8U291cFNlc3Npb25GZWF0dXJl
Kj4oZ19vYmplY3RfbmV3KEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0csIDApKTsKLSAgICBzb3Vw
X3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgYXV0aF9kaWFsb2cpOworICAgIHNvdXBfc2Vz
c2lvbl9hZGRfZmVhdHVyZShXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNz
aW9uKCkuc291cFNlc3Npb24oKSwgYXV0aF9kaWFsb2cpOwogCiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyh0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfbmV0d29yay5jcHAKaW5kZXggNTJkMjBhYS4uMGZiN2YwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX25ldHdvcmsuY3BwCkBAIC0zMCw1OSArMzAsMzkgQEAKIAogdm9pZCBld2tfbmV0d29y
a19wcm94eV91cmlfc2V0KGNvbnN0IGNoYXIqIHByb3h5KQogewotICAgIFNvdXBTZXNzaW9uKiBz
ZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7Ci0KLSAg
ICBpZiAoIXByb3h5KSB7CisgICAgaWYgKCFwcm94eSkKICAgICAgICAgRVJSKCJubyBwcm94eSB1
cmkuIHJlbW92ZSBwcm94eSBmZWF0dXJlIGluIHNvdXAuIik7Ci0gICAgICAgIHNvdXBfc2Vzc2lv
bl9yZW1vdmVfZmVhdHVyZV9ieV90eXBlKHNlc3Npb24sIFNPVVBfVFlQRV9QUk9YWV9VUklfUkVT
T0xWRVIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgU291cFByb3h5VVJJUmVzb2x2
ZXIqIHJlc29sdmVyRWZsID0gc291cFByb3h5UmVzb2x2ZXJXa05ldyhwcm94eSwgMCk7Ci0gICAg
c291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFUVVJFKHJl
c29sdmVyRWZsKSk7Ci0gICAgZ19vYmplY3RfdW5yZWYocmVzb2x2ZXJFZmwpOworICAgIFdlYkNv
cmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRIVFRQUHJveHkocHJv
eHksIDApOwogfQogCiBjb25zdCBjaGFyKiBld2tfbmV0d29ya19wcm94eV91cmlfZ2V0KHZvaWQp
CiB7Ci0gICAgU291cFVSSSogdXJpOwotICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7Ci0gICAgU291cFByb3h5VVJJUmVz
b2x2ZXIqIHJlc29sdmVyID0gU09VUF9QUk9YWV9VUklfUkVTT0xWRVIoc291cF9zZXNzaW9uX2dl
dF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQRV9QUk9YWV9VUklfUkVTT0xWRVIpKTsKLSAgICBp
ZiAoIXJlc29sdmVyKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGdfb2JqZWN0X2dldChyZXNv
bHZlciwgU09VUF9QUk9YWV9SRVNPTFZFUl9XS19QUk9YWV9VUkksICZ1cmksIE5VTEwpOwotCisg
ICAgY2hhciogdXJpID0gV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lv
bigpLmh0dHBQcm94eSgpOwogICAgIGlmICghdXJpKSB7CiAgICAgICAgIEVSUigibm8gcHJveHkg
dXJpIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFdURjo6U3RyaW5nIHByb3h5
ID0gc291cF91cmlfdG9fc3RyaW5nKHVyaSwgZmFsc2UpOwotICAgIHJldHVybiBlaW5hX3N0cmlu
Z3NoYXJlX2FkZChwcm94eS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZWluYV9zdHJpbmdz
aGFyZV9hZGQodXJpKTsKIH0KIAogRWluYV9Cb29sIGV3a19uZXR3b3JrX3Rsc19jZXJ0aWZpY2F0
ZV9jaGVja19nZXQoKQogewotICAgIGJvb2wgY2hlY2tDZXJ0aWZpY2F0ZXMgPSBmYWxzZTsKLQot
ICAgIFNvdXBTZXNzaW9uKiBkZWZhdWx0U2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpkZWZhdWx0U2Vzc2lvbigpOwotICAgIGdfb2JqZWN0X2dldChkZWZhdWx0U2Vzc2lvbiwgInNz
bC1zdHJpY3QiLCAmY2hlY2tDZXJ0aWZpY2F0ZXMsIE5VTEwpOwotCi0gICAgcmV0dXJuIGNoZWNr
Q2VydGlmaWNhdGVzOworICAgIHVuc2lnbmVkIHBvbGljeSA9IFdlYkNvcmU6OlNvdXBOZXR3b3Jr
U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zc2xQb2xpY3koKTsKKyAgICByZXR1cm4gcG9saWN5
ICYgV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpTU0xTdHJpY3Q7CiB9CiAKIHZvaWQgZXdr
X25ldHdvcmtfdGxzX2NlcnRpZmljYXRlX2NoZWNrX3NldChFaW5hX0Jvb2wgY2hlY2tDZXJ0aWZp
Y2F0ZXMpCiB7Ci0gICAgU291cFNlc3Npb24qIGRlZmF1bHRTZXNzaW9uID0gV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7Ci0gICAgZ19vYmplY3Rfc2V0KGRlZmF1bHRT
ZXNzaW9uLCAic3NsLXN0cmljdCIsIGNoZWNrQ2VydGlmaWNhdGVzLCBOVUxMKTsKKyAgICB1bnNp
Z25lZCBwb2xpY3kgPSBXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9u
KCkuc3NsUG9saWN5KCk7CisgICAgV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0
U2Vzc2lvbigpLnNldFNTTFBvbGljeShwb2xpY3kgfCBXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Np
b246OlNTTFN0cmljdCk7CiB9CiAKIGNvbnN0IGNoYXIqIGV3a19uZXR3b3JrX3Rsc19jYV9jZXJ0
aWZpY2F0ZXNfcGF0aF9nZXQoKQogewogICAgIGNvbnN0IGNoYXIqIGJ1bmRsZVBhdGggPSAwOwog
Ci0gICAgU291cFNlc3Npb24qIGRlZmF1bHRTZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGU6OmRlZmF1bHRTZXNzaW9uKCk7CisgICAgU291cFNlc3Npb24qIGRlZmF1bHRTZXNzaW9uID0g
V2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNvdXBTZXNzaW9u
KCk7CiAgICAgZ19vYmplY3RfZ2V0KGRlZmF1bHRTZXNzaW9uLCAic3NsLWNhLWZpbGUiLCAmYnVu
ZGxlUGF0aCwgTlVMTCk7CiAKICAgICByZXR1cm4gYnVuZGxlUGF0aDsKQEAgLTkwLDExICs3MCwx
MSBAQCBjb25zdCBjaGFyKiBld2tfbmV0d29ya190bHNfY2FfY2VydGlmaWNhdGVzX3BhdGhfZ2V0
KCkKIAogdm9pZCBld2tfbmV0d29ya190bHNfY2FfY2VydGlmaWNhdGVzX3BhdGhfc2V0KGNvbnN0
IGNoYXIqIGJ1bmRsZVBhdGgpCiB7Ci0gICAgU291cFNlc3Npb24qIGRlZmF1bHRTZXNzaW9uID0g
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7CisgICAgU291cFNlc3Np
b24qIGRlZmF1bHRTZXNzaW9uID0gV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0
U2Vzc2lvbigpLnNvdXBTZXNzaW9uKCk7CiAgICAgZ19vYmplY3Rfc2V0KGRlZmF1bHRTZXNzaW9u
LCAic3NsLWNhLWZpbGUiLCBidW5kbGVQYXRoLCBOVUxMKTsKIH0KIAogU291cFNlc3Npb24qIGV3
a19uZXR3b3JrX2RlZmF1bHRfc291cF9zZXNzaW9uX2dldCgpCiB7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICAgIHJldHVybiBXZWJDb3Jl
OjpTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc291cFNlc3Npb24oKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IDNjZjBlZWMuLjg4OTAyZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUgIlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNp
bmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgImNfaW5zdGFuY2UuaCIKICNp
bmNsdWRlICJld2tfY29udGV4dG1lbnVfcHJpdmF0ZS5oIgpAQCAtNDU0NSw3ICs0NTQ2LDcgQEAg
U291cFNlc3Npb24qIGV3a192aWV3X3NvdXBfc2Vzc2lvbl9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIDApOwotICAgIHJldHVybiBwcml2LT5zdG9yYWdlU2Vzc2lvbi0+c291cFNlc3Npb24oKTsK
KyAgICByZXR1cm4gcHJpdi0+c3RvcmFnZVNlc3Npb24tPnNvdXBOZXR3b3JrU2Vzc2lvbigpLnNv
dXBTZXNzaW9uKCk7CiB9CiAKIHZvaWQgZXdrX3ZpZXdfc291cF9zZXNzaW9uX3NldChFdmFzX09i
amVjdCogZXdrVmlldywgU291cFNlc3Npb24qIHNlc3Npb24pCkBAIC00NTU3LDcgKzQ1NTgsNyBA
QCB2b2lkIGV3a192aWV3X3NvdXBfc2Vzc2lvbl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFNv
dXBTZXNzaW9uKiBzZXNzaW9uKQogICAgICAgICAgICAgImEgU291cFNlc3Npb25TeW5jIHdhcyBw
cm92aWRlZC4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwcml2LT5zdG9yYWdlU2Vz
c2lvbi0+c2V0U291cFNlc3Npb24oc2Vzc2lvbik7CisgICAgcHJpdi0+c3RvcmFnZVNlc3Npb24t
PnNldFNvdXBOZXR3b3JrU2Vzc2lvbihTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZUZvclNvdXBT
ZXNzaW9uKHNlc3Npb24pKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxl
X3hzc19hdWRpdG9yX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCBjZWVjZTFmLi5lMTgyYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTQtMDEtMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtTT1VQXSBBZGQgU291cE5ldHdvcmtTZXNzaW9uIGNsYXNzIHRvIHdyYXAg
YSBTb3VwU2Vzc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI2ODEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3ZWJraXQvd2Via2l0Z2xvYmFscy5jcHA6CisgICAgICAgICh3ZWJraXRfZ2V0X2Rl
ZmF1bHRfc2Vzc2lvbik6IFVzZSB0aGUgbmV3IFNvdXBOZXR3b3JrU2Vzc2lvbiBBUEkKKyAgICAg
ICAgdG8gZ2V0IHRoZSBkZWZhdWx0IFNvdXBTZXNzaW9uCisKIDIwMTQtMDEtMDggIENsYXVkaW8g
U2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgeGRn
Lm9yaWdpbi51cmwgZXh0ZW5kZWQgYXR0cmlidXRlIHRvIGRvd25sb2FkcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwIGIvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwCmluZGV4IDJjYjViZTUuLmY2MWM4ZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xvYmFscy5jcHAKQEAgLTM5LDYgKzM5
LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAi
U291cE5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nUmVnaXN0cnkuaCIK
ICNpbmNsdWRlICJ3ZWJraXRhcHBsaWNhdGlvbmNhY2hlLmgiCiAjaW5jbHVkZSAid2Via2l0ZmF2
aWNvbmRhdGFiYXNlLmgiCkBAIC04Myw3ICs4NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogU291cFNlc3Npb24qIHdlYmtpdF9nZXRfZGVmYXVsdF9zZXNzaW9uICgpCiB7CiAgICAgd2Vi
a2l0SW5pdCgpOwotICAgIHJldHVybiBSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsK
KyAgICByZXR1cm4gU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNvdXBTZXNz
aW9uKCk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM1ZWUwYWIuLmVlZWY0MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMiBAQAorMjAxNC0wMS0xMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1NPVVBdIEFkZCBTb3VwTmV0d29ya1Nlc3Np
b24gY2xhc3MgdG8gd3JhcCBhIFNvdXBTZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY4MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgdGhlIG5ldyBTb3VwTmV0d29ya1Nlc3Npb24gQVBJ
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0
d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1T
ZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyQ2Fj
aGVGb3JBbGxPcmlnaW5zKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQ
cm9jZXNzTWFpblVuaXguY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc01haW4p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3Vw
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llUGVyc2lz
dGVudFN0b3JhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc01haW5FZmwpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc01haW5HdGspOgorICAgICAgICAqIFdlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291
cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2Rl
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtQ2xlYXJSZXNvdXJjZUNh
Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OnNldFNvdXBTZXNzaW9uQWNjZXB0TGFuZ3VhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNz
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlclVSSVNjaGVt
ZSk6CisKIDIwMTQtMDEtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIEZpeCByZXR1cm4gdmFsdWUgb2YgV2ViS2l0RG93bmxvYWQ6
OmNyZWF0ZWQtZGVzdGluYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCA2ZDdjZjk3Li41OGRk
NWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nv
dXBOZXR3b3JrU2Vzc2lvbi5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+
CkBAIC03OCw3ICs3OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiB7CiAgICAgQVNTRVJU
KCFwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpOwogICAgIEdSZWZQdHI8
U291cENhY2hlPiBzb3VwQ2FjaGUgPSBhZG9wdEdSZWYoc291cF9jYWNoZV9uZXcocGFyYW1ldGVy
cy5kaXNrQ2FjaGVEaXJlY3RvcnkudXRmOCgpLmRhdGEoKSwgU09VUF9DQUNIRV9TSU5HTEVfVVNF
UikpOwotICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6ZGVmYXVsdFNlc3Npb24oKSwgU09VUF9TRVNTSU9OX0ZFQVRVUkUoc291cENhY2hlLmdldCgp
KSk7CisgICAgU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldENhY2hlKHNv
dXBDYWNoZS5nZXQoKSk7CiAgICAgc291cF9jYWNoZV9sb2FkKHNvdXBDYWNoZS5nZXQoKSk7CiAK
ICAgICBpZiAoIXBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoLmlzRW1wdHko
KSkgewpAQCAtMTAxLDggKzEwMiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtU2V0
Q2FjaGVNb2RlbChDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAgdW5zaWduZWQgbG9uZyB1cmxD
YWNoZU1lbW9yeUNhcGFjaXR5ID0gMDsKICAgICB1bnNpZ25lZCBsb25nIHVybENhY2hlRGlza0Nh
cGFjaXR5ID0gMDsKIAotICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gUmVzb3VyY2VIYW5kbGU6
OmRlZmF1bHRTZXNzaW9uKCk7Ci0gICAgU291cENhY2hlKiBjYWNoZSA9IFNPVVBfQ0FDSEUoc291
cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQRV9DQUNIRSkpOworICAgIFNv
dXBDYWNoZSogY2FjaGUgPSBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2Fj
aGUoKTsKICAgICB1aW50NjRfdCBkaXNrRnJlZVNpemUgPSBnZXRDYWNoZURpc2tGcmVlU2l6ZShj
YWNoZSkgLyAxMDI0IC8gMTAyNDsKIAogICAgIHVpbnQ2NF90IG1lbVNpemUgPSBnZXRNZW1vcnlT
aXplKCk7CkBAIC0xMjksOCArMTI5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJDYWNo
ZUZvckFsbE9yaWdpbnModWludDMyX3QgY2FjaGVzVG9DbGVhcikKICAgICBpZiAoY2FjaGVzVG9D
bGVhciA9PSBJbk1lbW9yeVJlc291cmNlQ2FjaGVzT25seSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU291cFNlc3Npb24qIHNlc3Npb24gPSBSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24o
KTsKLSAgICBzb3VwX2NhY2hlX2NsZWFyKFNPVVBfQ0FDSEUoc291cF9zZXNzaW9uX2dldF9mZWF0
dXJlKHNlc3Npb24sIFNPVVBfVFlQRV9DQUNIRSkpKTsKKyAgICBzb3VwX2NhY2hlX2NsZWFyKFNv
dXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5jYWNoZSgpKTsKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1UZXJtaW5hdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvdW5peC9OZXR3b3JrUHJvY2Vzc01haW5Vbml4LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3VuaXgvTmV0d29ya1Byb2Nlc3NNYWluVW5peC5j
cHAKaW5kZXggMmM4YWVkZi4uMDNhOGJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvdW5peC9OZXR3b3JrUHJvY2Vzc01haW5Vbml4LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9jZXNzTWFpblVuaXguY3BwCkBA
IC0yOSwxMCArMjksOSBAQAogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIAotI2luY2x1
ZGUgIlByb3h5UmVzb2x2ZXJTb3VwLmgiCiAjaW5jbHVkZSAiV0tCYXNlLmgiCiAjaW5jbHVkZSAi
V2ViS2l0MkluaXRpYWxpemUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJL
aXQyL05ldHdvcmtQcm9jZXNzLmg+CiAjaW5jbHVkZSA8ZXJyb3IuaD4KICNpbmNsdWRlIDxydW50
aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KQEAgLTY4LDE4ICs2Nyw3IEBAIFdLX0VYUE9SVCBp
bnQgTmV0d29ya1Byb2Nlc3NNYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAKICAgICBJbml0
aWFsaXplV2ViS2l0MigpOwogCi0jaWYgVVNFKFNPVVApCi0gICAgU291cFNlc3Npb24qIHNlc3Np
b24gPSBSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKLSNpZiBQTEFURk9STShFRkwp
Ci0gICAgLy8gT25seSBmb3IgRUZMIGJlY2F1c2UgR1RLIHBvcnQgdXNlcyB0aGUgZGVmYXVsdCBy
ZXNvbHZlciwgd2hpY2ggdXNlcyBHSU8ncyBwcm94eSByZXNvbHZlci4KLSAgICBjb25zdCBjaGFy
KiBodHRwUHJveHkgPSBnZXRlbnYoImh0dHBfcHJveHkiKTsKLSAgICBpZiAoaHR0cFByb3h5KSB7
Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5vUHJveHkgPSBnZXRlbnYoIm5vX3Byb3h5Iik7Ci0gICAg
ICAgIEdSZWZQdHI8U291cFByb3h5VVJJUmVzb2x2ZXI+IHJlc29sdmVyID0gYWRvcHRHUmVmKHNv
dXBQcm94eVJlc29sdmVyV2tOZXcoaHR0cFByb3h5LCBub1Byb3h5KSk7Ci0gICAgICAgIHNvdXBf
c2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1NFU1NJT05fRkVBVFVSRShyZXNvbHZl
ci5nZXQoKSkpOwotICAgIH0KLSNlbmRpZgotI2VuZGlmCisgICAgU291cE5ldHdvcmtTZXNzaW9u
OjpkZWZhdWx0U2Vzc2lvbigpLnNldHVwSFRUUFByb3h5RnJvbUVudmlyb25tZW50KCk7CiAKICAg
ICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFdKTsKIApAQCAtOTIsMTYgKzgwLDE1IEBAIFdLX0VY
UE9SVCBpbnQgTmV0d29ya1Byb2Nlc3NNYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAg
Ly8gRGVzcGl0ZSB1c2luZyBzeXN0ZW0gQ0FzIHRvIHZhbGlkYXRlIGNlcnRpZmljYXRlcyB3ZSdy
ZQogICAgIC8vIGFjY2VwdGluZyBpbnZhbGlkIGNlcnRpZmljYXRlcyBieSBkZWZhdWx0LiBOZXcg
QVBJIHdpbGwgYmUKICAgICAvLyBhZGRlZCBsYXRlciB0byBsZXQgY2xpZW50IGFjY2VwdC9kaXNj
YXJkIGludmFsaWQgY2VydGlmaWNhdGVzLgotICAgIGdfb2JqZWN0X3NldChzZXNzaW9uLCBTT1VQ
X1NFU1NJT05fU1NMX1VTRV9TWVNURU1fQ0FfRklMRSwgVFJVRSwKLSAgICAgICAgU09VUF9TRVNT
SU9OX1NTTF9TVFJJQ1QsIEZBTFNFLCBOVUxMKTsKKyAgICBTb3VwTmV0d29ya1Nlc3Npb246OmRl
ZmF1bHRTZXNzaW9uKCkuc2V0U1NMUG9saWN5KFNvdXBOZXR3b3JrU2Vzc2lvbjo6U1NMVXNlU3lz
dGVtQ0FGaWxlKTsKICNlbmRpZgogCiAgICAgUnVuTG9vcDo6cnVuKCk7CiAKICNpZiBVU0UoU09V
UCkKLSAgICBpZiAoU291cFNlc3Npb25GZWF0dXJlKiBzb3VwQ2FjaGUgPSBzb3VwX3Nlc3Npb25f
Z2V0X2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9UWVBFX0NBQ0hFKSkgewotICAgICAgICBzb3VwX2Nh
Y2hlX2ZsdXNoKFNPVVBfQ0FDSEUoc291cENhY2hlKSk7Ci0gICAgICAgIHNvdXBfY2FjaGVfZHVt
cChTT1VQX0NBQ0hFKHNvdXBDYWNoZSkpOworICAgIGlmIChTb3VwQ2FjaGUqIHNvdXBDYWNoZSA9
IFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5jYWNoZSgpKSB7CisgICAgICAg
IHNvdXBfY2FjaGVfZmx1c2goc291cENhY2hlKTsKKyAgICAgICAgc291cF9jYWNoZV9kdW1wKHNv
dXBDYWNoZSk7CiAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcApp
bmRleCAxN2RlMzEyLi43MDU0ZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCkBA
IC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0U291cENvb2tpZUphclNxbGl0ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyU291
cC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CkBAIC05NiwxMiArOTYsOCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlKGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgsIHVpbgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBTb3VwQ29va2llSmFyKiBjdXJyZW50
SmFyID0gV2ViQ29yZTo6c291cENvb2tpZUphcigpOwotICAgIHNvdXBfY29va2llX2phcl9zZXRf
YWNjZXB0X3BvbGljeShqYXIuZ2V0KCksIHNvdXBfY29va2llX2phcl9nZXRfYWNjZXB0X3BvbGlj
eShjdXJyZW50SmFyKSk7Ci0gICAgU291cFNlc3Npb24qIHNlc3Npb24gPSBSZXNvdXJjZUhhbmRs
ZTo6ZGVmYXVsdFNlc3Npb24oKTsKLSAgICBzb3VwX3Nlc3Npb25fcmVtb3ZlX2ZlYXR1cmUoc2Vz
c2lvbiwgU09VUF9TRVNTSU9OX0ZFQVRVUkUoY3VycmVudEphcikpOwotICAgIHNvdXBfc2Vzc2lv
bl9hZGRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1NFU1NJT05fRkVBVFVSRShqYXIuZ2V0KCkpKTsK
LQorICAgIHNvdXBfY29va2llX2phcl9zZXRfYWNjZXB0X3BvbGljeShqYXIuZ2V0KCksIHNvdXBf
Y29va2llX2phcl9nZXRfYWNjZXB0X3BvbGljeShXZWJDb3JlOjpzb3VwQ29va2llSmFyKCkpKTsK
KyAgICBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc2V0Q29va2llSmFyKGph
ci5nZXQoKSk7CiAgICAgV2ViQ29yZTo6c2V0U291cENvb2tpZUphcihqYXIuZ2V0KCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFp
bkVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVm
bC5jcHAKaW5kZXggNGQyNDlkYi4uZmRkNTY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcApAQCAtMzUsNyArMzUsNyBAQAog
I2luY2x1ZGUgPEVmcmVldC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtpbmdDb250ZXh0Lmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdv
cmtTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XZWJQcm9jZXNzLmg+CiAjaW5jbHVkZSA8
bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+CkBAIC0xMTQs
MTQgKzExNCw3IEBAIFdLX0VYUE9SVCBpbnQgV2ViUHJvY2Vzc01haW5FZmwoaW50IGFyZ2MsIGNo
YXIqIGFyZ3ZbXSkKIAogICAgIEluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBTb3VwU2Vzc2lv
biogc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwot
ICAgIGNvbnN0IGNoYXIqIGh0dHBQcm94eSA9IGdldGVudigiaHR0cF9wcm94eSIpOwotICAgIGlm
IChodHRwUHJveHkpIHsKLSAgICAgICAgY29uc3QgY2hhciogbm9Qcm94eSA9IGdldGVudigibm9f
cHJveHkiKTsKLSAgICAgICAgU291cFByb3h5VVJJUmVzb2x2ZXIqIHJlc29sdmVyRWZsID0gc291
cFByb3h5UmVzb2x2ZXJXa05ldyhodHRwUHJveHksIG5vUHJveHkpOwotICAgICAgICBzb3VwX3Nl
c3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9TRVNTSU9OX0ZFQVRVUkUocmVzb2x2ZXJF
ZmwpKTsKLSAgICAgICAgZ19vYmplY3RfdW5yZWYocmVzb2x2ZXJFZmwpOwotICAgIH0KKyAgICBT
b3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc2V0dXBIVFRQUHJveHlGcm9tRW52
aXJvbm1lbnQoKTsKIAogICAgIGludCBzb2NrZXQgPSBhdG9pKGFyZ3ZbMV0pOwogCkBAIC0xMzIs
OSArMTI1LDkgQEAgV0tfRVhQT1JUIGludCBXZWJQcm9jZXNzTWFpbkVmbChpbnQgYXJnYywgY2hh
ciogYXJndltdKQogCiAgICAgUnVuTG9vcDo6cnVuKCk7CiAKLSAgICBpZiAoU291cFNlc3Npb25G
ZWF0dXJlKiBzb3VwQ2FjaGUgPSBzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbiwgU09V
UF9UWVBFX0NBQ0hFKSkgewotICAgICAgICBzb3VwX2NhY2hlX2ZsdXNoKFNPVVBfQ0FDSEUoc291
cENhY2hlKSk7Ci0gICAgICAgIHNvdXBfY2FjaGVfZHVtcChTT1VQX0NBQ0hFKHNvdXBDYWNoZSkp
OworICAgIGlmIChTb3VwQ2FjaGUqIHNvdXBDYWNoZSA9IFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVm
YXVsdFNlc3Npb24oKS5jYWNoZSgpKSB7CisgICAgICAgIHNvdXBfY2FjaGVfZmx1c2goc291cENh
Y2hlKTsKKyAgICAgICAgc291cF9jYWNoZV9kdW1wKHNvdXBDYWNoZSk7CiAgICAgfQogCiAgICAg
ZWRqZV9zaHV0ZG93bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9n
dGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsv
V2ViUHJvY2Vzc01haW5HdGsuY3BwCmluZGV4IGI0ODFlZTMuLmUxNWY2MDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAKQEAg
LTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05l
dHdvcmtpbmdDb250ZXh0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdvcmtTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViS2l0
Mi9XZWJQcm9jZXNzLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPGxpYmludGwu
aD4KQEAgLTcxLDE1ICs3MSwxMyBAQCBXS19FWFBPUlQgaW50IFdlYlByb2Nlc3NNYWluR3RrKGlu
dCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgLy8gRGVzcGl0ZSB1c2luZyBzeXN0ZW0gQ0FzIHRv
IHZhbGlkYXRlIGNlcnRpZmljYXRlcyB3ZSdyZQogICAgIC8vIGFjY2VwdGluZyBpbnZhbGlkIGNl
cnRpZmljYXRlcyBieSBkZWZhdWx0LiBOZXcgQVBJIHdpbGwgYmUKICAgICAvLyBhZGRlZCBsYXRl
ciB0byBsZXQgY2xpZW50IGFjY2VwdC9kaXNjYXJkIGludmFsaWQgY2VydGlmaWNhdGVzLgotICAg
IFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRT
ZXNzaW9uKCk7Ci0gICAgZ19vYmplY3Rfc2V0KHNlc3Npb24sIFNPVVBfU0VTU0lPTl9TU0xfVVNF
X1NZU1RFTV9DQV9GSUxFLCBUUlVFLAotICAgICAgICAgICAgICAgICBTT1VQX1NFU1NJT05fU1NM
X1NUUklDVCwgRkFMU0UsIE5VTEwpOworICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNl
c3Npb24oKS5zZXRTU0xQb2xpY3koU291cE5ldHdvcmtTZXNzaW9uOjpTU0xVc2VTeXN0ZW1DQUZp
bGUpOwogCiAgICAgUnVuTG9vcDo6cnVuKCk7CiAKLSAgICBpZiAoU291cFNlc3Npb25GZWF0dXJl
KiBzb3VwQ2FjaGUgPSBzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9UWVBF
X0NBQ0hFKSkgewotICAgICAgICBzb3VwX2NhY2hlX2ZsdXNoKFNPVVBfQ0FDSEUoc291cENhY2hl
KSk7Ci0gICAgICAgIHNvdXBfY2FjaGVfZHVtcChTT1VQX0NBQ0hFKHNvdXBDYWNoZSkpOworICAg
IGlmIChTb3VwQ2FjaGUqIHNvdXBDYWNoZSA9IFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNl
c3Npb24oKS5jYWNoZSgpKSB7CisgICAgICAgIHNvdXBfY2FjaGVfZmx1c2goc291cENhY2hlKTsK
KyAgICAgICAgc291cF9jYWNoZV9kdW1wKHNvdXBDYWNoZSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vz
c1NvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3Vw
LmNwcAppbmRleCA3MzMwNzhkLi44MDlhYmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKQEAgLTQwLDExICs0MCwxMCBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVtb3J5Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VDYWNo
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTk0LDcgKzkzLDcg
QEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNo
ZU1vZGVsKQogICAgIFNvdXBDYWNoZSogY2FjaGUgPSBudWxscHRyOwogCiAgICAgaWYgKCF1c2Vz
TmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBjYWNoZSA9IFNPVVBfQ0FDSEUoc291cF9zZXNz
aW9uX2dldF9mZWF0dXJlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigp
LCBTT1VQX1RZUEVfQ0FDSEUpKTsKKyAgICAgICAgY2FjaGUgPSBXZWJDb3JlOjpTb3VwTmV0d29y
a1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUoKTsKICAgICAgICAgZGlza0ZyZWVTaXpl
ID0gZ2V0Q2FjaGVEaXNrRnJlZVNpemUoY2FjaGUpIC8gMTAyNCAvIDEwMjQ7CiAgICAgfQogCkBA
IC0xMjIsNTIgKzEyMSwxMiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtQ2xlYXJSZXNvdXJj
ZUNhY2hlcyhSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcgogICAgIGlmICh1c2Vz
TmV0d29ya1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc291cF9jYWNoZV9jbGVh
cihTT1VQX0NBQ0hFKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6ZGVmYXVsdFNlc3Npb24oKSwgU09VUF9UWVBFX0NBQ0hFKSkpOwotfQotCi0vLyBUaGlz
IGZ1bmN0aW9uIGlzIGJhc2VkIG9uIEVwaXBoYW55IGNvZGUgaW4gZXBoeS1lbWJlZC1wcmVmcy5j
Lgotc3RhdGljIENTdHJpbmcgYnVpbGRBY2NlcHRMYW5ndWFnZXMoVmVjdG9yPFN0cmluZz4gbGFu
Z3VhZ2VzKQotewotICAgIC8vIElnbm9yZSAiQyIgbG9jYWxlLgotICAgIHNpemVfdCBwb3NpdGlv
biA9IGxhbmd1YWdlcy5maW5kKCJjIik7Ci0gICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKQot
ICAgICAgICBsYW5ndWFnZXMucmVtb3ZlKHBvc2l0aW9uKTsKLQotICAgIC8vIEZhbGxiYWNrIHRv
ICJlbiIgaWYgdGhlIGxpc3QgaXMgZW1wdHkuCi0gICAgaWYgKGxhbmd1YWdlcy5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiAiZW4iOwotCi0gICAgLy8gQ2FsY3VsYXRlIGRlbHRhcyBmb3IgdGhl
IHF1YWxpdHkgdmFsdWVzLgotICAgIGludCBkZWx0YTsKLSAgICBpZiAobGFuZ3VhZ2VzLnNpemUo
KSA8IDEwKQotICAgICAgICBkZWx0YSA9IDEwOwotICAgIGVsc2UgaWYgKGxhbmd1YWdlcy5zaXpl
KCkgPCAyMCkKLSAgICAgICAgZGVsdGEgPSA1OwotICAgIGVsc2UKLSAgICAgICAgZGVsdGEgPSAx
OwotCi0gICAgLy8gU2V0IHF1YWxpdHkgdmFsdWVzIGZvciBlYWNoIGxhbmd1YWdlLgotICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxhbmd1YWdl
cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCIsICIpOwotCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxhbmd1YWdlc1tpXSk7Ci0KLSAg
ICAgICAgaW50IHF1YWxpdHkgPSAxMDAgLSBpICogZGVsdGE7Ci0gICAgICAgIGlmIChxdWFsaXR5
ID4gMCAmJiBxdWFsaXR5IDwgMTAwKSB7Ci0gICAgICAgICAgICBjaGFyIGJ1ZmZlcls4XTsKLSAg
ICAgICAgICAgIGdfYXNjaWlfZm9ybWF0ZChidWZmZXIsIDgsICIlLjJmIiwgcXVhbGl0eSAvIDEw
MC4wKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCI7cT0lcyIs
IGJ1ZmZlcikpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKS51dGY4KCk7CisgICAgc291cF9jYWNoZV9jbGVhcihXZWJDb3JlOjpTb3VwTmV0d29ya1Nl
c3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNldFNv
dXBTZXNzaW9uQWNjZXB0TGFuZ3VhZ2UoVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzKQogewotICAg
IGdfb2JqZWN0X3NldChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKSwg
ImFjY2VwdC1sYW5ndWFnZSIsIGJ1aWxkQWNjZXB0TGFuZ3VhZ2VzKGxhbmd1YWdlcykuZGF0YSgp
LCBOVUxMKTsKKyAgICBXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9u
KCkuc2V0QWNjZXB0TGFuZ3VhZ2VzKGxhbmd1YWdlcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGxhbmd1
YWdlQ2hhbmdlZCh2b2lkKikKQEAgLTE5MSw3ICsxNTAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycwogCiAgICAgQVNTRVJUKCFwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5pc0VtcHR5
KCkpOwogICAgIEdSZWZQdHI8U291cENhY2hlPiBzb3VwQ2FjaGUgPSBhZG9wdEdSZWYoc291cF9j
YWNoZV9uZXcocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkudXRmOCgpLmRhdGEoKSwgU09V
UF9DQUNIRV9TSU5HTEVfVVNFUikpOwotICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKSwgU09VUF9TRVNTSU9OX0ZFQVRV
UkUoc291cENhY2hlLmdldCgpKSk7CisgICAgV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpk
ZWZhdWx0U2Vzc2lvbigpLnNldENhY2hlKHNvdXBDYWNoZS5nZXQoKSk7CiAgICAgc291cF9jYWNo
ZV9sb2FkKHNvdXBDYWNoZS5nZXQoKSk7CiAKICAgICBpZiAoIXBhcmFtZXRlcnMuY29va2llUGVy
c2lzdGVudFN0b3JhZ2VQYXRoLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcAppbmRleCBiZDBj
ZjYyLi43MGZjYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAv
V2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3Qu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgogI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAg
LTk4LDcgKzk5LDcgQEAgdm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OnJlZ2lzdGVyVVJJU2No
ZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogICAgIGdfcHRyX2FycmF5X2FkZChtX3NjaGVtZXMu
Z2V0KCksIGdfc3RyZHVwKHNjaGVtZS51dGY4KCkuZGF0YSgpKSk7CiAgICAgZ19wdHJfYXJyYXlf
YWRkKG1fc2NoZW1lcy5nZXQoKSwgMCk7CiAKLSAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICAgIFNvdXBTZXNzaW9u
KiBzZXNzaW9uID0gV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigp
LnNvdXBTZXNzaW9uKCk7CiAgICAgU291cFJlcXVlc3RDbGFzcyogZ2VuZXJpY1JlcXVlc3RDbGFz
cyA9IHN0YXRpY19jYXN0PFNvdXBSZXF1ZXN0Q2xhc3MqPihnX3R5cGVfY2xhc3NfcmVmKFdFQktJ
VF9UWVBFX1NPVVBfUkVRVUVTVF9HRU5FUklDKSk7CiAgICAgZ2VuZXJpY1JlcXVlc3RDbGFzcy0+
c2NoZW1lcyA9IGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcioqPihyZWludGVycHJldF9jYXN0PGNoYXIq
Kj4obV9zY2hlbWVzLT5wZGF0YSkpOwogICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZV9ieV90
eXBlKHNlc3Npb24sIFdFQktJVF9UWVBFX1NPVVBfUkVRVUVTVF9HRU5FUklDKTsK
</data>
<flag name="commit-queue"
          id="244740"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220930</attachid>
            <date>2014-01-11 06:52:36 -0800</date>
            <delta_ts>2014-01-11 07:02:09 -0800</delta_ts>
            <desc>Try to fix EFL build</desc>
            <filename>soup-network-session2.diff</filename>
            <type>text/plain</type>
            <size>57964</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4Y2EwZWQ2Li45OWUzMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkg
QEAKKzIwMTQtMDEtMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtTT1VQXSBBZGQgU291cE5ldHdvcmtTZXNzaW9uIGNsYXNzIHRvIHdyYXAg
YSBTb3VwU2Vzc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI2ODEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIFNvdXBOZXR3b3JrU2Vzc2lvbiBjbGFzcyB0aGF0IHdyYXBzIGEgU291cFNlc3Np
b24gYW5kIG1vdmUgYWxsCisgICAgICAgIHRoZSBjb2RlIHJlbGF0ZWQgdG8gdGhlIFNvdXBTZXNz
aW9uIGZyb20gUmVzb3VyY2VIYW5kbGUgdG8KKyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uLCBp
bmNsdWRpbmcgdGhlIHN0YXRpYyBtZXRob2RzIHRvIGdldCB0aGUKKyAgICAgICAgZGVmYXVsdCBz
ZXNzaW9uIGFuZCBjcmVhdGUgdGVzdGluZyBhbmQgcHJpdmF0ZSBzZXNzaW9ucy4KKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oOiBVc2UgU291cE5ldHdvcmtTZXNzaW9uCisgICAgICAgIGluc3RlYWQgb2YgU291
cFNlc3Npb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvb2tpZUphckZvclNlc3Npb24pOiBVc2UgU291cE5ldHdvcmtTZXNzaW9u
IHRvIGdldCB0aGUKKyAgICAgICAgU291cFNlc3Npb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9zb3VwL0ROU1NvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVl
OjpwbGF0Zm9ybVJlc29sdmUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbik6IFVzZQorICAgICAgICBT
b3VwTmV0d29ya1Nlc3Npb24gaW5zdGVhZCBvZiBTb3VwU2Vzc2lvbi4KKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6fk5ldHdvcmtTdG9yYWdlU2Vzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lv
bik6IENyZWF0ZSBhCisgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB3aXRoIGEgTlVMTCBT
b3VwTmV0d29ya1Nlc3Npb24gd2hpY2ggbWVhbnMKKyAgICAgICAgdGhhdCB0aGUgZGVmYXVsdCBT
b3VwTmV0d29ya1Nlc3Npb24gd2lsbCBiZSB1c2VkLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAg
Q2FsbCBTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSB0
byBjcmVhdGUKKyAgICAgICAgdGhlIHByaXZhdGUgc2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbik6IENhbGwK
KyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uOjpjcmVhdGVUZXN0aW5nU2Vzc2lvbigpIHRvIGNy
ZWF0ZSB0aGUgdGVzdGluZworICAgICAgICBzZXNzaW9uLgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzb3VwTmV0d29ya1Nlc3Npb24pOiBSZXR1cm4gdGhlCisgICAg
ICAgIFNvdXBOZXR3b3JrU2Vzc2lvbiBvciB0aGUgZGVmYXVsdCBvbmUuCisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFNvdXBOZXR3b3JrU2Vzc2lvbik6IFNldCBh
IG5ldworICAgICAgICBTb3VwTmV0d29ya1Nlc3Npb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXNz
aW9uRnJvbUNvbnRleHQpOiBVc2UgU291cE5ldHdvcmtTZXNzaW9uIHRvIGdldCB0aGUKKyAgICAg
ICAgU291cFNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFs
Ojpzb3VwU2Vzc2lvbik6IFNpbXBseSBjYWxsCisgICAgICAgIHNlc3Npb25Gcm9tQ29udGV4dCgp
LCBzaW5jZSBlbnN1cmVTZXNzaW9uSXNJbml0aWFsaXplZCgpIGlzIG5vCisgICAgICAgIGxvbmdl
ciBuZWVkZWQsIGJlY2F1c2UgdGhlIFNvdXBTZXNzaW9uIGFyZSBub3cgaW5pdGlhbGl6ZWQgaW4g
dGhlCisgICAgICAgIFNvdXBOZXR3b3JrU2Vzc2lvbiBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpkaWRTdGFydFJlcXVlc3QpOiBGdW5jdGlvbiB0byBub3Rp
ZnkgdGhlCisgICAgICAgIFJlc291cmNlSGFuZGxlIHRoYXQgY3VycmVudCByZXF1ZXN0IGhhcyBq
dXN0IHN0YXJ0ZWQgZm9yIHdlYiB0aW1pbmcuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c291
cExvZ1ByaW50ZXIpOiBMb2dnZXIgY2FsbGJhY2suCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0
d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKTogUmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAg
IHRvIHRoZSBkZWZhdWx0IFNvdXBOZXR3b3JrU2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNv
dXBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAg
IENyZWF0ZSBhIG5ldyBwcml2YXRlIHNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0
d29ya1Nlc3Npb246OmNyZWF0ZVRlc3RpbmdTZXNzaW9uKTogQ3JlYXRlIGEgbmV3CisgICAgICAg
IHRlc3Rpbmcgc2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6
Y3JlYXRlRm9yU291cFNlc3Npb24pOiBDcmVhdGUgYSBuZXcKKyAgICAgICAgU291cE5ldHdvcmtT
ZXNzaW9uIGZvciB0aGUgZ2l2ZW4gU291cFNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjphdXRo
ZW50aWNhdGVDYWxsYmFjayk6IENhbGxiYWNrIGVtaXR0ZWQgYnkgdGhlCisgICAgICAgIFNvdXBT
ZXNzaW9uIHdoZW4gdGhlIHJlcXVlc3QgbmVlZHMgYXV0aGVudGljYXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpyZXF1ZXN0U3RhcnRlZENhbGxiYWNrKTogQ2FsbGJhY2sgZW1pdHRlZCBieSB0aGUK
KyAgICAgICAgU291cFNlc3Npb24gd2hlbiBhcyByZXF1ZXN0IGhhcyBqdXN0IHN0YXJ0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OlNvdXBOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246On5Tb3VwTmV0d29ya1Nlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpzZXR1cExvZ2dlcik6
IEhlbHBlciBwcml2YXRlCisgICAgICAgIGZ1bmN0aW9uIHRvIHNldHVwIHRoZSBsb2dnZXIuCisg
ICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OnNldENvb2tpZUphcik6IFNldCBh
IG5ldyBDb29raWVKYXIKKyAgICAgICAgaW4gdGhlIHNlc3Npb24gcmVwbGFjaW5nIHRoZSBleGlz
dGluZyBvbmUuCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmNvb2tpZUph
cik6IFJldHVybiB0aGUgY3VycmVudAorICAgICAgICBDb29raWVKYXIgb2YgdGhlIHNlc3Npb24u
CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OnNldENhY2hlKTogU2V0IGEg
ZGlzayBjYWNoZS4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2FjaGUp
OiBSZXR1cm4gdGhlIGN1cnJlbnQgZGlzayBjYWNoZS4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXBO
ZXR3b3JrU2Vzc2lvbjo6c2V0U1NMUG9saWN5KTogU2V0IHRoZSBTU0wgcG9saWN5LgorICAgICAg
ICAoV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpzc2xQb2xpY3kpOiBHZXQgdGhlIGN1cnJl
bnQgU1NMIHBvbGljeS4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0
SFRUUFByb3h5KTogU2V0IHRoZSBIVFRQIHByb3h5LgorICAgICAgICAoV2ViQ29yZTo6U291cE5l
dHdvcmtTZXNzaW9uOjpodHRwUHJveHkpOiBHZXQgdGhlIGN1cnJlbnQgSFRUUCBwcm94eS4KKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0dXBIVFRQUHJveHlGcm9tRW52
aXJvbm1lbnQpOiBTZXQKKyAgICAgICAgdGhlIEhUVFAgcHJveHkgdXNpbmcgdGhlIGVudmlyb25t
ZW50IHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQWNjZXB0TGFuZ3VhZ2VzKTog
SGVscGVyIGZ1bmN0aW9uIGJ1aWxkIHRoZSBhY2NlcHQKKyAgICAgICAgbGFuZ3VhZ2Ugc3RyaW5n
IGluIHRoZSBmb3JtYXQgZXhwZWN0ZWQgYnkgc291cCAoUkZDIDI2MTYpLgorICAgICAgICAoV2Vi
Q29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpzZXRBY2NlcHRMYW5ndWFnZXMpOiBTZXQgdGhlIGFj
Y2VwdAorICAgICAgICBsYW5ndWFnZSBmb3IgdGhlIGdpdmVuIGxpc3Qgb2YgbGFuZ3VhZ2VzLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OnNvdXBTZXNzaW9uKTog
UmV0dXJuIHRoZSBTb3VwU2Vzc2lvbi4KKwogMjAxNC0wMS0wOSAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSAubXAzIG1lZGlhIGRvY3VtZW50IGNvbnRy
b2xzIG1pc3NpbmcgdGhlaXIgYmFja2dyb3VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
aW5kZXggOTY5Njc1OC4uNTZiY2Y0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC01NDY0LDcgKzU0NjQsNiBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmggXAotCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUluZm8uaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iU3RvcmFnZURhdGEuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5oIFwKQEAgLTU0ODYsNiAr
NTQ4NSw3IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlU291cC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0
aWZpY2F0ZUluZm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nl
cnRpZmljYXRlSW5mby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Db29raWVKYXJTb3VwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0Nvb2tpZUphclNvdXAuaCBcCkBAIC01NDk4LDYgKzU0OTgsOCBAQCB3ZWJjb3JlX3BsYXRm
b3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50U291
cC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDUwZTcyZDAuLjcxMDVlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC0xNjYsNiArMTY2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCiAgICAgcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcAorICAgIHBsYXRmb3JtL25ldHdv
cmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvdXBVUklVdGlscy5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU3luY2hyb25vdXNM
b2FkZXJDbGllbnRTb3VwLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGQwOWU2
OWMuLmMwZWU2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMjMsNiArMTIzLDcg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJl
YW1IYW5kbGVTb3VwLmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nl
c3Npb24uY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGlscy5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU3luY2hyb25vdXNMb2FkZXJDbGllbnRTb3VwLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaAppbmRleCA1NmEwYTU5Li5iYjZmYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAg
LTMyLDE1ICszMiwxMiBAQAogI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkxTdG9yYWdlU2Vzc2lvbiogQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZjsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqICBDRkhU
VFBDb29raWVTdG9yYWdlUmVmOwotI2VsaWYgVVNFKFNPVVApCi0jaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1JlZlB0ci5oPgotdHlwZWRlZiBzdHJ1Y3QgX1NvdXBDb29raWVKYXIgU291cENvb2tpZUph
cjsKLXR5cGVkZWYgc3RydWN0IF9Tb3VwU2Vzc2lvbiBTb3VwU2Vzc2lvbjsKICNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OworY2xhc3MgU291
cE5ldHdvcmtTZXNzaW9uOwogCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtNjAsOSArNTcsMTAgQEAgcHVibGljOgogICAgIENGVVJMU3RvcmFnZVNl
c3Npb25SZWYgcGxhdGZvcm1TZXNzaW9uKCkgeyByZXR1cm4gbV9wbGF0Zm9ybVNlc3Npb24uZ2V0
KCk7IH0KICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFn
ZSgpIGNvbnN0OwogI2VsaWYgVVNFKFNPVVApCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFNv
dXBTZXNzaW9uKik7Ci0gICAgdm9pZCBzZXRTb3VwU2Vzc2lvbihTb3VwU2Vzc2lvbiogc2Vzc2lv
bikgeyBtX3Nlc3Npb24gPSBzZXNzaW9uOyB9Ci0gICAgU291cFNlc3Npb24qIHNvdXBTZXNzaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CisgICAgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+KTsKKyAgICB+TmV0d29y
a1N0b3JhZ2VTZXNzaW9uKCk7CisgICAgU291cE5ldHdvcmtTZXNzaW9uJiBzb3VwTmV0d29ya1Nl
c3Npb24oKSBjb25zdDsKKyAgICB2b2lkIHNldFNvdXBOZXR3b3JrU2Vzc2lvbihzdGQ6OnVuaXF1
ZV9wdHI8U291cE5ldHdvcmtTZXNzaW9uPik7CiAjZWxzZQogICAgIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbihOZXR3b3JraW5nQ29udGV4dCopOwogICAgIH5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsK
QEAgLTc0LDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsK
ICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gbV9wbGF0Zm9ybVNlc3Npb247
CiAjZWxpZiBVU0UoU09VUCkKLSAgICBHUmVmUHRyPFNvdXBTZXNzaW9uPiBtX3Nlc3Npb247Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lvbj4gbV9zZXNzaW9uOwogI2Vsc2UK
ICAgICBSZWZQdHI8TmV0d29ya2luZ0NvbnRleHQ+IG1fY29udGV4dDsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IDIx
OWU0N2UuLjRmOGVmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmgKQEAgLTE4MCw5ICsxODAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBj
YW5jZWxsZWRPckNsaWVudGxlc3MoKTsKICAgICB2b2lkIGVuc3VyZVJlYWRCdWZmZXIoKTsKICAg
ICBzaXplX3QgY3VycmVudFN0cmVhbVBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgc3RhdGljIFNvdXBT
ZXNzaW9uKiBkZWZhdWx0U2Vzc2lvbigpOwotICAgIHN0YXRpYyBTb3VwU2Vzc2lvbiogY3JlYXRl
VGVzdGluZ1Nlc3Npb24oKTsKLSAgICBzdGF0aWMgU291cFNlc3Npb24qIGNyZWF0ZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKTsKKyAgICB2b2lkIGRpZFN0YXJ0UmVxdWVzdCgpOwogICAgIHN0YXRp
YyB1aW50NjRfdCBnZXRTb3VwUmVxdWVzdEluaXRpYXRpbmdQYWdlSUQoU291cFJlcXVlc3QqKTsK
ICAgICBzdGF0aWMgdm9pZCBzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBT
dHJpbmcmKTsKICAgICBzdGF0aWMgdm9pZCBzZXRDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJp
bmcmIGhvc3QsIEdUbHNDZXJ0aWZpY2F0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCmluZGV4IGRkNWRiZDUuLjE1
ZmQ3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9D
b29raWVKYXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvQ29va2llSmFyU291cC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29va2ll
SmFyLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJTb3VwTmV0d29y
a1Nlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0zNCw4ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIFNvdXBDb29raWVKYXIqIGNvb2tpZUphckZvclNlc3Npb24oY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIEFTU0VSVChzZXNzaW9uLnNvdXBT
ZXNzaW9uKCkpOwotICAgIHJldHVybiBTT1VQX0NPT0tJRV9KQVIoc291cF9zZXNzaW9uX2dldF9m
ZWF0dXJlKHNlc3Npb24uc291cFNlc3Npb24oKSwgU09VUF9UWVBFX0NPT0tJRV9KQVIpKTsKKyAg
ICByZXR1cm4gc2Vzc2lvbi5zb3VwTmV0d29ya1Nlc3Npb24oKS5jb29raWVKYXIoKTsKIH0KIAog
c3RhdGljIEdSZWZQdHI8U291cENvb2tpZUphcj4mIGRlZmF1bHRDb29raWVKYXIoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCmluZGV4IGJh
YmEyMDQuLjJlYWI5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvRE5TU291cC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJETlNSZXNvbHZl
UXVldWUuaCIKIAogI2luY2x1ZGUgIkdPd25QdHJTb3VwLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlIDxsaWJz
b3VwL3NvdXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBETlNSZXNvbHZlUXVldWU6OnBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKLSAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKFJlc291cmNlSGFu
ZGxlOjpkZWZhdWx0U2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCAwLCByZXNvbHZl
ZENhbGxiYWNrLCAwKTsKKyAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKFNvdXBOZXR3b3Jr
U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCku
ZGF0YSgpLCBudWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKIH0KIAogdm9pZCBw
cmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCmluZGV4IDc0ZDEwOGEuLjY3ZjE5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cC5jcHAKQEAgLTI4LDE3ICsyOCwyMiBAQAogI2luY2x1ZGUgIk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oIgogCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRl
ICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKFNvdXBTZXNzaW9uKiBz
ZXNzaW9uKQotICAgIDogbV9zZXNzaW9uKGFkb3B0R1JlZihzZXNzaW9uKSkKK05ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0
d29ya1Nlc3Npb24+IHNlc3Npb24pCisgICAgOiBtX3Nlc3Npb24oc3RkOjptb3ZlKHNlc3Npb24p
KQogICAgICwgbV9pc1ByaXZhdGUoZmFsc2UpCiB7CiB9CiAKK05ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6fk5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpCit7Cit9CisKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgZGVmYXVsdFNlc3Npb24oKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CkBAIC00OSwyMCArNTQsMzAgQEAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBkZWZhdWx0U2Vzc2lvbigpCiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCkKIHsKICAgICBpZiAoIWRlZmF1bHRTZXNzaW9uKCkpCi0gICAgICAgIGRlZmF1bHRTZXNzaW9u
KCkgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUmVzb3VyY2VIYW5k
bGU6OmRlZmF1bHRTZXNzaW9uKCkpOworICAgICAgICBkZWZhdWx0U2Vzc2lvbigpID0gc3RkOjpt
YWtlX3VuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KG51bGxwdHIpOwogICAgIHJldHVybiAq
ZGVmYXVsdFNlc3Npb24oKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgYXV0byBzZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxO
ZXR3b3JrU3RvcmFnZVNlc3Npb24+KFJlc291cmNlSGFuZGxlOjpjcmVhdGVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCkpOworICAgIGF1dG8gc2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPihTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKSk7CiAgICAgc2Vzc2lvbi0+bV9pc1ByaXZhdGUgPSB0cnVlOwogICAgIHJldHVy
biBzZXNzaW9uOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdU
ZXN0aW5nU2Vzc2lvbigpCiB7Ci0gICAgZGVmYXVsdFNlc3Npb24oKSA9IHN0ZDo6bWFrZV91bmlx
dWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlVGVzdGluZ1Nl
c3Npb24oKSk7CisgICAgZGVmYXVsdFNlc3Npb24oKSA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPihTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVRlc3RpbmdTZXNzaW9u
KCkpOworfQorCitTb3VwTmV0d29ya1Nlc3Npb24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c291
cE5ldHdvcmtTZXNzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZXNzaW9uID8gKm1fc2Vz
c2lvbiA6IFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKTsKK30KKwordm9pZCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFNvdXBOZXR3b3JrU2Vzc2lvbihzdGQ6OnVuaXF1ZV9w
dHI8U291cE5ldHdvcmtTZXNzaW9uPiBzZXNzaW9uKQoreworICAgIG1fc2Vzc2lvbiA9IHN0ZDo6
bW92ZShzZXNzaW9uKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCAwN2E1M2Ey
Li40YzcwNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2lu
Y2x1ZGUgIkdPd25QdHJTb3VwLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRl
ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC00NCw2ICs0Myw3IEBACiAjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNp
bmNsdWRlICJTb3VwVVJJVXRpbHMuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNs
dWRlIDxlcnJuby5oPgpAQCAtNzIsMTUgKzcyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1pbmxpbmUgc3RhdGljIHZvaWQgc291cExvZ1ByaW50ZXIoU291cExvZ2dlciosIFNvdXBMb2dn
ZXJMb2dMZXZlbCwgY2hhciBkaXJlY3Rpb24sIGNvbnN0IGNoYXIqIGRhdGEsIGdwb2ludGVyKQot
ewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShkaXJlY3Rpb24pOwotICAgIFVO
VVNFRF9QQVJBTShkYXRhKTsKLSNlbmRpZgotICAgIExPRyhOZXR3b3JrLCAiJWMgJXMiLCBkaXJl
Y3Rpb24sIGRhdGEpOwotfQotCiBzdGF0aWMgYm9vbCBsb2FkaW5nU3luY2hyb25vdXNSZXF1ZXN0
ID0gZmFsc2U7CiBzdGF0aWMgY29uc3Qgc2l6ZV90IGdEZWZhdWx0UmVhZEJ1ZmZlclNpemUgPSA4
MTkyOwogCkBAIC0yNjAsOCArMjUxLDggQEAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291
cmNlSGFuZGxlSW50ZXJuYWwoKQogc3RhdGljIFNvdXBTZXNzaW9uKiBzZXNzaW9uRnJvbUNvbnRl
eHQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKCFjb250ZXh0IHx8ICFj
b250ZXh0LT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBSZXNvdXJjZUhhbmRsZTo6ZGVmYXVs
dFNlc3Npb24oKTsKLSAgICByZXR1cm4gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5zb3VwU2Vz
c2lvbigpOworICAgICAgICByZXR1cm4gU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lv
bigpLnNvdXBTZXNzaW9uKCk7CisgICAgcmV0dXJuIGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCku
c291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKTsKIH0KIAogUmVzb3VyY2VIYW5kbGU6
On5SZXNvdXJjZUhhbmRsZSgpCkBAIC0yNjksMzYgKzI2MCw5IEBAIFJlc291cmNlSGFuZGxlOjp+
UmVzb3VyY2VIYW5kbGUoKQogICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbih0aGlzLCB0
cnVlKTsKIH0KIAotc3RhdGljIHZvaWQgZW5zdXJlU2Vzc2lvbklzSW5pdGlhbGl6ZWQoU291cFNl
c3Npb24qIHNlc3Npb24pCi17Ci0gICAgaWYgKGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNl
c3Npb24pLCAid2Via2l0LWluaXQiKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHNlc3Np
b24gPT0gUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCkpIHsKLSAgICAgICAgU291cENv
b2tpZUphciogamFyID0gU09VUF9DT09LSUVfSkFSKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShz
ZXNzaW9uLCBTT1VQX1RZUEVfQ09PS0lFX0pBUikpOwotICAgICAgICBpZiAoIWphcikKLSAgICAg
ICAgICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1NFU1NJT05fRkVB
VFVSRShzb3VwQ29va2llSmFyKCkpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc2V0U291
cENvb2tpZUphcihqYXIpOwotICAgIH0KLQotI2lmICFMT0dfRElTQUJMRUQKLSAgICBpZiAoIXNv
dXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1RZUEVfTE9HR0VSKSAmJiBMb2dO
ZXR3b3JrLnN0YXRlID09IFdURkxvZ0NoYW5uZWxPbikgewotICAgICAgICBTb3VwTG9nZ2VyKiBs
b2dnZXIgPSBzb3VwX2xvZ2dlcl9uZXcoc3RhdGljX2Nhc3Q8U291cExvZ2dlckxvZ0xldmVsPihT
T1VQX0xPR0dFUl9MT0dfQk9EWSksIC0xKTsKLSAgICAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0
dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFUVVJFKGxvZ2dlcikpOwotICAgICAgICBzb3Vw
X2xvZ2dlcl9zZXRfcHJpbnRlcihsb2dnZXIsIHNvdXBMb2dQcmludGVyLCAwLCAwKTsKLSAgICAg
ICAgZ19vYmplY3RfdW5yZWYobG9nZ2VyKTsKLSAgICB9Ci0jZW5kaWYgLy8gIUxPR19ESVNBQkxF
RAotCi0gICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1Qoc2Vzc2lvbiksICJ3ZWJraXQtaW5p
dCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4ZGVhZGJlZWYpKTsKLX0KLQogU291cFNlc3Np
b24qIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OnNvdXBTZXNzaW9uKCkKIHsKLSAgICBTb3VwU2Vz
c2lvbiogc2Vzc2lvbiA9IHNlc3Npb25Gcm9tQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAg
IGVuc3VyZVNlc3Npb25Jc0luaXRpYWxpemVkKHNlc3Npb24pOwotICAgIHJldHVybiBzZXNzaW9u
OworICAgIHJldHVybiBzZXNzaW9uRnJvbUNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKIH0KIAog
Ym9vbCBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsbGVkT3JDbGllbnRsZXNzKCkKQEAgLTg3OSwxMyAr
ODQzLDkgQEAgc3RhdGljIHZvaWQgd3JvdGVCb2R5Q2FsbGJhY2soU291cE1lc3NhZ2UqLCBncG9p
bnRlciBkYXRhKQogICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCktPnNlbmRF
bmQgPSBtaWxpc2Vjb25kc1NpbmNlUmVxdWVzdChkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRp
bWluZygpLT5yZXF1ZXN0VGltZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlcXVlc3RTdGFydGVkQ2Fs
bGJhY2soU291cFNlc3Npb24qLCBTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIFNvdXBTb2NrZXQq
LCBncG9pbnRlcikKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFN0YXJ0UmVxdWVzdCgpCiB7Ci0g
ICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhh
bmRsZSo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhhbmRsZSIp
KTsKLSAgICBpZiAoIWhhbmRsZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKKyAgICBSZXNvdXJjZUhhbmRs
ZUludGVybmFsKiBkID0gZ2V0SW50ZXJuYWwoKTsKICAgICBpZiAoIWQtPm1fcmVzcG9uc2UucmVz
b3VyY2VMb2FkVGltaW5nKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTQzMSw2MiArMTM5MSw2
IEBAIHN0YXRpYyBnYm9vbGVhbiByZXF1ZXN0VGltZW91dENhbGxiYWNrKGdwb2ludGVyIGRhdGEp
CiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgdm9pZCBhdXRoZW50aWNhdGVDYWxsYmFj
ayhTb3VwU2Vzc2lvbiogc2Vzc2lvbiwgU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBTb3VwQXV0
aCogc291cEF1dGgsIGdib29sZWFuIHJldHJ5aW5nKQotewotICAgIFJlZlB0cjxSZXNvdXJjZUhh
bmRsZT4gaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihnX29iamVjdF9nZXRf
ZGF0YShHX09CSkVDVChzb3VwTWVzc2FnZSksICJoYW5kbGUiKSk7Ci0gICAgaWYgKCFoYW5kbGUp
Ci0gICAgICAgIHJldHVybjsKLSAgICBoYW5kbGUtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShzZXNzaW9uLCBzb3VwTWVzc2FnZSwgc291
cEF1dGgsIHJldHJ5aW5nLCBoYW5kbGUuZ2V0KCkpKTsKLX0KLQotc3RhdGljIFNvdXBTZXNzaW9u
KiBjcmVhdGVTb3VwU2Vzc2lvbigpCi17Ci0gICAgLy8gVmFsdWVzIHRha2VuIGZyb20gaHR0cDov
L3d3dy5icm93c2Vyc2NvcGUub3JnLyAgZm9sbG93aW5nCi0gICAgLy8gdGhlIHJ1bGUgIkRvIFdo
YXQgRXZlcnkgT3RoZXIgTW9kZXJuIEJyb3dzZXIgSXMgRG9pbmciLiBUaGV5IHNlZW0KLSAgICAv
LyB0byBzaWduaWZpY2FudGx5IGltcHJvdmUgcGFnZSBsb2FkaW5nIHRpbWUgY29tcGFyZWQgdG8g
c291cCdzCi0gICAgLy8gZGVmYXVsdCB2YWx1ZXMuCi0gICAgc3RhdGljIGNvbnN0IGludCBtYXhD
b25uZWN0aW9ucyA9IDM1OwotICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4Q29ubmVjdGlvbnNQZXJI
b3N0ID0gNjsKLQotICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gc291cF9zZXNzaW9uX2FzeW5j
X25ldygpOwotICAgIGdfb2JqZWN0X3NldChzZXNzaW9uLAotICAgICAgICBTT1VQX1NFU1NJT05f
TUFYX0NPTk5TLCBtYXhDb25uZWN0aW9ucywKLSAgICAgICAgU09VUF9TRVNTSU9OX01BWF9DT05O
U19QRVJfSE9TVCwgbWF4Q29ubmVjdGlvbnNQZXJIb3N0LAotICAgICAgICBTT1VQX1NFU1NJT05f
QUREX0ZFQVRVUkVfQllfVFlQRSwgU09VUF9UWVBFX0NPTlRFTlRfREVDT0RFUiwKLSAgICAgICAg
U09VUF9TRVNTSU9OX0FERF9GRUFUVVJFX0JZX1RZUEUsIFNPVVBfVFlQRV9DT05URU5UX1NOSUZG
RVIsCi0gICAgICAgIFNPVVBfU0VTU0lPTl9BRERfRkVBVFVSRV9CWV9UWVBFLCBTT1VQX1RZUEVf
UFJPWFlfUkVTT0xWRVJfREVGQVVMVCwKLSAgICAgICAgU09VUF9TRVNTSU9OX1VTRV9USFJFQURf
Q09OVEVYVCwgVFJVRSwKLSAgICAgICAgTlVMTCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChzZXNz
aW9uLCAiYXV0aGVudGljYXRlIiwgR19DQUxMQkFDSyhhdXRoZW50aWNhdGVDYWxsYmFjayksIDAp
OwotCi0jaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgZ19zaWduYWxfY29ubmVjdChzZXNzaW9u
LCAicmVxdWVzdC1zdGFydGVkIiwgR19DQUxMQkFDSyhyZXF1ZXN0U3RhcnRlZENhbGxiYWNrKSwg
MCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBzZXNzaW9uOwotfQotCi1Tb3VwU2Vzc2lvbiogUmVz
b3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCkKLXsKLSAgICBzdGF0aWMgU291cFNlc3Npb24q
IHNlc3Npb24gPSBjcmVhdGVTb3VwU2Vzc2lvbigpOwotICAgIHJldHVybiBzZXNzaW9uOwotfQot
Ci1Tb3VwU2Vzc2lvbiogUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZVRlc3RpbmdTZXNzaW9uKCkKLXsK
LSAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IGNyZWF0ZVNvdXBTZXNzaW9uKCk7Ci0gICAgLy8g
VGhlIHRlc3Rpbmcgc2Vzc2lvbiBvcGVyYXRlcyB3aXRoIHRoZSBkZWZhdWx0IGNvb2tpZSBqYXIu
Ci0gICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFU
VVJFKHNvdXBDb29raWVKYXIoKSkpOwotICAgIHJldHVybiBzZXNzaW9uOwotfQotCi1Tb3VwU2Vz
c2lvbiogUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewot
ICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gY3JlYXRlU291cFNlc3Npb24oKTsKLSAgICBzb3Vw
X3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9TRVNTSU9OX0ZFQVRVUkUoY3JlYXRl
UHJpdmF0ZUJyb3dzaW5nQ29va2llSmFyKCkpKTsKLSAgICByZXR1cm4gc2Vzc2lvbjsKLX0KLQog
dWludDY0X3QgUmVzb3VyY2VIYW5kbGU6OmdldFNvdXBSZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJRChT
b3VwUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICB1aW50NjRfdCogaW5pdGlhdGluZ1BhZ2VJRFB0
ciA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Kj4oZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QocmVx
dWVzdCksIGdTb3VwUmVxdWVzdEluaXRpYXRpbmdQYWdlSURLZXkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lv
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ0ODM5NAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0
d29ya1Nlc3Npb24uY3BwCkBAIC0wLDAgKzEsMjc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNv
dXBOZXR3b3JrU2Vzc2lvbi5oIgorCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKKyNpbmNsdWRlICJDb29raWVKYXJTb3VwLmgiCisjaW5jbHVkZSAiR093blB0clNvdXAuaCIK
KyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNs
dWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCisjaWYgUExBVEZPUk0oRUZMKQorI2lu
Y2x1ZGUgIlByb3h5UmVzb2x2ZXJTb3VwLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisjaWYgIUxPR19ESVNBQkxFRAoraW5saW5lIHN0YXRpYyB2b2lkIHNvdXBMb2dQcmludGVy
KFNvdXBMb2dnZXIqLCBTb3VwTG9nZ2VyTG9nTGV2ZWwsIGNoYXIgZGlyZWN0aW9uLCBjb25zdCBj
aGFyKiBkYXRhLCBncG9pbnRlcikKK3sKKyAgICBMT0coTmV0d29yaywgIiVjICVzIiwgZGlyZWN0
aW9uLCBkYXRhKTsKK30KKyNlbmRpZgorCitTb3VwTmV0d29ya1Nlc3Npb24mIFNvdXBOZXR3b3Jr
U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
b3VwTmV0d29ya1Nlc3Npb24+IG5ldHdvcmtTZXNzaW9uKHNvdXBDb29raWVKYXIoKSk7CisgICAg
cmV0dXJuIG5ldHdvcmtTZXNzaW9uOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdvcmtT
ZXNzaW9uPiBTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
KQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdvcmtTZXNzaW9uPihuZXcg
U291cE5ldHdvcmtTZXNzaW9uKHNvdXBDb29raWVKYXIoKSkpOworfQorCitzdGQ6OnVuaXF1ZV9w
dHI8U291cE5ldHdvcmtTZXNzaW9uPiBTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVRlc3RpbmdT
ZXNzaW9uKCkKK3sKKyAgICBHUmVmUHRyPFNvdXBDb29raWVKYXI+IGNvb2tpZUphciA9IGFkb3B0
R1JlZihjcmVhdGVQcml2YXRlQnJvd3NpbmdDb29raWVKYXIoKSk7CisgICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+KG5ldyBTb3VwTmV0d29ya1Nlc3Npb24oY29v
a2llSmFyLmdldCgpKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+
IFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlRm9yU291cFNlc3Npb24oU291cFNlc3Npb24qIHNv
dXBTZXNzaW9uKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdvcmtTZXNz
aW9uPihuZXcgU291cE5ldHdvcmtTZXNzaW9uKHNvdXBTZXNzaW9uKSk7Cit9CisKK3N0YXRpYyB2
b2lkIGF1dGhlbnRpY2F0ZUNhbGxiYWNrKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2Fn
ZSogc291cE1lc3NhZ2UsIFNvdXBBdXRoKiBzb3VwQXV0aCwgZ2Jvb2xlYW4gcmV0cnlpbmcpCit7
CisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJj
ZUhhbmRsZSo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhhbmRs
ZSIpKTsKKyAgICBpZiAoIWhhbmRsZSkKKyAgICAgICAgcmV0dXJuOworICAgIGhhbmRsZS0+ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHNl
c3Npb24sIHNvdXBNZXNzYWdlLCBzb3VwQXV0aCwgcmV0cnlpbmcsIGhhbmRsZS5nZXQoKSkpOwor
fQorCitzdGF0aWMgdm9pZCByZXF1ZXN0U3RhcnRlZENhbGxiYWNrKFNvdXBTZXNzaW9uKiwgU291
cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBTb3VwU29ja2V0KiwgZ3BvaW50ZXIpCit7CisgICAgUmVm
UHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+
KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhhbmRsZSIpKTsKKyAg
ICBpZiAoIWhhbmRsZSkKKyAgICAgICAgcmV0dXJuOworICAgIGhhbmRsZS0+ZGlkU3RhcnRSZXF1
ZXN0KCk7Cit9CisKK1NvdXBOZXR3b3JrU2Vzc2lvbjo6U291cE5ldHdvcmtTZXNzaW9uKFNvdXBD
b29raWVKYXIqIGNvb2tpZUphcikKKyAgICA6IG1fc291cFNlc3Npb24oYWRvcHRHUmVmKHNvdXBf
c2Vzc2lvbl9hc3luY19uZXcoKSkpCit7CisgICAgLy8gVmFsdWVzIHRha2VuIGZyb20gaHR0cDov
L3d3dy5icm93c2Vyc2NvcGUub3JnLyBmb2xsb3dpbmcKKyAgICAvLyB0aGUgcnVsZSAiRG8gV2hh
dCBFdmVyeSBPdGhlciBNb2Rlcm4gQnJvd3NlciBJcyBEb2luZyIuIFRoZXkgc2VlbQorICAgIC8v
IHRvIHNpZ25pZmljYW50bHkgaW1wcm92ZSBwYWdlIGxvYWRpbmcgdGltZSBjb21wYXJlZCB0byBz
b3VwJ3MKKyAgICAvLyBkZWZhdWx0IHZhbHVlcy4KKyAgICBzdGF0aWMgY29uc3QgaW50IG1heENv
bm5lY3Rpb25zID0gMzU7CisgICAgc3RhdGljIGNvbnN0IGludCBtYXhDb25uZWN0aW9uc1Blckhv
c3QgPSA2OworCisgICAgZ19vYmplY3Rfc2V0KG1fc291cFNlc3Npb24uZ2V0KCksCisgICAgICAg
IFNPVVBfU0VTU0lPTl9NQVhfQ09OTlMsIG1heENvbm5lY3Rpb25zLAorICAgICAgICBTT1VQX1NF
U1NJT05fTUFYX0NPTk5TX1BFUl9IT1NULCBtYXhDb25uZWN0aW9uc1Blckhvc3QsCisgICAgICAg
IFNPVVBfU0VTU0lPTl9BRERfRkVBVFVSRV9CWV9UWVBFLCBTT1VQX1RZUEVfQ09OVEVOVF9ERUNP
REVSLAorICAgICAgICBTT1VQX1NFU1NJT05fQUREX0ZFQVRVUkVfQllfVFlQRSwgU09VUF9UWVBF
X0NPTlRFTlRfU05JRkZFUiwKKyAgICAgICAgU09VUF9TRVNTSU9OX0FERF9GRUFUVVJFX0JZX1RZ
UEUsIFNPVVBfVFlQRV9QUk9YWV9SRVNPTFZFUl9ERUZBVUxULAorICAgICAgICBTT1VQX1NFU1NJ
T05fQUREX0ZFQVRVUkUsIGNvb2tpZUphciwKKyAgICAgICAgU09VUF9TRVNTSU9OX1VTRV9USFJF
QURfQ09OVEVYVCwgVFJVRSwKKyAgICAgICAgbnVsbHB0cik7CisKKyAgICBzZXR1cExvZ2dlcigp
OworCisgICAgZ19zaWduYWxfY29ubmVjdChtX3NvdXBTZXNzaW9uLmdldCgpLCAiYXV0aGVudGlj
YXRlIiwgR19DQUxMQkFDSyhhdXRoZW50aWNhdGVDYWxsYmFjayksIG51bGxwdHIpOworI2lmIEVO
QUJMRShXRUJfVElNSU5HKQorICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9zb3VwU2Vzc2lvbi5nZXQo
KSwgInJlcXVlc3Qtc3RhcnRlZCIsIEdfQ0FMTEJBQ0socmVxdWVzdFN0YXJ0ZWRDYWxsYmFjayks
IG51bGxwdHIpOworI2VuZGlmCit9CisKK1NvdXBOZXR3b3JrU2Vzc2lvbjo6U291cE5ldHdvcmtT
ZXNzaW9uKFNvdXBTZXNzaW9uKiBzb3VwU2Vzc2lvbikKKyAgICA6IG1fc291cFNlc3Npb24oc291
cFNlc3Npb24pCit7CisgICAgc2V0dXBMb2dnZXIoKTsKK30KKworU291cE5ldHdvcmtTZXNzaW9u
Ojp+U291cE5ldHdvcmtTZXNzaW9uKCkKK3sKK30KKwordm9pZCBTb3VwTmV0d29ya1Nlc3Npb246
OnNldHVwTG9nZ2VyKCkKK3sKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgaWYgKExvZ05ldHdvcmsu
c3RhdGUgIT0gV1RGTG9nQ2hhbm5lbE9uIHx8IHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShtX3Nv
dXBTZXNzaW9uLmdldCgpLCBTT1VQX1RZUEVfTE9HR0VSKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgR1JlZlB0cjxTb3VwTG9nZ2VyPiBsb2dnZXIgPSBhZG9wdEdSZWYoc291cF9sb2dnZXJfbmV3
KFNPVVBfTE9HR0VSX0xPR19CT0RZLCAtMSkpOworICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVy
ZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1NFU1NJT05fRkVBVFVSRShsb2dnZXIuZ2V0KCkp
KTsKKyAgICBzb3VwX2xvZ2dlcl9zZXRfcHJpbnRlcihsb2dnZXIuZ2V0KCksIHNvdXBMb2dQcmlu
dGVyLCBudWxscHRyLCBudWxscHRyKTsKKyNlbmRpZgorfQorCit2b2lkIFNvdXBOZXR3b3JrU2Vz
c2lvbjo6c2V0Q29va2llSmFyKFNvdXBDb29raWVKYXIqIGphcikKK3sKKyAgICBpZiAoU291cENv
b2tpZUphciogY3VycmVudEphciA9IGNvb2tpZUphcigpKQorICAgICAgICBzb3VwX3Nlc3Npb25f
cmVtb3ZlX2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9TRVNTSU9OX0ZFQVRVUkUo
Y3VycmVudEphcikpOworICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShtX3NvdXBTZXNzaW9u
LmdldCgpLCBTT1VQX1NFU1NJT05fRkVBVFVSRShqYXIpKTsKK30KKworU291cENvb2tpZUphciog
U291cE5ldHdvcmtTZXNzaW9uOjpjb29raWVKYXIoKSBjb25zdAoreworICAgIHJldHVybiBTT1VQ
X0NPT0tJRV9KQVIoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCks
IFNPVVBfVFlQRV9DT09LSUVfSkFSKSk7Cit9CisKK3ZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpz
ZXRDYWNoZShTb3VwQ2FjaGUqIGNhY2hlKQoreworICAgIEFTU0VSVCghc291cF9zZXNzaW9uX2dl
dF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9DQUNIRSkpOworICAgIHNv
dXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1NFU1NJT05f
RkVBVFVSRShjYWNoZSkpOworfQorCitTb3VwQ2FjaGUqIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2Fj
aGUoKSBjb25zdAoreworICAgIFNvdXBTZXNzaW9uRmVhdHVyZSogc291cENhY2hlID0gc291cF9z
ZXNzaW9uX2dldF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9DQUNIRSk7
CisgICAgcmV0dXJuIHNvdXBDYWNoZSA/IFNPVVBfQ0FDSEUoc291cENhY2hlKSA6IG51bGxwdHI7
Cit9CisKK3ZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpzZXRTU0xQb2xpY3koU1NMUG9saWN5IGZs
YWdzKQoreworICAgIGdfb2JqZWN0X3NldChtX3NvdXBTZXNzaW9uLmdldCgpLAorICAgICAgICBT
T1VQX1NFU1NJT05fU1NMX1VTRV9TWVNURU1fQ0FfRklMRSwgZmxhZ3MgJiBTU0xVc2VTeXN0ZW1D
QUZpbGUgPyBUUlVFIDogRkFMU0UsCisgICAgICAgIFNPVVBfU0VTU0lPTl9TU0xfU1RSSUNULCBm
bGFncyAmIFNTTFN0cmljdCA/IFRSVUUgOiBGQUxTRSwKKyAgICAgICAgbnVsbHB0cik7Cit9CisK
K1NvdXBOZXR3b3JrU2Vzc2lvbjo6U1NMUG9saWN5IFNvdXBOZXR3b3JrU2Vzc2lvbjo6c3NsUG9s
aWN5KCkgY29uc3QKK3sKKyAgICBnYm9vbGVhbiB1c2VTeXN0ZW1DQUZpbGUsIHN0cmljdDsKKyAg
ICBnX29iamVjdF9nZXQobV9zb3VwU2Vzc2lvbi5nZXQoKSwKKyAgICAgICAgU09VUF9TRVNTSU9O
X1NTTF9VU0VfU1lTVEVNX0NBX0ZJTEUsICZ1c2VTeXN0ZW1DQUZpbGUsCisgICAgICAgIFNPVVBf
U0VTU0lPTl9TU0xfU1RSSUNULCAmc3RyaWN0LAorICAgICAgICBudWxscHRyKTsKKworICAgIFNT
TFBvbGljeSBmbGFncyA9IDA7CisgICAgaWYgKHVzZVN5c3RlbUNBRmlsZSkKKyAgICAgICAgZmxh
Z3MgfD0gU1NMVXNlU3lzdGVtQ0FGaWxlOworICAgIGlmIChzdHJpY3QpCisgICAgICAgIGZsYWdz
IHw9IFNTTFN0cmljdDsKKyAgICByZXR1cm4gZmxhZ3M7Cit9CisKK3ZvaWQgU291cE5ldHdvcmtT
ZXNzaW9uOjpzZXRIVFRQUHJveHkoY29uc3QgY2hhciogaHR0cFByb3h5LCBjb25zdCBjaGFyKiBo
dHRwUHJveHlFeGNlcHRpb25zKQoreworI2lmIFBMQVRGT1JNKEVGTCkKKyAgICAvLyBPbmx5IGZv
ciBFRkwgYmVjYXVzZSBHVEsgcG9ydCB1c2VzIHRoZSBkZWZhdWx0IHJlc29sdmVyLCB3aGljaCB1
c2VzIEdJTydzIHByb3h5IHJlc29sdmVyLgorICAgIGlmICghaHR0cFByb3h5KSB7CisgICAgICAg
IHNvdXBfc2Vzc2lvbl9yZW1vdmVfZmVhdHVyZV9ieV90eXBlKG1fc291cFNlc3Npb24uZ2V0KCks
IFNPVVBfVFlQRV9QUk9YWV9VUklfUkVTT0xWRVIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgR1JlZlB0cjxTb3VwUHJveHlVUklSZXNvbHZlcj4gcmVzb2x2ZXIgPSBhZG9wdEdSZWYo
c291cFByb3h5UmVzb2x2ZXJXa05ldyhodHRwUHJveHksIGh0dHBQcm94eUV4Y2VwdGlvbnMpKTsK
KyAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9T
RVNTSU9OX0ZFQVRVUkUocmVzb2x2ZXIuZ2V0KCkpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KGh0dHBQcm94eSk7CisgICAgVU5VU0VEX1BBUkFNKGh0dHBQcm94eUV4Y2VwdGlvbnMpOworI2Vu
ZGlmCit9CisKK2NoYXIqIFNvdXBOZXR3b3JrU2Vzc2lvbjo6aHR0cFByb3h5KCkgY29uc3QKK3sK
KyNpZiBQTEFURk9STShFRkwpCisgICAgU291cFNlc3Npb25GZWF0dXJlKiBzb3VwUmVzb2x2ZXIg
PSBzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9UWVBF
X1BST1hZX1VSSV9SRVNPTFZFUik7CisgICAgaWYgKCFzb3VwUmVzb2x2ZXIpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgR093blB0cjxTb3VwVVJJPiB1cmk7CisgICAgZ19vYmplY3Rf
Z2V0KHNvdXBSZXNvbHZlciwgU09VUF9QUk9YWV9SRVNPTFZFUl9XS19QUk9YWV9VUkksICZ1cmku
b3V0UHRyKCksIG51bGxwdHIpOworCisgICAgcmV0dXJuIHVyaSA/IHNvdXBfdXJpX3RvX3N0cmlu
Zyh1cmkuZ2V0KCksIEZBTFNFKSA6IG51bGxwdHI7CisjZWxzZQorICAgIHJldHVybiBudWxscHRy
OworI2VuZGlmCit9CisKK3ZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpzZXR1cEhUVFBQcm94eUZy
b21FbnZpcm9ubWVudCgpCit7CisjaWYgUExBVEZPUk0oRUZMKQorICAgIGNvbnN0IGNoYXIqIGh0
dHBQcm94eSA9IGdldGVudigiaHR0cF9wcm94eSIpOworICAgIGlmICghaHR0cFByb3h5KQorICAg
ICAgICByZXR1cm47CisKKyAgICBzZXRIVFRQUHJveHkoaHR0cFByb3h5LCBnZXRlbnYoIm5vX3By
b3h5IikpOworI2VuZGlmCit9CisKK3N0YXRpYyBDU3RyaW5nIGJ1aWxkQWNjZXB0TGFuZ3VhZ2Vz
KFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcykKK3sKKyAgICAvLyBJZ25vcmUgIkMiIGxvY2FsZS4K
KyAgICBzaXplX3QgcG9zaXRpb24gPSBsYW5ndWFnZXMuZmluZCgiYyIpOworICAgIGlmIChwb3Np
dGlvbiAhPSBub3RGb3VuZCkKKyAgICAgICAgbGFuZ3VhZ2VzLnJlbW92ZShwb3NpdGlvbik7CisK
KyAgICAvLyBGYWxsYmFjayB0byAiZW4iIGlmIHRoZSBsaXN0IGlzIGVtcHR5LgorICAgIGlmIChs
YW5ndWFnZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gImVuIjsKKworICAgIC8vIENhbGN1
bGF0ZSBkZWx0YXMgZm9yIHRoZSBxdWFsaXR5IHZhbHVlcy4KKyAgICBpbnQgZGVsdGE7CisgICAg
aWYgKGxhbmd1YWdlcy5zaXplKCkgPCAxMCkKKyAgICAgICAgZGVsdGEgPSAxMDsKKyAgICBlbHNl
IGlmIChsYW5ndWFnZXMuc2l6ZSgpIDwgMjApCisgICAgICAgIGRlbHRhID0gNTsKKyAgICBlbHNl
CisgICAgICAgIGRlbHRhID0gMTsKKworICAgIC8vIFNldCBxdWFsaXR5IHZhbHVlcyBmb3IgZWFj
aCBsYW5ndWFnZS4KKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsYW5ndWFnZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGkpCisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKKworICAgICAgICBidWlsZGVyLmFwcGVuZChs
YW5ndWFnZXNbaV0pOworCisgICAgICAgIGludCBxdWFsaXR5ID0gMTAwIC0gaSAqIGRlbHRhOwor
ICAgICAgICBpZiAocXVhbGl0eSA+IDAgJiYgcXVhbGl0eSA8IDEwMCkgeworICAgICAgICAgICAg
Y2hhciBidWZmZXJbOF07CisgICAgICAgICAgICBnX2FzY2lpX2Zvcm1hdGQoYnVmZmVyLCA4LCAi
JS4yZiIsIHF1YWxpdHkgLyAxMDAuMCk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJp
bmc6OmZvcm1hdCgiO3E9JXMiLCBidWZmZXIpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOworfQorCit2b2lkIFNvdXBOZXR3b3JrU2Vz
c2lvbjo6c2V0QWNjZXB0TGFuZ3VhZ2VzKFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcykKK3sKKyAg
ICBnX29iamVjdF9zZXQobV9zb3VwU2Vzc2lvbi5nZXQoKSwgImFjY2VwdC1sYW5ndWFnZSIsIGJ1
aWxkQWNjZXB0TGFuZ3VhZ2VzKGxhbmd1YWdlcykuZGF0YSgpLCBudWxscHRyKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMTc5ZDIyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaApAQCAtMCwwICsx
LDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBTb3VwTmV0d29ya1Nlc3Npb25faAorI2RlZmluZSBTb3VwTmV0d29ya1Nlc3Npb25faAor
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwordHlwZWRlZiBzdHJ1
Y3QgX1NvdXBDYWNoZSBTb3VwQ2FjaGU7Cit0eXBlZGVmIHN0cnVjdCBfU291cENvb2tpZUphciBT
b3VwQ29va2llSmFyOwordHlwZWRlZiBzdHJ1Y3QgX1NvdXBTZXNzaW9uIFNvdXBTZXNzaW9uOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNvdXBOZXR3b3JrU2Vzc2lvbiB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU291cE5ldHdvcmtTZXNzaW9uKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFNvdXBOZXR3b3JrU2Vz
c2lvbj47CitwdWJsaWM6CisgICAgflNvdXBOZXR3b3JrU2Vzc2lvbigpOworCisgICAgc3RhdGlj
IFNvdXBOZXR3b3JrU2Vzc2lvbiYgZGVmYXVsdFNlc3Npb24oKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdvcmtTZXNzaW9uPiBjcmVh
dGVUZXN0aW5nU2Vzc2lvbigpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdv
cmtTZXNzaW9uPiBjcmVhdGVGb3JTb3VwU2Vzc2lvbihTb3VwU2Vzc2lvbiopOworCisgICAgZW51
bSBTU0xQb2xpY3lGbGFncyB7CisgICAgICAgIFNTTFN0cmljdCA9IDEgPDwgMCwKKyAgICAgICAg
U1NMVXNlU3lzdGVtQ0FGaWxlID0gMSA8PCAxCisgICAgfTsKKyAgICB0eXBlZGVmIHVuc2lnbmVk
IFNTTFBvbGljeTsKKworICAgIFNvdXBTZXNzaW9uKiBzb3VwU2Vzc2lvbigpIGNvbnN0IHsgcmV0
dXJuIG1fc291cFNlc3Npb24uZ2V0KCk7IH0KKworICAgIHZvaWQgc2V0Q29va2llSmFyKFNvdXBD
b29raWVKYXIqKTsKKyAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIoKSBjb25zdDsKKworICAg
IHZvaWQgc2V0Q2FjaGUoU291cENhY2hlKik7CisgICAgU291cENhY2hlKiBjYWNoZSgpIGNvbnN0
OworCisgICAgdm9pZCBzZXRTU0xQb2xpY3koU1NMUG9saWN5KTsKKyAgICBTU0xQb2xpY3kgc3Ns
UG9saWN5KCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEhUVFBQcm94eShjb25zdCBjaGFyKiBodHRw
UHJveHksIGNvbnN0IGNoYXIqIGh0dHBQcm94eUV4Y2VwdGlvbnMpOworICAgIGNoYXIqIGh0dHBQ
cm94eSgpIGNvbnN0OworICAgIHZvaWQgc2V0dXBIVFRQUHJveHlGcm9tRW52aXJvbm1lbnQoKTsK
KworICAgIHZvaWQgc2V0QWNjZXB0TGFuZ3VhZ2VzKFZlY3RvcjxTdHJpbmc+KTsKKworcHJpdmF0
ZToKKyAgICBTb3VwTmV0d29ya1Nlc3Npb24oU291cENvb2tpZUphciopOworICAgIFNvdXBOZXR3
b3JrU2Vzc2lvbihTb3VwU2Vzc2lvbiopOworCisgICAgdm9pZCBzZXR1cExvZ2dlcigpOworCisg
ICAgR1JlZlB0cjxTb3VwU2Vzc2lvbj4gbV9zb3VwU2Vzc2lvbjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZTliZGJkMC4uMThkZDFh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE0LTAxLTExICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbU09VUF0gQWRk
IFNvdXBOZXR3b3JrU2Vzc2lvbiBjbGFzcyB0byB3cmFwIGEgU291cFNlc3Npb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjgxMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0aGUgbmV3IFNvdXBO
ZXR3b3JrU2Vzc2lvbiBBUEkuCisKKyAgICAgICAgKiBld2svZXdrX2Nvb2tpZXMuY3BwOgorICAg
ICAgICAoZXdrX2Nvb2tpZXNfZmlsZV9zZXQpOgorICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6
CisgICAgICAgIChfZXdrX2luaXRfYm9keSk6CisgICAgICAgICogZXdrL2V3a19uZXR3b3JrLmNw
cDoKKyAgICAgICAgKGV3a19uZXR3b3JrX3Byb3h5X3VyaV9zZXQpOgorICAgICAgICAoZXdrX25l
dHdvcmtfcHJveHlfdXJpX2dldCk6CisgICAgICAgIChld2tfbmV0d29ya190bHNfY2VydGlmaWNh
dGVfY2hlY2tfZ2V0KToKKyAgICAgICAgKGV3a19uZXR3b3JrX3Rsc19jZXJ0aWZpY2F0ZV9jaGVj
a19zZXQpOgorICAgICAgICAoZXdrX25ldHdvcmtfdGxzX2NhX2NlcnRpZmljYXRlc19wYXRoX2dl
dCk6CisgICAgICAgIChld2tfbmV0d29ya190bHNfY2FfY2VydGlmaWNhdGVzX3BhdGhfc2V0KToK
KyAgICAgICAgKGV3a19uZXR3b3JrX2RlZmF1bHRfc291cF9zZXNzaW9uX2dldCk6CisgICAgICAg
ICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X3NvdXBfc2Vzc2lvbl9nZXQp
OgorICAgICAgICAoZXdrX3ZpZXdfc291cF9zZXNzaW9uX3NldCk6CisKIDIwMTQtMDEtMDggIFJ5
dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIE1lcmdl
IGV3a192aWV3X3NpbmdsZSBpbnRvIGV3a192aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2Nvb2tpZXMuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb29r
aWVzLmNwcAppbmRleCBiYmVlOGU0Li5lZDAxZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2Nvb2tpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
Y29va2llcy5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKICNpbmNsdWRlICJld2tfY29va2llcy5oIgog
CiAjaW5jbHVkZSAiQ29va2llSmFyU291cC5oIgotI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgi
CisjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSA8RWluYS5oPgogI2lu
Y2x1ZGUgPGVpbmFfc2FmZXR5X2NoZWNrcy5oPgogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTQyLDEz
ICs0Miw5IEBAIEVpbmFfQm9vbCBld2tfY29va2llc19maWxlX3NldChjb25zdCBjaGFyKiBmaWxl
bmFtZSkKIAogICAgIHNvdXBfY29va2llX2phcl9zZXRfYWNjZXB0X3BvbGljeShjb29raWVKYXIs
IFNPVVBfQ09PS0lFX0pBUl9BQ0NFUFRfTk9fVEhJUkRfUEFSVFkpOwogCi0gICAgU291cFNlc3Np
b24qIHNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsK
LSAgICBTb3VwU2Vzc2lvbkZlYXR1cmUqIG9sZGphciA9IHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVy
ZShzZXNzaW9uLCBTT1VQX1RZUEVfQ09PS0lFX0pBUik7Ci0gICAgaWYgKG9sZGphcikKLSAgICAg
ICAgc291cF9zZXNzaW9uX3JlbW92ZV9mZWF0dXJlKHNlc3Npb24sIG9sZGphcik7Ci0KKyAgICBT
b3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc2V0Q29va2llSmFyKGNvb2tpZUph
cik7CiAgICAgV2ViQ29yZTo6c2V0U291cENvb2tpZUphcihjb29raWVKYXIpOwotICAgIHNvdXBf
c2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1NFU1NJT05fRkVBVFVSRShjb29raWVK
YXIpKTsKKyAgICBnX29iamVjdF91bnJlZihjb29raWVKYXIpOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4uY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcAppbmRleCBkNzE2Nzc3Li45NTdiZmJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVRyYWNrZXJDbGllbnRFZmwu
aCIKICNpbmNsdWRlICJld2tfYXV0aF9zb3VwX3ByaXZhdGUuaCIKQEAgLTIwNiw3ICsyMDcsNyBA
QCBFaW5hX0Jvb2wgX2V3a19pbml0X2JvZHkodm9pZCkKIAogICAgIFNvdXBTZXNzaW9uKiBzZXNz
aW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7CiAgICAgU291
cFNlc3Npb25GZWF0dXJlKiBhdXRoX2RpYWxvZyA9IHN0YXRpY19jYXN0PFNvdXBTZXNzaW9uRmVh
dHVyZSo+KGdfb2JqZWN0X25ldyhFV0tfVFlQRV9TT1VQX0FVVEhfRElBTE9HLCAwKSk7Ci0gICAg
c291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIGF1dGhfZGlhbG9nKTsKKyAgICBzb3Vw
X3Nlc3Npb25fYWRkX2ZlYXR1cmUoV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0
U2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksIGF1dGhfZGlhbG9nKTsKIAogICAgIFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnModHJ1ZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX25ldHdvcmsuY3BwCmluZGV4IDUyZDIwYWEuLjBmYjdmMDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19uZXR3b3JrLmNwcApAQCAtMzAsNTkgKzMwLDM5IEBACiAKIHZvaWQgZXdrX25l
dHdvcmtfcHJveHlfdXJpX3NldChjb25zdCBjaGFyKiBwcm94eSkKIHsKLSAgICBTb3VwU2Vzc2lv
biogc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwot
Ci0gICAgaWYgKCFwcm94eSkgeworICAgIGlmICghcHJveHkpCiAgICAgICAgIEVSUigibm8gcHJv
eHkgdXJpLiByZW1vdmUgcHJveHkgZmVhdHVyZSBpbiBzb3VwLiIpOwotICAgICAgICBzb3VwX3Nl
c3Npb25fcmVtb3ZlX2ZlYXR1cmVfYnlfdHlwZShzZXNzaW9uLCBTT1VQX1RZUEVfUFJPWFlfVVJJ
X1JFU09MVkVSKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFNvdXBQcm94eVVSSVJl
c29sdmVyKiByZXNvbHZlckVmbCA9IHNvdXBQcm94eVJlc29sdmVyV2tOZXcocHJveHksIDApOwot
ICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1NFU1NJT05fRkVBVFVS
RShyZXNvbHZlckVmbCkpOwotICAgIGdfb2JqZWN0X3VucmVmKHJlc29sdmVyRWZsKTsKKyAgICBX
ZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc2V0SFRUUFByb3h5
KHByb3h5LCAwKTsKIH0KIAogY29uc3QgY2hhciogZXdrX25ldHdvcmtfcHJveHlfdXJpX2dldCh2
b2lkKQogewotICAgIFNvdXBVUkkqIHVyaTsKLSAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwotICAgIFNvdXBQcm94eVVS
SVJlc29sdmVyKiByZXNvbHZlciA9IFNPVVBfUFJPWFlfVVJJX1JFU09MVkVSKHNvdXBfc2Vzc2lv
bl9nZXRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1RZUEVfUFJPWFlfVVJJX1JFU09MVkVSKSk7Ci0g
ICAgaWYgKCFyZXNvbHZlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBnX29iamVjdF9nZXQo
cmVzb2x2ZXIsIFNPVVBfUFJPWFlfUkVTT0xWRVJfV0tfUFJPWFlfVVJJLCAmdXJpLCBOVUxMKTsK
LQorICAgIGNoYXIqIHVyaSA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNl
c3Npb24oKS5odHRwUHJveHkoKTsKICAgICBpZiAoIXVyaSkgewogICAgICAgICBFUlIoIm5vIHBy
b3h5IHVyaSIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBXVEY6OlN0cmluZyBw
cm94eSA9IHNvdXBfdXJpX3RvX3N0cmluZyh1cmksIGZhbHNlKTsKLSAgICByZXR1cm4gZWluYV9z
dHJpbmdzaGFyZV9hZGQocHJveHkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGVpbmFfc3Ry
aW5nc2hhcmVfYWRkKHVyaSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfbmV0d29ya190bHNfY2VydGlm
aWNhdGVfY2hlY2tfZ2V0KCkKIHsKLSAgICBib29sIGNoZWNrQ2VydGlmaWNhdGVzID0gZmFsc2U7
Ci0KLSAgICBTb3VwU2Vzc2lvbiogZGVmYXVsdFNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKLSAgICBnX29iamVjdF9nZXQoZGVmYXVsdFNlc3Npb24s
ICJzc2wtc3RyaWN0IiwgJmNoZWNrQ2VydGlmaWNhdGVzLCBOVUxMKTsKLQotICAgIHJldHVybiBj
aGVja0NlcnRpZmljYXRlczsKKyAgICB1bnNpZ25lZCBwb2xpY3kgPSBXZWJDb3JlOjpTb3VwTmV0
d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc3NsUG9saWN5KCk7CisgICAgcmV0dXJuIHBv
bGljeSAmIFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6U1NMU3RyaWN0OwogfQogCiB2b2lk
IGV3a19uZXR3b3JrX3Rsc19jZXJ0aWZpY2F0ZV9jaGVja19zZXQoRWluYV9Cb29sIGNoZWNrQ2Vy
dGlmaWNhdGVzKQogewotICAgIFNvdXBTZXNzaW9uKiBkZWZhdWx0U2Vzc2lvbiA9IFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwotICAgIGdfb2JqZWN0X3NldChkZWZh
dWx0U2Vzc2lvbiwgInNzbC1zdHJpY3QiLCBjaGVja0NlcnRpZmljYXRlcywgTlVMTCk7CisgICAg
dW5zaWduZWQgcG9saWN5ID0gV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vz
c2lvbigpLnNzbFBvbGljeSgpOworICAgIFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVm
YXVsdFNlc3Npb24oKS5zZXRTU0xQb2xpY3kocG9saWN5IHwgV2ViQ29yZTo6U291cE5ldHdvcmtT
ZXNzaW9uOjpTU0xTdHJpY3QpOwogfQogCiBjb25zdCBjaGFyKiBld2tfbmV0d29ya190bHNfY2Ff
Y2VydGlmaWNhdGVzX3BhdGhfZ2V0KCkKIHsKICAgICBjb25zdCBjaGFyKiBidW5kbGVQYXRoID0g
MDsKIAotICAgIFNvdXBTZXNzaW9uKiBkZWZhdWx0U2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICAgIFNvdXBTZXNzaW9uKiBkZWZhdWx0U2Vzc2lv
biA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zb3VwU2Vz
c2lvbigpOwogICAgIGdfb2JqZWN0X2dldChkZWZhdWx0U2Vzc2lvbiwgInNzbC1jYS1maWxlIiwg
JmJ1bmRsZVBhdGgsIE5VTEwpOwogCiAgICAgcmV0dXJuIGJ1bmRsZVBhdGg7CkBAIC05MCwxMSAr
NzAsMTEgQEAgY29uc3QgY2hhciogZXdrX25ldHdvcmtfdGxzX2NhX2NlcnRpZmljYXRlc19wYXRo
X2dldCgpCiAKIHZvaWQgZXdrX25ldHdvcmtfdGxzX2NhX2NlcnRpZmljYXRlc19wYXRoX3NldChj
b25zdCBjaGFyKiBidW5kbGVQYXRoKQogewotICAgIFNvdXBTZXNzaW9uKiBkZWZhdWx0U2Vzc2lv
biA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICAgIFNvdXBT
ZXNzaW9uKiBkZWZhdWx0U2Vzc2lvbiA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVm
YXVsdFNlc3Npb24oKS5zb3VwU2Vzc2lvbigpOwogICAgIGdfb2JqZWN0X3NldChkZWZhdWx0U2Vz
c2lvbiwgInNzbC1jYS1maWxlIiwgYnVuZGxlUGF0aCwgTlVMTCk7CiB9CiAKIFNvdXBTZXNzaW9u
KiBld2tfbmV0d29ya19kZWZhdWx0X3NvdXBfc2Vzc2lvbl9nZXQoKQogewotICAgIHJldHVybiBX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNvdXBTZXNzaW9uKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCAzY2YwZWVjLi44ODkwMmU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgi
CiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJjX2luc3RhbmNlLmgi
CiAjaW5jbHVkZSAiZXdrX2NvbnRleHRtZW51X3ByaXZhdGUuaCIKQEAgLTQ1NDUsNyArNDU0Niw3
IEBAIFNvdXBTZXNzaW9uKiBld2tfdmlld19zb3VwX3Nlc3Npb25fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCAwKTsKLSAgICByZXR1cm4gcHJpdi0+c3RvcmFnZVNlc3Npb24tPnNvdXBTZXNzaW9u
KCk7CisgICAgcmV0dXJuIHByaXYtPnN0b3JhZ2VTZXNzaW9uLT5zb3VwTmV0d29ya1Nlc3Npb24o
KS5zb3VwU2Vzc2lvbigpOwogfQogCiB2b2lkIGV3a192aWV3X3NvdXBfc2Vzc2lvbl9zZXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIFNvdXBTZXNzaW9uKiBzZXNzaW9uKQpAQCAtNDU1Nyw3ICs0NTU4
LDcgQEAgdm9pZCBld2tfdmlld19zb3VwX3Nlc3Npb25fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBTb3VwU2Vzc2lvbiogc2Vzc2lvbikKICAgICAgICAgICAgICJhIFNvdXBTZXNzaW9uU3luYyB3
YXMgcHJvdmlkZWQuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcHJpdi0+c3RvcmFn
ZVNlc3Npb24tPnNldFNvdXBTZXNzaW9uKHNlc3Npb24pOworICAgIHByaXYtPnN0b3JhZ2VTZXNz
aW9uLT5zZXRTb3VwTmV0d29ya1Nlc3Npb24oU291cE5ldHdvcmtTZXNzaW9uOjpjcmVhdGVGb3JT
b3VwU2Vzc2lvbihzZXNzaW9uKSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2Vu
YWJsZV94c3NfYXVkaXRvcl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggY2VlY2UxZi4uZTE4MmM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDE0LTAxLTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbU09VUF0gQWRkIFNvdXBOZXR3b3JrU2Vzc2lvbiBjbGFzcyB0byB3
cmFwIGEgU291cFNlc3Npb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNjgxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwOgorICAgICAgICAod2Via2l0X2dl
dF9kZWZhdWx0X3Nlc3Npb24pOiBVc2UgdGhlIG5ldyBTb3VwTmV0d29ya1Nlc3Npb24gQVBJCisg
ICAgICAgIHRvIGdldCB0aGUgZGVmYXVsdCBTb3VwU2Vzc2lvbgorCiAyMDE0LTAxLTA4ICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRk
IHhkZy5vcmlnaW4udXJsIGV4dGVuZGVkIGF0dHJpYnV0ZSB0byBkb3dubG9hZHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzLmNwcAppbmRleCAyY2I1YmU1Li5mNjFjOGUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xvYmFscy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwCkBAIC0zOSw2
ICszOSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgorI2luY2x1
ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZ1JlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAid2Via2l0YXBwbGljYXRpb25jYWNoZS5oIgogI2luY2x1ZGUgIndlYmtp
dGZhdmljb25kYXRhYmFzZS5oIgpAQCAtODMsNyArODQsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIFNvdXBTZXNzaW9uKiB3ZWJraXRfZ2V0X2RlZmF1bHRfc2Vzc2lvbiAoKQogewogICAg
IHdlYmtpdEluaXQoKTsKLSAgICByZXR1cm4gUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9u
KCk7CisgICAgcmV0dXJuIFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zb3Vw
U2Vzc2lvbigpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjNWVlMGFiLi5lZWVmNDMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTQtMDEtMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTT1VQXSBBZGQgU291cE5ldHdvcmtT
ZXNzaW9uIGNsYXNzIHRvIHdyYXAgYSBTb3VwU2Vzc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2ODEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBuZXcgU291cE5ldHdvcmtTZXNzaW9u
IEFQSS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3Vw
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRm
b3JtU2V0Q2FjaGVNb2RlbCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVh
ckNhY2hlRm9yQWxsT3JpZ2lucyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvdW5peC9OZXR3
b3JrUHJvY2Vzc01haW5Vbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NN
YWluKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2Vy
U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFp
bkVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NNYWluRWZsKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NNYWluR3RrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vz
c1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hl
TW9kZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUNsZWFyUmVzb3Vy
Y2VDYWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpzZXRTb3VwU2Vzc2lvbkFjY2VwdExhbmd1YWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJv
Y2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6cmVnaXN0ZXJVUklT
Y2hlbWUpOgorCiAyMDE0LTAxLTEwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBGaXggcmV0dXJuIHZhbHVlIG9mIFdlYktpdERvd25s
b2FkOjpjcmVhdGVkLWRlc3RpbmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggNmQ3Y2Y5Ny4u
NThkZDVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0
ci5oPgpAQCAtNzgsNyArNzksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogewogICAgIEFT
U0VSVCghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKTsKICAgICBHUmVm
UHRyPFNvdXBDYWNoZT4gc291cENhY2hlID0gYWRvcHRHUmVmKHNvdXBfY2FjaGVfbmV3KHBhcmFt
ZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LnV0ZjgoKS5kYXRhKCksIFNPVVBfQ0FDSEVfU0lOR0xF
X1VTRVIpKTsKLSAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIFNPVVBfU0VTU0lPTl9GRUFUVVJFKHNvdXBDYWNoZS5n
ZXQoKSkpOworICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRDYWNo
ZShzb3VwQ2FjaGUuZ2V0KCkpOwogICAgIHNvdXBfY2FjaGVfbG9hZChzb3VwQ2FjaGUuZ2V0KCkp
OwogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aC5pc0Vt
cHR5KCkpIHsKQEAgLTEwMSw4ICsxMDIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9y
bVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQogICAgIHVuc2lnbmVkIGxvbmcg
dXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7CiAgICAgdW5zaWduZWQgbG9uZyB1cmxDYWNoZURp
c2tDYXBhY2l0eSA9IDA7CiAKLSAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFJlc291cmNlSGFu
ZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwotICAgIFNvdXBDYWNoZSogY2FjaGUgPSBTT1VQX0NBQ0hF
KHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1RZUEVfQ0FDSEUpKTsKKyAg
ICBTb3VwQ2FjaGUqIGNhY2hlID0gU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigp
LmNhY2hlKCk7CiAgICAgdWludDY0X3QgZGlza0ZyZWVTaXplID0gZ2V0Q2FjaGVEaXNrRnJlZVNp
emUoY2FjaGUpIC8gMTAyNCAvIDEwMjQ7CiAKICAgICB1aW50NjRfdCBtZW1TaXplID0gZ2V0TWVt
b3J5U2l6ZSgpOwpAQCAtMTI5LDggKzEyOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFy
Q2FjaGVGb3JBbGxPcmlnaW5zKHVpbnQzMl90IGNhY2hlc1RvQ2xlYXIpCiAgICAgaWYgKGNhY2hl
c1RvQ2xlYXIgPT0gSW5NZW1vcnlSZXNvdXJjZUNhY2hlc09ubHkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNz
aW9uKCk7Ci0gICAgc291cF9jYWNoZV9jbGVhcihTT1VQX0NBQ0hFKHNvdXBfc2Vzc2lvbl9nZXRf
ZmVhdHVyZShzZXNzaW9uLCBTT1VQX1RZUEVfQ0FDSEUpKSk7CisgICAgc291cF9jYWNoZV9jbGVh
cihTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUoKSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3VuaXgvTmV0d29ya1Byb2Nlc3NNYWluVW5peC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9jZXNzTWFpblVu
aXguY3BwCmluZGV4IDJjOGFlZGYuLjAzYThiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL3VuaXgvTmV0d29ya1Byb2Nlc3NNYWluVW5peC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvdW5peC9OZXR3b3JrUHJvY2Vzc01haW5Vbml4LmNw
cApAQCAtMjksMTAgKzI5LDkgQEAKIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAKLSNp
bmNsdWRlICJQcm94eVJlc29sdmVyU291cC5oIgogI2luY2x1ZGUgIldLQmFzZS5oIgogI2luY2x1
ZGUgIldlYktpdDJJbml0aWFsaXplLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRs
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdvcmtTZXNzaW9uLmg+CiAjaW5jbHVkZSA8
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy5oPgogI2luY2x1ZGUgPGVycm9yLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CkBAIC02OCwxOCArNjcsNyBAQCBXS19FWFBP
UlQgaW50IE5ldHdvcmtQcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogCiAgICAg
SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotI2lmIFVTRShTT1VQKQotICAgIFNvdXBTZXNzaW9uKiBz
ZXNzaW9uID0gUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7Ci0jaWYgUExBVEZPUk0o
RUZMKQotICAgIC8vIE9ubHkgZm9yIEVGTCBiZWNhdXNlIEdUSyBwb3J0IHVzZXMgdGhlIGRlZmF1
bHQgcmVzb2x2ZXIsIHdoaWNoIHVzZXMgR0lPJ3MgcHJveHkgcmVzb2x2ZXIuCi0gICAgY29uc3Qg
Y2hhciogaHR0cFByb3h5ID0gZ2V0ZW52KCJodHRwX3Byb3h5Iik7Ci0gICAgaWYgKGh0dHBQcm94
eSkgewotICAgICAgICBjb25zdCBjaGFyKiBub1Byb3h5ID0gZ2V0ZW52KCJub19wcm94eSIpOwot
ICAgICAgICBHUmVmUHRyPFNvdXBQcm94eVVSSVJlc29sdmVyPiByZXNvbHZlciA9IGFkb3B0R1Jl
Zihzb3VwUHJveHlSZXNvbHZlcldrTmV3KGh0dHBQcm94eSwgbm9Qcm94eSkpOwotICAgICAgICBz
b3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9TRVNTSU9OX0ZFQVRVUkUocmVz
b2x2ZXIuZ2V0KCkpKTsKLSAgICB9Ci0jZW5kaWYKLSNlbmRpZgorICAgIFNvdXBOZXR3b3JrU2Vz
c2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXR1cEhUVFBQcm94eUZyb21FbnZpcm9ubWVudCgpOwog
CiAgICAgaW50IHNvY2tldCA9IGF0b2koYXJndlsxXSk7CiAKQEAgLTkyLDE2ICs4MCwxNSBAQCBX
S19FWFBPUlQgaW50IE5ldHdvcmtQcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQog
ICAgIC8vIERlc3BpdGUgdXNpbmcgc3lzdGVtIENBcyB0byB2YWxpZGF0ZSBjZXJ0aWZpY2F0ZXMg
d2UncmUKICAgICAvLyBhY2NlcHRpbmcgaW52YWxpZCBjZXJ0aWZpY2F0ZXMgYnkgZGVmYXVsdC4g
TmV3IEFQSSB3aWxsIGJlCiAgICAgLy8gYWRkZWQgbGF0ZXIgdG8gbGV0IGNsaWVudCBhY2NlcHQv
ZGlzY2FyZCBpbnZhbGlkIGNlcnRpZmljYXRlcy4KLSAgICBnX29iamVjdF9zZXQoc2Vzc2lvbiwg
U09VUF9TRVNTSU9OX1NTTF9VU0VfU1lTVEVNX0NBX0ZJTEUsIFRSVUUsCi0gICAgICAgIFNPVVBf
U0VTU0lPTl9TU0xfU1RSSUNULCBGQUxTRSwgTlVMTCk7CisgICAgU291cE5ldHdvcmtTZXNzaW9u
OjpkZWZhdWx0U2Vzc2lvbigpLnNldFNTTFBvbGljeShTb3VwTmV0d29ya1Nlc3Npb246OlNTTFVz
ZVN5c3RlbUNBRmlsZSk7CiAjZW5kaWYKIAogICAgIFJ1bkxvb3A6OnJ1bigpOwogCiAjaWYgVVNF
KFNPVVApCi0gICAgaWYgKFNvdXBTZXNzaW9uRmVhdHVyZSogc291cENhY2hlID0gc291cF9zZXNz
aW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQRV9DQUNIRSkpIHsKLSAgICAgICAgc291
cF9jYWNoZV9mbHVzaChTT1VQX0NBQ0hFKHNvdXBDYWNoZSkpOwotICAgICAgICBzb3VwX2NhY2hl
X2R1bXAoU09VUF9DQUNIRShzb3VwQ2FjaGUpKTsKKyAgICBpZiAoU291cENhY2hlKiBzb3VwQ2Fj
aGUgPSBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUoKSkgeworICAg
ICAgICBzb3VwX2NhY2hlX2ZsdXNoKHNvdXBDYWNoZSk7CisgICAgICAgIHNvdXBfY2FjaGVfZHVt
cChzb3VwQ2FjaGUpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5j
cHAKaW5kZXggMTdkZTMxMi4uNzA1NGY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNw
cApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUg
IldlYktpdFNvdXBDb29raWVKYXJTcWxpdGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUph
clNvdXAuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4K
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpAQCAtOTYsMTIgKzk2LDggQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29r
aWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1aW4KICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgU291cENvb2tpZUphciogY3Vy
cmVudEphciA9IFdlYkNvcmU6OnNvdXBDb29raWVKYXIoKTsKLSAgICBzb3VwX2Nvb2tpZV9qYXJf
c2V0X2FjY2VwdF9wb2xpY3koamFyLmdldCgpLCBzb3VwX2Nvb2tpZV9qYXJfZ2V0X2FjY2VwdF9w
b2xpY3koY3VycmVudEphcikpOwotICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gUmVzb3VyY2VI
YW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7Ci0gICAgc291cF9zZXNzaW9uX3JlbW92ZV9mZWF0dXJl
KHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFUVVJFKGN1cnJlbnRKYXIpKTsKLSAgICBzb3VwX3Nl
c3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9TRVNTSU9OX0ZFQVRVUkUoamFyLmdldCgp
KSk7Ci0KKyAgICBzb3VwX2Nvb2tpZV9qYXJfc2V0X2FjY2VwdF9wb2xpY3koamFyLmdldCgpLCBz
b3VwX2Nvb2tpZV9qYXJfZ2V0X2FjY2VwdF9wb2xpY3koV2ViQ29yZTo6c291cENvb2tpZUphcigp
KSk7CisgICAgU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldENvb2tpZUph
cihqYXIuZ2V0KCkpOwogICAgIFdlYkNvcmU6OnNldFNvdXBDb29raWVKYXIoamFyLmdldCgpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vz
c01haW5FZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01h
aW5FZmwuY3BwCmluZGV4IDRkMjQ5ZGIuLmZkZDU2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAKQEAgLTM1LDcgKzM1LDcg
QEAKICNpbmNsdWRlIDxFZnJlZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NvdXBO
ZXR3b3JrU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV2ViUHJvY2Vzcy5oPgogI2luY2x1
ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgpAQCAt
MTE0LDE0ICsxMTQsNyBAQCBXS19FWFBPUlQgaW50IFdlYlByb2Nlc3NNYWluRWZsKGludCBhcmdj
LCBjaGFyKiBhcmd2W10pCiAKICAgICBJbml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgU291cFNl
c3Npb24qIHNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24o
KTsKLSAgICBjb25zdCBjaGFyKiBodHRwUHJveHkgPSBnZXRlbnYoImh0dHBfcHJveHkiKTsKLSAg
ICBpZiAoaHR0cFByb3h5KSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5vUHJveHkgPSBnZXRlbnYo
Im5vX3Byb3h5Iik7Ci0gICAgICAgIFNvdXBQcm94eVVSSVJlc29sdmVyKiByZXNvbHZlckVmbCA9
IHNvdXBQcm94eVJlc29sdmVyV2tOZXcoaHR0cFByb3h5LCBub1Byb3h5KTsKLSAgICAgICAgc291
cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFUVVJFKHJlc29s
dmVyRWZsKSk7Ci0gICAgICAgIGdfb2JqZWN0X3VucmVmKHJlc29sdmVyRWZsKTsKLSAgICB9Cisg
ICAgU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldHVwSFRUUFByb3h5RnJv
bUVudmlyb25tZW50KCk7CiAKICAgICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFdKTsKIApAQCAt
MTMyLDkgKzEyNSw5IEBAIFdLX0VYUE9SVCBpbnQgV2ViUHJvY2Vzc01haW5FZmwoaW50IGFyZ2Ms
IGNoYXIqIGFyZ3ZbXSkKIAogICAgIFJ1bkxvb3A6OnJ1bigpOwogCi0gICAgaWYgKFNvdXBTZXNz
aW9uRmVhdHVyZSogc291cENhY2hlID0gc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24s
IFNPVVBfVFlQRV9DQUNIRSkpIHsKLSAgICAgICAgc291cF9jYWNoZV9mbHVzaChTT1VQX0NBQ0hF
KHNvdXBDYWNoZSkpOwotICAgICAgICBzb3VwX2NhY2hlX2R1bXAoU09VUF9DQUNIRShzb3VwQ2Fj
aGUpKTsKKyAgICBpZiAoU291cENhY2hlKiBzb3VwQ2FjaGUgPSBTb3VwTmV0d29ya1Nlc3Npb246
OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUoKSkgeworICAgICAgICBzb3VwX2NhY2hlX2ZsdXNoKHNv
dXBDYWNoZSk7CisgICAgICAgIHNvdXBfY2FjaGVfZHVtcChzb3VwQ2FjaGUpOwogICAgIH0KIAog
ICAgIGVkamVfc2h1dGRvd24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Z3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcAppbmRleCBiNDgxZWUzLi5lMTVmNjAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3Bw
CkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9OZXR3b3JraW5nQ29udGV4dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdl
YktpdDIvV2ViUHJvY2Vzcy5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDxsaWJp
bnRsLmg+CkBAIC03MSwxNSArNzEsMTMgQEAgV0tfRVhQT1JUIGludCBXZWJQcm9jZXNzTWFpbkd0
ayhpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgIC8vIERlc3BpdGUgdXNpbmcgc3lzdGVtIENB
cyB0byB2YWxpZGF0ZSBjZXJ0aWZpY2F0ZXMgd2UncmUKICAgICAvLyBhY2NlcHRpbmcgaW52YWxp
ZCBjZXJ0aWZpY2F0ZXMgYnkgZGVmYXVsdC4gTmV3IEFQSSB3aWxsIGJlCiAgICAgLy8gYWRkZWQg
bGF0ZXIgdG8gbGV0IGNsaWVudCBhY2NlcHQvZGlzY2FyZCBpbnZhbGlkIGNlcnRpZmljYXRlcy4K
LSAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZh
dWx0U2Vzc2lvbigpOwotICAgIGdfb2JqZWN0X3NldChzZXNzaW9uLCBTT1VQX1NFU1NJT05fU1NM
X1VTRV9TWVNURU1fQ0FfRklMRSwgVFJVRSwKLSAgICAgICAgICAgICAgICAgU09VUF9TRVNTSU9O
X1NTTF9TVFJJQ1QsIEZBTFNFLCBOVUxMKTsKKyAgICBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1
bHRTZXNzaW9uKCkuc2V0U1NMUG9saWN5KFNvdXBOZXR3b3JrU2Vzc2lvbjo6U1NMVXNlU3lzdGVt
Q0FGaWxlKTsKIAogICAgIFJ1bkxvb3A6OnJ1bigpOwogCi0gICAgaWYgKFNvdXBTZXNzaW9uRmVh
dHVyZSogc291cENhY2hlID0gc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBf
VFlQRV9DQUNIRSkpIHsKLSAgICAgICAgc291cF9jYWNoZV9mbHVzaChTT1VQX0NBQ0hFKHNvdXBD
YWNoZSkpOwotICAgICAgICBzb3VwX2NhY2hlX2R1bXAoU09VUF9DQUNIRShzb3VwQ2FjaGUpKTsK
KyAgICBpZiAoU291cENhY2hlKiBzb3VwQ2FjaGUgPSBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1
bHRTZXNzaW9uKCkuY2FjaGUoKSkgeworICAgICAgICBzb3VwX2NhY2hlX2ZsdXNoKHNvdXBDYWNo
ZSk7CisgICAgICAgIHNvdXBfY2FjaGVfZHVtcChzb3VwQ2FjaGUpOwogICAgIH0KIAogICAgIHJl
dHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlBy
b2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNz
U291cC5jcHAKaW5kZXggNzMzMDc4ZC4uODA5YWJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCkBAIC00MCwxMSArNDAsMTAgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4K
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC05NCw3ICs5
Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwg
Y2FjaGVNb2RlbCkKICAgICBTb3VwQ2FjaGUqIGNhY2hlID0gbnVsbHB0cjsKIAogICAgIGlmICgh
dXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FjaGUgPSBTT1VQX0NBQ0hFKHNvdXBf
c2Vzc2lvbl9nZXRfZmVhdHVyZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Np
b24oKSwgU09VUF9UWVBFX0NBQ0hFKSk7CisgICAgICAgIGNhY2hlID0gV2ViQ29yZTo6U291cE5l
dHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNhY2hlKCk7CiAgICAgICAgIGRpc2tGcmVl
U2l6ZSA9IGdldENhY2hlRGlza0ZyZWVTaXplKGNhY2hlKSAvIDEwMjQgLyAxMDI0OwogICAgIH0K
IApAQCAtMTIyLDUyICsxMjEsMTIgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUNsZWFyUmVz
b3VyY2VDYWNoZXMoUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIKICAgICBpZiAo
dXNlc05ldHdvcmtQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNvdXBfY2FjaGVf
Y2xlYXIoU09VUF9DQUNIRShzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIFNPVVBfVFlQRV9DQUNIRSkpKTsKLX0KLQotLy8g
VGhpcyBmdW5jdGlvbiBpcyBiYXNlZCBvbiBFcGlwaGFueSBjb2RlIGluIGVwaHktZW1iZWQtcHJl
ZnMuYy4KLXN0YXRpYyBDU3RyaW5nIGJ1aWxkQWNjZXB0TGFuZ3VhZ2VzKFZlY3RvcjxTdHJpbmc+
IGxhbmd1YWdlcykKLXsKLSAgICAvLyBJZ25vcmUgIkMiIGxvY2FsZS4KLSAgICBzaXplX3QgcG9z
aXRpb24gPSBsYW5ndWFnZXMuZmluZCgiYyIpOwotICAgIGlmIChwb3NpdGlvbiAhPSBub3RGb3Vu
ZCkKLSAgICAgICAgbGFuZ3VhZ2VzLnJlbW92ZShwb3NpdGlvbik7Ci0KLSAgICAvLyBGYWxsYmFj
ayB0byAiZW4iIGlmIHRoZSBsaXN0IGlzIGVtcHR5LgotICAgIGlmIChsYW5ndWFnZXMuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gImVuIjsKLQotICAgIC8vIENhbGN1bGF0ZSBkZWx0YXMgZm9y
IHRoZSBxdWFsaXR5IHZhbHVlcy4KLSAgICBpbnQgZGVsdGE7Ci0gICAgaWYgKGxhbmd1YWdlcy5z
aXplKCkgPCAxMCkKLSAgICAgICAgZGVsdGEgPSAxMDsKLSAgICBlbHNlIGlmIChsYW5ndWFnZXMu
c2l6ZSgpIDwgMjApCi0gICAgICAgIGRlbHRhID0gNTsKLSAgICBlbHNlCi0gICAgICAgIGRlbHRh
ID0gMTsKLQotICAgIC8vIFNldCBxdWFsaXR5IHZhbHVlcyBmb3IgZWFjaCBsYW5ndWFnZS4KLSAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYW5n
dWFnZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiLCAiKTsKLQotICAgICAgICBidWlsZGVyLmFwcGVuZChsYW5ndWFnZXNbaV0pOwot
Ci0gICAgICAgIGludCBxdWFsaXR5ID0gMTAwIC0gaSAqIGRlbHRhOwotICAgICAgICBpZiAocXVh
bGl0eSA+IDAgJiYgcXVhbGl0eSA8IDEwMCkgewotICAgICAgICAgICAgY2hhciBidWZmZXJbOF07
Ci0gICAgICAgICAgICBnX2FzY2lpX2Zvcm1hdGQoYnVmZmVyLCA4LCAiJS4yZiIsIHF1YWxpdHkg
LyAxMDAuMCk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiO3E9
JXMiLCBidWZmZXIpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCkudXRmOCgpOworICAgIHNvdXBfY2FjaGVfY2xlYXIoV2ViQ29yZTo6U291cE5ldHdv
cmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNhY2hlKCkpOwogfQogCiBzdGF0aWMgdm9pZCBz
ZXRTb3VwU2Vzc2lvbkFjY2VwdExhbmd1YWdlKFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcykKIHsK
LSAgICBnX29iamVjdF9zZXQoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9u
KCksICJhY2NlcHQtbGFuZ3VhZ2UiLCBidWlsZEFjY2VwdExhbmd1YWdlcyhsYW5ndWFnZXMpLmRh
dGEoKSwgTlVMTCk7CisgICAgV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vz
c2lvbigpLnNldEFjY2VwdExhbmd1YWdlcyhsYW5ndWFnZXMpOwogfQogCiBzdGF0aWMgdm9pZCBs
YW5ndWFnZUNoYW5nZWQodm9pZCopCkBAIC0xOTEsNyArMTUwLDcgQEAgdm9pZCBXZWJQcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMKIAogICAgIEFTU0VSVCghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNF
bXB0eSgpKTsKICAgICBHUmVmUHRyPFNvdXBDYWNoZT4gc291cENhY2hlID0gYWRvcHRHUmVmKHNv
dXBfY2FjaGVfbmV3KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LnV0ZjgoKS5kYXRhKCks
IFNPVVBfQ0FDSEVfU0lOR0xFX1VTRVIpKTsKLSAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIFNPVVBfU0VTU0lPTl9G
RUFUVVJFKHNvdXBDYWNoZS5nZXQoKSkpOworICAgIFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lv
bjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRDYWNoZShzb3VwQ2FjaGUuZ2V0KCkpOwogICAgIHNvdXBf
Y2FjaGVfbG9hZChzb3VwQ2FjaGUuZ2V0KCkpOwogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmNvb2tp
ZVBlcnNpc3RlbnRTdG9yYWdlUGF0aC5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXgg
YmQwY2Y2Mi4uNzBmY2FkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9z
b3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1
ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KICNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CkBAIC05OCw3ICs5OSw3IEBAIHZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlclVS
SVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKICAgICBnX3B0cl9hcnJheV9hZGQobV9zY2hl
bWVzLmdldCgpLCBnX3N0cmR1cChzY2hlbWUudXRmOCgpLmRhdGEoKSkpOwogICAgIGdfcHRyX2Fy
cmF5X2FkZChtX3NjaGVtZXMuZ2V0KCksIDApOwogCi0gICAgU291cFNlc3Npb24qIHNlc3Npb24g
PSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKKyAgICBTb3VwU2Vz
c2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Np
b24oKS5zb3VwU2Vzc2lvbigpOwogICAgIFNvdXBSZXF1ZXN0Q2xhc3MqIGdlbmVyaWNSZXF1ZXN0
Q2xhc3MgPSBzdGF0aWNfY2FzdDxTb3VwUmVxdWVzdENsYXNzKj4oZ190eXBlX2NsYXNzX3JlZihX
RUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJQykpOwogICAgIGdlbmVyaWNSZXF1ZXN0Q2xh
c3MtPnNjaGVtZXMgPSBjb25zdF9jYXN0PGNvbnN0IGNoYXIqKj4ocmVpbnRlcnByZXRfY2FzdDxj
aGFyKio+KG1fc2NoZW1lcy0+cGRhdGEpKTsKICAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmVf
YnlfdHlwZShzZXNzaW9uLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJQyk7Cg==
</data>
<flag name="commit-queue"
          id="244743"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220932</attachid>
            <date>2014-01-11 07:02:09 -0800</date>
            <delta_ts>2014-01-11 07:12:08 -0800</delta_ts>
            <desc>Try to fix EFL build</desc>
            <filename>soup-network-session3.diff</filename>
            <type>text/plain</type>
            <size>57973</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4Y2EwZWQ2Li45OWUzMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkg
QEAKKzIwMTQtMDEtMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtTT1VQXSBBZGQgU291cE5ldHdvcmtTZXNzaW9uIGNsYXNzIHRvIHdyYXAg
YSBTb3VwU2Vzc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI2ODEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIFNvdXBOZXR3b3JrU2Vzc2lvbiBjbGFzcyB0aGF0IHdyYXBzIGEgU291cFNlc3Np
b24gYW5kIG1vdmUgYWxsCisgICAgICAgIHRoZSBjb2RlIHJlbGF0ZWQgdG8gdGhlIFNvdXBTZXNz
aW9uIGZyb20gUmVzb3VyY2VIYW5kbGUgdG8KKyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uLCBp
bmNsdWRpbmcgdGhlIHN0YXRpYyBtZXRob2RzIHRvIGdldCB0aGUKKyAgICAgICAgZGVmYXVsdCBz
ZXNzaW9uIGFuZCBjcmVhdGUgdGVzdGluZyBhbmQgcHJpdmF0ZSBzZXNzaW9ucy4KKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oOiBVc2UgU291cE5ldHdvcmtTZXNzaW9uCisgICAgICAgIGluc3RlYWQgb2YgU291
cFNlc3Npb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvb2tpZUphckZvclNlc3Npb24pOiBVc2UgU291cE5ldHdvcmtTZXNzaW9u
IHRvIGdldCB0aGUKKyAgICAgICAgU291cFNlc3Npb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9zb3VwL0ROU1NvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVl
OjpwbGF0Zm9ybVJlc29sdmUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbik6IFVzZQorICAgICAgICBT
b3VwTmV0d29ya1Nlc3Npb24gaW5zdGVhZCBvZiBTb3VwU2Vzc2lvbi4KKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6fk5ldHdvcmtTdG9yYWdlU2Vzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lv
bik6IENyZWF0ZSBhCisgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB3aXRoIGEgTlVMTCBT
b3VwTmV0d29ya1Nlc3Npb24gd2hpY2ggbWVhbnMKKyAgICAgICAgdGhhdCB0aGUgZGVmYXVsdCBT
b3VwTmV0d29ya1Nlc3Npb24gd2lsbCBiZSB1c2VkLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAg
Q2FsbCBTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSB0
byBjcmVhdGUKKyAgICAgICAgdGhlIHByaXZhdGUgc2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbik6IENhbGwK
KyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uOjpjcmVhdGVUZXN0aW5nU2Vzc2lvbigpIHRvIGNy
ZWF0ZSB0aGUgdGVzdGluZworICAgICAgICBzZXNzaW9uLgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzb3VwTmV0d29ya1Nlc3Npb24pOiBSZXR1cm4gdGhlCisgICAg
ICAgIFNvdXBOZXR3b3JrU2Vzc2lvbiBvciB0aGUgZGVmYXVsdCBvbmUuCisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFNvdXBOZXR3b3JrU2Vzc2lvbik6IFNldCBh
IG5ldworICAgICAgICBTb3VwTmV0d29ya1Nlc3Npb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXNz
aW9uRnJvbUNvbnRleHQpOiBVc2UgU291cE5ldHdvcmtTZXNzaW9uIHRvIGdldCB0aGUKKyAgICAg
ICAgU291cFNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFs
Ojpzb3VwU2Vzc2lvbik6IFNpbXBseSBjYWxsCisgICAgICAgIHNlc3Npb25Gcm9tQ29udGV4dCgp
LCBzaW5jZSBlbnN1cmVTZXNzaW9uSXNJbml0aWFsaXplZCgpIGlzIG5vCisgICAgICAgIGxvbmdl
ciBuZWVkZWQsIGJlY2F1c2UgdGhlIFNvdXBTZXNzaW9uIGFyZSBub3cgaW5pdGlhbGl6ZWQgaW4g
dGhlCisgICAgICAgIFNvdXBOZXR3b3JrU2Vzc2lvbiBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpkaWRTdGFydFJlcXVlc3QpOiBGdW5jdGlvbiB0byBub3Rp
ZnkgdGhlCisgICAgICAgIFJlc291cmNlSGFuZGxlIHRoYXQgY3VycmVudCByZXF1ZXN0IGhhcyBq
dXN0IHN0YXJ0ZWQgZm9yIHdlYiB0aW1pbmcuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c291
cExvZ1ByaW50ZXIpOiBMb2dnZXIgY2FsbGJhY2suCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0
d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKTogUmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAg
IHRvIHRoZSBkZWZhdWx0IFNvdXBOZXR3b3JrU2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNv
dXBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAg
IENyZWF0ZSBhIG5ldyBwcml2YXRlIHNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0
d29ya1Nlc3Npb246OmNyZWF0ZVRlc3RpbmdTZXNzaW9uKTogQ3JlYXRlIGEgbmV3CisgICAgICAg
IHRlc3Rpbmcgc2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6
Y3JlYXRlRm9yU291cFNlc3Npb24pOiBDcmVhdGUgYSBuZXcKKyAgICAgICAgU291cE5ldHdvcmtT
ZXNzaW9uIGZvciB0aGUgZ2l2ZW4gU291cFNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjphdXRo
ZW50aWNhdGVDYWxsYmFjayk6IENhbGxiYWNrIGVtaXR0ZWQgYnkgdGhlCisgICAgICAgIFNvdXBT
ZXNzaW9uIHdoZW4gdGhlIHJlcXVlc3QgbmVlZHMgYXV0aGVudGljYXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpyZXF1ZXN0U3RhcnRlZENhbGxiYWNrKTogQ2FsbGJhY2sgZW1pdHRlZCBieSB0aGUK
KyAgICAgICAgU291cFNlc3Npb24gd2hlbiBhcyByZXF1ZXN0IGhhcyBqdXN0IHN0YXJ0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OlNvdXBOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246On5Tb3VwTmV0d29ya1Nlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpzZXR1cExvZ2dlcik6
IEhlbHBlciBwcml2YXRlCisgICAgICAgIGZ1bmN0aW9uIHRvIHNldHVwIHRoZSBsb2dnZXIuCisg
ICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OnNldENvb2tpZUphcik6IFNldCBh
IG5ldyBDb29raWVKYXIKKyAgICAgICAgaW4gdGhlIHNlc3Npb24gcmVwbGFjaW5nIHRoZSBleGlz
dGluZyBvbmUuCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmNvb2tpZUph
cik6IFJldHVybiB0aGUgY3VycmVudAorICAgICAgICBDb29raWVKYXIgb2YgdGhlIHNlc3Npb24u
CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OnNldENhY2hlKTogU2V0IGEg
ZGlzayBjYWNoZS4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2FjaGUp
OiBSZXR1cm4gdGhlIGN1cnJlbnQgZGlzayBjYWNoZS4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXBO
ZXR3b3JrU2Vzc2lvbjo6c2V0U1NMUG9saWN5KTogU2V0IHRoZSBTU0wgcG9saWN5LgorICAgICAg
ICAoV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpzc2xQb2xpY3kpOiBHZXQgdGhlIGN1cnJl
bnQgU1NMIHBvbGljeS4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0
SFRUUFByb3h5KTogU2V0IHRoZSBIVFRQIHByb3h5LgorICAgICAgICAoV2ViQ29yZTo6U291cE5l
dHdvcmtTZXNzaW9uOjpodHRwUHJveHkpOiBHZXQgdGhlIGN1cnJlbnQgSFRUUCBwcm94eS4KKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0dXBIVFRQUHJveHlGcm9tRW52
aXJvbm1lbnQpOiBTZXQKKyAgICAgICAgdGhlIEhUVFAgcHJveHkgdXNpbmcgdGhlIGVudmlyb25t
ZW50IHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQWNjZXB0TGFuZ3VhZ2VzKTog
SGVscGVyIGZ1bmN0aW9uIGJ1aWxkIHRoZSBhY2NlcHQKKyAgICAgICAgbGFuZ3VhZ2Ugc3RyaW5n
IGluIHRoZSBmb3JtYXQgZXhwZWN0ZWQgYnkgc291cCAoUkZDIDI2MTYpLgorICAgICAgICAoV2Vi
Q29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpzZXRBY2NlcHRMYW5ndWFnZXMpOiBTZXQgdGhlIGFj
Y2VwdAorICAgICAgICBsYW5ndWFnZSBmb3IgdGhlIGdpdmVuIGxpc3Qgb2YgbGFuZ3VhZ2VzLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OnNvdXBTZXNzaW9uKTog
UmV0dXJuIHRoZSBTb3VwU2Vzc2lvbi4KKwogMjAxNC0wMS0wOSAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSAubXAzIG1lZGlhIGRvY3VtZW50IGNvbnRy
b2xzIG1pc3NpbmcgdGhlaXIgYmFja2dyb3VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
aW5kZXggOTY5Njc1OC4uNTZiY2Y0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC01NDY0LDcgKzU0NjQsNiBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmggXAotCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUluZm8uaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iU3RvcmFnZURhdGEuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5oIFwKQEAgLTU0ODYsNiAr
NTQ4NSw3IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlU291cC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0
aWZpY2F0ZUluZm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nl
cnRpZmljYXRlSW5mby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Db29raWVKYXJTb3VwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0Nvb2tpZUphclNvdXAuaCBcCkBAIC01NDk4LDYgKzU0OTgsOCBAQCB3ZWJjb3JlX3BsYXRm
b3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50U291
cC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDUwZTcyZDAuLjcxMDVlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC0xNjYsNiArMTY2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCiAgICAgcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcAorICAgIHBsYXRmb3JtL25ldHdv
cmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvdXBVUklVdGlscy5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU3luY2hyb25vdXNM
b2FkZXJDbGllbnRTb3VwLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGQwOWU2
OWMuLmMwZWU2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMjMsNiArMTIzLDcg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJl
YW1IYW5kbGVTb3VwLmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nl
c3Npb24uY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGlscy5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU3luY2hyb25vdXNMb2FkZXJDbGllbnRTb3VwLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaAppbmRleCA1NmEwYTU5Li5iYjZmYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAg
LTMyLDE1ICszMiwxMiBAQAogI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkxTdG9yYWdlU2Vzc2lvbiogQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZjsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqICBDRkhU
VFBDb29raWVTdG9yYWdlUmVmOwotI2VsaWYgVVNFKFNPVVApCi0jaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1JlZlB0ci5oPgotdHlwZWRlZiBzdHJ1Y3QgX1NvdXBDb29raWVKYXIgU291cENvb2tpZUph
cjsKLXR5cGVkZWYgc3RydWN0IF9Tb3VwU2Vzc2lvbiBTb3VwU2Vzc2lvbjsKICNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OworY2xhc3MgU291
cE5ldHdvcmtTZXNzaW9uOwogCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtNjAsOSArNTcsMTAgQEAgcHVibGljOgogICAgIENGVVJMU3RvcmFnZVNl
c3Npb25SZWYgcGxhdGZvcm1TZXNzaW9uKCkgeyByZXR1cm4gbV9wbGF0Zm9ybVNlc3Npb24uZ2V0
KCk7IH0KICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFn
ZSgpIGNvbnN0OwogI2VsaWYgVVNFKFNPVVApCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFNv
dXBTZXNzaW9uKik7Ci0gICAgdm9pZCBzZXRTb3VwU2Vzc2lvbihTb3VwU2Vzc2lvbiogc2Vzc2lv
bikgeyBtX3Nlc3Npb24gPSBzZXNzaW9uOyB9Ci0gICAgU291cFNlc3Npb24qIHNvdXBTZXNzaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CisgICAgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+KTsKKyAgICB+TmV0d29y
a1N0b3JhZ2VTZXNzaW9uKCk7CisgICAgU291cE5ldHdvcmtTZXNzaW9uJiBzb3VwTmV0d29ya1Nl
c3Npb24oKSBjb25zdDsKKyAgICB2b2lkIHNldFNvdXBOZXR3b3JrU2Vzc2lvbihzdGQ6OnVuaXF1
ZV9wdHI8U291cE5ldHdvcmtTZXNzaW9uPik7CiAjZWxzZQogICAgIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbihOZXR3b3JraW5nQ29udGV4dCopOwogICAgIH5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsK
QEAgLTc0LDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsK
ICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gbV9wbGF0Zm9ybVNlc3Npb247
CiAjZWxpZiBVU0UoU09VUCkKLSAgICBHUmVmUHRyPFNvdXBTZXNzaW9uPiBtX3Nlc3Npb247Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lvbj4gbV9zZXNzaW9uOwogI2Vsc2UK
ICAgICBSZWZQdHI8TmV0d29ya2luZ0NvbnRleHQ+IG1fY29udGV4dDsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IDIx
OWU0N2UuLjRmOGVmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmgKQEAgLTE4MCw5ICsxODAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBj
YW5jZWxsZWRPckNsaWVudGxlc3MoKTsKICAgICB2b2lkIGVuc3VyZVJlYWRCdWZmZXIoKTsKICAg
ICBzaXplX3QgY3VycmVudFN0cmVhbVBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgc3RhdGljIFNvdXBT
ZXNzaW9uKiBkZWZhdWx0U2Vzc2lvbigpOwotICAgIHN0YXRpYyBTb3VwU2Vzc2lvbiogY3JlYXRl
VGVzdGluZ1Nlc3Npb24oKTsKLSAgICBzdGF0aWMgU291cFNlc3Npb24qIGNyZWF0ZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKTsKKyAgICB2b2lkIGRpZFN0YXJ0UmVxdWVzdCgpOwogICAgIHN0YXRp
YyB1aW50NjRfdCBnZXRTb3VwUmVxdWVzdEluaXRpYXRpbmdQYWdlSUQoU291cFJlcXVlc3QqKTsK
ICAgICBzdGF0aWMgdm9pZCBzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBT
dHJpbmcmKTsKICAgICBzdGF0aWMgdm9pZCBzZXRDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJp
bmcmIGhvc3QsIEdUbHNDZXJ0aWZpY2F0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCmluZGV4IGRkNWRiZDUuLjE1
ZmQ3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9D
b29raWVKYXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvQ29va2llSmFyU291cC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29va2ll
SmFyLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJTb3VwTmV0d29y
a1Nlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0zNCw4ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIFNvdXBDb29raWVKYXIqIGNvb2tpZUphckZvclNlc3Npb24oY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIEFTU0VSVChzZXNzaW9uLnNvdXBT
ZXNzaW9uKCkpOwotICAgIHJldHVybiBTT1VQX0NPT0tJRV9KQVIoc291cF9zZXNzaW9uX2dldF9m
ZWF0dXJlKHNlc3Npb24uc291cFNlc3Npb24oKSwgU09VUF9UWVBFX0NPT0tJRV9KQVIpKTsKKyAg
ICByZXR1cm4gc2Vzc2lvbi5zb3VwTmV0d29ya1Nlc3Npb24oKS5jb29raWVKYXIoKTsKIH0KIAog
c3RhdGljIEdSZWZQdHI8U291cENvb2tpZUphcj4mIGRlZmF1bHRDb29raWVKYXIoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCmluZGV4IGJh
YmEyMDQuLjJlYWI5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvRE5TU291cC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJETlNSZXNvbHZl
UXVldWUuaCIKIAogI2luY2x1ZGUgIkdPd25QdHJTb3VwLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlIDxsaWJz
b3VwL3NvdXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBETlNSZXNvbHZlUXVldWU6OnBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKLSAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKFJlc291cmNlSGFu
ZGxlOjpkZWZhdWx0U2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCAwLCByZXNvbHZl
ZENhbGxiYWNrLCAwKTsKKyAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKFNvdXBOZXR3b3Jr
U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCku
ZGF0YSgpLCBudWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKIH0KIAogdm9pZCBw
cmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCmluZGV4IDc0ZDEwOGEuLjY3ZjE5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cC5jcHAKQEAgLTI4LDE3ICsyOCwyMiBAQAogI2luY2x1ZGUgIk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oIgogCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRl
ICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKFNvdXBTZXNzaW9uKiBz
ZXNzaW9uKQotICAgIDogbV9zZXNzaW9uKGFkb3B0R1JlZihzZXNzaW9uKSkKK05ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0
d29ya1Nlc3Npb24+IHNlc3Npb24pCisgICAgOiBtX3Nlc3Npb24oc3RkOjptb3ZlKHNlc3Npb24p
KQogICAgICwgbV9pc1ByaXZhdGUoZmFsc2UpCiB7CiB9CiAKK05ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6fk5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpCit7Cit9CisKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgZGVmYXVsdFNlc3Npb24oKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CkBAIC00OSwyMCArNTQsMzAgQEAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBkZWZhdWx0U2Vzc2lvbigpCiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCkKIHsKICAgICBpZiAoIWRlZmF1bHRTZXNzaW9uKCkpCi0gICAgICAgIGRlZmF1bHRTZXNzaW9u
KCkgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUmVzb3VyY2VIYW5k
bGU6OmRlZmF1bHRTZXNzaW9uKCkpOworICAgICAgICBkZWZhdWx0U2Vzc2lvbigpID0gc3RkOjpt
YWtlX3VuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KG51bGxwdHIpOwogICAgIHJldHVybiAq
ZGVmYXVsdFNlc3Npb24oKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgYXV0byBzZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxO
ZXR3b3JrU3RvcmFnZVNlc3Npb24+KFJlc291cmNlSGFuZGxlOjpjcmVhdGVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCkpOworICAgIGF1dG8gc2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPihTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKSk7CiAgICAgc2Vzc2lvbi0+bV9pc1ByaXZhdGUgPSB0cnVlOwogICAgIHJldHVy
biBzZXNzaW9uOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdU
ZXN0aW5nU2Vzc2lvbigpCiB7Ci0gICAgZGVmYXVsdFNlc3Npb24oKSA9IHN0ZDo6bWFrZV91bmlx
dWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlVGVzdGluZ1Nl
c3Npb24oKSk7CisgICAgZGVmYXVsdFNlc3Npb24oKSA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPihTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVRlc3RpbmdTZXNzaW9u
KCkpOworfQorCitTb3VwTmV0d29ya1Nlc3Npb24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c291
cE5ldHdvcmtTZXNzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZXNzaW9uID8gKm1fc2Vz
c2lvbiA6IFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKTsKK30KKwordm9pZCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFNvdXBOZXR3b3JrU2Vzc2lvbihzdGQ6OnVuaXF1ZV9w
dHI8U291cE5ldHdvcmtTZXNzaW9uPiBzZXNzaW9uKQoreworICAgIG1fc2Vzc2lvbiA9IHN0ZDo6
bW92ZShzZXNzaW9uKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCAwN2E1M2Ey
Li40YzcwNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2lu
Y2x1ZGUgIkdPd25QdHJTb3VwLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRl
ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC00NCw2ICs0Myw3IEBACiAjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNp
bmNsdWRlICJTb3VwVVJJVXRpbHMuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNs
dWRlIDxlcnJuby5oPgpAQCAtNzIsMTUgKzcyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1pbmxpbmUgc3RhdGljIHZvaWQgc291cExvZ1ByaW50ZXIoU291cExvZ2dlciosIFNvdXBMb2dn
ZXJMb2dMZXZlbCwgY2hhciBkaXJlY3Rpb24sIGNvbnN0IGNoYXIqIGRhdGEsIGdwb2ludGVyKQot
ewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShkaXJlY3Rpb24pOwotICAgIFVO
VVNFRF9QQVJBTShkYXRhKTsKLSNlbmRpZgotICAgIExPRyhOZXR3b3JrLCAiJWMgJXMiLCBkaXJl
Y3Rpb24sIGRhdGEpOwotfQotCiBzdGF0aWMgYm9vbCBsb2FkaW5nU3luY2hyb25vdXNSZXF1ZXN0
ID0gZmFsc2U7CiBzdGF0aWMgY29uc3Qgc2l6ZV90IGdEZWZhdWx0UmVhZEJ1ZmZlclNpemUgPSA4
MTkyOwogCkBAIC0yNjAsOCArMjUxLDggQEAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291
cmNlSGFuZGxlSW50ZXJuYWwoKQogc3RhdGljIFNvdXBTZXNzaW9uKiBzZXNzaW9uRnJvbUNvbnRl
eHQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKCFjb250ZXh0IHx8ICFj
b250ZXh0LT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBSZXNvdXJjZUhhbmRsZTo6ZGVmYXVs
dFNlc3Npb24oKTsKLSAgICByZXR1cm4gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5zb3VwU2Vz
c2lvbigpOworICAgICAgICByZXR1cm4gU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lv
bigpLnNvdXBTZXNzaW9uKCk7CisgICAgcmV0dXJuIGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCku
c291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKTsKIH0KIAogUmVzb3VyY2VIYW5kbGU6
On5SZXNvdXJjZUhhbmRsZSgpCkBAIC0yNjksMzYgKzI2MCw5IEBAIFJlc291cmNlSGFuZGxlOjp+
UmVzb3VyY2VIYW5kbGUoKQogICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbih0aGlzLCB0
cnVlKTsKIH0KIAotc3RhdGljIHZvaWQgZW5zdXJlU2Vzc2lvbklzSW5pdGlhbGl6ZWQoU291cFNl
c3Npb24qIHNlc3Npb24pCi17Ci0gICAgaWYgKGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNl
c3Npb24pLCAid2Via2l0LWluaXQiKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHNlc3Np
b24gPT0gUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCkpIHsKLSAgICAgICAgU291cENv
b2tpZUphciogamFyID0gU09VUF9DT09LSUVfSkFSKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShz
ZXNzaW9uLCBTT1VQX1RZUEVfQ09PS0lFX0pBUikpOwotICAgICAgICBpZiAoIWphcikKLSAgICAg
ICAgICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1NFU1NJT05fRkVB
VFVSRShzb3VwQ29va2llSmFyKCkpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc2V0U291
cENvb2tpZUphcihqYXIpOwotICAgIH0KLQotI2lmICFMT0dfRElTQUJMRUQKLSAgICBpZiAoIXNv
dXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1RZUEVfTE9HR0VSKSAmJiBMb2dO
ZXR3b3JrLnN0YXRlID09IFdURkxvZ0NoYW5uZWxPbikgewotICAgICAgICBTb3VwTG9nZ2VyKiBs
b2dnZXIgPSBzb3VwX2xvZ2dlcl9uZXcoc3RhdGljX2Nhc3Q8U291cExvZ2dlckxvZ0xldmVsPihT
T1VQX0xPR0dFUl9MT0dfQk9EWSksIC0xKTsKLSAgICAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0
dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFUVVJFKGxvZ2dlcikpOwotICAgICAgICBzb3Vw
X2xvZ2dlcl9zZXRfcHJpbnRlcihsb2dnZXIsIHNvdXBMb2dQcmludGVyLCAwLCAwKTsKLSAgICAg
ICAgZ19vYmplY3RfdW5yZWYobG9nZ2VyKTsKLSAgICB9Ci0jZW5kaWYgLy8gIUxPR19ESVNBQkxF
RAotCi0gICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1Qoc2Vzc2lvbiksICJ3ZWJraXQtaW5p
dCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4ZGVhZGJlZWYpKTsKLX0KLQogU291cFNlc3Np
b24qIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OnNvdXBTZXNzaW9uKCkKIHsKLSAgICBTb3VwU2Vz
c2lvbiogc2Vzc2lvbiA9IHNlc3Npb25Gcm9tQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAg
IGVuc3VyZVNlc3Npb25Jc0luaXRpYWxpemVkKHNlc3Npb24pOwotICAgIHJldHVybiBzZXNzaW9u
OworICAgIHJldHVybiBzZXNzaW9uRnJvbUNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKIH0KIAog
Ym9vbCBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsbGVkT3JDbGllbnRsZXNzKCkKQEAgLTg3OSwxMyAr
ODQzLDkgQEAgc3RhdGljIHZvaWQgd3JvdGVCb2R5Q2FsbGJhY2soU291cE1lc3NhZ2UqLCBncG9p
bnRlciBkYXRhKQogICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCktPnNlbmRF
bmQgPSBtaWxpc2Vjb25kc1NpbmNlUmVxdWVzdChkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRp
bWluZygpLT5yZXF1ZXN0VGltZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlcXVlc3RTdGFydGVkQ2Fs
bGJhY2soU291cFNlc3Npb24qLCBTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIFNvdXBTb2NrZXQq
LCBncG9pbnRlcikKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFN0YXJ0UmVxdWVzdCgpCiB7Ci0g
ICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhh
bmRsZSo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhhbmRsZSIp
KTsKLSAgICBpZiAoIWhhbmRsZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKKyAgICBSZXNvdXJjZUhhbmRs
ZUludGVybmFsKiBkID0gZ2V0SW50ZXJuYWwoKTsKICAgICBpZiAoIWQtPm1fcmVzcG9uc2UucmVz
b3VyY2VMb2FkVGltaW5nKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTQzMSw2MiArMTM5MSw2
IEBAIHN0YXRpYyBnYm9vbGVhbiByZXF1ZXN0VGltZW91dENhbGxiYWNrKGdwb2ludGVyIGRhdGEp
CiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgdm9pZCBhdXRoZW50aWNhdGVDYWxsYmFj
ayhTb3VwU2Vzc2lvbiogc2Vzc2lvbiwgU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBTb3VwQXV0
aCogc291cEF1dGgsIGdib29sZWFuIHJldHJ5aW5nKQotewotICAgIFJlZlB0cjxSZXNvdXJjZUhh
bmRsZT4gaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihnX29iamVjdF9nZXRf
ZGF0YShHX09CSkVDVChzb3VwTWVzc2FnZSksICJoYW5kbGUiKSk7Ci0gICAgaWYgKCFoYW5kbGUp
Ci0gICAgICAgIHJldHVybjsKLSAgICBoYW5kbGUtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShzZXNzaW9uLCBzb3VwTWVzc2FnZSwgc291
cEF1dGgsIHJldHJ5aW5nLCBoYW5kbGUuZ2V0KCkpKTsKLX0KLQotc3RhdGljIFNvdXBTZXNzaW9u
KiBjcmVhdGVTb3VwU2Vzc2lvbigpCi17Ci0gICAgLy8gVmFsdWVzIHRha2VuIGZyb20gaHR0cDov
L3d3dy5icm93c2Vyc2NvcGUub3JnLyAgZm9sbG93aW5nCi0gICAgLy8gdGhlIHJ1bGUgIkRvIFdo
YXQgRXZlcnkgT3RoZXIgTW9kZXJuIEJyb3dzZXIgSXMgRG9pbmciLiBUaGV5IHNlZW0KLSAgICAv
LyB0byBzaWduaWZpY2FudGx5IGltcHJvdmUgcGFnZSBsb2FkaW5nIHRpbWUgY29tcGFyZWQgdG8g
c291cCdzCi0gICAgLy8gZGVmYXVsdCB2YWx1ZXMuCi0gICAgc3RhdGljIGNvbnN0IGludCBtYXhD
b25uZWN0aW9ucyA9IDM1OwotICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4Q29ubmVjdGlvbnNQZXJI
b3N0ID0gNjsKLQotICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gc291cF9zZXNzaW9uX2FzeW5j
X25ldygpOwotICAgIGdfb2JqZWN0X3NldChzZXNzaW9uLAotICAgICAgICBTT1VQX1NFU1NJT05f
TUFYX0NPTk5TLCBtYXhDb25uZWN0aW9ucywKLSAgICAgICAgU09VUF9TRVNTSU9OX01BWF9DT05O
U19QRVJfSE9TVCwgbWF4Q29ubmVjdGlvbnNQZXJIb3N0LAotICAgICAgICBTT1VQX1NFU1NJT05f
QUREX0ZFQVRVUkVfQllfVFlQRSwgU09VUF9UWVBFX0NPTlRFTlRfREVDT0RFUiwKLSAgICAgICAg
U09VUF9TRVNTSU9OX0FERF9GRUFUVVJFX0JZX1RZUEUsIFNPVVBfVFlQRV9DT05URU5UX1NOSUZG
RVIsCi0gICAgICAgIFNPVVBfU0VTU0lPTl9BRERfRkVBVFVSRV9CWV9UWVBFLCBTT1VQX1RZUEVf
UFJPWFlfUkVTT0xWRVJfREVGQVVMVCwKLSAgICAgICAgU09VUF9TRVNTSU9OX1VTRV9USFJFQURf
Q09OVEVYVCwgVFJVRSwKLSAgICAgICAgTlVMTCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChzZXNz
aW9uLCAiYXV0aGVudGljYXRlIiwgR19DQUxMQkFDSyhhdXRoZW50aWNhdGVDYWxsYmFjayksIDAp
OwotCi0jaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgZ19zaWduYWxfY29ubmVjdChzZXNzaW9u
LCAicmVxdWVzdC1zdGFydGVkIiwgR19DQUxMQkFDSyhyZXF1ZXN0U3RhcnRlZENhbGxiYWNrKSwg
MCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBzZXNzaW9uOwotfQotCi1Tb3VwU2Vzc2lvbiogUmVz
b3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCkKLXsKLSAgICBzdGF0aWMgU291cFNlc3Npb24q
IHNlc3Npb24gPSBjcmVhdGVTb3VwU2Vzc2lvbigpOwotICAgIHJldHVybiBzZXNzaW9uOwotfQot
Ci1Tb3VwU2Vzc2lvbiogUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZVRlc3RpbmdTZXNzaW9uKCkKLXsK
LSAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IGNyZWF0ZVNvdXBTZXNzaW9uKCk7Ci0gICAgLy8g
VGhlIHRlc3Rpbmcgc2Vzc2lvbiBvcGVyYXRlcyB3aXRoIHRoZSBkZWZhdWx0IGNvb2tpZSBqYXIu
Ci0gICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFU
VVJFKHNvdXBDb29raWVKYXIoKSkpOwotICAgIHJldHVybiBzZXNzaW9uOwotfQotCi1Tb3VwU2Vz
c2lvbiogUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewot
ICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gY3JlYXRlU291cFNlc3Npb24oKTsKLSAgICBzb3Vw
X3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9TRVNTSU9OX0ZFQVRVUkUoY3JlYXRl
UHJpdmF0ZUJyb3dzaW5nQ29va2llSmFyKCkpKTsKLSAgICByZXR1cm4gc2Vzc2lvbjsKLX0KLQog
dWludDY0X3QgUmVzb3VyY2VIYW5kbGU6OmdldFNvdXBSZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJRChT
b3VwUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICB1aW50NjRfdCogaW5pdGlhdGluZ1BhZ2VJRFB0
ciA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Kj4oZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QocmVx
dWVzdCksIGdTb3VwUmVxdWVzdEluaXRpYXRpbmdQYWdlSURLZXkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lv
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ0ODM5NAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0
d29ya1Nlc3Npb24uY3BwCkBAIC0wLDAgKzEsMjc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNv
dXBOZXR3b3JrU2Vzc2lvbi5oIgorCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKKyNpbmNsdWRlICJDb29raWVKYXJTb3VwLmgiCisjaW5jbHVkZSAiR093blB0clNvdXAuaCIK
KyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNs
dWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCisjaWYgUExBVEZPUk0oRUZMKQorI2lu
Y2x1ZGUgIlByb3h5UmVzb2x2ZXJTb3VwLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisjaWYgIUxPR19ESVNBQkxFRAoraW5saW5lIHN0YXRpYyB2b2lkIHNvdXBMb2dQcmludGVy
KFNvdXBMb2dnZXIqLCBTb3VwTG9nZ2VyTG9nTGV2ZWwsIGNoYXIgZGlyZWN0aW9uLCBjb25zdCBj
aGFyKiBkYXRhLCBncG9pbnRlcikKK3sKKyAgICBMT0coTmV0d29yaywgIiVjICVzIiwgZGlyZWN0
aW9uLCBkYXRhKTsKK30KKyNlbmRpZgorCitTb3VwTmV0d29ya1Nlc3Npb24mIFNvdXBOZXR3b3Jr
U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
b3VwTmV0d29ya1Nlc3Npb24+IG5ldHdvcmtTZXNzaW9uKHNvdXBDb29raWVKYXIoKSk7CisgICAg
cmV0dXJuIG5ldHdvcmtTZXNzaW9uOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdvcmtT
ZXNzaW9uPiBTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
KQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdvcmtTZXNzaW9uPihuZXcg
U291cE5ldHdvcmtTZXNzaW9uKHNvdXBDb29raWVKYXIoKSkpOworfQorCitzdGQ6OnVuaXF1ZV9w
dHI8U291cE5ldHdvcmtTZXNzaW9uPiBTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVRlc3RpbmdT
ZXNzaW9uKCkKK3sKKyAgICBHUmVmUHRyPFNvdXBDb29raWVKYXI+IGNvb2tpZUphciA9IGFkb3B0
R1JlZihjcmVhdGVQcml2YXRlQnJvd3NpbmdDb29raWVKYXIoKSk7CisgICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+KG5ldyBTb3VwTmV0d29ya1Nlc3Npb24oY29v
a2llSmFyLmdldCgpKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+
IFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlRm9yU291cFNlc3Npb24oU291cFNlc3Npb24qIHNv
dXBTZXNzaW9uKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdvcmtTZXNz
aW9uPihuZXcgU291cE5ldHdvcmtTZXNzaW9uKHNvdXBTZXNzaW9uKSk7Cit9CisKK3N0YXRpYyB2
b2lkIGF1dGhlbnRpY2F0ZUNhbGxiYWNrKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2Fn
ZSogc291cE1lc3NhZ2UsIFNvdXBBdXRoKiBzb3VwQXV0aCwgZ2Jvb2xlYW4gcmV0cnlpbmcpCit7
CisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJj
ZUhhbmRsZSo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhhbmRs
ZSIpKTsKKyAgICBpZiAoIWhhbmRsZSkKKyAgICAgICAgcmV0dXJuOworICAgIGhhbmRsZS0+ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHNl
c3Npb24sIHNvdXBNZXNzYWdlLCBzb3VwQXV0aCwgcmV0cnlpbmcsIGhhbmRsZS5nZXQoKSkpOwor
fQorCitzdGF0aWMgdm9pZCByZXF1ZXN0U3RhcnRlZENhbGxiYWNrKFNvdXBTZXNzaW9uKiwgU291
cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBTb3VwU29ja2V0KiwgZ3BvaW50ZXIpCit7CisgICAgUmVm
UHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+
KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhhbmRsZSIpKTsKKyAg
ICBpZiAoIWhhbmRsZSkKKyAgICAgICAgcmV0dXJuOworICAgIGhhbmRsZS0+ZGlkU3RhcnRSZXF1
ZXN0KCk7Cit9CisKK1NvdXBOZXR3b3JrU2Vzc2lvbjo6U291cE5ldHdvcmtTZXNzaW9uKFNvdXBD
b29raWVKYXIqIGNvb2tpZUphcikKKyAgICA6IG1fc291cFNlc3Npb24oYWRvcHRHUmVmKHNvdXBf
c2Vzc2lvbl9hc3luY19uZXcoKSkpCit7CisgICAgLy8gVmFsdWVzIHRha2VuIGZyb20gaHR0cDov
L3d3dy5icm93c2Vyc2NvcGUub3JnLyBmb2xsb3dpbmcKKyAgICAvLyB0aGUgcnVsZSAiRG8gV2hh
dCBFdmVyeSBPdGhlciBNb2Rlcm4gQnJvd3NlciBJcyBEb2luZyIuIFRoZXkgc2VlbQorICAgIC8v
IHRvIHNpZ25pZmljYW50bHkgaW1wcm92ZSBwYWdlIGxvYWRpbmcgdGltZSBjb21wYXJlZCB0byBz
b3VwJ3MKKyAgICAvLyBkZWZhdWx0IHZhbHVlcy4KKyAgICBzdGF0aWMgY29uc3QgaW50IG1heENv
bm5lY3Rpb25zID0gMzU7CisgICAgc3RhdGljIGNvbnN0IGludCBtYXhDb25uZWN0aW9uc1Blckhv
c3QgPSA2OworCisgICAgZ19vYmplY3Rfc2V0KG1fc291cFNlc3Npb24uZ2V0KCksCisgICAgICAg
IFNPVVBfU0VTU0lPTl9NQVhfQ09OTlMsIG1heENvbm5lY3Rpb25zLAorICAgICAgICBTT1VQX1NF
U1NJT05fTUFYX0NPTk5TX1BFUl9IT1NULCBtYXhDb25uZWN0aW9uc1Blckhvc3QsCisgICAgICAg
IFNPVVBfU0VTU0lPTl9BRERfRkVBVFVSRV9CWV9UWVBFLCBTT1VQX1RZUEVfQ09OVEVOVF9ERUNP
REVSLAorICAgICAgICBTT1VQX1NFU1NJT05fQUREX0ZFQVRVUkVfQllfVFlQRSwgU09VUF9UWVBF
X0NPTlRFTlRfU05JRkZFUiwKKyAgICAgICAgU09VUF9TRVNTSU9OX0FERF9GRUFUVVJFX0JZX1RZ
UEUsIFNPVVBfVFlQRV9QUk9YWV9SRVNPTFZFUl9ERUZBVUxULAorICAgICAgICBTT1VQX1NFU1NJ
T05fQUREX0ZFQVRVUkUsIGNvb2tpZUphciwKKyAgICAgICAgU09VUF9TRVNTSU9OX1VTRV9USFJF
QURfQ09OVEVYVCwgVFJVRSwKKyAgICAgICAgbnVsbHB0cik7CisKKyAgICBzZXR1cExvZ2dlcigp
OworCisgICAgZ19zaWduYWxfY29ubmVjdChtX3NvdXBTZXNzaW9uLmdldCgpLCAiYXV0aGVudGlj
YXRlIiwgR19DQUxMQkFDSyhhdXRoZW50aWNhdGVDYWxsYmFjayksIG51bGxwdHIpOworI2lmIEVO
QUJMRShXRUJfVElNSU5HKQorICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9zb3VwU2Vzc2lvbi5nZXQo
KSwgInJlcXVlc3Qtc3RhcnRlZCIsIEdfQ0FMTEJBQ0socmVxdWVzdFN0YXJ0ZWRDYWxsYmFjayks
IG51bGxwdHIpOworI2VuZGlmCit9CisKK1NvdXBOZXR3b3JrU2Vzc2lvbjo6U291cE5ldHdvcmtT
ZXNzaW9uKFNvdXBTZXNzaW9uKiBzb3VwU2Vzc2lvbikKKyAgICA6IG1fc291cFNlc3Npb24oc291
cFNlc3Npb24pCit7CisgICAgc2V0dXBMb2dnZXIoKTsKK30KKworU291cE5ldHdvcmtTZXNzaW9u
Ojp+U291cE5ldHdvcmtTZXNzaW9uKCkKK3sKK30KKwordm9pZCBTb3VwTmV0d29ya1Nlc3Npb246
OnNldHVwTG9nZ2VyKCkKK3sKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgaWYgKExvZ05ldHdvcmsu
c3RhdGUgIT0gV1RGTG9nQ2hhbm5lbE9uIHx8IHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShtX3Nv
dXBTZXNzaW9uLmdldCgpLCBTT1VQX1RZUEVfTE9HR0VSKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgR1JlZlB0cjxTb3VwTG9nZ2VyPiBsb2dnZXIgPSBhZG9wdEdSZWYoc291cF9sb2dnZXJfbmV3
KFNPVVBfTE9HR0VSX0xPR19CT0RZLCAtMSkpOworICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVy
ZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1NFU1NJT05fRkVBVFVSRShsb2dnZXIuZ2V0KCkp
KTsKKyAgICBzb3VwX2xvZ2dlcl9zZXRfcHJpbnRlcihsb2dnZXIuZ2V0KCksIHNvdXBMb2dQcmlu
dGVyLCBudWxscHRyLCBudWxscHRyKTsKKyNlbmRpZgorfQorCit2b2lkIFNvdXBOZXR3b3JrU2Vz
c2lvbjo6c2V0Q29va2llSmFyKFNvdXBDb29raWVKYXIqIGphcikKK3sKKyAgICBpZiAoU291cENv
b2tpZUphciogY3VycmVudEphciA9IGNvb2tpZUphcigpKQorICAgICAgICBzb3VwX3Nlc3Npb25f
cmVtb3ZlX2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9TRVNTSU9OX0ZFQVRVUkUo
Y3VycmVudEphcikpOworICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShtX3NvdXBTZXNzaW9u
LmdldCgpLCBTT1VQX1NFU1NJT05fRkVBVFVSRShqYXIpKTsKK30KKworU291cENvb2tpZUphciog
U291cE5ldHdvcmtTZXNzaW9uOjpjb29raWVKYXIoKSBjb25zdAoreworICAgIHJldHVybiBTT1VQ
X0NPT0tJRV9KQVIoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCks
IFNPVVBfVFlQRV9DT09LSUVfSkFSKSk7Cit9CisKK3ZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpz
ZXRDYWNoZShTb3VwQ2FjaGUqIGNhY2hlKQoreworICAgIEFTU0VSVCghc291cF9zZXNzaW9uX2dl
dF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9DQUNIRSkpOworICAgIHNv
dXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1NFU1NJT05f
RkVBVFVSRShjYWNoZSkpOworfQorCitTb3VwQ2FjaGUqIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2Fj
aGUoKSBjb25zdAoreworICAgIFNvdXBTZXNzaW9uRmVhdHVyZSogc291cENhY2hlID0gc291cF9z
ZXNzaW9uX2dldF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9DQUNIRSk7
CisgICAgcmV0dXJuIHNvdXBDYWNoZSA/IFNPVVBfQ0FDSEUoc291cENhY2hlKSA6IG51bGxwdHI7
Cit9CisKK3ZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpzZXRTU0xQb2xpY3koU1NMUG9saWN5IGZs
YWdzKQoreworICAgIGdfb2JqZWN0X3NldChtX3NvdXBTZXNzaW9uLmdldCgpLAorICAgICAgICBT
T1VQX1NFU1NJT05fU1NMX1VTRV9TWVNURU1fQ0FfRklMRSwgZmxhZ3MgJiBTU0xVc2VTeXN0ZW1D
QUZpbGUgPyBUUlVFIDogRkFMU0UsCisgICAgICAgIFNPVVBfU0VTU0lPTl9TU0xfU1RSSUNULCBm
bGFncyAmIFNTTFN0cmljdCA/IFRSVUUgOiBGQUxTRSwKKyAgICAgICAgbnVsbHB0cik7Cit9CisK
K1NvdXBOZXR3b3JrU2Vzc2lvbjo6U1NMUG9saWN5IFNvdXBOZXR3b3JrU2Vzc2lvbjo6c3NsUG9s
aWN5KCkgY29uc3QKK3sKKyAgICBnYm9vbGVhbiB1c2VTeXN0ZW1DQUZpbGUsIHN0cmljdDsKKyAg
ICBnX29iamVjdF9nZXQobV9zb3VwU2Vzc2lvbi5nZXQoKSwKKyAgICAgICAgU09VUF9TRVNTSU9O
X1NTTF9VU0VfU1lTVEVNX0NBX0ZJTEUsICZ1c2VTeXN0ZW1DQUZpbGUsCisgICAgICAgIFNPVVBf
U0VTU0lPTl9TU0xfU1RSSUNULCAmc3RyaWN0LAorICAgICAgICBudWxscHRyKTsKKworICAgIFNT
TFBvbGljeSBmbGFncyA9IDA7CisgICAgaWYgKHVzZVN5c3RlbUNBRmlsZSkKKyAgICAgICAgZmxh
Z3MgfD0gU1NMVXNlU3lzdGVtQ0FGaWxlOworICAgIGlmIChzdHJpY3QpCisgICAgICAgIGZsYWdz
IHw9IFNTTFN0cmljdDsKKyAgICByZXR1cm4gZmxhZ3M7Cit9CisKK3ZvaWQgU291cE5ldHdvcmtT
ZXNzaW9uOjpzZXRIVFRQUHJveHkoY29uc3QgY2hhciogaHR0cFByb3h5LCBjb25zdCBjaGFyKiBo
dHRwUHJveHlFeGNlcHRpb25zKQoreworI2lmIFBMQVRGT1JNKEVGTCkKKyAgICAvLyBPbmx5IGZv
ciBFRkwgYmVjYXVzZSBHVEsgcG9ydCB1c2VzIHRoZSBkZWZhdWx0IHJlc29sdmVyLCB3aGljaCB1
c2VzIEdJTydzIHByb3h5IHJlc29sdmVyLgorICAgIGlmICghaHR0cFByb3h5KSB7CisgICAgICAg
IHNvdXBfc2Vzc2lvbl9yZW1vdmVfZmVhdHVyZV9ieV90eXBlKG1fc291cFNlc3Npb24uZ2V0KCks
IFNPVVBfVFlQRV9QUk9YWV9VUklfUkVTT0xWRVIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgR1JlZlB0cjxTb3VwUHJveHlVUklSZXNvbHZlcj4gcmVzb2x2ZXIgPSBhZG9wdEdSZWYo
c291cFByb3h5UmVzb2x2ZXJXa05ldyhodHRwUHJveHksIGh0dHBQcm94eUV4Y2VwdGlvbnMpKTsK
KyAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9T
RVNTSU9OX0ZFQVRVUkUocmVzb2x2ZXIuZ2V0KCkpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KGh0dHBQcm94eSk7CisgICAgVU5VU0VEX1BBUkFNKGh0dHBQcm94eUV4Y2VwdGlvbnMpOworI2Vu
ZGlmCit9CisKK2NoYXIqIFNvdXBOZXR3b3JrU2Vzc2lvbjo6aHR0cFByb3h5KCkgY29uc3QKK3sK
KyNpZiBQTEFURk9STShFRkwpCisgICAgU291cFNlc3Npb25GZWF0dXJlKiBzb3VwUmVzb2x2ZXIg
PSBzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9UWVBF
X1BST1hZX1VSSV9SRVNPTFZFUik7CisgICAgaWYgKCFzb3VwUmVzb2x2ZXIpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgR093blB0cjxTb3VwVVJJPiB1cmk7CisgICAgZ19vYmplY3Rf
Z2V0KHNvdXBSZXNvbHZlciwgU09VUF9QUk9YWV9SRVNPTFZFUl9XS19QUk9YWV9VUkksICZ1cmku
b3V0UHRyKCksIG51bGxwdHIpOworCisgICAgcmV0dXJuIHVyaSA/IHNvdXBfdXJpX3RvX3N0cmlu
Zyh1cmkuZ2V0KCksIEZBTFNFKSA6IG51bGxwdHI7CisjZWxzZQorICAgIHJldHVybiBudWxscHRy
OworI2VuZGlmCit9CisKK3ZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpzZXR1cEhUVFBQcm94eUZy
b21FbnZpcm9ubWVudCgpCit7CisjaWYgUExBVEZPUk0oRUZMKQorICAgIGNvbnN0IGNoYXIqIGh0
dHBQcm94eSA9IGdldGVudigiaHR0cF9wcm94eSIpOworICAgIGlmICghaHR0cFByb3h5KQorICAg
ICAgICByZXR1cm47CisKKyAgICBzZXRIVFRQUHJveHkoaHR0cFByb3h5LCBnZXRlbnYoIm5vX3By
b3h5IikpOworI2VuZGlmCit9CisKK3N0YXRpYyBDU3RyaW5nIGJ1aWxkQWNjZXB0TGFuZ3VhZ2Vz
KFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcykKK3sKKyAgICAvLyBJZ25vcmUgIkMiIGxvY2FsZS4K
KyAgICBzaXplX3QgcG9zaXRpb24gPSBsYW5ndWFnZXMuZmluZCgiYyIpOworICAgIGlmIChwb3Np
dGlvbiAhPSBub3RGb3VuZCkKKyAgICAgICAgbGFuZ3VhZ2VzLnJlbW92ZShwb3NpdGlvbik7CisK
KyAgICAvLyBGYWxsYmFjayB0byAiZW4iIGlmIHRoZSBsaXN0IGlzIGVtcHR5LgorICAgIGlmIChs
YW5ndWFnZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gImVuIjsKKworICAgIC8vIENhbGN1
bGF0ZSBkZWx0YXMgZm9yIHRoZSBxdWFsaXR5IHZhbHVlcy4KKyAgICBpbnQgZGVsdGE7CisgICAg
aWYgKGxhbmd1YWdlcy5zaXplKCkgPCAxMCkKKyAgICAgICAgZGVsdGEgPSAxMDsKKyAgICBlbHNl
IGlmIChsYW5ndWFnZXMuc2l6ZSgpIDwgMjApCisgICAgICAgIGRlbHRhID0gNTsKKyAgICBlbHNl
CisgICAgICAgIGRlbHRhID0gMTsKKworICAgIC8vIFNldCBxdWFsaXR5IHZhbHVlcyBmb3IgZWFj
aCBsYW5ndWFnZS4KKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsYW5ndWFnZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGkpCisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKKworICAgICAgICBidWlsZGVyLmFwcGVuZChs
YW5ndWFnZXNbaV0pOworCisgICAgICAgIGludCBxdWFsaXR5ID0gMTAwIC0gaSAqIGRlbHRhOwor
ICAgICAgICBpZiAocXVhbGl0eSA+IDAgJiYgcXVhbGl0eSA8IDEwMCkgeworICAgICAgICAgICAg
Y2hhciBidWZmZXJbOF07CisgICAgICAgICAgICBnX2FzY2lpX2Zvcm1hdGQoYnVmZmVyLCA4LCAi
JS4yZiIsIHF1YWxpdHkgLyAxMDAuMCk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJp
bmc6OmZvcm1hdCgiO3E9JXMiLCBidWZmZXIpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOworfQorCit2b2lkIFNvdXBOZXR3b3JrU2Vz
c2lvbjo6c2V0QWNjZXB0TGFuZ3VhZ2VzKFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcykKK3sKKyAg
ICBnX29iamVjdF9zZXQobV9zb3VwU2Vzc2lvbi5nZXQoKSwgImFjY2VwdC1sYW5ndWFnZSIsIGJ1
aWxkQWNjZXB0TGFuZ3VhZ2VzKGxhbmd1YWdlcykuZGF0YSgpLCBudWxscHRyKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMTc5ZDIyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaApAQCAtMCwwICsx
LDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBTb3VwTmV0d29ya1Nlc3Npb25faAorI2RlZmluZSBTb3VwTmV0d29ya1Nlc3Npb25faAor
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwordHlwZWRlZiBzdHJ1
Y3QgX1NvdXBDYWNoZSBTb3VwQ2FjaGU7Cit0eXBlZGVmIHN0cnVjdCBfU291cENvb2tpZUphciBT
b3VwQ29va2llSmFyOwordHlwZWRlZiBzdHJ1Y3QgX1NvdXBTZXNzaW9uIFNvdXBTZXNzaW9uOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNvdXBOZXR3b3JrU2Vzc2lvbiB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU291cE5ldHdvcmtTZXNzaW9uKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFNvdXBOZXR3b3JrU2Vz
c2lvbj47CitwdWJsaWM6CisgICAgflNvdXBOZXR3b3JrU2Vzc2lvbigpOworCisgICAgc3RhdGlj
IFNvdXBOZXR3b3JrU2Vzc2lvbiYgZGVmYXVsdFNlc3Npb24oKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdvcmtTZXNzaW9uPiBjcmVh
dGVUZXN0aW5nU2Vzc2lvbigpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdv
cmtTZXNzaW9uPiBjcmVhdGVGb3JTb3VwU2Vzc2lvbihTb3VwU2Vzc2lvbiopOworCisgICAgZW51
bSBTU0xQb2xpY3lGbGFncyB7CisgICAgICAgIFNTTFN0cmljdCA9IDEgPDwgMCwKKyAgICAgICAg
U1NMVXNlU3lzdGVtQ0FGaWxlID0gMSA8PCAxCisgICAgfTsKKyAgICB0eXBlZGVmIHVuc2lnbmVk
IFNTTFBvbGljeTsKKworICAgIFNvdXBTZXNzaW9uKiBzb3VwU2Vzc2lvbigpIGNvbnN0IHsgcmV0
dXJuIG1fc291cFNlc3Npb24uZ2V0KCk7IH0KKworICAgIHZvaWQgc2V0Q29va2llSmFyKFNvdXBD
b29raWVKYXIqKTsKKyAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIoKSBjb25zdDsKKworICAg
IHZvaWQgc2V0Q2FjaGUoU291cENhY2hlKik7CisgICAgU291cENhY2hlKiBjYWNoZSgpIGNvbnN0
OworCisgICAgdm9pZCBzZXRTU0xQb2xpY3koU1NMUG9saWN5KTsKKyAgICBTU0xQb2xpY3kgc3Ns
UG9saWN5KCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEhUVFBQcm94eShjb25zdCBjaGFyKiBodHRw
UHJveHksIGNvbnN0IGNoYXIqIGh0dHBQcm94eUV4Y2VwdGlvbnMpOworICAgIGNoYXIqIGh0dHBQ
cm94eSgpIGNvbnN0OworICAgIHZvaWQgc2V0dXBIVFRQUHJveHlGcm9tRW52aXJvbm1lbnQoKTsK
KworICAgIHZvaWQgc2V0QWNjZXB0TGFuZ3VhZ2VzKFZlY3RvcjxTdHJpbmc+KTsKKworcHJpdmF0
ZToKKyAgICBTb3VwTmV0d29ya1Nlc3Npb24oU291cENvb2tpZUphciopOworICAgIFNvdXBOZXR3
b3JrU2Vzc2lvbihTb3VwU2Vzc2lvbiopOworCisgICAgdm9pZCBzZXR1cExvZ2dlcigpOworCisg
ICAgR1JlZlB0cjxTb3VwU2Vzc2lvbj4gbV9zb3VwU2Vzc2lvbjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZTliZGJkMC4uMThkZDFh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE0LTAxLTExICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbU09VUF0gQWRk
IFNvdXBOZXR3b3JrU2Vzc2lvbiBjbGFzcyB0byB3cmFwIGEgU291cFNlc3Npb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjgxMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0aGUgbmV3IFNvdXBO
ZXR3b3JrU2Vzc2lvbiBBUEkuCisKKyAgICAgICAgKiBld2svZXdrX2Nvb2tpZXMuY3BwOgorICAg
ICAgICAoZXdrX2Nvb2tpZXNfZmlsZV9zZXQpOgorICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6
CisgICAgICAgIChfZXdrX2luaXRfYm9keSk6CisgICAgICAgICogZXdrL2V3a19uZXR3b3JrLmNw
cDoKKyAgICAgICAgKGV3a19uZXR3b3JrX3Byb3h5X3VyaV9zZXQpOgorICAgICAgICAoZXdrX25l
dHdvcmtfcHJveHlfdXJpX2dldCk6CisgICAgICAgIChld2tfbmV0d29ya190bHNfY2VydGlmaWNh
dGVfY2hlY2tfZ2V0KToKKyAgICAgICAgKGV3a19uZXR3b3JrX3Rsc19jZXJ0aWZpY2F0ZV9jaGVj
a19zZXQpOgorICAgICAgICAoZXdrX25ldHdvcmtfdGxzX2NhX2NlcnRpZmljYXRlc19wYXRoX2dl
dCk6CisgICAgICAgIChld2tfbmV0d29ya190bHNfY2FfY2VydGlmaWNhdGVzX3BhdGhfc2V0KToK
KyAgICAgICAgKGV3a19uZXR3b3JrX2RlZmF1bHRfc291cF9zZXNzaW9uX2dldCk6CisgICAgICAg
ICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X3NvdXBfc2Vzc2lvbl9nZXQp
OgorICAgICAgICAoZXdrX3ZpZXdfc291cF9zZXNzaW9uX3NldCk6CisKIDIwMTQtMDEtMDggIFJ5
dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIE1lcmdl
IGV3a192aWV3X3NpbmdsZSBpbnRvIGV3a192aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2Nvb2tpZXMuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb29r
aWVzLmNwcAppbmRleCBiYmVlOGU0Li42MzNhZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2Nvb2tpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
Y29va2llcy5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKICNpbmNsdWRlICJld2tfY29va2llcy5oIgog
CiAjaW5jbHVkZSAiQ29va2llSmFyU291cC5oIgotI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgi
CisjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSA8RWluYS5oPgogI2lu
Y2x1ZGUgPGVpbmFfc2FmZXR5X2NoZWNrcy5oPgogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTQyLDEz
ICs0Miw5IEBAIEVpbmFfQm9vbCBld2tfY29va2llc19maWxlX3NldChjb25zdCBjaGFyKiBmaWxl
bmFtZSkKIAogICAgIHNvdXBfY29va2llX2phcl9zZXRfYWNjZXB0X3BvbGljeShjb29raWVKYXIs
IFNPVVBfQ09PS0lFX0pBUl9BQ0NFUFRfTk9fVEhJUkRfUEFSVFkpOwogCi0gICAgU291cFNlc3Np
b24qIHNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsK
LSAgICBTb3VwU2Vzc2lvbkZlYXR1cmUqIG9sZGphciA9IHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVy
ZShzZXNzaW9uLCBTT1VQX1RZUEVfQ09PS0lFX0pBUik7Ci0gICAgaWYgKG9sZGphcikKLSAgICAg
ICAgc291cF9zZXNzaW9uX3JlbW92ZV9mZWF0dXJlKHNlc3Npb24sIG9sZGphcik7Ci0KKyAgICBX
ZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc2V0Q29va2llSmFy
KGNvb2tpZUphcik7CiAgICAgV2ViQ29yZTo6c2V0U291cENvb2tpZUphcihjb29raWVKYXIpOwot
ICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1NFU1NJT05fRkVBVFVS
RShjb29raWVKYXIpKTsKKyAgICBnX29iamVjdF91bnJlZihjb29raWVKYXIpOwogCiAgICAgcmV0
dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4u
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcAppbmRleCBkNzE2Nzc3Li45
NTdiZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5o
IgogI2luY2x1ZGUgIlN0b3JhZ2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVRyYWNrZXJD
bGllbnRFZmwuaCIKICNpbmNsdWRlICJld2tfYXV0aF9zb3VwX3ByaXZhdGUuaCIKQEAgLTIwNiw3
ICsyMDcsNyBAQCBFaW5hX0Jvb2wgX2V3a19pbml0X2JvZHkodm9pZCkKIAogICAgIFNvdXBTZXNz
aW9uKiBzZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7
CiAgICAgU291cFNlc3Npb25GZWF0dXJlKiBhdXRoX2RpYWxvZyA9IHN0YXRpY19jYXN0PFNvdXBT
ZXNzaW9uRmVhdHVyZSo+KGdfb2JqZWN0X25ldyhFV0tfVFlQRV9TT1VQX0FVVEhfRElBTE9HLCAw
KSk7Ci0gICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIGF1dGhfZGlhbG9nKTsK
KyAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9u
OjpkZWZhdWx0U2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksIGF1dGhfZGlhbG9nKTsKIAogICAgIFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnModHJ1ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX25ldHdvcmsuY3BwCmluZGV4IDUyZDIwYWEuLjBmYjdmMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcApAQCAtMzAsNTkgKzMwLDM5IEBACiAKIHZv
aWQgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChjb25zdCBjaGFyKiBwcm94eSkKIHsKLSAgICBT
b3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vz
c2lvbigpOwotCi0gICAgaWYgKCFwcm94eSkgeworICAgIGlmICghcHJveHkpCiAgICAgICAgIEVS
Uigibm8gcHJveHkgdXJpLiByZW1vdmUgcHJveHkgZmVhdHVyZSBpbiBzb3VwLiIpOwotICAgICAg
ICBzb3VwX3Nlc3Npb25fcmVtb3ZlX2ZlYXR1cmVfYnlfdHlwZShzZXNzaW9uLCBTT1VQX1RZUEVf
UFJPWFlfVVJJX1JFU09MVkVSKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFNvdXBQ
cm94eVVSSVJlc29sdmVyKiByZXNvbHZlckVmbCA9IHNvdXBQcm94eVJlc29sdmVyV2tOZXcocHJv
eHksIDApOwotICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1NFU1NJ
T05fRkVBVFVSRShyZXNvbHZlckVmbCkpOwotICAgIGdfb2JqZWN0X3VucmVmKHJlc29sdmVyRWZs
KTsKKyAgICBXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc2V0
SFRUUFByb3h5KHByb3h5LCAwKTsKIH0KIAogY29uc3QgY2hhciogZXdrX25ldHdvcmtfcHJveHlf
dXJpX2dldCh2b2lkKQogewotICAgIFNvdXBVUkkqIHVyaTsKLSAgICBTb3VwU2Vzc2lvbiogc2Vz
c2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwotICAgIFNv
dXBQcm94eVVSSVJlc29sdmVyKiByZXNvbHZlciA9IFNPVVBfUFJPWFlfVVJJX1JFU09MVkVSKHNv
dXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1RZUEVfUFJPWFlfVVJJX1JFU09M
VkVSKSk7Ci0gICAgaWYgKCFyZXNvbHZlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBnX29i
amVjdF9nZXQocmVzb2x2ZXIsIFNPVVBfUFJPWFlfUkVTT0xWRVJfV0tfUFJPWFlfVVJJLCAmdXJp
LCBOVUxMKTsKLQorICAgIGNoYXIqIHVyaSA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6
ZGVmYXVsdFNlc3Npb24oKS5odHRwUHJveHkoKTsKICAgICBpZiAoIXVyaSkgewogICAgICAgICBF
UlIoIm5vIHByb3h5IHVyaSIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBXVEY6
OlN0cmluZyBwcm94eSA9IHNvdXBfdXJpX3RvX3N0cmluZyh1cmksIGZhbHNlKTsKLSAgICByZXR1
cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQocHJveHkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJu
IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHVyaSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfbmV0d29ya190
bHNfY2VydGlmaWNhdGVfY2hlY2tfZ2V0KCkKIHsKLSAgICBib29sIGNoZWNrQ2VydGlmaWNhdGVz
ID0gZmFsc2U7Ci0KLSAgICBTb3VwU2Vzc2lvbiogZGVmYXVsdFNlc3Npb24gPSBXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKLSAgICBnX29iamVjdF9nZXQoZGVmYXVs
dFNlc3Npb24sICJzc2wtc3RyaWN0IiwgJmNoZWNrQ2VydGlmaWNhdGVzLCBOVUxMKTsKLQotICAg
IHJldHVybiBjaGVja0NlcnRpZmljYXRlczsKKyAgICB1bnNpZ25lZCBwb2xpY3kgPSBXZWJDb3Jl
OjpTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc3NsUG9saWN5KCk7CisgICAg
cmV0dXJuIHBvbGljeSAmIFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6U1NMU3RyaWN0Owog
fQogCiB2b2lkIGV3a19uZXR3b3JrX3Rsc19jZXJ0aWZpY2F0ZV9jaGVja19zZXQoRWluYV9Cb29s
IGNoZWNrQ2VydGlmaWNhdGVzKQogewotICAgIFNvdXBTZXNzaW9uKiBkZWZhdWx0U2Vzc2lvbiA9
IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwotICAgIGdfb2JqZWN0
X3NldChkZWZhdWx0U2Vzc2lvbiwgInNzbC1zdHJpY3QiLCBjaGVja0NlcnRpZmljYXRlcywgTlVM
TCk7CisgICAgdW5zaWduZWQgcG9saWN5ID0gV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpk
ZWZhdWx0U2Vzc2lvbigpLnNzbFBvbGljeSgpOworICAgIFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vz
c2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRTU0xQb2xpY3kocG9saWN5IHwgV2ViQ29yZTo6U291
cE5ldHdvcmtTZXNzaW9uOjpTU0xTdHJpY3QpOwogfQogCiBjb25zdCBjaGFyKiBld2tfbmV0d29y
a190bHNfY2FfY2VydGlmaWNhdGVzX3BhdGhfZ2V0KCkKIHsKICAgICBjb25zdCBjaGFyKiBidW5k
bGVQYXRoID0gMDsKIAotICAgIFNvdXBTZXNzaW9uKiBkZWZhdWx0U2Vzc2lvbiA9IFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICAgIFNvdXBTZXNzaW9uKiBkZWZh
dWx0U2Vzc2lvbiA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24o
KS5zb3VwU2Vzc2lvbigpOwogICAgIGdfb2JqZWN0X2dldChkZWZhdWx0U2Vzc2lvbiwgInNzbC1j
YS1maWxlIiwgJmJ1bmRsZVBhdGgsIE5VTEwpOwogCiAgICAgcmV0dXJuIGJ1bmRsZVBhdGg7CkBA
IC05MCwxMSArNzAsMTEgQEAgY29uc3QgY2hhciogZXdrX25ldHdvcmtfdGxzX2NhX2NlcnRpZmlj
YXRlc19wYXRoX2dldCgpCiAKIHZvaWQgZXdrX25ldHdvcmtfdGxzX2NhX2NlcnRpZmljYXRlc19w
YXRoX3NldChjb25zdCBjaGFyKiBidW5kbGVQYXRoKQogewotICAgIFNvdXBTZXNzaW9uKiBkZWZh
dWx0U2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwor
ICAgIFNvdXBTZXNzaW9uKiBkZWZhdWx0U2Vzc2lvbiA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vz
c2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zb3VwU2Vzc2lvbigpOwogICAgIGdfb2JqZWN0X3NldChk
ZWZhdWx0U2Vzc2lvbiwgInNzbC1jYS1maWxlIiwgYnVuZGxlUGF0aCwgTlVMTCk7CiB9CiAKIFNv
dXBTZXNzaW9uKiBld2tfbmV0d29ya19kZWZhdWx0X3NvdXBfc2Vzc2lvbl9nZXQoKQogewotICAg
IHJldHVybiBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNvdXBT
ZXNzaW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCAzY2YwZWVjLi44
ODkwMmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTY1LDYgKzY1LDcgQEAK
ICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU291cE5ldHdvcmtT
ZXNzaW9uLmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJjX2lu
c3RhbmNlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRtZW51X3ByaXZhdGUuaCIKQEAgLTQ1NDUs
NyArNDU0Niw3IEBAIFNvdXBTZXNzaW9uKiBld2tfdmlld19zb3VwX3Nlc3Npb25fZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCAwKTsKLSAgICByZXR1cm4gcHJpdi0+c3RvcmFnZVNlc3Npb24tPnNv
dXBTZXNzaW9uKCk7CisgICAgcmV0dXJuIHByaXYtPnN0b3JhZ2VTZXNzaW9uLT5zb3VwTmV0d29y
a1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpOwogfQogCiB2b2lkIGV3a192aWV3X3NvdXBfc2Vzc2lv
bl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFNvdXBTZXNzaW9uKiBzZXNzaW9uKQpAQCAtNDU1
Nyw3ICs0NTU4LDcgQEAgdm9pZCBld2tfdmlld19zb3VwX3Nlc3Npb25fc2V0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBTb3VwU2Vzc2lvbiogc2Vzc2lvbikKICAgICAgICAgICAgICJhIFNvdXBTZXNz
aW9uU3luYyB3YXMgcHJvdmlkZWQuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcHJp
di0+c3RvcmFnZVNlc3Npb24tPnNldFNvdXBTZXNzaW9uKHNlc3Npb24pOworICAgIHByaXYtPnN0
b3JhZ2VTZXNzaW9uLT5zZXRTb3VwTmV0d29ya1Nlc3Npb24oU291cE5ldHdvcmtTZXNzaW9uOjpj
cmVhdGVGb3JTb3VwU2Vzc2lvbihzZXNzaW9uKSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX2VuYWJsZV94c3NfYXVkaXRvcl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKaW5kZXggY2VlY2UxZi4uZTE4MmM0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDE0LTAxLTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbU09VUF0gQWRkIFNvdXBOZXR3b3JrU2Vzc2lvbiBj
bGFzcyB0byB3cmFwIGEgU291cFNlc3Npb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjgxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwOgorICAgICAgICAo
d2Via2l0X2dldF9kZWZhdWx0X3Nlc3Npb24pOiBVc2UgdGhlIG5ldyBTb3VwTmV0d29ya1Nlc3Np
b24gQVBJCisgICAgICAgIHRvIGdldCB0aGUgZGVmYXVsdCBTb3VwU2Vzc2lvbgorCiAyMDE0LTAx
LTA4ICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS10gQWRkIHhkZy5vcmlnaW4udXJsIGV4dGVuZGVkIGF0dHJpYnV0ZSB0byBkb3dubG9hZHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzLmNwcAppbmRleCAyY2I1YmU1
Li5mNjFjOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xv
YmFscy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGdsb2JhbHMuY3Bw
CkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5o
IgorI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGlu
Z1JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAid2Via2l0YXBwbGljYXRpb25jYWNoZS5oIgogI2luY2x1
ZGUgIndlYmtpdGZhdmljb25kYXRhYmFzZS5oIgpAQCAtODMsNyArODQsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIFNvdXBTZXNzaW9uKiB3ZWJraXRfZ2V0X2RlZmF1bHRfc2Vzc2lvbiAo
KQogewogICAgIHdlYmtpdEluaXQoKTsKLSAgICByZXR1cm4gUmVzb3VyY2VIYW5kbGU6OmRlZmF1
bHRTZXNzaW9uKCk7CisgICAgcmV0dXJuIFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Np
b24oKS5zb3VwU2Vzc2lvbigpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjNWVlMGFiLi5lZWVm
NDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTQtMDEtMTEgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTT1VQXSBBZGQgU291
cE5ldHdvcmtTZXNzaW9uIGNsYXNzIHRvIHdyYXAgYSBTb3VwU2Vzc2lvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2ODEzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBuZXcgU291cE5ldHdv
cmtTZXNzaW9uIEFQSS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1By
b2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3Jt
SW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpjbGVhckNhY2hlRm9yQWxsT3JpZ2lucyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
dW5peC9OZXR3b3JrUHJvY2Vzc01haW5Vbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NNYWluKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29r
aWVNYW5hZ2VyU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OnNl
dENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2VmbC9XZWJQ
cm9jZXNzTWFpbkVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NNYWluRWZsKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NNYWluR3RrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAv
V2ViUHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9y
bVNldENhY2hlTW9kZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUNs
ZWFyUmVzb3VyY2VDYWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpzZXRTb3VwU2Vzc2lvbkFjY2Vw
dExhbmd1YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplV2ViUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6cmVn
aXN0ZXJVUklTY2hlbWUpOgorCiAyMDE0LTAxLTEwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBGaXggcmV0dXJuIHZhbHVlIG9mIFdl
YktpdERvd25sb2FkOjpjcmVhdGVkLWRlc3RpbmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXgg
NmQ3Y2Y5Ny4uNThkZDVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAu
aD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1JlZlB0ci5oPgpAQCAtNzgsNyArNzksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0
Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQog
ewogICAgIEFTU0VSVCghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKTsK
ICAgICBHUmVmUHRyPFNvdXBDYWNoZT4gc291cENhY2hlID0gYWRvcHRHUmVmKHNvdXBfY2FjaGVf
bmV3KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LnV0ZjgoKS5kYXRhKCksIFNPVVBfQ0FD
SEVfU0lOR0xFX1VTRVIpKTsKLSAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIFNPVVBfU0VTU0lPTl9GRUFUVVJFKHNv
dXBDYWNoZS5nZXQoKSkpOworICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24o
KS5zZXRDYWNoZShzb3VwQ2FjaGUuZ2V0KCkpOwogICAgIHNvdXBfY2FjaGVfbG9hZChzb3VwQ2Fj
aGUuZ2V0KCkpOwogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdl
UGF0aC5pc0VtcHR5KCkpIHsKQEAgLTEwMSw4ICsxMDIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQogICAgIHVuc2ln
bmVkIGxvbmcgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7CiAgICAgdW5zaWduZWQgbG9uZyB1
cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7CiAKLSAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFJl
c291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwotICAgIFNvdXBDYWNoZSogY2FjaGUgPSBT
T1VQX0NBQ0hFKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1RZUEVfQ0FD
SEUpKTsKKyAgICBTb3VwQ2FjaGUqIGNhY2hlID0gU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0
U2Vzc2lvbigpLmNhY2hlKCk7CiAgICAgdWludDY0X3QgZGlza0ZyZWVTaXplID0gZ2V0Q2FjaGVE
aXNrRnJlZVNpemUoY2FjaGUpIC8gMTAyNCAvIDEwMjQ7CiAKICAgICB1aW50NjRfdCBtZW1TaXpl
ID0gZ2V0TWVtb3J5U2l6ZSgpOwpAQCAtMTI5LDggKzEyOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmNsZWFyQ2FjaGVGb3JBbGxPcmlnaW5zKHVpbnQzMl90IGNhY2hlc1RvQ2xlYXIpCiAgICAg
aWYgKGNhY2hlc1RvQ2xlYXIgPT0gSW5NZW1vcnlSZXNvdXJjZUNhY2hlc09ubHkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gUmVzb3VyY2VIYW5kbGU6OmRl
ZmF1bHRTZXNzaW9uKCk7Ci0gICAgc291cF9jYWNoZV9jbGVhcihTT1VQX0NBQ0hFKHNvdXBfc2Vz
c2lvbl9nZXRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1RZUEVfQ0FDSEUpKSk7CisgICAgc291cF9j
YWNoZV9jbGVhcihTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUoKSk7
CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3VuaXgvTmV0d29ya1Byb2Nlc3NNYWlu
VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9j
ZXNzTWFpblVuaXguY3BwCmluZGV4IDJjOGFlZGYuLjAzYThiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3VuaXgvTmV0d29ya1Byb2Nlc3NNYWluVW5peC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvdW5peC9OZXR3b3JrUHJvY2Vzc01h
aW5Vbml4LmNwcApAQCAtMjksMTAgKzI5LDkgQEAKIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCiAKLSNpbmNsdWRlICJQcm94eVJlc29sdmVyU291cC5oIgogI2luY2x1ZGUgIldLQmFzZS5o
IgogI2luY2x1ZGUgIldlYktpdDJJbml0aWFsaXplLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUhhbmRsZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdvcmtTZXNzaW9uLmg+CiAj
aW5jbHVkZSA8V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy5oPgogI2luY2x1ZGUgPGVycm9yLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CkBAIC02OCwxOCArNjcsNyBA
QCBXS19FWFBPUlQgaW50IE5ldHdvcmtQcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhciogYXJndltd
KQogCiAgICAgSW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotI2lmIFVTRShTT1VQKQotICAgIFNvdXBT
ZXNzaW9uKiBzZXNzaW9uID0gUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7Ci0jaWYg
UExBVEZPUk0oRUZMKQotICAgIC8vIE9ubHkgZm9yIEVGTCBiZWNhdXNlIEdUSyBwb3J0IHVzZXMg
dGhlIGRlZmF1bHQgcmVzb2x2ZXIsIHdoaWNoIHVzZXMgR0lPJ3MgcHJveHkgcmVzb2x2ZXIuCi0g
ICAgY29uc3QgY2hhciogaHR0cFByb3h5ID0gZ2V0ZW52KCJodHRwX3Byb3h5Iik7Ci0gICAgaWYg
KGh0dHBQcm94eSkgewotICAgICAgICBjb25zdCBjaGFyKiBub1Byb3h5ID0gZ2V0ZW52KCJub19w
cm94eSIpOwotICAgICAgICBHUmVmUHRyPFNvdXBQcm94eVVSSVJlc29sdmVyPiByZXNvbHZlciA9
IGFkb3B0R1JlZihzb3VwUHJveHlSZXNvbHZlcldrTmV3KGh0dHBQcm94eSwgbm9Qcm94eSkpOwot
ICAgICAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9TRVNTSU9OX0ZF
QVRVUkUocmVzb2x2ZXIuZ2V0KCkpKTsKLSAgICB9Ci0jZW5kaWYKLSNlbmRpZgorICAgIFNvdXBO
ZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXR1cEhUVFBQcm94eUZyb21FbnZpcm9u
bWVudCgpOwogCiAgICAgaW50IHNvY2tldCA9IGF0b2koYXJndlsxXSk7CiAKQEAgLTkyLDE2ICs4
MCwxNSBAQCBXS19FWFBPUlQgaW50IE5ldHdvcmtQcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhciog
YXJndltdKQogICAgIC8vIERlc3BpdGUgdXNpbmcgc3lzdGVtIENBcyB0byB2YWxpZGF0ZSBjZXJ0
aWZpY2F0ZXMgd2UncmUKICAgICAvLyBhY2NlcHRpbmcgaW52YWxpZCBjZXJ0aWZpY2F0ZXMgYnkg
ZGVmYXVsdC4gTmV3IEFQSSB3aWxsIGJlCiAgICAgLy8gYWRkZWQgbGF0ZXIgdG8gbGV0IGNsaWVu
dCBhY2NlcHQvZGlzY2FyZCBpbnZhbGlkIGNlcnRpZmljYXRlcy4KLSAgICBnX29iamVjdF9zZXQo
c2Vzc2lvbiwgU09VUF9TRVNTSU9OX1NTTF9VU0VfU1lTVEVNX0NBX0ZJTEUsIFRSVUUsCi0gICAg
ICAgIFNPVVBfU0VTU0lPTl9TU0xfU1RSSUNULCBGQUxTRSwgTlVMTCk7CisgICAgU291cE5ldHdv
cmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldFNTTFBvbGljeShTb3VwTmV0d29ya1Nlc3Np
b246OlNTTFVzZVN5c3RlbUNBRmlsZSk7CiAjZW5kaWYKIAogICAgIFJ1bkxvb3A6OnJ1bigpOwog
CiAjaWYgVVNFKFNPVVApCi0gICAgaWYgKFNvdXBTZXNzaW9uRmVhdHVyZSogc291cENhY2hlID0g
c291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQRV9DQUNIRSkpIHsKLSAg
ICAgICAgc291cF9jYWNoZV9mbHVzaChTT1VQX0NBQ0hFKHNvdXBDYWNoZSkpOwotICAgICAgICBz
b3VwX2NhY2hlX2R1bXAoU09VUF9DQUNIRShzb3VwQ2FjaGUpKTsKKyAgICBpZiAoU291cENhY2hl
KiBzb3VwQ2FjaGUgPSBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUo
KSkgeworICAgICAgICBzb3VwX2NhY2hlX2ZsdXNoKHNvdXBDYWNoZSk7CisgICAgICAgIHNvdXBf
Y2FjaGVfZHVtcChzb3VwQ2FjaGUpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5h
Z2VyU291cC5jcHAKaW5kZXggMTdkZTMxMi4uNzA1NGY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFn
ZXJTb3VwLmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgog
I2luY2x1ZGUgIldlYktpdFNvdXBDb29raWVKYXJTcWxpdGUuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0Nvb2tpZUphclNvdXAuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KICNpbmNsdWRlIDxsaWJzb3Vw
L3NvdXAuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgpAQCAtOTYsMTIgKzk2LDggQEAgdm9pZCBXZWJDb29raWVNYW5hZ2Vy
OjpzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1
aW4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgU291cENvb2tp
ZUphciogY3VycmVudEphciA9IFdlYkNvcmU6OnNvdXBDb29raWVKYXIoKTsKLSAgICBzb3VwX2Nv
b2tpZV9qYXJfc2V0X2FjY2VwdF9wb2xpY3koamFyLmdldCgpLCBzb3VwX2Nvb2tpZV9qYXJfZ2V0
X2FjY2VwdF9wb2xpY3koY3VycmVudEphcikpOwotICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0g
UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7Ci0gICAgc291cF9zZXNzaW9uX3JlbW92
ZV9mZWF0dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFUVVJFKGN1cnJlbnRKYXIpKTsKLSAg
ICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9TRVNTSU9OX0ZFQVRVUkUo
amFyLmdldCgpKSk7Ci0KKyAgICBzb3VwX2Nvb2tpZV9qYXJfc2V0X2FjY2VwdF9wb2xpY3koamFy
LmdldCgpLCBzb3VwX2Nvb2tpZV9qYXJfZ2V0X2FjY2VwdF9wb2xpY3koV2ViQ29yZTo6c291cENv
b2tpZUphcigpKSk7CisgICAgU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNl
dENvb2tpZUphcihqYXIuZ2V0KCkpOwogICAgIFdlYkNvcmU6OnNldFNvdXBDb29raWVKYXIoamFy
LmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwv
V2ViUHJvY2Vzc01haW5FZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2Vi
UHJvY2Vzc01haW5FZmwuY3BwCmluZGV4IDRkMjQ5ZGIuLmZkZDU2NzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAKQEAgLTM1
LDcgKzM1LDcgQEAKICNpbmNsdWRlIDxFZnJlZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4
dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV2ViUHJvY2Vzcy5o
PgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9u
cy5oPgpAQCAtMTE0LDE0ICsxMTQsNyBAQCBXS19FWFBPUlQgaW50IFdlYlByb2Nlc3NNYWluRWZs
KGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAKICAgICBJbml0aWFsaXplV2ViS2l0MigpOwogCi0g
ICAgU291cFNlc3Npb24qIHNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVs
dFNlc3Npb24oKTsKLSAgICBjb25zdCBjaGFyKiBodHRwUHJveHkgPSBnZXRlbnYoImh0dHBfcHJv
eHkiKTsKLSAgICBpZiAoaHR0cFByb3h5KSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5vUHJveHkg
PSBnZXRlbnYoIm5vX3Byb3h5Iik7Ci0gICAgICAgIFNvdXBQcm94eVVSSVJlc29sdmVyKiByZXNv
bHZlckVmbCA9IHNvdXBQcm94eVJlc29sdmVyV2tOZXcoaHR0cFByb3h5LCBub1Byb3h5KTsKLSAg
ICAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFU
VVJFKHJlc29sdmVyRWZsKSk7Ci0gICAgICAgIGdfb2JqZWN0X3VucmVmKHJlc29sdmVyRWZsKTsK
LSAgICB9CisgICAgU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldHVwSFRU
UFByb3h5RnJvbUVudmlyb25tZW50KCk7CiAKICAgICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFd
KTsKIApAQCAtMTMyLDkgKzEyNSw5IEBAIFdLX0VYUE9SVCBpbnQgV2ViUHJvY2Vzc01haW5FZmwo
aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKIAogICAgIFJ1bkxvb3A6OnJ1bigpOwogCi0gICAgaWYg
KFNvdXBTZXNzaW9uRmVhdHVyZSogc291cENhY2hlID0gc291cF9zZXNzaW9uX2dldF9mZWF0dXJl
KHNlc3Npb24sIFNPVVBfVFlQRV9DQUNIRSkpIHsKLSAgICAgICAgc291cF9jYWNoZV9mbHVzaChT
T1VQX0NBQ0hFKHNvdXBDYWNoZSkpOwotICAgICAgICBzb3VwX2NhY2hlX2R1bXAoU09VUF9DQUNI
RShzb3VwQ2FjaGUpKTsKKyAgICBpZiAoU291cENhY2hlKiBzb3VwQ2FjaGUgPSBTb3VwTmV0d29y
a1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUoKSkgeworICAgICAgICBzb3VwX2NhY2hl
X2ZsdXNoKHNvdXBDYWNoZSk7CisgICAgICAgIHNvdXBfY2FjaGVfZHVtcChzb3VwQ2FjaGUpOwog
ICAgIH0KIAogICAgIGVkamVfc2h1dGRvd24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcAppbmRleCBiNDgxZWUzLi5lMTVmNjAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFp
bkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01h
aW5HdGsuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VIYW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgogI2lu
Y2x1ZGUgPFdlYktpdDIvV2ViUHJvY2Vzcy5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNs
dWRlIDxsaWJpbnRsLmg+CkBAIC03MSwxNSArNzEsMTMgQEAgV0tfRVhQT1JUIGludCBXZWJQcm9j
ZXNzTWFpbkd0ayhpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgIC8vIERlc3BpdGUgdXNpbmcg
c3lzdGVtIENBcyB0byB2YWxpZGF0ZSBjZXJ0aWZpY2F0ZXMgd2UncmUKICAgICAvLyBhY2NlcHRp
bmcgaW52YWxpZCBjZXJ0aWZpY2F0ZXMgYnkgZGVmYXVsdC4gTmV3IEFQSSB3aWxsIGJlCiAgICAg
Ly8gYWRkZWQgbGF0ZXIgdG8gbGV0IGNsaWVudCBhY2NlcHQvZGlzY2FyZCBpbnZhbGlkIGNlcnRp
ZmljYXRlcy4KLSAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwotICAgIGdfb2JqZWN0X3NldChzZXNzaW9uLCBTT1VQX1NF
U1NJT05fU1NMX1VTRV9TWVNURU1fQ0FfRklMRSwgVFJVRSwKLSAgICAgICAgICAgICAgICAgU09V
UF9TRVNTSU9OX1NTTF9TVFJJQ1QsIEZBTFNFLCBOVUxMKTsKKyAgICBTb3VwTmV0d29ya1Nlc3Np
b246OmRlZmF1bHRTZXNzaW9uKCkuc2V0U1NMUG9saWN5KFNvdXBOZXR3b3JrU2Vzc2lvbjo6U1NM
VXNlU3lzdGVtQ0FGaWxlKTsKIAogICAgIFJ1bkxvb3A6OnJ1bigpOwogCi0gICAgaWYgKFNvdXBT
ZXNzaW9uRmVhdHVyZSogc291cENhY2hlID0gc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Np
b24sIFNPVVBfVFlQRV9DQUNIRSkpIHsKLSAgICAgICAgc291cF9jYWNoZV9mbHVzaChTT1VQX0NB
Q0hFKHNvdXBDYWNoZSkpOwotICAgICAgICBzb3VwX2NhY2hlX2R1bXAoU09VUF9DQUNIRShzb3Vw
Q2FjaGUpKTsKKyAgICBpZiAoU291cENhY2hlKiBzb3VwQ2FjaGUgPSBTb3VwTmV0d29ya1Nlc3Np
b246OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUoKSkgeworICAgICAgICBzb3VwX2NhY2hlX2ZsdXNo
KHNvdXBDYWNoZSk7CisgICAgICAgIHNvdXBfY2FjaGVfZHVtcChzb3VwQ2FjaGUpOwogICAgIH0K
IAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9z
b3VwL1dlYlByb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9X
ZWJQcm9jZXNzU291cC5jcHAKaW5kZXggNzMzMDc4ZC4uODA5YWJmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCkBAIC00MCwxMSAr
NDAsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlQ2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KICNpbmNsdWRlIDxsaWJzb3Vw
L3NvdXAuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBA
IC05NCw3ICs5Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENh
Y2hlTW9kZWwgY2FjaGVNb2RlbCkKICAgICBTb3VwQ2FjaGUqIGNhY2hlID0gbnVsbHB0cjsKIAog
ICAgIGlmICghdXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FjaGUgPSBTT1VQX0NB
Q0hFKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVm
YXVsdFNlc3Npb24oKSwgU09VUF9UWVBFX0NBQ0hFKSk7CisgICAgICAgIGNhY2hlID0gV2ViQ29y
ZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNhY2hlKCk7CiAgICAgICAg
IGRpc2tGcmVlU2l6ZSA9IGdldENhY2hlRGlza0ZyZWVTaXplKGNhY2hlKSAvIDEwMjQgLyAxMDI0
OwogICAgIH0KIApAQCAtMTIyLDUyICsxMjEsMTIgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9y
bUNsZWFyUmVzb3VyY2VDYWNoZXMoUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIK
ICAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNv
dXBfY2FjaGVfY2xlYXIoU09VUF9DQUNIRShzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIFNPVVBfVFlQRV9DQUNIRSkpKTsK
LX0KLQotLy8gVGhpcyBmdW5jdGlvbiBpcyBiYXNlZCBvbiBFcGlwaGFueSBjb2RlIGluIGVwaHkt
ZW1iZWQtcHJlZnMuYy4KLXN0YXRpYyBDU3RyaW5nIGJ1aWxkQWNjZXB0TGFuZ3VhZ2VzKFZlY3Rv
cjxTdHJpbmc+IGxhbmd1YWdlcykKLXsKLSAgICAvLyBJZ25vcmUgIkMiIGxvY2FsZS4KLSAgICBz
aXplX3QgcG9zaXRpb24gPSBsYW5ndWFnZXMuZmluZCgiYyIpOwotICAgIGlmIChwb3NpdGlvbiAh
PSBub3RGb3VuZCkKLSAgICAgICAgbGFuZ3VhZ2VzLnJlbW92ZShwb3NpdGlvbik7Ci0KLSAgICAv
LyBGYWxsYmFjayB0byAiZW4iIGlmIHRoZSBsaXN0IGlzIGVtcHR5LgotICAgIGlmIChsYW5ndWFn
ZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gImVuIjsKLQotICAgIC8vIENhbGN1bGF0ZSBk
ZWx0YXMgZm9yIHRoZSBxdWFsaXR5IHZhbHVlcy4KLSAgICBpbnQgZGVsdGE7Ci0gICAgaWYgKGxh
bmd1YWdlcy5zaXplKCkgPCAxMCkKLSAgICAgICAgZGVsdGEgPSAxMDsKLSAgICBlbHNlIGlmIChs
YW5ndWFnZXMuc2l6ZSgpIDwgMjApCi0gICAgICAgIGRlbHRhID0gNTsKLSAgICBlbHNlCi0gICAg
ICAgIGRlbHRhID0gMTsKLQotICAgIC8vIFNldCBxdWFsaXR5IHZhbHVlcyBmb3IgZWFjaCBsYW5n
dWFnZS4KLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsYW5ndWFnZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGkpCi0gICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKLQotICAgICAgICBidWlsZGVyLmFwcGVuZChsYW5ndWFn
ZXNbaV0pOwotCi0gICAgICAgIGludCBxdWFsaXR5ID0gMTAwIC0gaSAqIGRlbHRhOwotICAgICAg
ICBpZiAocXVhbGl0eSA+IDAgJiYgcXVhbGl0eSA8IDEwMCkgewotICAgICAgICAgICAgY2hhciBi
dWZmZXJbOF07Ci0gICAgICAgICAgICBnX2FzY2lpX2Zvcm1hdGQoYnVmZmVyLCA4LCAiJS4yZiIs
IHF1YWxpdHkgLyAxMDAuMCk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZv
cm1hdCgiO3E9JXMiLCBidWZmZXIpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOworICAgIHNvdXBfY2FjaGVfY2xlYXIoV2ViQ29yZTo6
U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNhY2hlKCkpOwogfQogCiBzdGF0
aWMgdm9pZCBzZXRTb3VwU2Vzc2lvbkFjY2VwdExhbmd1YWdlKFZlY3RvcjxTdHJpbmc+IGxhbmd1
YWdlcykKIHsKLSAgICBnX29iamVjdF9zZXQoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1
bHRTZXNzaW9uKCksICJhY2NlcHQtbGFuZ3VhZ2UiLCBidWlsZEFjY2VwdExhbmd1YWdlcyhsYW5n
dWFnZXMpLmRhdGEoKSwgTlVMTCk7CisgICAgV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpk
ZWZhdWx0U2Vzc2lvbigpLnNldEFjY2VwdExhbmd1YWdlcyhsYW5ndWFnZXMpOwogfQogCiBzdGF0
aWMgdm9pZCBsYW5ndWFnZUNoYW5nZWQodm9pZCopCkBAIC0xOTEsNyArMTUwLDcgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMKIAogICAgIEFTU0VSVCghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJl
Y3RvcnkuaXNFbXB0eSgpKTsKICAgICBHUmVmUHRyPFNvdXBDYWNoZT4gc291cENhY2hlID0gYWRv
cHRHUmVmKHNvdXBfY2FjaGVfbmV3KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LnV0Zjgo
KS5kYXRhKCksIFNPVVBfQ0FDSEVfU0lOR0xFX1VTRVIpKTsKLSAgICBzb3VwX3Nlc3Npb25fYWRk
X2ZlYXR1cmUoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIFNPVVBf
U0VTU0lPTl9GRUFUVVJFKHNvdXBDYWNoZS5nZXQoKSkpOworICAgIFdlYkNvcmU6OlNvdXBOZXR3
b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRDYWNoZShzb3VwQ2FjaGUuZ2V0KCkpOwog
ICAgIHNvdXBfY2FjaGVfbG9hZChzb3VwQ2FjaGUuZ2V0KCkpOwogCiAgICAgaWYgKCFwYXJhbWV0
ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aC5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5j
cHAKaW5kZXggYmQwY2Y2Mi4uNzBmY2FkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4K
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCkBAIC05OCw3ICs5OSw3IEBAIHZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyOjpy
ZWdpc3RlclVSSVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKICAgICBnX3B0cl9hcnJheV9h
ZGQobV9zY2hlbWVzLmdldCgpLCBnX3N0cmR1cChzY2hlbWUudXRmOCgpLmRhdGEoKSkpOwogICAg
IGdfcHRyX2FycmF5X2FkZChtX3NjaGVtZXMuZ2V0KCksIDApOwogCi0gICAgU291cFNlc3Npb24q
IHNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKKyAg
ICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVm
YXVsdFNlc3Npb24oKS5zb3VwU2Vzc2lvbigpOwogICAgIFNvdXBSZXF1ZXN0Q2xhc3MqIGdlbmVy
aWNSZXF1ZXN0Q2xhc3MgPSBzdGF0aWNfY2FzdDxTb3VwUmVxdWVzdENsYXNzKj4oZ190eXBlX2Ns
YXNzX3JlZihXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJQykpOwogICAgIGdlbmVyaWNS
ZXF1ZXN0Q2xhc3MtPnNjaGVtZXMgPSBjb25zdF9jYXN0PGNvbnN0IGNoYXIqKj4ocmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKio+KG1fc2NoZW1lcy0+cGRhdGEpKTsKICAgICBzb3VwX3Nlc3Npb25fYWRk
X2ZlYXR1cmVfYnlfdHlwZShzZXNzaW9uLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJ
Qyk7Cg==
</data>
<flag name="commit-queue"
          id="244745"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220933</attachid>
            <date>2014-01-11 07:12:08 -0800</date>
            <delta_ts>2014-01-13 09:47:31 -0800</delta_ts>
            <desc>Try to fix EFL build</desc>
            <filename>soup-network-session4.diff</filename>
            <type>text/plain</type>
            <size>58306</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4Y2EwZWQ2Li45OWUzMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkg
QEAKKzIwMTQtMDEtMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtTT1VQXSBBZGQgU291cE5ldHdvcmtTZXNzaW9uIGNsYXNzIHRvIHdyYXAg
YSBTb3VwU2Vzc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI2ODEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIFNvdXBOZXR3b3JrU2Vzc2lvbiBjbGFzcyB0aGF0IHdyYXBzIGEgU291cFNlc3Np
b24gYW5kIG1vdmUgYWxsCisgICAgICAgIHRoZSBjb2RlIHJlbGF0ZWQgdG8gdGhlIFNvdXBTZXNz
aW9uIGZyb20gUmVzb3VyY2VIYW5kbGUgdG8KKyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uLCBp
bmNsdWRpbmcgdGhlIHN0YXRpYyBtZXRob2RzIHRvIGdldCB0aGUKKyAgICAgICAgZGVmYXVsdCBz
ZXNzaW9uIGFuZCBjcmVhdGUgdGVzdGluZyBhbmQgcHJpdmF0ZSBzZXNzaW9ucy4KKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oOiBVc2UgU291cE5ldHdvcmtTZXNzaW9uCisgICAgICAgIGluc3RlYWQgb2YgU291
cFNlc3Npb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvb2tpZUphckZvclNlc3Npb24pOiBVc2UgU291cE5ldHdvcmtTZXNzaW9u
IHRvIGdldCB0aGUKKyAgICAgICAgU291cFNlc3Npb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9zb3VwL0ROU1NvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVl
OjpwbGF0Zm9ybVJlc29sdmUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbik6IFVzZQorICAgICAgICBT
b3VwTmV0d29ya1Nlc3Npb24gaW5zdGVhZCBvZiBTb3VwU2Vzc2lvbi4KKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6fk5ldHdvcmtTdG9yYWdlU2Vzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lv
bik6IENyZWF0ZSBhCisgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB3aXRoIGEgTlVMTCBT
b3VwTmV0d29ya1Nlc3Npb24gd2hpY2ggbWVhbnMKKyAgICAgICAgdGhhdCB0aGUgZGVmYXVsdCBT
b3VwTmV0d29ya1Nlc3Npb24gd2lsbCBiZSB1c2VkLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAg
Q2FsbCBTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSB0
byBjcmVhdGUKKyAgICAgICAgdGhlIHByaXZhdGUgc2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbik6IENhbGwK
KyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uOjpjcmVhdGVUZXN0aW5nU2Vzc2lvbigpIHRvIGNy
ZWF0ZSB0aGUgdGVzdGluZworICAgICAgICBzZXNzaW9uLgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzb3VwTmV0d29ya1Nlc3Npb24pOiBSZXR1cm4gdGhlCisgICAg
ICAgIFNvdXBOZXR3b3JrU2Vzc2lvbiBvciB0aGUgZGVmYXVsdCBvbmUuCisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFNvdXBOZXR3b3JrU2Vzc2lvbik6IFNldCBh
IG5ldworICAgICAgICBTb3VwTmV0d29ya1Nlc3Npb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXNz
aW9uRnJvbUNvbnRleHQpOiBVc2UgU291cE5ldHdvcmtTZXNzaW9uIHRvIGdldCB0aGUKKyAgICAg
ICAgU291cFNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFs
Ojpzb3VwU2Vzc2lvbik6IFNpbXBseSBjYWxsCisgICAgICAgIHNlc3Npb25Gcm9tQ29udGV4dCgp
LCBzaW5jZSBlbnN1cmVTZXNzaW9uSXNJbml0aWFsaXplZCgpIGlzIG5vCisgICAgICAgIGxvbmdl
ciBuZWVkZWQsIGJlY2F1c2UgdGhlIFNvdXBTZXNzaW9uIGFyZSBub3cgaW5pdGlhbGl6ZWQgaW4g
dGhlCisgICAgICAgIFNvdXBOZXR3b3JrU2Vzc2lvbiBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpkaWRTdGFydFJlcXVlc3QpOiBGdW5jdGlvbiB0byBub3Rp
ZnkgdGhlCisgICAgICAgIFJlc291cmNlSGFuZGxlIHRoYXQgY3VycmVudCByZXF1ZXN0IGhhcyBq
dXN0IHN0YXJ0ZWQgZm9yIHdlYiB0aW1pbmcuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c291
cExvZ1ByaW50ZXIpOiBMb2dnZXIgY2FsbGJhY2suCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0
d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKTogUmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAg
IHRvIHRoZSBkZWZhdWx0IFNvdXBOZXR3b3JrU2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNv
dXBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAg
IENyZWF0ZSBhIG5ldyBwcml2YXRlIHNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0
d29ya1Nlc3Npb246OmNyZWF0ZVRlc3RpbmdTZXNzaW9uKTogQ3JlYXRlIGEgbmV3CisgICAgICAg
IHRlc3Rpbmcgc2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6
Y3JlYXRlRm9yU291cFNlc3Npb24pOiBDcmVhdGUgYSBuZXcKKyAgICAgICAgU291cE5ldHdvcmtT
ZXNzaW9uIGZvciB0aGUgZ2l2ZW4gU291cFNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjphdXRo
ZW50aWNhdGVDYWxsYmFjayk6IENhbGxiYWNrIGVtaXR0ZWQgYnkgdGhlCisgICAgICAgIFNvdXBT
ZXNzaW9uIHdoZW4gdGhlIHJlcXVlc3QgbmVlZHMgYXV0aGVudGljYXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpyZXF1ZXN0U3RhcnRlZENhbGxiYWNrKTogQ2FsbGJhY2sgZW1pdHRlZCBieSB0aGUK
KyAgICAgICAgU291cFNlc3Npb24gd2hlbiBhcyByZXF1ZXN0IGhhcyBqdXN0IHN0YXJ0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OlNvdXBOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246On5Tb3VwTmV0d29ya1Nlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpzZXR1cExvZ2dlcik6
IEhlbHBlciBwcml2YXRlCisgICAgICAgIGZ1bmN0aW9uIHRvIHNldHVwIHRoZSBsb2dnZXIuCisg
ICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OnNldENvb2tpZUphcik6IFNldCBh
IG5ldyBDb29raWVKYXIKKyAgICAgICAgaW4gdGhlIHNlc3Npb24gcmVwbGFjaW5nIHRoZSBleGlz
dGluZyBvbmUuCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmNvb2tpZUph
cik6IFJldHVybiB0aGUgY3VycmVudAorICAgICAgICBDb29raWVKYXIgb2YgdGhlIHNlc3Npb24u
CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OnNldENhY2hlKTogU2V0IGEg
ZGlzayBjYWNoZS4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2FjaGUp
OiBSZXR1cm4gdGhlIGN1cnJlbnQgZGlzayBjYWNoZS4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXBO
ZXR3b3JrU2Vzc2lvbjo6c2V0U1NMUG9saWN5KTogU2V0IHRoZSBTU0wgcG9saWN5LgorICAgICAg
ICAoV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpzc2xQb2xpY3kpOiBHZXQgdGhlIGN1cnJl
bnQgU1NMIHBvbGljeS4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0
SFRUUFByb3h5KTogU2V0IHRoZSBIVFRQIHByb3h5LgorICAgICAgICAoV2ViQ29yZTo6U291cE5l
dHdvcmtTZXNzaW9uOjpodHRwUHJveHkpOiBHZXQgdGhlIGN1cnJlbnQgSFRUUCBwcm94eS4KKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0dXBIVFRQUHJveHlGcm9tRW52
aXJvbm1lbnQpOiBTZXQKKyAgICAgICAgdGhlIEhUVFAgcHJveHkgdXNpbmcgdGhlIGVudmlyb25t
ZW50IHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQWNjZXB0TGFuZ3VhZ2VzKTog
SGVscGVyIGZ1bmN0aW9uIGJ1aWxkIHRoZSBhY2NlcHQKKyAgICAgICAgbGFuZ3VhZ2Ugc3RyaW5n
IGluIHRoZSBmb3JtYXQgZXhwZWN0ZWQgYnkgc291cCAoUkZDIDI2MTYpLgorICAgICAgICAoV2Vi
Q29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpzZXRBY2NlcHRMYW5ndWFnZXMpOiBTZXQgdGhlIGFj
Y2VwdAorICAgICAgICBsYW5ndWFnZSBmb3IgdGhlIGdpdmVuIGxpc3Qgb2YgbGFuZ3VhZ2VzLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OnNvdXBTZXNzaW9uKTog
UmV0dXJuIHRoZSBTb3VwU2Vzc2lvbi4KKwogMjAxNC0wMS0wOSAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSAubXAzIG1lZGlhIGRvY3VtZW50IGNvbnRy
b2xzIG1pc3NpbmcgdGhlaXIgYmFja2dyb3VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
aW5kZXggOTY5Njc1OC4uNTZiY2Y0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC01NDY0LDcgKzU0NjQsNiBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmggXAotCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUluZm8uaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iU3RvcmFnZURhdGEuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5oIFwKQEAgLTU0ODYsNiAr
NTQ4NSw3IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlU291cC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0
aWZpY2F0ZUluZm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nl
cnRpZmljYXRlSW5mby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Db29raWVKYXJTb3VwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0Nvb2tpZUphclNvdXAuaCBcCkBAIC01NDk4LDYgKzU0OTgsOCBAQCB3ZWJjb3JlX3BsYXRm
b3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50U291
cC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDUwZTcyZDAuLjcxMDVlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC0xNjYsNiArMTY2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCiAgICAgcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcAorICAgIHBsYXRmb3JtL25ldHdv
cmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvdXBVUklVdGlscy5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU3luY2hyb25vdXNM
b2FkZXJDbGllbnRTb3VwLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGQwOWU2
OWMuLmMwZWU2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMjMsNiArMTIzLDcg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJl
YW1IYW5kbGVTb3VwLmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nl
c3Npb24uY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGlscy5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU3luY2hyb25vdXNMb2FkZXJDbGllbnRTb3VwLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaAppbmRleCA1NmEwYTU5Li5iYjZmYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAg
LTMyLDE1ICszMiwxMiBAQAogI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkxTdG9yYWdlU2Vzc2lvbiogQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZjsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqICBDRkhU
VFBDb29raWVTdG9yYWdlUmVmOwotI2VsaWYgVVNFKFNPVVApCi0jaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1JlZlB0ci5oPgotdHlwZWRlZiBzdHJ1Y3QgX1NvdXBDb29raWVKYXIgU291cENvb2tpZUph
cjsKLXR5cGVkZWYgc3RydWN0IF9Tb3VwU2Vzc2lvbiBTb3VwU2Vzc2lvbjsKICNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OworY2xhc3MgU291
cE5ldHdvcmtTZXNzaW9uOwogCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtNjAsOSArNTcsMTAgQEAgcHVibGljOgogICAgIENGVVJMU3RvcmFnZVNl
c3Npb25SZWYgcGxhdGZvcm1TZXNzaW9uKCkgeyByZXR1cm4gbV9wbGF0Zm9ybVNlc3Npb24uZ2V0
KCk7IH0KICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFn
ZSgpIGNvbnN0OwogI2VsaWYgVVNFKFNPVVApCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFNv
dXBTZXNzaW9uKik7Ci0gICAgdm9pZCBzZXRTb3VwU2Vzc2lvbihTb3VwU2Vzc2lvbiogc2Vzc2lv
bikgeyBtX3Nlc3Npb24gPSBzZXNzaW9uOyB9Ci0gICAgU291cFNlc3Npb24qIHNvdXBTZXNzaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CisgICAgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+KTsKKyAgICB+TmV0d29y
a1N0b3JhZ2VTZXNzaW9uKCk7CisgICAgU291cE5ldHdvcmtTZXNzaW9uJiBzb3VwTmV0d29ya1Nl
c3Npb24oKSBjb25zdDsKKyAgICB2b2lkIHNldFNvdXBOZXR3b3JrU2Vzc2lvbihzdGQ6OnVuaXF1
ZV9wdHI8U291cE5ldHdvcmtTZXNzaW9uPik7CiAjZWxzZQogICAgIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbihOZXR3b3JraW5nQ29udGV4dCopOwogICAgIH5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsK
QEAgLTc0LDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsK
ICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gbV9wbGF0Zm9ybVNlc3Npb247
CiAjZWxpZiBVU0UoU09VUCkKLSAgICBHUmVmUHRyPFNvdXBTZXNzaW9uPiBtX3Nlc3Npb247Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lvbj4gbV9zZXNzaW9uOwogI2Vsc2UK
ICAgICBSZWZQdHI8TmV0d29ya2luZ0NvbnRleHQ+IG1fY29udGV4dDsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IDIx
OWU0N2UuLjRmOGVmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmgKQEAgLTE4MCw5ICsxODAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBj
YW5jZWxsZWRPckNsaWVudGxlc3MoKTsKICAgICB2b2lkIGVuc3VyZVJlYWRCdWZmZXIoKTsKICAg
ICBzaXplX3QgY3VycmVudFN0cmVhbVBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgc3RhdGljIFNvdXBT
ZXNzaW9uKiBkZWZhdWx0U2Vzc2lvbigpOwotICAgIHN0YXRpYyBTb3VwU2Vzc2lvbiogY3JlYXRl
VGVzdGluZ1Nlc3Npb24oKTsKLSAgICBzdGF0aWMgU291cFNlc3Npb24qIGNyZWF0ZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKTsKKyAgICB2b2lkIGRpZFN0YXJ0UmVxdWVzdCgpOwogICAgIHN0YXRp
YyB1aW50NjRfdCBnZXRTb3VwUmVxdWVzdEluaXRpYXRpbmdQYWdlSUQoU291cFJlcXVlc3QqKTsK
ICAgICBzdGF0aWMgdm9pZCBzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBT
dHJpbmcmKTsKICAgICBzdGF0aWMgdm9pZCBzZXRDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJp
bmcmIGhvc3QsIEdUbHNDZXJ0aWZpY2F0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCmluZGV4IGRkNWRiZDUuLjE1
ZmQ3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9D
b29raWVKYXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvQ29va2llSmFyU291cC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29va2ll
SmFyLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJTb3VwTmV0d29y
a1Nlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0zNCw4ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIFNvdXBDb29raWVKYXIqIGNvb2tpZUphckZvclNlc3Npb24oY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIEFTU0VSVChzZXNzaW9uLnNvdXBT
ZXNzaW9uKCkpOwotICAgIHJldHVybiBTT1VQX0NPT0tJRV9KQVIoc291cF9zZXNzaW9uX2dldF9m
ZWF0dXJlKHNlc3Npb24uc291cFNlc3Npb24oKSwgU09VUF9UWVBFX0NPT0tJRV9KQVIpKTsKKyAg
ICByZXR1cm4gc2Vzc2lvbi5zb3VwTmV0d29ya1Nlc3Npb24oKS5jb29raWVKYXIoKTsKIH0KIAog
c3RhdGljIEdSZWZQdHI8U291cENvb2tpZUphcj4mIGRlZmF1bHRDb29raWVKYXIoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCmluZGV4IGJh
YmEyMDQuLjJlYWI5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvRE5TU291cC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJETlNSZXNvbHZl
UXVldWUuaCIKIAogI2luY2x1ZGUgIkdPd25QdHJTb3VwLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlIDxsaWJz
b3VwL3NvdXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBETlNSZXNvbHZlUXVldWU6OnBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKLSAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKFJlc291cmNlSGFu
ZGxlOjpkZWZhdWx0U2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCAwLCByZXNvbHZl
ZENhbGxiYWNrLCAwKTsKKyAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKFNvdXBOZXR3b3Jr
U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCku
ZGF0YSgpLCBudWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKIH0KIAogdm9pZCBw
cmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCmluZGV4IDc0ZDEwOGEuLjY3ZjE5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cC5jcHAKQEAgLTI4LDE3ICsyOCwyMiBAQAogI2luY2x1ZGUgIk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oIgogCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRl
ICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKFNvdXBTZXNzaW9uKiBz
ZXNzaW9uKQotICAgIDogbV9zZXNzaW9uKGFkb3B0R1JlZihzZXNzaW9uKSkKK05ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0
d29ya1Nlc3Npb24+IHNlc3Npb24pCisgICAgOiBtX3Nlc3Npb24oc3RkOjptb3ZlKHNlc3Npb24p
KQogICAgICwgbV9pc1ByaXZhdGUoZmFsc2UpCiB7CiB9CiAKK05ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6fk5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpCit7Cit9CisKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgZGVmYXVsdFNlc3Npb24oKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CkBAIC00OSwyMCArNTQsMzAgQEAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBkZWZhdWx0U2Vzc2lvbigpCiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCkKIHsKICAgICBpZiAoIWRlZmF1bHRTZXNzaW9uKCkpCi0gICAgICAgIGRlZmF1bHRTZXNzaW9u
KCkgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUmVzb3VyY2VIYW5k
bGU6OmRlZmF1bHRTZXNzaW9uKCkpOworICAgICAgICBkZWZhdWx0U2Vzc2lvbigpID0gc3RkOjpt
YWtlX3VuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KG51bGxwdHIpOwogICAgIHJldHVybiAq
ZGVmYXVsdFNlc3Npb24oKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgYXV0byBzZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxO
ZXR3b3JrU3RvcmFnZVNlc3Npb24+KFJlc291cmNlSGFuZGxlOjpjcmVhdGVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCkpOworICAgIGF1dG8gc2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPihTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKSk7CiAgICAgc2Vzc2lvbi0+bV9pc1ByaXZhdGUgPSB0cnVlOwogICAgIHJldHVy
biBzZXNzaW9uOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdU
ZXN0aW5nU2Vzc2lvbigpCiB7Ci0gICAgZGVmYXVsdFNlc3Npb24oKSA9IHN0ZDo6bWFrZV91bmlx
dWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlVGVzdGluZ1Nl
c3Npb24oKSk7CisgICAgZGVmYXVsdFNlc3Npb24oKSA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPihTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVRlc3RpbmdTZXNzaW9u
KCkpOworfQorCitTb3VwTmV0d29ya1Nlc3Npb24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c291
cE5ldHdvcmtTZXNzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZXNzaW9uID8gKm1fc2Vz
c2lvbiA6IFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKTsKK30KKwordm9pZCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFNvdXBOZXR3b3JrU2Vzc2lvbihzdGQ6OnVuaXF1ZV9w
dHI8U291cE5ldHdvcmtTZXNzaW9uPiBzZXNzaW9uKQoreworICAgIG1fc2Vzc2lvbiA9IHN0ZDo6
bW92ZShzZXNzaW9uKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCAwN2E1M2Ey
Li40YzcwNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2lu
Y2x1ZGUgIkdPd25QdHJTb3VwLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRl
ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC00NCw2ICs0Myw3IEBACiAjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNp
bmNsdWRlICJTb3VwVVJJVXRpbHMuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNs
dWRlIDxlcnJuby5oPgpAQCAtNzIsMTUgKzcyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1pbmxpbmUgc3RhdGljIHZvaWQgc291cExvZ1ByaW50ZXIoU291cExvZ2dlciosIFNvdXBMb2dn
ZXJMb2dMZXZlbCwgY2hhciBkaXJlY3Rpb24sIGNvbnN0IGNoYXIqIGRhdGEsIGdwb2ludGVyKQot
ewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShkaXJlY3Rpb24pOwotICAgIFVO
VVNFRF9QQVJBTShkYXRhKTsKLSNlbmRpZgotICAgIExPRyhOZXR3b3JrLCAiJWMgJXMiLCBkaXJl
Y3Rpb24sIGRhdGEpOwotfQotCiBzdGF0aWMgYm9vbCBsb2FkaW5nU3luY2hyb25vdXNSZXF1ZXN0
ID0gZmFsc2U7CiBzdGF0aWMgY29uc3Qgc2l6ZV90IGdEZWZhdWx0UmVhZEJ1ZmZlclNpemUgPSA4
MTkyOwogCkBAIC0yNjAsOCArMjUxLDggQEAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291
cmNlSGFuZGxlSW50ZXJuYWwoKQogc3RhdGljIFNvdXBTZXNzaW9uKiBzZXNzaW9uRnJvbUNvbnRl
eHQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKCFjb250ZXh0IHx8ICFj
b250ZXh0LT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBSZXNvdXJjZUhhbmRsZTo6ZGVmYXVs
dFNlc3Npb24oKTsKLSAgICByZXR1cm4gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5zb3VwU2Vz
c2lvbigpOworICAgICAgICByZXR1cm4gU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lv
bigpLnNvdXBTZXNzaW9uKCk7CisgICAgcmV0dXJuIGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCku
c291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKTsKIH0KIAogUmVzb3VyY2VIYW5kbGU6
On5SZXNvdXJjZUhhbmRsZSgpCkBAIC0yNjksMzYgKzI2MCw5IEBAIFJlc291cmNlSGFuZGxlOjp+
UmVzb3VyY2VIYW5kbGUoKQogICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbih0aGlzLCB0
cnVlKTsKIH0KIAotc3RhdGljIHZvaWQgZW5zdXJlU2Vzc2lvbklzSW5pdGlhbGl6ZWQoU291cFNl
c3Npb24qIHNlc3Npb24pCi17Ci0gICAgaWYgKGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNl
c3Npb24pLCAid2Via2l0LWluaXQiKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHNlc3Np
b24gPT0gUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCkpIHsKLSAgICAgICAgU291cENv
b2tpZUphciogamFyID0gU09VUF9DT09LSUVfSkFSKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShz
ZXNzaW9uLCBTT1VQX1RZUEVfQ09PS0lFX0pBUikpOwotICAgICAgICBpZiAoIWphcikKLSAgICAg
ICAgICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1NFU1NJT05fRkVB
VFVSRShzb3VwQ29va2llSmFyKCkpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc2V0U291
cENvb2tpZUphcihqYXIpOwotICAgIH0KLQotI2lmICFMT0dfRElTQUJMRUQKLSAgICBpZiAoIXNv
dXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1RZUEVfTE9HR0VSKSAmJiBMb2dO
ZXR3b3JrLnN0YXRlID09IFdURkxvZ0NoYW5uZWxPbikgewotICAgICAgICBTb3VwTG9nZ2VyKiBs
b2dnZXIgPSBzb3VwX2xvZ2dlcl9uZXcoc3RhdGljX2Nhc3Q8U291cExvZ2dlckxvZ0xldmVsPihT
T1VQX0xPR0dFUl9MT0dfQk9EWSksIC0xKTsKLSAgICAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0
dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFUVVJFKGxvZ2dlcikpOwotICAgICAgICBzb3Vw
X2xvZ2dlcl9zZXRfcHJpbnRlcihsb2dnZXIsIHNvdXBMb2dQcmludGVyLCAwLCAwKTsKLSAgICAg
ICAgZ19vYmplY3RfdW5yZWYobG9nZ2VyKTsKLSAgICB9Ci0jZW5kaWYgLy8gIUxPR19ESVNBQkxF
RAotCi0gICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1Qoc2Vzc2lvbiksICJ3ZWJraXQtaW5p
dCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4ZGVhZGJlZWYpKTsKLX0KLQogU291cFNlc3Np
b24qIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OnNvdXBTZXNzaW9uKCkKIHsKLSAgICBTb3VwU2Vz
c2lvbiogc2Vzc2lvbiA9IHNlc3Npb25Gcm9tQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAg
IGVuc3VyZVNlc3Npb25Jc0luaXRpYWxpemVkKHNlc3Npb24pOwotICAgIHJldHVybiBzZXNzaW9u
OworICAgIHJldHVybiBzZXNzaW9uRnJvbUNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKIH0KIAog
Ym9vbCBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsbGVkT3JDbGllbnRsZXNzKCkKQEAgLTg3OSwxMyAr
ODQzLDkgQEAgc3RhdGljIHZvaWQgd3JvdGVCb2R5Q2FsbGJhY2soU291cE1lc3NhZ2UqLCBncG9p
bnRlciBkYXRhKQogICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCktPnNlbmRF
bmQgPSBtaWxpc2Vjb25kc1NpbmNlUmVxdWVzdChkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRp
bWluZygpLT5yZXF1ZXN0VGltZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlcXVlc3RTdGFydGVkQ2Fs
bGJhY2soU291cFNlc3Npb24qLCBTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIFNvdXBTb2NrZXQq
LCBncG9pbnRlcikKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFN0YXJ0UmVxdWVzdCgpCiB7Ci0g
ICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhh
bmRsZSo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhhbmRsZSIp
KTsKLSAgICBpZiAoIWhhbmRsZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKKyAgICBSZXNvdXJjZUhhbmRs
ZUludGVybmFsKiBkID0gZ2V0SW50ZXJuYWwoKTsKICAgICBpZiAoIWQtPm1fcmVzcG9uc2UucmVz
b3VyY2VMb2FkVGltaW5nKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTQzMSw2MiArMTM5MSw2
IEBAIHN0YXRpYyBnYm9vbGVhbiByZXF1ZXN0VGltZW91dENhbGxiYWNrKGdwb2ludGVyIGRhdGEp
CiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgdm9pZCBhdXRoZW50aWNhdGVDYWxsYmFj
ayhTb3VwU2Vzc2lvbiogc2Vzc2lvbiwgU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBTb3VwQXV0
aCogc291cEF1dGgsIGdib29sZWFuIHJldHJ5aW5nKQotewotICAgIFJlZlB0cjxSZXNvdXJjZUhh
bmRsZT4gaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihnX29iamVjdF9nZXRf
ZGF0YShHX09CSkVDVChzb3VwTWVzc2FnZSksICJoYW5kbGUiKSk7Ci0gICAgaWYgKCFoYW5kbGUp
Ci0gICAgICAgIHJldHVybjsKLSAgICBoYW5kbGUtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShzZXNzaW9uLCBzb3VwTWVzc2FnZSwgc291
cEF1dGgsIHJldHJ5aW5nLCBoYW5kbGUuZ2V0KCkpKTsKLX0KLQotc3RhdGljIFNvdXBTZXNzaW9u
KiBjcmVhdGVTb3VwU2Vzc2lvbigpCi17Ci0gICAgLy8gVmFsdWVzIHRha2VuIGZyb20gaHR0cDov
L3d3dy5icm93c2Vyc2NvcGUub3JnLyAgZm9sbG93aW5nCi0gICAgLy8gdGhlIHJ1bGUgIkRvIFdo
YXQgRXZlcnkgT3RoZXIgTW9kZXJuIEJyb3dzZXIgSXMgRG9pbmciLiBUaGV5IHNlZW0KLSAgICAv
LyB0byBzaWduaWZpY2FudGx5IGltcHJvdmUgcGFnZSBsb2FkaW5nIHRpbWUgY29tcGFyZWQgdG8g
c291cCdzCi0gICAgLy8gZGVmYXVsdCB2YWx1ZXMuCi0gICAgc3RhdGljIGNvbnN0IGludCBtYXhD
b25uZWN0aW9ucyA9IDM1OwotICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4Q29ubmVjdGlvbnNQZXJI
b3N0ID0gNjsKLQotICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gc291cF9zZXNzaW9uX2FzeW5j
X25ldygpOwotICAgIGdfb2JqZWN0X3NldChzZXNzaW9uLAotICAgICAgICBTT1VQX1NFU1NJT05f
TUFYX0NPTk5TLCBtYXhDb25uZWN0aW9ucywKLSAgICAgICAgU09VUF9TRVNTSU9OX01BWF9DT05O
U19QRVJfSE9TVCwgbWF4Q29ubmVjdGlvbnNQZXJIb3N0LAotICAgICAgICBTT1VQX1NFU1NJT05f
QUREX0ZFQVRVUkVfQllfVFlQRSwgU09VUF9UWVBFX0NPTlRFTlRfREVDT0RFUiwKLSAgICAgICAg
U09VUF9TRVNTSU9OX0FERF9GRUFUVVJFX0JZX1RZUEUsIFNPVVBfVFlQRV9DT05URU5UX1NOSUZG
RVIsCi0gICAgICAgIFNPVVBfU0VTU0lPTl9BRERfRkVBVFVSRV9CWV9UWVBFLCBTT1VQX1RZUEVf
UFJPWFlfUkVTT0xWRVJfREVGQVVMVCwKLSAgICAgICAgU09VUF9TRVNTSU9OX1VTRV9USFJFQURf
Q09OVEVYVCwgVFJVRSwKLSAgICAgICAgTlVMTCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChzZXNz
aW9uLCAiYXV0aGVudGljYXRlIiwgR19DQUxMQkFDSyhhdXRoZW50aWNhdGVDYWxsYmFjayksIDAp
OwotCi0jaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgZ19zaWduYWxfY29ubmVjdChzZXNzaW9u
LCAicmVxdWVzdC1zdGFydGVkIiwgR19DQUxMQkFDSyhyZXF1ZXN0U3RhcnRlZENhbGxiYWNrKSwg
MCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBzZXNzaW9uOwotfQotCi1Tb3VwU2Vzc2lvbiogUmVz
b3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCkKLXsKLSAgICBzdGF0aWMgU291cFNlc3Npb24q
IHNlc3Npb24gPSBjcmVhdGVTb3VwU2Vzc2lvbigpOwotICAgIHJldHVybiBzZXNzaW9uOwotfQot
Ci1Tb3VwU2Vzc2lvbiogUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZVRlc3RpbmdTZXNzaW9uKCkKLXsK
LSAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IGNyZWF0ZVNvdXBTZXNzaW9uKCk7Ci0gICAgLy8g
VGhlIHRlc3Rpbmcgc2Vzc2lvbiBvcGVyYXRlcyB3aXRoIHRoZSBkZWZhdWx0IGNvb2tpZSBqYXIu
Ci0gICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFU
VVJFKHNvdXBDb29raWVKYXIoKSkpOwotICAgIHJldHVybiBzZXNzaW9uOwotfQotCi1Tb3VwU2Vz
c2lvbiogUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQotewot
ICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gY3JlYXRlU291cFNlc3Npb24oKTsKLSAgICBzb3Vw
X3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9TRVNTSU9OX0ZFQVRVUkUoY3JlYXRl
UHJpdmF0ZUJyb3dzaW5nQ29va2llSmFyKCkpKTsKLSAgICByZXR1cm4gc2Vzc2lvbjsKLX0KLQog
dWludDY0X3QgUmVzb3VyY2VIYW5kbGU6OmdldFNvdXBSZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJRChT
b3VwUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICB1aW50NjRfdCogaW5pdGlhdGluZ1BhZ2VJRFB0
ciA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Kj4oZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QocmVx
dWVzdCksIGdTb3VwUmVxdWVzdEluaXRpYXRpbmdQYWdlSURLZXkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lv
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ0ODM5NAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0
d29ya1Nlc3Npb24uY3BwCkBAIC0wLDAgKzEsMjc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNv
dXBOZXR3b3JrU2Vzc2lvbi5oIgorCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKKyNpbmNsdWRlICJDb29raWVKYXJTb3VwLmgiCisjaW5jbHVkZSAiR093blB0clNvdXAuaCIK
KyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNs
dWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCisjaWYgUExBVEZPUk0oRUZMKQorI2lu
Y2x1ZGUgIlByb3h5UmVzb2x2ZXJTb3VwLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisjaWYgIUxPR19ESVNBQkxFRAoraW5saW5lIHN0YXRpYyB2b2lkIHNvdXBMb2dQcmludGVy
KFNvdXBMb2dnZXIqLCBTb3VwTG9nZ2VyTG9nTGV2ZWwsIGNoYXIgZGlyZWN0aW9uLCBjb25zdCBj
aGFyKiBkYXRhLCBncG9pbnRlcikKK3sKKyAgICBMT0coTmV0d29yaywgIiVjICVzIiwgZGlyZWN0
aW9uLCBkYXRhKTsKK30KKyNlbmRpZgorCitTb3VwTmV0d29ya1Nlc3Npb24mIFNvdXBOZXR3b3Jr
U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
b3VwTmV0d29ya1Nlc3Npb24+IG5ldHdvcmtTZXNzaW9uKHNvdXBDb29raWVKYXIoKSk7CisgICAg
cmV0dXJuIG5ldHdvcmtTZXNzaW9uOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdvcmtT
ZXNzaW9uPiBTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
KQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdvcmtTZXNzaW9uPihuZXcg
U291cE5ldHdvcmtTZXNzaW9uKHNvdXBDb29raWVKYXIoKSkpOworfQorCitzdGQ6OnVuaXF1ZV9w
dHI8U291cE5ldHdvcmtTZXNzaW9uPiBTb3VwTmV0d29ya1Nlc3Npb246OmNyZWF0ZVRlc3RpbmdT
ZXNzaW9uKCkKK3sKKyAgICBHUmVmUHRyPFNvdXBDb29raWVKYXI+IGNvb2tpZUphciA9IGFkb3B0
R1JlZihjcmVhdGVQcml2YXRlQnJvd3NpbmdDb29raWVKYXIoKSk7CisgICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+KG5ldyBTb3VwTmV0d29ya1Nlc3Npb24oY29v
a2llSmFyLmdldCgpKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+
IFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlRm9yU291cFNlc3Npb24oU291cFNlc3Npb24qIHNv
dXBTZXNzaW9uKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdvcmtTZXNz
aW9uPihuZXcgU291cE5ldHdvcmtTZXNzaW9uKHNvdXBTZXNzaW9uKSk7Cit9CisKK3N0YXRpYyB2
b2lkIGF1dGhlbnRpY2F0ZUNhbGxiYWNrKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2Fn
ZSogc291cE1lc3NhZ2UsIFNvdXBBdXRoKiBzb3VwQXV0aCwgZ2Jvb2xlYW4gcmV0cnlpbmcpCit7
CisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJj
ZUhhbmRsZSo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhhbmRs
ZSIpKTsKKyAgICBpZiAoIWhhbmRsZSkKKyAgICAgICAgcmV0dXJuOworICAgIGhhbmRsZS0+ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHNl
c3Npb24sIHNvdXBNZXNzYWdlLCBzb3VwQXV0aCwgcmV0cnlpbmcsIGhhbmRsZS5nZXQoKSkpOwor
fQorCitzdGF0aWMgdm9pZCByZXF1ZXN0U3RhcnRlZENhbGxiYWNrKFNvdXBTZXNzaW9uKiwgU291
cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBTb3VwU29ja2V0KiwgZ3BvaW50ZXIpCit7CisgICAgUmVm
UHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+
KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhhbmRsZSIpKTsKKyAg
ICBpZiAoIWhhbmRsZSkKKyAgICAgICAgcmV0dXJuOworICAgIGhhbmRsZS0+ZGlkU3RhcnRSZXF1
ZXN0KCk7Cit9CisKK1NvdXBOZXR3b3JrU2Vzc2lvbjo6U291cE5ldHdvcmtTZXNzaW9uKFNvdXBD
b29raWVKYXIqIGNvb2tpZUphcikKKyAgICA6IG1fc291cFNlc3Npb24oYWRvcHRHUmVmKHNvdXBf
c2Vzc2lvbl9hc3luY19uZXcoKSkpCit7CisgICAgLy8gVmFsdWVzIHRha2VuIGZyb20gaHR0cDov
L3d3dy5icm93c2Vyc2NvcGUub3JnLyBmb2xsb3dpbmcKKyAgICAvLyB0aGUgcnVsZSAiRG8gV2hh
dCBFdmVyeSBPdGhlciBNb2Rlcm4gQnJvd3NlciBJcyBEb2luZyIuIFRoZXkgc2VlbQorICAgIC8v
IHRvIHNpZ25pZmljYW50bHkgaW1wcm92ZSBwYWdlIGxvYWRpbmcgdGltZSBjb21wYXJlZCB0byBz
b3VwJ3MKKyAgICAvLyBkZWZhdWx0IHZhbHVlcy4KKyAgICBzdGF0aWMgY29uc3QgaW50IG1heENv
bm5lY3Rpb25zID0gMzU7CisgICAgc3RhdGljIGNvbnN0IGludCBtYXhDb25uZWN0aW9uc1Blckhv
c3QgPSA2OworCisgICAgZ19vYmplY3Rfc2V0KG1fc291cFNlc3Npb24uZ2V0KCksCisgICAgICAg
IFNPVVBfU0VTU0lPTl9NQVhfQ09OTlMsIG1heENvbm5lY3Rpb25zLAorICAgICAgICBTT1VQX1NF
U1NJT05fTUFYX0NPTk5TX1BFUl9IT1NULCBtYXhDb25uZWN0aW9uc1Blckhvc3QsCisgICAgICAg
IFNPVVBfU0VTU0lPTl9BRERfRkVBVFVSRV9CWV9UWVBFLCBTT1VQX1RZUEVfQ09OVEVOVF9ERUNP
REVSLAorICAgICAgICBTT1VQX1NFU1NJT05fQUREX0ZFQVRVUkVfQllfVFlQRSwgU09VUF9UWVBF
X0NPTlRFTlRfU05JRkZFUiwKKyAgICAgICAgU09VUF9TRVNTSU9OX0FERF9GRUFUVVJFX0JZX1RZ
UEUsIFNPVVBfVFlQRV9QUk9YWV9SRVNPTFZFUl9ERUZBVUxULAorICAgICAgICBTT1VQX1NFU1NJ
T05fQUREX0ZFQVRVUkUsIGNvb2tpZUphciwKKyAgICAgICAgU09VUF9TRVNTSU9OX1VTRV9USFJF
QURfQ09OVEVYVCwgVFJVRSwKKyAgICAgICAgbnVsbHB0cik7CisKKyAgICBzZXR1cExvZ2dlcigp
OworCisgICAgZ19zaWduYWxfY29ubmVjdChtX3NvdXBTZXNzaW9uLmdldCgpLCAiYXV0aGVudGlj
YXRlIiwgR19DQUxMQkFDSyhhdXRoZW50aWNhdGVDYWxsYmFjayksIG51bGxwdHIpOworI2lmIEVO
QUJMRShXRUJfVElNSU5HKQorICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9zb3VwU2Vzc2lvbi5nZXQo
KSwgInJlcXVlc3Qtc3RhcnRlZCIsIEdfQ0FMTEJBQ0socmVxdWVzdFN0YXJ0ZWRDYWxsYmFjayks
IG51bGxwdHIpOworI2VuZGlmCit9CisKK1NvdXBOZXR3b3JrU2Vzc2lvbjo6U291cE5ldHdvcmtT
ZXNzaW9uKFNvdXBTZXNzaW9uKiBzb3VwU2Vzc2lvbikKKyAgICA6IG1fc291cFNlc3Npb24oc291
cFNlc3Npb24pCit7CisgICAgc2V0dXBMb2dnZXIoKTsKK30KKworU291cE5ldHdvcmtTZXNzaW9u
Ojp+U291cE5ldHdvcmtTZXNzaW9uKCkKK3sKK30KKwordm9pZCBTb3VwTmV0d29ya1Nlc3Npb246
OnNldHVwTG9nZ2VyKCkKK3sKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgaWYgKExvZ05ldHdvcmsu
c3RhdGUgIT0gV1RGTG9nQ2hhbm5lbE9uIHx8IHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShtX3Nv
dXBTZXNzaW9uLmdldCgpLCBTT1VQX1RZUEVfTE9HR0VSKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgR1JlZlB0cjxTb3VwTG9nZ2VyPiBsb2dnZXIgPSBhZG9wdEdSZWYoc291cF9sb2dnZXJfbmV3
KFNPVVBfTE9HR0VSX0xPR19CT0RZLCAtMSkpOworICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVy
ZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1NFU1NJT05fRkVBVFVSRShsb2dnZXIuZ2V0KCkp
KTsKKyAgICBzb3VwX2xvZ2dlcl9zZXRfcHJpbnRlcihsb2dnZXIuZ2V0KCksIHNvdXBMb2dQcmlu
dGVyLCBudWxscHRyLCBudWxscHRyKTsKKyNlbmRpZgorfQorCit2b2lkIFNvdXBOZXR3b3JrU2Vz
c2lvbjo6c2V0Q29va2llSmFyKFNvdXBDb29raWVKYXIqIGphcikKK3sKKyAgICBpZiAoU291cENv
b2tpZUphciogY3VycmVudEphciA9IGNvb2tpZUphcigpKQorICAgICAgICBzb3VwX3Nlc3Npb25f
cmVtb3ZlX2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9TRVNTSU9OX0ZFQVRVUkUo
Y3VycmVudEphcikpOworICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShtX3NvdXBTZXNzaW9u
LmdldCgpLCBTT1VQX1NFU1NJT05fRkVBVFVSRShqYXIpKTsKK30KKworU291cENvb2tpZUphciog
U291cE5ldHdvcmtTZXNzaW9uOjpjb29raWVKYXIoKSBjb25zdAoreworICAgIHJldHVybiBTT1VQ
X0NPT0tJRV9KQVIoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCks
IFNPVVBfVFlQRV9DT09LSUVfSkFSKSk7Cit9CisKK3ZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpz
ZXRDYWNoZShTb3VwQ2FjaGUqIGNhY2hlKQoreworICAgIEFTU0VSVCghc291cF9zZXNzaW9uX2dl
dF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9DQUNIRSkpOworICAgIHNv
dXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1NFU1NJT05f
RkVBVFVSRShjYWNoZSkpOworfQorCitTb3VwQ2FjaGUqIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2Fj
aGUoKSBjb25zdAoreworICAgIFNvdXBTZXNzaW9uRmVhdHVyZSogc291cENhY2hlID0gc291cF9z
ZXNzaW9uX2dldF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9DQUNIRSk7
CisgICAgcmV0dXJuIHNvdXBDYWNoZSA/IFNPVVBfQ0FDSEUoc291cENhY2hlKSA6IG51bGxwdHI7
Cit9CisKK3ZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpzZXRTU0xQb2xpY3koU1NMUG9saWN5IGZs
YWdzKQoreworICAgIGdfb2JqZWN0X3NldChtX3NvdXBTZXNzaW9uLmdldCgpLAorICAgICAgICBT
T1VQX1NFU1NJT05fU1NMX1VTRV9TWVNURU1fQ0FfRklMRSwgZmxhZ3MgJiBTU0xVc2VTeXN0ZW1D
QUZpbGUgPyBUUlVFIDogRkFMU0UsCisgICAgICAgIFNPVVBfU0VTU0lPTl9TU0xfU1RSSUNULCBm
bGFncyAmIFNTTFN0cmljdCA/IFRSVUUgOiBGQUxTRSwKKyAgICAgICAgbnVsbHB0cik7Cit9CisK
K1NvdXBOZXR3b3JrU2Vzc2lvbjo6U1NMUG9saWN5IFNvdXBOZXR3b3JrU2Vzc2lvbjo6c3NsUG9s
aWN5KCkgY29uc3QKK3sKKyAgICBnYm9vbGVhbiB1c2VTeXN0ZW1DQUZpbGUsIHN0cmljdDsKKyAg
ICBnX29iamVjdF9nZXQobV9zb3VwU2Vzc2lvbi5nZXQoKSwKKyAgICAgICAgU09VUF9TRVNTSU9O
X1NTTF9VU0VfU1lTVEVNX0NBX0ZJTEUsICZ1c2VTeXN0ZW1DQUZpbGUsCisgICAgICAgIFNPVVBf
U0VTU0lPTl9TU0xfU1RSSUNULCAmc3RyaWN0LAorICAgICAgICBudWxscHRyKTsKKworICAgIFNT
TFBvbGljeSBmbGFncyA9IDA7CisgICAgaWYgKHVzZVN5c3RlbUNBRmlsZSkKKyAgICAgICAgZmxh
Z3MgfD0gU1NMVXNlU3lzdGVtQ0FGaWxlOworICAgIGlmIChzdHJpY3QpCisgICAgICAgIGZsYWdz
IHw9IFNTTFN0cmljdDsKKyAgICByZXR1cm4gZmxhZ3M7Cit9CisKK3ZvaWQgU291cE5ldHdvcmtT
ZXNzaW9uOjpzZXRIVFRQUHJveHkoY29uc3QgY2hhciogaHR0cFByb3h5LCBjb25zdCBjaGFyKiBo
dHRwUHJveHlFeGNlcHRpb25zKQoreworI2lmIFBMQVRGT1JNKEVGTCkKKyAgICAvLyBPbmx5IGZv
ciBFRkwgYmVjYXVzZSBHVEsgcG9ydCB1c2VzIHRoZSBkZWZhdWx0IHJlc29sdmVyLCB3aGljaCB1
c2VzIEdJTydzIHByb3h5IHJlc29sdmVyLgorICAgIGlmICghaHR0cFByb3h5KSB7CisgICAgICAg
IHNvdXBfc2Vzc2lvbl9yZW1vdmVfZmVhdHVyZV9ieV90eXBlKG1fc291cFNlc3Npb24uZ2V0KCks
IFNPVVBfVFlQRV9QUk9YWV9VUklfUkVTT0xWRVIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgR1JlZlB0cjxTb3VwUHJveHlVUklSZXNvbHZlcj4gcmVzb2x2ZXIgPSBhZG9wdEdSZWYo
c291cFByb3h5UmVzb2x2ZXJXa05ldyhodHRwUHJveHksIGh0dHBQcm94eUV4Y2VwdGlvbnMpKTsK
KyAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9T
RVNTSU9OX0ZFQVRVUkUocmVzb2x2ZXIuZ2V0KCkpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KGh0dHBQcm94eSk7CisgICAgVU5VU0VEX1BBUkFNKGh0dHBQcm94eUV4Y2VwdGlvbnMpOworI2Vu
ZGlmCit9CisKK2NoYXIqIFNvdXBOZXR3b3JrU2Vzc2lvbjo6aHR0cFByb3h5KCkgY29uc3QKK3sK
KyNpZiBQTEFURk9STShFRkwpCisgICAgU291cFNlc3Npb25GZWF0dXJlKiBzb3VwUmVzb2x2ZXIg
PSBzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9UWVBF
X1BST1hZX1VSSV9SRVNPTFZFUik7CisgICAgaWYgKCFzb3VwUmVzb2x2ZXIpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgR093blB0cjxTb3VwVVJJPiB1cmk7CisgICAgZ19vYmplY3Rf
Z2V0KHNvdXBSZXNvbHZlciwgU09VUF9QUk9YWV9SRVNPTFZFUl9XS19QUk9YWV9VUkksICZ1cmku
b3V0UHRyKCksIG51bGxwdHIpOworCisgICAgcmV0dXJuIHVyaSA/IHNvdXBfdXJpX3RvX3N0cmlu
Zyh1cmkuZ2V0KCksIEZBTFNFKSA6IG51bGxwdHI7CisjZWxzZQorICAgIHJldHVybiBudWxscHRy
OworI2VuZGlmCit9CisKK3ZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpzZXR1cEhUVFBQcm94eUZy
b21FbnZpcm9ubWVudCgpCit7CisjaWYgUExBVEZPUk0oRUZMKQorICAgIGNvbnN0IGNoYXIqIGh0
dHBQcm94eSA9IGdldGVudigiaHR0cF9wcm94eSIpOworICAgIGlmICghaHR0cFByb3h5KQorICAg
ICAgICByZXR1cm47CisKKyAgICBzZXRIVFRQUHJveHkoaHR0cFByb3h5LCBnZXRlbnYoIm5vX3By
b3h5IikpOworI2VuZGlmCit9CisKK3N0YXRpYyBDU3RyaW5nIGJ1aWxkQWNjZXB0TGFuZ3VhZ2Vz
KFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcykKK3sKKyAgICAvLyBJZ25vcmUgIkMiIGxvY2FsZS4K
KyAgICBzaXplX3QgcG9zaXRpb24gPSBsYW5ndWFnZXMuZmluZCgiYyIpOworICAgIGlmIChwb3Np
dGlvbiAhPSBub3RGb3VuZCkKKyAgICAgICAgbGFuZ3VhZ2VzLnJlbW92ZShwb3NpdGlvbik7CisK
KyAgICAvLyBGYWxsYmFjayB0byAiZW4iIGlmIHRoZSBsaXN0IGlzIGVtcHR5LgorICAgIGlmIChs
YW5ndWFnZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gImVuIjsKKworICAgIC8vIENhbGN1
bGF0ZSBkZWx0YXMgZm9yIHRoZSBxdWFsaXR5IHZhbHVlcy4KKyAgICBpbnQgZGVsdGE7CisgICAg
aWYgKGxhbmd1YWdlcy5zaXplKCkgPCAxMCkKKyAgICAgICAgZGVsdGEgPSAxMDsKKyAgICBlbHNl
IGlmIChsYW5ndWFnZXMuc2l6ZSgpIDwgMjApCisgICAgICAgIGRlbHRhID0gNTsKKyAgICBlbHNl
CisgICAgICAgIGRlbHRhID0gMTsKKworICAgIC8vIFNldCBxdWFsaXR5IHZhbHVlcyBmb3IgZWFj
aCBsYW5ndWFnZS4KKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsYW5ndWFnZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGkpCisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKKworICAgICAgICBidWlsZGVyLmFwcGVuZChs
YW5ndWFnZXNbaV0pOworCisgICAgICAgIGludCBxdWFsaXR5ID0gMTAwIC0gaSAqIGRlbHRhOwor
ICAgICAgICBpZiAocXVhbGl0eSA+IDAgJiYgcXVhbGl0eSA8IDEwMCkgeworICAgICAgICAgICAg
Y2hhciBidWZmZXJbOF07CisgICAgICAgICAgICBnX2FzY2lpX2Zvcm1hdGQoYnVmZmVyLCA4LCAi
JS4yZiIsIHF1YWxpdHkgLyAxMDAuMCk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJp
bmc6OmZvcm1hdCgiO3E9JXMiLCBidWZmZXIpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOworfQorCit2b2lkIFNvdXBOZXR3b3JrU2Vz
c2lvbjo6c2V0QWNjZXB0TGFuZ3VhZ2VzKFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcykKK3sKKyAg
ICBnX29iamVjdF9zZXQobV9zb3VwU2Vzc2lvbi5nZXQoKSwgImFjY2VwdC1sYW5ndWFnZSIsIGJ1
aWxkQWNjZXB0TGFuZ3VhZ2VzKGxhbmd1YWdlcykuZGF0YSgpLCBudWxscHRyKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMTc5ZDIyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaApAQCAtMCwwICsx
LDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBTb3VwTmV0d29ya1Nlc3Npb25faAorI2RlZmluZSBTb3VwTmV0d29ya1Nlc3Npb25faAor
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwordHlwZWRlZiBzdHJ1
Y3QgX1NvdXBDYWNoZSBTb3VwQ2FjaGU7Cit0eXBlZGVmIHN0cnVjdCBfU291cENvb2tpZUphciBT
b3VwQ29va2llSmFyOwordHlwZWRlZiBzdHJ1Y3QgX1NvdXBTZXNzaW9uIFNvdXBTZXNzaW9uOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNvdXBOZXR3b3JrU2Vzc2lvbiB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU291cE5ldHdvcmtTZXNzaW9uKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFNvdXBOZXR3b3JrU2Vz
c2lvbj47CitwdWJsaWM6CisgICAgflNvdXBOZXR3b3JrU2Vzc2lvbigpOworCisgICAgc3RhdGlj
IFNvdXBOZXR3b3JrU2Vzc2lvbiYgZGVmYXVsdFNlc3Npb24oKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdvcmtTZXNzaW9uPiBjcmVh
dGVUZXN0aW5nU2Vzc2lvbigpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdv
cmtTZXNzaW9uPiBjcmVhdGVGb3JTb3VwU2Vzc2lvbihTb3VwU2Vzc2lvbiopOworCisgICAgZW51
bSBTU0xQb2xpY3lGbGFncyB7CisgICAgICAgIFNTTFN0cmljdCA9IDEgPDwgMCwKKyAgICAgICAg
U1NMVXNlU3lzdGVtQ0FGaWxlID0gMSA8PCAxCisgICAgfTsKKyAgICB0eXBlZGVmIHVuc2lnbmVk
IFNTTFBvbGljeTsKKworICAgIFNvdXBTZXNzaW9uKiBzb3VwU2Vzc2lvbigpIGNvbnN0IHsgcmV0
dXJuIG1fc291cFNlc3Npb24uZ2V0KCk7IH0KKworICAgIHZvaWQgc2V0Q29va2llSmFyKFNvdXBD
b29raWVKYXIqKTsKKyAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIoKSBjb25zdDsKKworICAg
IHZvaWQgc2V0Q2FjaGUoU291cENhY2hlKik7CisgICAgU291cENhY2hlKiBjYWNoZSgpIGNvbnN0
OworCisgICAgdm9pZCBzZXRTU0xQb2xpY3koU1NMUG9saWN5KTsKKyAgICBTU0xQb2xpY3kgc3Ns
UG9saWN5KCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEhUVFBQcm94eShjb25zdCBjaGFyKiBodHRw
UHJveHksIGNvbnN0IGNoYXIqIGh0dHBQcm94eUV4Y2VwdGlvbnMpOworICAgIGNoYXIqIGh0dHBQ
cm94eSgpIGNvbnN0OworICAgIHZvaWQgc2V0dXBIVFRQUHJveHlGcm9tRW52aXJvbm1lbnQoKTsK
KworICAgIHZvaWQgc2V0QWNjZXB0TGFuZ3VhZ2VzKFZlY3RvcjxTdHJpbmc+KTsKKworcHJpdmF0
ZToKKyAgICBTb3VwTmV0d29ya1Nlc3Npb24oU291cENvb2tpZUphciopOworICAgIFNvdXBOZXR3
b3JrU2Vzc2lvbihTb3VwU2Vzc2lvbiopOworCisgICAgdm9pZCBzZXR1cExvZ2dlcigpOworCisg
ICAgR1JlZlB0cjxTb3VwU2Vzc2lvbj4gbV9zb3VwU2Vzc2lvbjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZTliZGJkMC4uMThkZDFh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE0LTAxLTExICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbU09VUF0gQWRk
IFNvdXBOZXR3b3JrU2Vzc2lvbiBjbGFzcyB0byB3cmFwIGEgU291cFNlc3Npb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjgxMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0aGUgbmV3IFNvdXBO
ZXR3b3JrU2Vzc2lvbiBBUEkuCisKKyAgICAgICAgKiBld2svZXdrX2Nvb2tpZXMuY3BwOgorICAg
ICAgICAoZXdrX2Nvb2tpZXNfZmlsZV9zZXQpOgorICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6
CisgICAgICAgIChfZXdrX2luaXRfYm9keSk6CisgICAgICAgICogZXdrL2V3a19uZXR3b3JrLmNw
cDoKKyAgICAgICAgKGV3a19uZXR3b3JrX3Byb3h5X3VyaV9zZXQpOgorICAgICAgICAoZXdrX25l
dHdvcmtfcHJveHlfdXJpX2dldCk6CisgICAgICAgIChld2tfbmV0d29ya190bHNfY2VydGlmaWNh
dGVfY2hlY2tfZ2V0KToKKyAgICAgICAgKGV3a19uZXR3b3JrX3Rsc19jZXJ0aWZpY2F0ZV9jaGVj
a19zZXQpOgorICAgICAgICAoZXdrX25ldHdvcmtfdGxzX2NhX2NlcnRpZmljYXRlc19wYXRoX2dl
dCk6CisgICAgICAgIChld2tfbmV0d29ya190bHNfY2FfY2VydGlmaWNhdGVzX3BhdGhfc2V0KToK
KyAgICAgICAgKGV3a19uZXR3b3JrX2RlZmF1bHRfc291cF9zZXNzaW9uX2dldCk6CisgICAgICAg
ICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X3NvdXBfc2Vzc2lvbl9nZXQp
OgorICAgICAgICAoZXdrX3ZpZXdfc291cF9zZXNzaW9uX3NldCk6CisKIDIwMTQtMDEtMDggIFJ5
dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIE1lcmdl
IGV3a192aWV3X3NpbmdsZSBpbnRvIGV3a192aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2Nvb2tpZXMuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb29r
aWVzLmNwcAppbmRleCBiYmVlOGU0Li42MzNhZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2Nvb2tpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
Y29va2llcy5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKICNpbmNsdWRlICJld2tfY29va2llcy5oIgog
CiAjaW5jbHVkZSAiQ29va2llSmFyU291cC5oIgotI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgi
CisjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSA8RWluYS5oPgogI2lu
Y2x1ZGUgPGVpbmFfc2FmZXR5X2NoZWNrcy5oPgogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTQyLDEz
ICs0Miw5IEBAIEVpbmFfQm9vbCBld2tfY29va2llc19maWxlX3NldChjb25zdCBjaGFyKiBmaWxl
bmFtZSkKIAogICAgIHNvdXBfY29va2llX2phcl9zZXRfYWNjZXB0X3BvbGljeShjb29raWVKYXIs
IFNPVVBfQ09PS0lFX0pBUl9BQ0NFUFRfTk9fVEhJUkRfUEFSVFkpOwogCi0gICAgU291cFNlc3Np
b24qIHNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsK
LSAgICBTb3VwU2Vzc2lvbkZlYXR1cmUqIG9sZGphciA9IHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVy
ZShzZXNzaW9uLCBTT1VQX1RZUEVfQ09PS0lFX0pBUik7Ci0gICAgaWYgKG9sZGphcikKLSAgICAg
ICAgc291cF9zZXNzaW9uX3JlbW92ZV9mZWF0dXJlKHNlc3Npb24sIG9sZGphcik7Ci0KKyAgICBX
ZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc2V0Q29va2llSmFy
KGNvb2tpZUphcik7CiAgICAgV2ViQ29yZTo6c2V0U291cENvb2tpZUphcihjb29raWVKYXIpOwot
ICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1NFU1NJT05fRkVBVFVS
RShjb29raWVKYXIpKTsKKyAgICBnX29iamVjdF91bnJlZihjb29raWVKYXIpOwogCiAgICAgcmV0
dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4u
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcAppbmRleCBkNzE2Nzc3Li43
MmZmY2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5o
IgogI2luY2x1ZGUgIlN0b3JhZ2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVRyYWNrZXJD
bGllbnRFZmwuaCIKICNpbmNsdWRlICJld2tfYXV0aF9zb3VwX3ByaXZhdGUuaCIKQEAgLTIwNCw5
ICsyMDUsOCBAQCBFaW5hX0Jvb2wgX2V3a19pbml0X2JvZHkodm9pZCkKIAogICAgIFdlYkNvcmU6
OlN0b3JhZ2VUcmFja2VyOjppbml0aWFsaXplVHJhY2tlcihsb2NhbFN0b3JhZ2VEaXJlY3Rvcnku
dXRmOCgpLmRhdGEoKSwgdHJhY2tlckNsaWVudCgpKTsKIAotICAgIFNvdXBTZXNzaW9uKiBzZXNz
aW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7CiAgICAgU291
cFNlc3Npb25GZWF0dXJlKiBhdXRoX2RpYWxvZyA9IHN0YXRpY19jYXN0PFNvdXBTZXNzaW9uRmVh
dHVyZSo+KGdfb2JqZWN0X25ldyhFV0tfVFlQRV9TT1VQX0FVVEhfRElBTE9HLCAwKSk7Ci0gICAg
c291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIGF1dGhfZGlhbG9nKTsKKyAgICBzb3Vw
X3Nlc3Npb25fYWRkX2ZlYXR1cmUoV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0
U2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksIGF1dGhfZGlhbG9nKTsKIAogICAgIFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnModHJ1ZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX25ldHdvcmsuY3BwCmluZGV4IDUyZDIwYWEuLjhmNGMwNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19uZXR3b3JrLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIk5ldHdv
cmtTdGF0ZU5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJveHlSZXNvbHZlclNvdXAuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgog
I2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWluYS5oPgogI2luY2x1ZGUgPGxp
YnNvdXAvc291cC5oPgpAQCAtMzAsNTkgKzMxLDM5IEBACiAKIHZvaWQgZXdrX25ldHdvcmtfcHJv
eHlfdXJpX3NldChjb25zdCBjaGFyKiBwcm94eSkKIHsKLSAgICBTb3VwU2Vzc2lvbiogc2Vzc2lv
biA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwotCi0gICAgaWYg
KCFwcm94eSkgeworICAgIGlmICghcHJveHkpCiAgICAgICAgIEVSUigibm8gcHJveHkgdXJpLiBy
ZW1vdmUgcHJveHkgZmVhdHVyZSBpbiBzb3VwLiIpOwotICAgICAgICBzb3VwX3Nlc3Npb25fcmVt
b3ZlX2ZlYXR1cmVfYnlfdHlwZShzZXNzaW9uLCBTT1VQX1RZUEVfUFJPWFlfVVJJX1JFU09MVkVS
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFNvdXBQcm94eVVSSVJlc29sdmVyKiBy
ZXNvbHZlckVmbCA9IHNvdXBQcm94eVJlc29sdmVyV2tOZXcocHJveHksIDApOwotICAgIHNvdXBf
c2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1NFU1NJT05fRkVBVFVSRShyZXNvbHZl
ckVmbCkpOwotICAgIGdfb2JqZWN0X3VucmVmKHJlc29sdmVyRWZsKTsKKyAgICBXZWJDb3JlOjpT
b3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc2V0SFRUUFByb3h5KHByb3h5LCAw
KTsKIH0KIAogY29uc3QgY2hhciogZXdrX25ldHdvcmtfcHJveHlfdXJpX2dldCh2b2lkKQogewot
ICAgIFNvdXBVUkkqIHVyaTsKLSAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwotICAgIFNvdXBQcm94eVVSSVJlc29sdmVy
KiByZXNvbHZlciA9IFNPVVBfUFJPWFlfVVJJX1JFU09MVkVSKHNvdXBfc2Vzc2lvbl9nZXRfZmVh
dHVyZShzZXNzaW9uLCBTT1VQX1RZUEVfUFJPWFlfVVJJX1JFU09MVkVSKSk7Ci0gICAgaWYgKCFy
ZXNvbHZlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBnX29iamVjdF9nZXQocmVzb2x2ZXIs
IFNPVVBfUFJPWFlfUkVTT0xWRVJfV0tfUFJPWFlfVVJJLCAmdXJpLCBOVUxMKTsKLQorICAgIGNo
YXIqIHVyaSA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5o
dHRwUHJveHkoKTsKICAgICBpZiAoIXVyaSkgewogICAgICAgICBFUlIoIm5vIHByb3h5IHVyaSIp
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBXVEY6OlN0cmluZyBwcm94eSA9IHNv
dXBfdXJpX3RvX3N0cmluZyh1cmksIGZhbHNlKTsKLSAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFy
ZV9hZGQocHJveHkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hhcmVf
YWRkKHVyaSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfbmV0d29ya190bHNfY2VydGlmaWNhdGVfY2hl
Y2tfZ2V0KCkKIHsKLSAgICBib29sIGNoZWNrQ2VydGlmaWNhdGVzID0gZmFsc2U7Ci0KLSAgICBT
b3VwU2Vzc2lvbiogZGVmYXVsdFNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVm
YXVsdFNlc3Npb24oKTsKLSAgICBnX29iamVjdF9nZXQoZGVmYXVsdFNlc3Npb24sICJzc2wtc3Ry
aWN0IiwgJmNoZWNrQ2VydGlmaWNhdGVzLCBOVUxMKTsKLQotICAgIHJldHVybiBjaGVja0NlcnRp
ZmljYXRlczsKKyAgICB1bnNpZ25lZCBwb2xpY3kgPSBXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Np
b246OmRlZmF1bHRTZXNzaW9uKCkuc3NsUG9saWN5KCk7CisgICAgcmV0dXJuIHBvbGljeSAmIFdl
YkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6U1NMU3RyaWN0OwogfQogCiB2b2lkIGV3a19uZXR3
b3JrX3Rsc19jZXJ0aWZpY2F0ZV9jaGVja19zZXQoRWluYV9Cb29sIGNoZWNrQ2VydGlmaWNhdGVz
KQogewotICAgIFNvdXBTZXNzaW9uKiBkZWZhdWx0U2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwotICAgIGdfb2JqZWN0X3NldChkZWZhdWx0U2Vzc2lv
biwgInNzbC1zdHJpY3QiLCBjaGVja0NlcnRpZmljYXRlcywgTlVMTCk7CisgICAgdW5zaWduZWQg
cG9saWN5ID0gV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNz
bFBvbGljeSgpOworICAgIFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Np
b24oKS5zZXRTU0xQb2xpY3kocG9saWN5IHwgV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpT
U0xTdHJpY3QpOwogfQogCiBjb25zdCBjaGFyKiBld2tfbmV0d29ya190bHNfY2FfY2VydGlmaWNh
dGVzX3BhdGhfZ2V0KCkKIHsKICAgICBjb25zdCBjaGFyKiBidW5kbGVQYXRoID0gMDsKIAotICAg
IFNvdXBTZXNzaW9uKiBkZWZhdWx0U2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpk
ZWZhdWx0U2Vzc2lvbigpOworICAgIFNvdXBTZXNzaW9uKiBkZWZhdWx0U2Vzc2lvbiA9IFdlYkNv
cmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zb3VwU2Vzc2lvbigpOwog
ICAgIGdfb2JqZWN0X2dldChkZWZhdWx0U2Vzc2lvbiwgInNzbC1jYS1maWxlIiwgJmJ1bmRsZVBh
dGgsIE5VTEwpOwogCiAgICAgcmV0dXJuIGJ1bmRsZVBhdGg7CkBAIC05MCwxMSArNzEsMTEgQEAg
Y29uc3QgY2hhciogZXdrX25ldHdvcmtfdGxzX2NhX2NlcnRpZmljYXRlc19wYXRoX2dldCgpCiAK
IHZvaWQgZXdrX25ldHdvcmtfdGxzX2NhX2NlcnRpZmljYXRlc19wYXRoX3NldChjb25zdCBjaGFy
KiBidW5kbGVQYXRoKQogewotICAgIFNvdXBTZXNzaW9uKiBkZWZhdWx0U2Vzc2lvbiA9IFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICAgIFNvdXBTZXNzaW9uKiBk
ZWZhdWx0U2Vzc2lvbiA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Np
b24oKS5zb3VwU2Vzc2lvbigpOwogICAgIGdfb2JqZWN0X3NldChkZWZhdWx0U2Vzc2lvbiwgInNz
bC1jYS1maWxlIiwgYnVuZGxlUGF0aCwgTlVMTCk7CiB9CiAKIFNvdXBTZXNzaW9uKiBld2tfbmV0
d29ya19kZWZhdWx0X3NvdXBfc2Vzc2lvbl9nZXQoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6U291
cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNvdXBTZXNzaW9uKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCAzY2YwZWVjLi4zZjdkMzliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlICJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVk
ZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJjX2luc3RhbmNlLmgiCiAjaW5jbHVk
ZSAiZXdrX2NvbnRleHRtZW51X3ByaXZhdGUuaCIKQEAgLTQ1NDUsNyArNDU0Niw3IEBAIFNvdXBT
ZXNzaW9uKiBld2tfdmlld19zb3VwX3Nlc3Npb25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tW
aWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAw
KTsKLSAgICByZXR1cm4gcHJpdi0+c3RvcmFnZVNlc3Npb24tPnNvdXBTZXNzaW9uKCk7CisgICAg
cmV0dXJuIHByaXYtPnN0b3JhZ2VTZXNzaW9uLT5zb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vz
c2lvbigpOwogfQogCiB2b2lkIGV3a192aWV3X3NvdXBfc2Vzc2lvbl9zZXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIFNvdXBTZXNzaW9uKiBzZXNzaW9uKQpAQCAtNDU1Nyw3ICs0NTU4LDcgQEAgdm9p
ZCBld2tfdmlld19zb3VwX3Nlc3Npb25fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBTb3VwU2Vz
c2lvbiogc2Vzc2lvbikKICAgICAgICAgICAgICJhIFNvdXBTZXNzaW9uU3luYyB3YXMgcHJvdmlk
ZWQuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcHJpdi0+c3RvcmFnZVNlc3Npb24t
PnNldFNvdXBTZXNzaW9uKHNlc3Npb24pOworICAgIHByaXYtPnN0b3JhZ2VTZXNzaW9uLT5zZXRT
b3VwTmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpjcmVhdGVGb3JT
b3VwU2Vzc2lvbihzZXNzaW9uKSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2Vu
YWJsZV94c3NfYXVkaXRvcl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggY2VlY2UxZi4uZTE4MmM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDE0LTAxLTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbU09VUF0gQWRkIFNvdXBOZXR3b3JrU2Vzc2lvbiBjbGFzcyB0byB3
cmFwIGEgU291cFNlc3Npb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNjgxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwOgorICAgICAgICAod2Via2l0X2dl
dF9kZWZhdWx0X3Nlc3Npb24pOiBVc2UgdGhlIG5ldyBTb3VwTmV0d29ya1Nlc3Npb24gQVBJCisg
ICAgICAgIHRvIGdldCB0aGUgZGVmYXVsdCBTb3VwU2Vzc2lvbgorCiAyMDE0LTAxLTA4ICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRk
IHhkZy5vcmlnaW4udXJsIGV4dGVuZGVkIGF0dHJpYnV0ZSB0byBkb3dubG9hZHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzLmNwcAppbmRleCAyY2I1YmU1Li5mNjFjOGUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xvYmFscy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwCkBAIC0zOSw2
ICszOSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgorI2luY2x1
ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZ1JlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAid2Via2l0YXBwbGljYXRpb25jYWNoZS5oIgogI2luY2x1ZGUgIndlYmtp
dGZhdmljb25kYXRhYmFzZS5oIgpAQCAtODMsNyArODQsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIFNvdXBTZXNzaW9uKiB3ZWJraXRfZ2V0X2RlZmF1bHRfc2Vzc2lvbiAoKQogewogICAg
IHdlYmtpdEluaXQoKTsKLSAgICByZXR1cm4gUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9u
KCk7CisgICAgcmV0dXJuIFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zb3Vw
U2Vzc2lvbigpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjNWVlMGFiLi5lZWVmNDMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTQtMDEtMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTT1VQXSBBZGQgU291cE5ldHdvcmtT
ZXNzaW9uIGNsYXNzIHRvIHdyYXAgYSBTb3VwU2Vzc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2ODEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBuZXcgU291cE5ldHdvcmtTZXNzaW9u
IEFQSS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3Vw
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRm
b3JtU2V0Q2FjaGVNb2RlbCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVh
ckNhY2hlRm9yQWxsT3JpZ2lucyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvdW5peC9OZXR3
b3JrUHJvY2Vzc01haW5Vbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NN
YWluKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2Vy
U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFp
bkVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NNYWluRWZsKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NNYWluR3RrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vz
c1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hl
TW9kZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUNsZWFyUmVzb3Vy
Y2VDYWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpzZXRTb3VwU2Vzc2lvbkFjY2VwdExhbmd1YWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJv
Y2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6cmVnaXN0ZXJVUklT
Y2hlbWUpOgorCiAyMDE0LTAxLTEwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBGaXggcmV0dXJuIHZhbHVlIG9mIFdlYktpdERvd25s
b2FkOjpjcmVhdGVkLWRlc3RpbmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggNmQ3Y2Y5Ny4u
NThkZDVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0
ci5oPgpAQCAtNzgsNyArNzksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogewogICAgIEFT
U0VSVCghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKTsKICAgICBHUmVm
UHRyPFNvdXBDYWNoZT4gc291cENhY2hlID0gYWRvcHRHUmVmKHNvdXBfY2FjaGVfbmV3KHBhcmFt
ZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LnV0ZjgoKS5kYXRhKCksIFNPVVBfQ0FDSEVfU0lOR0xF
X1VTRVIpKTsKLSAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIFNPVVBfU0VTU0lPTl9GRUFUVVJFKHNvdXBDYWNoZS5n
ZXQoKSkpOworICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRDYWNo
ZShzb3VwQ2FjaGUuZ2V0KCkpOwogICAgIHNvdXBfY2FjaGVfbG9hZChzb3VwQ2FjaGUuZ2V0KCkp
OwogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aC5pc0Vt
cHR5KCkpIHsKQEAgLTEwMSw4ICsxMDIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9y
bVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQogICAgIHVuc2lnbmVkIGxvbmcg
dXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7CiAgICAgdW5zaWduZWQgbG9uZyB1cmxDYWNoZURp
c2tDYXBhY2l0eSA9IDA7CiAKLSAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFJlc291cmNlSGFu
ZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwotICAgIFNvdXBDYWNoZSogY2FjaGUgPSBTT1VQX0NBQ0hF
KHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1RZUEVfQ0FDSEUpKTsKKyAg
ICBTb3VwQ2FjaGUqIGNhY2hlID0gU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigp
LmNhY2hlKCk7CiAgICAgdWludDY0X3QgZGlza0ZyZWVTaXplID0gZ2V0Q2FjaGVEaXNrRnJlZVNp
emUoY2FjaGUpIC8gMTAyNCAvIDEwMjQ7CiAKICAgICB1aW50NjRfdCBtZW1TaXplID0gZ2V0TWVt
b3J5U2l6ZSgpOwpAQCAtMTI5LDggKzEyOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFy
Q2FjaGVGb3JBbGxPcmlnaW5zKHVpbnQzMl90IGNhY2hlc1RvQ2xlYXIpCiAgICAgaWYgKGNhY2hl
c1RvQ2xlYXIgPT0gSW5NZW1vcnlSZXNvdXJjZUNhY2hlc09ubHkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNz
aW9uKCk7Ci0gICAgc291cF9jYWNoZV9jbGVhcihTT1VQX0NBQ0hFKHNvdXBfc2Vzc2lvbl9nZXRf
ZmVhdHVyZShzZXNzaW9uLCBTT1VQX1RZUEVfQ0FDSEUpKSk7CisgICAgc291cF9jYWNoZV9jbGVh
cihTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUoKSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3VuaXgvTmV0d29ya1Byb2Nlc3NNYWluVW5peC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9jZXNzTWFpblVu
aXguY3BwCmluZGV4IDJjOGFlZGYuLjAzYThiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL3VuaXgvTmV0d29ya1Byb2Nlc3NNYWluVW5peC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvdW5peC9OZXR3b3JrUHJvY2Vzc01haW5Vbml4LmNw
cApAQCAtMjksMTAgKzI5LDkgQEAKIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAKLSNp
bmNsdWRlICJQcm94eVJlc29sdmVyU291cC5oIgogI2luY2x1ZGUgIldLQmFzZS5oIgogI2luY2x1
ZGUgIldlYktpdDJJbml0aWFsaXplLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRs
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdvcmtTZXNzaW9uLmg+CiAjaW5jbHVkZSA8
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy5oPgogI2luY2x1ZGUgPGVycm9yLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CkBAIC02OCwxOCArNjcsNyBAQCBXS19FWFBP
UlQgaW50IE5ldHdvcmtQcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogCiAgICAg
SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotI2lmIFVTRShTT1VQKQotICAgIFNvdXBTZXNzaW9uKiBz
ZXNzaW9uID0gUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7Ci0jaWYgUExBVEZPUk0o
RUZMKQotICAgIC8vIE9ubHkgZm9yIEVGTCBiZWNhdXNlIEdUSyBwb3J0IHVzZXMgdGhlIGRlZmF1
bHQgcmVzb2x2ZXIsIHdoaWNoIHVzZXMgR0lPJ3MgcHJveHkgcmVzb2x2ZXIuCi0gICAgY29uc3Qg
Y2hhciogaHR0cFByb3h5ID0gZ2V0ZW52KCJodHRwX3Byb3h5Iik7Ci0gICAgaWYgKGh0dHBQcm94
eSkgewotICAgICAgICBjb25zdCBjaGFyKiBub1Byb3h5ID0gZ2V0ZW52KCJub19wcm94eSIpOwot
ICAgICAgICBHUmVmUHRyPFNvdXBQcm94eVVSSVJlc29sdmVyPiByZXNvbHZlciA9IGFkb3B0R1Jl
Zihzb3VwUHJveHlSZXNvbHZlcldrTmV3KGh0dHBQcm94eSwgbm9Qcm94eSkpOwotICAgICAgICBz
b3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9TRVNTSU9OX0ZFQVRVUkUocmVz
b2x2ZXIuZ2V0KCkpKTsKLSAgICB9Ci0jZW5kaWYKLSNlbmRpZgorICAgIFNvdXBOZXR3b3JrU2Vz
c2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXR1cEhUVFBQcm94eUZyb21FbnZpcm9ubWVudCgpOwog
CiAgICAgaW50IHNvY2tldCA9IGF0b2koYXJndlsxXSk7CiAKQEAgLTkyLDE2ICs4MCwxNSBAQCBX
S19FWFBPUlQgaW50IE5ldHdvcmtQcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQog
ICAgIC8vIERlc3BpdGUgdXNpbmcgc3lzdGVtIENBcyB0byB2YWxpZGF0ZSBjZXJ0aWZpY2F0ZXMg
d2UncmUKICAgICAvLyBhY2NlcHRpbmcgaW52YWxpZCBjZXJ0aWZpY2F0ZXMgYnkgZGVmYXVsdC4g
TmV3IEFQSSB3aWxsIGJlCiAgICAgLy8gYWRkZWQgbGF0ZXIgdG8gbGV0IGNsaWVudCBhY2NlcHQv
ZGlzY2FyZCBpbnZhbGlkIGNlcnRpZmljYXRlcy4KLSAgICBnX29iamVjdF9zZXQoc2Vzc2lvbiwg
U09VUF9TRVNTSU9OX1NTTF9VU0VfU1lTVEVNX0NBX0ZJTEUsIFRSVUUsCi0gICAgICAgIFNPVVBf
U0VTU0lPTl9TU0xfU1RSSUNULCBGQUxTRSwgTlVMTCk7CisgICAgU291cE5ldHdvcmtTZXNzaW9u
OjpkZWZhdWx0U2Vzc2lvbigpLnNldFNTTFBvbGljeShTb3VwTmV0d29ya1Nlc3Npb246OlNTTFVz
ZVN5c3RlbUNBRmlsZSk7CiAjZW5kaWYKIAogICAgIFJ1bkxvb3A6OnJ1bigpOwogCiAjaWYgVVNF
KFNPVVApCi0gICAgaWYgKFNvdXBTZXNzaW9uRmVhdHVyZSogc291cENhY2hlID0gc291cF9zZXNz
aW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQRV9DQUNIRSkpIHsKLSAgICAgICAgc291
cF9jYWNoZV9mbHVzaChTT1VQX0NBQ0hFKHNvdXBDYWNoZSkpOwotICAgICAgICBzb3VwX2NhY2hl
X2R1bXAoU09VUF9DQUNIRShzb3VwQ2FjaGUpKTsKKyAgICBpZiAoU291cENhY2hlKiBzb3VwQ2Fj
aGUgPSBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUoKSkgeworICAg
ICAgICBzb3VwX2NhY2hlX2ZsdXNoKHNvdXBDYWNoZSk7CisgICAgICAgIHNvdXBfY2FjaGVfZHVt
cChzb3VwQ2FjaGUpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5j
cHAKaW5kZXggMTdkZTMxMi4uNzA1NGY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNw
cApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUg
IldlYktpdFNvdXBDb29raWVKYXJTcWxpdGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUph
clNvdXAuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4K
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpAQCAtOTYsMTIgKzk2LDggQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29r
aWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1aW4KICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgU291cENvb2tpZUphciogY3Vy
cmVudEphciA9IFdlYkNvcmU6OnNvdXBDb29raWVKYXIoKTsKLSAgICBzb3VwX2Nvb2tpZV9qYXJf
c2V0X2FjY2VwdF9wb2xpY3koamFyLmdldCgpLCBzb3VwX2Nvb2tpZV9qYXJfZ2V0X2FjY2VwdF9w
b2xpY3koY3VycmVudEphcikpOwotICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gUmVzb3VyY2VI
YW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7Ci0gICAgc291cF9zZXNzaW9uX3JlbW92ZV9mZWF0dXJl
KHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFUVVJFKGN1cnJlbnRKYXIpKTsKLSAgICBzb3VwX3Nl
c3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9TRVNTSU9OX0ZFQVRVUkUoamFyLmdldCgp
KSk7Ci0KKyAgICBzb3VwX2Nvb2tpZV9qYXJfc2V0X2FjY2VwdF9wb2xpY3koamFyLmdldCgpLCBz
b3VwX2Nvb2tpZV9qYXJfZ2V0X2FjY2VwdF9wb2xpY3koV2ViQ29yZTo6c291cENvb2tpZUphcigp
KSk7CisgICAgU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldENvb2tpZUph
cihqYXIuZ2V0KCkpOwogICAgIFdlYkNvcmU6OnNldFNvdXBDb29raWVKYXIoamFyLmdldCgpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vz
c01haW5FZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01h
aW5FZmwuY3BwCmluZGV4IDRkMjQ5ZGIuLmZkZDU2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAKQEAgLTM1LDcgKzM1LDcg
QEAKICNpbmNsdWRlIDxFZnJlZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NvdXBO
ZXR3b3JrU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV2ViUHJvY2Vzcy5oPgogI2luY2x1
ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgpAQCAt
MTE0LDE0ICsxMTQsNyBAQCBXS19FWFBPUlQgaW50IFdlYlByb2Nlc3NNYWluRWZsKGludCBhcmdj
LCBjaGFyKiBhcmd2W10pCiAKICAgICBJbml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgU291cFNl
c3Npb24qIHNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24o
KTsKLSAgICBjb25zdCBjaGFyKiBodHRwUHJveHkgPSBnZXRlbnYoImh0dHBfcHJveHkiKTsKLSAg
ICBpZiAoaHR0cFByb3h5KSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5vUHJveHkgPSBnZXRlbnYo
Im5vX3Byb3h5Iik7Ci0gICAgICAgIFNvdXBQcm94eVVSSVJlc29sdmVyKiByZXNvbHZlckVmbCA9
IHNvdXBQcm94eVJlc29sdmVyV2tOZXcoaHR0cFByb3h5LCBub1Byb3h5KTsKLSAgICAgICAgc291
cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFUVVJFKHJlc29s
dmVyRWZsKSk7Ci0gICAgICAgIGdfb2JqZWN0X3VucmVmKHJlc29sdmVyRWZsKTsKLSAgICB9Cisg
ICAgU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldHVwSFRUUFByb3h5RnJv
bUVudmlyb25tZW50KCk7CiAKICAgICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFdKTsKIApAQCAt
MTMyLDkgKzEyNSw5IEBAIFdLX0VYUE9SVCBpbnQgV2ViUHJvY2Vzc01haW5FZmwoaW50IGFyZ2Ms
IGNoYXIqIGFyZ3ZbXSkKIAogICAgIFJ1bkxvb3A6OnJ1bigpOwogCi0gICAgaWYgKFNvdXBTZXNz
aW9uRmVhdHVyZSogc291cENhY2hlID0gc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24s
IFNPVVBfVFlQRV9DQUNIRSkpIHsKLSAgICAgICAgc291cF9jYWNoZV9mbHVzaChTT1VQX0NBQ0hF
KHNvdXBDYWNoZSkpOwotICAgICAgICBzb3VwX2NhY2hlX2R1bXAoU09VUF9DQUNIRShzb3VwQ2Fj
aGUpKTsKKyAgICBpZiAoU291cENhY2hlKiBzb3VwQ2FjaGUgPSBTb3VwTmV0d29ya1Nlc3Npb246
OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUoKSkgeworICAgICAgICBzb3VwX2NhY2hlX2ZsdXNoKHNv
dXBDYWNoZSk7CisgICAgICAgIHNvdXBfY2FjaGVfZHVtcChzb3VwQ2FjaGUpOwogICAgIH0KIAog
ICAgIGVkamVfc2h1dGRvd24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Z3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcAppbmRleCBiNDgxZWUzLi5lMTVmNjAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3Bw
CkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9OZXR3b3JraW5nQ29udGV4dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdl
YktpdDIvV2ViUHJvY2Vzcy5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDxsaWJp
bnRsLmg+CkBAIC03MSwxNSArNzEsMTMgQEAgV0tfRVhQT1JUIGludCBXZWJQcm9jZXNzTWFpbkd0
ayhpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgIC8vIERlc3BpdGUgdXNpbmcgc3lzdGVtIENB
cyB0byB2YWxpZGF0ZSBjZXJ0aWZpY2F0ZXMgd2UncmUKICAgICAvLyBhY2NlcHRpbmcgaW52YWxp
ZCBjZXJ0aWZpY2F0ZXMgYnkgZGVmYXVsdC4gTmV3IEFQSSB3aWxsIGJlCiAgICAgLy8gYWRkZWQg
bGF0ZXIgdG8gbGV0IGNsaWVudCBhY2NlcHQvZGlzY2FyZCBpbnZhbGlkIGNlcnRpZmljYXRlcy4K
LSAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWZh
dWx0U2Vzc2lvbigpOwotICAgIGdfb2JqZWN0X3NldChzZXNzaW9uLCBTT1VQX1NFU1NJT05fU1NM
X1VTRV9TWVNURU1fQ0FfRklMRSwgVFJVRSwKLSAgICAgICAgICAgICAgICAgU09VUF9TRVNTSU9O
X1NTTF9TVFJJQ1QsIEZBTFNFLCBOVUxMKTsKKyAgICBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1
bHRTZXNzaW9uKCkuc2V0U1NMUG9saWN5KFNvdXBOZXR3b3JrU2Vzc2lvbjo6U1NMVXNlU3lzdGVt
Q0FGaWxlKTsKIAogICAgIFJ1bkxvb3A6OnJ1bigpOwogCi0gICAgaWYgKFNvdXBTZXNzaW9uRmVh
dHVyZSogc291cENhY2hlID0gc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBf
VFlQRV9DQUNIRSkpIHsKLSAgICAgICAgc291cF9jYWNoZV9mbHVzaChTT1VQX0NBQ0hFKHNvdXBD
YWNoZSkpOwotICAgICAgICBzb3VwX2NhY2hlX2R1bXAoU09VUF9DQUNIRShzb3VwQ2FjaGUpKTsK
KyAgICBpZiAoU291cENhY2hlKiBzb3VwQ2FjaGUgPSBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1
bHRTZXNzaW9uKCkuY2FjaGUoKSkgeworICAgICAgICBzb3VwX2NhY2hlX2ZsdXNoKHNvdXBDYWNo
ZSk7CisgICAgICAgIHNvdXBfY2FjaGVfZHVtcChzb3VwQ2FjaGUpOwogICAgIH0KIAogICAgIHJl
dHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlBy
b2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNz
U291cC5jcHAKaW5kZXggNzMzMDc4ZC4uODA5YWJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCkBAIC00MCwxMSArNDAsMTAgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4K
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC05NCw3ICs5
Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwg
Y2FjaGVNb2RlbCkKICAgICBTb3VwQ2FjaGUqIGNhY2hlID0gbnVsbHB0cjsKIAogICAgIGlmICgh
dXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FjaGUgPSBTT1VQX0NBQ0hFKHNvdXBf
c2Vzc2lvbl9nZXRfZmVhdHVyZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Np
b24oKSwgU09VUF9UWVBFX0NBQ0hFKSk7CisgICAgICAgIGNhY2hlID0gV2ViQ29yZTo6U291cE5l
dHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNhY2hlKCk7CiAgICAgICAgIGRpc2tGcmVl
U2l6ZSA9IGdldENhY2hlRGlza0ZyZWVTaXplKGNhY2hlKSAvIDEwMjQgLyAxMDI0OwogICAgIH0K
IApAQCAtMTIyLDUyICsxMjEsMTIgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUNsZWFyUmVz
b3VyY2VDYWNoZXMoUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIKICAgICBpZiAo
dXNlc05ldHdvcmtQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNvdXBfY2FjaGVf
Y2xlYXIoU09VUF9DQUNIRShzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIFNPVVBfVFlQRV9DQUNIRSkpKTsKLX0KLQotLy8g
VGhpcyBmdW5jdGlvbiBpcyBiYXNlZCBvbiBFcGlwaGFueSBjb2RlIGluIGVwaHktZW1iZWQtcHJl
ZnMuYy4KLXN0YXRpYyBDU3RyaW5nIGJ1aWxkQWNjZXB0TGFuZ3VhZ2VzKFZlY3RvcjxTdHJpbmc+
IGxhbmd1YWdlcykKLXsKLSAgICAvLyBJZ25vcmUgIkMiIGxvY2FsZS4KLSAgICBzaXplX3QgcG9z
aXRpb24gPSBsYW5ndWFnZXMuZmluZCgiYyIpOwotICAgIGlmIChwb3NpdGlvbiAhPSBub3RGb3Vu
ZCkKLSAgICAgICAgbGFuZ3VhZ2VzLnJlbW92ZShwb3NpdGlvbik7Ci0KLSAgICAvLyBGYWxsYmFj
ayB0byAiZW4iIGlmIHRoZSBsaXN0IGlzIGVtcHR5LgotICAgIGlmIChsYW5ndWFnZXMuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gImVuIjsKLQotICAgIC8vIENhbGN1bGF0ZSBkZWx0YXMgZm9y
IHRoZSBxdWFsaXR5IHZhbHVlcy4KLSAgICBpbnQgZGVsdGE7Ci0gICAgaWYgKGxhbmd1YWdlcy5z
aXplKCkgPCAxMCkKLSAgICAgICAgZGVsdGEgPSAxMDsKLSAgICBlbHNlIGlmIChsYW5ndWFnZXMu
c2l6ZSgpIDwgMjApCi0gICAgICAgIGRlbHRhID0gNTsKLSAgICBlbHNlCi0gICAgICAgIGRlbHRh
ID0gMTsKLQotICAgIC8vIFNldCBxdWFsaXR5IHZhbHVlcyBmb3IgZWFjaCBsYW5ndWFnZS4KLSAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYW5n
dWFnZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiLCAiKTsKLQotICAgICAgICBidWlsZGVyLmFwcGVuZChsYW5ndWFnZXNbaV0pOwot
Ci0gICAgICAgIGludCBxdWFsaXR5ID0gMTAwIC0gaSAqIGRlbHRhOwotICAgICAgICBpZiAocXVh
bGl0eSA+IDAgJiYgcXVhbGl0eSA8IDEwMCkgewotICAgICAgICAgICAgY2hhciBidWZmZXJbOF07
Ci0gICAgICAgICAgICBnX2FzY2lpX2Zvcm1hdGQoYnVmZmVyLCA4LCAiJS4yZiIsIHF1YWxpdHkg
LyAxMDAuMCk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiO3E9
JXMiLCBidWZmZXIpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCkudXRmOCgpOworICAgIHNvdXBfY2FjaGVfY2xlYXIoV2ViQ29yZTo6U291cE5ldHdv
cmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNhY2hlKCkpOwogfQogCiBzdGF0aWMgdm9pZCBz
ZXRTb3VwU2Vzc2lvbkFjY2VwdExhbmd1YWdlKFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcykKIHsK
LSAgICBnX29iamVjdF9zZXQoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9u
KCksICJhY2NlcHQtbGFuZ3VhZ2UiLCBidWlsZEFjY2VwdExhbmd1YWdlcyhsYW5ndWFnZXMpLmRh
dGEoKSwgTlVMTCk7CisgICAgV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vz
c2lvbigpLnNldEFjY2VwdExhbmd1YWdlcyhsYW5ndWFnZXMpOwogfQogCiBzdGF0aWMgdm9pZCBs
YW5ndWFnZUNoYW5nZWQodm9pZCopCkBAIC0xOTEsNyArMTUwLDcgQEAgdm9pZCBXZWJQcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMKIAogICAgIEFTU0VSVCghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNF
bXB0eSgpKTsKICAgICBHUmVmUHRyPFNvdXBDYWNoZT4gc291cENhY2hlID0gYWRvcHRHUmVmKHNv
dXBfY2FjaGVfbmV3KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LnV0ZjgoKS5kYXRhKCks
IFNPVVBfQ0FDSEVfU0lOR0xFX1VTRVIpKTsKLSAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIFNPVVBfU0VTU0lPTl9G
RUFUVVJFKHNvdXBDYWNoZS5nZXQoKSkpOworICAgIFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lv
bjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRDYWNoZShzb3VwQ2FjaGUuZ2V0KCkpOwogICAgIHNvdXBf
Y2FjaGVfbG9hZChzb3VwQ2FjaGUuZ2V0KCkpOwogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmNvb2tp
ZVBlcnNpc3RlbnRTdG9yYWdlUGF0aC5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXgg
YmQwY2Y2Mi4uNzBmY2FkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9z
b3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1
ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KICNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CkBAIC05OCw3ICs5OSw3IEBAIHZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlclVS
SVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKICAgICBnX3B0cl9hcnJheV9hZGQobV9zY2hl
bWVzLmdldCgpLCBnX3N0cmR1cChzY2hlbWUudXRmOCgpLmRhdGEoKSkpOwogICAgIGdfcHRyX2Fy
cmF5X2FkZChtX3NjaGVtZXMuZ2V0KCksIDApOwogCi0gICAgU291cFNlc3Npb24qIHNlc3Npb24g
PSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKKyAgICBTb3VwU2Vz
c2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Np
b24oKS5zb3VwU2Vzc2lvbigpOwogICAgIFNvdXBSZXF1ZXN0Q2xhc3MqIGdlbmVyaWNSZXF1ZXN0
Q2xhc3MgPSBzdGF0aWNfY2FzdDxTb3VwUmVxdWVzdENsYXNzKj4oZ190eXBlX2NsYXNzX3JlZihX
RUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJQykpOwogICAgIGdlbmVyaWNSZXF1ZXN0Q2xh
c3MtPnNjaGVtZXMgPSBjb25zdF9jYXN0PGNvbnN0IGNoYXIqKj4ocmVpbnRlcnByZXRfY2FzdDxj
aGFyKio+KG1fc2NoZW1lcy0+cGRhdGEpKTsKICAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmVf
YnlfdHlwZShzZXNzaW9uLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJQyk7Cg==
</data>
<flag name="review"
          id="244746"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>