<?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>101801</bug_id>
          
          <creation_ts>2012-11-09 14:44:16 -0800</creation_ts>
          <short_desc>[Texmap][CSS Shaders] Reuse the precompiled shader for custom filters in TextureMapperGL</short_desc>
          <delta_ts>2012-11-17 18:14:20 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>98990</dependson>
    
    <dependson>102414</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandru Chiculita">achicu</reporter>
          <assigned_to name="Alexandru Chiculita">achicu</assigned_to>
          <cc>dino</cc>
    
    <cc>dongseong.hwang</cc>
    
    <cc>noam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>763348</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-11-09 14:44:16 -0800</bug_when>
    <thetext>The shader is always recompiled before paint. Add code to cache the shader at least until next paint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769942</commentid>
    <comment_count>1</comment_count>
      <attachid>174817</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-11-17 07:27:13 -0800</bug_when>
    <thetext>Created attachment 174817
Patch V1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769955</commentid>
    <comment_count>2</comment_count>
      <attachid>174817</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-11-17 09:50:05 -0800</bug_when>
    <thetext>Comment on attachment 174817
Patch V1

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

Great progress, see comments.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:152
&gt; +            WebCustomFilterProgramProxy* customFilterProgramProxy = static_cast&lt;WebCustomFilterProgramProxy*&gt;(program-&gt;platformCompiledProgram()-&gt;client());

This seems a bit messy... I am sure we have enough information in LayerTreeCoordinator to know which shaders we have to send.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:159
&gt; +            if (!customFilterProgramProxy-&gt;wasSentToUIProcess()) {

I would prefer if we sent all the new programs to the Ui process in LayerTreeCoordinator rather than here with an if condition.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/WebCustomFilterProgramProxy.h:75
&gt; +    bool wasSentToUIProcess() const  { return m_wasSentToUIProcess; }

Sent you went through the trouble of creating this class, maybe it should also do its own encoding/decoding rather than leave it to CoordinatedGraphicsArgumentCoders.

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:292
&gt; +    injectCachedCustomFilterPrograms(const_cast&lt;FilterOperations&amp;&gt;(filters));

Would be cleaner to create a local copy and inject to it rather than const_cast</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770005</commentid>
    <comment_count>3</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-11-17 13:44:42 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 174817 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174817&amp;action=review
&gt; 
&gt; Great progress, see comments.

Thanks Noam, your comments make sense. I will integrate the feedback and upload again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770029</commentid>
    <comment_count>4</comment_count>
      <attachid>174832</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-11-17 16:31:46 -0800</bug_when>
    <thetext>Created attachment 174832
Patch V2

Integrated the feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770033</commentid>
    <comment_count>5</comment_count>
      <attachid>174832</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-11-17 16:44:18 -0800</bug_when>
    <thetext>Comment on attachment 174832
Patch V2

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

Very nice!
Some pre-landing nits below...

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:270
&gt; +            int programId = 0;
&gt; +            if (!decoder-&gt;decode(programId))

programID

&gt; Source/WebKit2/Shared/CoordinatedGraphics/WebCustomFilterOperation.h:50
&gt; +    int programId() const { return m_programId; }

programID()
and m_programID
(WebKit style)

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:313
&gt; +        }
&gt; +        WebCustomFilterOperation* customOperation = static_cast&lt;WebCustomFilterOperation*&gt;(operation);

Add line break

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:319
&gt; +        if (iter == m_customFilterPrograms.end()) {
&gt; +            ASSERT_NOT_REACHED();
&gt; +            continue;
&gt; +        }

ASSERT(iter != m_customFilterPrograms.end())

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:338
&gt; +    if (iter == m_customFilterPrograms.end()) {
&gt; +        ASSERT_NOT_REACHED();
&gt; +        return;
&gt; +    }

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770036</commentid>
    <comment_count>6</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-11-17 17:01:08 -0800</bug_when>
    <thetext>btw we should probably call checkCustomFilterProgramProxies for filter operations inside an animation, otherwise those might not be rendered correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770038</commentid>
    <comment_count>7</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-11-17 17:05:18 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; btw we should probably call checkCustomFilterProgramProxies for filter operations inside an animation, otherwise those might not be rendered correctly.

Hm.. didn&apos;t know the filter animations are accelerated on Texture Mapper. Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770045</commentid>
    <comment_count>8</comment_count>
      <attachid>174835</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-11-17 17:44:48 -0800</bug_when>
    <thetext>Created attachment 174835
Patch V3

I&apos;ve added the animations fix, so I&apos;ve set the CQ+ flag again.

@Noam: is there an automatic way to test the composited animations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770046</commentid>
    <comment_count>9</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-11-17 17:47:43 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; @Noam: is there an automatic way to test the composited animations?

Unfortunately not really quite yet, we would need good support for taking several pixel snapshots for the same page and that&apos;s tricky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770048</commentid>
    <comment_count>10</comment_count>
      <attachid>174835</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-17 18:14:16 -0800</bug_when>
    <thetext>Comment on attachment 174835
Patch V3

Clearing flags on attachment: 174835

Committed r135056: &lt;http://trac.webkit.org/changeset/135056&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770049</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-17 18:14:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174817</attachid>
            <date>2012-11-17 07:27:13 -0800</date>
            <delta_ts>2012-11-17 16:31:46 -0800</delta_ts>
            <desc>Patch V1</desc>
            <filename>bug101801.patch</filename>
            <type>text/plain</type>
            <size>29190</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNzhkZWMwLi5kMTU1ZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTItMTEtMTcgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgor
CisgICAgICAgIFtUZXhtYXBdW0NTUyBTaGFkZXJzXSBSZXVzZSB0aGUgcHJlY29tcGlsZWQgc2hh
ZGVyIGZvciBjdXN0b20gZmlsdGVycyBpbiBUZXh0dXJlTWFwcGVyR0wKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTgwMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgSGFzaE1hcCBpbiBUZXh0
dXJlTWFwcGVyR0wgdG8gc3RvcmUgdGhlIHByZWNvbXBpbGVkIHZlcnNpb25zIG9mIHRoZSBzaGFk
ZXJzLgorICAgICAgICBBbHNvIGFkZGVkIGEgbmV3IEFQSSBvbiBUZXh0dXJlTWFwcGVyIHRoYXQg
cmVjZWl2ZXMgYSBub3RpZmljYXRpb24gd2hlbiB0aGUgc2hhZGVyCisgICAgICAgIGlzIG5vIGxv
bmdlciBuZWVkZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGUgY29kZSBpcyB0ZXN0ZWQg
YnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
T3BlcmF0aW9uOjpzZXRQcm9ncmFtKToKKyAgICAgICAgKEN1c3RvbUZpbHRlck9wZXJhdGlvbik6
IE1hZGUgdGhlIGNvbnN0cnVjdG9yIHByb3RlY3RlZCwgc28gdGhhdCB3ZSBjYW4gb3ZlcndyaXRl
IHRoZSBjbGFzcworICAgICAgICBpbiBXSzIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4
dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpyZW1vdmVDYWNo
ZWRDdXN0b21GaWx0ZXJQcm9ncmFtKTogCisgICAgICAgIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBi
eSB0aGUgcGxhdGZvcm0gY29kZSwgd2hlbiB0aGUgc2hhZGVyIGlzIG5vIGxvbmdlcgorICAgICAg
ICBuZWVkZWQuIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgZW1wdHkgYW5kIG92ZXJyaWRkZW4gaW4g
VGV4dHVyZU1hcHBlckdMLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpyZW1v
dmVDYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtKToKKyAgICAgICAgUmVtb3ZlcyB0aGUgY29tcGls
ZWQgc2hhZGVyIGZyb20gdGhlIGNhY2hlLiBUaGlzIGlzIGNhbGxlZCBmcm9tIFdLMiB3aGVuIHRo
ZSBjb21waWxlZCBzaGFkZXIKKyAgICAgICAgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VXNpbmdD
dXN0b21GaWx0ZXIpOiBUaGUgZmlyc3QgdGltZSBpdCB1c2VzIGEgbmV3CisgICAgICAgIHNoYWRl
ciBpdCB3aWxsIGNhY2hlIHRoZSBjb21waWxlZCB2ZXJzaW9uIHVudGlsIHJlbW92ZUNhY2hlZEN1
c3RvbUZpbHRlclByb2dyYW0gaXMgY2FsbGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
VGV4dHVyZU1hcHBlckdMKToKKwogMjAxMi0xMS0xNiAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXpr
b3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVXBkYXRlZCBXZWJDb3JlLmd5
cGkgYWZ0ZXIgcjEzNDkzOS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCmluZGV4IDhh
ZDM4YjkuLjcxNTNlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaApAQCAtNDks
NiArNDksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIEN1c3RvbUZpbHRlclByb2dyYW0q
IHByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX3Byb2dyYW0uZ2V0KCk7IH0KKyAgICB2b2lkIHNl
dFByb2dyYW0oUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQcm9ncmFtPiBwcm9ncmFtKSB7IG1fcHJv
Z3JhbSA9IHByb2dyYW07IH0KICAgICAKICAgICBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJM
aXN0JiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CiAgICAgCkBA
IC02NSw2ICs2NiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGJsZW5kaW5nTmVlZHNS
ZW5kZXJlclNpemUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgCiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBm
cm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmLCBib29sIGJsZW5kVG9QYXNz
dGhyb3VnaCA9IGZhbHNlKTsKKworcHJvdGVjdGVkOgorICAgIEN1c3RvbUZpbHRlck9wZXJhdGlv
bihQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+LCBjb25zdCBDdXN0b21GaWx0ZXJQYXJh
bWV0ZXJMaXN0JiwgdW5zaWduZWQgbWVzaFJvd3MsIHVuc2lnbmVkIG1lc2hDb2x1bW5zLCBDdXN0
b21GaWx0ZXJNZXNoQm94VHlwZSwgQ3VzdG9tRmlsdGVyTWVzaFR5cGUpOworICAgIAogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8p
IGNvbnN0CiAgICAgewpAQCAtNzksOCArODQsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgJiYg
bV9tZXNoVHlwZSA9PSBvdGhlci0+bV9tZXNoVHlwZQogICAgICAgICAgICAgJiYgbV9wYXJhbWV0
ZXJzID09IG90aGVyLT5tX3BhcmFtZXRlcnM7CiAgICAgfQotICAgIAotICAgIEN1c3RvbUZpbHRl
ck9wZXJhdGlvbihQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+LCBjb25zdCBDdXN0b21G
aWx0ZXJQYXJhbWV0ZXJMaXN0JiwgdW5zaWduZWQgbWVzaFJvd3MsIHVuc2lnbmVkIG1lc2hDb2x1
bW5zLCBDdXN0b21GaWx0ZXJNZXNoQm94VHlwZSwgQ3VzdG9tRmlsdGVyTWVzaFR5cGUpOwogCiAg
ICAgUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+IG1fcHJvZ3JhbTsKICAgICBDdXN0b21GaWx0
ZXJQYXJhbWV0ZXJMaXN0IG1fcGFyYW1ldGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IGQwOTlhY2Iu
LjE0NDIwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaApAQCAtNDgsNiArNDgsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBCaXRtYXBUZXh0dXJlUG9vbDsKK2NsYXNzIEN1c3RvbUZpbHRlclBy
b2dyYW07CiBjbGFzcyBUZXh0dXJlTWFwcGVyOwogCiAvLyBBIDJEIHRleHR1cmUgdGhhdCBjYW4g
YmUgdGhlIHRhcmdldCBvZiBzb2Z0d2FyZSBvciBHTCByZW5kZXJpbmcuCkBAIC0xNTQsNiArMTU1
LDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBh
Y3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0IEludFNpemUmKTsKIAorI2lmIEVOQUJMRShDU1Nf
U0hBREVSUykKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3Jh
bShDdXN0b21GaWx0ZXJQcm9ncmFtKikgeyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIGV4
cGxpY2l0IFRleHR1cmVNYXBwZXIoQWNjZWxlcmF0aW9uTW9kZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5jcHAKaW5kZXggNDdmYjFiNS4uNmU3ZmVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAg
LTkyMSw2ICs5MjEsMTEgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUZpbHRlclByb2dyYW0oVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW0qIHByb2dyYW0sIGNvbnN0IEZpbHQKIH0KIAogI2lmIEVOQUJM
RShDU1NfU0hBREVSUykKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpyZW1vdmVDYWNoZWRDdXN0b21G
aWx0ZXJQcm9ncmFtKEN1c3RvbUZpbHRlclByb2dyYW0qIHByb2dyYW0pCit7CisgICAgbV9jdXN0
b21GaWx0ZXJQcm9ncmFtcy5yZW1vdmUocHJvZ3JhbSk7Cit9CisKIGJvb2wgVGV4dHVyZU1hcHBl
ckdMOjpkcmF3VXNpbmdDdXN0b21GaWx0ZXIoQml0bWFwVGV4dHVyZSYgdGFyZ2V0LCBjb25zdCBC
aXRtYXBUZXh0dXJlJiBzb3VyY2UsIGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgZmlsdGVyKQogewog
ICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJSZW5kZXJlcj4gcmVuZGVyZXI7CkBAIC05MzAsMTEgKzkz
NSwxOSBAQCBib29sIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1VzaW5nQ3VzdG9tRmlsdGVyKEJpdG1h
cFRleHR1cmUmIHRhcmdldCwgY29uc3QgQml0bWFwVAogICAgICAgICAvLyBoYXBwZW5zIGluIENv
b3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy4KICAgICAgICAgY29uc3QgQ3VzdG9tRmls
dGVyT3BlcmF0aW9uKiBjdXN0b21GaWx0ZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBDdXN0b21GaWx0
ZXJPcGVyYXRpb24qPigmZmlsdGVyKTsKICAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlclByb2dy
YW0+IHByb2dyYW0gPSBjdXN0b21GaWx0ZXItPnByb2dyYW0oKTsKKyAgICAgICAgLy8gVGhlIHBy
b2dyYW0gbWlnaHQgYmUgZW1wdHkgd2hlbiBXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyIGZhaWxl
ZAorICAgICAgICAvLyB0byBkZWNvZGUgaXQuIERvbid0IHRyeSB0byByZW5kZXIgaW4gdGhhdCBj
YXNlLgorICAgICAgICBpZiAoIXByb2dyYW0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIHJlbmRlcmVyID0gQ3VzdG9tRmlsdGVyUmVuZGVyZXI6OmNyZWF0ZShtX2NvbnRleHQz
RCwgcHJvZ3JhbS0+cHJvZ3JhbVR5cGUoKSwgY3VzdG9tRmlsdGVyLT5wYXJhbWV0ZXJzKCksIAog
ICAgICAgICAgICAgY3VzdG9tRmlsdGVyLT5tZXNoUm93cygpLCBjdXN0b21GaWx0ZXItPm1lc2hD
b2x1bW5zKCksIGN1c3RvbUZpbHRlci0+bWVzaEJveFR5cGUoKSwgY3VzdG9tRmlsdGVyLT5tZXNo
VHlwZSgpKTsKLSAgICAgICAgLy8gRklYTUU6IE9wdGltaXplIHRoaXMgYnkga2VlcGluZyBhIHJl
ZmVyZW5jZSB0byB0aGUgcHJvZ3JhbSBhY3Jvc3MgZnJhbWVzLgotICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxODAxCi0gICAgICAgIFJlZlB0cjxD
dXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+IGNvbXBpbGVkUHJvZ3JhbSA9IEN1c3RvbUZpbHRl
ckNvbXBpbGVkUHJvZ3JhbTo6Y3JlYXRlKG1fY29udGV4dDNELCBwcm9ncmFtLT52ZXJ0ZXhTaGFk
ZXJTdHJpbmcoKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXJTdHJpbmcoKSwgcHJvZ3JhbS0+cHJv
Z3JhbVR5cGUoKSk7CisgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+
IGNvbXBpbGVkUHJvZ3JhbTsKKyAgICAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1hcDo6aXRlcmF0
b3IgaXRlciA9IG1fY3VzdG9tRmlsdGVyUHJvZ3JhbXMuZmluZChwcm9ncmFtLmdldCgpKTsKKyAg
ICAgICAgaWYgKGl0ZXIgPT0gbV9jdXN0b21GaWx0ZXJQcm9ncmFtcy5lbmQoKSkgeworICAgICAg
ICAgICAgY29tcGlsZWRQcm9ncmFtID0gQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpjcmVh
dGUobV9jb250ZXh0M0QsIHByb2dyYW0tPnZlcnRleFNoYWRlclN0cmluZygpLCBwcm9ncmFtLT5m
cmFnbWVudFNoYWRlclN0cmluZygpLCBwcm9ncmFtLT5wcm9ncmFtVHlwZSgpKTsKKyAgICAgICAg
ICAgIG1fY3VzdG9tRmlsdGVyUHJvZ3JhbXMuc2V0KHByb2dyYW0uZ2V0KCksIGNvbXBpbGVkUHJv
Z3JhbSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY29tcGlsZWRQcm9ncmFtID0gaXRl
ci0+dmFsdWU7CiAgICAgICAgIHJlbmRlcmVyLT5zZXRDb21waWxlZFByb2dyYW0oY29tcGlsZWRQ
cm9ncmFtLnJlbGVhc2UoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wu
aAppbmRleCBjMTMxNTJlLi42NjQ2ZGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC0zMCw2ICsz
MCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3Jh
bTsKK2NsYXNzIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTsKIGNsYXNzIFRleHR1cmVNYXBw
ZXJHTERhdGE7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbTsKQEAgLTc0LDYgKzc2LDcgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgRU5BQkxF
KENTU19TSEFERVJTKQogICAgIGJvb2wgZHJhd1VzaW5nQ3VzdG9tRmlsdGVyKEJpdG1hcFRleHR1
cmUmIHRhcmdldFRleHR1cmUsIGNvbnN0IEJpdG1hcFRleHR1cmUmIHNvdXJjZVRleHR1cmUsIGNv
bnN0IEZpbHRlck9wZXJhdGlvbiYpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDYWNoZWRDdXN0
b21GaWx0ZXJQcm9ncmFtKEN1c3RvbUZpbHRlclByb2dyYW0qKTsKICNlbmRpZgogCiAgICAgdm9p
ZCBzZXRFbmFibGVFZGdlRGlzdGFuY2VBbnRpYWxpYXNpbmcoYm9vbCBlbmFibGVkKSB7IG1fZW5h
YmxlRWRnZURpc3RhbmNlQW50aWFsaWFzaW5nID0gZW5hYmxlZDsgfQpAQCAtMTI4LDYgKzEzMSwx
MSBAQCBwcml2YXRlOgogICAgIENsaXBTdGFjayBtX2NsaXBTdGFjazsKICAgICBib29sIG1fZW5h
YmxlRWRnZURpc3RhbmNlQW50aWFsaWFzaW5nOwogCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQor
ICAgIHR5cGVkZWYgSGFzaE1hcDxDdXN0b21GaWx0ZXJQcm9ncmFtKiwgUmVmUHRyPEN1c3RvbUZp
bHRlckNvbXBpbGVkUHJvZ3JhbT4gPiBDdXN0b21GaWx0ZXJQcm9ncmFtTWFwOworICAgIEN1c3Rv
bUZpbHRlclByb2dyYW1NYXAgbV9jdXN0b21GaWx0ZXJQcm9ncmFtczsKKyNlbmRpZgorCiAgICAg
ZnJpZW5kIGNsYXNzIEJpdG1hcFRleHR1cmVHTDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzMjQ0Y2I3
Li41YjhjYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTItMTEtMTcgIEFsZXhh
bmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtUZXhtYXBdW0NT
UyBTaGFkZXJzXSBSZXVzZSB0aGUgcHJlY29tcGlsZWQgc2hhZGVyIGZvciBjdXN0b20gZmlsdGVy
cyBpbiBUZXh0dXJlTWFwcGVyR0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMTgwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENoYW5nZWQgdGhlIGVuY29kaW5nIGNvZGUgZm9yIFZhbGlkYXRlZEN1c3Rv
bUZpbHRlck9wZXJhdGlvbiB0byBvbmx5IGVuY29kZSB0aGUgc2hhZGVyCisgICAgICAgIHdoZW4g
aXQgd2FzIG5vdCBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzIGJlZm9yZS4gT3RoZXJ3aXNl
LCBpdCB3aWxsIGp1c3QgZW5jb2RlIGFuIElELgorICAgICAgICBMYXllclRyZWVSZW5kZXJlciB3
aWxsIG5vdyBtYWludGFpbiBhIEhhc2hNYXAgZnJvbSB0aGVzZSBJRHMgdG8gdGhlIHJlYWwgQ3Vz
dG9tRmlsdGVyUHJvZ3JhbS4KKyAgICAgICAgSXQgd2lsbCByZWNlaXZlIGEgbWVzc2FnZSBmcm9t
IHRoZSBXZWJQcm9jZXNzIHdoZW4gdGhlIHNoYWRlciBpcyBubyBsb25nZXIgaW4gbmVlZGVkLgor
ICAgICAgICBMYXllclRyZWVSZW5kZXJlciBhbHNvIGNhbGxzIHRoZSBUZXh0dXJlTWFwcGVyJ3Mg
cmVtb3ZlQ2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbSB0byBub3RpZnkKKyAgICAgICAgYWJvdXQg
dGhlIHJlbW92ZWQgQ3VzdG9tRmlsdGVyUHJvZ3JhbS4KKworICAgICAgICAqIFNoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChDb3JlSVBDOjo6OmVuY29kZSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6
CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDdXN0b21G
aWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
Ojpwcm9ncmFtSWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
OjpXZWJDdXN0b21GaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW1Qcm94eS5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJDdXN0b21GaWx0ZXJQcm9ncmFtUHJveHk6Ondhc1NlbnRUb1VJUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkN1c3RvbUZpbHRlclByb2dyYW1Qcm94eTo6c2V0V2FzU2VudFRvVUlQ
cm9jZXNzKToKKyAgICAgICAgKFdlYkN1c3RvbUZpbHRlclByb2dyYW1Qcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkN1c3RvbUZpbHRlclByb2dyYW1Qcm94eTo6V2ViQ3VzdG9tRmlsdGVyUHJv
Z3JhbVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OnJlbW92ZUN1c3RvbUZpbHRlclByb2dy
YW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNv
b3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5h
dG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVS
ZW5kZXJlcjo6c2V0TGF5ZXJGaWx0ZXJzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjppbmplY3RDYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFt
cyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVDdXN0b21GaWx0
ZXJQcm9ncmFtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVSZW5kZXJlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXllclRyZWVS
ZW5kZXJlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVD
b29yZGluYXRvcjo6cmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5KToKKwogMjAxMi0xMS0x
NiAgVmlhdGNoZXNsYXYgT3N0YXBlbmtvICA8di5vc3RhcGVua29Ac2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgW0VGTF1bV0syXSBXaGl0ZSBmbGlja2VyIHdoZW4gc2Nyb2xsaW5nIGJpZyBwYWdlcyB3
aXRoIGRhcmsgYmFja2dyb3VuZCBvbiBzbG93ZXIgaGFyZHdhcmUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
QXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBkOTg1NzA3
Li4wZmI1YTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NB
cmd1bWVudENvZGVycy5jcHAKQEAgLTUyLDcgKzUyLDkgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxF
KENTU19TSEFERVJTKQorI2luY2x1ZGUgIldlYkN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIldlYkN1c3RvbUZpbHRlclByb2dyYW0uaCIKKyNpbmNsdWRlICJXZWJDdXN0b21GaWx0
ZXJQcm9ncmFtUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlckFycmF5UGFy
YW1ldGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJDb25zdGFudHMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oPgpAQCAtMTQyLDIz
ICsxNDQsMjcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+
OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLAogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpWQUxJREFURURfQ1VTVE9NOiB7CiAgICAgICAg
ICAgICBjb25zdCBWYWxpZGF0ZWRDdXN0b21GaWx0ZXJPcGVyYXRpb24qIGN1c3RvbU9wZXJhdGlv
biA9IHN0YXRpY19jYXN0PGNvbnN0IFZhbGlkYXRlZEN1c3RvbUZpbHRlck9wZXJhdGlvbio+KGZp
bHRlcik7Ci0KICAgICAgICAgICAgIEFTU0VSVChjdXN0b21PcGVyYXRpb24tPnZhbGlkYXRlZFBy
b2dyYW0oKSk7CiAgICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bT4gcHJvZ3JhbSA9IGN1c3RvbU9wZXJhdGlvbi0+dmFsaWRhdGVkUHJvZ3JhbSgpOwogICAgICAg
ICAgICAgQVNTRVJUKHByb2dyYW0tPmlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgICAgICAgICBBU1NF
UlQocHJvZ3JhbS0+cGxhdGZvcm1Db21waWxlZFByb2dyYW0oKSk7Ci0gICAgICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIG9ubHkgc2VyaWFsaXplIHRoZSBvYmplY3QgaWYgaXQgd2FzIG5vdCBz
ZXJpYWxpemVkIGJlZm9yZSwKLSAgICAgICAgICAgIC8vIG90aGVyd2lzZSBvbmx5IHRoZSBJRCBv
ZiB0aGUgcHJvZ3JhbSBzaG91bGQgYmUgd3JpdHRlbiB0byB0aGUgc3RyZWFtLgotICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTgwMQotICAg
ICAgICAgICAgZW5jb2RlciA8PCBwcm9ncmFtLT52YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIoKTsKLSAg
ICAgICAgICAgIGVuY29kZXIgPDwgcHJvZ3JhbS0+dmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIoKTsK
KyAgICAgICAgICAgIEFTU0VSVChwcm9ncmFtLT5wbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSgpLT5j
bGllbnQoKSk7CisgICAgICAgICAgICBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtUHJveHkqIGN1c3Rv
bUZpbHRlclByb2dyYW1Qcm94eSA9IHN0YXRpY19jYXN0PFdlYkN1c3RvbUZpbHRlclByb2dyYW1Q
cm94eSo+KHByb2dyYW0tPnBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtKCktPmNsaWVudCgpKTsKICAg
ICAgICAgICAgIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJiBwcm9ncmFtSW5mbyA9IHBy
b2dyYW0tPnByb2dyYW1JbmZvKCk7Ci0gICAgICAgICAgICBlbmNvZGVyLmVuY29kZUVudW0ocHJv
Z3JhbUluZm8ucHJvZ3JhbVR5cGUoKSk7Ci0gICAgICAgICAgICBjb25zdCBDdXN0b21GaWx0ZXJQ
cm9ncmFtTWl4U2V0dGluZ3MmIG1peFNldHRpbmdzID0gcHJvZ3JhbUluZm8ubWl4U2V0dGluZ3Mo
KTsKLSAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlRW51bShtaXhTZXR0aW5ncy5ibGVuZE1vZGUp
OwotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1peFNldHRpbmdzLmNvbXBvc2l0ZU9w
ZXJhdG9yKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBDdXN0b21GaWx0ZXJPcGVyYXRpb24gc2hv
dWxkIG5vdCBuZWVkIHRoZSBtZXNoVHlwZSwgaXQgc2hvdWxkIGp1c3QgYmUgZW5jb2RlZCBpbiB0
aGUgcHJvZ3JhbSBpdHNlbGYuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNTI5CiAgICAgICAgICAgICBlbmNvZGVyLmVuY29kZUVudW0o
cHJvZ3JhbUluZm8ubWVzaFR5cGUoKSk7Ci0KKyAgICAgICAgICAgIGVuY29kZXIgPDwgY3VzdG9t
RmlsdGVyUHJvZ3JhbVByb3h5LT53YXNTZW50VG9VSVByb2Nlc3MoKTsKKyAgICAgICAgICAgIGVu
Y29kZXIgPDwgY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5pZCgpOworICAgICAgICAgICAgaWYg
KCFjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHktPndhc1NlbnRUb1VJUHJvY2VzcygpKSB7CisgICAg
ICAgICAgICAgICAgY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5zZXRXYXNTZW50VG9VSVByb2Nl
c3ModHJ1ZSk7CisgICAgICAgICAgICAgICAgZW5jb2RlciA8PCBwcm9ncmFtLT52YWxpZGF0ZWRW
ZXJ0ZXhTaGFkZXIoKTsKKyAgICAgICAgICAgICAgICBlbmNvZGVyIDw8IHByb2dyYW0tPnZhbGlk
YXRlZEZyYWdtZW50U2hhZGVyKCk7CisgICAgICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGVFbnVt
KHByb2dyYW1JbmZvLnByb2dyYW1UeXBlKCkpOworICAgICAgICAgICAgICAgIGNvbnN0IEN1c3Rv
bUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYgbWl4U2V0dGluZ3MgPSBwcm9ncmFtSW5mby5taXhT
ZXR0aW5ncygpOworICAgICAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlRW51bShtaXhTZXR0aW5n
cy5ibGVuZE1vZGUpOworICAgICAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlRW51bShtaXhTZXR0
aW5ncy5jb21wb3NpdGVPcGVyYXRvcik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBDdXN0
b21GaWx0ZXJQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSBjdXN0b21PcGVyYXRpb24tPnBhcmFt
ZXRlcnMoKTsKICAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBh
cmFtZXRlcnMuc2l6ZSgpKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFy
YW1ldGVycy5zaXplKCk7ICsraSkgewpAQCAtMjY0LDI0ICsyNzAsMzUgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLAogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlZBTElEQVRFRF9DVVNUT006
IHsKLSAgICAgICAgICAgIFN0cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmc7Ci0gICAgICAgICAgICBT
dHJpbmcgZnJhZ21lbnRTaGFkZXJTdHJpbmc7Ci0gICAgICAgICAgICBDdXN0b21GaWx0ZXJQcm9n
cmFtVHlwZSBwcm9ncmFtVHlwZTsKLSAgICAgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1NaXhT
ZXR0aW5ncyBtaXhTZXR0aW5nczsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBDdXN0b21GaWx0ZXJP
cGVyYXRpb24gc2hvdWxkIG5vdCBuZWVkIHRoZSBtZXNoVHlwZS4KKyAgICAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI1MjkKICAgICAgICAgICAg
IEN1c3RvbUZpbHRlck1lc2hUeXBlIG1lc2hUeXBlOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUodmVydGV4U2hhZGVyU3RyaW5nKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShmcmFnbWVudFNoYWRlclN0cmlu
ZykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGVFbnVtKHByb2dyYW1UeXBlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0obWl4U2V0dGluZ3MuYmxl
bmRNb2RlKSkKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtZXNoVHlwZSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGVFbnVtKG1peFNldHRpbmdzLmNvbXBvc2l0ZU9wZXJhdG9yKSkKKyAgICAgICAgICAg
IGJvb2wgcHJvZ3JhbVdhc1NlbnRUb1VJUHJvY2Vzc0JlZm9yZSA9IGZhbHNlOworICAgICAgICAg
ICAgaW50IHByb2dyYW1JZCA9IDA7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShw
cm9ncmFtV2FzU2VudFRvVUlQcm9jZXNzQmVmb3JlKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0obWVzaFR5cGUpKQor
ICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocHJvZ3JhbUlkKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyUHJvZ3Jh
bT4gcHJvZ3JhbSA9IFdlYkN1c3RvbUZpbHRlclByb2dyYW06OmNyZWF0ZSh2ZXJ0ZXhTaGFkZXJT
dHJpbmcsIGZyYWdtZW50U2hhZGVyU3RyaW5nLCBwcm9ncmFtVHlwZSwgbWl4U2V0dGluZ3MsIG1l
c2hUeXBlKTsKKyAgICAgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJQcm9ncmFtPiBwcm9ncmFt
OworICAgICAgICAgICAgaWYgKCFwcm9ncmFtV2FzU2VudFRvVUlQcm9jZXNzQmVmb3JlKSB7Cisg
ICAgICAgICAgICAgICAgU3RyaW5nIHZlcnRleFNoYWRlclN0cmluZzsKKyAgICAgICAgICAgICAg
ICBTdHJpbmcgZnJhZ21lbnRTaGFkZXJTdHJpbmc7CisgICAgICAgICAgICAgICAgQ3VzdG9tRmls
dGVyUHJvZ3JhbVR5cGUgcHJvZ3JhbVR5cGU7CisgICAgICAgICAgICAgICAgQ3VzdG9tRmlsdGVy
UHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzOworICAgICAgICAgICAgICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlKHZlcnRleFNoYWRlclN0cmluZykpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShmcmFnbWVu
dFNoYWRlclN0cmluZykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0ocHJvZ3JhbVR5cGUpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGVFbnVtKG1peFNldHRpbmdzLmJsZW5kTW9kZSkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0o
bWl4U2V0dGluZ3MuY29tcG9zaXRlT3BlcmF0b3IpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcHJvZ3JhbSA9IFdlYkN1c3RvbUZpbHRlclByb2dy
YW06OmNyZWF0ZSh2ZXJ0ZXhTaGFkZXJTdHJpbmcsIGZyYWdtZW50U2hhZGVyU3RyaW5nLCBwcm9n
cmFtVHlwZSwgbWl4U2V0dGluZ3MsIG1lc2hUeXBlKTsKKyAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgdWludDMyX3QgcGFyYW1ldGVyc1NpemU7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIt
PmRlY29kZVVJbnQzMihwYXJhbWV0ZXJzU2l6ZSkpCkBAIC0zNDcsOCArMzY0LDggQEAgYm9vbCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+OjpkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyKiBkZWNvZGVyLAogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKG1l
c2hCb3hUeXBlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAg
IC8vIEF0IHRoaXMgcG9pbnQgdGhlIFNoYWRlcnMgYXJlIGFscmVhZHkgdmFsaWRhdGVkLCBzbyB3
ZSBqdXN0IHVzZSBDdXN0b21GaWx0ZXJPcGVyYXRpb24gZm9yIHRyYW5zcG9ydGF0aW9uLgotICAg
ICAgICAgICAgZmlsdGVyID0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUocHJvZ3JhbS5y
ZWxlYXNlKCksIHBhcmFtZXRlcnMsIG1lc2hSb3dzLCBtZXNoQ29sdW1ucywgbWVzaEJveFR5cGUs
IG1lc2hUeXBlKTsKKyAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIFNoYWRlcnMgYXJl
IGFscmVhZHkgdmFsaWRhdGVkLCBzbyB3ZSBqdXN0IHVzZSBXZWJDdXN0b21GaWx0ZXJPcGVyYXRp
b24gZm9yIHRyYW5zcG9ydGF0aW9uLgorICAgICAgICAgICAgZmlsdGVyID0gV2ViQ3VzdG9tRmls
dGVyT3BlcmF0aW9uOjpjcmVhdGUocHJvZ3JhbS5yZWxlYXNlKCksIHByb2dyYW1JZCwgcGFyYW1l
dGVycywgbWVzaFJvd3MsIG1lc2hDb2x1bW5zLCBtZXNoQm94VHlwZSwgbWVzaFR5cGUpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21G
aWx0ZXJPcGVyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjhm
ZjNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvV2ViQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTAsMCArMSw2OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAq
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
CisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkN1c3RvbUZpbHRlck9wZXJhdGlv
bl9oCisjZGVmaW5lIFdlYkN1c3RvbUZpbHRlck9wZXJhdGlvbl9oCisKKyNpZiBFTkFCTEUoQ1NT
X1NIQURFUlMpCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gVGhpcyBjbGFzcyBpcyBvbmx5IGFkZGluZyB0aGUgcHJvZ3JhbUlk
IG9uIHRvcCBvZiBDdXN0b21GaWx0ZXJPcGVyYXRpb24uIFRoZSBhcmd1bWVudCBkZWNvZGVyIGhh
cyBubworLy8gY29udGV4dCwgc28gd2UgY2Fubm90IHNlYXJjaCBpbiBvdXIgY2FjaGVkIEN1c3Rv
bUZpbHRlclByb2dyYW1zIHdoaWxlIGRlY29kaW5nLiBJbiB0aGF0IGNhc2UKKy8vIGl0IHdpbGwg
anVzdCBzdG9yZSB0aGUgcHJvZ3JhbUlkIGFuZCBubyBDdXN0b21GaWx0ZXJQcm9ncmFtIGluc3Rh
bmNlLiBUaGUgcmVjZWl2ZXIgaXMgc3VwcG9zZWQgdG8KKy8vIGl0ZXJhdGUgb24gdGhpcyBzdHJ1
Y3R1cmUgYW5kIGluamVjdCB0aGUgcmlnaHQgQ3VzdG9tRmlsdGVyUHJvZ3JhbXMuIFRoZXJlIGFy
ZSB0d28gcG9zc2liaWxpdGllczoKKy8vIGEpIEJvdGggcHJvZ3JhbSgpIGFuZCBwcm9ncmFtSWQo
KSBhcmUgc2V0LCBtZWFuaW5nIHRoYXQgdGhlIHByb2dyYW0gaXMgbmV3IGFuZCBuZWVkcyB0byBi
ZSBjYWNoZWQKKy8vIGIpIE9ubHkgcHJvZ3JhbUlkKCkgaXMgc2V0LCBtZWFuaW5nIHRoYXQgdGhl
IHByb2dyYW0gd2FzIHNlZW4gYmVmb3JlIGFuZCBuZWVkcyB0byBiZSBpbmplY3RlZCAKKy8vIGJ5
IHRoZSBMYXllclRyZWVDb29yZGluYXRvclByb3h5LgorCitjbGFzcyBXZWJDdXN0b21GaWx0ZXJP
cGVyYXRpb24gOiBwdWJsaWMgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJDdXN0b21GaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVm
UHRyPEN1c3RvbUZpbHRlclByb2dyYW0+IHByb2dyYW0sIGludCBwcm9ncmFtSWQsIGNvbnN0IEN1
c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHNvcnRlZFBhcmFtZXRlcnMsIHVuc2lnbmVkIG1lc2hS
b3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywgQ3VzdG9tRmlsdGVyTWVzaEJveFR5cGUgbWVzaEJv
eFR5cGUsIEN1c3RvbUZpbHRlck1lc2hUeXBlIG1lc2hUeXBlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJDdXN0b21GaWx0ZXJPcGVyYXRpb24ocHJvZ3JhbSwgcHJvZ3Jh
bUlkLCBzb3J0ZWRQYXJhbWV0ZXJzLCBtZXNoUm93cywgbWVzaENvbHVtbnMsIG1lc2hCb3hUeXBl
LCBtZXNoVHlwZSkpOworICAgIH0KKworICAgIGludCBwcm9ncmFtSWQoKSBjb25zdCB7IHJldHVy
biBtX3Byb2dyYW1JZDsgfQorCitwcml2YXRlOgorICAgIFdlYkN1c3RvbUZpbHRlck9wZXJhdGlv
bihQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+IHByb2dyYW0sIGludCBwcm9ncmFtSWQs
IGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHNvcnRlZFBhcmFtZXRlcnMsIHVuc2ln
bmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywgQ3VzdG9tRmlsdGVyTWVzaEJveFR5
cGUgbWVzaEJveFR5cGUsIEN1c3RvbUZpbHRlck1lc2hUeXBlIG1lc2hUeXBlKQorICAgICAgICA6
IEN1c3RvbUZpbHRlck9wZXJhdGlvbihwcm9ncmFtLCBzb3J0ZWRQYXJhbWV0ZXJzLCBtZXNoUm93
cywgbWVzaENvbHVtbnMsIG1lc2hCb3hUeXBlLCBtZXNoVHlwZSkKKyAgICAgICAgLCBtX3Byb2dy
YW1JZChwcm9ncmFtSWQpCisgICAgeworICAgIH0KKworICAgIGludCBtX3Byb2dyYW1JZDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVS
UykKKworI2VuZGlmIC8vIEN1c3RvbUZpbHRlck9wZXJhdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9n
cmFtUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dl
YkN1c3RvbUZpbHRlclByb2dyYW1Qcm94eS5oCmluZGV4IGJiNmYwYmIuLjM5NzhkZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkN1c3Rv
bUZpbHRlclByb2dyYW1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW1Qcm94eS5oCkBAIC03MiwxNSArNzIs
MjAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2xpZW50KFdlYkN1c3RvbUZpbHRlclByb2dyYW1Q
cm94eUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAgV2ViQ3VzdG9t
RmlsdGVyUHJvZ3JhbVByb3h5Q2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dDsgfQogCisgICAgYm9vbCB3YXNTZW50VG9VSVByb2Nlc3MoKSBjb25zdCAgeyByZXR1cm4gbV93
YXNTZW50VG9VSVByb2Nlc3M7IH0KKyAgICB2b2lkIHNldFdhc1NlbnRUb1VJUHJvY2Vzcyhib29s
IHdhc1NlbnRUb1VJUHJvY2VzcykgeyBtX3dhc1NlbnRUb1VJUHJvY2VzcyA9IHdhc1NlbnRUb1VJ
UHJvY2VzczsgfQorCiBwcml2YXRlOgogICAgIFdlYkN1c3RvbUZpbHRlclByb2dyYW1Qcm94eShX
ZWJDdXN0b21GaWx0ZXJQcm9ncmFtUHJveHlDbGllbnQqIGNsaWVudCkKICAgICAgICAgOiBtX2Ns
aWVudChjbGllbnQpCiAgICAgICAgICwgbV9pZChzX25leHRJZCsrKQorICAgICAgICAsIG1fd2Fz
U2VudFRvVUlQcm9jZXNzKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCiAgICAgV2ViQ3VzdG9t
RmlsdGVyUHJvZ3JhbVByb3h5Q2xpZW50KiBtX2NsaWVudDsKICAgICBpbnQgbV9pZDsKKyAgICBi
b29sIG1fd2FzU2VudFRvVUlQcm9jZXNzOwogICAgIAogICAgIHN0YXRpYyBpbnQgc19uZXh0SWQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcApp
bmRleCA1OTU3NmU4Li5iNTg3OWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvclByb3h5LmNwcApAQCAtMTE1LDYgKzExNSwxMyBAQCB2b2lkIExheWVyVHJlZUNv
b3JkaW5hdG9yUHJveHk6OnNldENvbXBvc2l0aW5nTGF5ZXJGaWx0ZXJzKFdlYkxheWVySUQgaWQs
IGNvbnN0CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKK3ZvaWQgTGF5ZXJU
cmVlQ29vcmRpbmF0b3JQcm94eTo6cmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpCit7
CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZUN1c3Rv
bUZpbHRlclByb2dyYW0sIG1fcmVuZGVyZXIuZ2V0KCksIGlkKSk7Cit9CisjZW5kaWYKKwogdm9p
ZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRS
ZWN0KQogewogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpmbHVz
aExheWVyQ2hhbmdlcywgbV9yZW5kZXJlci5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IGM2ZDc5MGYuLmE4ZDhkOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKQEAgLTU3LDYgKzU3LDkg
QEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICB2b2lkIHNldENvbXBvc2l0
aW5nTGF5ZXJGaWx0ZXJzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlv
bnMmKTsKICNlbmRpZgorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICB2b2lkIHJlbW92ZUN1
c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKTsKKyNlbmRpZgogICAgIHZvaWQgZGVsZXRlQ29tcG9z
aXRpbmdMYXllcihXZWJMYXllcklEKTsKICAgICB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVy
KFdlYkxheWVySUQpOwogICAgIHZvaWQgc2V0Q29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5h
dG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZjhmZTI2NS4uYTRlMTcyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0yNCw2ICsyNCw5IEBAIG1lc3NhZ2VzIC0+IExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkg
ewogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICBTZXRDb21wb3NpdGluZ0xheWVyRmlsdGVy
cyh1aW50MzJfdCBpZCwgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzKQogI2VuZGlm
CisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIFJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0o
aW50IGlkKQorI2VuZGlmCiAgICAgU2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIodWludDMyX3QgaWQp
CiAgICAgRGVsZXRlQ29tcG9zaXRpbmdMYXllcih1aW50MzJfdCBpZCkKICAgICBDcmVhdGVUaWxl
Rm9yTGF5ZXIodWludDMyX3QgbGF5ZXJJRCwgaW50IHRpbGVJRCwgV2ViQ29yZTo6SW50UmVjdCB0
aWxlUmVjdCwgV2ViS2l0OjpTdXJmYWNlVXBkYXRlSW5mbyB1cGRhdGVJbmZvKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IDI0MmY5NDQuLjdiNTkyZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZVJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTM3LDYgKzM3LDExIEBACiAjaW5jbHVk
ZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCisjaWYgRU5B
QkxFKENTU19TSEFERVJTKQorI2luY2x1ZGUgIkN1c3RvbUZpbHRlclByb2dyYW0uaCIKKyNpbmNs
dWRlICJXZWJDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0yODMsMTAgKzI4OCw0OSBAQCB2
b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllckZpbHRlcnMoV2ViTGF5ZXJJRCBpZCwgY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYgZgogICAgIEFTU0VSVChpdCAhPSBtX2xheWVycy5lbmQoKSk7
CiAKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGl0LT52YWx1ZTsKKyNpZiBFTkFCTEUoQ1NT
X1NIQURFUlMpCisgICAgaW5qZWN0Q2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoY29uc3RfY2Fz
dDxGaWx0ZXJPcGVyYXRpb25zJj4oZmlsdGVycykpOworI2VuZGlmCiAgICAgbGF5ZXItPnNldEZp
bHRlcnMoZmlsdGVycyk7CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKK3Zv
aWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmluamVjdENhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zKEZp
bHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBm
aWx0ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIEZpbHRlck9wZXJhdGlvbiogb3BlcmF0aW9u
ID0gZmlsdGVycy5vcGVyYXRpb25zKCkuYXQoaSkuZ2V0KCk7CisgICAgICAgIGlmIChvcGVyYXRp
b24tPmdldE9wZXJhdGlvblR5cGUoKSAhPSBGaWx0ZXJPcGVyYXRpb246OkNVU1RPTSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBXZWJDdXN0b21GaWx0ZXJPcGVyYXRpb24qIGN1c3Rv
bU9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PFdlYkN1c3RvbUZpbHRlck9wZXJhdGlvbio+KG9wZXJh
dGlvbik7CisgICAgICAgIGlmICghY3VzdG9tT3BlcmF0aW9uLT5wcm9ncmFtKCkpIHsKKyAgICAg
ICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2N1c3RvbUZp
bHRlclByb2dyYW1zLmZpbmQoY3VzdG9tT3BlcmF0aW9uLT5wcm9ncmFtSWQoKSk7CisgICAgICAg
ICAgICBpZiAoaXRlciA9PSBtX2N1c3RvbUZpbHRlclByb2dyYW1zLmVuZCgpKSB7CisgICAgICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjdXN0b21PcGVyYXRpb24tPnNldFByb2dyYW0o
aXRlci0+dmFsdWUuZ2V0KCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gVGhp
cyBpcyB0aGUgZmlyc3QgdGltZSB3ZSByZWNlaXZlIHRoaXMgcHJvZ3JhbS4KKyAgICAgICAgICAg
IEFTU0VSVCghbV9jdXN0b21GaWx0ZXJQcm9ncmFtcy5jb250YWlucyhjdXN0b21PcGVyYXRpb24t
PnByb2dyYW1JZCgpKSk7CisgICAgICAgICAgICBtX2N1c3RvbUZpbHRlclByb2dyYW1zLnNldChj
dXN0b21PcGVyYXRpb24tPnByb2dyYW1JZCgpLCBjdXN0b21PcGVyYXRpb24tPnByb2dyYW0oKSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZUN1
c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKQoreworICAgIEN1c3RvbUZpbHRlclByb2dyYW1NYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBtX2N1c3RvbUZpbHRlclByb2dyYW1zLmZpbmQoaWQpOworICAgIGlm
IChpdGVyID09IG1fY3VzdG9tRmlsdGVyUHJvZ3JhbXMuZW5kKCkpIHsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1fdGV4dHVy
ZU1hcHBlcikKKyAgICAgICAgbV90ZXh0dXJlTWFwcGVyLT5yZW1vdmVDYWNoZWRDdXN0b21GaWx0
ZXJQcm9ncmFtKGl0ZXItPnZhbHVlLmdldCgpKTsKKyAgICBtX2N1c3RvbUZpbHRlclByb2dyYW1z
LnJlbW92ZShpdGVyKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpCisKIHZvaWQg
TGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyU3RhdGUoV2ViTGF5ZXJJRCBpZCwgY29uc3QgV2Vi
TGF5ZXJJbmZvJiBsYXllckluZm8pCiB7CiAgICAgZW5zdXJlTGF5ZXIoaWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
UmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZVJlbmRlcmVyLmgKaW5kZXggMDUwYTQ0My4uOWEzZWM1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVu
ZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVSZW5kZXJlci5oCkBAIC0zOCw2ICszOCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KIAorbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbTsKK30KKwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOwpAQCAtODQsNiArODgs
MTAgQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICB2b2lkIHNldExheWVy
RmlsdGVycyhXZWJMYXllcklELCBjb25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJik7CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgdm9pZCBpbmplY3RDYWNoZWRDdXN0
b21GaWx0ZXJQcm9ncmFtcyhXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKTsKKyAg
ICB2b2lkIHJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKTsKKyNlbmRpZgogCiAgICAg
dm9pZCBjcmVhdGVUaWxlKFdlYkxheWVySUQsIGludCwgZmxvYXQgc2NhbGUpOwogICAgIHZvaWQg
cmVtb3ZlVGlsZShXZWJMYXllcklELCBpbnQpOwpAQCAtMTcxLDYgKzE3OSwxMSBAQCBwcml2YXRl
OgogICAgIFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OkFjY2VsZXJhdGlvbk1vZGUgbV9hY2NlbGVy
YXRpb25Nb2RlOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fYmFja2dyb3VuZENvbG9yOwogICAgIGJv
b2wgbV9zZXREcmF3c0JhY2tncm91bmQ7CisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAg
dHlwZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW0+
ID4gQ3VzdG9tRmlsdGVyUHJvZ3JhbU1hcDsKKyAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTWFwIG1f
Y3VzdG9tRmlsdGVyUHJvZ3JhbXM7CisjZW5kaWYKIH07CiAKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKaW5kZXggMjBiYWQzNS4u
YzczYzVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNv
b3JkaW5hdG9yLmNwcApAQCAtMzc1LDggKzM3NSw3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0
b3I6OnJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW1Qcm94eShXZWJDdXN0b21GaWx0ZXJQcm9ncmFt
CiAgICAgLy8gQXQgdGhpcyB0aW1lIHRoZSBzaGFkZXIgaXMgbm90IG5lZWRlZCBhbnltb3JlLCBz
byB3ZSByZW1vdmUgaXQgZnJvbSBvdXIgc2V0IGFuZCAKICAgICAvLyBzZW5kIGEgbWVzc2FnZSB0
byB0aGUgb3RoZXIgcHJvY2VzcyB0byBkZWxldGUgaXQuCiAgICAgbV9jdXN0b21GaWx0ZXJQcm9n
cmFtcy5yZW1vdmUoY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5KTsKLSAgICAvLyBGSVhNRTogU2Vu
ZCBhIG1lc3NhZ2UgdG8gZGVsZXRlIHRoZSBvYmplY3Qgb24gdGhlIFVJIHByb2Nlc3MuCi0gICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTgwMQorICAgIG1f
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6UmVtb3Zl
Q3VzdG9tRmlsdGVyUHJvZ3JhbShjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHktPmlkKCkpKTsKIH0K
IAogdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6ZGlzY29ubmVjdEN1c3RvbUZpbHRlclByb2dy
YW1zKCkK
</data>
<flag name="review"
          id="190035"
          type_id="1"
          status="-"
          setter="noam"
    />
    <flag name="commit-queue"
          id="190036"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174832</attachid>
            <date>2012-11-17 16:31:46 -0800</date>
            <delta_ts>2012-11-17 17:44:48 -0800</delta_ts>
            <desc>Patch V2</desc>
            <filename>bug101801_v3.patch</filename>
            <type>text/plain</type>
            <size>35376</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNzhkZWMwLi4yZmUzZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTItMTEtMTcgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgor
CisgICAgICAgIFtUZXhtYXBdW0NTUyBTaGFkZXJzXSBSZXVzZSB0aGUgcHJlY29tcGlsZWQgc2hh
ZGVyIGZvciBjdXN0b20gZmlsdGVycyBpbiBUZXh0dXJlTWFwcGVyR0wKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTgwMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgSGFzaE1hcCBpbiBUZXh0
dXJlTWFwcGVyR0wgdG8gc3RvcmUgdGhlIHByZWNvbXBpbGVkIHZlcnNpb25zIG9mIHRoZSBzaGFk
ZXJzLgorICAgICAgICBBbHNvIGFkZGVkIGEgbmV3IEFQSSBvbiBUZXh0dXJlTWFwcGVyIHRoYXQg
cmVjZWl2ZXMgYSBub3RpZmljYXRpb24gd2hlbiB0aGUgc2hhZGVyCisgICAgICAgIGlzIG5vIGxv
bmdlciBuZWVkZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGUgY29kZSBpcyB0ZXN0ZWQg
YnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
T3BlcmF0aW9uOjpzZXRQcm9ncmFtKToKKyAgICAgICAgKEN1c3RvbUZpbHRlck9wZXJhdGlvbik6
IE1hZGUgdGhlIGNvbnN0cnVjdG9yIHByb3RlY3RlZCwgc28gdGhhdCB3ZSBjYW4gb3ZlcndyaXRl
IHRoZSBjbGFzcyBpbiBXSzIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnZhbGlkYXRlZFByb2dyYW1JbmZvKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyVmFsaWRhdGVkUHJvZ3JhbS5oOgorICAgICAgICAoQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJv
Z3JhbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dHVyZU1hcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpyZW1vdmVDYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFt
KToKKyAgICAgICAgRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJ5IHRoZSBwbGF0Zm9ybSBjb2RlLCB3
aGVuIHRoZSBzaGFkZXIgaXMgbm8gbG9uZ2VyCisgICAgICAgIG5lZWRlZC4gVGhpcyBpbXBsZW1l
bnRhdGlvbiBpcyBlbXB0eSBhbmQgb3ZlcnJpZGRlbiBpbiBUZXh0dXJlTWFwcGVyR0wuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OnJlbW92ZUNhY2hlZEN1c3RvbUZpbHRlclBy
b2dyYW0pOgorICAgICAgICBSZW1vdmVzIHRoZSBjb21waWxlZCBzaGFkZXIgZnJvbSB0aGUgY2Fj
aGUuIFRoaXMgaXMgY2FsbGVkIGZyb20gV0syIHdoZW4gdGhlIGNvbXBpbGVkIHNoYWRlcgorICAg
ICAgICBpcyBubyBsb25nZXIgbmVlZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdVc2luZ0N1c3RvbUZpbHRlcik6IFRoZSBmaXJz
dCB0aW1lIGl0IHVzZXMgYSBuZXcKKyAgICAgICAgc2hhZGVyIGl0IHdpbGwgY2FjaGUgdGhlIGNv
bXBpbGVkIHZlcnNpb24gdW50aWwgcmVtb3ZlQ2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbSBpcyBj
YWxsZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyR0wpOgorCiAy
MDEyLTExLTE2ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW0Nocm9taXVtXSBVcGRhdGVkIFdlYkNvcmUuZ3lwaSBhZnRlciByMTM0OTM5LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggOGFkMzhiOS4uNzE1M2U2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgCiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbSogcHJvZ3JhbSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvZ3JhbS5nZXQoKTsgfQorICAgIHZvaWQgc2V0UHJvZ3JhbShQYXNzUmVmUHRyPEN1
c3RvbUZpbHRlclByb2dyYW0+IHByb2dyYW0pIHsgbV9wcm9ncmFtID0gcHJvZ3JhbTsgfQogICAg
IAogICAgIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHBhcmFtZXRlcnMoKSBjb25z
dCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KICAgICAKQEAgLTY1LDYgKzY2LDEwIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgYmxlbmRpbmdOZWVkc1JlbmRlcmVyU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KICAgICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0
aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywg
Y29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOworCitw
cm90ZWN0ZWQ6CisgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKFBhc3NSZWZQdHI8Q3VzdG9tRmls
dGVyUHJvZ3JhbT4sIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmLCB1bnNpZ25lZCBt
ZXNoUm93cywgdW5zaWduZWQgbWVzaENvbHVtbnMsIEN1c3RvbUZpbHRlck1lc2hCb3hUeXBlLCBD
dXN0b21GaWx0ZXJNZXNoVHlwZSk7CisgICAgCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKICAgICB7CkBAIC03OSw4
ICs4NCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAmJiBtX21lc2hUeXBlID09IG90aGVyLT5t
X21lc2hUeXBlCiAgICAgICAgICAgICAmJiBtX3BhcmFtZXRlcnMgPT0gb3RoZXItPm1fcGFyYW1l
dGVyczsKICAgICB9Ci0gICAgCi0gICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKFBhc3NSZWZQdHI8
Q3VzdG9tRmlsdGVyUHJvZ3JhbT4sIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmLCB1
bnNpZ25lZCBtZXNoUm93cywgdW5zaWduZWQgbWVzaENvbHVtbnMsIEN1c3RvbUZpbHRlck1lc2hC
b3hUeXBlLCBDdXN0b21GaWx0ZXJNZXNoVHlwZSk7CiAKICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVy
UHJvZ3JhbT4gbV9wcm9ncmFtOwogICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QgbV9wYXJh
bWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAK
aW5kZXggZWY1ZWU0ZS4uNzJhZDhmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZh
bGlkYXRlZFByb2dyYW0uY3BwCkBAIC01MTIsNiArNTEyLDEyIEBAIEN1c3RvbUZpbHRlclZhbGlk
YXRlZFByb2dyYW06On5DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKCkKICAgICAgICAgbV9n
bG9iYWxDb250ZXh0LT5yZW1vdmVWYWxpZGF0ZWRQcm9ncmFtKHRoaXMpOwogfQogCitDdXN0b21G
aWx0ZXJQcm9ncmFtSW5mbyBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjp2YWxpZGF0ZWRQ
cm9ncmFtSW5mbygpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faXNJbml0aWFsaXplZCk7CisgICAg
cmV0dXJuIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvKG1fdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBt
X3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLCBtX3Byb2dyYW1JbmZvLnByb2dyYW1UeXBlKCksIG1f
cHJvZ3JhbUluZm8ubWl4U2V0dGluZ3MoKSwgbV9wcm9ncmFtSW5mby5tZXNoVHlwZSgpKTsKK30K
KwogI2lmICFQTEFURk9STShCTEFDS0JFUlJZKSAmJiAhVVNFKFRFWFRVUkVfTUFQUEVSKQogdm9p
ZCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpwbGF0Zm9ybUluaXQoKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJWYWxpZGF0ZWRQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaAppbmRleCA4YWZjOWVjLi5jNjhm
NGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaApAQCAt
ODIsNiArODIsOCBAQCBwdWJsaWM6CiAgICAgfkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0o
KTsKIAogICAgIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJiBwcm9ncmFtSW5mbygpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvZ3JhbUluZm87IH0KKyAgICBDdXN0b21GaWx0ZXJQcm9ncmFtSW5m
byB2YWxpZGF0ZWRQcm9ncmFtSW5mbygpIGNvbnN0OworICAgIAogICAgIFBhc3NSZWZQdHI8Q3Vz
dG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBjb21waWxlZFByb2dyYW0oKTsKIAogICAgIGNvbnN0
IFN0cmluZyYgdmFsaWRhdGVkVmVydGV4U2hhZGVyKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAppbmRl
eCBkMDk5YWNiLi4xNDQyMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQml0bWFwVGV4dHVyZVBvb2w7CitjbGFzcyBDdXN0
b21GaWx0ZXJQcm9ncmFtOwogY2xhc3MgVGV4dHVyZU1hcHBlcjsKIAogLy8gQSAyRCB0ZXh0dXJl
IHRoYXQgY2FuIGJlIHRoZSB0YXJnZXQgb2Ygc29mdHdhcmUgb3IgR0wgcmVuZGVyaW5nLgpAQCAt
MTU0LDYgKzE1NSwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gYWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb25zdCBJbnRTaXplJik7CiAKKyNpZiBF
TkFCTEUoQ1NTX1NIQURFUlMpCisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNhY2hlZEN1c3RvbUZp
bHRlclByb2dyYW0oQ3VzdG9tRmlsdGVyUHJvZ3JhbSopIHsgfQorI2VuZGlmCisKIHByb3RlY3Rl
ZDoKICAgICBleHBsaWNpdCBUZXh0dXJlTWFwcGVyKEFjY2VsZXJhdGlvbk1vZGUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0wuY3BwCmluZGV4IDQ3ZmIxYjUuLjllMzc4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuY3BwCkBAIC05MjEsNiArOTIxLDExIEBAIHN0YXRpYyB2b2lkIHByZXBhcmVGaWx0ZXJQcm9n
cmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBwcm9ncmFtLCBjb25zdCBGaWx0CiB9CiAK
ICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6cmVtb3ZlQ2Fj
aGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbShDdXN0b21GaWx0ZXJQcm9ncmFtKiBwcm9ncmFtKQorewor
ICAgIG1fY3VzdG9tRmlsdGVyUHJvZ3JhbXMucmVtb3ZlKHByb2dyYW0pOworfQorCiBib29sIFRl
eHR1cmVNYXBwZXJHTDo6ZHJhd1VzaW5nQ3VzdG9tRmlsdGVyKEJpdG1hcFRleHR1cmUmIHRhcmdl
dCwgY29uc3QgQml0bWFwVGV4dHVyZSYgc291cmNlLCBjb25zdCBGaWx0ZXJPcGVyYXRpb24mIGZp
bHRlcikKIHsKICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyUmVuZGVyZXI+IHJlbmRlcmVyOwpAQCAt
OTMyLDkgKzkzNywxMyBAQCBib29sIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1VzaW5nQ3VzdG9tRmls
dGVyKEJpdG1hcFRleHR1cmUmIHRhcmdldCwgY29uc3QgQml0bWFwVAogICAgICAgICBSZWZQdHI8
Q3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IGN1c3RvbUZpbHRlci0+cHJvZ3JhbSgpOwog
ICAgICAgICByZW5kZXJlciA9IEN1c3RvbUZpbHRlclJlbmRlcmVyOjpjcmVhdGUobV9jb250ZXh0
M0QsIHByb2dyYW0tPnByb2dyYW1UeXBlKCksIGN1c3RvbUZpbHRlci0+cGFyYW1ldGVycygpLCAK
ICAgICAgICAgICAgIGN1c3RvbUZpbHRlci0+bWVzaFJvd3MoKSwgY3VzdG9tRmlsdGVyLT5tZXNo
Q29sdW1ucygpLCBjdXN0b21GaWx0ZXItPm1lc2hCb3hUeXBlKCksIGN1c3RvbUZpbHRlci0+bWVz
aFR5cGUoKSk7Ci0gICAgICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGlzIGJ5IGtlZXBpbmcgYSBy
ZWZlcmVuY2UgdG8gdGhlIHByb2dyYW0gYWNyb3NzIGZyYW1lcy4KLSAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTgwMQotICAgICAgICBSZWZQdHI8
Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBjb21waWxlZFByb2dyYW0gPSBDdXN0b21GaWx0
ZXJDb21waWxlZFByb2dyYW06OmNyZWF0ZShtX2NvbnRleHQzRCwgcHJvZ3JhbS0+dmVydGV4U2hh
ZGVyU3RyaW5nKCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyU3RyaW5nKCksIHByb2dyYW0tPnBy
b2dyYW1UeXBlKCkpOworICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFt
PiBjb21waWxlZFByb2dyYW07CisgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1NYXA6Oml0ZXJh
dG9yIGl0ZXIgPSBtX2N1c3RvbUZpbHRlclByb2dyYW1zLmZpbmQocHJvZ3JhbS5nZXQoKSk7Cisg
ICAgICAgIGlmIChpdGVyID09IG1fY3VzdG9tRmlsdGVyUHJvZ3JhbXMuZW5kKCkpIHsKKyAgICAg
ICAgICAgIGNvbXBpbGVkUHJvZ3JhbSA9IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6Y3Jl
YXRlKG1fY29udGV4dDNELCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXJTdHJpbmcoKSwgcHJvZ3JhbS0+
ZnJhZ21lbnRTaGFkZXJTdHJpbmcoKSwgcHJvZ3JhbS0+cHJvZ3JhbVR5cGUoKSk7CisgICAgICAg
ICAgICBtX2N1c3RvbUZpbHRlclByb2dyYW1zLnNldChwcm9ncmFtLmdldCgpLCBjb21waWxlZFBy
b2dyYW0pOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNvbXBpbGVkUHJvZ3JhbSA9IGl0
ZXItPnZhbHVlOwogICAgICAgICByZW5kZXJlci0+c2V0Q29tcGlsZWRQcm9ncmFtKGNvbXBpbGVk
UHJvZ3JhbS5yZWxlYXNlKCkpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmgKaW5kZXggYzEzMTUyZS4uNjY0NmRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaApAQCAtMzAsNiAr
MzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEN1c3RvbUZpbHRlclByb2dy
YW07CitjbGFzcyBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW07CiBjbGFzcyBUZXh0dXJlTWFw
cGVyR0xEYXRhOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW07CkBAIC03NCw2ICs3Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogI2lmIEVOQUJM
RShDU1NfU0hBREVSUykKICAgICBib29sIGRyYXdVc2luZ0N1c3RvbUZpbHRlcihCaXRtYXBUZXh0
dXJlJiB0YXJnZXRUZXh0dXJlLCBjb25zdCBCaXRtYXBUZXh0dXJlJiBzb3VyY2VUZXh0dXJlLCBj
b25zdCBGaWx0ZXJPcGVyYXRpb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2FjaGVkQ3Vz
dG9tRmlsdGVyUHJvZ3JhbShDdXN0b21GaWx0ZXJQcm9ncmFtKik7CiAjZW5kaWYKIAogICAgIHZv
aWQgc2V0RW5hYmxlRWRnZURpc3RhbmNlQW50aWFsaWFzaW5nKGJvb2wgZW5hYmxlZCkgeyBtX2Vu
YWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZyA9IGVuYWJsZWQ7IH0KQEAgLTEyOCw2ICsxMzEs
MTEgQEAgcHJpdmF0ZToKICAgICBDbGlwU3RhY2sgbV9jbGlwU3RhY2s7CiAgICAgYm9vbCBtX2Vu
YWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZzsKIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykK
KyAgICB0eXBlZGVmIEhhc2hNYXA8Q3VzdG9tRmlsdGVyUHJvZ3JhbSosIFJlZlB0cjxDdXN0b21G
aWx0ZXJDb21waWxlZFByb2dyYW0+ID4gQ3VzdG9tRmlsdGVyUHJvZ3JhbU1hcDsKKyAgICBDdXN0
b21GaWx0ZXJQcm9ncmFtTWFwIG1fY3VzdG9tRmlsdGVyUHJvZ3JhbXM7CisjZW5kaWYKKwogICAg
IGZyaWVuZCBjbGFzcyBCaXRtYXBUZXh0dXJlR0w7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzI0NGNi
Ny4uYzBjNjZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTExLTE3ICBBbGV4
YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KKworICAgICAgICBbVGV4bWFwXVtD
U1MgU2hhZGVyc10gUmV1c2UgdGhlIHByZWNvbXBpbGVkIHNoYWRlciBmb3IgY3VzdG9tIGZpbHRl
cnMgaW4gVGV4dHVyZU1hcHBlckdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDE4MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDaGFuZ2VkIHRoZSBlbmNvZGluZyBjb2RlIGZvciBWYWxpZGF0ZWRDdXN0
b21GaWx0ZXJPcGVyYXRpb24gdG8gb25seSBlbmNvZGUgdGhlIElEIG9mIHRoZSBwcm9ncmFtLgor
ICAgICAgICBMYXllclRyZWVDb29yZGluYXRvciBtYWtlcyBzdXJlIHRvIHNlbmQgdGhlIHByb2dy
YW1zIGluIGZ1bGwgYmVmb3JlIHRoZSBlbmNvZGVyIHJ1bnMuCisgICAgICAgIExheWVyVHJlZVJl
bmRlcmVyIHdpbGwgbWFpbnRhaW4gYSBIYXNoTWFwIGZyb20gdGhlc2UgSURzIHRvIHRoZSByZWFs
IEN1c3RvbUZpbHRlclByb2dyYW0uCisgICAgICAgIFRoZSBVSSBwcm9jZXNzIHdpbGwgYWxzbyBy
ZWNlaXZlIGEgbWVzc2FnZSBmcm9tIHRoZSBXZWJQcm9jZXNzIHdoZW4gdGhlIHNoYWRlciBpcyBu
byBsb25nZXIgaW4gbmVlZGVkLgorICAgICAgICBMYXllclRyZWVSZW5kZXJlciBjYWxscyB0aGUg
VGV4dHVyZU1hcHBlcidzIHJlbW92ZUNhY2hlZEN1c3RvbUZpbHRlclByb2dyYW0gdG8gbm90aWZ5
CisgICAgICAgIGFib3V0IHRoZSByZW1vdmVkIEN1c3RvbUZpbHRlclByb2dyYW0uCisKKyAgICAg
ICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1l
bnRDb2RlcnMuY3BwOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAgICAgICAoQ29y
ZUlQQzo6OjpkZWNvZGUpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgICogU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9X
ZWJDdXN0b21GaWx0ZXJPcGVyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkN1c3RvbUZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJD
dXN0b21GaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDdXN0
b21GaWx0ZXJPcGVyYXRpb246OnByb2dyYW1JZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDdXN0
b21GaWx0ZXJPcGVyYXRpb246OldlYkN1c3RvbUZpbHRlck9wZXJhdGlvbik6CisgICAgICAgICog
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OldlYkN1c3RvbUZpbHRlclByb2dyYW1Qcm94eTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5OjpXZWJDdXN0b21G
aWx0ZXJQcm9ncmFtUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6cmVtb3ZlQ3VzdG9tRmls
dGVyUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6
OmNyZWF0ZUN1c3RvbUZpbHRlclByb2dyYW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKExheWVy
VHJlZUNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICog
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJGaWx0ZXJzKToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjppbmplY3RD
YWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJl
bmRlcmVyOjpjcmVhdGVDdXN0b21GaWx0ZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKExheWVyVHJlZVJlbmRlcmVyKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpjaGVja0N1c3RvbUZp
bHRlclByb2dyYW1Qcm94aWVzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0
b3I6OnJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW1Qcm94eSk6CisKIDIwMTItMTEtMTYgIFZpYXRj
aGVzbGF2IE9zdGFwZW5rbyAgPHYub3N0YXBlbmtvQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtF
RkxdW1dLMl0gV2hpdGUgZmxpY2tlciB3aGVuIHNjcm9sbGluZyBiaWcgcGFnZXMgd2l0aCBkYXJr
IGJhY2tncm91bmQgb24gc2xvd2VyIGhhcmR3YXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50
Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZDk4NTcwNy4uZmJlZjc2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRD
b2RlcnMuY3BwCkBAIC01MiwxMiArNTIsMTUgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19T
SEFERVJTKQorI2luY2x1ZGUgIldlYkN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIgogI2luY2x1ZGUg
IldlYkN1c3RvbUZpbHRlclByb2dyYW0uaCIKKyNpbmNsdWRlICJXZWJDdXN0b21GaWx0ZXJQcm9n
cmFtUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJDb25zdGFudHMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0
ZXJQcm9ncmFtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9WYWxpZGF0ZWRDdXN0b21GaWx0ZXJPcGVyYXRpb24uaD4KQEAgLTE0MiwyMyAr
MTQ1LDE3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPjo6
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6VkFMSURBVEVEX0NVU1RPTTogewogICAgICAgICAg
ICAgY29uc3QgVmFsaWRhdGVkQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKiBjdXN0b21PcGVyYXRpb24g
PSBzdGF0aWNfY2FzdDxjb25zdCBWYWxpZGF0ZWRDdXN0b21GaWx0ZXJPcGVyYXRpb24qPihmaWx0
ZXIpOwotCiAgICAgICAgICAgICBBU1NFUlQoY3VzdG9tT3BlcmF0aW9uLT52YWxpZGF0ZWRQcm9n
cmFtKCkpOwogICAgICAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0+
IHByb2dyYW0gPSBjdXN0b21PcGVyYXRpb24tPnZhbGlkYXRlZFByb2dyYW0oKTsKICAgICAgICAg
ICAgIEFTU0VSVChwcm9ncmFtLT5pc0luaXRpYWxpemVkKCkpOwogICAgICAgICAgICAgQVNTRVJU
KHByb2dyYW0tPnBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtKCkpOwotICAgICAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBvbmx5IHNlcmlhbGl6ZSB0aGUgb2JqZWN0IGlmIGl0IHdhcyBub3Qgc2Vy
aWFsaXplZCBiZWZvcmUsCi0gICAgICAgICAgICAvLyBvdGhlcndpc2Ugb25seSB0aGUgSUQgb2Yg
dGhlIHByb2dyYW0gc2hvdWxkIGJlIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbS4KLSAgICAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE4MDEKLSAgICAg
ICAgICAgIGVuY29kZXIgPDwgcHJvZ3JhbS0+dmFsaWRhdGVkVmVydGV4U2hhZGVyKCk7Ci0gICAg
ICAgICAgICBlbmNvZGVyIDw8IHByb2dyYW0tPnZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKCk7Cisg
ICAgICAgICAgICBBU1NFUlQocHJvZ3JhbS0+cGxhdGZvcm1Db21waWxlZFByb2dyYW0oKS0+Y2xp
ZW50KCkpOworICAgICAgICAgICAgV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5KiBjdXN0b21G
aWx0ZXJQcm9ncmFtUHJveHkgPSBzdGF0aWNfY2FzdDxXZWJDdXN0b21GaWx0ZXJQcm9ncmFtUHJv
eHkqPihwcm9ncmFtLT5wbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSgpLT5jbGllbnQoKSk7CiAgICAg
ICAgICAgICBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYgcHJvZ3JhbUluZm8gPSBwcm9n
cmFtLT5wcm9ncmFtSW5mbygpOwotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHByb2dy
YW1JbmZvLnByb2dyYW1UeXBlKCkpOwotICAgICAgICAgICAgY29uc3QgQ3VzdG9tRmlsdGVyUHJv
Z3JhbU1peFNldHRpbmdzJiBtaXhTZXR0aW5ncyA9IHByb2dyYW1JbmZvLm1peFNldHRpbmdzKCk7
Ci0gICAgICAgICAgICBlbmNvZGVyLmVuY29kZUVudW0obWl4U2V0dGluZ3MuYmxlbmRNb2RlKTsK
LSAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlRW51bShtaXhTZXR0aW5ncy5jb21wb3NpdGVPcGVy
YXRvcik7CisgICAgICAgICAgICAvLyBGSVhNRTogQ3VzdG9tRmlsdGVyT3BlcmF0aW9uIHNob3Vs
ZCBub3QgbmVlZCB0aGUgbWVzaFR5cGUsIGl0IHNob3VsZCBqdXN0IGJlIGVuY29kZWQgaW4gdGhl
IHByb2dyYW0gaXRzZWxmLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMjUyOQogICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHBy
b2dyYW1JbmZvLm1lc2hUeXBlKCkpOwotCisgICAgICAgICAgICBlbmNvZGVyIDw8IGN1c3RvbUZp
bHRlclByb2dyYW1Qcm94eS0+aWQoKTsKICAgICAgICAgICAgIEN1c3RvbUZpbHRlclBhcmFtZXRl
ckxpc3QgcGFyYW1ldGVycyA9IGN1c3RvbU9wZXJhdGlvbi0+cGFyYW1ldGVycygpOwogICAgICAg
ICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocGFyYW1ldGVycy5zaXplKCkp
OwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsg
KytpKSB7CkBAIC0yNjQsMjQgKzI2MSwxNCBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
RmlsdGVyT3BlcmF0aW9ucz46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsCiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6VkFMSURBVEVEX0NVU1RPTTogewotICAgICAgICAgICAg
U3RyaW5nIHZlcnRleFNoYWRlclN0cmluZzsKLSAgICAgICAgICAgIFN0cmluZyBmcmFnbWVudFNo
YWRlclN0cmluZzsKLSAgICAgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1U
eXBlOwotICAgICAgICAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRp
bmdzOworICAgICAgICAgICAgLy8gRklYTUU6IEN1c3RvbUZpbHRlck9wZXJhdGlvbiBzaG91bGQg
bm90IG5lZWQgdGhlIG1lc2hUeXBlLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjUyOQogICAgICAgICAgICAgQ3VzdG9tRmlsdGVyTWVz
aFR5cGUgbWVzaFR5cGU7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh2ZXJ0ZXhT
aGFkZXJTdHJpbmcpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKGZyYWdtZW50U2hhZGVyU3RyaW5nKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0o
cHJvZ3JhbVR5cGUpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtaXhTZXR0aW5ncy5ibGVuZE1vZGUpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
RW51bShtaXhTZXR0aW5ncy5jb21wb3NpdGVPcGVyYXRvcikpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKG1lc2hUeXBl
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBSZWZQdHI8Q3Vz
dG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IFdlYkN1c3RvbUZpbHRlclByb2dyYW06OmNyZWF0
ZSh2ZXJ0ZXhTaGFkZXJTdHJpbmcsIGZyYWdtZW50U2hhZGVyU3RyaW5nLCBwcm9ncmFtVHlwZSwg
bWl4U2V0dGluZ3MsIG1lc2hUeXBlKTsKKyAgICAgICAgICAgIGludCBwcm9ncmFtSWQgPSAwOwor
ICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocHJvZ3JhbUlkKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgIHVpbnQzMl90IHBhcmFtZXRlcnNTaXpl
OwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIocGFyYW1ldGVyc1NpemUp
KQpAQCAtMzQ3LDggKzMzNCw4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwKICAgICAgICAgICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtZXNoQm94VHlwZSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBTaGFkZXJz
IGFyZSBhbHJlYWR5IHZhbGlkYXRlZCwgc28gd2UganVzdCB1c2UgQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uIGZvciB0cmFuc3BvcnRhdGlvbi4KLSAgICAgICAgICAgIGZpbHRlciA9IEN1c3RvbUZpbHRl
ck9wZXJhdGlvbjo6Y3JlYXRlKHByb2dyYW0ucmVsZWFzZSgpLCBwYXJhbWV0ZXJzLCBtZXNoUm93
cywgbWVzaENvbHVtbnMsIG1lc2hCb3hUeXBlLCBtZXNoVHlwZSk7CisgICAgICAgICAgICAvLyBB
dCB0aGlzIHBvaW50IHRoZSBTaGFkZXJzIGFyZSBhbHJlYWR5IHZhbGlkYXRlZCwgc28gd2UganVz
dCB1c2UgV2ViQ3VzdG9tRmlsdGVyT3BlcmF0aW9uIGZvciB0cmFuc3BvcnRhdGlvbi4KKyAgICAg
ICAgICAgIGZpbHRlciA9IFdlYkN1c3RvbUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAsIHByb2dy
YW1JZCwgcGFyYW1ldGVycywgbWVzaFJvd3MsIG1lc2hDb2x1bW5zLCBtZXNoQm94VHlwZSwgbWVz
aFR5cGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMzY0LDYg
KzM1MSw0MiBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz46
OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShDU1NfU0hBREVSUykKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDdXN0b21GaWx0ZXJQ
cm9ncmFtSW5mbz46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEN1c3Rv
bUZpbHRlclByb2dyYW1JbmZvJiBwcm9ncmFtSW5mbykKK3sKKyAgICBlbmNvZGVyIDw8IHByb2dy
YW1JbmZvLnZlcnRleFNoYWRlclN0cmluZygpOworICAgIGVuY29kZXIgPDwgcHJvZ3JhbUluZm8u
ZnJhZ21lbnRTaGFkZXJTdHJpbmcoKTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0ocHJvZ3JhbUlu
Zm8ucHJvZ3JhbVR5cGUoKSk7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHByb2dyYW1JbmZvLm1l
c2hUeXBlKCkpOworICAgIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYgbWl4
U2V0dGluZ3MgPSBwcm9ncmFtSW5mby5taXhTZXR0aW5ncygpOworICAgIGVuY29kZXIuZW5jb2Rl
RW51bShtaXhTZXR0aW5ncy5ibGVuZE1vZGUpOworICAgIGVuY29kZXIuZW5jb2RlRW51bShtaXhT
ZXR0aW5ncy5jb21wb3NpdGVPcGVyYXRvcik7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbz46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRl
Y29kZXIsIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJiBwcm9ncmFtSW5mbykKK3sKKyAgICBTdHJp
bmcgdmVydGV4U2hhZGVyU3RyaW5nOworICAgIFN0cmluZyBmcmFnbWVudFNoYWRlclN0cmluZzsK
KyAgICBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBwcm9ncmFtVHlwZTsKKyAgICBDdXN0b21GaWx0
ZXJNZXNoVHlwZSBtZXNoVHlwZTsKKyAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3Mg
bWl4U2V0dGluZ3M7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodmVydGV4U2hhZGVyU3RyaW5n
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGZyYWdt
ZW50U2hhZGVyU3RyaW5nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlRW51bShwcm9ncmFtVHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWRlY29kZXItPmRlY29kZUVudW0obWVzaFR5cGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKG1peFNldHRpbmdzLmJsZW5kTW9kZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0obWl4U2V0
dGluZ3MuY29tcG9zaXRlT3BlcmF0b3IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcHJv
Z3JhbUluZm8gPSBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyh2ZXJ0ZXhTaGFkZXJTdHJpbmcsIGZy
YWdtZW50U2hhZGVyU3RyaW5nLCBwcm9ncmFtVHlwZSwgbWl4U2V0dGluZ3MsIG1lc2hUeXBlKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpCisKIHZv
aWQgQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1PcGVyYXRpb25zPjo6ZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciYgZW5jb2RlciwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdHJhbnNmb3JtT3BlcmF0
aW9ucykKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0cmFuc2Zvcm1P
cGVyYXRpb25zLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NBcmd1bWVudENvZGVycy5oCmluZGV4IDg1NDRhNTMuLmJiYTQyN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oCkBAIC00Myw2ICs0
MywxMCBAQCBzdHJ1Y3QgTGVuZ3RoOwogY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKICNlbmRpZgog
CisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm87
CisjZW5kaWYKKwogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogc3RydWN0IEdyYXBoaWNzU3Vy
ZmFjZVRva2VuOwogI2VuZGlmCkBAIC03Miw2ICs3NiwxMyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+IHsKIH07CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShDU1NfU0hBREVSUykKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUlu
Zm8mKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6
Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mKTsKK307CisjZW5kaWYKKwogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpUcmFuc2Zvcm1PcGVyYXRpb25zPiB7CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9y
bU9wZXJhdGlvbnMmKTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwg
V2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0
ZXJPcGVyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWU4NGM5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV2ViQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMK
KyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisg
KiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkN1c3RvbUZpbHRlck9wZXJhdGlvbl9o
CisjZGVmaW5lIFdlYkN1c3RvbUZpbHRlck9wZXJhdGlvbl9oCisKKyNpZiBFTkFCTEUoQ1NTX1NI
QURFUlMpCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworLy8gVGhpcyBjbGFzcyBpcyBvbmx5IGFkZGluZyB0aGUgcHJvZ3JhbUlkIG9u
IHRvcCBvZiBDdXN0b21GaWx0ZXJPcGVyYXRpb24uIFRoZSBhcmd1bWVudCBkZWNvZGVyIGhhcyBu
bworLy8gY29udGV4dCwgc28gd2UgY2Fubm90IHNlYXJjaCBpbiBvdXIgY2FjaGVkIEN1c3RvbUZp
bHRlclByb2dyYW1zIHdoaWxlIGRlY29kaW5nLiBJbiB0aGF0IGNhc2UKKy8vIGl0IHdpbGwganVz
dCBzdG9yZSB0aGUgcHJvZ3JhbUlkIGFuZCBubyBDdXN0b21GaWx0ZXJQcm9ncmFtIGluc3RhbmNl
LiBUaGUgcmVjZWl2ZXIgaXMgc3VwcG9zZWQgdG8KKy8vIGl0ZXJhdGUgb24gdGhpcyBzdHJ1Y3R1
cmUgYW5kIGluamVjdCB0aGUgcmlnaHQgQ3VzdG9tRmlsdGVyUHJvZ3JhbXMuCisKK2NsYXNzIFdl
YkN1c3RvbUZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBDdXN0b21GaWx0ZXJPcGVyYXRpb24gewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkN1c3RvbUZpbHRlck9wZXJhdGlvbj4g
Y3JlYXRlKFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSwgaW50IHByb2dy
YW1JZCwgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgc29ydGVkUGFyYW1ldGVycywg
dW5zaWduZWQgbWVzaFJvd3MsIHVuc2lnbmVkIG1lc2hDb2x1bW5zLCBDdXN0b21GaWx0ZXJNZXNo
Qm94VHlwZSBtZXNoQm94VHlwZSwgQ3VzdG9tRmlsdGVyTWVzaFR5cGUgbWVzaFR5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkN1c3RvbUZpbHRlck9wZXJhdGlvbihw
cm9ncmFtLCBwcm9ncmFtSWQsIHNvcnRlZFBhcmFtZXRlcnMsIG1lc2hSb3dzLCBtZXNoQ29sdW1u
cywgbWVzaEJveFR5cGUsIG1lc2hUeXBlKSk7CisgICAgfQorCisgICAgaW50IHByb2dyYW1JZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3JhbUlkOyB9CisKK3ByaXZhdGU6CisgICAgV2ViQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uKFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSwg
aW50IHByb2dyYW1JZCwgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgc29ydGVkUGFy
YW1ldGVycywgdW5zaWduZWQgbWVzaFJvd3MsIHVuc2lnbmVkIG1lc2hDb2x1bW5zLCBDdXN0b21G
aWx0ZXJNZXNoQm94VHlwZSBtZXNoQm94VHlwZSwgQ3VzdG9tRmlsdGVyTWVzaFR5cGUgbWVzaFR5
cGUpCisgICAgICAgIDogQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKHByb2dyYW0sIHNvcnRlZFBhcmFt
ZXRlcnMsIG1lc2hSb3dzLCBtZXNoQ29sdW1ucywgbWVzaEJveFR5cGUsIG1lc2hUeXBlKQorICAg
ICAgICAsIG1fcHJvZ3JhbUlkKHByb2dyYW1JZCkKKyAgICB7CisgICAgfQorCisgICAgaW50IG1f
cHJvZ3JhbUlkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKENTU19TSEFERVJTKQorCisjZW5kaWYgLy8gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkN1
c3RvbUZpbHRlclByb2dyYW1Qcm94eS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LmgKaW5kZXggYmI2ZjBiYi4u
NGZhYjA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LmgK
QEAgLTU2LDkgKzU2LDkgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViQ3VzdG9t
RmlsdGVyUHJvZ3JhbVByb3h5Pjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViQ3VzdG9t
RmlsdGVyUHJvZ3JhbVByb3h5Pjo6ZGVyZWY7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJD
dXN0b21GaWx0ZXJQcm9ncmFtUHJveHk+IGNyZWF0ZShXZWJDdXN0b21GaWx0ZXJQcm9ncmFtUHJv
eHlDbGllbnQqIGNsaWVudCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDdXN0b21GaWx0ZXJQ
cm9ncmFtUHJveHk+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYkN1c3RvbUZpbHRlclByb2dyYW1Qcm94eShjbGllbnQpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtUHJveHkoKSk7CiAgICAgfQogCiAgICAg
aW50IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQpAQCAtNzMsOCArNzMsOCBAQCBwdWJsaWM6
CiAgICAgV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5Q2xpZW50KiBjbGllbnQoKSBjb25zdCB7
IHJldHVybiBtX2NsaWVudDsgfQogCiBwcml2YXRlOgotICAgIFdlYkN1c3RvbUZpbHRlclByb2dy
YW1Qcm94eShXZWJDdXN0b21GaWx0ZXJQcm9ncmFtUHJveHlDbGllbnQqIGNsaWVudCkKLSAgICAg
ICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5KCkK
KyAgICAgICAgOiBtX2NsaWVudCgwKQogICAgICAgICAsIG1faWQoc19uZXh0SWQrKykKICAgICB7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNw
cAppbmRleCA1OTU3NmU4Li4yN2Y1ZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVDb29yZGluYXRvclByb3h5LmNwcApAQCAtMzAsNiArMzAsMTAgQEAKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKIAorI2lmIEVOQUJMRShD
U1NfU0hBREVSUykKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTEx
NSw2ICsxMTksMTcgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpzZXRDb21wb3Np
dGluZ0xheWVyRmlsdGVycyhXZWJMYXllcklEIGlkLCBjb25zdAogfQogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoQ1NTX1NIQURFUlMpCit2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OnJlbW92
ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKQoreworICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQo
JkxheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtLCBtX3JlbmRlcmVy
LmdldCgpLCBpZCkpOworfQordm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpjcmVhdGVD
dXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCwgY29uc3QgV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJv
Z3JhbUluZm8mIHByb2dyYW1JbmZvKQoreworICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVy
VHJlZVJlbmRlcmVyOjpjcmVhdGVDdXN0b21GaWx0ZXJQcm9ncmFtLCBtX3JlbmRlcmVyLmdldCgp
LCBpZCwgcHJvZ3JhbUluZm8pKTsKK30KKyNlbmRpZgorCiB2b2lkIExheWVyVHJlZUNvb3JkaW5h
dG9yUHJveHk6OmRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRz
U2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpCiB7CiAgICAgZGlzcGF0
Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OmZsdXNoTGF5ZXJDaGFuZ2VzLCBtX3Jl
bmRlcmVyLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclBy
b3h5LmgKaW5kZXggYzZkNzkwZi4uMWRmMmM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZUNvb3JkaW5hdG9yUHJveHkuaApAQCAtNTcsNiArNTcsMTAgQEAgcHVibGljOgogI2lmIEVO
QUJMRShDU1NfRklMVEVSUykKICAgICB2b2lkIHNldENvbXBvc2l0aW5nTGF5ZXJGaWx0ZXJzKFdl
YkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKICNlbmRpZgorI2lm
IEVOQUJMRShDU1NfU0hBREVSUykKKyAgICB2b2lkIGNyZWF0ZUN1c3RvbUZpbHRlclByb2dyYW0o
aW50IGlkLCBjb25zdCBXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYpOworICAgIHZv
aWQgcmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpOworI2VuZGlmCiAgICAgdm9pZCBk
ZWxldGVDb21wb3NpdGluZ0xheWVyKFdlYkxheWVySUQpOwogICAgIHZvaWQgc2V0Um9vdENvbXBv
c2l0aW5nTGF5ZXIoV2ViTGF5ZXJJRCk7CiAgICAgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBmOGZlMjY1Li4wY2Y1ZTJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHku
bWVzc2FnZXMuaW4KQEAgLTI0LDYgKzI0LDEwIEBAIG1lc3NhZ2VzIC0+IExheWVyVHJlZUNvb3Jk
aW5hdG9yUHJveHkgewogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICBTZXRDb21wb3NpdGlu
Z0xheWVyRmlsdGVycyh1aW50MzJfdCBpZCwgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyBmaWx0
ZXJzKQogI2VuZGlmCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIENyZWF0ZUN1c3RvbUZp
bHRlclByb2dyYW0oaW50IGlkLCBXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBwcm9n
cmFtSW5mbykKKyAgICBSZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCkKKyNlbmRpZgog
ICAgIFNldFJvb3RDb21wb3NpdGluZ0xheWVyKHVpbnQzMl90IGlkKQogICAgIERlbGV0ZUNvbXBv
c2l0aW5nTGF5ZXIodWludDMyX3QgaWQpCiAgICAgQ3JlYXRlVGlsZUZvckxheWVyKHVpbnQzMl90
IGxheWVySUQsIGludCB0aWxlSUQsIFdlYkNvcmU6OkludFJlY3QgdGlsZVJlY3QsIFdlYktpdDo6
U3VyZmFjZVVwZGF0ZUluZm8gdXBkYXRlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRl
cmVyLmNwcAppbmRleCAyNDJmOTQ0Li5iMTNhZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
UmVuZGVyZXIuY3BwCkBAIC0zNyw2ICszNywxMyBAQAogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykK
KyNpbmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFtLmgiCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm8uaCIKKyNpbmNsdWRlICJXZWJDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIKKyNp
bmNsdWRlICJXZWJDdXN0b21GaWx0ZXJQcm9ncmFtLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMjgzLDEwICsyOTAsNTggQEAg
dm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJGaWx0ZXJzKFdlYkxheWVySUQgaWQsIGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIGYKICAgICBBU1NFUlQoaXQgIT0gbV9sYXllcnMuZW5kKCkp
OwogCiAgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBpdC0+dmFsdWU7CisjaWYgRU5BQkxFKENT
U19TSEFERVJTKQorICAgIGlmIChmaWx0ZXJzLmhhc0N1c3RvbUZpbHRlcigpKSB7CisgICAgICAg
IGxheWVyLT5zZXRGaWx0ZXJzKGluamVjdENhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zKGZpbHRl
cnMpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogICAgIGxheWVyLT5zZXRGaWx0
ZXJzKGZpbHRlcnMpOwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCitGaWx0
ZXJPcGVyYXRpb25zIExheWVyVHJlZVJlbmRlcmVyOjppbmplY3RDYWNoZWRDdXN0b21GaWx0ZXJQ
cm9ncmFtcyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBjb25zdAoreworICAgIEZp
bHRlck9wZXJhdGlvbnMgb3V0cHV0RmlsdGVyczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGZpbHRlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgRmlsdGVyT3BlcmF0aW9uKiBvcGVyYXRp
b24gPSBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hdChpKS5nZXQoKTsKKyAgICAgICAgaWYgKG9wZXJh
dGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpICE9IEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9NKSB7Cisg
ICAgICAgICAgICBvdXRwdXRGaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQob3BlcmF0aW9uKTsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIFdlYkN1c3RvbUZpbHRl
ck9wZXJhdGlvbiogY3VzdG9tT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8V2ViQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uKj4ob3BlcmF0aW9uKTsKKyAgICAgICAgQVNTRVJUKCFjdXN0b21PcGVyYXRpb24t
PnByb2dyYW0oKSk7CisgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1NYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPSBtX2N1c3RvbUZpbHRlclByb2dyYW1zLmZpbmQoY3VzdG9tT3BlcmF0aW9uLT5w
cm9ncmFtSWQoKSk7CisgICAgICAgIGlmIChpdGVyID09IG1fY3VzdG9tRmlsdGVyUHJvZ3JhbXMu
ZW5kKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgY3VzdG9tT3BlcmF0aW9uLT5zZXRQcm9ncmFt
KGl0ZXItPnZhbHVlLmdldCgpKTsKKyAgICAgICAgb3V0cHV0RmlsdGVycy5vcGVyYXRpb25zKCku
YXBwZW5kKG9wZXJhdGlvbik7CisgICAgfQorICAgIHJldHVybiBvdXRwdXRGaWx0ZXJzOworfQor
Cit2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBp
ZCwgY29uc3QgV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mIHByb2dyYW1JbmZvKQor
eworICAgIEFTU0VSVCghbV9jdXN0b21GaWx0ZXJQcm9ncmFtcy5jb250YWlucyhpZCkpOworICAg
IG1fY3VzdG9tRmlsdGVyUHJvZ3JhbXMuc2V0KGlkLCBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtOjpj
cmVhdGUocHJvZ3JhbUluZm8udmVydGV4U2hhZGVyU3RyaW5nKCksIHByb2dyYW1JbmZvLmZyYWdt
ZW50U2hhZGVyU3RyaW5nKCksIHByb2dyYW1JbmZvLnByb2dyYW1UeXBlKCksIHByb2dyYW1JbmZv
Lm1peFNldHRpbmdzKCksIHByb2dyYW1JbmZvLm1lc2hUeXBlKCkpKTsKK30KKwordm9pZCBMYXll
clRyZWVSZW5kZXJlcjo6cmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpCit7CisgICAg
Q3VzdG9tRmlsdGVyUHJvZ3JhbU1hcDo6aXRlcmF0b3IgaXRlciA9IG1fY3VzdG9tRmlsdGVyUHJv
Z3JhbXMuZmluZChpZCk7CisgICAgaWYgKGl0ZXIgPT0gbV9jdXN0b21GaWx0ZXJQcm9ncmFtcy5l
bmQoKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpZiAobV90ZXh0dXJlTWFwcGVyKQorICAgICAgICBtX3RleHR1cmVNYXBwZXIt
PnJlbW92ZUNhY2hlZEN1c3RvbUZpbHRlclByb2dyYW0oaXRlci0+dmFsdWUuZ2V0KCkpOworICAg
IG1fY3VzdG9tRmlsdGVyUHJvZ3JhbXMucmVtb3ZlKGl0ZXIpOworfQorI2VuZGlmIC8vIEVOQUJM
RShDU1NfU0hBREVSUykKKwogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJTdGF0ZShX
ZWJMYXllcklEIGlkLCBjb25zdCBXZWJMYXllckluZm8mIGxheWVySW5mbykKIHsKICAgICBlbnN1
cmVMYXllcihpZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAppbmRleCAwNTBhNDQz
Li40NGZhN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTM4LDYgKzM4
LDExIEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
UHJpbWl0aXZlcy5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDdXN0b21GaWx0ZXJQ
cm9ncmFtOworY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm87Cit9CisKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTsKQEAgLTg0LDYgKzg5LDEx
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgdm9pZCBzZXRMYXllckZp
bHRlcnMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIFdlYkNvcmU6OkZpbHRlck9wZXJhdGlv
bnMgaW5qZWN0Q2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoY29uc3QgV2ViQ29yZTo6RmlsdGVy
T3BlcmF0aW9ucyYgZmlsdGVycykgY29uc3Q7CisgICAgdm9pZCBjcmVhdGVDdXN0b21GaWx0ZXJQ
cm9ncmFtKGludCBpZCwgY29uc3QgV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mKTsK
KyAgICB2b2lkIHJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKTsKKyNlbmRpZgogCiAg
ICAgdm9pZCBjcmVhdGVUaWxlKFdlYkxheWVySUQsIGludCwgZmxvYXQgc2NhbGUpOwogICAgIHZv
aWQgcmVtb3ZlVGlsZShXZWJMYXllcklELCBpbnQpOwpAQCAtMTcxLDYgKzE4MSwxMSBAQCBwcml2
YXRlOgogICAgIFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OkFjY2VsZXJhdGlvbk1vZGUgbV9hY2Nl
bGVyYXRpb25Nb2RlOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fYmFja2dyb3VuZENvbG9yOwogICAg
IGJvb2wgbV9zZXREcmF3c0JhY2tncm91bmQ7CisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisg
ICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dy
YW0+ID4gQ3VzdG9tRmlsdGVyUHJvZ3JhbU1hcDsKKyAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTWFw
IG1fY3VzdG9tRmlsdGVyUHJvZ3JhbXM7CisjZW5kaWYKIH07CiAKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKaW5kZXggMjBiYWQz
NS4uZDBiZjM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yLmNwcApAQCAtMzU1LDE3ICszNTUsMjEgQEAgdm9pZCBMYXllclRyZWVDb29y
ZGluYXRvcjo6Y2hlY2tDdXN0b21GaWx0ZXJQcm9ncmFtUHJveGllcyhjb25zdCBGaWx0ZXJPcGVy
YXRpb24KICAgICAgICAgY29uc3QgVmFsaWRhdGVkQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKiBjdXN0
b21PcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxjb25zdCBWYWxpZGF0ZWRDdXN0b21GaWx0ZXJPcGVy
YXRpb24qPihvcGVyYXRpb24pOwogICAgICAgICBBU1NFUlQoY3VzdG9tT3BlcmF0aW9uLT52YWxp
ZGF0ZWRQcm9ncmFtKCktPmlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgICAgIFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSogcHJvZ3JhbSA9IGN1c3RvbU9wZXJhdGlvbi0+dmFsaWRh
dGVkUHJvZ3JhbSgpLT5wbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSgpOwotICAgICAgICBpZiAoIXBy
b2dyYW0tPmNsaWVudCgpKQotICAgICAgICAgICAgcHJvZ3JhbS0+c2V0Q2xpZW50KFdlYkN1c3Rv
bUZpbHRlclByb2dyYW1Qcm94eTo6Y3JlYXRlKHRoaXMpKTsKKyAgICAgICAgCisgICAgICAgIFJl
ZlB0cjxXZWJDdXN0b21GaWx0ZXJQcm9ncmFtUHJveHk+IGN1c3RvbUZpbHRlclByb2dyYW1Qcm94
eTsKKyAgICAgICAgaWYgKHByb2dyYW0tPmNsaWVudCgpKQorICAgICAgICAgICAgY3VzdG9tRmls
dGVyUHJvZ3JhbVByb3h5ID0gc3RhdGljX2Nhc3Q8V2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5
Kj4ocHJvZ3JhbS0+Y2xpZW50KCkpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFdlYkN1
c3RvbUZpbHRlclByb2dyYW1Qcm94eSogY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5ID0gc3RhdGlj
X2Nhc3Q8V2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5Kj4ocHJvZ3JhbS0+Y2xpZW50KCkpOwot
ICAgICAgICAgICAgaWYgKCFjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHktPmNsaWVudCgpKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gSnVzdCBpbiBjYXNlIHRoZSBMYXllclRyZWVDb29yZGluYXRvciB3
YXMgZGVzdHJveWVkIGFuZCByZWNyZWF0ZWQuCi0gICAgICAgICAgICAgICAgY3VzdG9tRmlsdGVy
UHJvZ3JhbVByb3h5LT5zZXRDbGllbnQodGhpcyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIC8vIElmIHRoZSBjbGllbnQgd2FzIG5vdCBkaXNjb25uZWN0ZWQgdGhlbiB0
aGlzIGNvb3JkaW5hdG9yIG11c3QgYmUgdGhlIGNsaWVudCBmb3IgaXQuCi0gICAgICAgICAgICAg
ICAgQVNTRVJUKGN1c3RvbUZpbHRlclByb2dyYW1Qcm94eS0+Y2xpZW50KCkgPT0gdGhpcyk7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHkgPSBXZWJD
dXN0b21GaWx0ZXJQcm9ncmFtUHJveHk6OmNyZWF0ZSgpOworICAgICAgICAgICAgcHJvZ3JhbS0+
c2V0Q2xpZW50KGN1c3RvbUZpbHRlclByb2dyYW1Qcm94eSk7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGlmICghY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5jbGllbnQoKSkgeworICAg
ICAgICAgICAgY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5zZXRDbGllbnQodGhpcyk7CisgICAg
ICAgICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHk6OkNyZWF0ZUN1c3RvbUZpbHRlclByb2dyYW0oY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5p
ZCgpLCBjdXN0b21PcGVyYXRpb24tPnZhbGlkYXRlZFByb2dyYW0oKS0+dmFsaWRhdGVkUHJvZ3Jh
bUluZm8oKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSWYgdGhlIGNsaWVu
dCB3YXMgbm90IGRpc2Nvbm5lY3RlZCB0aGVuIHRoaXMgY29vcmRpbmF0b3IgbXVzdCBiZSB0aGUg
Y2xpZW50IGZvciBpdC4KKyAgICAgICAgICAgIEFTU0VSVChjdXN0b21GaWx0ZXJQcm9ncmFtUHJv
eHktPmNsaWVudCgpID09IHRoaXMpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMzc1LDggKzM3
OSw3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbW92ZUN1c3RvbUZpbHRlclByb2dy
YW1Qcm94eShXZWJDdXN0b21GaWx0ZXJQcm9ncmFtCiAgICAgLy8gQXQgdGhpcyB0aW1lIHRoZSBz
aGFkZXIgaXMgbm90IG5lZWRlZCBhbnltb3JlLCBzbyB3ZSByZW1vdmUgaXQgZnJvbSBvdXIgc2V0
IGFuZCAKICAgICAvLyBzZW5kIGEgbWVzc2FnZSB0byB0aGUgb3RoZXIgcHJvY2VzcyB0byBkZWxl
dGUgaXQuCiAgICAgbV9jdXN0b21GaWx0ZXJQcm9ncmFtcy5yZW1vdmUoY3VzdG9tRmlsdGVyUHJv
Z3JhbVByb3h5KTsKLSAgICAvLyBGSVhNRTogU2VuZCBhIG1lc3NhZ2UgdG8gZGVsZXRlIHRoZSBv
YmplY3Qgb24gdGhlIFVJIHByb2Nlc3MuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMTgwMQorICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5
ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6UmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShjdXN0b21G
aWx0ZXJQcm9ncmFtUHJveHktPmlkKCkpKTsKIH0KIAogdm9pZCBMYXllclRyZWVDb29yZGluYXRv
cjo6ZGlzY29ubmVjdEN1c3RvbUZpbHRlclByb2dyYW1zKCkK
</data>
<flag name="review"
          id="190055"
          type_id="1"
          status="+"
          setter="noam"
    />
    <flag name="commit-queue"
          id="190056"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174835</attachid>
            <date>2012-11-17 17:44:48 -0800</date>
            <delta_ts>2012-11-17 18:14:16 -0800</delta_ts>
            <desc>Patch V3</desc>
            <filename>bug101801_v4.patch</filename>
            <type>text/plain</type>
            <size>37031</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwYTA2NmZiLi5mNzMwM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTItMTEtMTcgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgor
CisgICAgICAgIFtUZXhtYXBdW0NTUyBTaGFkZXJzXSBSZXVzZSB0aGUgcHJlY29tcGlsZWQgc2hh
ZGVyIGZvciBjdXN0b20gZmlsdGVycyBpbiBUZXh0dXJlTWFwcGVyR0wKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTgwMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgSGFzaE1hcCBpbiBUZXh0
dXJlTWFwcGVyR0wgdG8gc3RvcmUgdGhlIHByZWNvbXBpbGVkIHZlcnNpb25zIG9mIHRoZSBzaGFk
ZXJzLgorICAgICAgICBBbHNvIGFkZGVkIGEgbmV3IEFQSSBvbiBUZXh0dXJlTWFwcGVyIHRoYXQg
cmVjZWl2ZXMgYSBub3RpZmljYXRpb24gd2hlbiB0aGUgc2hhZGVyCisgICAgICAgIGlzIG5vIGxv
bmdlciBuZWVkZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGUgY29kZSBpcyB0ZXN0ZWQg
YnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
T3BlcmF0aW9uOjpzZXRQcm9ncmFtKToKKyAgICAgICAgKEN1c3RvbUZpbHRlck9wZXJhdGlvbik6
IE1hZGUgdGhlIGNvbnN0cnVjdG9yIHByb3RlY3RlZCwgc28gdGhhdCB3ZSBjYW4gb3ZlcndyaXRl
IHRoZSBjbGFzcyBpbiBXSzIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnZhbGlkYXRlZFByb2dyYW1JbmZvKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyVmFsaWRhdGVkUHJvZ3JhbS5oOgorICAgICAgICAoQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJv
Z3JhbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dHVyZU1hcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpyZW1vdmVDYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFt
KToKKyAgICAgICAgRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJ5IHRoZSBwbGF0Zm9ybSBjb2RlLCB3
aGVuIHRoZSBzaGFkZXIgaXMgbm8gbG9uZ2VyCisgICAgICAgIG5lZWRlZC4gVGhpcyBpbXBsZW1l
bnRhdGlvbiBpcyBlbXB0eSBhbmQgb3ZlcnJpZGRlbiBpbiBUZXh0dXJlTWFwcGVyR0wuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OnJlbW92ZUNhY2hlZEN1c3RvbUZpbHRlclBy
b2dyYW0pOgorICAgICAgICBSZW1vdmVzIHRoZSBjb21waWxlZCBzaGFkZXIgZnJvbSB0aGUgY2Fj
aGUuIFRoaXMgaXMgY2FsbGVkIGZyb20gV0syIHdoZW4gdGhlIGNvbXBpbGVkIHNoYWRlcgorICAg
ICAgICBpcyBubyBsb25nZXIgbmVlZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdVc2luZ0N1c3RvbUZpbHRlcik6IFRoZSBmaXJz
dCB0aW1lIGl0IHVzZXMgYSBuZXcKKyAgICAgICAgc2hhZGVyIGl0IHdpbGwgY2FjaGUgdGhlIGNv
bXBpbGVkIHZlcnNpb24gdW50aWwgcmVtb3ZlQ2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbSBpcyBj
YWxsZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyR0wpOgorCiAy
MDEyLTExLTE3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIER1bXAgdGhlIHRpbGUgY2FjaGUgZXh0ZW50IGluIGxheW91dCB0ZXN0cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJP
cGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggOGFkMzhiOS4uNzE1M2U2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVy
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlck9wZXJhdGlvbi5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB9CiAg
ICAgCiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbSogcHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvZ3JhbS5nZXQoKTsgfQorICAgIHZvaWQgc2V0UHJvZ3JhbShQYXNzUmVmUHRyPEN1c3RvbUZp
bHRlclByb2dyYW0+IHByb2dyYW0pIHsgbV9wcm9ncmFtID0gcHJvZ3JhbTsgfQogICAgIAogICAg
IGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmFtZXRlcnM7IH0KICAgICAKQEAgLTY1LDYgKzY2LDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgYmxlbmRpbmdOZWVkc1JlbmRlcmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KICAgICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBi
bGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3Qg
TGF5b3V0U2l6ZSYsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOworCitwcm90ZWN0
ZWQ6CisgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUHJv
Z3JhbT4sIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmLCB1bnNpZ25lZCBtZXNoUm93
cywgdW5zaWduZWQgbWVzaENvbHVtbnMsIEN1c3RvbUZpbHRlck1lc2hCb3hUeXBlLCBDdXN0b21G
aWx0ZXJNZXNoVHlwZSk7CisgICAgCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKICAgICB7CkBAIC03OSw4ICs4NCw2
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAmJiBtX21lc2hUeXBlID09IG90aGVyLT5tX21lc2hU
eXBlCiAgICAgICAgICAgICAmJiBtX3BhcmFtZXRlcnMgPT0gb3RoZXItPm1fcGFyYW1ldGVyczsK
ICAgICB9Ci0gICAgCi0gICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKFBhc3NSZWZQdHI8Q3VzdG9t
RmlsdGVyUHJvZ3JhbT4sIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmLCB1bnNpZ25l
ZCBtZXNoUm93cywgdW5zaWduZWQgbWVzaENvbHVtbnMsIEN1c3RvbUZpbHRlck1lc2hCb3hUeXBl
LCBDdXN0b21GaWx0ZXJNZXNoVHlwZSk7CiAKICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyUHJvZ3Jh
bT4gbV9wcm9ncmFtOwogICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QgbV9wYXJhbWV0ZXJz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAKaW5kZXgg
ZWY1ZWU0ZS4uNzJhZDhmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW0uY3BwCkBAIC01MTIsNiArNTEyLDEyIEBAIEN1c3RvbUZpbHRlclZhbGlkYXRlZFBy
b2dyYW06On5DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKCkKICAgICAgICAgbV9nbG9iYWxD
b250ZXh0LT5yZW1vdmVWYWxpZGF0ZWRQcm9ncmFtKHRoaXMpOwogfQogCitDdXN0b21GaWx0ZXJQ
cm9ncmFtSW5mbyBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjp2YWxpZGF0ZWRQcm9ncmFt
SW5mbygpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faXNJbml0aWFsaXplZCk7CisgICAgcmV0dXJu
IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvKG1fdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBtX3ZhbGlk
YXRlZEZyYWdtZW50U2hhZGVyLCBtX3Byb2dyYW1JbmZvLnByb2dyYW1UeXBlKCksIG1fcHJvZ3Jh
bUluZm8ubWl4U2V0dGluZ3MoKSwgbV9wcm9ncmFtSW5mby5tZXNoVHlwZSgpKTsKK30KKwogI2lm
ICFQTEFURk9STShCTEFDS0JFUlJZKSAmJiAhVVNFKFRFWFRVUkVfTUFQUEVSKQogdm9pZCBDdXN0
b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpwbGF0Zm9ybUluaXQoKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxp
ZGF0ZWRQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaAppbmRleCA4YWZjOWVjLi5jNjhmNGE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaApAQCAtODIsNiAr
ODIsOCBAQCBwdWJsaWM6CiAgICAgfkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0oKTsKIAog
ICAgIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJiBwcm9ncmFtSW5mbygpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvZ3JhbUluZm87IH0KKyAgICBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyB2YWxp
ZGF0ZWRQcm9ncmFtSW5mbygpIGNvbnN0OworICAgIAogICAgIFBhc3NSZWZQdHI8Q3VzdG9tRmls
dGVyQ29tcGlsZWRQcm9ncmFtPiBjb21waWxlZFByb2dyYW0oKTsKIAogICAgIGNvbnN0IFN0cmlu
ZyYgdmFsaWRhdGVkVmVydGV4U2hhZGVyKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAppbmRleCBkMDk5
YWNiLi4xNDQyMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQml0bWFwVGV4dHVyZVBvb2w7CitjbGFzcyBDdXN0b21GaWx0
ZXJQcm9ncmFtOwogY2xhc3MgVGV4dHVyZU1hcHBlcjsKIAogLy8gQSAyRCB0ZXh0dXJlIHRoYXQg
Y2FuIGJlIHRoZSB0YXJnZXQgb2Ygc29mdHdhcmUgb3IgR0wgcmVuZGVyaW5nLgpAQCAtMTU0LDYg
KzE1NSwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVy
ZT4gYWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb25zdCBJbnRTaXplJik7CiAKKyNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpCisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNhY2hlZEN1c3RvbUZpbHRlclBy
b2dyYW0oQ3VzdG9tRmlsdGVyUHJvZ3JhbSopIHsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAg
ICBleHBsaWNpdCBUZXh0dXJlTWFwcGVyKEFjY2VsZXJhdGlvbk1vZGUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwCmluZGV4IDQ3ZmIxYjUuLjllMzc4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CkBAIC05MjEsNiArOTIxLDExIEBAIHN0YXRpYyB2b2lkIHByZXBhcmVGaWx0ZXJQcm9ncmFtKFRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBwcm9ncmFtLCBjb25zdCBGaWx0CiB9CiAKICNpZiBF
TkFCTEUoQ1NTX1NIQURFUlMpCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6cmVtb3ZlQ2FjaGVkQ3Vz
dG9tRmlsdGVyUHJvZ3JhbShDdXN0b21GaWx0ZXJQcm9ncmFtKiBwcm9ncmFtKQoreworICAgIG1f
Y3VzdG9tRmlsdGVyUHJvZ3JhbXMucmVtb3ZlKHByb2dyYW0pOworfQorCiBib29sIFRleHR1cmVN
YXBwZXJHTDo6ZHJhd1VzaW5nQ3VzdG9tRmlsdGVyKEJpdG1hcFRleHR1cmUmIHRhcmdldCwgY29u
c3QgQml0bWFwVGV4dHVyZSYgc291cmNlLCBjb25zdCBGaWx0ZXJPcGVyYXRpb24mIGZpbHRlcikK
IHsKICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyUmVuZGVyZXI+IHJlbmRlcmVyOwpAQCAtOTMyLDkg
KzkzNywxMyBAQCBib29sIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1VzaW5nQ3VzdG9tRmlsdGVyKEJp
dG1hcFRleHR1cmUmIHRhcmdldCwgY29uc3QgQml0bWFwVAogICAgICAgICBSZWZQdHI8Q3VzdG9t
RmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IGN1c3RvbUZpbHRlci0+cHJvZ3JhbSgpOwogICAgICAg
ICByZW5kZXJlciA9IEN1c3RvbUZpbHRlclJlbmRlcmVyOjpjcmVhdGUobV9jb250ZXh0M0QsIHBy
b2dyYW0tPnByb2dyYW1UeXBlKCksIGN1c3RvbUZpbHRlci0+cGFyYW1ldGVycygpLCAKICAgICAg
ICAgICAgIGN1c3RvbUZpbHRlci0+bWVzaFJvd3MoKSwgY3VzdG9tRmlsdGVyLT5tZXNoQ29sdW1u
cygpLCBjdXN0b21GaWx0ZXItPm1lc2hCb3hUeXBlKCksIGN1c3RvbUZpbHRlci0+bWVzaFR5cGUo
KSk7Ci0gICAgICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGlzIGJ5IGtlZXBpbmcgYSByZWZlcmVu
Y2UgdG8gdGhlIHByb2dyYW0gYWNyb3NzIGZyYW1lcy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTgwMQotICAgICAgICBSZWZQdHI8Q3VzdG9t
RmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBjb21waWxlZFByb2dyYW0gPSBDdXN0b21GaWx0ZXJDb21w
aWxlZFByb2dyYW06OmNyZWF0ZShtX2NvbnRleHQzRCwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyU3Ry
aW5nKCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyU3RyaW5nKCksIHByb2dyYW0tPnByb2dyYW1U
eXBlKCkpOworICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBjb21w
aWxlZFByb2dyYW07CisgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1NYXA6Oml0ZXJhdG9yIGl0
ZXIgPSBtX2N1c3RvbUZpbHRlclByb2dyYW1zLmZpbmQocHJvZ3JhbS5nZXQoKSk7CisgICAgICAg
IGlmIChpdGVyID09IG1fY3VzdG9tRmlsdGVyUHJvZ3JhbXMuZW5kKCkpIHsKKyAgICAgICAgICAg
IGNvbXBpbGVkUHJvZ3JhbSA9IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6Y3JlYXRlKG1f
Y29udGV4dDNELCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXJTdHJpbmcoKSwgcHJvZ3JhbS0+ZnJhZ21l
bnRTaGFkZXJTdHJpbmcoKSwgcHJvZ3JhbS0+cHJvZ3JhbVR5cGUoKSk7CisgICAgICAgICAgICBt
X2N1c3RvbUZpbHRlclByb2dyYW1zLnNldChwcm9ncmFtLmdldCgpLCBjb21waWxlZFByb2dyYW0p
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNvbXBpbGVkUHJvZ3JhbSA9IGl0ZXItPnZh
bHVlOwogICAgICAgICByZW5kZXJlci0+c2V0Q29tcGlsZWRQcm9ncmFtKGNvbXBpbGVkUHJvZ3Jh
bS5yZWxlYXNlKCkpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKaW5k
ZXggYzEzMTUyZS4uNjY0NmRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaApAQCAtMzAsNiArMzAsOCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEN1c3RvbUZpbHRlclByb2dyYW07Citj
bGFzcyBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW07CiBjbGFzcyBUZXh0dXJlTWFwcGVyR0xE
YXRhOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW07CkBAIC03NCw2ICs3Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogI2lmIEVOQUJMRShDU1Nf
U0hBREVSUykKICAgICBib29sIGRyYXdVc2luZ0N1c3RvbUZpbHRlcihCaXRtYXBUZXh0dXJlJiB0
YXJnZXRUZXh0dXJlLCBjb25zdCBCaXRtYXBUZXh0dXJlJiBzb3VyY2VUZXh0dXJlLCBjb25zdCBG
aWx0ZXJPcGVyYXRpb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2FjaGVkQ3VzdG9tRmls
dGVyUHJvZ3JhbShDdXN0b21GaWx0ZXJQcm9ncmFtKik7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0
RW5hYmxlRWRnZURpc3RhbmNlQW50aWFsaWFzaW5nKGJvb2wgZW5hYmxlZCkgeyBtX2VuYWJsZUVk
Z2VEaXN0YW5jZUFudGlhbGlhc2luZyA9IGVuYWJsZWQ7IH0KQEAgLTEyOCw2ICsxMzEsMTEgQEAg
cHJpdmF0ZToKICAgICBDbGlwU3RhY2sgbV9jbGlwU3RhY2s7CiAgICAgYm9vbCBtX2VuYWJsZUVk
Z2VEaXN0YW5jZUFudGlhbGlhc2luZzsKIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICB0
eXBlZGVmIEhhc2hNYXA8Q3VzdG9tRmlsdGVyUHJvZ3JhbSosIFJlZlB0cjxDdXN0b21GaWx0ZXJD
b21waWxlZFByb2dyYW0+ID4gQ3VzdG9tRmlsdGVyUHJvZ3JhbU1hcDsKKyAgICBDdXN0b21GaWx0
ZXJQcm9ncmFtTWFwIG1fY3VzdG9tRmlsdGVyUHJvZ3JhbXM7CisjZW5kaWYKKwogICAgIGZyaWVu
ZCBjbGFzcyBCaXRtYXBUZXh0dXJlR0w7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTcxYTc0YS4uNzJi
OTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTExLTE3ICBBbGV4YW5kcnUg
Q2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KKworICAgICAgICBbVGV4bWFwXVtDU1MgU2hh
ZGVyc10gUmV1c2UgdGhlIHByZWNvbXBpbGVkIHNoYWRlciBmb3IgY3VzdG9tIGZpbHRlcnMgaW4g
VGV4dHVyZU1hcHBlckdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDE4MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDaGFuZ2VkIHRoZSBlbmNvZGluZyBjb2RlIGZvciBWYWxpZGF0ZWRDdXN0b21GaWx0
ZXJPcGVyYXRpb24gdG8gb25seSBlbmNvZGUgdGhlIElEIG9mIHRoZSBwcm9ncmFtLgorICAgICAg
ICBMYXllclRyZWVDb29yZGluYXRvciBtYWtlcyBzdXJlIHRvIHNlbmQgdGhlIHByb2dyYW1zIGlu
IGZ1bGwgYmVmb3JlIHRoZSBlbmNvZGVyIHJ1bnMuCisgICAgICAgIExheWVyVHJlZVJlbmRlcmVy
IHdpbGwgbWFpbnRhaW4gYSBIYXNoTWFwIGZyb20gdGhlc2UgSURzIHRvIHRoZSByZWFsIEN1c3Rv
bUZpbHRlclByb2dyYW0uCisgICAgICAgIFRoZSBVSSBwcm9jZXNzIHdpbGwgYWxzbyByZWNlaXZl
IGEgbWVzc2FnZSBmcm9tIHRoZSBXZWJQcm9jZXNzIHdoZW4gdGhlIHNoYWRlciBpcyBubyBsb25n
ZXIgaW4gbmVlZGVkLgorICAgICAgICBMYXllclRyZWVSZW5kZXJlciBjYWxscyB0aGUgVGV4dHVy
ZU1hcHBlcidzIHJlbW92ZUNhY2hlZEN1c3RvbUZpbHRlclByb2dyYW0gdG8gbm90aWZ5CisgICAg
ICAgIGFib3V0IHRoZSByZW1vdmVkIEN1c3RvbUZpbHRlclByb2dyYW0uCisKKyAgICAgICAgKiBT
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQQzo6
OjpkZWNvZGUpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0
b21GaWx0ZXJPcGVyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkN1c3RvbUZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJDdXN0b21G
aWx0ZXJPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDdXN0b21GaWx0
ZXJPcGVyYXRpb246OnByb2dyYW1JRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDdXN0b21GaWx0
ZXJPcGVyYXRpb246OldlYkN1c3RvbUZpbHRlck9wZXJhdGlvbik6CisgICAgICAgICogU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYkN1c3RvbUZpbHRlclByb2dyYW1Qcm94eTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5OjpXZWJDdXN0b21GaWx0ZXJQ
cm9ncmFtUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6cmVtb3ZlQ3VzdG9tRmlsdGVyUHJv
Z3JhbSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmNyZWF0
ZUN1c3RvbUZpbHRlclByb2dyYW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKExheWVyVHJlZUNv
b3JkaW5hdG9yUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJGaWx0ZXJzKToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjppbmplY3RDYWNoZWRD
dXN0b21GaWx0ZXJQcm9ncmFtcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVy
OjpjcmVhdGVDdXN0b21GaWx0ZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
UmVuZGVyZXI6OnJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJBbmltYXRpb25zKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChMYXllclRyZWVSZW5kZXJlcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6Y2hlY2tDdXN0b21GaWx0ZXJQ
cm9ncmFtUHJveGllcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpy
ZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVDb29yZGluYXRvcjo6c2V0TGF5ZXJBbmltYXRpb25zKToKKwogMjAxMi0xMS0xNyAgQmFsYXpz
IEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgOGJpdC11bmF3YXJlIFN0
cmluZyB1c2FnZSBpbiBOZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGQ5ODU3
MDcuLmE4MDI3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtNTIsMTIgKzUyLDE1IEBACiAjZW5kaWYKIAogI2lmIEVO
QUJMRShDU1NfU0hBREVSUykKKyNpbmNsdWRlICJXZWJDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIK
ICNpbmNsdWRlICJXZWJDdXN0b21GaWx0ZXJQcm9ncmFtLmgiCisjaW5jbHVkZSAiV2ViQ3VzdG9t
RmlsdGVyUHJvZ3JhbVByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJBcnJh
eVBhcmFtZXRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3VzdG9tRmlsdGVyQ29uc3RhbnRzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Q3VzdG9tRmlsdGVyUHJvZ3JhbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ3VzdG9tRmlsdGVyUHJv
Z3JhbUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFt
ZXRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVmFsaWRhdGVkQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmg+CkBA
IC0xNDIsMjMgKzE0NSwxNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3Bl
cmF0aW9ucz46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlZBTElEQVRFRF9DVVNUT006IHsK
ICAgICAgICAgICAgIGNvbnN0IFZhbGlkYXRlZEN1c3RvbUZpbHRlck9wZXJhdGlvbiogY3VzdG9t
T3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgVmFsaWRhdGVkQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uKj4oZmlsdGVyKTsKLQogICAgICAgICAgICAgQVNTRVJUKGN1c3RvbU9wZXJhdGlvbi0+dmFs
aWRhdGVkUHJvZ3JhbSgpKTsKICAgICAgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0
ZWRQcm9ncmFtPiBwcm9ncmFtID0gY3VzdG9tT3BlcmF0aW9uLT52YWxpZGF0ZWRQcm9ncmFtKCk7
CiAgICAgICAgICAgICBBU1NFUlQocHJvZ3JhbS0+aXNJbml0aWFsaXplZCgpKTsKICAgICAgICAg
ICAgIEFTU0VSVChwcm9ncmFtLT5wbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSgpKTsKLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgb25seSBzZXJpYWxpemUgdGhlIG9iamVjdCBpZiBpdCB3
YXMgbm90IHNlcmlhbGl6ZWQgYmVmb3JlLAotICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIG9ubHkg
dGhlIElEIG9mIHRoZSBwcm9ncmFtIHNob3VsZCBiZSB3cml0dGVuIHRvIHRoZSBzdHJlYW0uCi0g
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAx
ODAxCi0gICAgICAgICAgICBlbmNvZGVyIDw8IHByb2dyYW0tPnZhbGlkYXRlZFZlcnRleFNoYWRl
cigpOwotICAgICAgICAgICAgZW5jb2RlciA8PCBwcm9ncmFtLT52YWxpZGF0ZWRGcmFnbWVudFNo
YWRlcigpOworICAgICAgICAgICAgQVNTRVJUKHByb2dyYW0tPnBsYXRmb3JtQ29tcGlsZWRQcm9n
cmFtKCktPmNsaWVudCgpKTsKKyAgICAgICAgICAgIFdlYkN1c3RvbUZpbHRlclByb2dyYW1Qcm94
eSogY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5ID0gc3RhdGljX2Nhc3Q8V2ViQ3VzdG9tRmlsdGVy
UHJvZ3JhbVByb3h5Kj4ocHJvZ3JhbS0+cGxhdGZvcm1Db21waWxlZFByb2dyYW0oKS0+Y2xpZW50
KCkpOwogICAgICAgICAgICAgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mIHByb2dyYW1J
bmZvID0gcHJvZ3JhbS0+cHJvZ3JhbUluZm8oKTsKLSAgICAgICAgICAgIGVuY29kZXIuZW5jb2Rl
RW51bShwcm9ncmFtSW5mby5wcm9ncmFtVHlwZSgpKTsKLSAgICAgICAgICAgIGNvbnN0IEN1c3Rv
bUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYgbWl4U2V0dGluZ3MgPSBwcm9ncmFtSW5mby5taXhT
ZXR0aW5ncygpOwotICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1peFNldHRpbmdzLmJs
ZW5kTW9kZSk7Ci0gICAgICAgICAgICBlbmNvZGVyLmVuY29kZUVudW0obWl4U2V0dGluZ3MuY29t
cG9zaXRlT3BlcmF0b3IpOworICAgICAgICAgICAgLy8gRklYTUU6IEN1c3RvbUZpbHRlck9wZXJh
dGlvbiBzaG91bGQgbm90IG5lZWQgdGhlIG1lc2hUeXBlLCBpdCBzaG91bGQganVzdCBiZSBlbmNv
ZGVkIGluIHRoZSBwcm9ncmFtIGl0c2VsZi4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI1MjkKICAgICAgICAgICAgIGVuY29kZXIuZW5j
b2RlRW51bShwcm9ncmFtSW5mby5tZXNoVHlwZSgpKTsKLQorICAgICAgICAgICAgZW5jb2RlciA8
PCBjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHktPmlkKCk7CiAgICAgICAgICAgICBDdXN0b21GaWx0
ZXJQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSBjdXN0b21PcGVyYXRpb24tPnBhcmFtZXRlcnMo
KTsKICAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBhcmFtZXRl
cnMuc2l6ZSgpKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1ldGVy
cy5zaXplKCk7ICsraSkgewpAQCAtMjY0LDI0ICsyNjEsMTQgQEAgYm9vbCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNv
ZGVyLAogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlZBTElEQVRFRF9DVVNUT006IHsKLSAg
ICAgICAgICAgIFN0cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmc7Ci0gICAgICAgICAgICBTdHJpbmcg
ZnJhZ21lbnRTaGFkZXJTdHJpbmc7Ci0gICAgICAgICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtVHlw
ZSBwcm9ncmFtVHlwZTsKLSAgICAgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5n
cyBtaXhTZXR0aW5nczsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBDdXN0b21GaWx0ZXJPcGVyYXRp
b24gc2hvdWxkIG5vdCBuZWVkIHRoZSBtZXNoVHlwZS4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI1MjkKICAgICAgICAgICAgIEN1c3Rv
bUZpbHRlck1lc2hUeXBlIG1lc2hUeXBlOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNv
ZGUodmVydGV4U2hhZGVyU3RyaW5nKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShmcmFnbWVudFNoYWRlclN0cmluZykpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGVFbnVtKHByb2dyYW1UeXBlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0obWl4U2V0dGluZ3MuYmxlbmRNb2Rl
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIWRlY29k
ZXItPmRlY29kZUVudW0obWl4U2V0dGluZ3MuY29tcG9zaXRlT3BlcmF0b3IpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51
bShtZXNoVHlwZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
UmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+IHByb2dyYW0gPSBXZWJDdXN0b21GaWx0ZXJQcm9n
cmFtOjpjcmVhdGUodmVydGV4U2hhZGVyU3RyaW5nLCBmcmFnbWVudFNoYWRlclN0cmluZywgcHJv
Z3JhbVR5cGUsIG1peFNldHRpbmdzLCBtZXNoVHlwZSk7CisgICAgICAgICAgICBpbnQgcHJvZ3Jh
bUlEID0gMDsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHByb2dyYW1JRCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICB1aW50MzJfdCBwYXJh
bWV0ZXJzU2l6ZTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHBhcmFt
ZXRlcnNTaXplKSkKQEAgLTM0Nyw4ICszMzQsOCBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6RmlsdGVyT3BlcmF0aW9ucz46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsCiAg
ICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0obWVzaEJveFR5cGUpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB0
aGUgU2hhZGVycyBhcmUgYWxyZWFkeSB2YWxpZGF0ZWQsIHNvIHdlIGp1c3QgdXNlIEN1c3RvbUZp
bHRlck9wZXJhdGlvbiBmb3IgdHJhbnNwb3J0YXRpb24uCi0gICAgICAgICAgICBmaWx0ZXIgPSBD
dXN0b21GaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShwcm9ncmFtLnJlbGVhc2UoKSwgcGFyYW1ldGVy
cywgbWVzaFJvd3MsIG1lc2hDb2x1bW5zLCBtZXNoQm94VHlwZSwgbWVzaFR5cGUpOworICAgICAg
ICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgU2hhZGVycyBhcmUgYWxyZWFkeSB2YWxpZGF0ZWQs
IHNvIHdlIGp1c3QgdXNlIFdlYkN1c3RvbUZpbHRlck9wZXJhdGlvbiBmb3IgdHJhbnNwb3J0YXRp
b24uCisgICAgICAgICAgICBmaWx0ZXIgPSBXZWJDdXN0b21GaWx0ZXJPcGVyYXRpb246OmNyZWF0
ZSgwLCBwcm9ncmFtSUQsIHBhcmFtZXRlcnMsIG1lc2hSb3dzLCBtZXNoQ29sdW1ucywgbWVzaEJv
eFR5cGUsIG1lc2hUeXBlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAjZW5kaWYK
QEAgLTM2NCw2ICszNTEsNDIgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbHRlck9w
ZXJhdGlvbnM+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLAogfQogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q3Vz
dG9tRmlsdGVyUHJvZ3JhbUluZm8+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYgcHJvZ3JhbUluZm8pCit7CisgICAgZW5jb2Rl
ciA8PCBwcm9ncmFtSW5mby52ZXJ0ZXhTaGFkZXJTdHJpbmcoKTsKKyAgICBlbmNvZGVyIDw8IHBy
b2dyYW1JbmZvLmZyYWdtZW50U2hhZGVyU3RyaW5nKCk7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVt
KHByb2dyYW1JbmZvLnByb2dyYW1UeXBlKCkpOworICAgIGVuY29kZXIuZW5jb2RlRW51bShwcm9n
cmFtSW5mby5tZXNoVHlwZSgpKTsKKyAgICBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0
dGluZ3MmIG1peFNldHRpbmdzID0gcHJvZ3JhbUluZm8ubWl4U2V0dGluZ3MoKTsKKyAgICBlbmNv
ZGVyLmVuY29kZUVudW0obWl4U2V0dGluZ3MuYmxlbmRNb2RlKTsKKyAgICBlbmNvZGVyLmVuY29k
ZUVudW0obWl4U2V0dGluZ3MuY29tcG9zaXRlT3BlcmF0b3IpOworfQorCitib29sIEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8+OjpkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyKiBkZWNvZGVyLCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYgcHJvZ3JhbUluZm8pCit7
CisgICAgU3RyaW5nIHZlcnRleFNoYWRlclN0cmluZzsKKyAgICBTdHJpbmcgZnJhZ21lbnRTaGFk
ZXJTdHJpbmc7CisgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJvZ3JhbVR5cGU7CisgICAg
Q3VzdG9tRmlsdGVyTWVzaFR5cGUgbWVzaFR5cGU7CisgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1p
eFNldHRpbmdzIG1peFNldHRpbmdzOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHZlcnRleFNo
YWRlclN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXItPmRl
Y29kZShmcmFnbWVudFNoYWRlclN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWRlY29kZXItPmRlY29kZUVudW0ocHJvZ3JhbVR5cGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKG1lc2hUeXBlKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtaXhTZXR0aW5ncy5ibGVu
ZE1vZGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVF
bnVtKG1peFNldHRpbmdzLmNvbXBvc2l0ZU9wZXJhdG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHByb2dyYW1JbmZvID0gQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8odmVydGV4U2hhZGVy
U3RyaW5nLCBmcmFnbWVudFNoYWRlclN0cmluZywgcHJvZ3JhbVR5cGUsIG1peFNldHRpbmdzLCBt
ZXNoVHlwZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFE
RVJTKQorCiB2b2lkIEFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtT3BlcmF0aW9ucz46OmVuY29kZShB
cmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHRyYW5z
Zm9ybU9wZXJhdGlvbnMpCiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
dHJhbnNmb3JtT3BlcmF0aW9ucy5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29k
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaAppbmRleCA4NTQ0YTUzLi5iYmE0MjdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaApA
QCAtNDMsNiArNDMsMTAgQEAgc3RydWN0IExlbmd0aDsKIGNsYXNzIEZpbHRlck9wZXJhdGlvbnM7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKK2NsYXNzIEN1c3RvbUZpbHRlclBy
b2dyYW1JbmZvOworI2VuZGlmCisKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIHN0cnVjdCBH
cmFwaGljc1N1cmZhY2VUb2tlbjsKICNlbmRpZgpAQCAtNzIsNiArNzYsMTMgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPiB7CiB9Owog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1JbmZvPiB7CisgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkN1c3RvbUZpbHRl
clByb2dyYW1JbmZvJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2Rlcios
IFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1JbmZvJik7Cit9OworI2VuZGlmCisKIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9ucz4g
ewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpUcmFuc2Zvcm1PcGVyYXRpb25zJik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50
RGVjb2RlciosIFdlYkNvcmU6OlRyYW5zZm9ybU9wZXJhdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlck9w
ZXJhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2Vi
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZGRmODZjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlck9wZXJhdGlvbi5oCkBAIC0wLDAgKzEsNjYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAq
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDdXN0b21GaWx0ZXJP
cGVyYXRpb25faAorI2RlZmluZSBXZWJDdXN0b21GaWx0ZXJPcGVyYXRpb25faAorCisjaWYgRU5B
QkxFKENTU19TSEFERVJTKQorI2luY2x1ZGUgIkN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRoaXMgY2xhc3MgaXMgb25seSBhZGRpbmcgdGhlIHBy
b2dyYW1JZCBvbiB0b3Agb2YgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLiBUaGUgYXJndW1lbnQgZGVj
b2RlciBoYXMgbm8KKy8vIGNvbnRleHQsIHNvIHdlIGNhbm5vdCBzZWFyY2ggaW4gb3VyIGNhY2hl
ZCBDdXN0b21GaWx0ZXJQcm9ncmFtcyB3aGlsZSBkZWNvZGluZy4gSW4gdGhhdCBjYXNlCisvLyBp
dCB3aWxsIGp1c3Qgc3RvcmUgdGhlIHByb2dyYW1JZCBhbmQgbm8gQ3VzdG9tRmlsdGVyUHJvZ3Jh
bSBpbnN0YW5jZS4gVGhlIHJlY2VpdmVyIGlzIHN1cHBvc2VkIHRvCisvLyBpdGVyYXRlIG9uIHRo
aXMgc3RydWN0dXJlIGFuZCBpbmplY3QgdGhlIHJpZ2h0IEN1c3RvbUZpbHRlclByb2dyYW1zLgor
CitjbGFzcyBXZWJDdXN0b21GaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDdXN0b21GaWx0ZXJP
cGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+IHByb2dyYW0s
IGludCBwcm9ncmFtSUQsIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHNvcnRlZFBh
cmFtZXRlcnMsIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywgQ3VzdG9t
RmlsdGVyTWVzaEJveFR5cGUgbWVzaEJveFR5cGUsIEN1c3RvbUZpbHRlck1lc2hUeXBlIG1lc2hU
eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDdXN0b21GaWx0ZXJP
cGVyYXRpb24ocHJvZ3JhbSwgcHJvZ3JhbUlELCBzb3J0ZWRQYXJhbWV0ZXJzLCBtZXNoUm93cywg
bWVzaENvbHVtbnMsIG1lc2hCb3hUeXBlLCBtZXNoVHlwZSkpOworICAgIH0KKworICAgIGludCBw
cm9ncmFtSUQoKSBjb25zdCB7IHJldHVybiBtX3Byb2dyYW1JRDsgfQorCitwcml2YXRlOgorICAg
IFdlYkN1c3RvbUZpbHRlck9wZXJhdGlvbihQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+
IHByb2dyYW0sIGludCBwcm9ncmFtSUQsIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3Qm
IHNvcnRlZFBhcmFtZXRlcnMsIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1u
cywgQ3VzdG9tRmlsdGVyTWVzaEJveFR5cGUgbWVzaEJveFR5cGUsIEN1c3RvbUZpbHRlck1lc2hU
eXBlIG1lc2hUeXBlKQorICAgICAgICA6IEN1c3RvbUZpbHRlck9wZXJhdGlvbihwcm9ncmFtLCBz
b3J0ZWRQYXJhbWV0ZXJzLCBtZXNoUm93cywgbWVzaENvbHVtbnMsIG1lc2hCb3hUeXBlLCBtZXNo
VHlwZSkKKyAgICAgICAgLCBtX3Byb2dyYW1JRChwcm9ncmFtSUQpCisgICAgeworICAgIH0KKwor
ICAgIGludCBtX3Byb2dyYW1JRDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKKworI2VuZGlmIC8vIEN1c3RvbUZpbHRlck9wZXJh
dGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XZWJDdXN0b21GaWx0ZXJQcm9ncmFtUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW1Qcm94eS5oCmluZGV4
IGJiNmYwYmIuLjRmYWIwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW1Qcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dy
YW1Qcm94eS5oCkBAIC01Niw5ICs1Niw5IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVk
PFdlYkN1c3RvbUZpbHRlclByb2dyYW1Qcm94eT46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVk
PFdlYkN1c3RvbUZpbHRlclByb2dyYW1Qcm94eT46OmRlcmVmOwogCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5PiBjcmVhdGUoV2ViQ3VzdG9tRmlsdGVy
UHJvZ3JhbVByb3h5Q2xpZW50KiBjbGllbnQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ3Vz
dG9tRmlsdGVyUHJvZ3JhbVByb3h5PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtUHJveHkoY2xpZW50KSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5KCkpOwogICAg
IH0KIAogICAgIGludCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KQEAgLTczLDggKzczLDgg
QEAgcHVibGljOgogICAgIFdlYkN1c3RvbUZpbHRlclByb2dyYW1Qcm94eUNsaWVudCogY2xpZW50
KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJDdXN0b21G
aWx0ZXJQcm9ncmFtUHJveHkoV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5Q2xpZW50KiBjbGll
bnQpCi0gICAgICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgIFdlYkN1c3RvbUZpbHRlclByb2dy
YW1Qcm94eSgpCisgICAgICAgIDogbV9jbGllbnQoMCkKICAgICAgICAgLCBtX2lkKHNfbmV4dElk
KyspCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0
b3JQcm94eS5jcHAKaW5kZXggNTk1NzZlOC4uMjdmNWU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTMwLDYgKzMwLDEwIEBACiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAKKyNp
ZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8u
aCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CkBAIC0xMTUsNiArMTE5LDE3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6
c2V0Q29tcG9zaXRpbmdMYXllckZpbHRlcnMoV2ViTGF5ZXJJRCBpZCwgY29uc3QKIH0KICNlbmRp
ZgogCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQordm9pZCBMYXllclRyZWVDb29yZGluYXRvclBy
b3h5OjpyZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCkKK3sKKyAgICBkaXNwYXRjaFVw
ZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbSwg
bV9yZW5kZXJlci5nZXQoKSwgaWQpKTsKK30KK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eTo6Y3JlYXRlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQsIGNvbnN0IFdlYkNvcmU6OkN1c3Rv
bUZpbHRlclByb2dyYW1JbmZvJiBwcm9ncmFtSW5mbykKK3sKKyAgICBkaXNwYXRjaFVwZGF0ZShi
aW5kKCZMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyUHJvZ3JhbSwgbV9yZW5k
ZXJlci5nZXQoKSwgaWQsIHByb2dyYW1JbmZvKSk7Cit9CisjZW5kaWYKKwogdm9pZCBMYXllclRy
ZWVDb29yZGluYXRvclByb3h5OjpkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KQogewog
ICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpmbHVzaExheWVyQ2hh
bmdlcywgbV9yZW5kZXJlci5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eS5oCmluZGV4IGM2ZDc5MGYuLjFkZjJjODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5h
dG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKQEAgLTU3LDYgKzU3LDEwIEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgdm9pZCBzZXRDb21wb3NpdGluZ0xheWVy
RmlsdGVycyhXZWJMYXllcklELCBjb25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJik7CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgdm9pZCBjcmVhdGVDdXN0b21GaWx0
ZXJQcm9ncmFtKGludCBpZCwgY29uc3QgV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8m
KTsKKyAgICB2b2lkIHJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKTsKKyNlbmRpZgog
ICAgIHZvaWQgZGVsZXRlQ29tcG9zaXRpbmdMYXllcihXZWJMYXllcklEKTsKICAgICB2b2lkIHNl
dFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkxheWVySUQpOwogICAgIHZvaWQgc2V0Q29udGVudHNT
aXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZjhmZTI2NS4u
MGNmNWUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGlu
YXRvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNCw2ICsyNCwxMCBAQCBtZXNzYWdlcyAtPiBMYXll
clRyZWVDb29yZGluYXRvclByb3h5IHsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgU2V0
Q29tcG9zaXRpbmdMYXllckZpbHRlcnModWludDMyX3QgaWQsIFdlYkNvcmU6OkZpbHRlck9wZXJh
dGlvbnMgZmlsdGVycykKICNlbmRpZgorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICBDcmVh
dGVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCwgV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3Jh
bUluZm8gcHJvZ3JhbUluZm8pCisgICAgUmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQp
CisjZW5kaWYKICAgICBTZXRSb290Q29tcG9zaXRpbmdMYXllcih1aW50MzJfdCBpZCkKICAgICBE
ZWxldGVDb21wb3NpdGluZ0xheWVyKHVpbnQzMl90IGlkKQogICAgIENyZWF0ZVRpbGVGb3JMYXll
cih1aW50MzJfdCBsYXllcklELCBpbnQgdGlsZUlELCBXZWJDb3JlOjpJbnRSZWN0IHRpbGVSZWN0
LCBXZWJLaXQ6OlN1cmZhY2VVcGRhdGVJbmZvIHVwZGF0ZUluZm8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVSZW5kZXJlci5jcHAKaW5kZXggMjQyZjk0NC4uMjg4OTQ5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZVJlbmRlcmVyLmNwcApAQCAtMzcsNiArMzcsMTMgQEAKICNpbmNsdWRlIDx3dGYv
QXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKKyNpZiBFTkFCTEUoQ1NT
X1NIQURFUlMpCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIgorI2luY2x1ZGUgIkN1
c3RvbUZpbHRlclByb2dyYW1JbmZvLmgiCisjaW5jbHVkZSAiV2ViQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uLmgiCisjaW5jbHVkZSAiV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTI4MywxMCAr
MjkwLDQ1IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyRmlsdGVycyhXZWJMYXll
cklEIGlkLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmCiAgICAgQVNTRVJUKGl0ICE9IG1fbGF5
ZXJzLmVuZCgpKTsKIAogICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gaXQtPnZhbHVlOworI2lm
IEVOQUJMRShDU1NfU0hBREVSUykKKyAgICBpbmplY3RDYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFt
cyhmaWx0ZXJzKTsKKyNlbmRpZgogICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogfQog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCit2b2lkIExheWVyVHJlZVJlbmRlcmVy
OjppbmplY3RDYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcyhjb25zdCBGaWx0ZXJPcGVyYXRpb25z
JiBmaWx0ZXJzKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsdGVycy5z
aXplKCk7ICsraSkgeworICAgICAgICBGaWx0ZXJPcGVyYXRpb24qIG9wZXJhdGlvbiA9IGZpbHRl
cnMub3BlcmF0aW9ucygpLmF0KGkpLmdldCgpOworICAgICAgICBpZiAob3BlcmF0aW9uLT5nZXRP
cGVyYXRpb25UeXBlKCkgIT0gRmlsdGVyT3BlcmF0aW9uOjpDVVNUT00pCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBXZWJDdXN0b21GaWx0ZXJPcGVyYXRpb24qIGN1c3RvbU9wZXJh
dGlvbiA9IHN0YXRpY19jYXN0PFdlYkN1c3RvbUZpbHRlck9wZXJhdGlvbio+KG9wZXJhdGlvbik7
CisgICAgICAgIEFTU0VSVCghY3VzdG9tT3BlcmF0aW9uLT5wcm9ncmFtKCkpOworICAgICAgICBD
dXN0b21GaWx0ZXJQcm9ncmFtTWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9jdXN0b21GaWx0
ZXJQcm9ncmFtcy5maW5kKGN1c3RvbU9wZXJhdGlvbi0+cHJvZ3JhbUlEKCkpOworICAgICAgICBB
U1NFUlQoaXRlciAhPSBtX2N1c3RvbUZpbHRlclByb2dyYW1zLmVuZCgpKTsKKyAgICAgICAgY3Vz
dG9tT3BlcmF0aW9uLT5zZXRQcm9ncmFtKGl0ZXItPnZhbHVlLmdldCgpKTsKKyAgICB9Cit9CisK
K3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlk
LCBjb25zdCBXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYgcHJvZ3JhbUluZm8pCit7
CisgICAgQVNTRVJUKCFtX2N1c3RvbUZpbHRlclByb2dyYW1zLmNvbnRhaW5zKGlkKSk7CisgICAg
bV9jdXN0b21GaWx0ZXJQcm9ncmFtcy5zZXQoaWQsIFdlYkN1c3RvbUZpbHRlclByb2dyYW06OmNy
ZWF0ZShwcm9ncmFtSW5mby52ZXJ0ZXhTaGFkZXJTdHJpbmcoKSwgcHJvZ3JhbUluZm8uZnJhZ21l
bnRTaGFkZXJTdHJpbmcoKSwgcHJvZ3JhbUluZm8ucHJvZ3JhbVR5cGUoKSwgcHJvZ3JhbUluZm8u
bWl4U2V0dGluZ3MoKSwgcHJvZ3JhbUluZm8ubWVzaFR5cGUoKSkpOworfQorCit2b2lkIExheWVy
VHJlZVJlbmRlcmVyOjpyZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCkKK3sKKyAgICBD
dXN0b21GaWx0ZXJQcm9ncmFtTWFwOjppdGVyYXRvciBpdGVyID0gbV9jdXN0b21GaWx0ZXJQcm9n
cmFtcy5maW5kKGlkKTsKKyAgICBBU1NFUlQoaXRlciAhPSBtX2N1c3RvbUZpbHRlclByb2dyYW1z
LmVuZCgpKTsKKyAgICBpZiAobV90ZXh0dXJlTWFwcGVyKQorICAgICAgICBtX3RleHR1cmVNYXBw
ZXItPnJlbW92ZUNhY2hlZEN1c3RvbUZpbHRlclByb2dyYW0oaXRlci0+dmFsdWUuZ2V0KCkpOwor
ICAgIG1fY3VzdG9tRmlsdGVyUHJvZ3JhbXMucmVtb3ZlKGl0ZXIpOworfQorI2VuZGlmIC8vIEVO
QUJMRShDU1NfU0hBREVSUykKKwogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJTdGF0
ZShXZWJMYXllcklEIGlkLCBjb25zdCBXZWJMYXllckluZm8mIGxheWVySW5mbykKIHsKICAgICBl
bnN1cmVMYXllcihpZCk7CkBAIC01NzcsNiArNjE5LDE3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVy
ZXI6OnNldExheWVyQW5pbWF0aW9ucyhXZWJMYXllcklEIGlkLCBjb25zdCBHcmFwaGljc0xheWVy
QW5pCiAgICAgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqIGxheWVyID0gdG9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcihsYXllckJ5SUQoaWQpKTsKICAgICBpZiAoIWxheWVyKQogICAgICAg
ICByZXR1cm47CisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYW5pbWF0aW9ucy5hbmltYXRpb25zKCkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIGtleWZyYW1lcyA9IGFuaW1hdGlvbnMuYW5pbWF0aW9ucygp
LmF0KGkpLmtleWZyYW1lcygpOworICAgICAgICBpZiAoa2V5ZnJhbWVzLnByb3BlcnR5KCkgIT0g
QW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEZpbHRlcikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGtleWZyYW1lcy5zaXplKCk7ICsraikgeworICAg
ICAgICAgICAgY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUqIGZpbHRlclZhbHVlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUqPihrZXlmcmFtZXMuYXQoaSkpOworICAg
ICAgICAgICAgaW5qZWN0Q2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoKmZpbHRlclZhbHVlLT52
YWx1ZSgpKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgogICAgIGxheWVyLT5zZXRBbmltYXRp
b25zKGFuaW1hdGlvbnMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAppbmRl
eCAwNTBhNDQzLi42NWI0OGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKQEAg
LTM4LDYgKzM4LDExIEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDdXN0
b21GaWx0ZXJQcm9ncmFtOworY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm87Cit9CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTsKQEAgLTg0
LDYgKzg5LDExIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgdm9pZCBz
ZXRMYXllckZpbHRlcnMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
cyYpOwogI2VuZGlmCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIHZvaWQgaW5qZWN0Q2Fj
aGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycykgY29uc3Q7CisgICAgdm9pZCBjcmVhdGVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBp
ZCwgY29uc3QgV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mKTsKKyAgICB2b2lkIHJl
bW92ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKTsKKyNlbmRpZgogCiAgICAgdm9pZCBjcmVh
dGVUaWxlKFdlYkxheWVySUQsIGludCwgZmxvYXQgc2NhbGUpOwogICAgIHZvaWQgcmVtb3ZlVGls
ZShXZWJMYXllcklELCBpbnQpOwpAQCAtMTcxLDYgKzE4MSwxMSBAQCBwcml2YXRlOgogICAgIFdl
YkNvcmU6OlRleHR1cmVNYXBwZXI6OkFjY2VsZXJhdGlvbk1vZGUgbV9hY2NlbGVyYXRpb25Nb2Rl
OwogICAgIFdlYkNvcmU6OkNvbG9yIG1fYmFja2dyb3VuZENvbG9yOwogICAgIGJvb2wgbV9zZXRE
cmF3c0JhY2tncm91bmQ7CisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgdHlwZWRlZiBI
YXNoTWFwPGludCwgUmVmUHRyPFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW0+ID4gQ3VzdG9t
RmlsdGVyUHJvZ3JhbU1hcDsKKyAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTWFwIG1fY3VzdG9tRmls
dGVyUHJvZ3JhbXM7CisjZW5kaWYKIH07CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGlu
YXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKaW5kZXggMjBiYWQzNS4uNGY1YjgxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
LmNwcApAQCAtMzU1LDE3ICszNTUsMjEgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6Y2hl
Y2tDdXN0b21GaWx0ZXJQcm9ncmFtUHJveGllcyhjb25zdCBGaWx0ZXJPcGVyYXRpb24KICAgICAg
ICAgY29uc3QgVmFsaWRhdGVkQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKiBjdXN0b21PcGVyYXRpb24g
PSBzdGF0aWNfY2FzdDxjb25zdCBWYWxpZGF0ZWRDdXN0b21GaWx0ZXJPcGVyYXRpb24qPihvcGVy
YXRpb24pOwogICAgICAgICBBU1NFUlQoY3VzdG9tT3BlcmF0aW9uLT52YWxpZGF0ZWRQcm9ncmFt
KCktPmlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUNvbXBp
bGVkUHJvZ3JhbSogcHJvZ3JhbSA9IGN1c3RvbU9wZXJhdGlvbi0+dmFsaWRhdGVkUHJvZ3JhbSgp
LT5wbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSgpOwotICAgICAgICBpZiAoIXByb2dyYW0tPmNsaWVu
dCgpKQotICAgICAgICAgICAgcHJvZ3JhbS0+c2V0Q2xpZW50KFdlYkN1c3RvbUZpbHRlclByb2dy
YW1Qcm94eTo6Y3JlYXRlKHRoaXMpKTsKKyAgICAgICAgCisgICAgICAgIFJlZlB0cjxXZWJDdXN0
b21GaWx0ZXJQcm9ncmFtUHJveHk+IGN1c3RvbUZpbHRlclByb2dyYW1Qcm94eTsKKyAgICAgICAg
aWYgKHByb2dyYW0tPmNsaWVudCgpKQorICAgICAgICAgICAgY3VzdG9tRmlsdGVyUHJvZ3JhbVBy
b3h5ID0gc3RhdGljX2Nhc3Q8V2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5Kj4ocHJvZ3JhbS0+
Y2xpZW50KCkpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFdlYkN1c3RvbUZpbHRlclBy
b2dyYW1Qcm94eSogY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5ID0gc3RhdGljX2Nhc3Q8V2ViQ3Vz
dG9tRmlsdGVyUHJvZ3JhbVByb3h5Kj4ocHJvZ3JhbS0+Y2xpZW50KCkpOwotICAgICAgICAgICAg
aWYgKCFjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHktPmNsaWVudCgpKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gSnVzdCBpbiBjYXNlIHRoZSBMYXllclRyZWVDb29yZGluYXRvciB3YXMgZGVzdHJveWVk
IGFuZCByZWNyZWF0ZWQuCi0gICAgICAgICAgICAgICAgY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5
LT5zZXRDbGllbnQodGhpcyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IC8vIElmIHRoZSBjbGllbnQgd2FzIG5vdCBkaXNjb25uZWN0ZWQgdGhlbiB0aGlzIGNvb3JkaW5h
dG9yIG11c3QgYmUgdGhlIGNsaWVudCBmb3IgaXQuCi0gICAgICAgICAgICAgICAgQVNTRVJUKGN1
c3RvbUZpbHRlclByb2dyYW1Qcm94eS0+Y2xpZW50KCkgPT0gdGhpcyk7Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICBjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHkgPSBXZWJDdXN0b21GaWx0ZXJQ
cm9ncmFtUHJveHk6OmNyZWF0ZSgpOworICAgICAgICAgICAgcHJvZ3JhbS0+c2V0Q2xpZW50KGN1
c3RvbUZpbHRlclByb2dyYW1Qcm94eSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlm
ICghY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5jbGllbnQoKSkgeworICAgICAgICAgICAgY3Vz
dG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5zZXRDbGllbnQodGhpcyk7CisgICAgICAgICAgICBtX3dl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OkNyZWF0ZUN1
c3RvbUZpbHRlclByb2dyYW0oY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5pZCgpLCBjdXN0b21P
cGVyYXRpb24tPnZhbGlkYXRlZFByb2dyYW0oKS0+dmFsaWRhdGVkUHJvZ3JhbUluZm8oKSkpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSWYgdGhlIGNsaWVudCB3YXMgbm90IGRp
c2Nvbm5lY3RlZCB0aGVuIHRoaXMgY29vcmRpbmF0b3IgbXVzdCBiZSB0aGUgY2xpZW50IGZvciBp
dC4KKyAgICAgICAgICAgIEFTU0VSVChjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHktPmNsaWVudCgp
ID09IHRoaXMpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMzc1LDggKzM3OSw3IEBAIHZvaWQg
TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW1Qcm94eShXZWJD
dXN0b21GaWx0ZXJQcm9ncmFtCiAgICAgLy8gQXQgdGhpcyB0aW1lIHRoZSBzaGFkZXIgaXMgbm90
IG5lZWRlZCBhbnltb3JlLCBzbyB3ZSByZW1vdmUgaXQgZnJvbSBvdXIgc2V0IGFuZCAKICAgICAv
LyBzZW5kIGEgbWVzc2FnZSB0byB0aGUgb3RoZXIgcHJvY2VzcyB0byBkZWxldGUgaXQuCiAgICAg
bV9jdXN0b21GaWx0ZXJQcm9ncmFtcy5yZW1vdmUoY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5KTsK
LSAgICAvLyBGSVhNRTogU2VuZCBhIG1lc3NhZ2UgdG8gZGVsZXRlIHRoZSBvYmplY3Qgb24gdGhl
IFVJIHByb2Nlc3MuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMTgwMQorICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRp
bmF0b3JQcm94eTo6UmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShjdXN0b21GaWx0ZXJQcm9ncmFt
UHJveHktPmlkKCkpKTsKIH0KIAogdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6ZGlzY29ubmVj
dEN1c3RvbUZpbHRlclByb2dyYW1zKCkKQEAgLTY1MCw3ICs2NTMsMTkgQEAgV2ViQ29yZTo6SW50
UmVjdCBMYXllclRyZWVDb29yZGluYXRvcjo6dmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0CiB2
b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpzZXRMYXllckFuaW1hdGlvbnMoV2ViTGF5ZXJJRCBs
YXllcklELCBjb25zdCBHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYgYW5pbWF0aW9ucykKIHsKICAg
ICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpTZXRMYXllckFuaW1hdGlvbnMobGF5ZXJJRCwg
YW5pbWF0aW9ucy5nZXRBY3RpdmVBbmltYXRpb25zKCkpKTsKKyAgICBHcmFwaGljc0xheWVyQW5p
bWF0aW9ucyBhY3RpdmVBbmltYXRpb25zID0gYW5pbWF0aW9ucy5nZXRBY3RpdmVBbmltYXRpb25z
KCk7CisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YWN0aXZlQW5pbWF0aW9ucy5hbmltYXRpb25zKCkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIGtleWZyYW1lcyA9IGFuaW1hdGlvbnMuYW5pbWF0aW9ucygp
LmF0KGkpLmtleWZyYW1lcygpOworICAgICAgICBpZiAoa2V5ZnJhbWVzLnByb3BlcnR5KCkgIT0g
QW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEZpbHRlcikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGtleWZyYW1lcy5zaXplKCk7ICsraikgeworICAg
ICAgICAgICAgY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUqIGZpbHRlclZhbHVlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUqPihrZXlmcmFtZXMuYXQoaSkpOworICAg
ICAgICAgICAgY2hlY2tDdXN0b21GaWx0ZXJQcm9ncmFtUHJveGllcygqZmlsdGVyVmFsdWUtPnZh
bHVlKCkpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisgICAgbV93ZWJQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpTZXRMYXllckFuaW1hdGlvbnMobGF5
ZXJJRCwgYWN0aXZlQW5pbWF0aW9ucykpOwogfQogCiB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9y
OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGZsb2F0IHNjYWxl
LCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>