<?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>150893</bug_id>
          
          <creation_ts>2015-11-04 09:51:09 -0800</creation_ts>
          <short_desc>[ES6] Arrow function syntax. Using &apos;super&apos; in arrow function that declared out of the class should lead to Syntax error</short_desc>
          <delta_ts>2016-04-04 13:43:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit 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>149338</dependson>
    
    <dependson>149615</dependson>
          <blocked>140855</blocked>
    
    <blocked>153977</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="GSkachkov">gskachkov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1139362</commentid>
    <comment_count>0</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-11-04 09:51:09 -0800</bug_when>
    <thetext>Using &apos;super&apos; in arrow function that declared out of the class should lead to SyntaxError.
For instance:
var G = class G extends A {
     getParentValueWithError() {
       var f =  function () {
         return () =&gt; super.getValue();
       };
       return f()();
     }
 };

(new G()).getParentValueWithError(); 

Should be SyntaxError instead of  TypeError: undefined is not an object (evaluating &apos;super.getValue&apos;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159018</commentid>
    <comment_count>1</comment_count>
      <attachid>269925</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-01-26 14:35:54 -0800</bug_when>
    <thetext>Created attachment 269925
Patch

Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159062</commentid>
    <comment_count>2</comment_count>
      <attachid>269925</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-01-26 15:26:51 -0800</bug_when>
    <thetext>Comment on attachment 269925
Patch

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

r=me with comments

&gt; Source/JavaScriptCore/parser/Parser.h:880
&gt; +    ScopeRef currentNotArrowfunctionFunctionScope()

I propose calling this: &quot;closestParentNonArrowFunctionNonLexicalScope&quot;
We really don&apos;t need it to return a function scope (and it doesn&apos;t in some cases).
It just needs to return the closest non-arrow-function function or the global scope.

&gt; Source/JavaScriptCore/parser/Parser.h:883
&gt; +        ASSERT(i &lt; m_scopeStack.size());

If you&apos;re making this assertion you should also assert that m_scopeStack.size() is non zero.

&gt; Source/JavaScriptCore/parser/Parser.h:886
&gt; +            ASSERT(i &lt; m_scopeStack.size());

Style: I don&apos;t think this assert adds much here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159336</commentid>
    <comment_count>3</comment_count>
      <attachid>270010</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-01-27 11:15:17 -0800</bug_when>
    <thetext>Created attachment 270010
Patch

Fix comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161889</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-02-03 21:29:53 -0800</bug_when>
    <thetext>Should this be reviewed?
I&apos;m confused b/c the r-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161906</commentid>
    <comment_count>5</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-02-03 22:11:45 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Should this be reviewed?
&gt; I&apos;m confused b/c the r-

Previous patch does not cover case with eval(&quot;super()&quot;). I&apos;m finishing the new patch that cover this case. I hope that I&apos;ll manage to upload it today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161971</commentid>
    <comment_count>6</comment_count>
      <attachid>270653</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-02-04 04:04:39 -0800</bug_when>
    <thetext>Created attachment 270653
Patch

New patch that cover using super in eval</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161972</commentid>
    <comment_count>7</comment_count>
      <attachid>270654</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-02-04 04:27:02 -0800</bug_when>
    <thetext>Created attachment 270654
Patch

Fix build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162512</commentid>
    <comment_count>8</comment_count>
      <attachid>270654</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-02-05 15:03:45 -0800</bug_when>
    <thetext>Comment on attachment 270654
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:20
&gt; +        Invoking super()/super in two or more evals will be part of the issue https://bugs.webkit.org/show_bug.cgi?id=153864

what kind of error should this be if it&apos;s not a SyntaxError?

&gt; Source/JavaScriptCore/bytecode/EvalCodeCache.h:70
&gt; +                    wrappedCodeBlockDerivedContextType = superBinding == SuperBinding::Needed
&gt; +                        ? DerivedContextType::DerivedMethodContext
&gt; +                        : derivedContextType;

style: make this one line or add &quot;{}&quot; to the else statement.

&gt; Source/JavaScriptCore/bytecode/ExecutableInfo.h:67
&gt; +    DerivedContextType wrappedCodeBlocContextType() const { return static_cast&lt;DerivedContextType&gt;(m_wrappedCodeBlocContextType); }

typo:
wrappedCodeBlocContextType =&gt; wrappedCodeBlockContextType

&gt; Source/JavaScriptCore/parser/Parser.cpp:2070
&gt; +    if (!m_lexer-&gt;isReparsingFunction()) {

Is this needed or just an optimization?

&gt; Source/JavaScriptCore/parser/Parser.h:881
&gt; +    // Find the closest not &apos;arrow function&apos; function scope.

comment not needed.

&gt; Source/JavaScriptCore/tests/stress/arrowfunction-lexical-bind-superproperty.js:-131
&gt; -     getParentValueWithError() {
&gt; -         var f =  function () {
&gt; -             return () =&gt; super.getValue();
&gt; -         };
&gt; -         return f();
&gt; -     }

you could keep this if you turned this into an &quot;return eval(blah)&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162765</commentid>
    <comment_count>9</comment_count>
      <attachid>270826</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-02-07 12:26:25 -0800</bug_when>
    <thetext>Created attachment 270826
Patch

Fix comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162767</commentid>
    <comment_count>10</comment_count>
      <attachid>270654</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-02-07 12:41:39 -0800</bug_when>
    <thetext>Comment on attachment 270654
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:20
&gt;&gt; +        Invoking super()/super in two or more evals will be part of the issue https://bugs.webkit.org/show_bug.cgi?id=153864
&gt; 
&gt; what kind of error should this be if it&apos;s not a SyntaxError?

I&apos;ve made small change in this sentence in the last patch.  
It should be SyntaxError, but my patch only partly resolve this issue. I had to fix case with &apos;eval(&quot;super&quot;)&apos; because some of the  arrow function tests invoke eval(&apos;super&apos;). During the  additional testing I found out that my current patch does not cover case when we call eval(&apos;eval(&apos;super()&apos;)&apos;), but I decided that it should not be part of this patch and created the issue

&gt;&gt; Source/JavaScriptCore/bytecode/EvalCodeCache.h:70
&gt;&gt; +                        : derivedContextType;
&gt; 
&gt; style: make this one line or add &quot;{}&quot; to the else statement.

Done

&gt;&gt; Source/JavaScriptCore/bytecode/ExecutableInfo.h:67
&gt;&gt; +    DerivedContextType wrappedCodeBlocContextType() const { return static_cast&lt;DerivedContextType&gt;(m_wrappedCodeBlocContextType); }
&gt; 
&gt; typo:
&gt; wrappedCodeBlocContextType =&gt; wrappedCodeBlockContextType

Done

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:2070
&gt;&gt; +    if (!m_lexer-&gt;isReparsingFunction()) {
&gt; 
&gt; Is this needed or just an optimization?

I added comment in the last patch, I hope that now it is more clear:
    // It unncecessary to check of using super during reparsing one more time. Also it can lead to syntax error
    // in case of arrow function becuase during reparsing we don&apos;t know that parse arrow function
    // inside of the constructor or method

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:881
&gt;&gt; +    // Find the closest not &apos;arrow function&apos; function scope.
&gt; 
&gt; comment not needed.

Removed

&gt;&gt; Source/JavaScriptCore/tests/stress/arrowfunction-lexical-bind-superproperty.js:-131
&gt;&gt; -     }
&gt; 
&gt; you could keep this if you turned this into an &quot;return eval(blah)&quot;

I&apos;ve moved this test case to the LayoutTests/js/script-tests/arrowfunction-syntax-errors.js where I&apos;m trying  to collect all case that are related to the syntax errors. 
See last case in 66 line in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162853</commentid>
    <comment_count>11</comment_count>
      <attachid>270851</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-02-08 02:59:38 -0800</bug_when>
    <thetext>Created attachment 270851
Patch

Remove all changes that are related to the using eval in arrow function. This will be implemented in separate patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162937</commentid>
    <comment_count>12</comment_count>
      <attachid>270851</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-02-08 11:11:08 -0800</bug_when>
    <thetext>Comment on attachment 270851
Patch

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

&gt; Source/JavaScriptCore/parser/Parser.h:886
&gt; +        // When reaching the top level scope (it can be non function scope), we return it.

In a later patch, I&apos;d remove this comment, or just say somethin like:
Note: it&apos;s okay to return the top most scope because it will be the global scope</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162949</commentid>
    <comment_count>13</comment_count>
      <attachid>270851</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-08 11:29:27 -0800</bug_when>
    <thetext>Comment on attachment 270851
Patch

Clearing flags on attachment: 270851

Committed r196261: &lt;http://trac.webkit.org/changeset/196261&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162950</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-08 11:29:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180477</commentid>
    <comment_count>15</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-04-04 13:43:54 -0700</bug_when>
    <thetext>*** Bug 153977 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269925</attachid>
            <date>2016-01-26 14:35:54 -0800</date>
            <delta_ts>2016-01-27 11:14:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150893-20160126233526.patch</filename>
            <type>text/plain</type>
            <size>15331</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YWFjYTcyYmIxM2EzNzVkMTE1Y2UzNzU0OTU1OTRjZmU4MDkwYzZmLi40Yjc0MmM0ZWVlNzQ5ZDQ3
YTA4NWM4ZjdlODI1NjVkNWMwYjZkMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxNi0wMS0yNiAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIFVzaW5nICdz
dXBlcicgaW4gYXJyb3cgZnVuY3Rpb24gdGhhdCBkZWNsYXJlZCBvdXQgb2YgdGhlIGNsYXNzIHNo
b3VsZCBsZWFkIHRvIFN5bnRheCBlcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgJ3N1cGVyJyBhbmQgJ3N1cGVyKCknIGluc2lkZSBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24gc2hvdWxkIGxlYWQgdG8gc3ludGF4IGVycm9yIGlmIHRoZXkgdXNlZCBvdXQg
CisgICAgICAgIG9mIHRoZSBjbGFzcyBjb250ZXh0IG9yIHRoZXkgd3JhcHBlZCBieSBvcmRpbmFy
eSBmdW5jdGlvbi4gIAorICAgICAgICAKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpTY29wZSk6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpzZXRFeHBlY3RlZFN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6
OlNjb3BlOjpleHBlY3RlZFN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRD
b25zdHJ1Y3RvcktpbmQpOgorICAgICAgICAoSlNDOjpTY29wZTo6Y29uc3RydWN0b3JLaW5kKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyOjpjdXJyZW50Tm90QXJyb3dmdW5jdGlvbkZ1bmN0aW9uU2Nv
cGUpOgorCiAyMDE2LTAxLTE5ICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwu
Y29tPgogCiAgICAgICAgIFtFUzZdIEFycm93IGZ1bmN0aW9uIHN5bnRheC4gQXJyb3cgZnVuY3Rp
b24gc3BlY2lmaWMgZmVhdHVyZXMuIExleGljYWwgYmluZCAiYXJndW1lbnRzIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGUwMGQ4MDAyMjIwNDM5MzIxY2JkMGNk
ZTE2ZjcyOWU5MzZmODYyMjUuLjI4MGMzYjM4MzY4MWE4YTQyMDIxMWM0OGZhMDk5ODQ1YzI2MjZm
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTE5NDQsOCAr
MTk0NCw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgIGZ1bmN0aW9uQm9keVR5
cGUgPSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrOwogICAgIH0KIAotICAgIGJvb2wgaXNDbGFz
c0NvbnN0cnVjdG9yID0gY29uc3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
LSAgICAKKyAgICBmdW5jdGlvblNjb3BlLT5zZXRDb25zdHJ1Y3RvcktpbmQoY29uc3RydWN0b3JL
aW5kKTsKKyAgICBmdW5jdGlvblNjb3BlLT5zZXRFeHBlY3RlZFN1cGVyQmluZGluZyhleHBlY3Rl
ZFN1cGVyQmluZGluZyk7CisKICAgICBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uID0gc3Rh
cnRDb2x1bW47CiAgICAgCiAgICAgLy8gSWYgd2Uga25vdyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFs
cmVhZHksIHdlIGNhbiB1c2UgdGhlIGNhY2hlZCBpbmZvIGFuZCBza2lwIHRoZSBwYXJzZXIgdG8g
dGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCkBAIC0yMDM0LDEyICsyMDM1LDE3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkluZm8oVHJlZUJ1aWxkCiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5hcmd1bWVudHMgPT0gKmZ1bmN0aW9uSW5mby5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5m
by5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0
IG1vZGUiKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMt
PmV2YWwgPT0gKmZ1bmN0aW9uSW5mby5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBs
KCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAg
ICB9Ci0gICAgaWYgKGZ1bmN0aW9uU2NvcGUtPmhhc0RpcmVjdFN1cGVyKCkgJiYgZnVuY3Rpb25C
b2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrKSB7Ci0gICAgICAgIHNlbWFudGlj
RmFpbElmVHJ1ZSghaXNDbGFzc0NvbnN0cnVjdG9yLCAiQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRz
aWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IiKTsKLSAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVl
KGNvbnN0cnVjdG9yS2luZCAhPSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQsICJDYW5ub3QgY2Fs
bCBzdXBlcigpIGluIGEgYmFzZSBjbGFzcyBjb25zdHJ1Y3RvciIpOworICAgIGlmIChmdW5jdGlv
blNjb3BlLT5oYXNEaXJlY3RTdXBlcigpKSB7CisgICAgICAgIENvbnN0cnVjdG9yS2luZCBmdW5j
dGlvbkNvbnN0cnVjdG9yS2luZCA9IGZ1bmN0aW9uQm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlv
bkJvZHlCbG9jaworICAgICAgICAgICAgPyBjb25zdHJ1Y3RvcktpbmQKKyAgICAgICAgICAgIDog
Y3VycmVudE5vdEFycm93ZnVuY3Rpb25GdW5jdGlvblNjb3BlKCktPmNvbnN0cnVjdG9yS2luZCgp
OworICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZnVuY3Rpb25Db25zdHJ1Y3RvcktpbmQgPT0g
Q29uc3RydWN0b3JLaW5kOjpOb25lLCAiQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEg
Y2xhc3MgY29uc3RydWN0b3IiKTsKKyAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGZ1bmN0aW9u
Q29uc3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCwgIkNhbm5vdCBjYWxs
IHN1cGVyKCkgaW4gYSBiYXNlIGNsYXNzIGNvbnN0cnVjdG9yIik7CisgICAgfQorICAgIGlmIChm
dW5jdGlvblNjb3BlLT5uZWVkc1N1cGVyQmluZGluZygpKSB7CisgICAgICAgIFN1cGVyQmluZGlu
ZyBmdW5jdGlvblN1cGVyQmluZGluZyA9IGZ1bmN0aW9uQm9keVR5cGUgPT0gU3RhbmRhcmRGdW5j
dGlvbkJvZHlCbG9jayA/IGV4cGVjdGVkU3VwZXJCaW5kaW5nIDogY3VycmVudE5vdEFycm93ZnVu
Y3Rpb25GdW5jdGlvblNjb3BlKCktPmV4cGVjdGVkU3VwZXJCaW5kaW5nKCk7CisgICAgICAgIHNl
bWFudGljRmFpbElmVHJ1ZShmdW5jdGlvblN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCwgInN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVk
IGNsYXNzIik7CiAgICAgfQotICAgIGlmIChmdW5jdGlvblNjb3BlLT5uZWVkc1N1cGVyQmluZGlu
ZygpICYmIGZ1bmN0aW9uQm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jaykKLSAg
ICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGV4cGVjdGVkU3VwZXJCaW5kaW5nID09IFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCAic3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1ldGhvZCBvZiBh
IGRlcml2ZWQgY2xhc3MiKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbiA9IEpTVG9r
ZW5Mb2NhdGlvbihtX3Rva2VuLm1fbG9jYXRpb24pOwogICAgIGZ1bmN0aW9uSW5mby5lbmRPZmZz
ZXQgPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CkBAIC0yMDUxLDcgKzIwNTcsOSBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rp
b25JbmZvKFRyZWVCdWlsZAogICAgIAogICAgIC8vIENhY2hlIHRoZSB0b2tlbml6ZXIgc3RhdGUg
YW5kIHRoZSBmdW5jdGlvbiBzY29wZSB0aGUgZmlyc3QgdGltZSB0aGUgZnVuY3Rpb24gaXMgcGFy
c2VkLgogICAgIC8vIEFueSBmdXR1cmUgcmVwYXJzaW5nIGNhbiB0aGVuIHNraXAgdGhlIGZ1bmN0
aW9uLgotICAgIHN0YXRpYyBjb25zdCBpbnQgbWluaW11bUZ1bmN0aW9uTGVuZ3RoVG9DYWNoZSA9
IDE2OworICAgIC8vIEZvciBhcnJvdyBmdW5jdGlvbiBpcyAxMCA9ICgpPT4oKSArIDQgc3ltYm9s
czsKKyAgICAvLyBGb3Igb3JkaW5hcnkgZnVuY3Rpb24gaXMgMTYgID0gZnVuY3Rpb24oKXt9ICsg
NCBzeW1ib2xzCisgICAgY29uc3QgaW50IG1pbmltdW1GdW5jdGlvbkxlbmd0aFRvQ2FjaGUgPSBm
dW5jdGlvbkJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgPyAxNiA6IDY7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtPiBuZXdJbmZvOwogICAg
IGludCBmdW5jdGlvbkxlbmd0aCA9IGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQgLSBmdW5jdGlvbklu
Zm8uc3RhcnRPZmZzZXQ7CiAgICAgaWYgKFRyZWVCdWlsZGVyOjpDYW5Vc2VGdW5jdGlvbkNhY2hl
ICYmIG1fZnVuY3Rpb25DYWNoZSAmJiBmdW5jdGlvbkxlbmd0aCA+IG1pbmltdW1GdW5jdGlvbkxl
bmd0aFRvQ2FjaGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDBh
YTZiM2RkZTNjMzZlNzU5MjQzMjJjMGQzYWZiNGIwYzZiOTc4Y2YuLmVlMDY0MDQwODVlZGU5YWY3
ZGMxMDk1YzlhMGIwNzc4ZTZlMTkwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaApAQCAtMTc0LDYgKzE3NCw4IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICwgbV9pc0Z1
bmN0aW9uQm91bmRhcnkoZmFsc2UpCiAgICAgICAgICwgbV9pc1ZhbGlkU3RyaWN0TW9kZSh0cnVl
KQogICAgICAgICAsIG1faGFzQXJndW1lbnRzKGZhbHNlKQorICAgICAgICAsIG1fY29uc3RydWN0
b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpKQorICAg
ICAgICAsIG1fZXhwZWN0ZWRTdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFN1cGVy
QmluZGluZzo6Tm90TmVlZGVkKSkKICAgICAgICAgLCBtX2xvb3BEZXB0aCgwKQogICAgICAgICAs
IG1fc3dpdGNoRGVwdGgoMCkKICAgICB7CkBAIC0xOTYsNiArMTk4LDggQEAgc3RydWN0IFNjb3Bl
IHsKICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFyeShyaHMubV9pc0Z1bmN0aW9uQm91bmRh
cnkpCiAgICAgICAgICwgbV9pc1ZhbGlkU3RyaWN0TW9kZShyaHMubV9pc1ZhbGlkU3RyaWN0TW9k
ZSkKICAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhyaHMubV9oYXNBcmd1bWVudHMpCisgICAgICAg
ICwgbV9jb25zdHJ1Y3RvcktpbmQocmhzLm1fY29uc3RydWN0b3JLaW5kKQorICAgICAgICAsIG1f
ZXhwZWN0ZWRTdXBlckJpbmRpbmcocmhzLm1fZXhwZWN0ZWRTdXBlckJpbmRpbmcpCiAgICAgICAg
ICwgbV9sb29wRGVwdGgocmhzLm1fbG9vcERlcHRoKQogICAgICAgICAsIG1fc3dpdGNoRGVwdGgo
cmhzLm1fc3dpdGNoRGVwdGgpCiAgICAgICAgICwgbV9tb2R1bGVTY29wZURhdGEocmhzLm1fbW9k
dWxlU2NvcGVEYXRhKQpAQCAtNDU3LDYgKzQ2MSwxMSBAQCBzdHJ1Y3QgU2NvcGUgewogCiAgICAg
Ym9vbCBuZWVkc1N1cGVyQmluZGluZygpIHsgcmV0dXJuIG1fbmVlZHNTdXBlckJpbmRpbmc7IH0K
ICAgICB2b2lkIHNldE5lZWRzU3VwZXJCaW5kaW5nKCkgeyBtX25lZWRzU3VwZXJCaW5kaW5nID0g
dHJ1ZTsgfQorICAgIAorICAgIHZvaWQgc2V0RXhwZWN0ZWRTdXBlckJpbmRpbmcoU3VwZXJCaW5k
aW5nIHN1cGVyQmluZGluZykgeyBtX2V4cGVjdGVkU3VwZXJCaW5kaW5nID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHN1cGVyQmluZGluZyk7IH0KKyAgICBTdXBlckJpbmRpbmcgZXhwZWN0ZWRTdXBl
ckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fZXhw
ZWN0ZWRTdXBlckJpbmRpbmcpOyB9CisgICAgdm9pZCBzZXRDb25zdHJ1Y3RvcktpbmQoQ29uc3Ry
dWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCkgeyBtX2NvbnN0cnVjdG9yS2luZCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpOyB9CisgICAgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2lu
ZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CiAKICAgICB2b2lkIGNvbGxlY3RGcmVlVmFyaWFibGVz
KFNjb3BlKiBuZXN0ZWRTY29wZSwgYm9vbCBzaG91bGRUcmFja0Nsb3NlZFZhcmlhYmxlcykKICAg
ICB7CkBAIC02MTMsNiArNjIyLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNGdW5jdGlvbkJv
dW5kYXJ5IDogMTsKICAgICBib29sIG1faXNWYWxpZFN0cmljdE1vZGUgOiAxOwogICAgIGJvb2wg
bV9oYXNBcmd1bWVudHMgOiAxOworICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsK
KyAgICB1bnNpZ25lZCBtX2V4cGVjdGVkU3VwZXJCaW5kaW5nIDogMjsKICAgICBpbnQgbV9sb29w
RGVwdGg7CiAgICAgaW50IG1fc3dpdGNoRGVwdGg7CiAKQEAgLTg2NCw3ICs4NzUsMTkgQEAgcHJp
dmF0ZToKICAgICAgICAgLy8gV2hlbiByZWFjaGluZyB0aGUgdG9wIGxldmVsIHNjb3BlIChpdCBj
YW4gYmUgbm9uIGZ1bmN0aW9uIHNjb3BlKSwgd2UgcmV0dXJuIGl0LgogICAgICAgICByZXR1cm4g
U2NvcGVSZWYoJm1fc2NvcGVTdGFjaywgaSk7CiAgICAgfQotCisgICAgCisgICAgLy8gRmluZCB0
aGUgY2xvc2VzdCBub3QgJ2Fycm93IGZ1bmN0aW9uJyBmdW5jdGlvbiBzY29wZS4KKyAgICBTY29w
ZVJlZiBjdXJyZW50Tm90QXJyb3dmdW5jdGlvbkZ1bmN0aW9uU2NvcGUoKQorICAgIHsKKyAgICAg
ICAgdW5zaWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOworICAgICAgICBBU1NFUlQo
aSA8IG1fc2NvcGVTdGFjay5zaXplKCkpOworICAgICAgICB3aGlsZSAoaSAmJiAoIW1fc2NvcGVT
dGFja1tpXS5pc0Z1bmN0aW9uQm91bmRhcnkoKSB8fCBtX3Njb3BlU3RhY2tbaV0uaXNBcnJvd0Z1
bmN0aW9uKCkpKSB7CisgICAgICAgICAgICBpLS07CisgICAgICAgICAgICBBU1NFUlQoaSA8IG1f
c2NvcGVTdGFjay5zaXplKCkpOworICAgICAgICB9CisgICAgICAgIC8vIFdoZW4gcmVhY2hpbmcg
dGhlIHRvcCBsZXZlbCBzY29wZSAoaXQgY2FuIGJlIG5vbiBmdW5jdGlvbiBzY29wZSksIHdlIHJl
dHVybiBpdC4KKyAgICAgICAgcmV0dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ssIGkpOworICAg
IH0KICAgICAKICAgICBTY29wZVJlZiBwdXNoU2NvcGUoKQogICAgIHsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzNWUwOTUw
MjQ2MWUxZWY4OTk1MzJmNDZhYzVlZmE1M2Q5MDUzMDhmLi5kZTE0OGQwNmEwNzI1NGFlZDM2Zjk4
YmI5YzFiOWQwOWM5NGZmNmRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDEtMjYgIFNr
YWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0g
QXJyb3cgZnVuY3Rpb24gc3ludGF4LiBVc2luZyAnc3VwZXInIGluIGFycm93IGZ1bmN0aW9uIHRo
YXQgZGVjbGFyZWQgb3V0IG9mIHRoZSBjbGFzcyBzaG91bGQgbGVhZCB0byBTeW50YXggZXJyb3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDg5Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgIAorICAgICAgICBB
ZGRpbmcgdGVzdHMgZm9yIHVzaW5nIG9mIHRoZSAnc3VwZXInIGluc2lkZSBvZiB0aGUgYXJyb3cg
ZnVuY3Rpb24KKyAKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHktZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJw
cm9wZXJ0eS5qczoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zeW50
YXgtZXJyb3JzLmpzOgorCiAyMDE2LTAxLTIxICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hr
b3ZAZ21haWwuY29tPgogCiAgICAgICAgIFtFUzZdIEFycm93IGZ1bmN0aW9uLiBEZWZhdWx0IGFy
Z3VtZW50cyBpbiBhcnJvdyBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fy
cm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHktZXhwZWN0ZWQudHh0CmluZGV4IDNkZjJjNDk1ZmI5
ZmYxZTI3NjMzMGYxNTNjMTQwYmI1ZmY1ZjQ5ZDMuLjQ3NmY5ZDRkMWVlODc5NzZiY2I3NDM5Y2Ri
MGY2MTViNjdiYjY2N2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
c3VwZXJwcm9wZXJ0eS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi1zdXBlcnByb3BlcnR5LWV4cGVjdGVkLnR4dApAQCAtOSw3ICs5LDYgQEAgUEFTUyBFLmdl
dFBhcmVudFN0YXRpY1ZhbHVlKCkgaXMgZXhwZWN0ZWRWYWx1ZQogUEFTUyBmLnByb3AgaXMgZXhw
ZWN0ZWRWYWx1ZSArICItIiArIGV4cGVjdGVkVmFsdWUKIFBBU1MgZi5wcm9wIGlzIGV4cGVjdGVk
VmFsdWUgKyAiLSIgKyAibmV3LXZhbHVlIgogUEFTUyAobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWUo
KSBpcyBleHBlY3RlZFZhbHVlCi1QQVNTIChuZXcgRigpKS5nZXRQYXJlbnRWYWx1ZVdpdGhFcnJv
cigpKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmpl
Y3QgKGV2YWx1YXRpbmcgJ3N1cGVyLmdldFZhbHVlJykuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fy
cm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMtZXhwZWN0ZWQudHh0CmluZGV4IDc1NTNmNDFiOWQx
ODQ3ODE5ZmM1Njc0ZGFmZDMyYTlkYTA0MTlhZDcuLjdkY2ZjYjAzMGYyMjZmNzFiYTVmOTFjOWVm
YjQ0MWM1N2E2ZTBmYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
c3ludGF4LWVycm9ycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi1zeW50YXgtZXJyb3JzLWV4cGVjdGVkLnR4dApAQCAtMTMxLDYgKzEzMSwxOSBAQCBQQVNT
IHZhciBhcnIxID0gW2EsIGJdID0+IGEgKyBiOyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IFVuZXhwZWN0ZWQgdG9rZW4gJwogUEFTUyB2YXIgYXJyMiA9IHthLCBifSA9PiBhICsgYjsgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc9PicuIEV4cGVjdGVk
ICc7JyBhZnRlciB2YXJpYWJsZSBkZWNsYXJhdGlvbi4uCiBQQVNTIHZhciBhcnIzID0ge2M6YSxk
OmJ9ID0+IGEgKyBiOyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9r
ZW4gJz0+Jy4gRXhwZWN0ZWQgJzsnIGFmdGVyIHZhcmlhYmxlIGRlY2xhcmF0aW9uLi4KIFBBU1Mg
dmFyIGFycjMgPSB7YzpiLGQ6YX0gPT4gYSArIGI7IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5leHBlY3RlZCB0b2tlbiAnPT4nLiBFeHBlY3RlZCAnOycgYWZ0ZXIgdmFyaWFibGUgZGVj
bGFyYXRpb24uLgorUEFTUyB2YXIgYXJyNCA9ICgpID0+IHsgc3VwZXIoKTsgfTsgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2YgYSBjbGFz
cyBjb25zdHJ1Y3Rvci4uCitQQVNTIHZhciBhcnI0ID0gKCkgPT4geyBzdXBlcjsgfTsgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBDYW5ub3QgcmVmZXJlbmNlIHN1cGVyLi4KK1BBU1MgdmFy
IGFycjUgPSAoKSA9PiB7IHN1cGVyLmdldFZhbHVlKCk7IH07IHRocmV3IGV4Y2VwdGlvbiBTeW50
YXhFcnJvcjogc3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1ldGhvZCBvZiBhIGRlcml2ZWQg
Y2xhc3MuLgorUEFTUyB2YXIgYXJyNiA9ICgpID0+ICBzdXBlcigpOyB0aHJldyBleGNlcHRpb24g
U3ludGF4RXJyb3I6IENhbm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNzIGNvbnN0
cnVjdG9yLi4KK1BBU1MgdmFyIGFycjcgPSAoKSA9PiAgc3VwZXI7IHRocmV3IGV4Y2VwdGlvbiBT
eW50YXhFcnJvcjogQ2Fubm90IHJlZmVyZW5jZSBzdXBlci4uCitQQVNTIHZhciBhcnI4ID0gKCkg
PT4gIHN1cGVyLmdldFZhbHVlKCk7IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogc3VwZXIg
Y2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MuLgorUEFTUyBj
bGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9uIGEgKCkgeyByZXR1cm4gKCkgPT4geyBz
dXBlcigpOyB9O319IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IGNhbGwgc3Vw
ZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IuLgorUEFTUyBjbGFzcyBCIHsgY29u
c3RydWN0b3IoKSB7IGZ1bmN0aW9uIGIgKCkgeyByZXR1cm4gKCkgPT4geyBzdXBlcjsgfTsgfTsg
fX0gdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBDYW5ub3QgcmVmZXJlbmNlIHN1cGVyLi4K
K1BBU1MgY2xhc3MgQyB7IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlvbiBjICgpIHsgcmV0dXJuICgp
ID0+IHsgc3VwZXIuZ2V0VmFsdWUoKTsgfTt9fSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IHN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzLi4K
K1BBU1MgY2xhc3MgRCB7IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlvbiBhICgpIHsgcmV0dXJuICgp
ID0+IHN1cGVyKCk7IH19IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IGNhbGwg
c3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IuLgorUEFTUyBjbGFzcyBFIHsg
Y29uc3RydWN0b3IoKSB7IGZ1bmN0aW9uIGIgKCkgeyByZXR1cm4gKCkgPT4gc3VwZXI7IH07IH19
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IHJlZmVyZW5jZSBzdXBlci4uCitQ
QVNTIGNsYXNzIEYgeyBjb25zdHJ1Y3RvcigpIHsgZnVuY3Rpb24gYyAoKSB7IHJldHVybiAoKSA9
PiBzdXBlci5nZXRWYWx1ZSgpOyB9fSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IHN1cGVy
IGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzLi4KK1BBU1Mg
Y2xhc3MgRyB7fTsgY2xhc3MgRzIgZXh0ZW5kcyBHIHsgZ2V0VmFsdWUoKSB7IGZ1bmN0aW9uIGMg
KCkgeyByZXR1cm4gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsgfX0gdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBzdXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZl
ZCBjbGFzcy4uCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExF
VEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9u
LXN1cGVycHJvcGVydHkuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi1zdXBlcnByb3BlcnR5LmpzCmluZGV4IGU1ZjI0OWNiYmJkYTI4OGYxMzdhNTIzNzBmMjYx
MWNiNDE1NzFmYmUuLjJmNTg3ZmQ1NzIyNjZhYzk2ZDgzZGEyMWU0OTU1ZTMxZjI1ZTk1NzYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVy
cHJvcGVydHkuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tc3VwZXJwcm9wZXJ0eS5qcwpAQCAtNjMsMTIgKzYzLDYgQEAgY2xhc3MgRiBleHRlbmRzIEEg
ewogICAgICAgICBsZXQgYXJyb3cgPSAoKSA9PiAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOwogICAg
ICAgICByZXR1cm4gYXJyb3coKSgpOwogICAgIH0KLSAgICBnZXRQYXJlbnRWYWx1ZVdpdGhFcnJv
cigpIHsKLSAgICAgICAgdmFyIGYgPSAgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgcmV0dXJu
ICgpID0+IHN1cGVyLmdldFZhbHVlKCk7Ci0gICAgICAgIH07Ci0gICAgICAgIHJldHVybiBmKCk7
Ci0gICAgfQogIH07CiAKIHNob3VsZEJlKCcobmV3IEIoKSkuZ2V0VmFsdWVQYXJlbnRGdW5jdGlv
bigpJywgJ2V4cGVjdGVkVmFsdWUnKTsKQEAgLTkwLDYgKzg0LDQgQEAgc2hvdWxkQmUoJ2YucHJv
cCcsICdleHBlY3RlZFZhbHVlICsgIi0iICsgIm5ldy12YWx1ZSInKTsKIAogc2hvdWxkQmUoJyhu
ZXcgRigpKS5nZXRQYXJlbnRWYWx1ZSgpJywgJ2V4cGVjdGVkVmFsdWUnKTsKIAotc2hvdWxkVGhy
b3coJyhuZXcgRigpKS5nZXRQYXJlbnRWYWx1ZVdpdGhFcnJvcigpKCknKTsKLQogdmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXJyb3JzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy5qcwppbmRleCA1YTIyNjM0Yzg3
NTI1MjdlMzg0NzQ1MmFmMzY2NWFkNjc4ZTJmZjEyLi5lOGYyNGY0ZmFlYWU3ZDMyNjExZjNlOWIy
M2YwZDBjZmNmMDc0YWQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi1zeW50YXgtZXJyb3JzLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMuanMKQEAgLTQ4LDQgKzQ4LDIxIEBA
IHNob3VsZFRocm93KCd2YXIgYXJyMiA9IHthLCBifSA9PiBhICsgYjsnKTsKIHNob3VsZFRocm93
KCd2YXIgYXJyMyA9IHtjOmEsZDpifSA9PiBhICsgYjsnKTsKIHNob3VsZFRocm93KCd2YXIgYXJy
MyA9IHtjOmIsZDphfSA9PiBhICsgYjsnKTsKIAorc2hvdWxkVGhyb3coJ3ZhciBhcnI0ID0gKCkg
PT4geyBzdXBlcigpOyB9OycsICciU3ludGF4RXJyb3I6IENhbm5vdCBjYWxsIHN1cGVyKCkgb3V0
c2lkZSBvZiBhIGNsYXNzIGNvbnN0cnVjdG9yLiInKTsKK3Nob3VsZFRocm93KCd2YXIgYXJyNCA9
ICgpID0+IHsgc3VwZXI7IH07JywgJyJTeW50YXhFcnJvcjogQ2Fubm90IHJlZmVyZW5jZSBzdXBl
ci4iJyk7CitzaG91bGRUaHJvdygndmFyIGFycjUgPSAoKSA9PiB7IHN1cGVyLmdldFZhbHVlKCk7
IH07JywgJyJTeW50YXhFcnJvcjogc3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1ldGhvZCBv
ZiBhIGRlcml2ZWQgY2xhc3MuIicpOworCitzaG91bGRUaHJvdygndmFyIGFycjYgPSAoKSA9PiAg
c3VwZXIoKTsnLCAnIlN5bnRheEVycm9yOiBDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2Yg
YSBjbGFzcyBjb25zdHJ1Y3Rvci4iJyk7CitzaG91bGRUaHJvdygndmFyIGFycjcgPSAoKSA9PiAg
c3VwZXI7JywgJyJTeW50YXhFcnJvcjogQ2Fubm90IHJlZmVyZW5jZSBzdXBlci4iJyk7CitzaG91
bGRUaHJvdygndmFyIGFycjggPSAoKSA9PiAgc3VwZXIuZ2V0VmFsdWUoKTsnLCAnIlN5bnRheEVy
cm9yOiBzdXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFz
cy4iJyk7CisKK3Nob3VsZFRocm93KCdjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9u
IGEgKCkgeyByZXR1cm4gKCkgPT4geyBzdXBlcigpOyB9O319JywgJyJTeW50YXhFcnJvcjogQ2Fu
bm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IuIicpOworc2hv
dWxkVGhyb3coJ2NsYXNzIEIgeyBjb25zdHJ1Y3RvcigpIHsgZnVuY3Rpb24gYiAoKSB7IHJldHVy
biAoKSA9PiB7IHN1cGVyOyB9OyB9OyB9fScsICciU3ludGF4RXJyb3I6IENhbm5vdCByZWZlcmVu
Y2Ugc3VwZXIuIicpOworc2hvdWxkVGhyb3coJ2NsYXNzIEMgeyBjb25zdHJ1Y3RvcigpIHsgZnVu
Y3Rpb24gYyAoKSB7IHJldHVybiAoKSA9PiB7IHN1cGVyLmdldFZhbHVlKCk7IH07fX0nLCAnIlN5
bnRheEVycm9yOiBzdXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZl
ZCBjbGFzcy4iJyk7CisKK3Nob3VsZFRocm93KCdjbGFzcyBEIHsgY29uc3RydWN0b3IoKSB7IGZ1
bmN0aW9uIGEgKCkgeyByZXR1cm4gKCkgPT4gc3VwZXIoKTsgfX0nLCAnIlN5bnRheEVycm9yOiBD
YW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2YgYSBjbGFzcyBjb25zdHJ1Y3Rvci4iJyk7Citz
aG91bGRUaHJvdygnY2xhc3MgRSB7IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlvbiBiICgpIHsgcmV0
dXJuICgpID0+IHN1cGVyOyB9OyB9fScsICciU3ludGF4RXJyb3I6IENhbm5vdCByZWZlcmVuY2Ug
c3VwZXIuIicpOworc2hvdWxkVGhyb3coJ2NsYXNzIEYgeyBjb25zdHJ1Y3RvcigpIHsgZnVuY3Rp
b24gYyAoKSB7IHJldHVybiAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOyB9fScsICciU3ludGF4RXJy
b3I6IHN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNz
LiInKTsKK3Nob3VsZFRocm93KCdjbGFzcyBHIHt9OyBjbGFzcyBHMiBleHRlbmRzIEcgeyBnZXRW
YWx1ZSgpIHsgZnVuY3Rpb24gYyAoKSB7IHJldHVybiAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOyB9
fScsICciU3ludGF4RXJyb3I6IHN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2Yg
YSBkZXJpdmVkIGNsYXNzLiInKTsKKwogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270010</attachid>
            <date>2016-01-27 11:15:17 -0800</date>
            <delta_ts>2016-02-04 04:04:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150893-20160127201443.patch</filename>
            <type>text/plain</type>
            <size>15686</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YWFjYTcyYmIxM2EzNzVkMTE1Y2UzNzU0OTU1OTRjZmU4MDkwYzZmLi40YTZhZjAwZWVlYTVkOWUx
NmUwMWVlNjExMzcwZTc4NmNjOTNlYzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxNi0wMS0yNiAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIFVzaW5nICdz
dXBlcicgaW4gYXJyb3cgZnVuY3Rpb24gdGhhdCBkZWNsYXJlZCBvdXQgb2YgdGhlIGNsYXNzIHNo
b3VsZCBsZWFkIHRvIFN5bnRheCBlcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgJ3N1cGVyJyBhbmQgJ3N1cGVyKCknIGluc2lkZSBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24gc2hvdWxkIGxlYWQgdG8gc3ludGF4IGVycm9yIGlmIHRoZXkgYXJlIHVzZWQg
CisgICAgICAgIG91dCBvZiB0aGUgY2xhc3MgY29udGV4dCBvciB0aGV5IHdyYXBwZWQgYnkgb3Jk
aW5hcnkgZnVuY3Rpb24uIE5vdyBKU0MgcmV0dXJucyBSZWZlcmVuY2VFcnJvciBidXQgCisgICAg
ICAgIHNob3VsZCByZXR1cm4gU3ludGF4RXJyb3IgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcg
c3BlY3M6CisgICAgICAgIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2
Mi82LjAvI3NlYy1mdW5jdGlvbi1kZWZpbml0aW9ucy1zdGF0aWMtc2VtYW50aWNzLWVhcmx5LWVy
cm9ycworICAgICAgICBhbmQgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLWFycm93LWZ1bmN0aW9uLWRlZmluaXRpb25zLXJ1bnRpbWUtc2VtYW50aWNz
LWV2YWx1YXRpb24gCisgICAgICAgIAorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAg
ICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OlNjb3BlKToKKyAgICAg
ICAgKEpTQzo6U2NvcGU6OnNldEV4cGVjdGVkU3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6
U2NvcGU6OmV4cGVjdGVkU3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldENv
bnN0cnVjdG9yS2luZCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpjb25zdHJ1Y3RvcktpbmQpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI6OmN1cnJlbnROb3RBcnJvd2Z1bmN0aW9uRnVuY3Rpb25TY29w
ZSk6CisKIDIwMTYtMDEtMTkgIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5j
b20+CiAKICAgICAgICAgW0VTNl0gQXJyb3cgZnVuY3Rpb24gc3ludGF4LiBBcnJvdyBmdW5jdGlv
biBzcGVjaWZpYyBmZWF0dXJlcy4gTGV4aWNhbCBiaW5kICJhcmd1bWVudHMiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggZTAwZDgwMDIyMjA0MzkzMjFjYmQwY2Rl
MTZmNzI5ZTkzNmY4NjIyNS4uYzUzY2I3NmJiZWFmZjRkYzAyNTYyNzMzNDViMzk3MTBjYWZiNjZi
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTk0NCw4ICsx
OTQ0LDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAgZnVuY3Rpb25Cb2R5VHlw
ZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CiAgICAgfQogCi0gICAgYm9vbCBpc0NsYXNz
Q29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcktpbmQgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOwot
ICAgIAorICAgIGZ1bmN0aW9uU2NvcGUtPnNldENvbnN0cnVjdG9yS2luZChjb25zdHJ1Y3Rvcktp
bmQpOworICAgIGZ1bmN0aW9uU2NvcGUtPnNldEV4cGVjdGVkU3VwZXJCaW5kaW5nKGV4cGVjdGVk
U3VwZXJCaW5kaW5nKTsKKwogICAgIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4gPSBzdGFy
dENvbHVtbjsKICAgICAKICAgICAvLyBJZiB3ZSBrbm93IGFib3V0IHRoaXMgZnVuY3Rpb24gYWxy
ZWFkeSwgd2UgY2FuIHVzZSB0aGUgY2FjaGVkIGluZm8gYW5kIHNraXAgdGhlIHBhcnNlciB0byB0
aGUgZW5kIG9mIHRoZSBmdW5jdGlvbi4KQEAgLTIwMzQsMTIgKzIwMzUsMTkgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
SW5mbyhUcmVlQnVpbGQKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5
TmFtZXMtPmFyZ3VtZW50cyA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZv
Lm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3Qg
bW9kZSIpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+
ZXZhbCA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwo
KSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAg
IH0KLSAgICBpZiAoZnVuY3Rpb25TY29wZS0+aGFzRGlyZWN0U3VwZXIoKSAmJiBmdW5jdGlvbkJv
ZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2spIHsKLSAgICAgICAgc2VtYW50aWNG
YWlsSWZUcnVlKCFpc0NsYXNzQ29uc3RydWN0b3IsICJDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNp
ZGUgb2YgYSBjbGFzcyBjb25zdHJ1Y3RvciIpOwotICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUo
Y29uc3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCwgIkNhbm5vdCBjYWxs
IHN1cGVyKCkgaW4gYSBiYXNlIGNsYXNzIGNvbnN0cnVjdG9yIik7CisgICAgaWYgKGZ1bmN0aW9u
U2NvcGUtPmhhc0RpcmVjdFN1cGVyKCkpIHsKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGZ1bmN0
aW9uQ29uc3RydWN0b3JLaW5kID0gZnVuY3Rpb25Cb2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9u
Qm9keUJsb2NrCisgICAgICAgICAgICA/IGNvbnN0cnVjdG9yS2luZAorICAgICAgICAgICAgOiBj
bG9zZXN0UGFyZW50Tm9uQXJyb3dGdW5jdGlvbk5vbkxleGljYWxTY29wZSgpLT5jb25zdHJ1Y3Rv
cktpbmQoKTsKKyAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGZ1bmN0aW9uQ29uc3RydWN0b3JL
aW5kID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgIkNhbm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lk
ZSBvZiBhIGNsYXNzIGNvbnN0cnVjdG9yIik7CisgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShm
dW5jdGlvbkNvbnN0cnVjdG9yS2luZCAhPSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQsICJDYW5u
b3QgY2FsbCBzdXBlcigpIGluIGEgYmFzZSBjbGFzcyBjb25zdHJ1Y3RvciIpOworICAgIH0KKyAg
ICBpZiAoZnVuY3Rpb25TY29wZS0+bmVlZHNTdXBlckJpbmRpbmcoKSkgeworICAgICAgICBTdXBl
ckJpbmRpbmcgZnVuY3Rpb25TdXBlckJpbmRpbmcgPSBmdW5jdGlvbkJvZHlUeXBlID09IFN0YW5k
YXJkRnVuY3Rpb25Cb2R5QmxvY2sKKyAgICAgICAgICAgID8gZXhwZWN0ZWRTdXBlckJpbmRpbmcK
KyAgICAgICAgICAgIDogY2xvc2VzdFBhcmVudE5vbkFycm93RnVuY3Rpb25Ob25MZXhpY2FsU2Nv
cGUoKS0+ZXhwZWN0ZWRTdXBlckJpbmRpbmcoKTsKKyAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVl
KGZ1bmN0aW9uU3VwZXJCaW5kaW5nID09IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCAic3VwZXIg
Y2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MiKTsKICAgICB9
Ci0gICAgaWYgKGZ1bmN0aW9uU2NvcGUtPm5lZWRzU3VwZXJCaW5kaW5nKCkgJiYgZnVuY3Rpb25C
b2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrKQotICAgICAgICBzZW1hbnRpY0Zh
aWxJZlRydWUoZXhwZWN0ZWRTdXBlckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQs
ICJzdXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcyIp
OwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uID0gSlNUb2tlbkxvY2F0aW9uKG1fdG9r
ZW4ubV9sb2NhdGlvbik7CiAgICAgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCA9IG1fdG9rZW4ubV9k
YXRhLm9mZnNldDsKQEAgLTIwNTEsNyArMjA1OSw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxk
CiAgICAgCiAgICAgLy8gQ2FjaGUgdGhlIHRva2VuaXplciBzdGF0ZSBhbmQgdGhlIGZ1bmN0aW9u
IHNjb3BlIHRoZSBmaXJzdCB0aW1lIHRoZSBmdW5jdGlvbiBpcyBwYXJzZWQuCiAgICAgLy8gQW55
IGZ1dHVyZSByZXBhcnNpbmcgY2FuIHRoZW4gc2tpcCB0aGUgZnVuY3Rpb24uCi0gICAgc3RhdGlj
IGNvbnN0IGludCBtaW5pbXVtRnVuY3Rpb25MZW5ndGhUb0NhY2hlID0gMTY7CisgICAgLy8gRm9y
IGFycm93IGZ1bmN0aW9uIGlzIDEwID0gKCk9PigpICsgNCBzeW1ib2xzOworICAgIC8vIEZvciBv
cmRpbmFyeSBmdW5jdGlvbiBpcyAxNiAgPSBmdW5jdGlvbigpe30gKyA0IHN5bWJvbHMKKyAgICBj
b25zdCBpbnQgbWluaW11bUZ1bmN0aW9uTGVuZ3RoVG9DYWNoZSA9IGZ1bmN0aW9uQm9keVR5cGUg
PT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/IDE2IDogNjsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0+IG5ld0luZm87CiAgICAgaW50IGZ1bmN0aW9uTGVu
Z3RoID0gZnVuY3Rpb25JbmZvLmVuZE9mZnNldCAtIGZ1bmN0aW9uSW5mby5zdGFydE9mZnNldDsK
ICAgICBpZiAoVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2FjaGUgJiYgbV9mdW5jdGlvbkNh
Y2hlICYmIGZ1bmN0aW9uTGVuZ3RoID4gbWluaW11bUZ1bmN0aW9uTGVuZ3RoVG9DYWNoZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMGFhNmIzZGRlM2MzNmU3NTky
NDMyMmMwZDNhZmI0YjBjNmI5NzhjZi4uNjJjZGViM2ViOWVjZjRmYzg4OTJhMTM4ZTNjYTNhMDNj
MWQwMDk3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNzQsNiAr
MTc0LDggQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFyeShm
YWxzZSkKICAgICAgICAgLCBtX2lzVmFsaWRTdHJpY3RNb2RlKHRydWUpCiAgICAgICAgICwgbV9o
YXNBcmd1bWVudHMoZmFsc2UpCisgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpCisgICAgICAgICwgbV9leHBlY3Rl
ZFN1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQpKQogICAgICAgICAsIG1fbG9vcERlcHRoKDApCiAgICAgICAgICwgbV9zd2l0Y2hEZXB0aCgw
KQogICAgIHsKQEAgLTE5Niw2ICsxOTgsOCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAsIG1f
aXNGdW5jdGlvbkJvdW5kYXJ5KHJocy5tX2lzRnVuY3Rpb25Cb3VuZGFyeSkKICAgICAgICAgLCBt
X2lzVmFsaWRTdHJpY3RNb2RlKHJocy5tX2lzVmFsaWRTdHJpY3RNb2RlKQogICAgICAgICAsIG1f
aGFzQXJndW1lbnRzKHJocy5tX2hhc0FyZ3VtZW50cykKKyAgICAgICAgLCBtX2NvbnN0cnVjdG9y
S2luZChyaHMubV9jb25zdHJ1Y3RvcktpbmQpCisgICAgICAgICwgbV9leHBlY3RlZFN1cGVyQmlu
ZGluZyhyaHMubV9leHBlY3RlZFN1cGVyQmluZGluZykKICAgICAgICAgLCBtX2xvb3BEZXB0aChy
aHMubV9sb29wRGVwdGgpCiAgICAgICAgICwgbV9zd2l0Y2hEZXB0aChyaHMubV9zd2l0Y2hEZXB0
aCkKICAgICAgICAgLCBtX21vZHVsZVNjb3BlRGF0YShyaHMubV9tb2R1bGVTY29wZURhdGEpCkBA
IC00NTcsNiArNDYxLDExIEBAIHN0cnVjdCBTY29wZSB7CiAKICAgICBib29sIG5lZWRzU3VwZXJC
aW5kaW5nKCkgeyByZXR1cm4gbV9uZWVkc1N1cGVyQmluZGluZzsgfQogICAgIHZvaWQgc2V0TmVl
ZHNTdXBlckJpbmRpbmcoKSB7IG1fbmVlZHNTdXBlckJpbmRpbmcgPSB0cnVlOyB9CisgICAgCisg
ICAgdm9pZCBzZXRFeHBlY3RlZFN1cGVyQmluZGluZyhTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5n
KSB7IG1fZXhwZWN0ZWRTdXBlckJpbmRpbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJC
aW5kaW5nKTsgfQorICAgIFN1cGVyQmluZGluZyBleHBlY3RlZFN1cGVyQmluZGluZygpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9leHBlY3RlZFN1cGVyQmluZGlu
Zyk7IH0KKyAgICB2b2lkIHNldENvbnN0cnVjdG9yS2luZChDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kKSB7IG1fY29uc3RydWN0b3JLaW5kID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
bnN0cnVjdG9yS2luZCk7IH0KKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9y
S2luZCk7IH0KIAogICAgIHZvaWQgY29sbGVjdEZyZWVWYXJpYWJsZXMoU2NvcGUqIG5lc3RlZFNj
b3BlLCBib29sIHNob3VsZFRyYWNrQ2xvc2VkVmFyaWFibGVzKQogICAgIHsKQEAgLTYxMyw2ICs2
MjIsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0Z1bmN0aW9uQm91bmRhcnkgOiAxOwogICAg
IGJvb2wgbV9pc1ZhbGlkU3RyaWN0TW9kZSA6IDE7CiAgICAgYm9vbCBtX2hhc0FyZ3VtZW50cyA6
IDE7CisgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVkIG1f
ZXhwZWN0ZWRTdXBlckJpbmRpbmcgOiAyOwogICAgIGludCBtX2xvb3BEZXB0aDsKICAgICBpbnQg
bV9zd2l0Y2hEZXB0aDsKIApAQCAtODY0LDcgKzg3NSwxNyBAQCBwcml2YXRlOgogICAgICAgICAv
LyBXaGVuIHJlYWNoaW5nIHRoZSB0b3AgbGV2ZWwgc2NvcGUgKGl0IGNhbiBiZSBub24gZnVuY3Rp
b24gc2NvcGUpLCB3ZSByZXR1cm4gaXQuCiAgICAgICAgIHJldHVybiBTY29wZVJlZigmbV9zY29w
ZVN0YWNrLCBpKTsKICAgICB9Ci0KKyAgICAKKyAgICAvLyBGaW5kIHRoZSBjbG9zZXN0IG5vdCAn
YXJyb3cgZnVuY3Rpb24nIGZ1bmN0aW9uIHNjb3BlLgorICAgIFNjb3BlUmVmIGNsb3Nlc3RQYXJl
bnROb25BcnJvd0Z1bmN0aW9uTm9uTGV4aWNhbFNjb3BlKCkKKyAgICB7CisgICAgICAgIHVuc2ln
bmVkIGkgPSBtX3Njb3BlU3RhY2suc2l6ZSgpIC0gMTsKKyAgICAgICAgQVNTRVJUKGkgPCBtX3Nj
b3BlU3RhY2suc2l6ZSgpICYmIG1fc2NvcGVTdGFjay5zaXplKCkpOworICAgICAgICB3aGlsZSAo
aSAmJiAoIW1fc2NvcGVTdGFja1tpXS5pc0Z1bmN0aW9uQm91bmRhcnkoKSB8fCBtX3Njb3BlU3Rh
Y2tbaV0uaXNBcnJvd0Z1bmN0aW9uKCkpKQorICAgICAgICAgICAgaS0tOworICAgICAgICAvLyBX
aGVuIHJlYWNoaW5nIHRoZSB0b3AgbGV2ZWwgc2NvcGUgKGl0IGNhbiBiZSBub24gZnVuY3Rpb24g
c2NvcGUpLCB3ZSByZXR1cm4gaXQuCisgICAgICAgIHJldHVybiBTY29wZVJlZigmbV9zY29wZVN0
YWNrLCBpKTsKKyAgICB9CiAgICAgCiAgICAgU2NvcGVSZWYgcHVzaFNjb3BlKCkKICAgICB7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMzVlMDk1MDI0NjFlMWVmODk5NTMyZjQ2YWM1ZWZhNTNkOTA1MzA4Zi4uZGUxNDhkMDZh
MDcyNTRhZWQzNmY5OGJiOWMxYjlkMDljOTRmZjZkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDE2LTAxLTI2ICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisg
ICAgICAgIFtFUzZdIEFycm93IGZ1bmN0aW9uIHN5bnRheC4gVXNpbmcgJ3N1cGVyJyBpbiBhcnJv
dyBmdW5jdGlvbiB0aGF0IGRlY2xhcmVkIG91dCBvZiB0aGUgY2xhc3Mgc2hvdWxkIGxlYWQgdG8g
U3ludGF4IGVycm9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTA4OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAKKyAgICAgICAgQWRkaW5nIHRlc3RzIGZvciB1c2luZyBvZiB0aGUgJ3N1cGVyJyBpbnNpZGUg
b2YgdGhlIGFycm93IGZ1bmN0aW9uCisgCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1zdXBl
cnByb3BlcnR5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXN5bnRh
eC1lcnJvcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1
bmN0aW9uLXN1cGVycHJvcGVydHkuanM6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tc3ludGF4LWVycm9ycy5qczoKKwogMjAxNi0wMS0yMSAgU2thY2hrb3YgT2xla3Nh
bmRyICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlv
bi4gRGVmYXVsdCBhcmd1bWVudHMgaW4gYXJyb3cgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LWV4cGVjdGVkLnR4dAppbmRl
eCAzZGYyYzQ5NWZiOWZmMWUyNzYzMzBmMTUzYzE0MGJiNWZmNWY0OWQzLi40NzZmOWQ0ZDFlZTg3
OTc2YmNiNzQzOWNkYjBmNjE1YjY3YmI2NjdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS1leHBlY3RlZC50eHQKQEAgLTksNyArOSw2
IEBAIFBBU1MgRS5nZXRQYXJlbnRTdGF0aWNWYWx1ZSgpIGlzIGV4cGVjdGVkVmFsdWUKIFBBU1Mg
Zi5wcm9wIGlzIGV4cGVjdGVkVmFsdWUgKyAiLSIgKyBleHBlY3RlZFZhbHVlCiBQQVNTIGYucHJv
cCBpcyBleHBlY3RlZFZhbHVlICsgIi0iICsgIm5ldy12YWx1ZSIKIFBBU1MgKG5ldyBGKCkpLmdl
dFBhcmVudFZhbHVlKCkgaXMgZXhwZWN0ZWRWYWx1ZQotUEFTUyAobmV3IEYoKSkuZ2V0UGFyZW50
VmFsdWVXaXRoRXJyb3IoKSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdzdXBlci5nZXRWYWx1ZScpLgogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXJyb3JzLWV4cGVjdGVkLnR4dAppbmRl
eCA3NTUzZjQxYjlkMTg0NzgxOWZjNTY3NGRhZmQzMmE5ZGEwNDE5YWQ3Li43ZGNmY2IwMzBmMjI2
ZjcxYmE1ZjkxYzllZmI0NDFjNTdhNmUwZmM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2pzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy1leHBlY3RlZC50eHQKQEAgLTEzMSw2ICsx
MzEsMTkgQEAgUEFTUyB2YXIgYXJyMSA9IFthLCBiXSA9PiBhICsgYjsgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcKIFBBU1MgdmFyIGFycjIgPSB7YSwgYn0g
PT4gYSArIGI7IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAn
PT4nLiBFeHBlY3RlZCAnOycgYWZ0ZXIgdmFyaWFibGUgZGVjbGFyYXRpb24uLgogUEFTUyB2YXIg
YXJyMyA9IHtjOmEsZDpifSA9PiBhICsgYjsgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBV
bmV4cGVjdGVkIHRva2VuICc9PicuIEV4cGVjdGVkICc7JyBhZnRlciB2YXJpYWJsZSBkZWNsYXJh
dGlvbi4uCiBQQVNTIHZhciBhcnIzID0ge2M6YixkOmF9ID0+IGEgKyBiOyB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJz0+Jy4gRXhwZWN0ZWQgJzsnIGFmdGVy
IHZhcmlhYmxlIGRlY2xhcmF0aW9uLi4KK1BBU1MgdmFyIGFycjQgPSAoKSA9PiB7IHN1cGVyKCk7
IH07IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRz
aWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IuLgorUEFTUyB2YXIgYXJyNCA9ICgpID0+IHsgc3Vw
ZXI7IH07IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IHJlZmVyZW5jZSBzdXBl
ci4uCitQQVNTIHZhciBhcnI1ID0gKCkgPT4geyBzdXBlci5nZXRWYWx1ZSgpOyB9OyB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IHN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qg
b2YgYSBkZXJpdmVkIGNsYXNzLi4KK1BBU1MgdmFyIGFycjYgPSAoKSA9PiAgc3VwZXIoKTsgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2Yg
YSBjbGFzcyBjb25zdHJ1Y3Rvci4uCitQQVNTIHZhciBhcnI3ID0gKCkgPT4gIHN1cGVyOyB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IENhbm5vdCByZWZlcmVuY2Ugc3VwZXIuLgorUEFTUyB2
YXIgYXJyOCA9ICgpID0+ICBzdXBlci5nZXRWYWx1ZSgpOyB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IHN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNs
YXNzLi4KK1BBU1MgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlvbiBhICgpIHsgcmV0
dXJuICgpID0+IHsgc3VwZXIoKTsgfTt9fSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IENh
bm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNzIGNvbnN0cnVjdG9yLi4KK1BBU1Mg
Y2xhc3MgQiB7IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlvbiBiICgpIHsgcmV0dXJuICgpID0+IHsg
c3VwZXI7IH07IH07IH19IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IHJlZmVy
ZW5jZSBzdXBlci4uCitQQVNTIGNsYXNzIEMgeyBjb25zdHJ1Y3RvcigpIHsgZnVuY3Rpb24gYyAo
KSB7IHJldHVybiAoKSA9PiB7IHN1cGVyLmdldFZhbHVlKCk7IH07fX0gdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBzdXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVy
aXZlZCBjbGFzcy4uCitQQVNTIGNsYXNzIEQgeyBjb25zdHJ1Y3RvcigpIHsgZnVuY3Rpb24gYSAo
KSB7IHJldHVybiAoKSA9PiBzdXBlcigpOyB9fSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IENhbm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNzIGNvbnN0cnVjdG9yLi4KK1BB
U1MgY2xhc3MgRSB7IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlvbiBiICgpIHsgcmV0dXJuICgpID0+
IHN1cGVyOyB9OyB9fSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IENhbm5vdCByZWZlcmVu
Y2Ugc3VwZXIuLgorUEFTUyBjbGFzcyBGIHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9uIGMgKCkg
eyByZXR1cm4gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsgfX0gdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBzdXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBj
bGFzcy4uCitQQVNTIGNsYXNzIEcge307IGNsYXNzIEcyIGV4dGVuZHMgRyB7IGdldFZhbHVlKCkg
eyBmdW5jdGlvbiBjICgpIHsgcmV0dXJuICgpID0+IHN1cGVyLmdldFZhbHVlKCk7IH19IHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogc3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1ldGhv
ZCBvZiBhIGRlcml2ZWQgY2xhc3MuLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qcwppbmRleCBlNWYyNDljYmJiZGEyODhm
MTM3YTUyMzcwZjI2MTFjYjQxNTcxZmJlLi4yZjU4N2ZkNTcyMjY2YWM5NmQ4M2RhMjFlNDk1NWUz
MWYyNWU5NTc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dm
dW5jdGlvbi1zdXBlcnByb3BlcnR5LmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanMKQEAgLTYzLDEyICs2Myw2IEBAIGNsYXNz
IEYgZXh0ZW5kcyBBIHsKICAgICAgICAgbGV0IGFycm93ID0gKCkgPT4gKCkgPT4gc3VwZXIuZ2V0
VmFsdWUoKTsKICAgICAgICAgcmV0dXJuIGFycm93KCkoKTsKICAgICB9Ci0gICAgZ2V0UGFyZW50
VmFsdWVXaXRoRXJyb3IoKSB7Ci0gICAgICAgIHZhciBmID0gIGZ1bmN0aW9uICgpIHsKLSAgICAg
ICAgICAgIHJldHVybiAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOwotICAgICAgICB9OwotICAgICAg
ICByZXR1cm4gZigpOwotICAgIH0KICB9OwogCiBzaG91bGRCZSgnKG5ldyBCKCkpLmdldFZhbHVl
UGFyZW50RnVuY3Rpb24oKScsICdleHBlY3RlZFZhbHVlJyk7CkBAIC05MCw2ICs4NCw0IEBAIHNo
b3VsZEJlKCdmLnByb3AnLCAnZXhwZWN0ZWRWYWx1ZSArICItIiArICJuZXctdmFsdWUiJyk7CiAK
IHNob3VsZEJlKCcobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWUoKScsICdleHBlY3RlZFZhbHVlJyk7
CiAKLXNob3VsZFRocm93KCcobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWVXaXRoRXJyb3IoKSgpJyk7
Ci0KIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy5qcyBiL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMuanMKaW5k
ZXggNWEyMjYzNGM4NzUyNTI3ZTM4NDc0NTJhZjM2NjVhZDY3OGUyZmYxMi4uZThmMjRmNGZhZWFl
N2QzMjYxMWYzZTliMjNmMGQwY2ZjZjA3NGFkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy5qcworKysgYi9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXJyb3JzLmpzCkBAIC00
OCw0ICs0OCwyMSBAQCBzaG91bGRUaHJvdygndmFyIGFycjIgPSB7YSwgYn0gPT4gYSArIGI7Jyk7
CiBzaG91bGRUaHJvdygndmFyIGFycjMgPSB7YzphLGQ6Yn0gPT4gYSArIGI7Jyk7CiBzaG91bGRU
aHJvdygndmFyIGFycjMgPSB7YzpiLGQ6YX0gPT4gYSArIGI7Jyk7CiAKK3Nob3VsZFRocm93KCd2
YXIgYXJyNCA9ICgpID0+IHsgc3VwZXIoKTsgfTsnLCAnIlN5bnRheEVycm9yOiBDYW5ub3QgY2Fs
bCBzdXBlcigpIG91dHNpZGUgb2YgYSBjbGFzcyBjb25zdHJ1Y3Rvci4iJyk7CitzaG91bGRUaHJv
dygndmFyIGFycjQgPSAoKSA9PiB7IHN1cGVyOyB9OycsICciU3ludGF4RXJyb3I6IENhbm5vdCBy
ZWZlcmVuY2Ugc3VwZXIuIicpOworc2hvdWxkVGhyb3coJ3ZhciBhcnI1ID0gKCkgPT4geyBzdXBl
ci5nZXRWYWx1ZSgpOyB9OycsICciU3ludGF4RXJyb3I6IHN1cGVyIGNhbiBvbmx5IGJlIHVzZWQg
aW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzLiInKTsKKworc2hvdWxkVGhyb3coJ3ZhciBh
cnI2ID0gKCkgPT4gIHN1cGVyKCk7JywgJyJTeW50YXhFcnJvcjogQ2Fubm90IGNhbGwgc3VwZXIo
KSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IuIicpOworc2hvdWxkVGhyb3coJ3ZhciBh
cnI3ID0gKCkgPT4gIHN1cGVyOycsICciU3ludGF4RXJyb3I6IENhbm5vdCByZWZlcmVuY2Ugc3Vw
ZXIuIicpOworc2hvdWxkVGhyb3coJ3ZhciBhcnI4ID0gKCkgPT4gIHN1cGVyLmdldFZhbHVlKCk7
JywgJyJTeW50YXhFcnJvcjogc3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1ldGhvZCBvZiBh
IGRlcml2ZWQgY2xhc3MuIicpOworCitzaG91bGRUaHJvdygnY2xhc3MgQSB7IGNvbnN0cnVjdG9y
KCkgeyBmdW5jdGlvbiBhICgpIHsgcmV0dXJuICgpID0+IHsgc3VwZXIoKTsgfTt9fScsICciU3lu
dGF4RXJyb3I6IENhbm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNzIGNvbnN0cnVj
dG9yLiInKTsKK3Nob3VsZFRocm93KCdjbGFzcyBCIHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9u
IGIgKCkgeyByZXR1cm4gKCkgPT4geyBzdXBlcjsgfTsgfTsgfX0nLCAnIlN5bnRheEVycm9yOiBD
YW5ub3QgcmVmZXJlbmNlIHN1cGVyLiInKTsKK3Nob3VsZFRocm93KCdjbGFzcyBDIHsgY29uc3Ry
dWN0b3IoKSB7IGZ1bmN0aW9uIGMgKCkgeyByZXR1cm4gKCkgPT4geyBzdXBlci5nZXRWYWx1ZSgp
OyB9O319JywgJyJTeW50YXhFcnJvcjogc3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1ldGhv
ZCBvZiBhIGRlcml2ZWQgY2xhc3MuIicpOworCitzaG91bGRUaHJvdygnY2xhc3MgRCB7IGNvbnN0
cnVjdG9yKCkgeyBmdW5jdGlvbiBhICgpIHsgcmV0dXJuICgpID0+IHN1cGVyKCk7IH19JywgJyJT
eW50YXhFcnJvcjogQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3Ry
dWN0b3IuIicpOworc2hvdWxkVGhyb3coJ2NsYXNzIEUgeyBjb25zdHJ1Y3RvcigpIHsgZnVuY3Rp
b24gYiAoKSB7IHJldHVybiAoKSA9PiBzdXBlcjsgfTsgfX0nLCAnIlN5bnRheEVycm9yOiBDYW5u
b3QgcmVmZXJlbmNlIHN1cGVyLiInKTsKK3Nob3VsZFRocm93KCdjbGFzcyBGIHsgY29uc3RydWN0
b3IoKSB7IGZ1bmN0aW9uIGMgKCkgeyByZXR1cm4gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsgfX0n
LCAnIlN5bnRheEVycm9yOiBzdXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEg
ZGVyaXZlZCBjbGFzcy4iJyk7CitzaG91bGRUaHJvdygnY2xhc3MgRyB7fTsgY2xhc3MgRzIgZXh0
ZW5kcyBHIHsgZ2V0VmFsdWUoKSB7IGZ1bmN0aW9uIGMgKCkgeyByZXR1cm4gKCkgPT4gc3VwZXIu
Z2V0VmFsdWUoKTsgfX0nLCAnIlN5bnRheEVycm9yOiBzdXBlciBjYW4gb25seSBiZSB1c2VkIGlu
IGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcy4iJyk7CisKIHZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270653</attachid>
            <date>2016-02-04 04:04:39 -0800</date>
            <delta_ts>2016-02-04 04:26:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150893-20160204140414.patch</filename>
            <type>text/plain</type>
            <size>36791</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2MDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NmM3NGZkNGEzMDI0MzQyZDc5MDY5NjBlZmJmZWI1YTRjYWRjOTU0Li5lNGE4MjZkOGRhZGY3ZDA1
YjIxZWJmODg4Mjk5MmJiMjM1MzdjMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxNi0wMi0wNCAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIFVzaW5nICdz
dXBlcicgaW4gYXJyb3cgZnVuY3Rpb24gdGhhdCBkZWNsYXJlZCBvdXQgb2YgdGhlIGNsYXNzIHNo
b3VsZCBsZWFkIHRvIFN5bnRheCBlcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgJ3N1cGVyJyBhbmQgJ3N1cGVyKCknIGluc2lkZSBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24gc2hvdWxkIGxlYWQgdG8gc3ludGF4IGVycm9yIGlmIHRoZXkgYXJlIHVzZWQg
CisgICAgICAgIG91dCBvZiB0aGUgY2xhc3MgY29udGV4dCBvciB0aGV5IHdyYXBwZWQgYnkgb3Jk
aW5hcnkgZnVuY3Rpb24uIE5vdyBKU0MgcmV0dXJucyBSZWZlcmVuY2VFcnJvciBidXQgCisgICAg
ICAgIHNob3VsZCByZXR1cm4gU3ludGF4RXJyb3IgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcg
c3BlY3M6CisgICAgICAgIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2
Mi82LjAvI3NlYy1mdW5jdGlvbi1kZWZpbml0aW9ucy1zdGF0aWMtc2VtYW50aWNzLWVhcmx5LWVy
cm9ycworICAgICAgICBhbmQgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLWFycm93LWZ1bmN0aW9uLWRlZmluaXRpb25zLXJ1bnRpbWUtc2VtYW50aWNz
LWV2YWx1YXRpb24gCisgICAgICAgIEN1cnJlbiBwYXRjaCBpbXBsZW1lbnRlZCBmb3IgdHdvIGNh
c2VzOgorICAgICAgICAxKSBpZiBzdXBlci9zdXBlcigpIGFyZSB1c2VkIGluc2lkZSBvZiB0aGUg
YXJyb3cgZnVuY3Rpb24KKyAgICAgICAgMikgaWYgc3VwZXIvc3VwZXIoKSBhcmUgdXNlZCBpbnNp
ZGUgb2YgdGhlIGV2YWwuIFRvIHN1cHBvcnQgdGhpcyBjYXNlIEkgaGFkIHRvIGFkZCBuZXcgYWRk
aXRpb25hbCBmbGFnIAorICAgICAgICB0byBFeGVjdXRhYmxlSW5mbyB0aGF0IGFsbG93IHRvIHNh
dmUgc3RhdGUgYW5kIHVzZSB0aGlzIHN0YXRlIGR1cmluZyBwYXJzaW5nIGluIGV2YWwuIEluIGN1
cnJlbnQgcGF0Y2ggaW1wbGVtZW50ZWQKKyAgICAgICAgb25seSBmb2xsb3dpbmcgY2FzZSB3aXRo
IG9uZSBldmFsOgorICAgICAgICAgICBjbGFzcyBBIHt9IAorICAgICAgICAgICBjbGFzcyBCIHsg
Y29zdHJ1Y3RvcigpIHsgZXZhbCgic3VwZXIoKSIpO30gCisgICAgICAgIEludm9raW5nIHN1cGVy
KCkvc3VwZXIgaW4gdHdvIG9yIG1vcmUgZXZhbHMgd2lsbCBiZSBwYXJ0IG9mIHRoZSBpc3N1ZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzODY0CisgIAorICAgICAg
ICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAg
KEpTQzo6U2NvcGU6OlNjb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldEV4cGVjdGVkU3Vw
ZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmV4cGVjdGVkU3VwZXJCaW5kaW5nKToK
KyAgICAgICAgKEpTQzo6U2NvcGU6OnNldENvbnN0cnVjdG9yS2luZCk6CisgICAgICAgIChKU0M6
OlNjb3BlOjpjb25zdHJ1Y3RvcktpbmQpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmN1cnJlbnRO
b3RBcnJvd2Z1bmN0aW9uRnVuY3Rpb25TY29wZSk6CisKKyAgICAgICAgKiBieXRlY29kZS9FdmFs
Q29kZUNhY2hlLmg6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6OmdldFNsb3cpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjp3
cmFwcGVkQ29kZUJsb2NDb250ZXh0VHlwZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpTY29wZSk6CisgICAgICAgIChKU0M6
OlNjb3BlOjpzZXRFeHBlY3RlZFN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpl
eHBlY3RlZFN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRDb25zdHJ1Y3Rv
cktpbmQpOgorICAgICAgICAoSlNDOjpTY29wZTo6Y29uc3RydWN0b3JLaW5kKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyOjpjbG9zZXN0UGFyZW50Tm9uQXJyb3dGdW5jdGlvbk5vbkxleGljYWxTY29w
ZSk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5j
cHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRh
YmxlOjpTY3JpcHRFeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZSk6Cisg
ICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1
dGFibGU6OnBhcmVudEV2YWxEZXJpdmVkQ29udGV4dFR5cGUpOgorICAgICAgICAqIHRlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcnByb3BlcnR5LmpzOgorCiAyMDE2
LTAxLTE5ICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAg
ICAgIFtFUzZdIEFycm93IGZ1bmN0aW9uIHN5bnRheC4gQXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMg
ZmVhdHVyZXMuIExleGljYWwgYmluZCAiYXJndW1lbnRzIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKaW5kZXggNjYzNDkwYWZiNDUyNDVjMzZmZjA1
ZDQ3ZWY4ODEzZGE1YTU5ZjUwMC4uNGI0ZjVmZjRlYjgyZmRmYTE4ZDA0YmFhNTY4YTRjNGE4ZjVi
OTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2Rl
Q2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNo
ZS5oCkBAIC0xLDMgKzEsNCBAQAorUEFTUyAobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWVXaXRoRXJy
b3IoKSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2Jq
ZWN0IChldmFsdWF0aW5nICdzdXBlci5nZXRWYWx1ZScpLgogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNTQsMTIg
KzU1LDIzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIEV2YWxFeGVjdXRhYmxl
KiBnZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9vbCBpblN0cmljdENv
bnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZl
ZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFNvdXJjZUNv
ZGUmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorCisgICAgICAgIEV2YWxFeGVjdXRhYmxl
KiBnZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9vbCBpblN0cmljdENv
bnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZl
ZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFNvdXJjZUNv
ZGUmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0
b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5n
ID0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIFZhcmlh
YmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgICAgICBKU1Njb3BlOjpj
b2xsZWN0VmFyaWFibGVzVW5kZXJURFooc2NvcGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAg
ICAgICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpj
cmVhdGUoZXhlYywgZXZhbFNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwgZGVy
aXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCAmdmFyaWFibGVzVW5kZXJU
RFopOworCisgICAgICAgICAgICBEZXJpdmVkQ29udGV4dFR5cGUgd3JhcHBlZENvZGVCbG9ja0Rl
cml2ZWRDb250ZXh0VHlwZSA9IGRlcml2ZWRDb250ZXh0VHlwZTsKKyAgICAgICAgICAgIGlmICh3
cmFwcGVkQ29kZUJsb2NrRGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250ZXh0VHlwZTo6
Tm9uZSkgeworICAgICAgICAgICAgICAgIGlmIChjb25zdHJ1Y3RvcktpbmQgIT0gQ29uc3RydWN0
b3JLaW5kOjpOb25lKQorICAgICAgICAgICAgICAgICAgICB3cmFwcGVkQ29kZUJsb2NrRGVyaXZl
ZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250
ZXh0OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgd3JhcHBlZENv
ZGVCbG9ja0Rlcml2ZWRDb250ZXh0VHlwZSA9IHN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6
Ok5lZWRlZAorICAgICAgICAgICAgICAgICAgICAgICAgPyBEZXJpdmVkQ29udGV4dFR5cGU6OkRl
cml2ZWRNZXRob2RDb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICA6IGRlcml2ZWRDb250
ZXh0VHlwZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgRXZhbEV4
ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBl
dmFsU291cmNlLCBpblN0cmljdENvbnRleHQsIHRoaXNURFpNb2RlLCBkZXJpdmVkQ29udGV4dFR5
cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsICZ2YXJpYWJsZXNVbmRlclREWiwgd3JhcHBlZENv
ZGVCbG9ja0Rlcml2ZWRDb250ZXh0VHlwZSk7CiAKICAgICAgICAgICAgIGlmICghZXZhbEV4ZWN1
dGFibGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGE0NWQ1MDM5ZDNmYTJj
ZjMwNDIxNmMwMjQyZGJiODM0OWFjOWVkYWEuLmE5ZmYwNWY2YjViZTdmMzgyODUyZTE4OTM2MTYy
MTUwNDVmMDMyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVj
dXRhYmxlSW5mby5oCkBAIC0zNCw4ICszNCwxMiBAQCBlbnVtIGNsYXNzIERlcml2ZWRDb250ZXh0
VHlwZSA6IHVpbnQ4X3QgeyBOb25lLCBEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBEZXJpdgog
CiAvLyBGSVhNRTogVGhlc2UgZmxhZ3MsIFBhcnNlck1vZGVzIGFuZCBwcm9wYWdhdGlvbiB0byBY
WFhDb2RlQmxvY2tzIHNob3VsZCBiZSByZW9yZ2FuaXplZC4KIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKKy8vIEZJWE1FOiBDaGVjayBpZiBwb3NzaWJs
ZSB0byBkZWNyZWFzZSBudW1iZXIgb2YgZmxhZ3MuIEZvbGxvd2luZyBmbGFncyBjb25zdHJ1Y3Rv
cktpbmQsIHN1cGVyQmluZGluZywKKy8vIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNDbGFzc0NvbnRl
eHQgYW5kIHdyYXBwZWRDb2RlQmxvY0NvbnRleHRUeXBlIGFyZSB1c2luZyB0byBkZXNjcmliZSBj
bGFzcy4KKy8vIFBvc3NpYmxlIHNvbWUgb2YgdGhlbSBjYW4gYmUgcmVtb3ZlZAorLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzg2Mgogc3RydWN0IEV4ZWN1dGFi
bGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0
TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRU
eXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNDbGFzc0NvbnRleHQpCisg
ICAgRXhlY3V0YWJsZUluZm8oYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wg
aXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBEZXJpdmVkQ29udGV4
dFR5cGUgd3JhcHBlZENvZGVCbG9jQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5v
bmUpCiAgICAgICAgIDogbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0
TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0
b3IpCkBAIC00Niw2ICs1MCw3IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgICAgICwg
bV9kZXJpdmVkQ29udGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRDb250ZXh0
VHlwZSkpCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0KGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQpCiAgICAgICAgICwgbV9pc0NsYXNzQ29udGV4dChpc0NsYXNzQ29udGV4dCkKKyAg
ICAgICAgLCBtX3dyYXBwZWRDb2RlQmxvY0NvbnRleHRUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih3cmFwcGVkQ29kZUJsb2NDb250ZXh0VHlwZSkpCiAgICAgewogICAgICAgICBBU1NFUlQobV9j
b25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkp
OwogICAgICAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHN1cGVyQmluZGluZykpOwpAQCAtNTksNiArNjQsNyBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8g
ewogICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQogICAgIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogICAgIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxEZXJpdmVkQ29udGV4dFR5cGU+KG1fZGVyaXZlZENvbnRleHRUeXBlKTsgfQorICAgIERlcml2
ZWRDb250ZXh0VHlwZSB3cmFwcGVkQ29kZUJsb2NDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PERlcml2ZWRDb250ZXh0VHlwZT4obV93cmFwcGVkQ29kZUJsb2NDb250ZXh0
VHlwZSk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVy
biBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KICAgICBib29sIGlzQ2xhc3NDb250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9pc0NsYXNzQ29udGV4dDsgfQogCkBAIC03Myw2ICs3OSw3IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9kZXJpdmVkQ29udGV4dFR5cGUgOiAyOwogICAgIHVuc2ln
bmVkIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dCA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NsYXNz
Q29udGV4dCA6IDE7CisgICAgdW5zaWduZWQgbV93cmFwcGVkQ29kZUJsb2NDb250ZXh0VHlwZSA6
IDI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAppbmRleCA1OTY1OTE5M2RmNzg3N2I4MTJiMTg1YTYyNmYxYTg2ODg4MDk1YzQx
Li5hN2NjMGU2MDNiM2NkOThkNTllYzUxYzU0M2I3YWI0ODdkM2Q2N2ZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xOTQsOCArMTk0LDcgQEAgdm9pZCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6bG9nRXJyb3IoYm9vbCBzaG91bGRQcmludFRva2VuLCBjb25zdCBBJiB2
YWx1ZTEsIGNvbnN0IEIKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiBQYXJzZXI8TGV4
ZXJUeXBlPjo6UGFyc2VyKAogICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCAKLSAgICBKU1BhcnNlclN0cmljdE1vZGUg
c3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVy
QmluZGluZywKLSAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgVGhp
c1REWk1vZGUgdGhpc1REWk1vZGUpCisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUs
IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIENv
bnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCBUaGlzVERaTW9kZSB0aGlzVERa
TW9kZSwgU3VwZXJCaW5kaW5nIHdyYXBwZWRDb2RlQmxvY2tTdXBlckJpbmRpbmcsIENvbnN0cnVj
dG9yS2luZCB3cmFwcGVkQ29kZUJsb2NrQ29uc3RydWN0b3JLaW5kKQogICAgIDogbV92bSh2bSkK
ICAgICAsIG1fc291cmNlKCZzb3VyY2UpCiAgICAgLCBtX2hhc1N0YWNrT3ZlcmZsb3coZmFsc2Up
CkBAIC0yMTksNyArMjE4LDkgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcigKIAogICAgIFNj
b3BlUmVmIHNjb3BlID0gcHVzaFNjb3BlKCk7CiAgICAgc2NvcGUtPnNldFNvdXJjZVBhcnNlTW9k
ZShwYXJzZU1vZGUpOwotCisgICAgc2NvcGUtPnNldENvbnN0cnVjdG9yS2luZCh3cmFwcGVkQ29k
ZUJsb2NrQ29uc3RydWN0b3JLaW5kKTsKKyAgICBzY29wZS0+c2V0RXhwZWN0ZWRTdXBlckJpbmRp
bmcod3JhcHBlZENvZGVCbG9ja1N1cGVyQmluZGluZyk7CisgICAgCiAgICAgaWYgKHN0cmljdE1v
ZGUgPT0gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QpCiAgICAgICAgIHNjb3BlLT5zZXRTdHJp
Y3RNb2RlKCk7CiAKQEAgLTE5NzUsOCArMTk3Niw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxk
CiAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrOwog
ICAgIH0KIAotICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yID0gY29uc3RydWN0b3JLaW5kICE9
IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKLSAgICAKKyAgICBmdW5jdGlvblNjb3BlLT5zZXRDb25z
dHJ1Y3RvcktpbmQoY29uc3RydWN0b3JLaW5kKTsKKyAgICBmdW5jdGlvblNjb3BlLT5zZXRFeHBl
Y3RlZFN1cGVyQmluZGluZyhleHBlY3RlZFN1cGVyQmluZGluZyk7CisKICAgICBmdW5jdGlvbklu
Zm8uYm9keVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CiAgICAgCiAgICAgLy8gSWYgd2Uga25v
dyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHksIHdlIGNhbiB1c2UgdGhlIGNhY2hlZCBpbmZv
IGFuZCBza2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCkBAIC0yMDY1
LDEyICsyMDY3LDIxIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgIHNlbWFudGlj
RmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmZ1bmN0aW9uSW5m
by5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlk
IGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZU
cnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmZ1bmN0aW9uSW5mby5uYW1lLCAiJyIs
IGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5h
bWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICB9Ci0gICAgaWYgKGZ1bmN0aW9uU2NvcGUtPmhhc0Rp
cmVjdFN1cGVyKCkgJiYgZnVuY3Rpb25Cb2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJs
b2NrKSB7Ci0gICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSghaXNDbGFzc0NvbnN0cnVjdG9yLCAi
Q2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IiKTsKLSAg
ICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNvbnN0cnVjdG9yS2luZCAhPSBDb25zdHJ1Y3Rvcktp
bmQ6OkRlcml2ZWQsICJDYW5ub3QgY2FsbCBzdXBlcigpIGluIGEgYmFzZSBjbGFzcyBjb25zdHJ1
Y3RvciIpOworICAgIGlmICghbV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CisgICAg
ICAgIGlmIChmdW5jdGlvblNjb3BlLT5oYXNEaXJlY3RTdXBlcigpKSB7CisgICAgICAgICAgICBD
b25zdHJ1Y3RvcktpbmQgZnVuY3Rpb25Db25zdHJ1Y3RvcktpbmQgPSBmdW5jdGlvbkJvZHlUeXBl
ID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sKKyAgICAgICAgICAgICAgICA/IGNvbnN0cnVj
dG9yS2luZAorICAgICAgICAgICAgICAgIDogY2xvc2VzdFBhcmVudE5vbkFycm93RnVuY3Rpb25O
b25MZXhpY2FsU2NvcGUoKS0+Y29uc3RydWN0b3JLaW5kKCk7CisgICAgICAgICAgICBzZW1hbnRp
Y0ZhaWxJZlRydWUoZnVuY3Rpb25Db25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5kOjpO
b25lLCAiQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3Ii
KTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShmdW5jdGlvbkNvbnN0cnVjdG9yS2lu
ZCAhPSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQsICJDYW5ub3QgY2FsbCBzdXBlcigpIGluIGEg
YmFzZSBjbGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9CisgICAgICAgIGlmIChmdW5jdGlv
blNjb3BlLT5uZWVkc1N1cGVyQmluZGluZygpKSB7CisgICAgICAgICAgICBTdXBlckJpbmRpbmcg
ZnVuY3Rpb25TdXBlckJpbmRpbmcgPSBmdW5jdGlvbkJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rp
b25Cb2R5QmxvY2sKKyAgICAgICAgICAgICAgICA/IGV4cGVjdGVkU3VwZXJCaW5kaW5nCisgICAg
ICAgICAgICAgICAgOiBjbG9zZXN0UGFyZW50Tm9uQXJyb3dGdW5jdGlvbk5vbkxleGljYWxTY29w
ZSgpLT5leHBlY3RlZFN1cGVyQmluZGluZygpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZU
cnVlKGZ1bmN0aW9uU3VwZXJCaW5kaW5nID09IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCAic3Vw
ZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MiKTsKKyAg
ICAgICAgfQogICAgIH0KLSAgICBpZiAoZnVuY3Rpb25TY29wZS0+bmVlZHNTdXBlckJpbmRpbmco
KSAmJiBmdW5jdGlvbkJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2spCi0gICAg
ICAgIHNlbWFudGljRmFpbElmVHJ1ZShleHBlY3RlZFN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgInN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBk
ZXJpdmVkIGNsYXNzIik7CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24gPSBKU1Rva2Vu
TG9jYXRpb24obV90b2tlbi5tX2xvY2F0aW9uKTsKICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0
ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0OwpAQCAtMjA4Miw3ICsyMDkzLDkgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
SW5mbyhUcmVlQnVpbGQKICAgICAKICAgICAvLyBDYWNoZSB0aGUgdG9rZW5pemVyIHN0YXRlIGFu
ZCB0aGUgZnVuY3Rpb24gc2NvcGUgdGhlIGZpcnN0IHRpbWUgdGhlIGZ1bmN0aW9uIGlzIHBhcnNl
ZC4KICAgICAvLyBBbnkgZnV0dXJlIHJlcGFyc2luZyBjYW4gdGhlbiBza2lwIHRoZSBmdW5jdGlv
bi4KLSAgICBzdGF0aWMgY29uc3QgaW50IG1pbmltdW1GdW5jdGlvbkxlbmd0aFRvQ2FjaGUgPSAx
NjsKKyAgICAvLyBGb3IgYXJyb3cgZnVuY3Rpb24gaXMgMTAgPSAoKT0+KCkgKyA0IHN5bWJvbHM7
CisgICAgLy8gRm9yIG9yZGluYXJ5IGZ1bmN0aW9uIGlzIDE2ICA9IGZ1bmN0aW9uKCl7fSArIDQg
c3ltYm9scworICAgIGNvbnN0IGludCBtaW5pbXVtRnVuY3Rpb25MZW5ndGhUb0NhY2hlID0gZnVu
Y3Rpb25Cb2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrID8gMTYgOiA2OwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VQcm92aWRlckNhY2hlSXRlbT4gbmV3SW5mbzsKICAgICBp
bnQgZnVuY3Rpb25MZW5ndGggPSBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0IC0gZnVuY3Rpb25JbmZv
LnN0YXJ0T2Zmc2V0OwogICAgIGlmIChUcmVlQnVpbGRlcjo6Q2FuVXNlRnVuY3Rpb25DYWNoZSAm
JiBtX2Z1bmN0aW9uQ2FjaGUgJiYgZnVuY3Rpb25MZW5ndGggPiBtaW5pbXVtRnVuY3Rpb25MZW5n
dGhUb0NhY2hlKSB7CkBAIC0zNzc5LDcgKzM3OTIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJl
cwogICAgIH0KIAogICAgIGlmIChiYXNlSXNTdXBlcikgewotICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5pc0Z1bmN0aW9uKCksICJzdXBlciBpcyBvbmx5IHZhbGlk
IGluc2lkZSBmdW5jdGlvbnMiKTsKKyAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjdXJyZW50
U2NvcGUoKS0+aXNGdW5jdGlvbigpIHx8IGNsb3Nlc3RQYXJlbnROb25BcnJvd0Z1bmN0aW9uTm9u
TGV4aWNhbFNjb3BlKCktPmV4cGVjdGVkU3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpO
ZWVkZWQsICJzdXBlciBpcyBvbmx5IHZhbGlkIGluc2lkZSBmdW5jdGlvbnMiKTsKICAgICAgICAg
YmFzZSA9IGNvbnRleHQuY3JlYXRlU3VwZXJFeHByKGxvY2F0aW9uKTsKICAgICAgICAgbmV4dCgp
OwogICAgICAgICBjdXJyZW50RnVuY3Rpb25TY29wZSgpLT5zZXROZWVkc1N1cGVyQmluZGluZygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYjBiNTdiNGJmYTcwNDM4
YTI3ZTkxYjZhYzg0MDM1ZTliZjA4NTI4MS4uZmVlODc1OTMyNGYwYTAyYjZjNDU0M2EzZGY1ZTZi
YTk3ZGI1ZTBlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNzUs
NiArMTc1LDggQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFy
eShmYWxzZSkKICAgICAgICAgLCBtX2lzVmFsaWRTdHJpY3RNb2RlKHRydWUpCiAgICAgICAgICwg
bV9oYXNBcmd1bWVudHMoZmFsc2UpCisgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpCisgICAgICAgICwgbV9leHBl
Y3RlZFN1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU3VwZXJCaW5kaW5nOjpOb3RO
ZWVkZWQpKQogICAgICAgICAsIG1fbG9vcERlcHRoKDApCiAgICAgICAgICwgbV9zd2l0Y2hEZXB0
aCgwKQogICAgIHsKQEAgLTE5Nyw2ICsxOTksOCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAs
IG1faXNGdW5jdGlvbkJvdW5kYXJ5KHJocy5tX2lzRnVuY3Rpb25Cb3VuZGFyeSkKICAgICAgICAg
LCBtX2lzVmFsaWRTdHJpY3RNb2RlKHJocy5tX2lzVmFsaWRTdHJpY3RNb2RlKQogICAgICAgICAs
IG1faGFzQXJndW1lbnRzKHJocy5tX2hhc0FyZ3VtZW50cykKKyAgICAgICAgLCBtX2NvbnN0cnVj
dG9yS2luZChyaHMubV9jb25zdHJ1Y3RvcktpbmQpCisgICAgICAgICwgbV9leHBlY3RlZFN1cGVy
QmluZGluZyhyaHMubV9leHBlY3RlZFN1cGVyQmluZGluZykKICAgICAgICAgLCBtX2xvb3BEZXB0
aChyaHMubV9sb29wRGVwdGgpCiAgICAgICAgICwgbV9zd2l0Y2hEZXB0aChyaHMubV9zd2l0Y2hE
ZXB0aCkKICAgICAgICAgLCBtX21vZHVsZVNjb3BlRGF0YShyaHMubV9tb2R1bGVTY29wZURhdGEp
CkBAIC00NTgsNiArNDYyLDExIEBAIHN0cnVjdCBTY29wZSB7CiAKICAgICBib29sIG5lZWRzU3Vw
ZXJCaW5kaW5nKCkgeyByZXR1cm4gbV9uZWVkc1N1cGVyQmluZGluZzsgfQogICAgIHZvaWQgc2V0
TmVlZHNTdXBlckJpbmRpbmcoKSB7IG1fbmVlZHNTdXBlckJpbmRpbmcgPSB0cnVlOyB9CisgICAg
CisgICAgdm9pZCBzZXRFeHBlY3RlZFN1cGVyQmluZGluZyhTdXBlckJpbmRpbmcgc3VwZXJCaW5k
aW5nKSB7IG1fZXhwZWN0ZWRTdXBlckJpbmRpbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3Vw
ZXJCaW5kaW5nKTsgfQorICAgIFN1cGVyQmluZGluZyBleHBlY3RlZFN1cGVyQmluZGluZygpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9leHBlY3RlZFN1cGVyQmlu
ZGluZyk7IH0KKyAgICB2b2lkIHNldENvbnN0cnVjdG9yS2luZChDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKSB7IG1fY29uc3RydWN0b3JLaW5kID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGNvbnN0cnVjdG9yS2luZCk7IH0KKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVj
dG9yS2luZCk7IH0KIAogICAgIHZvaWQgY29sbGVjdEZyZWVWYXJpYWJsZXMoU2NvcGUqIG5lc3Rl
ZFNjb3BlLCBib29sIHNob3VsZFRyYWNrQ2xvc2VkVmFyaWFibGVzKQogICAgIHsKQEAgLTYxNCw2
ICs2MjMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0Z1bmN0aW9uQm91bmRhcnkgOiAxOwog
ICAgIGJvb2wgbV9pc1ZhbGlkU3RyaWN0TW9kZSA6IDE7CiAgICAgYm9vbCBtX2hhc0FyZ3VtZW50
cyA6IDE7CisgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1fZXhwZWN0ZWRTdXBlckJpbmRpbmcgOiAyOwogICAgIGludCBtX2xvb3BEZXB0aDsKICAgICBp
bnQgbV9zd2l0Y2hEZXB0aDsKIApAQCAtNjYzLDcgKzY3NCw4IEBAIGNsYXNzIFBhcnNlciB7CiBw
dWJsaWM6CiAgICAgUGFyc2VyKAogICAgICAgICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1Bh
cnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSwgU3Vw
ZXJCaW5kaW5nLAotICAgICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2lu
ZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgVGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hl
Y2tJZk5lZWRlZCk7CisgICAgICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JL
aW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCBUaGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpD
aGVja0lmTmVlZGVkLCAKKyAgICAgICAgU3VwZXJCaW5kaW5nID0gU3VwZXJCaW5kaW5nOjpOb3RO
ZWVkZWQsIENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSk7CiAgICAgflBh
cnNlcigpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+CkBAIC04NjUsNyArODc3
LDE3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFdoZW4gcmVhY2hpbmcgdGhlIHRvcCBsZXZlbCBz
Y29wZSAoaXQgY2FuIGJlIG5vbiBmdW5jdGlvbiBzY29wZSksIHdlIHJldHVybiBpdC4KICAgICAg
ICAgcmV0dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ssIGkpOwogICAgIH0KLQorICAgIAorICAg
IC8vIEZpbmQgdGhlIGNsb3Nlc3Qgbm90ICdhcnJvdyBmdW5jdGlvbicgZnVuY3Rpb24gc2NvcGUu
CisgICAgU2NvcGVSZWYgY2xvc2VzdFBhcmVudE5vbkFycm93RnVuY3Rpb25Ob25MZXhpY2FsU2Nv
cGUoKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAx
OworICAgICAgICBBU1NFUlQoaSA8IG1fc2NvcGVTdGFjay5zaXplKCkgJiYgbV9zY29wZVN0YWNr
LnNpemUoKSk7CisgICAgICAgIHdoaWxlIChpICYmICghbV9zY29wZVN0YWNrW2ldLmlzRnVuY3Rp
b25Cb3VuZGFyeSgpIHx8IG1fc2NvcGVTdGFja1tpXS5pc0Fycm93RnVuY3Rpb24oKSkpCisgICAg
ICAgICAgICBpLS07CisgICAgICAgIC8vIFdoZW4gcmVhY2hpbmcgdGhlIHRvcCBsZXZlbCBzY29w
ZSAoaXQgY2FuIGJlIG5vbiBmdW5jdGlvbiBzY29wZSksIHdlIHJldHVybiBpdC4KKyAgICAgICAg
cmV0dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ssIGkpOworICAgIH0KICAgICAKICAgICBTY29w
ZVJlZiBwdXNoU2NvcGUoKQogICAgIHsKQEAgLTE1MDgsMTQgKzE1MzAsMTYgQEAgc3RkOjp1bmlx
dWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEpT
UGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsCiAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0
cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJp
bmRpbmcsCiAgICAgUGFyc2VyRXJyb3ImIGVycm9yLCBKU1RleHRQb3NpdGlvbiogcG9zaXRpb25C
ZWZvcmVMYXN0TmV3bGluZSA9IG51bGxwdHIsCi0gICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRD
b25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsCi0gICAgVGhpc1REWk1vZGUg
dGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCkKKyAgICBDb25zdHJ1Y3Rv
cktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgCisg
ICAgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwK
KyAgICBTdXBlckJpbmRpbmcgd3JhcHBlZENvZGVCbG9ja1N1cGVyQmluZGluZyA9IFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLAorICAgIENvbnN0cnVjdG9yS2luZCB3cmFwcGVkQ29kZUJsb2NrQ29u
c3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lKQogewogICAgIFNhbXBsaW5nUmVn
aW9uIHNhbXBsaW5nUmVnaW9uKCJQYXJzaW5nIik7CiAKICAgICBBU1NFUlQoIXNvdXJjZS5wcm92
aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CiAgICAgaWYgKHNvdXJjZS5wcm92aWRlcigpLT5z
b3VyY2UoKS5pczhCaXQoKSkgewotICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIo
dm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5k
aW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CisgICAgICAgIFBhcnNl
cjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9k
ZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNU
RFpNb2RlLCB3cmFwcGVkQ29kZUJsb2NrU3VwZXJCaW5kaW5nLCB3cmFwcGVkQ29kZUJsb2NrQ29u
c3RydWN0b3JLaW5kKTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3Vs
dCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKICAg
ICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCAwZThk
NGEwN2IzMjM3ZDI5ODkwYzIxYzQ1MjkzNDU3YzUzZDA3ZWQxLi5lYzYxOGI1NGI3NGFlMDA1NGU2
MDEzMGIyNDQwM2IyMTNmMTYzMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVDYWNoZS5jcHAKQEAgLTk4LDExICs5OCwxNCBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUq
IENvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4
ZQogICAgICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZSh1bmxpbmtlZENvZGVCbG9jay0+Y29k
ZUZlYXR1cmVzKCksIHVubGlua2VkQ29kZUJsb2NrLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBm
aXJzdExpbmUsIGZpcnN0TGluZSArIGxpbmVDb3VudCwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbik7
CiAgICAgICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jazsKICAgICB9CisgICAgCisgICAgQ29u
c3RydWN0b3JLaW5kIGN1cnJlbnRDb2RlQmxvY2tDb25zdHJ1Y3RvcktpbmQgPSBleGVjdXRhYmxl
LT5leGVjdXRhYmxlSW5mbygpLmRlcml2ZWRDb250ZXh0VHlwZSgpID09IERlcml2ZWRDb250ZXh0
VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCA/IENvbnN0cnVjdG9yS2luZDo6RGVyaXZl
ZCA6IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKKyAgICBTdXBlckJpbmRpbmcgY3VycmVudENvZGVC
bG9ja1N1cGVyQmluZCA9IGV4ZWN1dGFibGUtPmV4ZWN1dGFibGVJbmZvKCkuZGVyaXZlZENvbnRl
eHRUeXBlKCkgIT0gIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSA/IFN1cGVyQmluZGluZzo6TmVl
ZGVkIDogU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQ7CiAKICAgICB0eXBlZGVmIHR5cGVuYW1lIENh
Y2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5vZGU7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFJvb3ROb2RlPiByb290Tm9kZSA9IHBhcnNlPFJvb3ROb2RlPigKICAg
ICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUs
Ci0gICAgICAgIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgdGhpc1REWk1vZGUpOworICAgICAgICBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2Nr
VHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLCBudWxscHRy
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlLCBjdXJyZW50Q29kZUJsb2NrU3Vw
ZXJCaW5kLCBjdXJyZW50Q29kZUJsb2NrQ29uc3RydWN0b3JLaW5kKTsKICAgICBpZiAoIXJvb3RO
b2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCBiOWI5NTE1MGVmMzBhYzkyODQ0NzNiZDM0ZTQ4
YzdjMmExNDU5MDg3Li5hOGMwMTEyNmI0NGVlNzE0MzRmMGY3MDZhMjFmM2IyOTdlMzY1M2FhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMTMx
LDcgKzEzMSw3IEBAIEludHJpbnNpYyBOYXRpdmVFeGVjdXRhYmxlOjppbnRyaW5zaWMoKSBjb25z
dAogCiBjb25zdCBDbGFzc0luZm8gU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvID0geyAiU2NyaXB0
RXhlY3V0YWJsZSIsICZFeGVjdXRhYmxlQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKFNjcmlwdEV4ZWN1dGFibGUpIH07CiAKLVNjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1
dGFibGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENv
bnRleHRUeXBlLCBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCkKK1NjcmlwdEV4ZWN1dGFi
bGU6OlNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFZNJiB2bSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4
dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCwg
RGVyaXZlZENvbnRleHRUeXBlIHBhcmVudEV2YWxEZXJpdmVkQ29udGV4dFR5cGUpCiAgICAgOiBF
eGVjdXRhYmxlQmFzZSh2bSwgc3RydWN0dXJlLCBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQp
CiAgICAgLCBtX2ZlYXR1cmVzKGlzSW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0TW9kZUZlYXR1cmUg
OiAwKQogICAgICwgbV9kaWRUcnlUb0VudGVySW5Mb29wKGZhbHNlKQpAQCAtMTQwLDYgKzE0MCw3
IEBAIFNjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFZNJiB2bSwgY29uc3QgU291cmNlQ29kCiAgICAgLCBtX25ldmVyT3B0aW1pemUoZmFsc2Up
CiAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQoaXNJbkFycm93RnVuY3Rpb25Db250ZXh0
KQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2
ZWRDb250ZXh0VHlwZSkpCisgICAgLCBtX3BhcmVudEV2YWxEZXJpdmVkQ29udGV4dFR5cGUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHBhcmVudEV2YWxEZXJpdmVkQ29udGV4dFR5cGUpKQogICAgICwg
bV9vdmVycmlkZUxpbmVOdW1iZXIoLTEpCiAgICAgLCBtX2ZpcnN0TGluZSgtMSkKICAgICAsIG1f
bGFzdExpbmUoLTEpCkBAIC00MTUsNyArNDE2LDcgQEAgSlNPYmplY3QqIFNjcmlwdEV4ZWN1dGFi
bGU6OnByZXBhcmVGb3JFeGVjdXRpb25JbXBsKAogCiBjb25zdCBDbGFzc0luZm8gRXZhbEV4ZWN1
dGFibGU6OnNfaW5mbyA9IHsgIkV2YWxFeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNf
aW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShFdmFsRXhlY3V0YWJsZSkgfTsKIAotRXZhbEV4
ZWN1dGFibGUqIEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlIHRo
aXNURFpNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxl
c1VuZGVyVERaKQorRXZhbEV4ZWN1dGFibGUqIEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRl
eHQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENv
bnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBEZXJpdmVkQ29udGV4dFR5cGUgcGFyZW50RXZh
bERlcml2ZWRDb250ZXh0VHlwZSkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5l
dmFsRW5hYmxlZCgpKSB7CkBAIC00MjMsNyArNDI0LDcgQEAgRXZhbEV4ZWN1dGFibGUqIEV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFdmFsRXhlY3V0YWJsZT4oKmV4ZWMt
PmhlYXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQs
IGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCk7CisgICAgRXZhbEV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFdmFsRXhl
Y3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJ
blN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgcGFyZW50RXZhbERlcml2ZWRDb250ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNo
Q3JlYXRpb24oZXhlYy0+dm0oKSk7CiAKICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIHVubGlu
a2VkRXZhbENvZGUgPSBnbG9iYWxPYmplY3QtPmNyZWF0ZUV2YWxDb2RlQmxvY2soZXhlYywgZXhl
Y3V0YWJsZSwgdGhpc1REWk1vZGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIHZhcmlhYmxlc1Vu
ZGVyVERaKTsKQEAgLTQzNSw4ICs0MzYsOCBAQCBFdmFsRXhlY3V0YWJsZSogRXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZQogICAg
IHJldHVybiBleGVjdXRhYmxlOwogfQogCi1FdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RD
b250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQpCi0gICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkuZXZh
bEV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgaW5TdHJpY3RD
b250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpCitFdmFs
RXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVy
aXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIERlcml2ZWRDb250
ZXh0VHlwZSBwYXJlbnRFdmFsRGVyaXZlZENvbnRleHRUeXBlKQorICAgIDogU2NyaXB0RXhlY3V0
YWJsZShleGVjLT52bSgpLmV2YWxFeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgp
LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVu
Y3Rpb25Db250ZXh0LCBwYXJlbnRFdmFsRGVyaXZlZENvbnRleHRUeXBlKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggM2EzZmQ4ZjQyOTc5
MWJhNzIyZGQ4NWYwZTAwN2FhMzljNThlNjgwZS4uMGYwMmI5YjUxMTgzOTZjMDJjNzI2NDMwYzg4
MzliYmZkMjM2Yzk2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaApAQCAtMzUxLDYgKzM1MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KICAg
ICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBTdHJpY3RN
b2RlRmVhdHVyZTsgfQogICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEZXJpdmVkQ29udGV4dFR5cGU+KG1fZGVyaXZl
ZENvbnRleHRUeXBlKTsgfQorICAgIERlcml2ZWRDb250ZXh0VHlwZSBwYXJlbnRFdmFsRGVyaXZl
ZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZENvbnRleHRU
eXBlPihtX3BhcmVudEV2YWxEZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAKICAgICBFQ01BTW9kZSBl
Y21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5v
dFN0cmljdE1vZGU7IH0KICAgICAgICAgCkBAIC00MDAsNyArNDAxLDcgQEAgcHJpdmF0ZToKICAg
ICBKU09iamVjdCogcHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoRXhlY1N0YXRlKiwgSlNGdW5jdGlv
biosIEpTU2NvcGUqLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKIAogcHJvdGVjdGVkOgotICAg
IFNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiwgVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9v
bCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzSW5BcnJvd0Z1
bmN0aW9uQ29udGV4dCk7CisgICAgU2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqLCBWTSYsIGNv
bnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5
cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgcGFy
ZW50RXZhbERlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSk7CiAK
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7CkBAIC00MjAsNyArNDIxLDcg
QEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9uZXZlck9wdGltaXplIDogMTsKICAgICBib29sIG1f
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCA6IDE7CiAgICAgdW5zaWduZWQgbV9kZXJpdmVkQ29udGV4
dFR5cGUgOiAyOyAvLyBEZXJpdmVkQ29udGV4dFR5cGUKLQorICAgIHVuc2lnbmVkIG1fcGFyZW50
RXZhbERlcml2ZWRDb250ZXh0VHlwZSA6IDI7IC8vIERlcml2ZWRDb250ZXh0VHlwZQogICAgIGlu
dCBtX292ZXJyaWRlTGluZU51bWJlcjsKICAgICBpbnQgbV9maXJzdExpbmU7CiAgICAgaW50IG1f
bGFzdExpbmU7CkBAIC00NDQsNyArNDQ1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9l
dmFsQ29kZUJsb2NrLmdldCgpOwogICAgIH0KIAotICAgIHN0YXRpYyBFdmFsRXhlY3V0YWJsZSog
Y3JlYXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250
ZXh0LCBUaGlzVERaTW9kZSwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBzdGF0aWMgRXZhbEV4
ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0lu
U3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiwgRGVyaXZlZENv
bnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lKTsKIAogICAgIFBhc3NSZWZQdHI8
SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCiAgICAgewpAQCAtNDU4LDcgKzQ1OSw3IEBAIHB1
YmxpYzoKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8g
ZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgp
LCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJp
dmVkQ29udGV4dFR5cGUoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpICwgZmFsc2UpOyB9Cisg
ICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRh
YmxlSW5mbyh1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6
OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCgpICwgZmFsc2UsIHBhcmVudEV2YWxEZXJpdmVkQ29udGV4dFR5cGUoKSk7IH0KIAogICAgIHVu
c2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5u
dW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsg
cmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsg
fQpAQCAtNDY3LDcgKzQ2OCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFi
bGVCYXNlOwogICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogCi0gICAgRXZhbEV4
ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250
ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCk7Cisg
ICAgRXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaW5T
dHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIHBhcmVudEV2YWxEZXJpdmVkQ29udGV4dFR5cGUgPSBE
ZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVycHJvcGVy
dHkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC1iaW5kLXN1cGVycHJvcGVydHkuanMKaW5kZXggMDUwZmU5MDU3MTliYTA4Njc5NzE0
YTM4MGI0MWNlMWEzNDVhZjUxNS4uYThiYWQxNWE4MmNkNzYyOWE0OTA4YTlkMTIyMjcwY2JiZmIw
ZDgxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcnByb3BlcnR5LmpzCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJw
cm9wZXJ0eS5qcwpAQCAtMTIzLDEyICsxMjMsNiBAQCB2YXIgRyA9IGNsYXNzIEcgZXh0ZW5kcyBB
IHsKICAgICAgZ2V0UGFyZW50VmFsdWUoKSB7CiAgICAgICAgICByZXR1cm4gc3VwZXIuZ2V0VmFs
dWUoKTsKICAgICAgfQotICAgICBnZXRQYXJlbnRWYWx1ZVdpdGhFcnJvcigpIHsKLSAgICAgICAg
IHZhciBmID0gIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICByZXR1cm4gKCkgPT4gc3VwZXIu
Z2V0VmFsdWUoKTsKLSAgICAgICAgIH07Ci0gICAgICAgICByZXR1cm4gZigpOwotICAgICB9CiAg
fTsKIAogIHZhciBnID0gbmV3IEcoKTsKQEAgLTE0OSwyMCArMTQzLDYgQEAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDsgaSsrKSB7CiAgICAgdGVzdENhc2UoZ2V0VmFsdWUoKSwgJ25ldy12YWx1
ZScsICdFcnJvcjogU29tZSBwcm9ibGVtIHdpdGggdXNpbmcgYXJyb3cgYW5kICJzdXBlciIgaW5z
aWRlIG9mIHRoZSBtZXRob2QgdGhhdCByZXR1biBhcnJvdyBmdW5jdGlvbicpOwogfQogCi12YXIg
ZzIgPSBuZXcgRygpOwotZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgbGV0
IGVycm9yID0gZmFsc2U7Ci0gICAgdHJ5IHsKLSAgICAgICBnMi5nZXRQYXJlbnRWYWx1ZVdpdGhF
cnJvcigpKCk7Ci0gICAgfSBjYXRjaChlKSB7Ci0gICAgICAvLyBGSVhNRTogc2hvdWxkIGJ5IGNo
ZWNrIGlmIGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvcgotICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDg5MwotICAgICAgZXJyb3IgPSB0cnVlOwotICAg
IH0KLSAgICB0ZXN0Q2FzZShlcnJvciwgdHJ1ZSwgJ0Vycm9yOiB1c2luZyAic3VwZXIiIHNob3Vs
ZCBsZWFkIHRvIGVycm9yJyk7Ci19Ci0KLQogdmFyIEggPSBjbGFzcyBIIGV4dGVuZHMgQSB7CiAg
ICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgIHZhciBhcnJvdyA9ICgpID0+ICgpID0+IHN1cGVy
LmdldFZhbHVlKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjc5NGNlYWFiYTE2OTYwZGU5MTEzMTcxOTRkOTY2MmYxMTNk
NTRlZi4uN2RiNDY1NDlmNDEzODY1NTZjYzM5YWJhYjdlMTI5ZDAwNzQ2ZWI1YSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDE2LTAyLTA0ICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZA
Z21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEFycm93IGZ1bmN0aW9uIHN5bnRheC4gVXNpbmcg
J3N1cGVyJyBpbiBhcnJvdyBmdW5jdGlvbiB0aGF0IGRlY2xhcmVkIG91dCBvZiB0aGUgY2xhc3Mg
c2hvdWxkIGxlYWQgdG8gU3ludGF4IGVycm9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA4OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAKKyAgICAgICAgQWRkaW5nIHRlc3RzIGZvciB1c2luZyBvZiB0aGUg
J3N1cGVyJyBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uCisgCisgICAgICAgICoganMvYXJy
b3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9hcnJv
d2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3Njcmlw
dC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanM6CisgICAgICAgICoganMvc2Ny
aXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy5qczoKKwogMjAxNi0wMS0yMSAg
U2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2
XSBBcnJvdyBmdW5jdGlvbi4gRGVmYXVsdCBhcmd1bWVudHMgaW4gYXJyb3cgZnVuY3Rpb25zCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHktZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LWV4
cGVjdGVkLnR4dAppbmRleCAzZGYyYzQ5NWZiOWZmMWUyNzYzMzBmMTUzYzE0MGJiNWZmNWY0OWQz
Li40NzZmOWQ0ZDFlZTg3OTc2YmNiNzQzOWNkYjBmNjE1YjY3YmI2NjdiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHktZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS1leHBlY3RlZC50
eHQKQEAgLTksNyArOSw2IEBAIFBBU1MgRS5nZXRQYXJlbnRTdGF0aWNWYWx1ZSgpIGlzIGV4cGVj
dGVkVmFsdWUKIFBBU1MgZi5wcm9wIGlzIGV4cGVjdGVkVmFsdWUgKyAiLSIgKyBleHBlY3RlZFZh
bHVlCiBQQVNTIGYucHJvcCBpcyBleHBlY3RlZFZhbHVlICsgIi0iICsgIm5ldy12YWx1ZSIKIFBB
U1MgKG5ldyBGKCkpLmdldFBhcmVudFZhbHVlKCkgaXMgZXhwZWN0ZWRWYWx1ZQotUEFTUyAobmV3
IEYoKSkuZ2V0UGFyZW50VmFsdWVXaXRoRXJyb3IoKSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdzdXBlci5nZXRWYWx1
ZScpLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXJyb3JzLWV4
cGVjdGVkLnR4dAppbmRleCA3NTUzZjQxYjlkMTg0NzgxOWZjNTY3NGRhZmQzMmE5ZGEwNDE5YWQ3
Li43ZGNmY2IwMzBmMjI2ZjcxYmE1ZjkxYzllZmI0NDFjNTdhNmUwZmM5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy1leHBlY3RlZC50
eHQKQEAgLTEzMSw2ICsxMzEsMTkgQEAgUEFTUyB2YXIgYXJyMSA9IFthLCBiXSA9PiBhICsgYjsg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcKIFBBU1MgdmFy
IGFycjIgPSB7YSwgYn0gPT4gYSArIGI7IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5l
eHBlY3RlZCB0b2tlbiAnPT4nLiBFeHBlY3RlZCAnOycgYWZ0ZXIgdmFyaWFibGUgZGVjbGFyYXRp
b24uLgogUEFTUyB2YXIgYXJyMyA9IHtjOmEsZDpifSA9PiBhICsgYjsgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc9PicuIEV4cGVjdGVkICc7JyBhZnRlciB2
YXJpYWJsZSBkZWNsYXJhdGlvbi4uCiBQQVNTIHZhciBhcnIzID0ge2M6YixkOmF9ID0+IGEgKyBi
OyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJz0+Jy4gRXhw
ZWN0ZWQgJzsnIGFmdGVyIHZhcmlhYmxlIGRlY2xhcmF0aW9uLi4KK1BBU1MgdmFyIGFycjQgPSAo
KSA9PiB7IHN1cGVyKCk7IH07IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IGNh
bGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IuLgorUEFTUyB2YXIgYXJy
NCA9ICgpID0+IHsgc3VwZXI7IH07IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90
IHJlZmVyZW5jZSBzdXBlci4uCitQQVNTIHZhciBhcnI1ID0gKCkgPT4geyBzdXBlci5nZXRWYWx1
ZSgpOyB9OyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IHN1cGVyIGNhbiBvbmx5IGJlIHVz
ZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzLi4KK1BBU1MgdmFyIGFycjYgPSAoKSA9
PiAgc3VwZXIoKTsgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBDYW5ub3QgY2FsbCBzdXBl
cigpIG91dHNpZGUgb2YgYSBjbGFzcyBjb25zdHJ1Y3Rvci4uCitQQVNTIHZhciBhcnI3ID0gKCkg
PT4gIHN1cGVyOyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IENhbm5vdCByZWZlcmVuY2Ug
c3VwZXIuLgorUEFTUyB2YXIgYXJyOCA9ICgpID0+ICBzdXBlci5nZXRWYWx1ZSgpOyB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IHN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qg
b2YgYSBkZXJpdmVkIGNsYXNzLi4KK1BBU1MgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkgeyBmdW5j
dGlvbiBhICgpIHsgcmV0dXJuICgpID0+IHsgc3VwZXIoKTsgfTt9fSB0aHJldyBleGNlcHRpb24g
U3ludGF4RXJyb3I6IENhbm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNzIGNvbnN0
cnVjdG9yLi4KK1BBU1MgY2xhc3MgQiB7IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlvbiBiICgpIHsg
cmV0dXJuICgpID0+IHsgc3VwZXI7IH07IH07IH19IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogQ2Fubm90IHJlZmVyZW5jZSBzdXBlci4uCitQQVNTIGNsYXNzIEMgeyBjb25zdHJ1Y3Rvcigp
IHsgZnVuY3Rpb24gYyAoKSB7IHJldHVybiAoKSA9PiB7IHN1cGVyLmdldFZhbHVlKCk7IH07fX0g
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBzdXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEg
bWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcy4uCitQQVNTIGNsYXNzIEQgeyBjb25zdHJ1Y3Rvcigp
IHsgZnVuY3Rpb24gYSAoKSB7IHJldHVybiAoKSA9PiBzdXBlcigpOyB9fSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IENhbm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNzIGNv
bnN0cnVjdG9yLi4KK1BBU1MgY2xhc3MgRSB7IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlvbiBiICgp
IHsgcmV0dXJuICgpID0+IHN1cGVyOyB9OyB9fSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IENhbm5vdCByZWZlcmVuY2Ugc3VwZXIuLgorUEFTUyBjbGFzcyBGIHsgY29uc3RydWN0b3IoKSB7
IGZ1bmN0aW9uIGMgKCkgeyByZXR1cm4gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsgfX0gdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBzdXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9k
IG9mIGEgZGVyaXZlZCBjbGFzcy4uCitQQVNTIGNsYXNzIEcge307IGNsYXNzIEcyIGV4dGVuZHMg
RyB7IGdldFZhbHVlKCkgeyBmdW5jdGlvbiBjICgpIHsgcmV0dXJuICgpID0+IHN1cGVyLmdldFZh
bHVlKCk7IH19IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogc3VwZXIgY2FuIG9ubHkgYmUg
dXNlZCBpbiBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MuLgogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LmpzIGIvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qcwppbmRleCBl
NWYyNDljYmJiZGEyODhmMTM3YTUyMzcwZjI2MTFjYjQxNTcxZmJlLi4yZjU4N2ZkNTcyMjY2YWM5
NmQ4M2RhMjFlNDk1NWUzMWYyNWU5NTc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LmpzCisrKyBiL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanMKQEAgLTYzLDEy
ICs2Myw2IEBAIGNsYXNzIEYgZXh0ZW5kcyBBIHsKICAgICAgICAgbGV0IGFycm93ID0gKCkgPT4g
KCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKICAgICAgICAgcmV0dXJuIGFycm93KCkoKTsKICAgICB9
Ci0gICAgZ2V0UGFyZW50VmFsdWVXaXRoRXJyb3IoKSB7Ci0gICAgICAgIHZhciBmID0gIGZ1bmN0
aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOwotICAg
ICAgICB9OwotICAgICAgICByZXR1cm4gZigpOwotICAgIH0KICB9OwogCiBzaG91bGRCZSgnKG5l
dyBCKCkpLmdldFZhbHVlUGFyZW50RnVuY3Rpb24oKScsICdleHBlY3RlZFZhbHVlJyk7CkBAIC05
MCw2ICs4NCw0IEBAIHNob3VsZEJlKCdmLnByb3AnLCAnZXhwZWN0ZWRWYWx1ZSArICItIiArICJu
ZXctdmFsdWUiJyk7CiAKIHNob3VsZEJlKCcobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWUoKScsICdl
eHBlY3RlZFZhbHVlJyk7CiAKLXNob3VsZFRocm93KCcobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWVX
aXRoRXJyb3IoKSgpJyk7Ci0KIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVy
cm9ycy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN5bnRh
eC1lcnJvcnMuanMKaW5kZXggNWEyMjYzNGM4NzUyNTI3ZTM4NDc0NTJhZjM2NjVhZDY3OGUyZmYx
Mi4uZThmMjRmNGZhZWFlN2QzMjYxMWYzZTliMjNmMGQwY2ZjZjA3NGFkNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy5q
cworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zeW50YXgt
ZXJyb3JzLmpzCkBAIC00OCw0ICs0OCwyMSBAQCBzaG91bGRUaHJvdygndmFyIGFycjIgPSB7YSwg
Yn0gPT4gYSArIGI7Jyk7CiBzaG91bGRUaHJvdygndmFyIGFycjMgPSB7YzphLGQ6Yn0gPT4gYSAr
IGI7Jyk7CiBzaG91bGRUaHJvdygndmFyIGFycjMgPSB7YzpiLGQ6YX0gPT4gYSArIGI7Jyk7CiAK
K3Nob3VsZFRocm93KCd2YXIgYXJyNCA9ICgpID0+IHsgc3VwZXIoKTsgfTsnLCAnIlN5bnRheEVy
cm9yOiBDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2YgYSBjbGFzcyBjb25zdHJ1Y3Rvci4i
Jyk7CitzaG91bGRUaHJvdygndmFyIGFycjQgPSAoKSA9PiB7IHN1cGVyOyB9OycsICciU3ludGF4
RXJyb3I6IENhbm5vdCByZWZlcmVuY2Ugc3VwZXIuIicpOworc2hvdWxkVGhyb3coJ3ZhciBhcnI1
ID0gKCkgPT4geyBzdXBlci5nZXRWYWx1ZSgpOyB9OycsICciU3ludGF4RXJyb3I6IHN1cGVyIGNh
biBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzLiInKTsKKworc2hv
dWxkVGhyb3coJ3ZhciBhcnI2ID0gKCkgPT4gIHN1cGVyKCk7JywgJyJTeW50YXhFcnJvcjogQ2Fu
bm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IuIicpOworc2hv
dWxkVGhyb3coJ3ZhciBhcnI3ID0gKCkgPT4gIHN1cGVyOycsICciU3ludGF4RXJyb3I6IENhbm5v
dCByZWZlcmVuY2Ugc3VwZXIuIicpOworc2hvdWxkVGhyb3coJ3ZhciBhcnI4ID0gKCkgPT4gIHN1
cGVyLmdldFZhbHVlKCk7JywgJyJTeW50YXhFcnJvcjogc3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBp
biBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MuIicpOworCitzaG91bGRUaHJvdygnY2xhc3Mg
QSB7IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlvbiBhICgpIHsgcmV0dXJuICgpID0+IHsgc3VwZXIo
KTsgfTt9fScsICciU3ludGF4RXJyb3I6IENhbm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBh
IGNsYXNzIGNvbnN0cnVjdG9yLiInKTsKK3Nob3VsZFRocm93KCdjbGFzcyBCIHsgY29uc3RydWN0
b3IoKSB7IGZ1bmN0aW9uIGIgKCkgeyByZXR1cm4gKCkgPT4geyBzdXBlcjsgfTsgfTsgfX0nLCAn
IlN5bnRheEVycm9yOiBDYW5ub3QgcmVmZXJlbmNlIHN1cGVyLiInKTsKK3Nob3VsZFRocm93KCdj
bGFzcyBDIHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9uIGMgKCkgeyByZXR1cm4gKCkgPT4geyBz
dXBlci5nZXRWYWx1ZSgpOyB9O319JywgJyJTeW50YXhFcnJvcjogc3VwZXIgY2FuIG9ubHkgYmUg
dXNlZCBpbiBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MuIicpOworCitzaG91bGRUaHJvdygn
Y2xhc3MgRCB7IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlvbiBhICgpIHsgcmV0dXJuICgpID0+IHN1
cGVyKCk7IH19JywgJyJTeW50YXhFcnJvcjogQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9m
IGEgY2xhc3MgY29uc3RydWN0b3IuIicpOworc2hvdWxkVGhyb3coJ2NsYXNzIEUgeyBjb25zdHJ1
Y3RvcigpIHsgZnVuY3Rpb24gYiAoKSB7IHJldHVybiAoKSA9PiBzdXBlcjsgfTsgfX0nLCAnIlN5
bnRheEVycm9yOiBDYW5ub3QgcmVmZXJlbmNlIHN1cGVyLiInKTsKK3Nob3VsZFRocm93KCdjbGFz
cyBGIHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9uIGMgKCkgeyByZXR1cm4gKCkgPT4gc3VwZXIu
Z2V0VmFsdWUoKTsgfX0nLCAnIlN5bnRheEVycm9yOiBzdXBlciBjYW4gb25seSBiZSB1c2VkIGlu
IGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcy4iJyk7CitzaG91bGRUaHJvdygnY2xhc3MgRyB7
fTsgY2xhc3MgRzIgZXh0ZW5kcyBHIHsgZ2V0VmFsdWUoKSB7IGZ1bmN0aW9uIGMgKCkgeyByZXR1
cm4gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsgfX0nLCAnIlN5bnRheEVycm9yOiBzdXBlciBjYW4g
b25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcy4iJyk7CisKIHZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270654</attachid>
            <date>2016-02-04 04:27:02 -0800</date>
            <delta_ts>2016-02-07 12:26:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150893-20160204142637.patch</filename>
            <type>text/plain</type>
            <size>36577</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2MDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NmM3NGZkNGEzMDI0MzQyZDc5MDY5NjBlZmJmZWI1YTRjYWRjOTU0Li5lNGE4MjZkOGRhZGY3ZDA1
YjIxZWJmODg4Mjk5MmJiMjM1MzdjMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxNi0wMi0wNCAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIFVzaW5nICdz
dXBlcicgaW4gYXJyb3cgZnVuY3Rpb24gdGhhdCBkZWNsYXJlZCBvdXQgb2YgdGhlIGNsYXNzIHNo
b3VsZCBsZWFkIHRvIFN5bnRheCBlcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgJ3N1cGVyJyBhbmQgJ3N1cGVyKCknIGluc2lkZSBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24gc2hvdWxkIGxlYWQgdG8gc3ludGF4IGVycm9yIGlmIHRoZXkgYXJlIHVzZWQg
CisgICAgICAgIG91dCBvZiB0aGUgY2xhc3MgY29udGV4dCBvciB0aGV5IHdyYXBwZWQgYnkgb3Jk
aW5hcnkgZnVuY3Rpb24uIE5vdyBKU0MgcmV0dXJucyBSZWZlcmVuY2VFcnJvciBidXQgCisgICAg
ICAgIHNob3VsZCByZXR1cm4gU3ludGF4RXJyb3IgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcg
c3BlY3M6CisgICAgICAgIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2
Mi82LjAvI3NlYy1mdW5jdGlvbi1kZWZpbml0aW9ucy1zdGF0aWMtc2VtYW50aWNzLWVhcmx5LWVy
cm9ycworICAgICAgICBhbmQgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLWFycm93LWZ1bmN0aW9uLWRlZmluaXRpb25zLXJ1bnRpbWUtc2VtYW50aWNz
LWV2YWx1YXRpb24gCisgICAgICAgIEN1cnJlbiBwYXRjaCBpbXBsZW1lbnRlZCBmb3IgdHdvIGNh
c2VzOgorICAgICAgICAxKSBpZiBzdXBlci9zdXBlcigpIGFyZSB1c2VkIGluc2lkZSBvZiB0aGUg
YXJyb3cgZnVuY3Rpb24KKyAgICAgICAgMikgaWYgc3VwZXIvc3VwZXIoKSBhcmUgdXNlZCBpbnNp
ZGUgb2YgdGhlIGV2YWwuIFRvIHN1cHBvcnQgdGhpcyBjYXNlIEkgaGFkIHRvIGFkZCBuZXcgYWRk
aXRpb25hbCBmbGFnIAorICAgICAgICB0byBFeGVjdXRhYmxlSW5mbyB0aGF0IGFsbG93IHRvIHNh
dmUgc3RhdGUgYW5kIHVzZSB0aGlzIHN0YXRlIGR1cmluZyBwYXJzaW5nIGluIGV2YWwuIEluIGN1
cnJlbnQgcGF0Y2ggaW1wbGVtZW50ZWQKKyAgICAgICAgb25seSBmb2xsb3dpbmcgY2FzZSB3aXRo
IG9uZSBldmFsOgorICAgICAgICAgICBjbGFzcyBBIHt9IAorICAgICAgICAgICBjbGFzcyBCIHsg
Y29zdHJ1Y3RvcigpIHsgZXZhbCgic3VwZXIoKSIpO30gCisgICAgICAgIEludm9raW5nIHN1cGVy
KCkvc3VwZXIgaW4gdHdvIG9yIG1vcmUgZXZhbHMgd2lsbCBiZSBwYXJ0IG9mIHRoZSBpc3N1ZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzODY0CisgIAorICAgICAg
ICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAg
KEpTQzo6U2NvcGU6OlNjb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldEV4cGVjdGVkU3Vw
ZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmV4cGVjdGVkU3VwZXJCaW5kaW5nKToK
KyAgICAgICAgKEpTQzo6U2NvcGU6OnNldENvbnN0cnVjdG9yS2luZCk6CisgICAgICAgIChKU0M6
OlNjb3BlOjpjb25zdHJ1Y3RvcktpbmQpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmN1cnJlbnRO
b3RBcnJvd2Z1bmN0aW9uRnVuY3Rpb25TY29wZSk6CisKKyAgICAgICAgKiBieXRlY29kZS9FdmFs
Q29kZUNhY2hlLmg6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6OmdldFNsb3cpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjp3
cmFwcGVkQ29kZUJsb2NDb250ZXh0VHlwZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpTY29wZSk6CisgICAgICAgIChKU0M6
OlNjb3BlOjpzZXRFeHBlY3RlZFN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpl
eHBlY3RlZFN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRDb25zdHJ1Y3Rv
cktpbmQpOgorICAgICAgICAoSlNDOjpTY29wZTo6Y29uc3RydWN0b3JLaW5kKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyOjpjbG9zZXN0UGFyZW50Tm9uQXJyb3dGdW5jdGlvbk5vbkxleGljYWxTY29w
ZSk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5j
cHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRh
YmxlOjpTY3JpcHRFeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZSk6Cisg
ICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1
dGFibGU6OnBhcmVudEV2YWxEZXJpdmVkQ29udGV4dFR5cGUpOgorICAgICAgICAqIHRlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcnByb3BlcnR5LmpzOgorCiAyMDE2
LTAxLTE5ICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAg
ICAgIFtFUzZdIEFycm93IGZ1bmN0aW9uIHN5bnRheC4gQXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMg
ZmVhdHVyZXMuIExleGljYWwgYmluZCAiYXJndW1lbnRzIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKaW5kZXggNjYzNDkwYWZiNDUyNDVjMzZmZjA1
ZDQ3ZWY4ODEzZGE1YTU5ZjUwMC4uNGVjMTkxNzBlOGI2MGE1OThjYmYzMTA5Y2JmYWZhODkxNGU3
MTE4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2Rl
Q2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNo
ZS5oCkBAIC01NCwxMiArNTQsMjMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
RXZhbEV4ZWN1dGFibGUqIGdldFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG93bmVyLCBi
b29sIGluU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIERlcml2ZWRDb250
ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwg
Y29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCisKKyAgICAgICAg
RXZhbEV4ZWN1dGFibGUqIGdldFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG93bmVyLCBi
b29sIGluU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIERlcml2ZWRDb250
ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwg
Y29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUsIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGlu
ZyBzdXBlckJpbmRpbmcgPSBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCkKICAgICAgICAgewogICAg
ICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICAgICAg
ICAgIEpTU2NvcGU6OmNvbGxlY3RWYXJpYWJsZXNVbmRlclREWihzY29wZSwgdmFyaWFibGVzVW5k
ZXJURFopOwotICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZh
bEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBldmFsU291cmNlLCBpblN0cmljdENvbnRleHQsIHRo
aXNURFpNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsICZ2
YXJpYWJsZXNVbmRlclREWik7CisKKyAgICAgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZSB3cmFw
cGVkQ29kZUJsb2NrRGVyaXZlZENvbnRleHRUeXBlID0gZGVyaXZlZENvbnRleHRUeXBlOworICAg
ICAgICAgICAgaWYgKHdyYXBwZWRDb2RlQmxvY2tEZXJpdmVkQ29udGV4dFR5cGUgPT0gRGVyaXZl
ZENvbnRleHRUeXBlOjpOb25lKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yS2lu
ZCAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpCisgICAgICAgICAgICAgICAgICAgIHdyYXBwZWRD
b2RlQmxvY2tEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRD
b25zdHJ1Y3RvckNvbnRleHQ7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICB3cmFwcGVkQ29kZUJsb2NrRGVyaXZlZENvbnRleHRUeXBlID0gc3VwZXJCaW5kaW5nID09
IFN1cGVyQmluZGluZzo6TmVlZGVkCisgICAgICAgICAgICAgICAgICAgICAgICA/IERlcml2ZWRD
b250ZXh0VHlwZTo6RGVyaXZlZE1ldGhvZENvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAg
IDogZGVyaXZlZENvbnRleHRUeXBlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICBFdmFsRXhlY3V0YWJsZSogZXZhbEV4ZWN1dGFibGUgPSBFdmFsRXhlY3V0YWJsZTo6
Y3JlYXRlKGV4ZWMsIGV2YWxTb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgdGhpc1REWk1vZGUsIGRl
cml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgJnZhcmlhYmxlc1VuZGVy
VERaLCB3cmFwcGVkQ29kZUJsb2NrRGVyaXZlZENvbnRleHRUeXBlKTsKIAogICAgICAgICAgICAg
aWYgKCFldmFsRXhlY3V0YWJsZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKaW5kZXgg
YTQ1ZDUwMzlkM2ZhMmNmMzA0MjE2YzAyNDJkYmI4MzQ5YWM5ZWRhYS4uYTlmZjA1ZjZiNWJlN2Yz
ODI4NTJlMTg5MzYxNjIxNTA0NWYwMzJhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKQEAgLTM0LDggKzM0LDEyIEBAIGVudW0gY2xhc3Mg
RGVyaXZlZENvbnRleHRUeXBlIDogdWludDhfdCB7IE5vbmUsIERlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQsIERlcml2CiAKIC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHBy
b3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVkLgogLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NworLy8gRklYTUU6IENo
ZWNrIGlmIHBvc3NpYmxlIHRvIGRlY3JlYXNlIG51bWJlciBvZiBmbGFncy4gRm9sbG93aW5nIGZs
YWdzIGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLAorLy8gZGVyaXZlZENvbnRleHRUeXBl
LCBpc0NsYXNzQ29udGV4dCBhbmQgd3JhcHBlZENvZGVCbG9jQ29udGV4dFR5cGUgYXJlIHVzaW5n
IHRvIGRlc2NyaWJlIGNsYXNzLgorLy8gUG9zc2libGUgc29tZSBvZiB0aGVtIGNhbiBiZSByZW1v
dmVkCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzODYyCiBz
dHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2YWws
IGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVu
Y3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBl
ckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBk
ZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0Ns
YXNzQ29udGV4dCkKKyAgICBFeGVjdXRhYmxlSW5mbyhib29sIHVzZXNFdmFsLCBib29sIGlzU3Ry
aWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25z
dHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRl
eHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNDbGFzc0NvbnRleHQs
IERlcml2ZWRDb250ZXh0VHlwZSB3cmFwcGVkQ29kZUJsb2NDb250ZXh0VHlwZSA9IERlcml2ZWRD
b250ZXh0VHlwZTo6Tm9uZSkKICAgICAgICAgOiBtX3VzZXNFdmFsKHVzZXNFdmFsKQogICAgICAg
ICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAgLCBtX2lzQ29uc3RydWN0
b3IoaXNDb25zdHJ1Y3RvcikKQEAgLTQ2LDYgKzUwLDcgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZv
IHsKICAgICAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZGVyaXZlZENvbnRleHRUeXBlKSkKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQo
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKICAgICAgICAgLCBtX2lzQ2xhc3NDb250ZXh0KGlzQ2xh
c3NDb250ZXh0KQorICAgICAgICAsIG1fd3JhcHBlZENvZGVCbG9jQ29udGV4dFR5cGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHdyYXBwZWRDb2RlQmxvY0NvbnRleHRUeXBlKSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29u
c3RydWN0b3JLaW5kKSk7CiAgICAgICAgIEFTU0VSVChtX3N1cGVyQmluZGluZyA9PSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSk7CkBAIC01OSw2ICs2NCw3IEBAIHN0cnVjdCBF
eGVjdXRhYmxlSW5mbyB7CiAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CiAgICAg
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9
CiAgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PERlcml2ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUp
OyB9CisgICAgRGVyaXZlZENvbnRleHRUeXBlIHdyYXBwZWRDb2RlQmxvY0NvbnRleHRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZENvbnRleHRUeXBlPihtX3dyYXBwZWRD
b2RlQmxvY0NvbnRleHRUeXBlKTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQogICAgIGJvb2wgaXND
bGFzc0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xhc3NDb250ZXh0OyB9CiAKQEAgLTcz
LDYgKzc5LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2Rlcml2ZWRDb250ZXh0VHlwZSA6
IDI7CiAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0IDogMTsKICAgICB1bnNp
Z25lZCBtX2lzQ2xhc3NDb250ZXh0IDogMTsKKyAgICB1bnNpZ25lZCBtX3dyYXBwZWRDb2RlQmxv
Y0NvbnRleHRUeXBlIDogMjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDU5NjU5MTkzZGY3ODc3YjgxMmIxODVhNjI2
ZjFhODY4ODgwOTVjNDEuLmE3Y2MwZTYwM2IzY2Q5OGQ1OWVjNTFjNTQzYjdhYjQ4N2QzZDY3ZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTE5NCw4ICsxOTQs
NyBAQCB2b2lkIFBhcnNlcjxMZXhlclR5cGU+Ojpsb2dFcnJvcihib29sIHNob3VsZFByaW50VG9r
ZW4sIGNvbnN0IEEmIHZhbHVlMSwgY29uc3QgQgogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4KIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoCiAgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIAotICAgIEpTUGFy
c2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBTdXBl
ckJpbmRpbmcgc3VwZXJCaW5kaW5nLAotICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3Ry
dWN0b3JLaW5kLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSkKKyAgICBKU1BhcnNlclN0cmljdE1v
ZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nIHN1
cGVyQmluZGluZywgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIFRoaXNU
RFpNb2RlIHRoaXNURFpNb2RlLCBTdXBlckJpbmRpbmcgd3JhcHBlZENvZGVCbG9ja1N1cGVyQmlu
ZGluZywgQ29uc3RydWN0b3JLaW5kIHdyYXBwZWRDb2RlQmxvY2tDb25zdHJ1Y3RvcktpbmQpCiAg
ICAgOiBtX3ZtKHZtKQogICAgICwgbV9zb3VyY2UoJnNvdXJjZSkKICAgICAsIG1faGFzU3RhY2tP
dmVyZmxvdyhmYWxzZSkKQEAgLTIxOSw3ICsyMTgsOSBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFy
c2VyKAogCiAgICAgU2NvcGVSZWYgc2NvcGUgPSBwdXNoU2NvcGUoKTsKICAgICBzY29wZS0+c2V0
U291cmNlUGFyc2VNb2RlKHBhcnNlTW9kZSk7Ci0KKyAgICBzY29wZS0+c2V0Q29uc3RydWN0b3JL
aW5kKHdyYXBwZWRDb2RlQmxvY2tDb25zdHJ1Y3RvcktpbmQpOworICAgIHNjb3BlLT5zZXRFeHBl
Y3RlZFN1cGVyQmluZGluZyh3cmFwcGVkQ29kZUJsb2NrU3VwZXJCaW5kaW5nKTsKKyAgICAKICAg
ICBpZiAoc3RyaWN0TW9kZSA9PSBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCkKICAgICAgICAg
c2NvcGUtPnNldFN0cmljdE1vZGUoKTsKIApAQCAtMTk3NSw4ICsxOTc2LDkgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
SW5mbyhUcmVlQnVpbGQKICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rp
b25Cb2R5QmxvY2s7CiAgICAgfQogCi0gICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBjb25z
dHJ1Y3RvcktpbmQgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOwotICAgIAorICAgIGZ1bmN0aW9u
U2NvcGUtPnNldENvbnN0cnVjdG9yS2luZChjb25zdHJ1Y3RvcktpbmQpOworICAgIGZ1bmN0aW9u
U2NvcGUtPnNldEV4cGVjdGVkU3VwZXJCaW5kaW5nKGV4cGVjdGVkU3VwZXJCaW5kaW5nKTsKKwog
ICAgIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKICAgICAKICAg
ICAvLyBJZiB3ZSBrbm93IGFib3V0IHRoaXMgZnVuY3Rpb24gYWxyZWFkeSwgd2UgY2FuIHVzZSB0
aGUgY2FjaGVkIGluZm8gYW5kIHNraXAgdGhlIHBhcnNlciB0byB0aGUgZW5kIG9mIHRoZSBmdW5j
dGlvbi4KQEAgLTIwNjUsMTIgKzIwNjcsMjEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAg
ICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9
PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicg
aXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBz
ZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqZnVuY3Rpb25J
bmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFs
aWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0KLSAgICBpZiAoZnVuY3Rp
b25TY29wZS0+aGFzRGlyZWN0U3VwZXIoKSAmJiBmdW5jdGlvbkJvZHlUeXBlID09IFN0YW5kYXJk
RnVuY3Rpb25Cb2R5QmxvY2spIHsKLSAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCFpc0NsYXNz
Q29uc3RydWN0b3IsICJDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2YgYSBjbGFzcyBjb25z
dHJ1Y3RvciIpOwotICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY29uc3RydWN0b3JLaW5kICE9
IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCwgIkNhbm5vdCBjYWxsIHN1cGVyKCkgaW4gYSBiYXNl
IGNsYXNzIGNvbnN0cnVjdG9yIik7CisgICAgaWYgKCFtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0
aW9uKCkpIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uU2NvcGUtPmhhc0RpcmVjdFN1cGVyKCkpIHsK
KyAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCBmdW5jdGlvbkNvbnN0cnVjdG9yS2luZCA9IGZ1
bmN0aW9uQm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jaworICAgICAgICAgICAg
ICAgID8gY29uc3RydWN0b3JLaW5kCisgICAgICAgICAgICAgICAgOiBjbG9zZXN0UGFyZW50Tm9u
QXJyb3dGdW5jdGlvbk5vbkxleGljYWxTY29wZSgpLT5jb25zdHJ1Y3RvcktpbmQoKTsKKyAgICAg
ICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShmdW5jdGlvbkNvbnN0cnVjdG9yS2luZCA9PSBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsICJDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2YgYSBjbGFz
cyBjb25zdHJ1Y3RvciIpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGZ1bmN0aW9u
Q29uc3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCwgIkNhbm5vdCBjYWxs
IHN1cGVyKCkgaW4gYSBiYXNlIGNsYXNzIGNvbnN0cnVjdG9yIik7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGZ1bmN0aW9uU2NvcGUtPm5lZWRzU3VwZXJCaW5kaW5nKCkpIHsKKyAgICAgICAgICAg
IFN1cGVyQmluZGluZyBmdW5jdGlvblN1cGVyQmluZGluZyA9IGZ1bmN0aW9uQm9keVR5cGUgPT0g
U3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jaworICAgICAgICAgICAgICAgID8gZXhwZWN0ZWRTdXBl
ckJpbmRpbmcKKyAgICAgICAgICAgICAgICA6IGNsb3Nlc3RQYXJlbnROb25BcnJvd0Z1bmN0aW9u
Tm9uTGV4aWNhbFNjb3BlKCktPmV4cGVjdGVkU3VwZXJCaW5kaW5nKCk7CisgICAgICAgICAgICBz
ZW1hbnRpY0ZhaWxJZlRydWUoZnVuY3Rpb25TdXBlckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpO
b3ROZWVkZWQsICJzdXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZl
ZCBjbGFzcyIpOworICAgICAgICB9CiAgICAgfQotICAgIGlmIChmdW5jdGlvblNjb3BlLT5uZWVk
c1N1cGVyQmluZGluZygpICYmIGZ1bmN0aW9uQm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJv
ZHlCbG9jaykKLSAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGV4cGVjdGVkU3VwZXJCaW5kaW5n
ID09IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCAic3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBh
IG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MiKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbiA9IEpTVG9rZW5Mb2NhdGlvbihtX3Rva2VuLm1fbG9jYXRpb24pOwogICAgIGZ1bmN0aW9u
SW5mby5lbmRPZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CkBAIC0yMDgyLDcgKzIwOTMs
OSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAgIAogICAgIC8vIENhY2hlIHRoZSB0b2tl
bml6ZXIgc3RhdGUgYW5kIHRoZSBmdW5jdGlvbiBzY29wZSB0aGUgZmlyc3QgdGltZSB0aGUgZnVu
Y3Rpb24gaXMgcGFyc2VkLgogICAgIC8vIEFueSBmdXR1cmUgcmVwYXJzaW5nIGNhbiB0aGVuIHNr
aXAgdGhlIGZ1bmN0aW9uLgotICAgIHN0YXRpYyBjb25zdCBpbnQgbWluaW11bUZ1bmN0aW9uTGVu
Z3RoVG9DYWNoZSA9IDE2OworICAgIC8vIEZvciBhcnJvdyBmdW5jdGlvbiBpcyAxMCA9ICgpPT4o
KSArIDQgc3ltYm9sczsKKyAgICAvLyBGb3Igb3JkaW5hcnkgZnVuY3Rpb24gaXMgMTYgID0gZnVu
Y3Rpb24oKXt9ICsgNCBzeW1ib2xzCisgICAgY29uc3QgaW50IG1pbmltdW1GdW5jdGlvbkxlbmd0
aFRvQ2FjaGUgPSBmdW5jdGlvbkJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sg
PyAxNiA6IDY7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtPiBu
ZXdJbmZvOwogICAgIGludCBmdW5jdGlvbkxlbmd0aCA9IGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQg
LSBmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQ7CiAgICAgaWYgKFRyZWVCdWlsZGVyOjpDYW5Vc2VG
dW5jdGlvbkNhY2hlICYmIG1fZnVuY3Rpb25DYWNoZSAmJiBmdW5jdGlvbkxlbmd0aCA+IG1pbmlt
dW1GdW5jdGlvbkxlbmd0aFRvQ2FjaGUpIHsKQEAgLTM3NzksNyArMzc5Miw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlTWVtYmVyRXhwcmVzCiAgICAgfQogCiAgICAgaWYgKGJhc2VJc1N1cGVyKSB7Ci0gICAgICAg
IHNlbWFudGljRmFpbElmRmFsc2UoY3VycmVudFNjb3BlKCktPmlzRnVuY3Rpb24oKSwgInN1cGVy
IGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucyIpOworICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5pc0Z1bmN0aW9uKCkgfHwgY2xvc2VzdFBhcmVudE5vbkFy
cm93RnVuY3Rpb25Ob25MZXhpY2FsU2NvcGUoKS0+ZXhwZWN0ZWRTdXBlckJpbmRpbmcoKSA9PSBT
dXBlckJpbmRpbmc6Ok5lZWRlZCwgInN1cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9u
cyIpOwogICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVTdXBlckV4cHIobG9jYXRpb24pOwog
ICAgICAgICBuZXh0KCk7CiAgICAgICAgIGN1cnJlbnRGdW5jdGlvblNjb3BlKCktPnNldE5lZWRz
U3VwZXJCaW5kaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBi
MGI1N2I0YmZhNzA0MzhhMjdlOTFiNmFjODQwMzVlOWJmMDg1MjgxLi5mZWU4NzU5MzI0ZjBhMDJi
NmM0NTQzYTNkZjVlNmJhOTdkYjVlMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmgKQEAgLTE3NSw2ICsxNzUsOCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAsIG1faXNG
dW5jdGlvbkJvdW5kYXJ5KGZhbHNlKQogICAgICAgICAsIG1faXNWYWxpZFN0cmljdE1vZGUodHJ1
ZSkKICAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhmYWxzZSkKKyAgICAgICAgLCBtX2NvbnN0cnVj
dG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ29uc3RydWN0b3JLaW5kOjpOb25lKSkKKyAg
ICAgICAgLCBtX2V4cGVjdGVkU3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCkpCiAgICAgICAgICwgbV9sb29wRGVwdGgoMCkKICAgICAgICAg
LCBtX3N3aXRjaERlcHRoKDApCiAgICAgewpAQCAtMTk3LDYgKzE5OSw4IEBAIHN0cnVjdCBTY29w
ZSB7CiAgICAgICAgICwgbV9pc0Z1bmN0aW9uQm91bmRhcnkocmhzLm1faXNGdW5jdGlvbkJvdW5k
YXJ5KQogICAgICAgICAsIG1faXNWYWxpZFN0cmljdE1vZGUocmhzLm1faXNWYWxpZFN0cmljdE1v
ZGUpCiAgICAgICAgICwgbV9oYXNBcmd1bWVudHMocmhzLm1faGFzQXJndW1lbnRzKQorICAgICAg
ICAsIG1fY29uc3RydWN0b3JLaW5kKHJocy5tX2NvbnN0cnVjdG9yS2luZCkKKyAgICAgICAgLCBt
X2V4cGVjdGVkU3VwZXJCaW5kaW5nKHJocy5tX2V4cGVjdGVkU3VwZXJCaW5kaW5nKQogICAgICAg
ICAsIG1fbG9vcERlcHRoKHJocy5tX2xvb3BEZXB0aCkKICAgICAgICAgLCBtX3N3aXRjaERlcHRo
KHJocy5tX3N3aXRjaERlcHRoKQogICAgICAgICAsIG1fbW9kdWxlU2NvcGVEYXRhKHJocy5tX21v
ZHVsZVNjb3BlRGF0YSkKQEAgLTQ1OCw2ICs0NjIsMTEgQEAgc3RydWN0IFNjb3BlIHsKIAogICAg
IGJvb2wgbmVlZHNTdXBlckJpbmRpbmcoKSB7IHJldHVybiBtX25lZWRzU3VwZXJCaW5kaW5nOyB9
CiAgICAgdm9pZCBzZXROZWVkc1N1cGVyQmluZGluZygpIHsgbV9uZWVkc1N1cGVyQmluZGluZyA9
IHRydWU7IH0KKyAgICAKKyAgICB2b2lkIHNldEV4cGVjdGVkU3VwZXJCaW5kaW5nKFN1cGVyQmlu
ZGluZyBzdXBlckJpbmRpbmcpIHsgbV9leHBlY3RlZFN1cGVyQmluZGluZyA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpOyB9CisgICAgU3VwZXJCaW5kaW5nIGV4cGVjdGVkU3Vw
ZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX2V4
cGVjdGVkU3VwZXJCaW5kaW5nKTsgfQorICAgIHZvaWQgc2V0Q29uc3RydWN0b3JLaW5kKENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQpIHsgbV9jb25zdHJ1Y3RvcktpbmQgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKTsgfQorICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQogCiAgICAgdm9pZCBjb2xsZWN0RnJlZVZhcmlhYmxl
cyhTY29wZSogbmVzdGVkU2NvcGUsIGJvb2wgc2hvdWxkVHJhY2tDbG9zZWRWYXJpYWJsZXMpCiAg
ICAgewpAQCAtNjE0LDYgKzYyMyw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRnVuY3Rpb25C
b3VuZGFyeSA6IDE7CiAgICAgYm9vbCBtX2lzVmFsaWRTdHJpY3RNb2RlIDogMTsKICAgICBib29s
IG1faGFzQXJndW1lbnRzIDogMTsKKyAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7
CisgICAgdW5zaWduZWQgbV9leHBlY3RlZFN1cGVyQmluZGluZyA6IDI7CiAgICAgaW50IG1fbG9v
cERlcHRoOwogICAgIGludCBtX3N3aXRjaERlcHRoOwogCkBAIC02NjMsNyArNjc0LDggQEAgY2xh
c3MgUGFyc2VyIHsKIHB1YmxpYzoKICAgICBQYXJzZXIoCiAgICAgICAgIFZNKiwgY29uc3QgU291
cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgU291cmNl
UGFyc2VNb2RlLCBTdXBlckJpbmRpbmcsCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0
Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCBUaGlzVERaTW9kZSA9IFRo
aXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKTsKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1
bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFRoaXNURFpNb2RlID0g
VGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQsIAorICAgICAgICBTdXBlckJpbmRpbmcgPSBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpO
b25lKTsKICAgICB+UGFyc2VyKCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4K
QEAgLTg2NSw3ICs4NzcsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gV2hlbiByZWFjaGluZyB0
aGUgdG9wIGxldmVsIHNjb3BlIChpdCBjYW4gYmUgbm9uIGZ1bmN0aW9uIHNjb3BlKSwgd2UgcmV0
dXJuIGl0LgogICAgICAgICByZXR1cm4gU2NvcGVSZWYoJm1fc2NvcGVTdGFjaywgaSk7CiAgICAg
fQotCisgICAgCisgICAgLy8gRmluZCB0aGUgY2xvc2VzdCBub3QgJ2Fycm93IGZ1bmN0aW9uJyBm
dW5jdGlvbiBzY29wZS4KKyAgICBTY29wZVJlZiBjbG9zZXN0UGFyZW50Tm9uQXJyb3dGdW5jdGlv
bk5vbkxleGljYWxTY29wZSgpCisgICAgeworICAgICAgICB1bnNpZ25lZCBpID0gbV9zY29wZVN0
YWNrLnNpemUoKSAtIDE7CisgICAgICAgIEFTU0VSVChpIDwgbV9zY29wZVN0YWNrLnNpemUoKSAm
JiBtX3Njb3BlU3RhY2suc2l6ZSgpKTsKKyAgICAgICAgd2hpbGUgKGkgJiYgKCFtX3Njb3BlU3Rh
Y2tbaV0uaXNGdW5jdGlvbkJvdW5kYXJ5KCkgfHwgbV9zY29wZVN0YWNrW2ldLmlzQXJyb3dGdW5j
dGlvbigpKSkKKyAgICAgICAgICAgIGktLTsKKyAgICAgICAgLy8gV2hlbiByZWFjaGluZyB0aGUg
dG9wIGxldmVsIHNjb3BlIChpdCBjYW4gYmUgbm9uIGZ1bmN0aW9uIHNjb3BlKSwgd2UgcmV0dXJu
IGl0LgorICAgICAgICByZXR1cm4gU2NvcGVSZWYoJm1fc2NvcGVTdGFjaywgaSk7CisgICAgfQog
ICAgIAogICAgIFNjb3BlUmVmIHB1c2hTY29wZSgpCiAgICAgewpAQCAtMTUwOCwxNCArMTUzMCwx
NiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwKICAgICBKU1BhcnNl
clN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgU3VwZXJC
aW5kaW5nIHN1cGVyQmluZGluZywKICAgICBQYXJzZXJFcnJvciYgZXJyb3IsIEpTVGV4dFBvc2l0
aW9uKiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gbnVsbHB0ciwKLSAgICBDb25zdHJ1Y3Rv
cktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwKLSAg
ICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQor
ICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JL
aW5kOjpOb25lLCAKKyAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpD
aGVja0lmTmVlZGVkLAorICAgIFN1cGVyQmluZGluZyB3cmFwcGVkQ29kZUJsb2NrU3VwZXJCaW5k
aW5nID0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsCisgICAgQ29uc3RydWN0b3JLaW5kIHdyYXBw
ZWRDb2RlQmxvY2tDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpCiB7CiAg
ICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIlBhcnNpbmciKTsKIAogICAgIEFTU0VS
VCghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgpKTsKICAgICBpZiAoc291cmNl
LnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7Ci0gICAgICAgIFBhcnNlcjxMZXhlcjxM
Q2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VN
b2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsK
KyAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5N
b2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVj
dG9yS2luZCwgdGhpc1REWk1vZGUsIHdyYXBwZWRDb2RlQmxvY2tTdXBlckJpbmRpbmcsIHdyYXBw
ZWRDb2RlQmxvY2tDb25zdHJ1Y3RvcktpbmQpOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFy
c2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBw
YXJzZU1vZGUpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAg
ICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
Y3BwCmluZGV4IDBlOGQ0YTA3YjMyMzdkMjk4OTBjMjFjNDUyOTM0NTdjNTNkMDdlZDEuLmVjNjE4
YjU0Yjc0YWUwMDU0ZTYwMTMwYjI0NDAzYjIxM2YxNjMyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtOTgsMTEgKzk4LDE0IEBAIFVubGlua2Vk
Q29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRHbG9iYWxDb2RlQmxvY2soVk0mIHZtLCBFeGVj
dXRhYmxlVHlwZSogZXhlCiAgICAgICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKHVubGlua2Vk
Q29kZUJsb2NrLT5jb2RlRmVhdHVyZXMoKSwgdW5saW5rZWRDb2RlQmxvY2stPmhhc0NhcHR1cmVk
VmFyaWFibGVzKCksIGZpcnN0TGluZSwgZmlyc3RMaW5lICsgbGluZUNvdW50LCBzdGFydENvbHVt
biwgZW5kQ29sdW1uKTsKICAgICAgICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrOwogICAgIH0K
KyAgICAKKyAgICBDb25zdHJ1Y3RvcktpbmQgY3VycmVudENvZGVCbG9ja0NvbnN0cnVjdG9yS2lu
ZCA9IGV4ZWN1dGFibGUtPmV4ZWN1dGFibGVJbmZvKCkuZGVyaXZlZENvbnRleHRUeXBlKCkgPT0g
RGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0ID8gQ29uc3RydWN0
b3JLaW5kOjpEZXJpdmVkIDogQ29uc3RydWN0b3JLaW5kOjpOb25lOworICAgIFN1cGVyQmluZGlu
ZyBjdXJyZW50Q29kZUJsb2NrU3VwZXJCaW5kID0gZXhlY3V0YWJsZS0+ZXhlY3V0YWJsZUluZm8o
KS5kZXJpdmVkQ29udGV4dFR5cGUoKSAhPSAgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lID8gU3Vw
ZXJCaW5kaW5nOjpOZWVkZWQgOiBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZDsKIAogICAgIHR5cGVk
ZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBS
b290Tm9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8
Um9vdE5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBidWlsdGluTW9k
ZSwgc3RyaWN0TW9kZSwKLSAgICAgICAgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+
OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7CisgICAgICAgIENhY2hlVHlwZXM8VW5s
aW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwg
ZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUsIGN1cnJl
bnRDb2RlQmxvY2tTdXBlckJpbmQsIGN1cnJlbnRDb2RlQmxvY2tDb25zdHJ1Y3RvcktpbmQpOwog
ICAgIGlmICghcm9vdE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IGI5Yjk1MTUwZWYzMGFj
OTI4NDQ3M2JkMzRlNDhjN2MyYTE0NTkwODcuLmE4YzAxMTI2YjQ0ZWU3MTQzNGYwZjcwNmEyMWYz
YjI5N2UzNjUzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgSW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6Omlu
dHJpbnNpYygpIGNvbnN0CiAKIGNvbnN0IENsYXNzSW5mbyBTY3JpcHRFeGVjdXRhYmxlOjpzX2lu
Zm8gPSB7ICJTY3JpcHRFeGVjdXRhYmxlIiwgJkV4ZWN1dGFibGVCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoU2NyaXB0RXhlY3V0YWJsZSkgfTsKIAotU2NyaXB0RXhlY3V0YWJs
ZTo6U2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVk0mIHZtLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0
VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0KQor
U2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Vk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQs
IERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVu
Y3Rpb25Db250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgcGFyZW50RXZhbERlcml2ZWRDb250ZXh0
VHlwZSkKICAgICA6IEV4ZWN1dGFibGVCYXNlKHZtLCBzdHJ1Y3R1cmUsIE5VTV9QQVJBTUVURVJT
X05PVF9DT01QSUxFRCkKICAgICAsIG1fZmVhdHVyZXMoaXNJblN0cmljdENvbnRleHQgPyBTdHJp
Y3RNb2RlRmVhdHVyZSA6IDApCiAgICAgLCBtX2RpZFRyeVRvRW50ZXJJbkxvb3AoZmFsc2UpCkBA
IC0xNDAsNiArMTQwLDcgQEAgU2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZShTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2QKICAgICAsIG1fbmV2ZXJP
cHRpbWl6ZShmYWxzZSkKICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dChpc0luQXJyb3dG
dW5jdGlvbkNvbnRleHQpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZGVyaXZlZENvbnRleHRUeXBlKSkKKyAgICAsIG1fcGFyZW50RXZhbERlcml2ZWRD
b250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocGFyZW50RXZhbERlcml2ZWRDb250ZXh0
VHlwZSkpCiAgICAgLCBtX292ZXJyaWRlTGluZU51bWJlcigtMSkKICAgICAsIG1fZmlyc3RMaW5l
KC0xKQogICAgICwgbV9sYXN0TGluZSgtMSkKQEAgLTQxNSw3ICs0MTYsNyBAQCBKU09iamVjdCog
U2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoCiAKIGNvbnN0IENsYXNz
SW5mbyBFdmFsRXhlY3V0YWJsZTo6c19pbmZvID0geyAiRXZhbEV4ZWN1dGFibGUiLCAmU2NyaXB0
RXhlY3V0YWJsZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEV2YWxFeGVjdXRhYmxl
KSB9OwogCi1FdmFsRXhlY3V0YWJsZSogRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwg
VGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4
dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCogdmFyaWFibGVzVW5kZXJURFopCitFdmFsRXhlY3V0YWJsZSogRXZhbEV4ZWN1dGFibGU6
OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBp
c0luU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIERlcml2ZWRDb250ZXh0
VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFosIERlcml2ZWRDb250ZXh0
VHlwZSBwYXJlbnRFdmFsRGVyaXZlZENvbnRleHRUeXBlKQogewogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFn
bG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpIHsKQEAgLTQyMyw3ICs0MjQsNyBAQCBFdmFsRXhl
Y3V0YWJsZSogRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBFdmFsRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEV2YWxFeGVj
dXRhYmxlPigqZXhlYy0+aGVhcCgpKSkgRXZhbEV4ZWN1dGFibGUoZXhlYywgc291cmNlLCBpc0lu
U3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
KTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEV2YWxFeGVjdXRhYmxlPigqZXhlYy0+aGVhcCgpKSkgRXZhbEV4ZWN1dGFibGUoZXhl
Yywgc291cmNlLCBpc0luU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0LCBwYXJlbnRFdmFsRGVyaXZlZENvbnRleHRUeXBlKTsKICAgICBleGVj
dXRhYmxlLT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKIAogICAgIFVubGlua2VkRXZhbENv
ZGVCbG9jayogdW5saW5rZWRFdmFsQ29kZSA9IGdsb2JhbE9iamVjdC0+Y3JlYXRlRXZhbENvZGVC
bG9jayhleGVjLCBleGVjdXRhYmxlLCB0aGlzVERaTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgdmFyaWFibGVzVW5kZXJURFopOwpAQCAtNDM1LDggKzQzNiw4IEBAIEV2YWxFeGVjdXRhYmxl
KiBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CiAKLUV2YWxFeGVjdXRhYmxlOjpF
dmFsRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Ym9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUo
ZXhlYy0+dm0oKS5ldmFsRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291
cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCkKK0V2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgRGVyaXZlZENvbnRleHRUeXBlIHBhcmVudEV2YWxEZXJpdmVkQ29udGV4dFR5cGUpCisgICAg
OiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkuZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0
KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5
cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIHBhcmVudEV2YWxEZXJpdmVkQ29udGV4dFR5cGUp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRl
eCAzYTNmZDhmNDI5NzkxYmE3MjJkZDg1ZjBlMDA3YWEzOWM1OGU2ODBlLi4wZjAyYjliNTExODM5
NmMwMmM3MjY0MzBjODgzOWJiZmQyMzZjOTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC0zNTEsNiArMzUxLDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9u
Q29udGV4dDsgfQogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0
dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJlOyB9CiAgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2
ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERlcml2ZWRDb250ZXh0
VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9CisgICAgRGVyaXZlZENvbnRleHRUeXBlIHBh
cmVudEV2YWxEZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxE
ZXJpdmVkQ29udGV4dFR5cGU+KG1fcGFyZW50RXZhbERlcml2ZWRDb250ZXh0VHlwZSk7IH0KIAog
ICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gaXNTdHJpY3RNb2RlKCkgPyBT
dHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsgfQogICAgICAgICAKQEAgLTQwMCw3ICs0MDEsNyBA
QCBwcml2YXRlOgogICAgIEpTT2JqZWN0KiBwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbChFeGVjU3Rh
dGUqLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSosIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgU2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqLCBWTSYsIGNvbnN0IFNv
dXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJv
b2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0KTsKKyAgICBTY3JpcHRFeGVjdXRhYmxlKFN0cnVj
dHVyZSosIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERl
cml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0luQXJyb3dGdW5jdGlvbkNvbnRleHQsIERlcml2ZWRD
b250ZXh0VHlwZSBwYXJlbnRFdmFsRGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRU
eXBlOjpOb25lKTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIHsKQEAg
LTQyMCw3ICs0MjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX25ldmVyT3B0aW1pemUgOiAx
OwogICAgIGJvb2wgbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0IDogMTsKICAgICB1bnNpZ25lZCBt
X2Rlcml2ZWRDb250ZXh0VHlwZSA6IDI7IC8vIERlcml2ZWRDb250ZXh0VHlwZQotCisgICAgdW5z
aWduZWQgbV9wYXJlbnRFdmFsRGVyaXZlZENvbnRleHRUeXBlIDogMjsgLy8gRGVyaXZlZENvbnRl
eHRUeXBlCiAgICAgaW50IG1fb3ZlcnJpZGVMaW5lTnVtYmVyOwogICAgIGludCBtX2ZpcnN0TGlu
ZTsKICAgICBpbnQgbV9sYXN0TGluZTsKQEAgLTQ0NCw3ICs0NDUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX2V2YWxDb2RlQmxvY2suZ2V0KCk7CiAgICAgfQogCi0gICAgc3RhdGljIEV2
YWxFeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wg
aXNJblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOworICAg
IHN0YXRpYyBFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSwgRGVyaXZlZENvbnRleHRU
eXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQqLCBEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUpOwogCiAg
ICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKICAgICB7CkBAIC00NTgs
NyArNDU5LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBF
eGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJ
bmZvKHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJv
Z3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkg
LCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwg
ZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNv
dXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0KCkgLCBmYWxzZSwgcGFyZW50RXZhbERlcml2ZWRDb250ZXh0VHlwZSgp
KTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2
YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5j
dGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVu
Y3Rpb25EZWNscygpOyB9CkBAIC00NjcsNyArNDY4LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7
CiAKLSAgICBFdmFsRXhlY3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9v
bCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0KTsKKyAgICBFdmFsRXhlY3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VD
b2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgcGFyZW50RXZhbERlcml2ZWRD
b250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSk7CiAKICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtc3VwZXJwcm9wZXJ0eS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5qcwppbmRleCAwNTBmZTkw
NTcxOWJhMDg2Nzk3MTRhMzgwYjQxY2UxYTM0NWFmNTE1Li5hOGJhZDE1YTgyY2Q3NjI5YTQ5MDhh
OWQxMjIyNzBjYmJmYjBkODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVycHJvcGVydHkuanMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGlj
YWwtYmluZC1zdXBlcnByb3BlcnR5LmpzCkBAIC0xMjMsMTIgKzEyMyw2IEBAIHZhciBHID0gY2xh
c3MgRyBleHRlbmRzIEEgewogICAgICBnZXRQYXJlbnRWYWx1ZSgpIHsKICAgICAgICAgIHJldHVy
biBzdXBlci5nZXRWYWx1ZSgpOwogICAgICB9Ci0gICAgIGdldFBhcmVudFZhbHVlV2l0aEVycm9y
KCkgewotICAgICAgICAgdmFyIGYgPSAgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgIHJldHVy
biAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOwotICAgICAgICAgfTsKLSAgICAgICAgIHJldHVybiBm
KCk7Ci0gICAgIH0KICB9OwogCiAgdmFyIGcgPSBuZXcgRygpOwpAQCAtMTQ5LDIwICsxNDMsNiBA
QCBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKICAgICB0ZXN0Q2FzZShnZXRWYWx1
ZSgpLCAnbmV3LXZhbHVlJywgJ0Vycm9yOiBTb21lIHByb2JsZW0gd2l0aCB1c2luZyBhcnJvdyBh
bmQgInN1cGVyIiBpbnNpZGUgb2YgdGhlIG1ldGhvZCB0aGF0IHJldHVuIGFycm93IGZ1bmN0aW9u
Jyk7CiB9CiAKLXZhciBnMiA9IG5ldyBHKCk7Ci1mb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBp
KyspIHsKLSAgICBsZXQgZXJyb3IgPSBmYWxzZTsKLSAgICB0cnkgewotICAgICAgIGcyLmdldFBh
cmVudFZhbHVlV2l0aEVycm9yKCkoKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAgIC8vIEZJWE1F
OiBzaG91bGQgYnkgY2hlY2sgaWYgZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yCi0gICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODkzCi0gICAgICBlcnJv
ciA9IHRydWU7Ci0gICAgfQotICAgIHRlc3RDYXNlKGVycm9yLCB0cnVlLCAnRXJyb3I6IHVzaW5n
ICJzdXBlciIgc2hvdWxkIGxlYWQgdG8gZXJyb3InKTsKLX0KLQotCiB2YXIgSCA9IGNsYXNzIEgg
ZXh0ZW5kcyBBIHsKICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgdmFyIGFycm93ID0gKCkg
PT4gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2Nzk0Y2VhYWJhMTY5NjBkZTkxMTMx
NzE5NGQ5NjYyZjExM2Q1NGVmLi43ZGI0NjU0OWY0MTM4NjU1NmNjMzlhYmFiN2UxMjlkMDA3NDZl
YjVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDItMDQgIFNrYWNoa292IE9sZWtzYW5k
ciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gQXJyb3cgZnVuY3Rpb24g
c3ludGF4LiBVc2luZyAnc3VwZXInIGluIGFycm93IGZ1bmN0aW9uIHRoYXQgZGVjbGFyZWQgb3V0
IG9mIHRoZSBjbGFzcyBzaG91bGQgbGVhZCB0byBTeW50YXggZXJyb3IKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDg5MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgIAorICAgICAgICBBZGRpbmcgdGVzdHMgZm9y
IHVzaW5nIG9mIHRoZSAnc3VwZXInIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24KKyAKKyAg
ICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHktZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qczoKKyAg
ICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXJyb3JzLmpzOgor
CiAyMDE2LTAxLTIxICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgog
CiAgICAgICAgIFtFUzZdIEFycm93IGZ1bmN0aW9uLiBEZWZhdWx0IGFyZ3VtZW50cyBpbiBhcnJv
dyBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3Vw
ZXJwcm9wZXJ0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1
cGVycHJvcGVydHktZXhwZWN0ZWQudHh0CmluZGV4IDNkZjJjNDk1ZmI5ZmYxZTI3NjMzMGYxNTNj
MTQwYmI1ZmY1ZjQ5ZDMuLjQ3NmY5ZDRkMWVlODc5NzZiY2I3NDM5Y2RiMGY2MTViNjdiYjY2N2Ig
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3Bl
cnR5LWV4cGVjdGVkLnR4dApAQCAtOSw3ICs5LDYgQEAgUEFTUyBFLmdldFBhcmVudFN0YXRpY1Zh
bHVlKCkgaXMgZXhwZWN0ZWRWYWx1ZQogUEFTUyBmLnByb3AgaXMgZXhwZWN0ZWRWYWx1ZSArICIt
IiArIGV4cGVjdGVkVmFsdWUKIFBBU1MgZi5wcm9wIGlzIGV4cGVjdGVkVmFsdWUgKyAiLSIgKyAi
bmV3LXZhbHVlIgogUEFTUyAobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWUoKSBpcyBleHBlY3RlZFZh
bHVlCi1QQVNTIChuZXcgRigpKS5nZXRQYXJlbnRWYWx1ZVdpdGhFcnJvcigpKCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcg
J3N1cGVyLmdldFZhbHVlJykuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRF
U1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3lu
dGF4LWVycm9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN5
bnRheC1lcnJvcnMtZXhwZWN0ZWQudHh0CmluZGV4IDc1NTNmNDFiOWQxODQ3ODE5ZmM1Njc0ZGFm
ZDMyYTlkYTA0MTlhZDcuLjdkY2ZjYjAzMGYyMjZmNzFiYTVmOTFjOWVmYjQ0MWM1N2E2ZTBmYzkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXJy
b3JzLWV4cGVjdGVkLnR4dApAQCAtMTMxLDYgKzEzMSwxOSBAQCBQQVNTIHZhciBhcnIxID0gW2Es
IGJdID0+IGEgKyBiOyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9r
ZW4gJwogUEFTUyB2YXIgYXJyMiA9IHthLCBifSA9PiBhICsgYjsgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc9PicuIEV4cGVjdGVkICc7JyBhZnRlciB2YXJp
YWJsZSBkZWNsYXJhdGlvbi4uCiBQQVNTIHZhciBhcnIzID0ge2M6YSxkOmJ9ID0+IGEgKyBiOyB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJz0+Jy4gRXhwZWN0
ZWQgJzsnIGFmdGVyIHZhcmlhYmxlIGRlY2xhcmF0aW9uLi4KIFBBU1MgdmFyIGFycjMgPSB7Yzpi
LGQ6YX0gPT4gYSArIGI7IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0
b2tlbiAnPT4nLiBFeHBlY3RlZCAnOycgYWZ0ZXIgdmFyaWFibGUgZGVjbGFyYXRpb24uLgorUEFT
UyB2YXIgYXJyNCA9ICgpID0+IHsgc3VwZXIoKTsgfTsgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2YgYSBjbGFzcyBjb25zdHJ1Y3Rvci4u
CitQQVNTIHZhciBhcnI0ID0gKCkgPT4geyBzdXBlcjsgfTsgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBDYW5ub3QgcmVmZXJlbmNlIHN1cGVyLi4KK1BBU1MgdmFyIGFycjUgPSAoKSA9PiB7
IHN1cGVyLmdldFZhbHVlKCk7IH07IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogc3VwZXIg
Y2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MuLgorUEFTUyB2
YXIgYXJyNiA9ICgpID0+ICBzdXBlcigpOyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IENh
bm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNzIGNvbnN0cnVjdG9yLi4KK1BBU1Mg
dmFyIGFycjcgPSAoKSA9PiAgc3VwZXI7IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fu
bm90IHJlZmVyZW5jZSBzdXBlci4uCitQQVNTIHZhciBhcnI4ID0gKCkgPT4gIHN1cGVyLmdldFZh
bHVlKCk7IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogc3VwZXIgY2FuIG9ubHkgYmUgdXNl
ZCBpbiBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MuLgorUEFTUyBjbGFzcyBBIHsgY29uc3Ry
dWN0b3IoKSB7IGZ1bmN0aW9uIGEgKCkgeyByZXR1cm4gKCkgPT4geyBzdXBlcigpOyB9O319IHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9m
IGEgY2xhc3MgY29uc3RydWN0b3IuLgorUEFTUyBjbGFzcyBCIHsgY29uc3RydWN0b3IoKSB7IGZ1
bmN0aW9uIGIgKCkgeyByZXR1cm4gKCkgPT4geyBzdXBlcjsgfTsgfTsgfX0gdGhyZXcgZXhjZXB0
aW9uIFN5bnRheEVycm9yOiBDYW5ub3QgcmVmZXJlbmNlIHN1cGVyLi4KK1BBU1MgY2xhc3MgQyB7
IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlvbiBjICgpIHsgcmV0dXJuICgpID0+IHsgc3VwZXIuZ2V0
VmFsdWUoKTsgfTt9fSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IHN1cGVyIGNhbiBvbmx5
IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzLi4KK1BBU1MgY2xhc3MgRCB7
IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlvbiBhICgpIHsgcmV0dXJuICgpID0+IHN1cGVyKCk7IH19
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRl
IG9mIGEgY2xhc3MgY29uc3RydWN0b3IuLgorUEFTUyBjbGFzcyBFIHsgY29uc3RydWN0b3IoKSB7
IGZ1bmN0aW9uIGIgKCkgeyByZXR1cm4gKCkgPT4gc3VwZXI7IH07IH19IHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogQ2Fubm90IHJlZmVyZW5jZSBzdXBlci4uCitQQVNTIGNsYXNzIEYgeyBj
b25zdHJ1Y3RvcigpIHsgZnVuY3Rpb24gYyAoKSB7IHJldHVybiAoKSA9PiBzdXBlci5nZXRWYWx1
ZSgpOyB9fSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IHN1cGVyIGNhbiBvbmx5IGJlIHVz
ZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzLi4KK1BBU1MgY2xhc3MgRyB7fTsgY2xh
c3MgRzIgZXh0ZW5kcyBHIHsgZ2V0VmFsdWUoKSB7IGZ1bmN0aW9uIGMgKCkgeyByZXR1cm4gKCkg
PT4gc3VwZXIuZ2V0VmFsdWUoKTsgfX0gdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBzdXBl
ciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcy4uCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHku
anMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3Bl
cnR5LmpzCmluZGV4IGU1ZjI0OWNiYmJkYTI4OGYxMzdhNTIzNzBmMjYxMWNiNDE1NzFmYmUuLjJm
NTg3ZmQ1NzIyNjZhYzk2ZDgzZGEyMWU0OTU1ZTMxZjI1ZTk1NzYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanMKKysr
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0
eS5qcwpAQCAtNjMsMTIgKzYzLDYgQEAgY2xhc3MgRiBleHRlbmRzIEEgewogICAgICAgICBsZXQg
YXJyb3cgPSAoKSA9PiAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOwogICAgICAgICByZXR1cm4gYXJy
b3coKSgpOwogICAgIH0KLSAgICBnZXRQYXJlbnRWYWx1ZVdpdGhFcnJvcigpIHsKLSAgICAgICAg
dmFyIGYgPSAgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgcmV0dXJuICgpID0+IHN1cGVyLmdl
dFZhbHVlKCk7Ci0gICAgICAgIH07Ci0gICAgICAgIHJldHVybiBmKCk7Ci0gICAgfQogIH07CiAK
IHNob3VsZEJlKCcobmV3IEIoKSkuZ2V0VmFsdWVQYXJlbnRGdW5jdGlvbigpJywgJ2V4cGVjdGVk
VmFsdWUnKTsKQEAgLTkwLDYgKzg0LDQgQEAgc2hvdWxkQmUoJ2YucHJvcCcsICdleHBlY3RlZFZh
bHVlICsgIi0iICsgIm5ldy12YWx1ZSInKTsKIAogc2hvdWxkQmUoJyhuZXcgRigpKS5nZXRQYXJl
bnRWYWx1ZSgpJywgJ2V4cGVjdGVkVmFsdWUnKTsKIAotc2hvdWxkVGhyb3coJyhuZXcgRigpKS5n
ZXRQYXJlbnRWYWx1ZVdpdGhFcnJvcigpKCknKTsKLQogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi1zeW50YXgtZXJyb3JzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tc3ludGF4LWVycm9ycy5qcwppbmRleCA1YTIyNjM0Yzg3NTI1MjdlMzg0NzQ1MmFm
MzY2NWFkNjc4ZTJmZjEyLi5lOGYyNGY0ZmFlYWU3ZDMyNjExZjNlOWIyM2YwZDBjZmNmMDc0YWQ3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1z
eW50YXgtZXJyb3JzLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1
bmN0aW9uLXN5bnRheC1lcnJvcnMuanMKQEAgLTQ4LDQgKzQ4LDIxIEBAIHNob3VsZFRocm93KCd2
YXIgYXJyMiA9IHthLCBifSA9PiBhICsgYjsnKTsKIHNob3VsZFRocm93KCd2YXIgYXJyMyA9IHtj
OmEsZDpifSA9PiBhICsgYjsnKTsKIHNob3VsZFRocm93KCd2YXIgYXJyMyA9IHtjOmIsZDphfSA9
PiBhICsgYjsnKTsKIAorc2hvdWxkVGhyb3coJ3ZhciBhcnI0ID0gKCkgPT4geyBzdXBlcigpOyB9
OycsICciU3ludGF4RXJyb3I6IENhbm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNz
IGNvbnN0cnVjdG9yLiInKTsKK3Nob3VsZFRocm93KCd2YXIgYXJyNCA9ICgpID0+IHsgc3VwZXI7
IH07JywgJyJTeW50YXhFcnJvcjogQ2Fubm90IHJlZmVyZW5jZSBzdXBlci4iJyk7CitzaG91bGRU
aHJvdygndmFyIGFycjUgPSAoKSA9PiB7IHN1cGVyLmdldFZhbHVlKCk7IH07JywgJyJTeW50YXhF
cnJvcjogc3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xh
c3MuIicpOworCitzaG91bGRUaHJvdygndmFyIGFycjYgPSAoKSA9PiAgc3VwZXIoKTsnLCAnIlN5
bnRheEVycm9yOiBDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2YgYSBjbGFzcyBjb25zdHJ1
Y3Rvci4iJyk7CitzaG91bGRUaHJvdygndmFyIGFycjcgPSAoKSA9PiAgc3VwZXI7JywgJyJTeW50
YXhFcnJvcjogQ2Fubm90IHJlZmVyZW5jZSBzdXBlci4iJyk7CitzaG91bGRUaHJvdygndmFyIGFy
cjggPSAoKSA9PiAgc3VwZXIuZ2V0VmFsdWUoKTsnLCAnIlN5bnRheEVycm9yOiBzdXBlciBjYW4g
b25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcy4iJyk7CisKK3Nob3Vs
ZFRocm93KCdjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9uIGEgKCkgeyByZXR1cm4g
KCkgPT4geyBzdXBlcigpOyB9O319JywgJyJTeW50YXhFcnJvcjogQ2Fubm90IGNhbGwgc3VwZXIo
KSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IuIicpOworc2hvdWxkVGhyb3coJ2NsYXNz
IEIgeyBjb25zdHJ1Y3RvcigpIHsgZnVuY3Rpb24gYiAoKSB7IHJldHVybiAoKSA9PiB7IHN1cGVy
OyB9OyB9OyB9fScsICciU3ludGF4RXJyb3I6IENhbm5vdCByZWZlcmVuY2Ugc3VwZXIuIicpOwor
c2hvdWxkVGhyb3coJ2NsYXNzIEMgeyBjb25zdHJ1Y3RvcigpIHsgZnVuY3Rpb24gYyAoKSB7IHJl
dHVybiAoKSA9PiB7IHN1cGVyLmdldFZhbHVlKCk7IH07fX0nLCAnIlN5bnRheEVycm9yOiBzdXBl
ciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcy4iJyk7CisK
K3Nob3VsZFRocm93KCdjbGFzcyBEIHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9uIGEgKCkgeyBy
ZXR1cm4gKCkgPT4gc3VwZXIoKTsgfX0nLCAnIlN5bnRheEVycm9yOiBDYW5ub3QgY2FsbCBzdXBl
cigpIG91dHNpZGUgb2YgYSBjbGFzcyBjb25zdHJ1Y3Rvci4iJyk7CitzaG91bGRUaHJvdygnY2xh
c3MgRSB7IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlvbiBiICgpIHsgcmV0dXJuICgpID0+IHN1cGVy
OyB9OyB9fScsICciU3ludGF4RXJyb3I6IENhbm5vdCByZWZlcmVuY2Ugc3VwZXIuIicpOworc2hv
dWxkVGhyb3coJ2NsYXNzIEYgeyBjb25zdHJ1Y3RvcigpIHsgZnVuY3Rpb24gYyAoKSB7IHJldHVy
biAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOyB9fScsICciU3ludGF4RXJyb3I6IHN1cGVyIGNhbiBv
bmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzLiInKTsKK3Nob3VsZFRo
cm93KCdjbGFzcyBHIHt9OyBjbGFzcyBHMiBleHRlbmRzIEcgeyBnZXRWYWx1ZSgpIHsgZnVuY3Rp
b24gYyAoKSB7IHJldHVybiAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOyB9fScsICciU3ludGF4RXJy
b3I6IHN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNz
LiInKTsKKwogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270826</attachid>
            <date>2016-02-07 12:26:25 -0800</date>
            <delta_ts>2016-02-08 02:59:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150893-20160207222601.patch</filename>
            <type>text/plain</type>
            <size>36718</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2MDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NmM3NGZkNGEzMDI0MzQyZDc5MDY5NjBlZmJmZWI1YTRjYWRjOTU0Li43ZjcxOGIwNzIxYWQ2YzQw
MmJiMjIyNWQ3YTkzN2VkOTNjNGFkNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxNi0wMi0wNCAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIFVzaW5nICdz
dXBlcicgaW4gYXJyb3cgZnVuY3Rpb24gdGhhdCBkZWNsYXJlZCBvdXQgb2YgdGhlIGNsYXNzIHNo
b3VsZCBsZWFkIHRvIFN5bnRheCBlcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgJ3N1cGVyJyBhbmQgJ3N1cGVyKCknIGluc2lkZSBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24gc2hvdWxkIGxlYWQgdG8gc3ludGF4IGVycm9yIGlmIHRoZXkgYXJlIHVzZWQg
CisgICAgICAgIG91dCBvZiB0aGUgY2xhc3MgY29udGV4dCBvciB0aGV5IHdyYXBwZWQgYnkgb3Jk
aW5hcnkgZnVuY3Rpb24uIE5vdyBKU0MgcmV0dXJucyBSZWZlcmVuY2VFcnJvciBidXQgCisgICAg
ICAgIHNob3VsZCByZXR1cm4gU3ludGF4RXJyb3IgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcg
c3BlY3M6CisgICAgICAgIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2
Mi82LjAvI3NlYy1mdW5jdGlvbi1kZWZpbml0aW9ucy1zdGF0aWMtc2VtYW50aWNzLWVhcmx5LWVy
cm9ycworICAgICAgICBhbmQgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLWFycm93LWZ1bmN0aW9uLWRlZmluaXRpb25zLXJ1bnRpbWUtc2VtYW50aWNz
LWV2YWx1YXRpb24gCisgICAgICAgIEN1cnJlbiBwYXRjaCBpbXBsZW1lbnRlZCBmb3IgdHdvIGNh
c2VzOgorICAgICAgICAxKSBpZiBzdXBlci9zdXBlcigpIGFyZSB1c2VkIGluc2lkZSBvZiB0aGUg
YXJyb3cgZnVuY3Rpb24KKyAgICAgICAgMikgaWYgc3VwZXIvc3VwZXIoKSBhcmUgdXNlZCBpbnNp
ZGUgb2YgdGhlIGV2YWwuIFRvIHN1cHBvcnQgdGhpcyBjYXNlIEkgaGFkIHRvIGFkZCBuZXcgYWRk
aXRpb25hbCBmbGFnIAorICAgICAgICB0byBFeGVjdXRhYmxlSW5mbyB0aGF0IGFsbG93IHRvIHNh
dmUgc3RhdGUgYW5kIHVzZSB0aGlzIHN0YXRlIGR1cmluZyBwYXJzaW5nIGluIGV2YWwuIEluIGN1
cnJlbnQgcGF0Y2ggaW1wbGVtZW50ZWQKKyAgICAgICAgb25seSBmb2xsb3dpbmcgY2FzZSB3aXRo
IG9uZSBldmFsOgorICAgICAgICAgICBjbGFzcyBBIHt9IAorICAgICAgICAgICBjbGFzcyBCIHsg
Y29zdHJ1Y3RvcigpIHsgZXZhbCgic3VwZXIoKSIpO30gCisgICAgICAgIFN5bnRheEVycm9yIGR1
cmluZyBpbnZva2luZyBzdXBlcigpL3N1cGVyIGluIHR3byBvciBtb3JlIGV2YWxzIHdpbGwgYmUg
cGFydCBvZiB0aGUgaXNzdWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1Mzg2NAorICAKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpTY29wZSk6CisgICAgICAgIChKU0M6OlNj
b3BlOjpzZXRFeHBlY3RlZFN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpleHBl
Y3RlZFN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRDb25zdHJ1Y3Rvcktp
bmQpOgorICAgICAgICAoSlNDOjpTY29wZTo6Y29uc3RydWN0b3JLaW5kKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyOjpjdXJyZW50Tm90QXJyb3dmdW5jdGlvbkZ1bmN0aW9uU2NvcGUpOgorCisgICAg
ICAgICogYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUNh
Y2hlOjpnZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAg
ICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlND
OjpFeGVjdXRhYmxlSW5mbzo6d3JhcHBlZENvZGVCbG9ja0NvbnRleHRUeXBlKToKKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBh
cnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5m
byk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Np
b24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OlNj
b3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldEV4cGVjdGVkU3VwZXJCaW5kaW5nKToKKyAg
ICAgICAgKEpTQzo6U2NvcGU6OmV4cGVjdGVkU3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6
U2NvcGU6OnNldENvbnN0cnVjdG9yS2luZCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpjb25zdHJ1
Y3RvcktpbmQpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3Nlc3RQYXJlbnROb25BcnJvd0Z1
bmN0aW9uTm9uTGV4aWNhbFNjb3BlKToKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAq
IHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRHbG9i
YWxDb2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAg
IChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUpOgorICAgICAgICAoSlND
OjpFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6
OkV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6cGFyZW50RXZhbERlcml2ZWRDb250ZXh0VHlwZSk6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVy
cHJvcGVydHkuanM6CisKIDIwMTYtMDEtMTkgIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtv
dkBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gQXJyb3cgZnVuY3Rpb24gc3ludGF4LiBBcnJv
dyBmdW5jdGlvbiBzcGVjaWZpYyBmZWF0dXJlcy4gTGV4aWNhbCBiaW5kICJhcmd1bWVudHMiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAppbmRleCA2
NjM0OTBhZmI0NTI0NWMzNmZmMDVkNDdlZjg4MTNkYTVhNTlmNTAwLi45ZTM0YTk3Zjc0MjJjNzg3
ZjBiMjY5Mzk3Y2E4YTBkNTYxMjhmNGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKQEAgLTU0LDEyICs1NCwyNCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUqIGV4
ZWMsIEpTQ2VsbCogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlz
VERaTW9kZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBKU1Njb3Bl
KiBzY29wZSkKKworICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUqIGV4
ZWMsIEpTQ2VsbCogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlz
VERaTW9kZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBKU1Njb3Bl
KiBzY29wZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZyA9IFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkKQogICAgICAgICB7CiAgICAgICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxl
c1VuZGVyVERaOwogICAgICAgICAgICAgSlNTY29wZTo6Y29sbGVjdFZhcmlhYmxlc1VuZGVyVERa
KHNjb3BlLCB2YXJpYWJsZXNVbmRlclREWik7Ci0gICAgICAgICAgICBFdmFsRXhlY3V0YWJsZSog
ZXZhbEV4ZWN1dGFibGUgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIGV2YWxTb3VyY2Us
IGluU3RyaWN0Q29udGV4dCwgdGhpc1REWk1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKworICAgICAgICAgICAgRGVy
aXZlZENvbnRleHRUeXBlIHdyYXBwZWRDb2RlQmxvY2tEZXJpdmVkQ29udGV4dFR5cGUgPSBkZXJp
dmVkQ29udGV4dFR5cGU7CisgICAgICAgICAgICBpZiAod3JhcHBlZENvZGVCbG9ja0Rlcml2ZWRD
b250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoY29uc3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkKKyAgICAgICAg
ICAgICAgICAgICAgd3JhcHBlZENvZGVCbG9ja0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRD
b250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dDsKKyAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgd3JhcHBlZENvZGVCbG9ja0Rlcml2ZWRDb250ZXh0
VHlwZSA9IHN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZAorICAgICAgICAgICAg
ICAgICAgICAgICAgPyBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRNZXRob2RDb250ZXh0Cisg
ICAgICAgICAgICAgICAgICAgICAgICA6IGRlcml2ZWRDb250ZXh0VHlwZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEV2YWxFeGVj
dXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgZXZh
bFNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwgZGVyaXZlZENvbnRleHRUeXBl
LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCAmdmFyaWFibGVzVW5kZXJURFosIHdyYXBwZWRDb2Rl
QmxvY2tEZXJpdmVkQ29udGV4dFR5cGUpOwogCiAgICAgICAgICAgICBpZiAoIWV2YWxFeGVjdXRh
YmxlKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCBhNDVkNTAzOWQzZmEyY2Yz
MDQyMTZjMDI0MmRiYjgzNDlhYzllZGFhLi4zYjAzODY1ZDg3MDIzOWE5MThkY2U0MmU0ODE3MzM5
NDg5NDk4ODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhl
Y3V0YWJsZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0
YWJsZUluZm8uaApAQCAtMzQsOCArMzQsMTIgQEAgZW51bSBjbGFzcyBEZXJpdmVkQ29udGV4dFR5
cGUgOiB1aW50OF90IHsgTm9uZSwgRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgRGVyaXYKIAog
Ly8gRklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhY
Q29kZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CisvLyBGSVhNRTogQ2hlY2sgaWYgcG9zc2libGUg
dG8gZGVjcmVhc2UgbnVtYmVyIG9mIGZsYWdzLiBGb2xsb3dpbmcgZmxhZ3MgY29uc3RydWN0b3JL
aW5kLCBzdXBlckJpbmRpbmcsCisvLyBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQ2xhc3NDb250ZXh0
IGFuZCB3cmFwcGVkQ29kZUJsb2NrQ29udGV4dFR5cGUgYXJlIHVzaW5nIHRvIGRlc2NyaWJlIGNs
YXNzLgorLy8gUG9zc2libGUgc29tZSBvZiB0aGVtIGNhbiBiZSByZW1vdmVkCisvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzODYyCiBzdHJ1Y3QgRXhlY3V0YWJs
ZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RN
b2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0NsYXNzQ29udGV4dCkKKyAg
ICBFeGVjdXRhYmxlSW5mbyhib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUg
cGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNDbGFzc0NvbnRleHQsIERlcml2ZWRDb250ZXh0
VHlwZSB3cmFwcGVkQ29kZUJsb2NrQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5v
bmUpCiAgICAgICAgIDogbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0
TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0
b3IpCkBAIC00Niw2ICs1MCw3IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgICAgICwg
bV9kZXJpdmVkQ29udGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRDb250ZXh0
VHlwZSkpCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0KGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQpCiAgICAgICAgICwgbV9pc0NsYXNzQ29udGV4dChpc0NsYXNzQ29udGV4dCkKKyAg
ICAgICAgLCBtX3dyYXBwZWRDb2RlQmxvY2tDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4od3JhcHBlZENvZGVCbG9ja0NvbnRleHRUeXBlKSkKICAgICB7CiAgICAgICAgIEFTU0VSVCht
X2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5k
KSk7CiAgICAgICAgIEFTU0VSVChtX3N1cGVyQmluZGluZyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc3VwZXJCaW5kaW5nKSk7CkBAIC01OSw2ICs2NCw3IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5m
byB7CiAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CiAgICAgU291cmNlUGFyc2VN
b2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9CiAgICAgRGVyaXZl
ZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PERlcml2ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9CisgICAgRGVy
aXZlZENvbnRleHRUeXBlIHdyYXBwZWRDb2RlQmxvY2tDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PERlcml2ZWRDb250ZXh0VHlwZT4obV93cmFwcGVkQ29kZUJsb2NrQ29u
dGV4dFR5cGUpOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGFzc0NvbnRleHQ7IH0KIApAQCAtNzMsNiArNzksNyBA
QCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlIDogMjsKICAgICB1
bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQgOiAxOwogICAgIHVuc2lnbmVkIG1faXND
bGFzc0NvbnRleHQgOiAxOworICAgIHVuc2lnbmVkIG1fd3JhcHBlZENvZGVCbG9ja0NvbnRleHRU
eXBlIDogMjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCmluZGV4IDU5NjU5MTkzZGY3ODc3YjgxMmIxODVhNjI2ZjFhODY4ODgw
OTVjNDEuLmY0YzY4MjA5Yjg2MmE4YTk4YjQ2NmY1ZGNjNzFlZjgxMThkMDRkNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTE5NCw4ICsxOTQsNyBAQCB2b2lk
IFBhcnNlcjxMZXhlclR5cGU+Ojpsb2dFcnJvcihib29sIHNob3VsZFByaW50VG9rZW4sIGNvbnN0
IEEmIHZhbHVlMSwgY29uc3QgQgogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIFBhcnNl
cjxMZXhlclR5cGU+OjpQYXJzZXIoCiAgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIAotICAgIEpTUGFyc2VyU3RyaWN0
TW9kZSBzdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBTdXBlckJpbmRpbmcg
c3VwZXJCaW5kaW5nLAotICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5k
LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSkKKyAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0
TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGlu
ZywgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIFRoaXNURFpNb2RlIHRo
aXNURFpNb2RlLCBTdXBlckJpbmRpbmcgd3JhcHBlZENvZGVCbG9ja1N1cGVyQmluZGluZywgQ29u
c3RydWN0b3JLaW5kIHdyYXBwZWRDb2RlQmxvY2tDb25zdHJ1Y3RvcktpbmQpCiAgICAgOiBtX3Zt
KHZtKQogICAgICwgbV9zb3VyY2UoJnNvdXJjZSkKICAgICAsIG1faGFzU3RhY2tPdmVyZmxvdyhm
YWxzZSkKQEAgLTIxOSw3ICsyMTgsOSBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKAogCiAg
ICAgU2NvcGVSZWYgc2NvcGUgPSBwdXNoU2NvcGUoKTsKICAgICBzY29wZS0+c2V0U291cmNlUGFy
c2VNb2RlKHBhcnNlTW9kZSk7Ci0KKyAgICBzY29wZS0+c2V0Q29uc3RydWN0b3JLaW5kKHdyYXBw
ZWRDb2RlQmxvY2tDb25zdHJ1Y3RvcktpbmQpOworICAgIHNjb3BlLT5zZXRFeHBlY3RlZFN1cGVy
QmluZGluZyh3cmFwcGVkQ29kZUJsb2NrU3VwZXJCaW5kaW5nKTsKKyAgICAKICAgICBpZiAoc3Ry
aWN0TW9kZSA9PSBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCkKICAgICAgICAgc2NvcGUtPnNl
dFN0cmljdE1vZGUoKTsKIApAQCAtMTk3NSw4ICsxOTc2LDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVl
QnVpbGQKICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5Qmxv
Y2s7CiAgICAgfQogCi0gICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rvcktp
bmQgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOwotICAgIAorICAgIGZ1bmN0aW9uU2NvcGUtPnNl
dENvbnN0cnVjdG9yS2luZChjb25zdHJ1Y3RvcktpbmQpOworICAgIGZ1bmN0aW9uU2NvcGUtPnNl
dEV4cGVjdGVkU3VwZXJCaW5kaW5nKGV4cGVjdGVkU3VwZXJCaW5kaW5nKTsKKwogICAgIGZ1bmN0
aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKICAgICAKICAgICAvLyBJZiB3
ZSBrbm93IGFib3V0IHRoaXMgZnVuY3Rpb24gYWxyZWFkeSwgd2UgY2FuIHVzZSB0aGUgY2FjaGVk
IGluZm8gYW5kIHNraXAgdGhlIHBhcnNlciB0byB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbi4KQEAg
LTIwNjUsMTIgKzIwNjcsMjQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAgc2Vt
YW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqZnVuY3Rp
b25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEg
dmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBzZW1hbnRpY0Zh
aWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqZnVuY3Rpb25JbmZvLm5hbWUs
ICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rp
b24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0KLSAgICBpZiAoZnVuY3Rpb25TY29wZS0+
aGFzRGlyZWN0U3VwZXIoKSAmJiBmdW5jdGlvbkJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25C
b2R5QmxvY2spIHsKLSAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCFpc0NsYXNzQ29uc3RydWN0
b3IsICJDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2YgYSBjbGFzcyBjb25zdHJ1Y3RvciIp
OwotICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY29uc3RydWN0b3JLaW5kICE9IENvbnN0cnVj
dG9yS2luZDo6RGVyaXZlZCwgIkNhbm5vdCBjYWxsIHN1cGVyKCkgaW4gYSBiYXNlIGNsYXNzIGNv
bnN0cnVjdG9yIik7CisgICAgLy8gSXQgdW5uY2VjZXNzYXJ5IHRvIGNoZWNrIG9mIHVzaW5nIHN1
cGVyIGR1cmluZyByZXBhcnNpbmcgb25lIG1vcmUgdGltZS4gQWxzbyBpdCBjYW4gbGVhZCB0byBz
eW50YXggZXJyb3IKKyAgICAvLyBpbiBjYXNlIG9mIGFycm93IGZ1bmN0aW9uIGJlY3Vhc2UgZHVy
aW5nIHJlcGFyc2luZyB3ZSBkb24ndCBrbm93IHRoYXQgcGFyc2UgYXJyb3cgZnVuY3Rpb24KKyAg
ICAvLyBpbnNpZGUgb2YgdGhlIGNvbnN0cnVjdG9yIG9yIG1ldGhvZAorICAgIGlmICghbV9sZXhl
ci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CisgICAgICAgIGlmIChmdW5jdGlvblNjb3BlLT5o
YXNEaXJlY3RTdXBlcigpKSB7CisgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQgZnVuY3Rpb25D
b25zdHJ1Y3RvcktpbmQgPSBmdW5jdGlvbkJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5
QmxvY2sKKyAgICAgICAgICAgICAgICA/IGNvbnN0cnVjdG9yS2luZAorICAgICAgICAgICAgICAg
IDogY2xvc2VzdFBhcmVudE5vbkFycm93RnVuY3Rpb25Ob25MZXhpY2FsU2NvcGUoKS0+Y29uc3Ry
dWN0b3JLaW5kKCk7CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZnVuY3Rpb25Db25z
dHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCAiQ2Fubm90IGNhbGwgc3VwZXIo
KSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IiKTsKKyAgICAgICAgICAgIHNlbWFudGlj
RmFpbElmVHJ1ZShmdW5jdGlvbkNvbnN0cnVjdG9yS2luZCAhPSBDb25zdHJ1Y3RvcktpbmQ6OkRl
cml2ZWQsICJDYW5ub3QgY2FsbCBzdXBlcigpIGluIGEgYmFzZSBjbGFzcyBjb25zdHJ1Y3RvciIp
OworICAgICAgICB9CisgICAgICAgIGlmIChmdW5jdGlvblNjb3BlLT5uZWVkc1N1cGVyQmluZGlu
ZygpKSB7CisgICAgICAgICAgICBTdXBlckJpbmRpbmcgZnVuY3Rpb25TdXBlckJpbmRpbmcgPSBm
dW5jdGlvbkJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sKKyAgICAgICAgICAg
ICAgICA/IGV4cGVjdGVkU3VwZXJCaW5kaW5nCisgICAgICAgICAgICAgICAgOiBjbG9zZXN0UGFy
ZW50Tm9uQXJyb3dGdW5jdGlvbk5vbkxleGljYWxTY29wZSgpLT5leHBlY3RlZFN1cGVyQmluZGlu
ZygpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGZ1bmN0aW9uU3VwZXJCaW5kaW5n
ID09IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCAic3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBh
IG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MiKTsKKyAgICAgICAgfQogICAgIH0KLSAgICBpZiAo
ZnVuY3Rpb25TY29wZS0+bmVlZHNTdXBlckJpbmRpbmcoKSAmJiBmdW5jdGlvbkJvZHlUeXBlID09
IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2spCi0gICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShl
eHBlY3RlZFN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgInN1cGVyIGNh
biBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzIik7CiAKICAgICBK
U1Rva2VuTG9jYXRpb24gbG9jYXRpb24gPSBKU1Rva2VuTG9jYXRpb24obV90b2tlbi5tX2xvY2F0
aW9uKTsKICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0
OwpAQCAtMjA4Miw3ICsyMDk2LDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29s
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAKICAg
ICAvLyBDYWNoZSB0aGUgdG9rZW5pemVyIHN0YXRlIGFuZCB0aGUgZnVuY3Rpb24gc2NvcGUgdGhl
IGZpcnN0IHRpbWUgdGhlIGZ1bmN0aW9uIGlzIHBhcnNlZC4KICAgICAvLyBBbnkgZnV0dXJlIHJl
cGFyc2luZyBjYW4gdGhlbiBza2lwIHRoZSBmdW5jdGlvbi4KLSAgICBzdGF0aWMgY29uc3QgaW50
IG1pbmltdW1GdW5jdGlvbkxlbmd0aFRvQ2FjaGUgPSAxNjsKKyAgICAvLyBGb3IgYXJyb3cgZnVu
Y3Rpb24gaXMgOCA9IHg9PnggKyA0IHN5bWJvbHM7CisgICAgLy8gRm9yIG9yZGluYXJ5IGZ1bmN0
aW9uIGlzIDE2ICA9IGZ1bmN0aW9uKCl7fSArIDQgc3ltYm9scworICAgIGNvbnN0IGludCBtaW5p
bXVtRnVuY3Rpb25MZW5ndGhUb0NhY2hlID0gZnVuY3Rpb25Cb2R5VHlwZSA9PSBTdGFuZGFyZEZ1
bmN0aW9uQm9keUJsb2NrID8gMTYgOiA4OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VQcm92
aWRlckNhY2hlSXRlbT4gbmV3SW5mbzsKICAgICBpbnQgZnVuY3Rpb25MZW5ndGggPSBmdW5jdGlv
bkluZm8uZW5kT2Zmc2V0IC0gZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0OwogICAgIGlmIChUcmVl
QnVpbGRlcjo6Q2FuVXNlRnVuY3Rpb25DYWNoZSAmJiBtX2Z1bmN0aW9uQ2FjaGUgJiYgZnVuY3Rp
b25MZW5ndGggPiBtaW5pbXVtRnVuY3Rpb25MZW5ndGhUb0NhY2hlKSB7CkBAIC0zNzc5LDcgKzM3
OTUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgIH0KIAogICAgIGlmIChiYXNlSXNT
dXBlcikgewotICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5pc0Z1
bmN0aW9uKCksICJzdXBlciBpcyBvbmx5IHZhbGlkIGluc2lkZSBmdW5jdGlvbnMiKTsKKyAgICAg
ICAgc2VtYW50aWNGYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+aXNGdW5jdGlvbigpIHx8IGNs
b3Nlc3RQYXJlbnROb25BcnJvd0Z1bmN0aW9uTm9uTGV4aWNhbFNjb3BlKCktPmV4cGVjdGVkU3Vw
ZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQsICJzdXBlciBpcyBvbmx5IHZhbGlk
IGluc2lkZSBmdW5jdGlvbnMiKTsKICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlU3VwZXJF
eHByKGxvY2F0aW9uKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBjdXJyZW50RnVuY3Rpb25T
Y29wZSgpLT5zZXROZWVkc1N1cGVyQmluZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKaW5kZXggYjBiNTdiNGJmYTcwNDM4YTI3ZTkxYjZhYzg0MDM1ZTliZjA4NTI4MS4u
Njc0N2Q2Mzc1ZDQ4YzRjMTg2NGY4NmQyOTRiZDMxMGE5MjZlMWQ0MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNzUsNiArMTc1LDggQEAgc3RydWN0IFNjb3BlIHsK
ICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFyeShmYWxzZSkKICAgICAgICAgLCBtX2lzVmFs
aWRTdHJpY3RNb2RlKHRydWUpCiAgICAgICAgICwgbV9oYXNBcmd1bWVudHMoZmFsc2UpCisgICAg
ICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENvbnN0cnVjdG9y
S2luZDo6Tm9uZSkpCisgICAgICAgICwgbV9leHBlY3RlZFN1cGVyQmluZGluZyhzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQpKQogICAgICAgICAsIG1fbG9vcERl
cHRoKDApCiAgICAgICAgICwgbV9zd2l0Y2hEZXB0aCgwKQogICAgIHsKQEAgLTE5Nyw2ICsxOTks
OCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAsIG1faXNGdW5jdGlvbkJvdW5kYXJ5KHJocy5t
X2lzRnVuY3Rpb25Cb3VuZGFyeSkKICAgICAgICAgLCBtX2lzVmFsaWRTdHJpY3RNb2RlKHJocy5t
X2lzVmFsaWRTdHJpY3RNb2RlKQogICAgICAgICAsIG1faGFzQXJndW1lbnRzKHJocy5tX2hhc0Fy
Z3VtZW50cykKKyAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChyaHMubV9jb25zdHJ1Y3Rvcktp
bmQpCisgICAgICAgICwgbV9leHBlY3RlZFN1cGVyQmluZGluZyhyaHMubV9leHBlY3RlZFN1cGVy
QmluZGluZykKICAgICAgICAgLCBtX2xvb3BEZXB0aChyaHMubV9sb29wRGVwdGgpCiAgICAgICAg
ICwgbV9zd2l0Y2hEZXB0aChyaHMubV9zd2l0Y2hEZXB0aCkKICAgICAgICAgLCBtX21vZHVsZVNj
b3BlRGF0YShyaHMubV9tb2R1bGVTY29wZURhdGEpCkBAIC00NTgsNiArNDYyLDExIEBAIHN0cnVj
dCBTY29wZSB7CiAKICAgICBib29sIG5lZWRzU3VwZXJCaW5kaW5nKCkgeyByZXR1cm4gbV9uZWVk
c1N1cGVyQmluZGluZzsgfQogICAgIHZvaWQgc2V0TmVlZHNTdXBlckJpbmRpbmcoKSB7IG1fbmVl
ZHNTdXBlckJpbmRpbmcgPSB0cnVlOyB9CisgICAgCisgICAgdm9pZCBzZXRFeHBlY3RlZFN1cGVy
QmluZGluZyhTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKSB7IG1fZXhwZWN0ZWRTdXBlckJpbmRp
bmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKTsgfQorICAgIFN1cGVyQmlu
ZGluZyBleHBlY3RlZFN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1
cGVyQmluZGluZz4obV9leHBlY3RlZFN1cGVyQmluZGluZyk7IH0KKyAgICB2b2lkIHNldENvbnN0
cnVjdG9yS2luZChDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKSB7IG1fY29uc3RydWN0
b3JLaW5kID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCk7IH0KKyAgICBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KIAogICAgIHZvaWQgY29s
bGVjdEZyZWVWYXJpYWJsZXMoU2NvcGUqIG5lc3RlZFNjb3BlLCBib29sIHNob3VsZFRyYWNrQ2xv
c2VkVmFyaWFibGVzKQogICAgIHsKQEAgLTYxNCw2ICs2MjMsOCBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9pc0Z1bmN0aW9uQm91bmRhcnkgOiAxOwogICAgIGJvb2wgbV9pc1ZhbGlkU3RyaWN0TW9k
ZSA6IDE7CiAgICAgYm9vbCBtX2hhc0FyZ3VtZW50cyA6IDE7CisgICAgdW5zaWduZWQgbV9jb25z
dHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVkIG1fZXhwZWN0ZWRTdXBlckJpbmRpbmcgOiAy
OwogICAgIGludCBtX2xvb3BEZXB0aDsKICAgICBpbnQgbV9zd2l0Y2hEZXB0aDsKIApAQCAtNjYz
LDcgKzY3NCw4IEBAIGNsYXNzIFBhcnNlciB7CiBwdWJsaWM6CiAgICAgUGFyc2VyKAogICAgICAg
ICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0
cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nLAotICAgICAgICBDb25zdHJ1
Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
VGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCk7CisgICAgICAgIENvbnN0
cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBUaGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkLCAKKyAgICAgICAgU3Vw
ZXJCaW5kaW5nID0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENvbnN0cnVjdG9yS2luZCA9IENv
bnN0cnVjdG9yS2luZDo6Tm9uZSk7CiAgICAgflBhcnNlcigpOwogCiAgICAgdGVtcGxhdGUgPGNs
YXNzIFBhcnNlZE5vZGU+CkBAIC04NjYsNiArODc4LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiBTY29wZVJlZigmbV9zY29wZVN0YWNrLCBpKTsKICAgICB9CiAKKyAgICBTY29wZVJlZiBj
bG9zZXN0UGFyZW50Tm9uQXJyb3dGdW5jdGlvbk5vbkxleGljYWxTY29wZSgpCisgICAgeworICAg
ICAgICB1bnNpZ25lZCBpID0gbV9zY29wZVN0YWNrLnNpemUoKSAtIDE7CisgICAgICAgIEFTU0VS
VChpIDwgbV9zY29wZVN0YWNrLnNpemUoKSAmJiBtX3Njb3BlU3RhY2suc2l6ZSgpKTsKKyAgICAg
ICAgd2hpbGUgKGkgJiYgKCFtX3Njb3BlU3RhY2tbaV0uaXNGdW5jdGlvbkJvdW5kYXJ5KCkgfHwg
bV9zY29wZVN0YWNrW2ldLmlzQXJyb3dGdW5jdGlvbigpKSkKKyAgICAgICAgICAgIGktLTsKKyAg
ICAgICAgLy8gV2hlbiByZWFjaGluZyB0aGUgdG9wIGxldmVsIHNjb3BlIChpdCBjYW4gYmUgbm9u
IGZ1bmN0aW9uIHNjb3BlKSwgd2UgcmV0dXJuIGl0LgorICAgICAgICByZXR1cm4gU2NvcGVSZWYo
Jm1fc2NvcGVTdGFjaywgaSk7CisgICAgfQogICAgIAogICAgIFNjb3BlUmVmIHB1c2hTY29wZSgp
CiAgICAgewpAQCAtMTUwOCwxNCArMTUyOSwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9k
ZT4gcGFyc2UoCiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQYXJzZXJCdWlsdGluTW9k
ZSBidWlsdGluTW9kZSwKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywKICAgICBQYXJz
ZXJFcnJvciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
ID0gbnVsbHB0ciwKLSAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwKLSAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRo
aXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQorICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29u
c3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCAKKyAgICBUaGlzVERaTW9kZSB0
aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkLAorICAgIFN1cGVyQmluZGlu
ZyB3cmFwcGVkQ29kZUJsb2NrU3VwZXJCaW5kaW5nID0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQs
CisgICAgQ29uc3RydWN0b3JLaW5kIHdyYXBwZWRDb2RlQmxvY2tDb25zdHJ1Y3RvcktpbmQgPSBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUpCiB7CiAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdp
b24oIlBhcnNpbmciKTsKIAogICAgIEFTU0VSVCghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgp
LmlzTnVsbCgpKTsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgp
KSB7Ci0gICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWls
dGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25z
dHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4g
cGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUsIHN1
cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUsIHdyYXBwZWRD
b2RlQmxvY2tTdXBlckJpbmRpbmcsIHdyYXBwZWRDb2RlQmxvY2tDb25zdHJ1Y3RvcktpbmQpOwog
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNl
PFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUpOwogICAgICAgICBpZiAocG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDBlOGQ0YTA3YjMyMzdkMjk4OTBj
MjFjNDUyOTM0NTdjNTNkMDdlZDEuLmVjNjE4YjU0Yjc0YWUwMDU0ZTYwMTMwYjI0NDAzYjIxM2Yx
NjMyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApA
QCAtOTgsMTEgKzk4LDE0IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRH
bG9iYWxDb2RlQmxvY2soVk0mIHZtLCBFeGVjdXRhYmxlVHlwZSogZXhlCiAgICAgICAgIGV4ZWN1
dGFibGUtPnJlY29yZFBhcnNlKHVubGlua2VkQ29kZUJsb2NrLT5jb2RlRmVhdHVyZXMoKSwgdW5s
aW5rZWRDb2RlQmxvY2stPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGZpcnN0TGluZSwgZmlyc3RM
aW5lICsgbGluZUNvdW50LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKTsKICAgICAgICAgcmV0dXJu
IHVubGlua2VkQ29kZUJsb2NrOwogICAgIH0KKyAgICAKKyAgICBDb25zdHJ1Y3RvcktpbmQgY3Vy
cmVudENvZGVCbG9ja0NvbnN0cnVjdG9yS2luZCA9IGV4ZWN1dGFibGUtPmV4ZWN1dGFibGVJbmZv
KCkuZGVyaXZlZENvbnRleHRUeXBlKCkgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0ID8gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIDogQ29uc3RydWN0b3JL
aW5kOjpOb25lOworICAgIFN1cGVyQmluZGluZyBjdXJyZW50Q29kZUJsb2NrU3VwZXJCaW5kID0g
ZXhlY3V0YWJsZS0+ZXhlY3V0YWJsZUluZm8oKS5kZXJpdmVkQ29udGV4dFR5cGUoKSAhPSAgRGVy
aXZlZENvbnRleHRUeXBlOjpOb25lID8gU3VwZXJCaW5kaW5nOjpOZWVkZWQgOiBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZDsKIAogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtl
ZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAogICAgICAgICAmdm0sIHNvdXJj
ZSwgSWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwKLSAgICAgICAgQ2FjaGVU
eXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90
TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9k
ZSk7CisgICAgICAgIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2Rl
LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgdGhpc1REWk1vZGUsIGN1cnJlbnRDb2RlQmxvY2tTdXBlckJpbmQsIGN1cnJlbnRD
b2RlQmxvY2tDb25zdHJ1Y3RvcktpbmQpOwogICAgIGlmICghcm9vdE5vZGUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCmluZGV4IGI5Yjk1MTUwZWYzMGFjOTI4NDQ3M2JkMzRlNDhjN2MyYTE0NTkwODcuLmE4
YzAxMTI2YjQ0ZWU3MTQzNGYwZjcwNmEyMWYzYjI5N2UzNjUzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgSW50
cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6OmludHJpbnNpYygpIGNvbnN0CiAKIGNvbnN0IENsYXNz
SW5mbyBTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJTY3JpcHRFeGVjdXRhYmxlIiwgJkV4
ZWN1dGFibGVCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoU2NyaXB0RXhlY3V0
YWJsZSkgfTsKIAotU2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0
cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wg
aXNJbkFycm93RnVuY3Rpb25Db250ZXh0KQorU2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0
YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29u
dGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0LCBEZXJpdmVkQ29udGV4dFR5
cGUgcGFyZW50RXZhbERlcml2ZWRDb250ZXh0VHlwZSkKICAgICA6IEV4ZWN1dGFibGVCYXNlKHZt
LCBzdHJ1Y3R1cmUsIE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRCkKICAgICAsIG1fZmVhdHVy
ZXMoaXNJblN0cmljdENvbnRleHQgPyBTdHJpY3RNb2RlRmVhdHVyZSA6IDApCiAgICAgLCBtX2Rp
ZFRyeVRvRW50ZXJJbkxvb3AoZmFsc2UpCkBAIC0xNDAsNiArMTQwLDcgQEAgU2NyaXB0RXhlY3V0
YWJsZTo6U2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVk0mIHZtLCBjb25z
dCBTb3VyY2VDb2QKICAgICAsIG1fbmV2ZXJPcHRpbWl6ZShmYWxzZSkKICAgICAsIG1faXNBcnJv
d0Z1bmN0aW9uQ29udGV4dChpc0luQXJyb3dGdW5jdGlvbkNvbnRleHQpCiAgICAgLCBtX2Rlcml2
ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVyaXZlZENvbnRleHRUeXBlKSkK
KyAgICAsIG1fcGFyZW50RXZhbERlcml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocGFyZW50RXZhbERlcml2ZWRDb250ZXh0VHlwZSkpCiAgICAgLCBtX292ZXJyaWRlTGluZU51
bWJlcigtMSkKICAgICAsIG1fZmlyc3RMaW5lKC0xKQogICAgICwgbV9sYXN0TGluZSgtMSkKQEAg
LTQxNSw3ICs0MTYsNyBAQCBKU09iamVjdCogU2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4
ZWN1dGlvbkltcGwoCiAKIGNvbnN0IENsYXNzSW5mbyBFdmFsRXhlY3V0YWJsZTo6c19pbmZvID0g
eyAiRXZhbEV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEV2YWxFeGVjdXRhYmxlKSB9OwogCi1FdmFsRXhlY3V0YWJsZSogRXZhbEV4
ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIERlcml2
ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFopCitFdmFs
RXhlY3V0YWJsZSogRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUg
dGhpc1REWk1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFi
bGVzVW5kZXJURFosIERlcml2ZWRDb250ZXh0VHlwZSBwYXJlbnRFdmFsRGVyaXZlZENvbnRleHRU
eXBlKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpIHsK
QEAgLTQyMyw3ICs0MjQsNyBAQCBFdmFsRXhlY3V0YWJsZSogRXZhbEV4ZWN1dGFibGU6OmNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZQogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKLSAgICBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEV2YWxFeGVjdXRhYmxlPigqZXhlYy0+aGVhcCgpKSkgRXZhbEV4
ZWN1dGFibGUoZXhlYywgc291cmNlLCBpc0luU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRU
eXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEV2YWxFeGVjdXRhYmxlPigqZXhlYy0+
aGVhcCgpKSkgRXZhbEV4ZWN1dGFibGUoZXhlYywgc291cmNlLCBpc0luU3RyaWN0Q29udGV4dCwg
ZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBwYXJlbnRFdmFsRGVy
aXZlZENvbnRleHRUeXBlKTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbihleGVjLT52
bSgpKTsKIAogICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRFdmFsQ29kZSA9IGds
b2JhbE9iamVjdC0+Y3JlYXRlRXZhbENvZGVCbG9jayhleGVjLCBleGVjdXRhYmxlLCB0aGlzVERa
TW9kZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgdmFyaWFibGVzVW5kZXJURFopOwpAQCAtNDM1
LDggKzQzNiw4IEBAIEV2YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlCiAgICAgcmV0dXJuIGV4ZWN1dGFi
bGU7CiB9CiAKLUV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5ldmFsRXhlY3V0YWJsZVN0cnVj
dHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRD
b250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKK0V2YWxFeGVjdXRhYmxlOjpFdmFs
RXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9v
bCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUs
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIHBhcmVudEV2
YWxEZXJpdmVkQ29udGV4dFR5cGUpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCku
ZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgaW5TdHJp
Y3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIHBh
cmVudEV2YWxEZXJpdmVkQ29udGV4dFR5cGUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCAzYTNmZDhmNDI5NzkxYmE3MjJkZDg1ZjBlMDA3
YWEzOWM1OGU2ODBlLi4wZjAyYjliNTExODM5NmMwMmM3MjY0MzBjODgzOWJiZmQyMzZjOTY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC0zNTEsNiAr
MzUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQogICAgIGJvb2wgaXNTdHJpY3RN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJlOyB9CiAg
ICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PERlcml2ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9
CisgICAgRGVyaXZlZENvbnRleHRUeXBlIHBhcmVudEV2YWxEZXJpdmVkQ29udGV4dFR5cGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEZXJpdmVkQ29udGV4dFR5cGU+KG1fcGFyZW50RXZh
bERlcml2ZWRDb250ZXh0VHlwZSk7IH0KIAogICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3Qg
eyByZXR1cm4gaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsgfQog
ICAgICAgICAKQEAgLTQwMCw3ICs0MDEsNyBAQCBwcml2YXRlOgogICAgIEpTT2JqZWN0KiBwcmVw
YXJlRm9yRXhlY3V0aW9uSW1wbChFeGVjU3RhdGUqLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSosIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgU2NyaXB0RXhlY3V0YWJs
ZShTdHJ1Y3R1cmUqLCBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250
ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0KTsK
KyAgICBTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSosIFZNJiwgY29uc3QgU291cmNlQ29kZSYs
IGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0luQXJy
b3dGdW5jdGlvbkNvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBwYXJlbnRFdmFsRGVyaXZlZENv
bnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lKTsKIAogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQogICAgIHsKQEAgLTQyMCw3ICs0MjEsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgYm9vbCBtX25ldmVyT3B0aW1pemUgOiAxOwogICAgIGJvb2wgbV9pc0Fycm93RnVuY3Rpb25D
b250ZXh0IDogMTsKICAgICB1bnNpZ25lZCBtX2Rlcml2ZWRDb250ZXh0VHlwZSA6IDI7IC8vIERl
cml2ZWRDb250ZXh0VHlwZQotCisgICAgdW5zaWduZWQgbV9wYXJlbnRFdmFsRGVyaXZlZENvbnRl
eHRUeXBlIDogMjsgLy8gRGVyaXZlZENvbnRleHRUeXBlCiAgICAgaW50IG1fb3ZlcnJpZGVMaW5l
TnVtYmVyOwogICAgIGludCBtX2ZpcnN0TGluZTsKICAgICBpbnQgbV9sYXN0TGluZTsKQEAgLTQ0
NCw3ICs0NDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2V2YWxDb2RlQmxvY2suZ2V0
KCk7CiAgICAgfQogCi0gICAgc3RhdGljIEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRl
KiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIFRoaXNURFpNb2Rl
LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCopOworICAgIHN0YXRpYyBFdmFsRXhlY3V0YWJsZSogY3JlYXRl
KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBU
aGlzVERaTW9kZSwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqLCBEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJp
dmVkQ29udGV4dFR5cGU6Ok5vbmUpOwogCiAgICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBnZW5lcmF0
ZWRKSVRDb2RlKCkKICAgICB7CkBAIC00NTgsNyArNDU5LDcgQEAgcHVibGljOgogICAgICAgICAK
ICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygp
IGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgp
LCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3RO
ZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgp
LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkgLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5m
byBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFs
KCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRl
cml2ZWRDb250ZXh0VHlwZSgpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkgLCBmYWxzZSwgcGFy
ZW50RXZhbERlcml2ZWRDb250ZXh0VHlwZSgpKTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFi
bGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9
CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtl
ZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9CkBAIC00NjcsNyArNDY4
LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAgICAgZnJp
ZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiAKLSAgICBFdmFsRXhlY3V0YWJsZShFeGVjU3Rh
dGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250
ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KTsKKyAgICBFdmFsRXhlY3V0YWJs
ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQsIERl
cml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBEZXJpdmVkQ29u
dGV4dFR5cGUgcGFyZW50RXZhbERlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlw
ZTo6Tm9uZSk7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3Vw
ZXJwcm9wZXJ0eS5qcwppbmRleCAwNTBmZTkwNTcxOWJhMDg2Nzk3MTRhMzgwYjQxY2UxYTM0NWFm
NTE1Li5hOGJhZDE1YTgyY2Q3NjI5YTQ5MDhhOWQxMjIyNzBjYmJmYjBkODE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC1iaW5kLXN1cGVycHJvcGVydHkuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcnByb3BlcnR5LmpzCkBAIC0x
MjMsMTIgKzEyMyw2IEBAIHZhciBHID0gY2xhc3MgRyBleHRlbmRzIEEgewogICAgICBnZXRQYXJl
bnRWYWx1ZSgpIHsKICAgICAgICAgIHJldHVybiBzdXBlci5nZXRWYWx1ZSgpOwogICAgICB9Ci0g
ICAgIGdldFBhcmVudFZhbHVlV2l0aEVycm9yKCkgewotICAgICAgICAgdmFyIGYgPSAgZnVuY3Rp
b24gKCkgewotICAgICAgICAgICAgIHJldHVybiAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOwotICAg
ICAgICAgfTsKLSAgICAgICAgIHJldHVybiBmKCk7Ci0gICAgIH0KICB9OwogCiAgdmFyIGcgPSBu
ZXcgRygpOwpAQCAtMTQ5LDIwICsxNDMsNiBAQCBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBp
KyspIHsKICAgICB0ZXN0Q2FzZShnZXRWYWx1ZSgpLCAnbmV3LXZhbHVlJywgJ0Vycm9yOiBTb21l
IHByb2JsZW0gd2l0aCB1c2luZyBhcnJvdyBhbmQgInN1cGVyIiBpbnNpZGUgb2YgdGhlIG1ldGhv
ZCB0aGF0IHJldHVuIGFycm93IGZ1bmN0aW9uJyk7CiB9CiAKLXZhciBnMiA9IG5ldyBHKCk7Ci1m
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKLSAgICBsZXQgZXJyb3IgPSBmYWxzZTsK
LSAgICB0cnkgewotICAgICAgIGcyLmdldFBhcmVudFZhbHVlV2l0aEVycm9yKCkoKTsKLSAgICB9
IGNhdGNoKGUpIHsKLSAgICAgIC8vIEZJWE1FOiBzaG91bGQgYnkgY2hlY2sgaWYgZSBpbnN0YW5j
ZW9mIFN5bnRheEVycm9yCi0gICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUwODkzCi0gICAgICBlcnJvciA9IHRydWU7Ci0gICAgfQotICAgIHRlc3RDYXNl
KGVycm9yLCB0cnVlLCAnRXJyb3I6IHVzaW5nICJzdXBlciIgc2hvdWxkIGxlYWQgdG8gZXJyb3In
KTsKLX0KLQotCiB2YXIgSCA9IGNsYXNzIEggZXh0ZW5kcyBBIHsKICAgICBjb25zdHJ1Y3Rvcigp
IHsKICAgICAgICAgdmFyIGFycm93ID0gKCkgPT4gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA2Nzk0Y2VhYWJhMTY5NjBkZTkxMTMxNzE5NGQ5NjYyZjExM2Q1NGVmLi43ZGI0NjU0OWY0
MTM4NjU1NmNjMzlhYmFiN2UxMjlkMDA3NDZlYjVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTYtMDItMDQgIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0VTNl0gQXJyb3cgZnVuY3Rpb24gc3ludGF4LiBVc2luZyAnc3VwZXInIGluIGFycm93
IGZ1bmN0aW9uIHRoYXQgZGVjbGFyZWQgb3V0IG9mIHRoZSBjbGFzcyBzaG91bGQgbGVhZCB0byBT
eW50YXggZXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MDg5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
IAorICAgICAgICBBZGRpbmcgdGVzdHMgZm9yIHVzaW5nIG9mIHRoZSAnc3VwZXInIGluc2lkZSBv
ZiB0aGUgYXJyb3cgZnVuY3Rpb24KKyAKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXN1cGVy
cHJvcGVydHktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tc3ludGF4
LWVycm9ycy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVu
Y3Rpb24tc3VwZXJwcm9wZXJ0eS5qczoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dm
dW5jdGlvbi1zeW50YXgtZXJyb3JzLmpzOgorCiAyMDE2LTAxLTIxICBTa2FjaGtvdiBPbGVrc2Fu
ZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAgICAgIFtFUzZdIEFycm93IGZ1bmN0aW9u
LiBEZWZhdWx0IGFyZ3VtZW50cyBpbiBhcnJvdyBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHktZXhwZWN0ZWQudHh0CmluZGV4
IDNkZjJjNDk1ZmI5ZmYxZTI3NjMzMGYxNTNjMTQwYmI1ZmY1ZjQ5ZDMuLjQ3NmY5ZDRkMWVlODc5
NzZiY2I3NDM5Y2RiMGY2MTViNjdiYjY2N2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Fy
cm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
anMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LWV4cGVjdGVkLnR4dApAQCAtOSw3ICs5LDYg
QEAgUEFTUyBFLmdldFBhcmVudFN0YXRpY1ZhbHVlKCkgaXMgZXhwZWN0ZWRWYWx1ZQogUEFTUyBm
LnByb3AgaXMgZXhwZWN0ZWRWYWx1ZSArICItIiArIGV4cGVjdGVkVmFsdWUKIFBBU1MgZi5wcm9w
IGlzIGV4cGVjdGVkVmFsdWUgKyAiLSIgKyAibmV3LXZhbHVlIgogUEFTUyAobmV3IEYoKSkuZ2V0
UGFyZW50VmFsdWUoKSBpcyBleHBlY3RlZFZhbHVlCi1QQVNTIChuZXcgRigpKS5nZXRQYXJlbnRW
YWx1ZVdpdGhFcnJvcigpKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3N1cGVyLmdldFZhbHVlJykuCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMtZXhwZWN0ZWQudHh0CmluZGV4
IDc1NTNmNDFiOWQxODQ3ODE5ZmM1Njc0ZGFmZDMyYTlkYTA0MTlhZDcuLjdkY2ZjYjAzMGYyMjZm
NzFiYTVmOTFjOWVmYjQ0MWM1N2E2ZTBmYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Fy
cm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
anMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXJyb3JzLWV4cGVjdGVkLnR4dApAQCAtMTMxLDYgKzEz
MSwxOSBAQCBQQVNTIHZhciBhcnIxID0gW2EsIGJdID0+IGEgKyBiOyB0aHJldyBleGNlcHRpb24g
U3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJwogUEFTUyB2YXIgYXJyMiA9IHthLCBifSA9
PiBhICsgYjsgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc9
PicuIEV4cGVjdGVkICc7JyBhZnRlciB2YXJpYWJsZSBkZWNsYXJhdGlvbi4uCiBQQVNTIHZhciBh
cnIzID0ge2M6YSxkOmJ9ID0+IGEgKyBiOyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVu
ZXhwZWN0ZWQgdG9rZW4gJz0+Jy4gRXhwZWN0ZWQgJzsnIGFmdGVyIHZhcmlhYmxlIGRlY2xhcmF0
aW9uLi4KIFBBU1MgdmFyIGFycjMgPSB7YzpiLGQ6YX0gPT4gYSArIGI7IHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPT4nLiBFeHBlY3RlZCAnOycgYWZ0ZXIg
dmFyaWFibGUgZGVjbGFyYXRpb24uLgorUEFTUyB2YXIgYXJyNCA9ICgpID0+IHsgc3VwZXIoKTsg
fTsgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNp
ZGUgb2YgYSBjbGFzcyBjb25zdHJ1Y3Rvci4uCitQQVNTIHZhciBhcnI0ID0gKCkgPT4geyBzdXBl
cjsgfTsgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBDYW5ub3QgcmVmZXJlbmNlIHN1cGVy
Li4KK1BBU1MgdmFyIGFycjUgPSAoKSA9PiB7IHN1cGVyLmdldFZhbHVlKCk7IH07IHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogc3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1ldGhvZCBv
ZiBhIGRlcml2ZWQgY2xhc3MuLgorUEFTUyB2YXIgYXJyNiA9ICgpID0+ICBzdXBlcigpOyB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IENhbm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBh
IGNsYXNzIGNvbnN0cnVjdG9yLi4KK1BBU1MgdmFyIGFycjcgPSAoKSA9PiAgc3VwZXI7IHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IHJlZmVyZW5jZSBzdXBlci4uCitQQVNTIHZh
ciBhcnI4ID0gKCkgPT4gIHN1cGVyLmdldFZhbHVlKCk7IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogc3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xh
c3MuLgorUEFTUyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9uIGEgKCkgeyByZXR1
cm4gKCkgPT4geyBzdXBlcigpOyB9O319IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fu
bm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IuLgorUEFTUyBj
bGFzcyBCIHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9uIGIgKCkgeyByZXR1cm4gKCkgPT4geyBz
dXBlcjsgfTsgfTsgfX0gdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBDYW5ub3QgcmVmZXJl
bmNlIHN1cGVyLi4KK1BBU1MgY2xhc3MgQyB7IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlvbiBjICgp
IHsgcmV0dXJuICgpID0+IHsgc3VwZXIuZ2V0VmFsdWUoKTsgfTt9fSB0aHJldyBleGNlcHRpb24g
U3ludGF4RXJyb3I6IHN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJp
dmVkIGNsYXNzLi4KK1BBU1MgY2xhc3MgRCB7IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlvbiBhICgp
IHsgcmV0dXJuICgpID0+IHN1cGVyKCk7IH19IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
Q2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IuLgorUEFT
UyBjbGFzcyBFIHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9uIGIgKCkgeyByZXR1cm4gKCkgPT4g
c3VwZXI7IH07IH19IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IHJlZmVyZW5j
ZSBzdXBlci4uCitQQVNTIGNsYXNzIEYgeyBjb25zdHJ1Y3RvcigpIHsgZnVuY3Rpb24gYyAoKSB7
IHJldHVybiAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOyB9fSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IHN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNs
YXNzLi4KK1BBU1MgY2xhc3MgRyB7fTsgY2xhc3MgRzIgZXh0ZW5kcyBHIHsgZ2V0VmFsdWUoKSB7
IGZ1bmN0aW9uIGMgKCkgeyByZXR1cm4gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsgfX0gdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBzdXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9k
IG9mIGEgZGVyaXZlZCBjbGFzcy4uCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAK
IFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9h
cnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LmpzCmluZGV4IGU1ZjI0OWNiYmJkYTI4OGYx
MzdhNTIzNzBmMjYxMWNiNDE1NzFmYmUuLjJmNTg3ZmQ1NzIyNjZhYzk2ZDgzZGEyMWU0OTU1ZTMx
ZjI1ZTk1NzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1
bmN0aW9uLXN1cGVycHJvcGVydHkuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qcwpAQCAtNjMsMTIgKzYzLDYgQEAgY2xhc3Mg
RiBleHRlbmRzIEEgewogICAgICAgICBsZXQgYXJyb3cgPSAoKSA9PiAoKSA9PiBzdXBlci5nZXRW
YWx1ZSgpOwogICAgICAgICByZXR1cm4gYXJyb3coKSgpOwogICAgIH0KLSAgICBnZXRQYXJlbnRW
YWx1ZVdpdGhFcnJvcigpIHsKLSAgICAgICAgdmFyIGYgPSAgZnVuY3Rpb24gKCkgewotICAgICAg
ICAgICAgcmV0dXJuICgpID0+IHN1cGVyLmdldFZhbHVlKCk7Ci0gICAgICAgIH07Ci0gICAgICAg
IHJldHVybiBmKCk7Ci0gICAgfQogIH07CiAKIHNob3VsZEJlKCcobmV3IEIoKSkuZ2V0VmFsdWVQ
YXJlbnRGdW5jdGlvbigpJywgJ2V4cGVjdGVkVmFsdWUnKTsKQEAgLTkwLDYgKzg0LDQgQEAgc2hv
dWxkQmUoJ2YucHJvcCcsICdleHBlY3RlZFZhbHVlICsgIi0iICsgIm5ldy12YWx1ZSInKTsKIAog
c2hvdWxkQmUoJyhuZXcgRigpKS5nZXRQYXJlbnRWYWx1ZSgpJywgJ2V4cGVjdGVkVmFsdWUnKTsK
IAotc2hvdWxkVGhyb3coJyhuZXcgRigpKS5nZXRQYXJlbnRWYWx1ZVdpdGhFcnJvcigpKCknKTsK
LQogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXJyb3JzLmpzIGIvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy5qcwppbmRl
eCA1YTIyNjM0Yzg3NTI1MjdlMzg0NzQ1MmFmMzY2NWFkNjc4ZTJmZjEyLi5lOGYyNGY0ZmFlYWU3
ZDMyNjExZjNlOWIyM2YwZDBjZmNmMDc0YWQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXJyb3JzLmpzCisrKyBiL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMuanMKQEAgLTQ4
LDQgKzQ4LDIxIEBAIHNob3VsZFRocm93KCd2YXIgYXJyMiA9IHthLCBifSA9PiBhICsgYjsnKTsK
IHNob3VsZFRocm93KCd2YXIgYXJyMyA9IHtjOmEsZDpifSA9PiBhICsgYjsnKTsKIHNob3VsZFRo
cm93KCd2YXIgYXJyMyA9IHtjOmIsZDphfSA9PiBhICsgYjsnKTsKIAorc2hvdWxkVGhyb3coJ3Zh
ciBhcnI0ID0gKCkgPT4geyBzdXBlcigpOyB9OycsICciU3ludGF4RXJyb3I6IENhbm5vdCBjYWxs
IHN1cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNzIGNvbnN0cnVjdG9yLiInKTsKK3Nob3VsZFRocm93
KCd2YXIgYXJyNCA9ICgpID0+IHsgc3VwZXI7IH07JywgJyJTeW50YXhFcnJvcjogQ2Fubm90IHJl
ZmVyZW5jZSBzdXBlci4iJyk7CitzaG91bGRUaHJvdygndmFyIGFycjUgPSAoKSA9PiB7IHN1cGVy
LmdldFZhbHVlKCk7IH07JywgJyJTeW50YXhFcnJvcjogc3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBp
biBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MuIicpOworCitzaG91bGRUaHJvdygndmFyIGFy
cjYgPSAoKSA9PiAgc3VwZXIoKTsnLCAnIlN5bnRheEVycm9yOiBDYW5ub3QgY2FsbCBzdXBlcigp
IG91dHNpZGUgb2YgYSBjbGFzcyBjb25zdHJ1Y3Rvci4iJyk7CitzaG91bGRUaHJvdygndmFyIGFy
cjcgPSAoKSA9PiAgc3VwZXI7JywgJyJTeW50YXhFcnJvcjogQ2Fubm90IHJlZmVyZW5jZSBzdXBl
ci4iJyk7CitzaG91bGRUaHJvdygndmFyIGFycjggPSAoKSA9PiAgc3VwZXIuZ2V0VmFsdWUoKTsn
LCAnIlN5bnRheEVycm9yOiBzdXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEg
ZGVyaXZlZCBjbGFzcy4iJyk7CisKK3Nob3VsZFRocm93KCdjbGFzcyBBIHsgY29uc3RydWN0b3Io
KSB7IGZ1bmN0aW9uIGEgKCkgeyByZXR1cm4gKCkgPT4geyBzdXBlcigpOyB9O319JywgJyJTeW50
YXhFcnJvcjogQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0
b3IuIicpOworc2hvdWxkVGhyb3coJ2NsYXNzIEIgeyBjb25zdHJ1Y3RvcigpIHsgZnVuY3Rpb24g
YiAoKSB7IHJldHVybiAoKSA9PiB7IHN1cGVyOyB9OyB9OyB9fScsICciU3ludGF4RXJyb3I6IENh
bm5vdCByZWZlcmVuY2Ugc3VwZXIuIicpOworc2hvdWxkVGhyb3coJ2NsYXNzIEMgeyBjb25zdHJ1
Y3RvcigpIHsgZnVuY3Rpb24gYyAoKSB7IHJldHVybiAoKSA9PiB7IHN1cGVyLmdldFZhbHVlKCk7
IH07fX0nLCAnIlN5bnRheEVycm9yOiBzdXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9k
IG9mIGEgZGVyaXZlZCBjbGFzcy4iJyk7CisKK3Nob3VsZFRocm93KCdjbGFzcyBEIHsgY29uc3Ry
dWN0b3IoKSB7IGZ1bmN0aW9uIGEgKCkgeyByZXR1cm4gKCkgPT4gc3VwZXIoKTsgfX0nLCAnIlN5
bnRheEVycm9yOiBDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2YgYSBjbGFzcyBjb25zdHJ1
Y3Rvci4iJyk7CitzaG91bGRUaHJvdygnY2xhc3MgRSB7IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlv
biBiICgpIHsgcmV0dXJuICgpID0+IHN1cGVyOyB9OyB9fScsICciU3ludGF4RXJyb3I6IENhbm5v
dCByZWZlcmVuY2Ugc3VwZXIuIicpOworc2hvdWxkVGhyb3coJ2NsYXNzIEYgeyBjb25zdHJ1Y3Rv
cigpIHsgZnVuY3Rpb24gYyAoKSB7IHJldHVybiAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOyB9fScs
ICciU3ludGF4RXJyb3I6IHN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBk
ZXJpdmVkIGNsYXNzLiInKTsKK3Nob3VsZFRocm93KCdjbGFzcyBHIHt9OyBjbGFzcyBHMiBleHRl
bmRzIEcgeyBnZXRWYWx1ZSgpIHsgZnVuY3Rpb24gYyAoKSB7IHJldHVybiAoKSA9PiBzdXBlci5n
ZXRWYWx1ZSgpOyB9fScsICciU3ludGF4RXJyb3I6IHN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4g
YSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzLiInKTsKKwogdmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270851</attachid>
            <date>2016-02-08 02:59:38 -0800</date>
            <delta_ts>2016-02-08 11:29:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150893-20160208125914.patch</filename>
            <type>text/plain</type>
            <size>18920</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2MDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NmM3NGZkNGEzMDI0MzQyZDc5MDY5NjBlZmJmZWI1YTRjYWRjOTU0Li5mYTc5Y2VhN2E4YzVkY2Jj
YTNhNjg5Yjg1MWRjNmQ3ZTA5YzA0MjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxNi0wMi0wOCAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIFVzaW5nICdz
dXBlcicgaW4gYXJyb3cgZnVuY3Rpb24gdGhhdCBkZWNsYXJlZCBvdXQgb2YgdGhlIGNsYXNzIHNo
b3VsZCBsZWFkIHRvIFN5bnRheCBlcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgJ3N1cGVyJyBhbmQgJ3N1cGVyKCknIGluc2lkZSBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24gc2hvdWxkIGxlYWQgdG8gc3ludGF4IGVycm9yIGlmIHRoZXkgYXJlIHVzZWQg
CisgICAgICAgIG91dCBvZiB0aGUgY2xhc3MgY29udGV4dCBvciB0aGV5IHdyYXBwZWQgYnkgb3Jk
aW5hcnkgZnVuY3Rpb24uIE5vdyBKU0MgcmV0dXJucyBSZWZlcmVuY2VFcnJvciBidXQgCisgICAg
ICAgIHNob3VsZCByZXR1cm4gU3ludGF4RXJyb3IgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcg
c3BlY3M6CisgICAgICAgIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2
Mi82LjAvI3NlYy1mdW5jdGlvbi1kZWZpbml0aW9ucy1zdGF0aWMtc2VtYW50aWNzLWVhcmx5LWVy
cm9ycworICAgICAgICBhbmQgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLWFycm93LWZ1bmN0aW9uLWRlZmluaXRpb25zLXJ1bnRpbWUtc2VtYW50aWNz
LWV2YWx1YXRpb24gCisgICAgICAgIEN1cnJlbiBwYXRjaCBpbXBsZW1lbnRlZCBvbmx5IG9uZSBj
YXNlIHdoZW4gc3VwZXIvc3VwZXIoKSBhcmUgdXNlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0
aW9uCisgICAgICAgIENhc2Ugd2hlbiBzdXBlci9zdXBlcigpIGFyZSB1c2VkIHdpdGhpbiB0aGUg
ZXZhbDoKKyAgICAgICAgICAgY2xhc3MgQSB7fSAKKyAgICAgICAgICAgY2xhc3MgQiBleHRlbmRz
IEEgeyAKKyAgICAgICAgICAgICAgIGNvc3RydWN0b3IoKSB7IGV2YWwoInN1cGVyKCkiKTt9IAor
ICAgICAgICAgICB9CisgICAgICAgIGlzIG5vdCBwYXJ0IG9mIHRoaXMgcGF0Y2ggYW5kIHdpbGwg
YmUgaW1wbGVtZW50ZWQgaW4gdGhpcyBpc3N1ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUzODY0LiAKKyAgICAgICAgVGhlIHNhbWUgZm9yIGNhc2Ugd2hlbiBldmFs
IHdpdGggc3VwZXIvc3VwZXIoKSBpcyBpbnZva2VkIGluIGFycm93IGZ1bmN0aW9uIHdpbGwgYmUg
CisgICAgICAgIGltcGxlbWVudGVkIGluIGlzc3VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTM5NzcuIAorIAorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OlNjb3BlKToKKyAg
ICAgICAgKEpTQzo6U2NvcGU6OnNldEV4cGVjdGVkU3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpT
Qzo6U2NvcGU6OmV4cGVjdGVkU3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNl
dENvbnN0cnVjdG9yS2luZCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpjb25zdHJ1Y3RvcktpbmQp
OgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3Nlc3RQYXJlbnROb25BcnJvd0Z1bmN0aW9uTm9u
TGV4aWNhbFNjb3BlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLWJpbmQtc3VwZXJjYWxsLTQuanM6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVycHJvcGVydHkuanM6CisKIDIwMTYtMDEtMTkgIFNrYWNo
a292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gQXJy
b3cgZnVuY3Rpb24gc3ludGF4LiBBcnJvdyBmdW5jdGlvbiBzcGVjaWZpYyBmZWF0dXJlcy4gTGV4
aWNhbCBiaW5kICJhcmd1bWVudHMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKaW5kZXggNTk2NTkxOTNkZjc4NzdiODEyYjE4NWE2MjZmMWE4Njg4ODA5NWM0MS4uNjY2ZGFk
NjIzMjVjYjA1M2U0MDVjZmUxODBjYjc4MjhlMTM0NDZhZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTk3NSw4ICsxOTc1LDkgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhU
cmVlQnVpbGQKICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5
QmxvY2s7CiAgICAgfQogCi0gICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rv
cktpbmQgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOwotICAgIAorICAgIGZ1bmN0aW9uU2NvcGUt
PnNldENvbnN0cnVjdG9yS2luZChjb25zdHJ1Y3RvcktpbmQpOworICAgIGZ1bmN0aW9uU2NvcGUt
PnNldEV4cGVjdGVkU3VwZXJCaW5kaW5nKGV4cGVjdGVkU3VwZXJCaW5kaW5nKTsKKwogICAgIGZ1
bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKICAgICAKICAgICAvLyBJ
ZiB3ZSBrbm93IGFib3V0IHRoaXMgZnVuY3Rpb24gYWxyZWFkeSwgd2UgY2FuIHVzZSB0aGUgY2Fj
aGVkIGluZm8gYW5kIHNraXAgdGhlIHBhcnNlciB0byB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbi4K
QEAgLTIwNjUsMTIgKzIwNjYsMjQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29s
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAg
c2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqZnVu
Y3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90
IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBzZW1hbnRp
Y0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqZnVuY3Rpb25JbmZvLm5h
bWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVu
Y3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0KLSAgICBpZiAoZnVuY3Rpb25TY29w
ZS0+aGFzRGlyZWN0U3VwZXIoKSAmJiBmdW5jdGlvbkJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rp
b25Cb2R5QmxvY2spIHsKLSAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCFpc0NsYXNzQ29uc3Ry
dWN0b3IsICJDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2YgYSBjbGFzcyBjb25zdHJ1Y3Rv
ciIpOwotICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY29uc3RydWN0b3JLaW5kICE9IENvbnN0
cnVjdG9yS2luZDo6RGVyaXZlZCwgIkNhbm5vdCBjYWxsIHN1cGVyKCkgaW4gYSBiYXNlIGNsYXNz
IGNvbnN0cnVjdG9yIik7CisgICAgLy8gSXQgdW5uY2VjZXNzYXJ5IHRvIGNoZWNrIG9mIHVzaW5n
IHN1cGVyIGR1cmluZyByZXBhcnNpbmcgb25lIG1vcmUgdGltZS4gQWxzbyBpdCBjYW4gbGVhZCB0
byBzeW50YXggZXJyb3IKKyAgICAvLyBpbiBjYXNlIG9mIGFycm93IGZ1bmN0aW9uIGJlY3Vhc2Ug
ZHVyaW5nIHJlcGFyc2luZyB3ZSBkb24ndCBrbm93IHRoYXQgcGFyc2UgYXJyb3cgZnVuY3Rpb24K
KyAgICAvLyBpbnNpZGUgb2YgdGhlIGNvbnN0cnVjdG9yIG9yIG1ldGhvZAorICAgIGlmICghbV9s
ZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CisgICAgICAgIGlmIChmdW5jdGlvblNjb3Bl
LT5oYXNEaXJlY3RTdXBlcigpKSB7CisgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQgZnVuY3Rp
b25Db25zdHJ1Y3RvcktpbmQgPSBmdW5jdGlvbkJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25C
b2R5QmxvY2sKKyAgICAgICAgICAgICAgICA/IGNvbnN0cnVjdG9yS2luZAorICAgICAgICAgICAg
ICAgIDogY2xvc2VzdFBhcmVudE5vbkFycm93RnVuY3Rpb25Ob25MZXhpY2FsU2NvcGUoKS0+Y29u
c3RydWN0b3JLaW5kKCk7CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZnVuY3Rpb25D
b25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCAiQ2Fubm90IGNhbGwgc3Vw
ZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IiKTsKKyAgICAgICAgICAgIHNlbWFu
dGljRmFpbElmVHJ1ZShmdW5jdGlvbkNvbnN0cnVjdG9yS2luZCAhPSBDb25zdHJ1Y3RvcktpbmQ6
OkRlcml2ZWQsICJDYW5ub3QgY2FsbCBzdXBlcigpIGluIGEgYmFzZSBjbGFzcyBjb25zdHJ1Y3Rv
ciIpOworICAgICAgICB9CisgICAgICAgIGlmIChmdW5jdGlvblNjb3BlLT5uZWVkc1N1cGVyQmlu
ZGluZygpKSB7CisgICAgICAgICAgICBTdXBlckJpbmRpbmcgZnVuY3Rpb25TdXBlckJpbmRpbmcg
PSBmdW5jdGlvbkJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sKKyAgICAgICAg
ICAgICAgICA/IGV4cGVjdGVkU3VwZXJCaW5kaW5nCisgICAgICAgICAgICAgICAgOiBjbG9zZXN0
UGFyZW50Tm9uQXJyb3dGdW5jdGlvbk5vbkxleGljYWxTY29wZSgpLT5leHBlY3RlZFN1cGVyQmlu
ZGluZygpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGZ1bmN0aW9uU3VwZXJCaW5k
aW5nID09IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCAic3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBp
biBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MiKTsKKyAgICAgICAgfQogICAgIH0KLSAgICBp
ZiAoZnVuY3Rpb25TY29wZS0+bmVlZHNTdXBlckJpbmRpbmcoKSAmJiBmdW5jdGlvbkJvZHlUeXBl
ID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2spCi0gICAgICAgIHNlbWFudGljRmFpbElmVHJ1
ZShleHBlY3RlZFN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgInN1cGVy
IGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzIik7CiAKICAg
ICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24gPSBKU1Rva2VuTG9jYXRpb24obV90b2tlbi5tX2xv
Y2F0aW9uKTsKICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zm
c2V0OwpAQCAtMjA4Miw3ICsyMDk1LDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBi
b29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAK
ICAgICAvLyBDYWNoZSB0aGUgdG9rZW5pemVyIHN0YXRlIGFuZCB0aGUgZnVuY3Rpb24gc2NvcGUg
dGhlIGZpcnN0IHRpbWUgdGhlIGZ1bmN0aW9uIGlzIHBhcnNlZC4KICAgICAvLyBBbnkgZnV0dXJl
IHJlcGFyc2luZyBjYW4gdGhlbiBza2lwIHRoZSBmdW5jdGlvbi4KLSAgICBzdGF0aWMgY29uc3Qg
aW50IG1pbmltdW1GdW5jdGlvbkxlbmd0aFRvQ2FjaGUgPSAxNjsKKyAgICAvLyBGb3IgYXJyb3cg
ZnVuY3Rpb24gaXMgOCA9IHg9PnggKyA0IHN5bWJvbHM7CisgICAgLy8gRm9yIG9yZGluYXJ5IGZ1
bmN0aW9uIGlzIDE2ICA9IGZ1bmN0aW9uKCl7fSArIDQgc3ltYm9scworICAgIGNvbnN0IGludCBt
aW5pbXVtRnVuY3Rpb25MZW5ndGhUb0NhY2hlID0gZnVuY3Rpb25Cb2R5VHlwZSA9PSBTdGFuZGFy
ZEZ1bmN0aW9uQm9keUJsb2NrID8gMTYgOiA4OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VQ
cm92aWRlckNhY2hlSXRlbT4gbmV3SW5mbzsKICAgICBpbnQgZnVuY3Rpb25MZW5ndGggPSBmdW5j
dGlvbkluZm8uZW5kT2Zmc2V0IC0gZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0OwogICAgIGlmIChU
cmVlQnVpbGRlcjo6Q2FuVXNlRnVuY3Rpb25DYWNoZSAmJiBtX2Z1bmN0aW9uQ2FjaGUgJiYgZnVu
Y3Rpb25MZW5ndGggPiBtaW5pbXVtRnVuY3Rpb25MZW5ndGhUb0NhY2hlKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBiMGI1N2I0YmZhNzA0MzhhMjdlOTFiNmFjODQw
MzVlOWJmMDg1MjgxLi4zNzg3NjM3YTNiZGQ1ZjNmMzI2ZjMxYjI3ZWFkMzgyYzc0NjUxMWUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTE3NSw2ICsxNzUsOCBAQCBz
dHJ1Y3QgU2NvcGUgewogICAgICAgICAsIG1faXNGdW5jdGlvbkJvdW5kYXJ5KGZhbHNlKQogICAg
ICAgICAsIG1faXNWYWxpZFN0cmljdE1vZGUodHJ1ZSkKICAgICAgICAgLCBtX2hhc0FyZ3VtZW50
cyhmYWxzZSkKKyAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oQ29uc3RydWN0b3JLaW5kOjpOb25lKSkKKyAgICAgICAgLCBtX2V4cGVjdGVkU3VwZXJCaW5k
aW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCkpCiAgICAg
ICAgICwgbV9sb29wRGVwdGgoMCkKICAgICAgICAgLCBtX3N3aXRjaERlcHRoKDApCiAgICAgewpA
QCAtMTk3LDYgKzE5OSw4IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICwgbV9pc0Z1bmN0aW9u
Qm91bmRhcnkocmhzLm1faXNGdW5jdGlvbkJvdW5kYXJ5KQogICAgICAgICAsIG1faXNWYWxpZFN0
cmljdE1vZGUocmhzLm1faXNWYWxpZFN0cmljdE1vZGUpCiAgICAgICAgICwgbV9oYXNBcmd1bWVu
dHMocmhzLm1faGFzQXJndW1lbnRzKQorICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHJocy5t
X2NvbnN0cnVjdG9yS2luZCkKKyAgICAgICAgLCBtX2V4cGVjdGVkU3VwZXJCaW5kaW5nKHJocy5t
X2V4cGVjdGVkU3VwZXJCaW5kaW5nKQogICAgICAgICAsIG1fbG9vcERlcHRoKHJocy5tX2xvb3BE
ZXB0aCkKICAgICAgICAgLCBtX3N3aXRjaERlcHRoKHJocy5tX3N3aXRjaERlcHRoKQogICAgICAg
ICAsIG1fbW9kdWxlU2NvcGVEYXRhKHJocy5tX21vZHVsZVNjb3BlRGF0YSkKQEAgLTQ1OCw2ICs0
NjIsMTEgQEAgc3RydWN0IFNjb3BlIHsKIAogICAgIGJvb2wgbmVlZHNTdXBlckJpbmRpbmcoKSB7
IHJldHVybiBtX25lZWRzU3VwZXJCaW5kaW5nOyB9CiAgICAgdm9pZCBzZXROZWVkc1N1cGVyQmlu
ZGluZygpIHsgbV9uZWVkc1N1cGVyQmluZGluZyA9IHRydWU7IH0KKyAgICAKKyAgICB2b2lkIHNl
dEV4cGVjdGVkU3VwZXJCaW5kaW5nKFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcpIHsgbV9leHBl
Y3RlZFN1cGVyQmluZGluZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpOyB9
CisgICAgU3VwZXJCaW5kaW5nIGV4cGVjdGVkU3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX2V4cGVjdGVkU3VwZXJCaW5kaW5nKTsgfQorICAg
IHZvaWQgc2V0Q29uc3RydWN0b3JLaW5kKENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQp
IHsgbV9jb25zdHJ1Y3RvcktpbmQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JL
aW5kKTsgfQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQog
CiAgICAgdm9pZCBjb2xsZWN0RnJlZVZhcmlhYmxlcyhTY29wZSogbmVzdGVkU2NvcGUsIGJvb2wg
c2hvdWxkVHJhY2tDbG9zZWRWYXJpYWJsZXMpCiAgICAgewpAQCAtNjE0LDYgKzYyMyw4IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA6IDE7CiAgICAgYm9vbCBtX2lz
VmFsaWRTdHJpY3RNb2RlIDogMTsKICAgICBib29sIG1faGFzQXJndW1lbnRzIDogMTsKKyAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5zaWduZWQgbV9leHBlY3RlZFN1
cGVyQmluZGluZyA6IDI7CiAgICAgaW50IG1fbG9vcERlcHRoOwogICAgIGludCBtX3N3aXRjaERl
cHRoOwogCkBAIC04NjYsNiArODc3LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBTY29w
ZVJlZigmbV9zY29wZVN0YWNrLCBpKTsKICAgICB9CiAKKyAgICBTY29wZVJlZiBjbG9zZXN0UGFy
ZW50Tm9uQXJyb3dGdW5jdGlvbk5vbkxleGljYWxTY29wZSgpCisgICAgeworICAgICAgICB1bnNp
Z25lZCBpID0gbV9zY29wZVN0YWNrLnNpemUoKSAtIDE7CisgICAgICAgIEFTU0VSVChpIDwgbV9z
Y29wZVN0YWNrLnNpemUoKSAmJiBtX3Njb3BlU3RhY2suc2l6ZSgpKTsKKyAgICAgICAgd2hpbGUg
KGkgJiYgKCFtX3Njb3BlU3RhY2tbaV0uaXNGdW5jdGlvbkJvdW5kYXJ5KCkgfHwgbV9zY29wZVN0
YWNrW2ldLmlzQXJyb3dGdW5jdGlvbigpKSkKKyAgICAgICAgICAgIGktLTsKKyAgICAgICAgLy8g
V2hlbiByZWFjaGluZyB0aGUgdG9wIGxldmVsIHNjb3BlIChpdCBjYW4gYmUgbm9uIGZ1bmN0aW9u
IHNjb3BlKSwgd2UgcmV0dXJuIGl0LgorICAgICAgICByZXR1cm4gU2NvcGVSZWYoJm1fc2NvcGVT
dGFjaywgaSk7CisgICAgfQogICAgIAogICAgIFNjb3BlUmVmIHB1c2hTY29wZSgpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC1zdXBlcmNhbGwtNC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJjYWxsLTQuanMKaW5k
ZXggMThhNmY3MDQwZDk1NDQ2ZjcyYmJiYTc1Mjg4OTc0ZTNlZWM1OGZkYi4uYjA2ZmZlZjQ3ZGEy
MDBkZDI4ZDJkNGFlZjc1YzU1YmVjOTUyM2E0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcmNhbGwt
NC5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC1iaW5kLXN1cGVyY2FsbC00LmpzCkBAIC01MSw2ICs1MSw5IEBAIHZhciBFID0g
Y2xhc3MgRSBleHRlbmRzIEEgewogICAgIH0KIH07CiAKKy8vIEZJWE1FOiBBcnJvdyBmdW5jdGlv
biBkb2VzIG5vdCBzdXBwb3J0IHVzaW5nIG9mIGV2YWwgd2l0aCBzdXBlci9zdXBlcigpCisvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzOTc3CisvKgogZm9yICh2
YXIgaT0wOyBpIDwgMTAwMDsgaSsrKSB7CiAgICAgbmV3IEIodHJ1ZSk7CiAgICAgdmFyIGMgPSBu
ZXcgQygpOwpAQCAtNjAsNiArNjMsNyBAQCBmb3IgKHZhciBpPTA7IGkgPCAxMDAwOyBpKyspIHsK
ICAgICB2YXIgZSA9IG5ldyBFKCk7CiAgICAgdGVzdENhc2UoZS5pZCwgJ25ldy12YWx1ZScsICdF
cnJvciBkdXJpbmcgc2V0IHZhbHVlIGluIGV2YWwgIzMnKTsKIH0KKyovCiAKIHZhciB0ZXN0RXhj
ZXB0aW9uID0gZnVuY3Rpb24gKHZhbHVlLCBpbmRleCkgewogICAgIHZhciBleGNlcHRpb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC1iaW5kLXN1cGVycHJvcGVydHkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVycHJvcGVydHkuanMK
aW5kZXggMDUwZmU5MDU3MTliYTA4Njc5NzE0YTM4MGI0MWNlMWEzNDVhZjUxNS4uYThiYWQxNWE4
MmNkNzYyOWE0OTA4YTlkMTIyMjcwY2JiZmIwZDgxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcnBy
b3BlcnR5LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5qcwpAQCAtMTIzLDEyICsxMjMsNiBA
QCB2YXIgRyA9IGNsYXNzIEcgZXh0ZW5kcyBBIHsKICAgICAgZ2V0UGFyZW50VmFsdWUoKSB7CiAg
ICAgICAgICByZXR1cm4gc3VwZXIuZ2V0VmFsdWUoKTsKICAgICAgfQotICAgICBnZXRQYXJlbnRW
YWx1ZVdpdGhFcnJvcigpIHsKLSAgICAgICAgIHZhciBmID0gIGZ1bmN0aW9uICgpIHsKLSAgICAg
ICAgICAgICByZXR1cm4gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKLSAgICAgICAgIH07Ci0gICAg
ICAgICByZXR1cm4gZigpOwotICAgICB9CiAgfTsKIAogIHZhciBnID0gbmV3IEcoKTsKQEAgLTE0
OSwyMCArMTQzLDYgQEAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CiAgICAgdGVz
dENhc2UoZ2V0VmFsdWUoKSwgJ25ldy12YWx1ZScsICdFcnJvcjogU29tZSBwcm9ibGVtIHdpdGgg
dXNpbmcgYXJyb3cgYW5kICJzdXBlciIgaW5zaWRlIG9mIHRoZSBtZXRob2QgdGhhdCByZXR1biBh
cnJvdyBmdW5jdGlvbicpOwogfQogCi12YXIgZzIgPSBuZXcgRygpOwotZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgbGV0IGVycm9yID0gZmFsc2U7Ci0gICAgdHJ5IHsKLSAg
ICAgICBnMi5nZXRQYXJlbnRWYWx1ZVdpdGhFcnJvcigpKCk7Ci0gICAgfSBjYXRjaChlKSB7Ci0g
ICAgICAvLyBGSVhNRTogc2hvdWxkIGJ5IGNoZWNrIGlmIGUgaW5zdGFuY2VvZiBTeW50YXhFcnJv
cgotICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDg5
MwotICAgICAgZXJyb3IgPSB0cnVlOwotICAgIH0KLSAgICB0ZXN0Q2FzZShlcnJvciwgdHJ1ZSwg
J0Vycm9yOiB1c2luZyAic3VwZXIiIHNob3VsZCBsZWFkIHRvIGVycm9yJyk7Ci19Ci0KLQogdmFy
IEggPSBjbGFzcyBIIGV4dGVuZHMgQSB7CiAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgIHZh
ciBhcnJvdyA9ICgpID0+ICgpID0+IHN1cGVyLmdldFZhbHVlKCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjc5NGNlYWFi
YTE2OTYwZGU5MTEzMTcxOTRkOTY2MmYxMTNkNTRlZi4uNmQyYmEyMGZjMTQzMzkwZTk4NzAwZDBk
MDgwNjdlZTEwMzZmOGFkZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTAyLTA4ICBTa2Fj
aGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEFy
cm93IGZ1bmN0aW9uIHN5bnRheC4gVXNpbmcgJ3N1cGVyJyBpbiBhcnJvdyBmdW5jdGlvbiB0aGF0
IGRlY2xhcmVkIG91dCBvZiB0aGUgY2xhc3Mgc2hvdWxkIGxlYWQgdG8gU3ludGF4IGVycm9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA4OTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAKKyAgICAgICAgQWRk
aW5nIHRlc3RzIGZvciB1c2luZyBvZiB0aGUgJ3N1cGVyJyBpbnNpZGUgb2YgdGhlIGFycm93IGZ1
bmN0aW9uCisgCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJv
cGVydHkuanM6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3ludGF4
LWVycm9ycy5qczoKKwogMjAxNi0wMS0yMSAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292
QGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbi4gRGVmYXVsdCBhcmd1
bWVudHMgaW4gYXJyb3cgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLXN1cGVycHJvcGVydHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJy
b3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LWV4cGVjdGVkLnR4dAppbmRleCAzZGYyYzQ5NWZiOWZm
MWUyNzYzMzBmMTUzYzE0MGJiNWZmNWY0OWQzLi40NzZmOWQ0ZDFlZTg3OTc2YmNiNzQzOWNkYjBm
NjE1YjY3YmI2NjdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1
cGVycHJvcGVydHktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tc3VwZXJwcm9wZXJ0eS1leHBlY3RlZC50eHQKQEAgLTksNyArOSw2IEBAIFBBU1MgRS5nZXRQ
YXJlbnRTdGF0aWNWYWx1ZSgpIGlzIGV4cGVjdGVkVmFsdWUKIFBBU1MgZi5wcm9wIGlzIGV4cGVj
dGVkVmFsdWUgKyAiLSIgKyBleHBlY3RlZFZhbHVlCiBQQVNTIGYucHJvcCBpcyBleHBlY3RlZFZh
bHVlICsgIi0iICsgIm5ldy12YWx1ZSIKIFBBU1MgKG5ldyBGKCkpLmdldFBhcmVudFZhbHVlKCkg
aXMgZXhwZWN0ZWRWYWx1ZQotUEFTUyAobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWVXaXRoRXJyb3Io
KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0
IChldmFsdWF0aW5nICdzdXBlci5nZXRWYWx1ZScpLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJy
b3dmdW5jdGlvbi1zeW50YXgtZXJyb3JzLWV4cGVjdGVkLnR4dAppbmRleCA3NTUzZjQxYjlkMTg0
NzgxOWZjNTY3NGRhZmQzMmE5ZGEwNDE5YWQ3Li43ZGNmY2IwMzBmMjI2ZjcxYmE1ZjkxYzllZmI0
NDFjNTdhNmUwZmM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN5
bnRheC1lcnJvcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tc3ludGF4LWVycm9ycy1leHBlY3RlZC50eHQKQEAgLTEzMSw2ICsxMzEsMTkgQEAgUEFTUyB2
YXIgYXJyMSA9IFthLCBiXSA9PiBhICsgYjsgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBV
bmV4cGVjdGVkIHRva2VuICcKIFBBU1MgdmFyIGFycjIgPSB7YSwgYn0gPT4gYSArIGI7IHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPT4nLiBFeHBlY3RlZCAn
OycgYWZ0ZXIgdmFyaWFibGUgZGVjbGFyYXRpb24uLgogUEFTUyB2YXIgYXJyMyA9IHtjOmEsZDpi
fSA9PiBhICsgYjsgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2Vu
ICc9PicuIEV4cGVjdGVkICc7JyBhZnRlciB2YXJpYWJsZSBkZWNsYXJhdGlvbi4uCiBQQVNTIHZh
ciBhcnIzID0ge2M6YixkOmF9ID0+IGEgKyBiOyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IFVuZXhwZWN0ZWQgdG9rZW4gJz0+Jy4gRXhwZWN0ZWQgJzsnIGFmdGVyIHZhcmlhYmxlIGRlY2xh
cmF0aW9uLi4KK1BBU1MgdmFyIGFycjQgPSAoKSA9PiB7IHN1cGVyKCk7IH07IHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3Mg
Y29uc3RydWN0b3IuLgorUEFTUyB2YXIgYXJyNCA9ICgpID0+IHsgc3VwZXI7IH07IHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IHJlZmVyZW5jZSBzdXBlci4uCitQQVNTIHZhciBh
cnI1ID0gKCkgPT4geyBzdXBlci5nZXRWYWx1ZSgpOyB9OyB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IHN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNs
YXNzLi4KK1BBU1MgdmFyIGFycjYgPSAoKSA9PiAgc3VwZXIoKTsgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2YgYSBjbGFzcyBjb25zdHJ1
Y3Rvci4uCitQQVNTIHZhciBhcnI3ID0gKCkgPT4gIHN1cGVyOyB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IENhbm5vdCByZWZlcmVuY2Ugc3VwZXIuLgorUEFTUyB2YXIgYXJyOCA9ICgpID0+
ICBzdXBlci5nZXRWYWx1ZSgpOyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IHN1cGVyIGNh
biBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzLi4KK1BBU1MgY2xh
c3MgQSB7IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlvbiBhICgpIHsgcmV0dXJuICgpID0+IHsgc3Vw
ZXIoKTsgfTt9fSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IENhbm5vdCBjYWxsIHN1cGVy
KCkgb3V0c2lkZSBvZiBhIGNsYXNzIGNvbnN0cnVjdG9yLi4KK1BBU1MgY2xhc3MgQiB7IGNvbnN0
cnVjdG9yKCkgeyBmdW5jdGlvbiBiICgpIHsgcmV0dXJuICgpID0+IHsgc3VwZXI7IH07IH07IH19
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IHJlZmVyZW5jZSBzdXBlci4uCitQ
QVNTIGNsYXNzIEMgeyBjb25zdHJ1Y3RvcigpIHsgZnVuY3Rpb24gYyAoKSB7IHJldHVybiAoKSA9
PiB7IHN1cGVyLmdldFZhbHVlKCk7IH07fX0gdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBz
dXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcy4uCitQ
QVNTIGNsYXNzIEQgeyBjb25zdHJ1Y3RvcigpIHsgZnVuY3Rpb24gYSAoKSB7IHJldHVybiAoKSA9
PiBzdXBlcigpOyB9fSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IENhbm5vdCBjYWxsIHN1
cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNzIGNvbnN0cnVjdG9yLi4KK1BBU1MgY2xhc3MgRSB7IGNv
bnN0cnVjdG9yKCkgeyBmdW5jdGlvbiBiICgpIHsgcmV0dXJuICgpID0+IHN1cGVyOyB9OyB9fSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IENhbm5vdCByZWZlcmVuY2Ugc3VwZXIuLgorUEFT
UyBjbGFzcyBGIHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9uIGMgKCkgeyByZXR1cm4gKCkgPT4g
c3VwZXIuZ2V0VmFsdWUoKTsgfX0gdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBzdXBlciBj
YW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcy4uCitQQVNTIGNs
YXNzIEcge307IGNsYXNzIEcyIGV4dGVuZHMgRyB7IGdldFZhbHVlKCkgeyBmdW5jdGlvbiBjICgp
IHsgcmV0dXJuICgpID0+IHN1cGVyLmdldFZhbHVlKCk7IH19IHRocmV3IGV4Y2VwdGlvbiBTeW50
YXhFcnJvcjogc3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1ldGhvZCBvZiBhIGRlcml2ZWQg
Y2xhc3MuLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRF
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1z
dXBlcnByb3BlcnR5LmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tc3VwZXJwcm9wZXJ0eS5qcwppbmRleCBlNWYyNDljYmJiZGEyODhmMTM3YTUyMzcwZjI2MTFj
YjQxNTcxZmJlLi4yZjU4N2ZkNTcyMjY2YWM5NmQ4M2RhMjFlNDk1NWUzMWYyNWU5NTc2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zdXBlcnBy
b3BlcnR5LmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9u
LXN1cGVycHJvcGVydHkuanMKQEAgLTYzLDEyICs2Myw2IEBAIGNsYXNzIEYgZXh0ZW5kcyBBIHsK
ICAgICAgICAgbGV0IGFycm93ID0gKCkgPT4gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKICAgICAg
ICAgcmV0dXJuIGFycm93KCkoKTsKICAgICB9Ci0gICAgZ2V0UGFyZW50VmFsdWVXaXRoRXJyb3Io
KSB7Ci0gICAgICAgIHZhciBmID0gIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiAo
KSA9PiBzdXBlci5nZXRWYWx1ZSgpOwotICAgICAgICB9OwotICAgICAgICByZXR1cm4gZigpOwot
ICAgIH0KICB9OwogCiBzaG91bGRCZSgnKG5ldyBCKCkpLmdldFZhbHVlUGFyZW50RnVuY3Rpb24o
KScsICdleHBlY3RlZFZhbHVlJyk7CkBAIC05MCw2ICs4NCw0IEBAIHNob3VsZEJlKCdmLnByb3An
LCAnZXhwZWN0ZWRWYWx1ZSArICItIiArICJuZXctdmFsdWUiJyk7CiAKIHNob3VsZEJlKCcobmV3
IEYoKSkuZ2V0UGFyZW50VmFsdWUoKScsICdleHBlY3RlZFZhbHVlJyk7CiAKLXNob3VsZFRocm93
KCcobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWVXaXRoRXJyb3IoKSgpJyk7Ci0KIHZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy5qcyBiL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMuanMKaW5kZXggNWEyMjYzNGM4NzUy
NTI3ZTM4NDc0NTJhZjM2NjVhZDY3OGUyZmYxMi4uZThmMjRmNGZhZWFlN2QzMjYxMWYzZTliMjNm
MGQwY2ZjZjA3NGFkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fy
cm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXJyb3JzLmpzCkBAIC00OCw0ICs0OCwyMSBAQCBz
aG91bGRUaHJvdygndmFyIGFycjIgPSB7YSwgYn0gPT4gYSArIGI7Jyk7CiBzaG91bGRUaHJvdygn
dmFyIGFycjMgPSB7YzphLGQ6Yn0gPT4gYSArIGI7Jyk7CiBzaG91bGRUaHJvdygndmFyIGFycjMg
PSB7YzpiLGQ6YX0gPT4gYSArIGI7Jyk7CiAKK3Nob3VsZFRocm93KCd2YXIgYXJyNCA9ICgpID0+
IHsgc3VwZXIoKTsgfTsnLCAnIlN5bnRheEVycm9yOiBDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNp
ZGUgb2YgYSBjbGFzcyBjb25zdHJ1Y3Rvci4iJyk7CitzaG91bGRUaHJvdygndmFyIGFycjQgPSAo
KSA9PiB7IHN1cGVyOyB9OycsICciU3ludGF4RXJyb3I6IENhbm5vdCByZWZlcmVuY2Ugc3VwZXIu
IicpOworc2hvdWxkVGhyb3coJ3ZhciBhcnI1ID0gKCkgPT4geyBzdXBlci5nZXRWYWx1ZSgpOyB9
OycsICciU3ludGF4RXJyb3I6IHN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2Yg
YSBkZXJpdmVkIGNsYXNzLiInKTsKKworc2hvdWxkVGhyb3coJ3ZhciBhcnI2ID0gKCkgPT4gIHN1
cGVyKCk7JywgJyJTeW50YXhFcnJvcjogQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEg
Y2xhc3MgY29uc3RydWN0b3IuIicpOworc2hvdWxkVGhyb3coJ3ZhciBhcnI3ID0gKCkgPT4gIHN1
cGVyOycsICciU3ludGF4RXJyb3I6IENhbm5vdCByZWZlcmVuY2Ugc3VwZXIuIicpOworc2hvdWxk
VGhyb3coJ3ZhciBhcnI4ID0gKCkgPT4gIHN1cGVyLmdldFZhbHVlKCk7JywgJyJTeW50YXhFcnJv
cjogc3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3Mu
IicpOworCitzaG91bGRUaHJvdygnY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlvbiBh
ICgpIHsgcmV0dXJuICgpID0+IHsgc3VwZXIoKTsgfTt9fScsICciU3ludGF4RXJyb3I6IENhbm5v
dCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNzIGNvbnN0cnVjdG9yLiInKTsKK3Nob3Vs
ZFRocm93KCdjbGFzcyBCIHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9uIGIgKCkgeyByZXR1cm4g
KCkgPT4geyBzdXBlcjsgfTsgfTsgfX0nLCAnIlN5bnRheEVycm9yOiBDYW5ub3QgcmVmZXJlbmNl
IHN1cGVyLiInKTsKK3Nob3VsZFRocm93KCdjbGFzcyBDIHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0
aW9uIGMgKCkgeyByZXR1cm4gKCkgPT4geyBzdXBlci5nZXRWYWx1ZSgpOyB9O319JywgJyJTeW50
YXhFcnJvcjogc3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1ldGhvZCBvZiBhIGRlcml2ZWQg
Y2xhc3MuIicpOworCitzaG91bGRUaHJvdygnY2xhc3MgRCB7IGNvbnN0cnVjdG9yKCkgeyBmdW5j
dGlvbiBhICgpIHsgcmV0dXJuICgpID0+IHN1cGVyKCk7IH19JywgJyJTeW50YXhFcnJvcjogQ2Fu
bm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IuIicpOworc2hv
dWxkVGhyb3coJ2NsYXNzIEUgeyBjb25zdHJ1Y3RvcigpIHsgZnVuY3Rpb24gYiAoKSB7IHJldHVy
biAoKSA9PiBzdXBlcjsgfTsgfX0nLCAnIlN5bnRheEVycm9yOiBDYW5ub3QgcmVmZXJlbmNlIHN1
cGVyLiInKTsKK3Nob3VsZFRocm93KCdjbGFzcyBGIHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9u
IGMgKCkgeyByZXR1cm4gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsgfX0nLCAnIlN5bnRheEVycm9y
OiBzdXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcy4i
Jyk7CitzaG91bGRUaHJvdygnY2xhc3MgRyB7fTsgY2xhc3MgRzIgZXh0ZW5kcyBHIHsgZ2V0VmFs
dWUoKSB7IGZ1bmN0aW9uIGMgKCkgeyByZXR1cm4gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsgfX0n
LCAnIlN5bnRheEVycm9yOiBzdXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEg
ZGVyaXZlZCBjbGFzcy4iJyk7CisKIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>