<?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>212767</bug_id>
          
          <creation_ts>2020-06-04 11:27:30 -0700</creation_ts>
          <short_desc>DOM constructor should only accept Ref&lt;&gt; / ExceptionOr&lt;Ref&lt;&gt;&gt; for creation to ensure toJSNewlyCreated is always returning object</short_desc>
          <delta_ts>2020-06-05 10:26:21 -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>New Bugs</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>212799</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1659204</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-04 11:27:30 -0700</bug_when>
    <thetext>DOM constructor should only accept Ref&lt;&gt; / ExceptionOr&lt;Ref&lt;&gt;&gt; for creation to ensure toJSNewlyCreated is always returning object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659212</commentid>
    <comment_count>1</comment_count>
      <attachid>401053</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-04 11:33:13 -0700</bug_when>
    <thetext>Created attachment 401053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659215</commentid>
    <comment_count>2</comment_count>
      <attachid>401056</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-04 11:35:31 -0700</bug_when>
    <thetext>Created attachment 401056
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659228</commentid>
    <comment_count>3</comment_count>
      <attachid>401056</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-04 12:00:23 -0700</bug_when>
    <thetext>Comment on attachment 401056
Patch

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

I think you need to do run-bindings-tests --reset-results and include that in your patch.

&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:125
&gt;  unsigned AudioContext::s_hardwareContextCount = 0;

Do we even need to count on platforms other than Windows?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:7466
&gt; +            if ($interface-&gt;extendedAttributes-&gt;{ConstructorMayThrowException}) {

Long term, I was thinking we could use meta-programming to generate the exception handling code only if needed, and not require an attribute just to say something may throw an exception.

If C++ is powerful enough, it would be neat if the code generator did less of the work, and there was less redundancy between the IDL and header files.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:7488
&gt; +            push(@$outputArray, &quot;    ASSERT(jsValue);\n&quot;);
&gt; +            push(@$outputArray, &quot;    ASSERT(jsValue.isObject());\n&quot;);

I think the asObject function should include both of these assertions, so we should not need to repeat them in the generated code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659363</commentid>
    <comment_count>4</comment_count>
      <attachid>401056</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-04 15:46:23 -0700</bug_when>
    <thetext>Comment on attachment 401056
Patch

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

Updated the binding-test results.

&gt;&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:125
&gt;&gt;  unsigned AudioContext::s_hardwareContextCount = 0;
&gt; 
&gt; Do we even need to count on platforms other than Windows?

s_hardwareContextCount is also used for debugging (ASSERT in `AudioContext::uninitialize`), so I think keeping it is nice.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:7466
&gt;&gt; +            if ($interface-&gt;extendedAttributes-&gt;{ConstructorMayThrowException}) {
&gt; 
&gt; Long term, I was thinking we could use meta-programming to generate the exception handling code only if needed, and not require an attribute just to say something may throw an exception.
&gt; 
&gt; If C++ is powerful enough, it would be neat if the code generator did less of the work, and there was less redundancy between the IDL and header files.

Agree. In long term, we should delegate these features to C++.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:7488
&gt;&gt; +            push(@$outputArray, &quot;    ASSERT(jsValue.isObject());\n&quot;);
&gt; 
&gt; I think the asObject function should include both of these assertions, so we should not need to repeat them in the generated code.

Sounds good. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659381</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-04 16:07:40 -0700</bug_when>
    <thetext>Windows failure looks unrelated since this does not change SVG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659385</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-04 16:11:02 -0700</bug_when>
    <thetext>Committed r262583: &lt;https://trac.webkit.org/changeset/262583&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659387</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-04 16:11:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/64000845&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659476</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-04 21:33:14 -0700</bug_when>
    <thetext>I&apos;ll comment out `static_assert` in CodeGeneratorJS.pm for now since we had the same problem in Internal builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659480</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-04 21:41:15 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 212799</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659502</commentid>
    <comment_count>10</comment_count>
      <attachid>401124</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-05 00:28:23 -0700</bug_when>
    <thetext>Created attachment 401124
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659675</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-05 10:26:19 -0700</bug_when>
    <thetext>Committed r262628: &lt;https://trac.webkit.org/changeset/262628&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401124.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401053</attachid>
            <date>2020-06-04 11:33:13 -0700</date>
            <delta_ts>2020-06-04 11:35:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212767-20200604113313.patch</filename>
            <type>text/plain</type>
            <size>11807</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg3M2ZmYjdhMTM3ZWJi
Y2M4ZGZlZTYzYTBjMGYxMWY0MmYyNDQzNi4uNmQ5ZWYxMmQxYzM0ZDgzMDA2YTA2YTE4ZTc3YmRi
NWViYTNkZjc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTA2LTA0ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgRE9NIGNvbnN0cnVjdG9y
IHNob3VsZCBvbmx5IGFjY2VwdCBSZWY8PiAvIEV4Y2VwdGlvbk9yPFJlZjw+PiBmb3IgY3JlYXRp
b24gdG8gZW5zdXJlIHRvSlNOZXdseUNyZWF0ZWQgaXMgYWx3YXlzIHJldHVybmluZyBvYmplY3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc2Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gdXNp
bmcgdG9KU05ld2x5Q3JlYXRlZCBpbiBET00gY29uc3RydWN0b3IsIHdlIHNob3VsZCBlbnN1cmUg
dGhhdCB0aGlzIG9ubHkgcmV0dXJucyBKU09iamVjdCogKGlmIGV4Y2VwdGlvbiBpcyBub3QgaGFw
cGVuaW5nKSB0bworICAgICAgICBhdm9pZCBgaXNPYmplY3QoKWAgY2hlY2sgYWZ0ZXIgdGhhdC4g
SG93ZXZlciBBdWRpb0NvbnRleHQgYW5kIEltYWdlRGF0YSBpcyBub3QgZm9sbG93aW5nIHRoaXMg
YW5kIGNhbiByZXR1cm4gbnVsbHB0ciBmcm9tIGBjcmVhdGVgIGZhY3RvcnkKKyAgICAgICAgZnVu
Y3Rpb24uIFdlIHNob3VsZCBub3QgYWxsb3cgdGhpcy4KKworICAgICAgICBJbiB0aGlzIHBhdGNo
LAorCisgICAgICAgIDEuIEF1ZGlvQ29udGV4dCBzaG91bGQgdGhyb3cgYW4gZXJyb3IgaW5zdGVh
ZCBvZiByZXR1cm5pbmcgbnVsbC4gQXVkaW9Db250ZXh0IGhhZCBhIGxpbWl0IGRlcml2ZWQgZnJv
bSBPUywgYnV0IHRoaXMgbGltaXQgaXMgcmVhc29uYWJsZSBvbmx5CisgICAgICAgICAgIGluIFdp
bmRvd3MuIFdlIHNob3VsZCBpbnNlcnQgYE9TKFdJTkRPV1MpYCBhcm91bmQgdGhpcyBjaGVjaywg
YW5kIHRocm93IGFuIGVycm9yIGluc3RlYWQgb2YgcmV0dXJuaW5nIG51bGwuCisKKyAgICAgICAg
Mi4gSW1hZ2VEYXRhOjpjcmVhdGUgY2FuIHJldHVybiBudWxscHRyIHBvdGVudGlhbGx5LCBhbmQg
aXQgY2FuIGJlIGNvbnZlcnRlZCB0byBudWxsLiBUaGlzIGlzIG5vdCBhY2NlcHRhYmxlIGZvciBE
T00gY29uc3RydWN0b3IuIFdlIHNob3VsZCB0aHJvdworICAgICAgICAgICBhbiBlcnJvciBpZiB3
ZSBmYWlsZWQgdG8gY3JlYXRlIEltYWdlRGF0YS4KKworICAgICAgICAzLiBXZSBpbnNlcnRlZCBz
dGF0aWNfYXNzZXJ0cyBpbiBDb2RlR2VuZXJhdG9ySlMucG0gdG8gZW5zdXJlIHRoYXQgWFhYOjpj
cmVhdGUgb25seSByZXR1cm5zIFJlZjw+IG9yIEV4Y2VwdGlvbk9yPFJlZjw+Pi4gVGhpcyBlbnN1
cmVzIHRoYXQgdG9KU05ld2x5Q3JlYXRlZAorICAgICAgICAgICB3aWxsIHJldHVybiBKU09iamVj
dCouCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6CisgICAgICAgICog
ZG9tL0V4Y2VwdGlvbk9yLmg6CisgICAgICAgICogaHRtbC9JbWFnZURhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRh
Lmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSk6CisKIDIwMjAtMDYtMDQgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgV29yayBhcm91bmQgYnJv
a2VuIHN5c3RlbSB2ZXJzaW9uIG1hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggNGEyZTE3YjAwNzFjZmM3Zjc3ZWY3MjZmZjJj
ZTVlZDdmYmUzZGIwNy4uODIxZTUxOWQ5ZjYxY2I0NmIyMzZiM2ViMTc5Y2YzZGExMzQ1YzQ3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cApAQCAtMTE4LDE3ICsxMTgsMjEgQEAgYm9vbCBBdWRpb0NvbnRleHQ6OmlzU2FtcGxlUmF0ZVJh
bmdlR29vZChmbG9hdCBzYW1wbGVSYXRlKQogICAgIHJldHVybiBzYW1wbGVSYXRlID49IDQ0MTAw
ICYmIHNhbXBsZVJhdGUgPD0gOTYwMDA7CiB9CiAKKyNpZiBPUyhXSU5ET1dTKQogLy8gRG9uJ3Qg
YWxsb3cgbW9yZSB0aGFuIHRoaXMgbnVtYmVyIG9mIHNpbXVsdGFuZW91cyBBdWRpb0NvbnRleHRz
IHRhbGtpbmcgdG8gaGFyZHdhcmUuCi1jb25zdCB1bnNpZ25lZCBNYXhIYXJkd2FyZUNvbnRleHRz
ID0gNDsKK2NvbnN0ZXhwciB1bnNpZ25lZCBtYXhIYXJkd2FyZUNvbnRleHRzID0gNDsKKyNlbmRp
ZgogdW5zaWduZWQgQXVkaW9Db250ZXh0OjpzX2hhcmR3YXJlQ29udGV4dENvdW50ID0gMDsKICAg
ICAKLVJlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCkKK0V4Y2VwdGlvbk9yPFJlZjxBdWRpb0NvbnRleHQ+PiBBdWRpb0NvbnRleHQ6OmNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBpZiAoc19oYXJkd2FyZUNvbnRleHRDb3VudCA+PSBNYXhIYXJkd2FyZUNvbnRleHRzKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNpZiBPUyhXSU5ET1dTKQorICAgIGlmIChzX2hhcmR3
YXJlQ29udGV4dENvdW50ID49IG1heEhhcmR3YXJlQ29udGV4dHMpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBRdW90YUV4Y2VlZGVkRXJyb3IgfTsKKyNlbmRpZgogCi0gICAgUmVmUHRyPEF1
ZGlvQ29udGV4dD4gYXVkaW9Db250ZXh0KGFkb3B0UmVmKG5ldyBBdWRpb0NvbnRleHQoZG9jdW1l
bnQpKSk7CisgICAgYXV0byBhdWRpb0NvbnRleHQgPSBhZG9wdFJlZigqbmV3IEF1ZGlvQ29udGV4
dChkb2N1bWVudCkpOwogICAgIGF1ZGlvQ29udGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAg
cmV0dXJuIGF1ZGlvQ29udGV4dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDE2MzJhODgzZmRmNzVmYzc1MGNmN2YxMGM4MDZhMjUy
NWRhN2ZiMjQuLjhlMDk0Mzk0Y2ZmY2M1ZGFhOGIwZTRkYzU4OTEyMTk0NDJlNmUxMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtOTcs
NyArOTcsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KEF1ZGlvQ29udGV4dCk7CiBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGFuIEF1ZGlvQ29udGV4dCBm
b3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KLSAgICBzdGF0aWMgUmVmUHRyPEF1
ZGlvQ29udGV4dD4gY3JlYXRlKERvY3VtZW50Jik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxBdWRpb0NvbnRleHQ+PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAogICAgIHZpcnR1YWwgfkF1ZGlv
Q29udGV4dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5pZGwKaW5kZXggM2QxOGNhZjM0YWE5ZWI3OTVjNjFjOTllMjJlMWEzYTI4NzEyOWIx
OS4uMTIxMjRhMzY3NzdhODY3NGY3NGZiYmNiY2NjNTAyNWQwYWI0YzE4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbApAQCAtMzUsNiAr
MzUsNyBAQCBlbnVtIEF1ZGlvQ29udGV4dFN0YXRlIHsKICAgICBDb25kaXRpb25hbD1XRUJfQVVE
SU8sCiAgICAgQ29uc3RydWN0b3IsCiAgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1bWVudCwK
KyAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uLAogICAgIEVuYWJsZWRCeVNldHRpbmc9
V2ViQXVkaW8sCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAgICAgSW50ZXJmYWNl
TmFtZT13ZWJraXRBdWRpb0NvbnRleHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDk4MGI5MjlhMTJjMGVmMzY0MTlmODE1
YjAwNmNiYjUzNmI3MTRiMDguLmU2NzYwZmMwZWFjNGJlZDUyZGMyMWFiMDY4MmYxZGQ1YzVkOWFl
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCkBAIC03NDYzLDYgKzc0NjMsMTIgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JE
ZWZpbml0aW9uCiAKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIG9i
amVjdCA9ICR7ZnVuY3Rpb25TdHJpbmd9O1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTtcbiIpIGlmICRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9yQ2FsbFdpdGh9LCAiRXhl
Y1N0YXRlIik7CisgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbn0pIHsKKyAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljX2Fzc2VydChJc0V4Y2VwdGlvbk9yPGRlY2x0eXBl
KG9iamVjdCk+Ojp2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgc3RhdGljX2Fzc2VydChkZWNsdHlwZShvYmplY3QpOjpSZXR1cm5UeXBlOjppc1Jl
Zik7XG4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHN0YXRpY19hc3NlcnQoZGVjbHR5cGUob2JqZWN0KTo6aXNSZWYpO1xu
Iik7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIG15ICRJRExUeXBlID0gR2V0SURMVHlw
ZSgkaW50ZXJmYWNlLCAkaW50ZXJmYWNlLT50eXBlKTsKICAgICAgICAgICAgIG15ICRpbXBsVHlw
ZSA9IEdldEltcGxDbGFzc05hbWUoJGludGVyZmFjZSk7CkBAIC03NDc1LDE0ICs3NDgxLDEyIEBA
IHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAgICAgICAgICAgcHVzaChAY29u
c3RydWN0aW9uQ29udmVyc2lvbkFyZ3VtZW50cywgInRocm93U2NvcGUiKSBpZiAkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9ufTsKICAg
ICAgICAgICAgIHB1c2goQGNvbnN0cnVjdGlvbkNvbnZlcnNpb25Bcmd1bWVudHMsICJXVEZNb3Zl
KG9iamVjdCkiKTsKIAotICAgICAgICAgICAgIyBGSVhNRTogdG9KU05ld2x5Q3JlYXRlZCBzaG91
bGQgcmV0dXJuIEpTT2JqZWN0KiBpbnN0ZWFkIG9mIEpTVmFsdWUuCi0gICAgICAgICAgICAjIEJ1
dCBjZXJ0YWluIGNvbnN0cnVjdG9yIGNhbiByZXR1cm4ganNOdWxsKCkgZS5nLiBBdWRpb0NvbnRl
eHQuCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byBqc1ZhbHVlID0g
dG9KU05ld2x5Q3JlYXRlZDwke0lETFR5cGV9PigiIC4gam9pbigiLCAiLCBAY29uc3RydWN0aW9u
Q29udmVyc2lvbkFyZ3VtZW50cykgLiAiKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTtcbiIpIGlm
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9yTWF5VGhyb3dFeGNl
cHRpb259OwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChhdXRvKiBv
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGpzVmFsdWUpKSB7XG4iKTsKLSAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgc2V0U3ViY2xhc3NTdHJ1Y3R1
cmVJZk5lZWRlZDwke2ltcGxUeXBlfT4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBv
YmplY3QpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTtcbiIpOwotICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIEFTU0VSVChqc1ZhbHVlKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIEFTU0VSVChqc1ZhbHVlLmlzT2JqZWN0KCkpO1xuIik7CisgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc2V0U3ViY2xhc3NTdHJ1Y3R1cmVJZk5lZWRlZDwk
e2ltcGxUeXBlfT4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBhc09iamVjdChqc1Zh
bHVlKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVmFsdWUpO1xuIik7CiAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FeGNlcHRpb25Pci5oCmluZGV4IDczYzhkOTFlYmEwZWU0NzhhZWRlZDcxMDMzZmI4NTQz
YTU1OTE1NDMuLmMxY2I4ZWE1OWFlYzE3MzVlNDI2N2FhY2NmYzk3YzZhNzNlM2VlOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FeGNlcHRpb25Pci5oCkBAIC0zMiw4ICszMiwxMCBAQCBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBjbGFzcyBFeGNlcHRp
b25PciB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBFeGNlcHRpb25PciB7CiBwdWJsaWM6
CisgICAgdXNpbmcgUmV0dXJuVHlwZSA9IFQ7CisKICAgICBFeGNlcHRpb25PcihFeGNlcHRpb24m
Jik7CiAgICAgRXhjZXB0aW9uT3IoUmV0dXJuVHlwZSYmKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPdGhlclR5cGU+IEV4Y2VwdGlvbk9yKGNvbnN0IE90aGVyVHlwZSYsIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfc2NhbGFyPE90aGVyVHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfY29u
dmVydGlibGU8T3RoZXJUeXBlLCBSZXR1cm5UeXBlPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHIp
OwpAQCAtNDgsOCArNTAsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZT4gY2xhc3Mg
RXhjZXB0aW9uT3IgewogICAgIEV4cGVjdGVkPFJldHVyblR5cGUsIEV4Y2VwdGlvbj4gbV92YWx1
ZTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblJlZmVyZW5jZVR5cGU+IGNsYXNzIEV4
Y2VwdGlvbk9yPFJldHVyblJlZmVyZW5jZVR5cGUmPiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
bGFzcyBFeGNlcHRpb25PcjxUJj4gewogcHVibGljOgorICAgIHVzaW5nIFJldHVyblR5cGUgPSBU
JjsKKyAgICB1c2luZyBSZXR1cm5SZWZlcmVuY2VUeXBlID0gVDsKKwogICAgIEV4Y2VwdGlvbk9y
KEV4Y2VwdGlvbiYmKTsKICAgICBFeGNlcHRpb25PcihSZXR1cm5SZWZlcmVuY2VUeXBlJik7CiAK
QEAgLTY1LDYgKzcwLDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuUmVmZXJlbmNlVHlwZT4g
Y2xhc3MgRXhjZXB0aW9uT3I8UmV0dXJuUmVmZXJlbmNlVHlwZSY+IHsKIAogdGVtcGxhdGU8PiBj
bGFzcyBFeGNlcHRpb25Pcjx2b2lkPiB7CiBwdWJsaWM6CisgICAgdXNpbmcgUmV0dXJuVHlwZSA9
IHZvaWQ7CisKICAgICBFeGNlcHRpb25PcihFeGNlcHRpb24mJik7CiAgICAgRXhjZXB0aW9uT3Io
KSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAppbmRleCBjNjIzMjNlYzU0
MzNhYjQ0NzA5YjU1MWRlNzg2MTIxNDgzODdhMTBlLi41MWM1NWJkMzM2NDExYzZjZWE5ZjNmMjVk
ZTdhYmE1OTJiZmZkZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCkBAIC03Nyw3ICs3
Nyw3IEBAIFJlZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUm
IHNpemUsIFJlZjxVaW50OENsYW1wZWRBcnJheT4mCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SW1hZ2VEYXRhKHNpemUsIFdURk1vdmUoYnl0ZUFycmF5KSkpOwogfQogCi1FeGNlcHRpb25PcjxS
ZWZQdHI8SW1hZ2VEYXRhPj4gSW1hZ2VEYXRhOjpjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5
PiYmIGJ5dGVBcnJheSwgdW5zaWduZWQgc3csIE9wdGlvbmFsPHVuc2lnbmVkPiBzaCkKK0V4Y2Vw
dGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZShSZWY8VWludDhDbGFtcGVk
QXJyYXk+JiYgYnl0ZUFycmF5LCB1bnNpZ25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoKQog
ewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ5dGVBcnJheS0+bGVuZ3RoKCk7CiAgICAgaWYgKCFs
ZW5ndGggfHwgbGVuZ3RoICUgNCkKQEAgLTkyLDcgKzkyLDEwIEBAIEV4Y2VwdGlvbk9yPFJlZlB0
cjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYg
Ynl0ZUFyCiAgICAgaWYgKHNoICYmIHNoLnZhbHVlKCkgIT0gaGVpZ2h0KQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IsICJzaCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8g
aGVpZ2h0Il9zIH07CiAKLSAgICByZXR1cm4gY3JlYXRlKEludFNpemUoc3csIGhlaWdodCksIFdU
Rk1vdmUoYnl0ZUFycmF5KSk7CisgICAgYXV0byByZXN1bHQgPSBjcmVhdGUoSW50U2l6ZShzdywg
aGVpZ2h0KSwgV1RGTW92ZShieXRlQXJyYXkpKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IgfTsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVh
c2VOb25OdWxsKCk7CiB9CiAKIEltYWdlRGF0YTo6SW1hZ2VEYXRhKGNvbnN0IEludFNpemUmIHNp
emUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAppbmRleCA1NjRmZTdjZDBkYmM0YTE4ZWQ2ODllYThh
ODU2OTk4Yzc2YTFhMDhhLi4yYTFiNTljMGE5MGUxNzg1MzY3NmE0MmI1MzIxOGY0NWE1OGU1N2Q3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSW1hZ2VE
YXRhIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VEYXRhPiB7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGUodW5zaWduZWQgc3csIHVu
c2lnbmVkIHNoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4g
Y3JlYXRlKGNvbnN0IEludFNpemUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PEltYWdlRGF0YT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBSZWY8VWludDhDbGFtcGVkQXJyYXk+
JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VE
YXRhPj4gY3JlYXRlKFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiwgdW5zaWduZWQgc3csIE9wdGlv
bmFsPHVuc2lnbmVkPiBzaCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9y
PFJlZjxJbWFnZURhdGE+PiBjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmLCB1bnNpZ25l
ZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoKTsKIAogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZS53aWR0aCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZDU4YjVj
ZDRkODMyMDYzMmFiNDI0NjMyZWU4MGRlMTNkMzdkOTYxZC4uZWU3ZjIxOWU3ZmYyNDkwYWUyMzI3
ZTc0YjE1ZDFhYTQ0Nzk2YWU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApA
QCAtNTEzOCw3ICs1MTM4LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZhaWxhYmxl
KE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAgCiAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURh
dGE6OmNyZWF0ZShyZ2JhLnJlbGVhc2VOb25OdWxsKCksIHZpZGVvU2V0dGluZ3Mud2lkdGgoKSwg
dmlkZW9TZXR0aW5ncy5oZWlnaHQoKSk7CiAgICAgaWYgKCFpbWFnZURhdGEuaGFzRXhjZXB0aW9u
KCkpCi0gICAgICAgIG1fbmV4dFRyYWNrRnJhbWVQcm9taXNlLT5yZXNvbHZlKGltYWdlRGF0YS5y
ZWxlYXNlUmV0dXJuVmFsdWUoKS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgbV9uZXh0VHJh
Y2tGcmFtZVByb21pc2UtPnJlc29sdmUoaW1hZ2VEYXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsK
ICAgICBlbHNlCiAgICAgICAgIG1fbmV4dFRyYWNrRnJhbWVQcm9taXNlLT5yZWplY3QoaW1hZ2VE
YXRhLmV4Y2VwdGlvbigpLmNvZGUoKSk7CiAgICAgbV9uZXh0VHJhY2tGcmFtZVByb21pc2UgPSBu
dWxscHRyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401056</attachid>
            <date>2020-06-04 11:35:31 -0700</date>
            <delta_ts>2020-06-04 12:00:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212767-20200604113530.patch</filename>
            <type>text/plain</type>
            <size>11674</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg3M2ZmYjdhMTM3ZWJi
Y2M4ZGZlZTYzYTBjMGYxMWY0MmYyNDQzNi4uNmQ5ZWYxMmQxYzM0ZDgzMDA2YTA2YTE4ZTc3YmRi
NWViYTNkZjc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTA2LTA0ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgRE9NIGNvbnN0cnVjdG9y
IHNob3VsZCBvbmx5IGFjY2VwdCBSZWY8PiAvIEV4Y2VwdGlvbk9yPFJlZjw+PiBmb3IgY3JlYXRp
b24gdG8gZW5zdXJlIHRvSlNOZXdseUNyZWF0ZWQgaXMgYWx3YXlzIHJldHVybmluZyBvYmplY3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc2Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gdXNp
bmcgdG9KU05ld2x5Q3JlYXRlZCBpbiBET00gY29uc3RydWN0b3IsIHdlIHNob3VsZCBlbnN1cmUg
dGhhdCB0aGlzIG9ubHkgcmV0dXJucyBKU09iamVjdCogKGlmIGV4Y2VwdGlvbiBpcyBub3QgaGFw
cGVuaW5nKSB0bworICAgICAgICBhdm9pZCBgaXNPYmplY3QoKWAgY2hlY2sgYWZ0ZXIgdGhhdC4g
SG93ZXZlciBBdWRpb0NvbnRleHQgYW5kIEltYWdlRGF0YSBpcyBub3QgZm9sbG93aW5nIHRoaXMg
YW5kIGNhbiByZXR1cm4gbnVsbHB0ciBmcm9tIGBjcmVhdGVgIGZhY3RvcnkKKyAgICAgICAgZnVu
Y3Rpb24uIFdlIHNob3VsZCBub3QgYWxsb3cgdGhpcy4KKworICAgICAgICBJbiB0aGlzIHBhdGNo
LAorCisgICAgICAgIDEuIEF1ZGlvQ29udGV4dCBzaG91bGQgdGhyb3cgYW4gZXJyb3IgaW5zdGVh
ZCBvZiByZXR1cm5pbmcgbnVsbC4gQXVkaW9Db250ZXh0IGhhZCBhIGxpbWl0IGRlcml2ZWQgZnJv
bSBPUywgYnV0IHRoaXMgbGltaXQgaXMgcmVhc29uYWJsZSBvbmx5CisgICAgICAgICAgIGluIFdp
bmRvd3MuIFdlIHNob3VsZCBpbnNlcnQgYE9TKFdJTkRPV1MpYCBhcm91bmQgdGhpcyBjaGVjaywg
YW5kIHRocm93IGFuIGVycm9yIGluc3RlYWQgb2YgcmV0dXJuaW5nIG51bGwuCisKKyAgICAgICAg
Mi4gSW1hZ2VEYXRhOjpjcmVhdGUgY2FuIHJldHVybiBudWxscHRyIHBvdGVudGlhbGx5LCBhbmQg
aXQgY2FuIGJlIGNvbnZlcnRlZCB0byBudWxsLiBUaGlzIGlzIG5vdCBhY2NlcHRhYmxlIGZvciBE
T00gY29uc3RydWN0b3IuIFdlIHNob3VsZCB0aHJvdworICAgICAgICAgICBhbiBlcnJvciBpZiB3
ZSBmYWlsZWQgdG8gY3JlYXRlIEltYWdlRGF0YS4KKworICAgICAgICAzLiBXZSBpbnNlcnRlZCBz
dGF0aWNfYXNzZXJ0cyBpbiBDb2RlR2VuZXJhdG9ySlMucG0gdG8gZW5zdXJlIHRoYXQgWFhYOjpj
cmVhdGUgb25seSByZXR1cm5zIFJlZjw+IG9yIEV4Y2VwdGlvbk9yPFJlZjw+Pi4gVGhpcyBlbnN1
cmVzIHRoYXQgdG9KU05ld2x5Q3JlYXRlZAorICAgICAgICAgICB3aWxsIHJldHVybiBKU09iamVj
dCouCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6CisgICAgICAgICog
ZG9tL0V4Y2VwdGlvbk9yLmg6CisgICAgICAgICogaHRtbC9JbWFnZURhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRh
Lmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSk6CisKIDIwMjAtMDYtMDQgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgV29yayBhcm91bmQgYnJv
a2VuIHN5c3RlbSB2ZXJzaW9uIG1hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggNGEyZTE3YjAwNzFjZmM3Zjc3ZWY3MjZmZjJj
ZTVlZDdmYmUzZGIwNy4uODIxZTUxOWQ5ZjYxY2I0NmIyMzZiM2ViMTc5Y2YzZGExMzQ1YzQ3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cApAQCAtMTE4LDE3ICsxMTgsMjEgQEAgYm9vbCBBdWRpb0NvbnRleHQ6OmlzU2FtcGxlUmF0ZVJh
bmdlR29vZChmbG9hdCBzYW1wbGVSYXRlKQogICAgIHJldHVybiBzYW1wbGVSYXRlID49IDQ0MTAw
ICYmIHNhbXBsZVJhdGUgPD0gOTYwMDA7CiB9CiAKKyNpZiBPUyhXSU5ET1dTKQogLy8gRG9uJ3Qg
YWxsb3cgbW9yZSB0aGFuIHRoaXMgbnVtYmVyIG9mIHNpbXVsdGFuZW91cyBBdWRpb0NvbnRleHRz
IHRhbGtpbmcgdG8gaGFyZHdhcmUuCi1jb25zdCB1bnNpZ25lZCBNYXhIYXJkd2FyZUNvbnRleHRz
ID0gNDsKK2NvbnN0ZXhwciB1bnNpZ25lZCBtYXhIYXJkd2FyZUNvbnRleHRzID0gNDsKKyNlbmRp
ZgogdW5zaWduZWQgQXVkaW9Db250ZXh0OjpzX2hhcmR3YXJlQ29udGV4dENvdW50ID0gMDsKICAg
ICAKLVJlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCkKK0V4Y2VwdGlvbk9yPFJlZjxBdWRpb0NvbnRleHQ+PiBBdWRpb0NvbnRleHQ6OmNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBpZiAoc19oYXJkd2FyZUNvbnRleHRDb3VudCA+PSBNYXhIYXJkd2FyZUNvbnRleHRzKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNpZiBPUyhXSU5ET1dTKQorICAgIGlmIChzX2hhcmR3
YXJlQ29udGV4dENvdW50ID49IG1heEhhcmR3YXJlQ29udGV4dHMpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBRdW90YUV4Y2VlZGVkRXJyb3IgfTsKKyNlbmRpZgogCi0gICAgUmVmUHRyPEF1
ZGlvQ29udGV4dD4gYXVkaW9Db250ZXh0KGFkb3B0UmVmKG5ldyBBdWRpb0NvbnRleHQoZG9jdW1l
bnQpKSk7CisgICAgYXV0byBhdWRpb0NvbnRleHQgPSBhZG9wdFJlZigqbmV3IEF1ZGlvQ29udGV4
dChkb2N1bWVudCkpOwogICAgIGF1ZGlvQ29udGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAg
cmV0dXJuIGF1ZGlvQ29udGV4dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDE2MzJhODgzZmRmNzVmYzc1MGNmN2YxMGM4MDZhMjUy
NWRhN2ZiMjQuLjhlMDk0Mzk0Y2ZmY2M1ZGFhOGIwZTRkYzU4OTEyMTk0NDJlNmUxMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtOTcs
NyArOTcsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KEF1ZGlvQ29udGV4dCk7CiBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGFuIEF1ZGlvQ29udGV4dCBm
b3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KLSAgICBzdGF0aWMgUmVmUHRyPEF1
ZGlvQ29udGV4dD4gY3JlYXRlKERvY3VtZW50Jik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxBdWRpb0NvbnRleHQ+PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAogICAgIHZpcnR1YWwgfkF1ZGlv
Q29udGV4dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5pZGwKaW5kZXggM2QxOGNhZjM0YWE5ZWI3OTVjNjFjOTllMjJlMWEzYTI4NzEyOWIx
OS4uMTIxMjRhMzY3NzdhODY3NGY3NGZiYmNiY2NjNTAyNWQwYWI0YzE4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbApAQCAtMzUsNiAr
MzUsNyBAQCBlbnVtIEF1ZGlvQ29udGV4dFN0YXRlIHsKICAgICBDb25kaXRpb25hbD1XRUJfQVVE
SU8sCiAgICAgQ29uc3RydWN0b3IsCiAgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1bWVudCwK
KyAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uLAogICAgIEVuYWJsZWRCeVNldHRpbmc9
V2ViQXVkaW8sCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAgICAgSW50ZXJmYWNl
TmFtZT13ZWJraXRBdWRpb0NvbnRleHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDk4MGI5MjlhMTJjMGVmMzY0MTlmODE1
YjAwNmNiYjUzNmI3MTRiMDguLjY5YjdjNDQ4ODJkMWQ2ZWVjN2MzN2U2MzE5ODFmYjM2ZWY2N2Qy
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCkBAIC03NDYzLDYgKzc0NjMsMTIgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JE
ZWZpbml0aW9uCiAKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIG9i
amVjdCA9ICR7ZnVuY3Rpb25TdHJpbmd9O1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTtcbiIpIGlmICRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9yQ2FsbFdpdGh9LCAiRXhl
Y1N0YXRlIik7CisgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbn0pIHsKKyAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljX2Fzc2VydChJc0V4Y2VwdGlvbk9yPGRlY2x0eXBl
KG9iamVjdCk+Ojp2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgc3RhdGljX2Fzc2VydChkZWNsdHlwZShvYmplY3QpOjpSZXR1cm5UeXBlOjppc1Jl
Zik7XG4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHN0YXRpY19hc3NlcnQoZGVjbHR5cGUob2JqZWN0KTo6aXNSZWYpO1xu
Iik7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIG15ICRJRExUeXBlID0gR2V0SURMVHlw
ZSgkaW50ZXJmYWNlLCAkaW50ZXJmYWNlLT50eXBlKTsKICAgICAgICAgICAgIG15ICRpbXBsVHlw
ZSA9IEdldEltcGxDbGFzc05hbWUoJGludGVyZmFjZSk7CkBAIC03NDc2LDEzICs3NDgyLDEyIEBA
IHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAgICAgICAgICAgcHVzaChAY29u
c3RydWN0aW9uQ29udmVyc2lvbkFyZ3VtZW50cywgIldURk1vdmUob2JqZWN0KSIpOwogCiAgICAg
ICAgICAgICAjIEZJWE1FOiB0b0pTTmV3bHlDcmVhdGVkIHNob3VsZCByZXR1cm4gSlNPYmplY3Qq
IGluc3RlYWQgb2YgSlNWYWx1ZS4KLSAgICAgICAgICAgICMgQnV0IGNlcnRhaW4gY29uc3RydWN0
b3IgY2FuIHJldHVybiBqc051bGwoKSBlLmcuIEF1ZGlvQ29udGV4dC4KICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIGpzVmFsdWUgPSB0b0pTTmV3bHlDcmVhdGVkPCR7
SURMVHlwZX0+KCIgLiBqb2luKCIsICIsIEBjb25zdHJ1Y3Rpb25Db252ZXJzaW9uQXJndW1lbnRz
KSAuICIpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbn07Ci0gICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNPYmplY3QqPih2bSwganNWYWx1ZSkpIHtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICBzZXRTdWJjbGFzc1N0cnVjdHVyZUlmTmVlZGVkPCR7aW1wbFR5
cGV9PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIG9iamVjdCk7XG4iKTsKLSAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgfVxuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJUKGpz
VmFsdWUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJU
KGpzVmFsdWUuaXNPYmplY3QoKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBzZXRTdWJjbGFzc1N0cnVjdHVyZUlmTmVlZGVkPCR7aW1wbFR5cGV9PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFzT2JqZWN0KGpzVmFsdWUpKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgeyB9KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIn1cblxuIik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FeGNlcHRpb25Pci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgK
aW5kZXggNzNjOGQ5MWViYTBlZTQ3OGFlZGVkNzEwMzNmYjg1NDNhNTU5MTU0My4uYzFjYjhlYTU5
YWVjMTczNWU0MjY3YWFjY2ZjOTdjNmE3M2UzZWU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V4Y2VwdGlvbk9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9y
LmgKQEAgLTMyLDggKzMyLDEwIEBAIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFJldHVyblR5cGU+IGNsYXNzIEV4Y2VwdGlvbk9yIHsKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IGNsYXNzIEV4Y2VwdGlvbk9yIHsKIHB1YmxpYzoKKyAgICB1c2luZyBSZXR1cm5U
eXBlID0gVDsKKwogICAgIEV4Y2VwdGlvbk9yKEV4Y2VwdGlvbiYmKTsKICAgICBFeGNlcHRpb25P
cihSZXR1cm5UeXBlJiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyVHlwZT4gRXhjZXB0
aW9uT3IoY29uc3QgT3RoZXJUeXBlJiwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19z
Y2FsYXI8T3RoZXJUeXBlPjo6dmFsdWUgJiYgc3RkOjppc19jb252ZXJ0aWJsZTxPdGhlclR5cGUs
IFJldHVyblR5cGU+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cik7CkBAIC00OCw4ICs1MCwxMSBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBjbGFzcyBFeGNlcHRpb25PciB7CiAgICAg
RXhwZWN0ZWQ8UmV0dXJuVHlwZSwgRXhjZXB0aW9uPiBtX3ZhbHVlOwogfTsKIAotdGVtcGxhdGU8
dHlwZW5hbWUgUmV0dXJuUmVmZXJlbmNlVHlwZT4gY2xhc3MgRXhjZXB0aW9uT3I8UmV0dXJuUmVm
ZXJlbmNlVHlwZSY+IHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIEV4Y2VwdGlvbk9yPFQm
PiB7CiBwdWJsaWM6CisgICAgdXNpbmcgUmV0dXJuVHlwZSA9IFQmOworICAgIHVzaW5nIFJldHVy
blJlZmVyZW5jZVR5cGUgPSBUOworCiAgICAgRXhjZXB0aW9uT3IoRXhjZXB0aW9uJiYpOwogICAg
IEV4Y2VwdGlvbk9yKFJldHVyblJlZmVyZW5jZVR5cGUmKTsKIApAQCAtNjUsNiArNzAsOCBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5SZWZlcmVuY2VUeXBlPiBjbGFzcyBFeGNlcHRpb25PcjxS
ZXR1cm5SZWZlcmVuY2VUeXBlJj4gewogCiB0ZW1wbGF0ZTw+IGNsYXNzIEV4Y2VwdGlvbk9yPHZv
aWQ+IHsKIHB1YmxpYzoKKyAgICB1c2luZyBSZXR1cm5UeXBlID0gdm9pZDsKKwogICAgIEV4Y2Vw
dGlvbk9yKEV4Y2VwdGlvbiYmKTsKICAgICBFeGNlcHRpb25PcigpID0gZGVmYXVsdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURhdGEuY3BwCmluZGV4IGM2MjMyM2VjNTQzM2FiNDQ3MDliNTUxZGU3ODYx
MjE0ODM4N2ExMGUuLjUxYzU1YmQzMzY0MTFjNmNlYTlmM2YyNWRlN2FiYTU5MmJmZmRmNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgUmVmUHRyPEltYWdl
RGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUmVmPFVpbnQ4Q2xh
bXBlZEFycmF5PiYKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoc2l6ZSwgV1RG
TW92ZShieXRlQXJyYXkpKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBJ
bWFnZURhdGE6OmNyZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5LCB1bnNp
Z25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoKQorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0
YT4+IEltYWdlRGF0YTo6Y3JlYXRlKFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiBieXRlQXJyYXks
IHVuc2lnbmVkIHN3LCBPcHRpb25hbDx1bnNpZ25lZD4gc2gpCiB7CiAgICAgdW5zaWduZWQgbGVu
Z3RoID0gYnl0ZUFycmF5LT5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggJSA0
KQpAQCAtOTIsNyArOTIsMTAgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IEltYWdl
RGF0YTo6Y3JlYXRlKFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiBieXRlQXIKICAgICBpZiAoc2gg
JiYgc2gudmFsdWUoKSAhPSBoZWlnaHQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRl
eFNpemVFcnJvciwgInNoIHZhbHVlIGlzIG5vdCBlcXVhbCB0byBoZWlnaHQiX3MgfTsKIAotICAg
IHJldHVybiBjcmVhdGUoSW50U2l6ZShzdywgaGVpZ2h0KSwgV1RGTW92ZShieXRlQXJyYXkpKTsK
KyAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZShJbnRTaXplKHN3LCBoZWlnaHQpLCBXVEZNb3ZlKGJ5
dGVBcnJheSkpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
UmFuZ2VFcnJvciB9OworICAgIHJldHVybiByZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKIH0KIAog
SW1hZ2VEYXRhOjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RGF0YS5oCmluZGV4IDU2NGZlN2NkMGRiYzRhMThlZDY4OWVhOGE4NTY5OThjNzZhMWEwOGEuLjJh
MWI1OWMwYTkwZTE3ODUzNjc2YTQyYjUzMjE4ZjQ1YTU4ZTU3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBJbWFnZURhdGEgOiBwdWJsaWMgUmVmQ291
bnRlZDxJbWFnZURhdGE+IHsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8
UmVmPEltYWdlRGF0YT4+IGNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6
ZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUo
Y29uc3QgSW50U2l6ZSYsIFJlZjxVaW50OENsYW1wZWRBcnJheT4mJik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBjcmVhdGUoUmVmPFVp
bnQ4Q2xhbXBlZEFycmF5PiYmLCB1bnNpZ25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNy
ZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYsIHVuc2lnbmVkIHN3LCBPcHRpb25hbDx1bnNp
Z25lZD4gc2gpOwogCiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
CiAgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zaXplLndpZHRoKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBkNThiNWNkNGQ4MzIwNjMyYWI0MjQ2MzJl
ZTgwZGUxM2QzN2Q5NjFkLi5lZTdmMjE5ZTdmZjI0OTBhZTIzMjdlNzRiMTVkMWFhNDQ3OTZhZThm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01MTM4LDcgKzUxMzgsNyBA
QCB2b2lkIEludGVybmFsczo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBs
ZSkKICAgICAKICAgICBhdXRvIGltYWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKHJnYmEucmVs
ZWFzZU5vbk51bGwoKSwgdmlkZW9TZXR0aW5ncy53aWR0aCgpLCB2aWRlb1NldHRpbmdzLmhlaWdo
dCgpKTsKICAgICBpZiAoIWltYWdlRGF0YS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgbV9uZXh0
VHJhY2tGcmFtZVByb21pc2UtPnJlc29sdmUoaW1hZ2VEYXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBtX25leHRUcmFja0ZyYW1lUHJvbWlzZS0+cmVz
b2x2ZShpbWFnZURhdGEucmVsZWFzZVJldHVyblZhbHVlKCkpOwogICAgIGVsc2UKICAgICAgICAg
bV9uZXh0VHJhY2tGcmFtZVByb21pc2UtPnJlamVjdChpbWFnZURhdGEuZXhjZXB0aW9uKCkuY29k
ZSgpKTsKICAgICBtX25leHRUcmFja0ZyYW1lUHJvbWlzZSA9IG51bGxwdHI7Cg==
</data>
<flag name="review"
          id="416446"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401124</attachid>
            <date>2020-06-05 00:28:23 -0700</date>
            <delta_ts>2020-06-05 10:26:20 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-212767-20200605002822.patch</filename>
            <type>text/plain</type>
            <size>32633</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NmQyMjA4NjMyMzYyYTIxODkxMDAxM2U2NmRmY2Y1MWRiZDQ5NmQ5Li41NWYxZDkzN2VkODhmZDk4
MzlhZWE2ZTJkMGQ5ZmMzYzVmYzZiOTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMC0wNi0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIERPTSBjb25zdHJ1Y3RvciBzaG91bGQgb25seSBhY2NlcHQgUmVmPD4gLyBF
eGNlcHRpb25PcjxSZWY8Pj4gZm9yIGNyZWF0aW9uIHRvIGVuc3VyZSB0b0pTTmV3bHlDcmVhdGVk
IGlzIGFsd2F5cyByZXR1cm5pbmcgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3NjcKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6YXNP
YmplY3QpOgorCiAyMDIwLTA2LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgW0pTQ10gUmVwb3J0IGV4dHJhIG1lbW9yeSBhbGxvY2F0aW9uIGZyb20gUHJv
cGVydHlUYWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRhMDU0NGRiZWU5MTMwODM5YmEzNDhmZTIzNjZhNTFh
M2RjMzhhNDIuLmYwMTQxZjQ0ZTczMTEzMTgzYTljNDc4NTQ1YWM1OGE5MzA1MTg2YjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAyMC0wNi0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIERPTSBjb25zdHJ1Y3RvciBzaG91bGQgb25seSBhY2Nl
cHQgUmVmPD4gLyBFeGNlcHRpb25PcjxSZWY8Pj4gZm9yIGNyZWF0aW9uIHRvIGVuc3VyZSB0b0pT
TmV3bHlDcmVhdGVkIGlzIGFsd2F5cyByZXR1cm5pbmcgb2JqZWN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3NjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBXaGVuIHVzaW5nIHRvSlNOZXdseUNyZWF0ZWQg
aW4gRE9NIGNvbnN0cnVjdG9yLCB3ZSBzaG91bGQgZW5zdXJlIHRoYXQgdGhpcyBvbmx5IHJldHVy
bnMgSlNPYmplY3QqIChpZiBleGNlcHRpb24gaXMgbm90IGhhcHBlbmluZykgdG8KKyAgICAgICAg
YXZvaWQgYGlzT2JqZWN0KClgIGNoZWNrIGFmdGVyIHRoYXQuIEhvd2V2ZXIgQXVkaW9Db250ZXh0
IGFuZCBJbWFnZURhdGEgaXMgbm90IGZvbGxvd2luZyB0aGlzIGFuZCBjYW4gcmV0dXJuIG51bGxw
dHIgZnJvbSBgY3JlYXRlYCBmYWN0b3J5CisgICAgICAgIGZ1bmN0aW9uLiBXZSBzaG91bGQgbm90
IGFsbG93IHRoaXMuCisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCwKKworICAgICAgICAxLiBBdWRp
b0NvbnRleHQgc2hvdWxkIHRocm93IGFuIGVycm9yIGluc3RlYWQgb2YgcmV0dXJuaW5nIG51bGwu
IEF1ZGlvQ29udGV4dCBoYWQgYSBsaW1pdCBkZXJpdmVkIGZyb20gT1MsIGJ1dCB0aGlzIGxpbWl0
IGlzIHJlYXNvbmFibGUgb25seQorICAgICAgICAgICBpbiBXaW5kb3dzLiBXZSBzaG91bGQgaW5z
ZXJ0IGBPUyhXSU5ET1dTKWAgYXJvdW5kIHRoaXMgY2hlY2ssIGFuZCB0aHJvdyBhbiBlcnJvciBp
bnN0ZWFkIG9mIHJldHVybmluZyBudWxsLgorCisgICAgICAgIDIuIEltYWdlRGF0YTo6Y3JlYXRl
IGNhbiByZXR1cm4gbnVsbHB0ciBwb3RlbnRpYWxseSwgYW5kIGl0IGNhbiBiZSBjb252ZXJ0ZWQg
dG8gbnVsbC4gVGhpcyBpcyBub3QgYWNjZXB0YWJsZSBmb3IgRE9NIGNvbnN0cnVjdG9yLiBXZSBz
aG91bGQgdGhyb3cKKyAgICAgICAgICAgYW4gZXJyb3IgaWYgd2UgZmFpbGVkIHRvIGNyZWF0ZSBJ
bWFnZURhdGEuCisKKyAgICAgICAgMy4gV2UgaW5zZXJ0ZWQgc3RhdGljX2Fzc2VydHMgaW4gQ29k
ZUdlbmVyYXRvckpTLnBtIHRvIGVuc3VyZSB0aGF0IFhYWDo6Y3JlYXRlIG9ubHkgcmV0dXJucyBS
ZWY8PiBvciBFeGNlcHRpb25PcjxSZWY8Pj4uIFRoaXMgZW5zdXJlcyB0aGF0IHRvSlNOZXdseUNy
ZWF0ZWQKKyAgICAgICAgICAgd2lsbCByZXR1cm4gSlNPYmplY3QqLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaXMgcmVsYW5kaW5nIG9mIHRoZSBjb21wbGV0ZWx5IHNhbWUgcGF0Y2ggc2luY2UgaW50
ZXJuYWwgYnVpbGQgaXMgZml4ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZSk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5p
dGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczEpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczIpOgorICAgICAgICAo
V2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczMpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UxKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENv
bnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RUeXBlZGVmc0Nv
bnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAqIGRvbS9FeGNlcHRpb25Pci5oOgorICAg
ICAgICAqIGh0bWwvSW1hZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6
Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5oOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6dmlkZW9TYW1wbGVB
dmFpbGFibGUpOgorCiAyMDIwLTA2LTA0ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29t
PgogCiAgICAgICAgIFRleHQgbWFuaXB1bGF0aW9uOiBmaXJzdCBhbmQgbGFzdCB1bml0IGluIGEg
cGFyYWdyYXBoIHNob3VsZCBub3QgY29udGFpbiBvbmx5IGV4Y2x1ZGVkIHRva2VucwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggMmZkNmQ5NzQ5ZDFjNmJjMDI1
ZTNmNGFmNGQ0MWY3ODRjNDg5M2Q1Ni4uZDUyYjM0YTk5MWIxZjY1OTQ3ZDQxMzFhYmZmZTg4OTBh
N2QyYTA0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0x
MzMxLDYgKzEzMzEsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6bnVrZVN0cnVjdHVyZUFuZFNl
dEJ1dHRlcmZseShWTSYgdm0sIFN0cnVjdHVyZUlEIG9sZFN0cnVjdAogCiBpbmxpbmUgSlNPYmpl
Y3QqIGFzT2JqZWN0KEpTQ2VsbCogY2VsbCkKIHsKKyAgICBBU1NFUlQoY2VsbCk7CiAgICAgQVNT
RVJUKGNlbGwtPmlzT2JqZWN0KCkpOwogICAgIHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihjZWxs
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmNwcAppbmRleCA0YTJlMTdiMDA3MWNmYzdmNzdlZjcyNmZmMmNlNWVkN2ZiZTNkYjA3Li44MjFl
NTE5ZDlmNjFjYjQ2YjIzNmIzZWIxNzljZjNkYTEzNDVjNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0xMTgsMTcgKzExOCwy
MSBAQCBib29sIEF1ZGlvQ29udGV4dDo6aXNTYW1wbGVSYXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBs
ZVJhdGUpCiAgICAgcmV0dXJuIHNhbXBsZVJhdGUgPj0gNDQxMDAgJiYgc2FtcGxlUmF0ZSA8PSA5
NjAwMDsKIH0KIAorI2lmIE9TKFdJTkRPV1MpCiAvLyBEb24ndCBhbGxvdyBtb3JlIHRoYW4gdGhp
cyBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIEF1ZGlvQ29udGV4dHMgdGFsa2luZyB0byBoYXJkd2Fy
ZS4KLWNvbnN0IHVuc2lnbmVkIE1heEhhcmR3YXJlQ29udGV4dHMgPSA0OworY29uc3RleHByIHVu
c2lnbmVkIG1heEhhcmR3YXJlQ29udGV4dHMgPSA0OworI2VuZGlmCiB1bnNpZ25lZCBBdWRpb0Nv
bnRleHQ6OnNfaGFyZHdhcmVDb250ZXh0Q291bnQgPSAwOwogICAgIAotUmVmUHRyPEF1ZGlvQ29u
dGV4dD4gQXVkaW9Db250ZXh0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorRXhjZXB0aW9u
T3I8UmVmPEF1ZGlvQ29udGV4dD4+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChzX2hhcmR3YXJl
Q29udGV4dENvdW50ID49IE1heEhhcmR3YXJlQ29udGV4dHMpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOworI2lmIE9TKFdJTkRPV1MpCisgICAgaWYgKHNfaGFyZHdhcmVDb250ZXh0Q291bnQgPj0g
bWF4SGFyZHdhcmVDb250ZXh0cykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFF1b3RhRXhj
ZWVkZWRFcnJvciB9OworI2VuZGlmCiAKLSAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBhdWRpb0Nv
bnRleHQoYWRvcHRSZWYobmV3IEF1ZGlvQ29udGV4dChkb2N1bWVudCkpKTsKKyAgICBhdXRvIGF1
ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgQXVkaW9Db250ZXh0KGRvY3VtZW50KSk7CiAgICAg
YXVkaW9Db250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gYXVkaW9Db250ZXh0
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgK
aW5kZXggMTYzMmE4ODNmZGY3NWZjNzUwY2Y3ZjEwYzgwNmEyNTI1ZGE3ZmIyNC4uOGUwOTQzOTRj
ZmZjYzVkYWE4YjBlNGRjNTg5MTIxOTQ0MmU2ZTEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC05Nyw3ICs5Nyw3IEBAIGNsYXNzIEF1
ZGlvQ29udGV4dAogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9Db250ZXh0KTsKIHB1
YmxpYzoKICAgICAvLyBDcmVhdGUgYW4gQXVkaW9Db250ZXh0IGZvciByZW5kZXJpbmcgdG8gdGhl
IGF1ZGlvIGhhcmR3YXJlLgotICAgIHN0YXRpYyBSZWZQdHI8QXVkaW9Db250ZXh0PiBjcmVhdGUo
RG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQ29udGV4dD4+IGNy
ZWF0ZShEb2N1bWVudCYpOwogCiAgICAgdmlydHVhbCB+QXVkaW9Db250ZXh0KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAppbmRleCAz
ZDE4Y2FmMzRhYTllYjc5NWM2MWM5OWUyMmUxYTNhMjg3MTI5YjE5Li4xMjEyNGEzNjc3N2E4Njc0
Zjc0ZmJiY2JjY2M1MDI1ZDBhYjRjMTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCkBAIC0zNSw2ICszNSw3IEBAIGVudW0gQXVkaW9D
b250ZXh0U3RhdGUgewogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKICAgICBDb25zdHJ1Y3Rv
ciwKICAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPURvY3VtZW50LAorICAgIENvbnN0cnVjdG9yTWF5
VGhyb3dFeGNlcHRpb24sCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJBdWRpbywKICAgICBFeHBv
cnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKICAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvQ29u
dGV4dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KaW5kZXggY2U1Y2IxNTg4ZGZkZTEyNGNkYTlkNmUzOGIxNjM1YzkxOTkxYmUzZi4u
Mjg0MDQ2OTlmNjFlNTkzY2I2ODRkYTZhZDliOWE0MWRlZGFlM2VmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTc0NjEs
NiArNzQ2MSwxMiBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KIAogICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gb2JqZWN0ID0gJHtmdW5jdGlvblN0
cmluZ307XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpO1xuIikgaWYgJGNvZGVH
ZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q29uc3RydWN0b3JDYWxsV2l0aH0sICJFeGVjU3RhdGUiKTsKKyAgICAgICAg
ICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3Rvck1heVRo
cm93RXhjZXB0aW9ufSkgeworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBzdGF0aWNfYXNzZXJ0KElzRXhjZXB0aW9uT3I8ZGVjbHR5cGUob2JqZWN0KT46OnZhbHVlKTtc
biIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWNfYXNz
ZXJ0KGRlY2x0eXBlKG9iamVjdCk6OlJldHVyblR5cGU6OmlzUmVmKTtcbiIpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3Rh
dGljX2Fzc2VydChkZWNsdHlwZShvYmplY3QpOjppc1JlZik7XG4iKTsKKyAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICRpbnRl
cmZhY2UtPnR5cGUpOwogICAgICAgICAgICAgbXkgJGltcGxUeXBlID0gR2V0SW1wbENsYXNzTmFt
ZSgkaW50ZXJmYWNlKTsKQEAgLTc0NzQsMTMgKzc0ODAsMTAgQEAgc3ViIEdlbmVyYXRlQ29uc3Ry
dWN0b3JEZWZpbml0aW9uCiAgICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3Rpb25Db252ZXJzaW9u
QXJndW1lbnRzLCAiV1RGTW92ZShvYmplY3QpIik7CiAKICAgICAgICAgICAgICMgRklYTUU6IHRv
SlNOZXdseUNyZWF0ZWQgc2hvdWxkIHJldHVybiBKU09iamVjdCogaW5zdGVhZCBvZiBKU1ZhbHVl
LgotICAgICAgICAgICAgIyBCdXQgY2VydGFpbiBjb25zdHJ1Y3RvciBjYW4gcmV0dXJuIGpzTnVs
bCgpIGUuZy4gQXVkaW9Db250ZXh0LgogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIGF1dG8ganNWYWx1ZSA9IHRvSlNOZXdseUNyZWF0ZWQ8JHtJRExUeXBlfT4oIiAuIGpvaW4o
IiwgIiwgQGNvbnN0cnVjdGlvbkNvbnZlcnNpb25Bcmd1bWVudHMpIC4gIik7XG4iKTsKICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25z
dHJ1Y3Rvck1heVRocm93RXhjZXB0aW9ufTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBpZiAoYXV0byogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBq
c1ZhbHVlKSkge1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IHNldFN1YmNsYXNzU3RydWN0dXJlSWZOZWVkZWQ8JHtpbXBsVHlwZX0+KGxleGljYWxHbG9iYWxP
YmplY3QsIGNhbGxGcmFtZSwgb2JqZWN0KTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7XG4i
KTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzZXRTdWJjbGFzc1N0cnVjdHVyZUlmTmVlZGVk
PCR7aW1wbFR5cGV9PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFzT2JqZWN0KGpz
VmFsdWUpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTtcbiIpOwogICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7XG4iKTsK
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCBhZTUzYWM4NThmODZjMWZmNmUw
Njg4NjI1YmI5NTgzNDgxNjdmMWNhLi44NjcwOWIwYTVkZDU2Njg4Y2NmYTZiZTMzMGE5OTk5MWZl
ZjRiYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0xODAsMTEg
KzE4MCwxMCBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0
RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpjb25zdAogICAgIGF1dG8gZXZlbnRJbml0RGlj
dCA9IGNvbnZlcnQ8SURMRGljdGlvbmFyeTxUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SW5pdD4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIG9iamVjdCA9
IFRlc3RFdmVudENvbnN0cnVjdG9yOjpjcmVhdGUoV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShldmVu
dEluaXREaWN0KSk7CisgICAgc3RhdGljX2Fzc2VydChkZWNsdHlwZShvYmplY3QpOjppc1JlZik7
CiAgICAgYXV0byBqc1ZhbHVlID0gdG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdEV2
ZW50Q29uc3RydWN0b3I+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpOwotICAgIGlmIChhdXRvKiBvYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGpzVmFsdWUpKSB7Ci0gICAgICAgIHNldFN1YmNsYXNz
U3RydWN0dXJlSWZOZWVkZWQ8VGVzdEV2ZW50Q29uc3RydWN0b3I+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZSwgb2JqZWN0KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwotICAgIH0KKyAgICBzZXRTdWJjbGFzc1N0cnVjdHVyZUlmTmVlZGVkPFRl
c3RFdmVudENvbnN0cnVjdG9yPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFzT2Jq
ZWN0KGpzVmFsdWUpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJm
YWNlLmNwcAppbmRleCA5NDkzYWUxOWQ3YzU4Zjc4NDAxMDI2ZTY2Zjk1YjkxNDZmNGIzNmZmLi5i
ZWNlYzBmODQwYjgwOGRmYmI0ODJkOTYxNzFlYjEzNTY4Y2Y0MzM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJm
YWNlLmNwcApAQCAtMjgyLDEyICsyODIsMTIgQEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlMKICAg
ICBhdXRvIHN0cjIgPSBhcmd1bWVudDEudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gImRlZmF1bHRT
dHJpbmciX3MgOiBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MS52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gb2JqZWN0ID0gVGVzdEludGVyZmFjZTo6Y3JlYXRl
KCpjb250ZXh0LCBXVEZNb3ZlKHN0cjEpLCBXVEZNb3ZlKHN0cjIpKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KElzRXhjZXB0aW9uT3I8ZGVjbHR5cGUob2JqZWN0KT46OnZhbHVlKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KGRlY2x0eXBlKG9iamVjdCk6OlJldHVyblR5cGU6OmlzUmVmKTsKICAgICBhdXRvIGpz
VmFsdWUgPSB0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0SW50ZXJmYWNlPj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29w
ZSwgV1RGTW92ZShvYmplY3QpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHsgfSk7Ci0gICAgaWYgKGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2
bSwganNWYWx1ZSkpIHsKLSAgICAgICAgc2V0U3ViY2xhc3NTdHJ1Y3R1cmVJZk5lZWRlZDxUZXN0
SW50ZXJmYWNlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIG9iamVjdCk7Ci0gICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICB9CisgICAgc2V0
U3ViY2xhc3NTdHJ1Y3R1cmVJZk5lZWRlZDxUZXN0SW50ZXJmYWNlPihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUsIGFzT2JqZWN0KGpzVmFsdWUpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVl
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IDEyZGU0MDQy
N2FhNzBmNDJkZDE1NjQzMGVjNjljZWFiNTBiMDVlNjIuLjIxMDAzYzMzZmI0OTJhNGVkYWI1ZDk0
MDcxNjdiMzNjMjk1ODgwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAK
QEAgLTExOCwxMiArMTE4LDEyIEBAIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6CiAgICAgYXV0byBz
dHIzID0gYXJndW1lbnQyLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogY29udmVy
dDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDIudmFsdWUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBhdXRvIG9iamVjdCA9IFRlc3ROYW1lZENvbnN0cnVjdG9yOjpjcmVhdGVGb3JKU0NvbnN0
cnVjdG9yKFdURk1vdmUoc3RyMSksIFdURk1vdmUoc3RyMiksIFdURk1vdmUoc3RyMykpOworICAg
IHN0YXRpY19hc3NlcnQoSXNFeGNlcHRpb25PcjxkZWNsdHlwZShvYmplY3QpPjo6dmFsdWUpOwor
ICAgIHN0YXRpY19hc3NlcnQoZGVjbHR5cGUob2JqZWN0KTo6UmV0dXJuVHlwZTo6aXNSZWYpOwog
ICAgIGF1dG8ganNWYWx1ZSA9IHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3ROYW1l
ZENvbnN0cnVjdG9yPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgdGhyb3dTY29wZSwgV1RGTW92ZShvYmplY3QpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgaWYgKGF1dG8qIG9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNPYmplY3QqPih2bSwganNWYWx1ZSkpIHsKLSAgICAgICAgc2V0U3ViY2xhc3NTdHJ1
Y3R1cmVJZk5lZWRlZDxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLCBvYmplY3QpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7Ci0gICAgfQorICAgIHNldFN1YmNsYXNzU3RydWN0dXJlSWZOZWVkZWQ8VGVzdE5h
bWVkQ29uc3RydWN0b3I+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYXNPYmplY3Qo
anNWYWx1ZSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXgg
ZjI5YzBkY2FhYmZjNWE2ZmFjMmIyNTJjMzRjYTVmOWYzZTkzZjkyOC4uNzQ4NzZmNGU1MjM3Yzc5
ZDA1OTNhYzM2NDkzNDVlZGM4MTlkYzcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtMTE1LDExICsxMTUs
MTAgQEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5vZGVD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmEKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAg
QVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGF1dG8gb2JqZWN0ID0gVGVzdE5vZGU6OmNyZWF0ZSgp
OworICAgIHN0YXRpY19hc3NlcnQoZGVjbHR5cGUob2JqZWN0KTo6aXNSZWYpOwogICAgIGF1dG8g
anNWYWx1ZSA9IHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3ROb2RlPj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShvYmpl
Y3QpKTsKLSAgICBpZiAoYXV0byogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZt
LCBqc1ZhbHVlKSkgewotICAgICAgICBzZXRTdWJjbGFzc1N0cnVjdHVyZUlmTmVlZGVkPFRlc3RO
b2RlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIG9iamVjdCk7Ci0gICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICB9CisgICAgc2V0U3ViY2xh
c3NTdHJ1Y3R1cmVJZk5lZWRlZDxUZXN0Tm9kZT4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLCBhc09iamVjdChqc1ZhbHVlKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAKaW5kZXggYzk4NWE0NzZiMjYxODg1MTA0ZmY4ZTJlODA2NGMxMDczMzg2MTU3MS4uNDg1
OTIxYzliMzI3ZGRjNjNhMzA2N2UzNTQ1NWY0ZWIxZmZjZTY3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE5
NzEsMTEgKzE5NzEsMTAgQEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEpTVGVzdE9iakNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWwKICAgICBhdXRvIHRlc3RD
YWxsYmFja0Z1bmN0aW9uID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxi
YWNrRnVuY3Rpb24+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVz
dEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgInRlc3RDYWxs
YmFja0Z1bmN0aW9uIiwgIlRlc3RPYmplY3QiLCBudWxscHRyKTsgfSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIG9iamVj
dCA9IFRlc3RPYmo6OmNyZWF0ZShkb2N1bWVudCwgdGVzdENhbGxiYWNrLnJlbGVhc2VOb25OdWxs
KCksIHRlc3RDYWxsYmFja0Z1bmN0aW9uLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHN0YXRpY19h
c3NlcnQoZGVjbHR5cGUob2JqZWN0KTo6aXNSZWYpOwogICAgIGF1dG8ganNWYWx1ZSA9IHRvSlNO
ZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpOwotICAgIGlmIChh
dXRvKiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGpzVmFsdWUpKSB7Ci0g
ICAgICAgIHNldFN1YmNsYXNzU3RydWN0dXJlSWZOZWVkZWQ8VGVzdE9iaj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLCBvYmplY3QpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7Ci0gICAgfQorICAgIHNldFN1YmNsYXNzU3RydWN0dXJlSWZOZWVk
ZWQ8VGVzdE9iaj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBhc09iamVjdChqc1Zh
bHVlKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCBjZGUwZDQ5ZDE5OGU0ZjM4NGEzYzhlN2Rj
NDI4ZWM1MzM1MzNhMmY3Li42ZDI1NTk5MjMwZjQ5NWI5NjQ0ZDcwNDI1NDdiMzI2ZDFjNWI3MjVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC05
NywxMSArOTcsMTAgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMShKU0dsb2JhbE9iamUKICAgICBhdXRvIGFycmF5QnVm
ZmVyID0gY29udmVydDxJRExBcnJheUJ1ZmZlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJhcnJheUJ1ZmZlciIsICJUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyIsIG51bGxwdHIsICJBcnJheUJ1ZmZlciIpOyB9KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gb2JqZWN0
ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZSgqYXJyYXlCdWZmZXIpOworICAg
IHN0YXRpY19hc3NlcnQoZGVjbHR5cGUob2JqZWN0KTo6aXNSZWYpOwogICAgIGF1dG8ganNWYWx1
ZSA9IHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
V1RGTW92ZShvYmplY3QpKTsKLSAgICBpZiAoYXV0byogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U09iamVjdCo+KHZtLCBqc1ZhbHVlKSkgewotICAgICAgICBzZXRTdWJjbGFzc1N0cnVjdHVyZUlm
TmVlZGVkPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUsIG9iamVjdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKLSAgICB9CisgICAgc2V0U3ViY2xhc3NTdHJ1Y3R1cmVJZk5lZWRlZDxUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycz4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBhc09i
amVjdChqc1ZhbHVlKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7CiB9CiAKQEAgLTExNSwxMSAr
MTE0LDEwIEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczIoSlNHbG9iYWxPYmplCiAgICAgYXV0byBhcnJheUJ1ZmZlclZp
ZXcgPSBjb252ZXJ0PElETEFycmF5QnVmZmVyVmlldz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJhcnJheUJ1ZmZlclZpZXciLCAiVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMiLCBudWxscHRyLCAiQXJyYXlCdWZmZXJWaWV3Iik7IH0pOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
YXV0byBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKGFycmF5QnVm
ZmVyVmlldy5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGRlY2x0eXBlKG9i
amVjdCk6OmlzUmVmKTsKICAgICBhdXRvIGpzVmFsdWUgPSB0b0pTTmV3bHlDcmVhdGVkPElETElu
dGVyZmFjZTxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSk7Ci0gICAgaWYg
KGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwganNWYWx1ZSkpIHsK
LSAgICAgICAgc2V0U3ViY2xhc3NTdHJ1Y3R1cmVJZk5lZWRlZDxUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycz4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBvYmplY3QpOwotICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgfQorICAgIHNldFN1
YmNsYXNzU3RydWN0dXJlSWZOZWVkZWQ8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KGxleGlj
YWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYXNPYmplY3QoanNWYWx1ZSkpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVmFsdWUpOwogfQogCkBAIC0xMzMsMTEgKzEzMSwxMCBAQCBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKEpTR2xv
YmFsT2JqZQogICAgIGF1dG8gYmxvYiA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPEJsb2I+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dB
cmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImJsb2IiLCAi
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCBudWxscHRyLCAiQmxvYiIpOyB9KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1
dG8gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZSgqYmxvYik7Cisg
ICAgc3RhdGljX2Fzc2VydChkZWNsdHlwZShvYmplY3QpOjppc1JlZik7CiAgICAgYXV0byBqc1Zh
bHVlID0gdG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBXVEZNb3ZlKG9iamVjdCkpOwotICAgIGlmIChhdXRvKiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTT2JqZWN0Kj4odm0sIGpzVmFsdWUpKSB7Ci0gICAgICAgIHNldFN1YmNsYXNzU3RydWN0dXJl
SWZOZWVkZWQ8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KGxleGljYWxHbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZSwgb2JqZWN0KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwotICAgIH0KKyAgICBzZXRTdWJjbGFzc1N0cnVjdHVyZUlmTmVlZGVkPFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFz
T2JqZWN0KGpzVmFsdWUpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKIH0KIApAQCAtMTUxLDEx
ICsxNDgsMTAgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzNChKU0dsb2JhbE9iamUKICAgICBhdXRvIHN0cmluZyA9IGNv
bnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgYXV0byBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRl
KFdURk1vdmUoc3RyaW5nKSk7CisgICAgc3RhdGljX2Fzc2VydChkZWNsdHlwZShvYmplY3QpOjpp
c1JlZik7CiAgICAgYXV0byBqc1ZhbHVlID0gdG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpOwotICAgIGlmIChhdXRvKiBv
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGpzVmFsdWUpKSB7Ci0gICAgICAg
IHNldFN1YmNsYXNzU3RydWN0dXJlSWZOZWVkZWQ8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+
KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgb2JqZWN0KTsKLSAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIH0KKyAgICBzZXRTdWJjbGFzc1N0
cnVjdHVyZUlmTmVlZGVkPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIGFzT2JqZWN0KGpzVmFsdWUpKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Zh
bHVlKTsKIH0KIApAQCAtMTY4LDExICsxNjQsMTAgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShKU0dsb2JhbE9iamUK
ICAgICBhdXRvIGxvbmdBcmdzID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETExvbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAwKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gb2JqZWN0ID0gVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShXVEZNb3ZlKGxvbmdBcmdzKSk7CisgICAg
c3RhdGljX2Fzc2VydChkZWNsdHlwZShvYmplY3QpOjppc1JlZik7CiAgICAgYXV0byBqc1ZhbHVl
ID0gdG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBX
VEZNb3ZlKG9iamVjdCkpOwotICAgIGlmIChhdXRvKiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
T2JqZWN0Kj4odm0sIGpzVmFsdWUpKSB7Ci0gICAgICAgIHNldFN1YmNsYXNzU3RydWN0dXJlSWZO
ZWVkZWQ8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KGxleGljYWxHbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSwgb2JqZWN0KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOwotICAgIH0KKyAgICBzZXRTdWJjbGFzc1N0cnVjdHVyZUlmTmVlZGVkPFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFzT2Jq
ZWN0KGpzVmFsdWUpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3Bw
CmluZGV4IDMwMzY3NTQyZWExYTMxZTA3YjIxMjA0OWZlMWQwODc5YWI2YmMwNmIuLmRjN2M5ZDYw
OTk5MGIzMTZiNTVlMTU4YTZhNWE4ZTQ2MDhiZTgyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKQEAgLTk2
LDExICs5NiwxMCBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UxKAogICAgIGF1dG8gc2VxdWVuY2VP
ZlN0cmluZ3MgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gQ29udmVydGVyPElE
TFNlcXVlbmNlPElETERPTVN0cmluZz4+OjpSZXR1cm5UeXBleyB9IDogY29udmVydDxJRExTZXF1
ZW5jZTxJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgYXV0byBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZTo6Y3JlYXRlKFdURk1vdmUoc2VxdWVuY2VPZlN0cmluZ3MpKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KGRlY2x0eXBlKG9iamVjdCk6OmlzUmVmKTsKICAgICBhdXRvIGpzVmFsdWUgPSB0b0pTTmV3
bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IFdURk1vdmUob2JqZWN0KSk7Ci0gICAgaWYgKGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNPYmplY3QqPih2bSwganNWYWx1ZSkpIHsKLSAgICAgICAgc2V0U3ViY2xhc3NTdHJ1Y3R1cmVJ
Zk5lZWRlZDxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4obGV4aWNhbEds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLCBvYmplY3QpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgfQorICAgIHNldFN1YmNsYXNzU3RydWN0dXJlSWZO
ZWVkZWQ8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+KGxleGljYWxHbG9i
YWxPYmplY3QsIGNhbGxGcmFtZSwgYXNPYmplY3QoanNWYWx1ZSkpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VmFsdWUpOwogfQogCkBAIC0xMTQsMTEgKzExMywxMCBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2Uy
KAogICAgIGF1dG8gc3RyaW5nID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjpjcmVhdGUoV1RGTW92ZShzdHJpbmcpKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KGRlY2x0eXBlKG9iamVjdCk6OmlzUmVmKTsKICAgICBhdXRvIGpzVmFs
dWUgPSB0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1dpdGhTZXF1ZW5jZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSk7Ci0gICAgaWYgKGF1dG8qIG9iamVjdCA9IGpz
RHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwganNWYWx1ZSkpIHsKLSAgICAgICAgc2V0U3ViY2xh
c3NTdHJ1Y3R1cmVJZk5lZWRlZDxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZT4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBvYmplY3QpOwotICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgfQorICAgIHNldFN1YmNsYXNz
U3RydWN0dXJlSWZOZWVkZWQ8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+
KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYXNPYmplY3QoanNWYWx1ZSkpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQuY3BwCmluZGV4IGY2NmNmMGYwNjQzOTE5NDE4MmQ2NzY2ODJlNWZiOTQ1NWM0MGUy
MjQuLjI3OTY4NWVjNjJlMjAzYTk1ZDQxMGEwMzdmOTQ1YjI0MzQzMzMzZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCkBAIC0xODEsMTEgKzE4MSwxMCBA
QCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OgogICAgIGF1dG8gZXZlbnRJbml0RGljdCA9IGNvbnZl
cnQ8SURMRGljdGlvbmFyeTxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0Pj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gb2JqZWN0ID0gVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudDo6Y3JlYXRlKCpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShldmVudEluaXREaWN0KSk7CisgICAgc3RhdGljX2Fz
c2VydChkZWNsdHlwZShvYmplY3QpOjppc1JlZik7CiAgICAgYXV0byBqc1ZhbHVlID0gdG9KU05l
d2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2Jq
ZWN0KSk7Ci0gICAgaWYgKGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2
bSwganNWYWx1ZSkpIHsKLSAgICAgICAgc2V0U3ViY2xhc3NTdHJ1Y3R1cmVJZk5lZWRlZDxUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIG9i
amVjdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAg
ICB9CisgICAgc2V0U3ViY2xhc3NTdHJ1Y3R1cmVJZk5lZWRlZDxUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFzT2JqZWN0KGpzVmFsdWUp
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXgg
MGY0NGEwN2UxZjhiNzBkYmE2ZWQ5YjIzMDhhYmFjZDA2ODc5M2Y2MS4uMDI4MGUyN2JmN2M2NTky
ODFkODg5MTY4YmM5MTQwMWQzNjBjYWE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC0xNzIs
MTEgKzE3MiwxMCBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNU
ZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTRwogICAgIGF1dG8gdGVzdENhbGxi
YWNrSW50ZXJmYWNlID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFj
a0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDIudmFsdWUoKSwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0
QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAyLCAidGVzdENhbGxi
YWNrSW50ZXJmYWNlIiwgIlRlc3RUeXBlZGVmcyIsIG51bGxwdHIpOyB9KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gb2Jq
ZWN0ID0gVGVzdFR5cGVkZWZzOjpjcmVhdGUoV1RGTW92ZShoZWxsbyksIHRlc3RDYWxsYmFja0Z1
bmN0aW9uLnJlbGVhc2VOb25OdWxsKCksIHRlc3RDYWxsYmFja0ludGVyZmFjZS5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGRlY2x0eXBlKG9iamVjdCk6OmlzUmVmKTsKICAg
ICBhdXRvIGpzVmFsdWUgPSB0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0VHlwZWRl
ZnM+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBX
VEZNb3ZlKG9iamVjdCkpOwotICAgIGlmIChhdXRvKiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
T2JqZWN0Kj4odm0sIGpzVmFsdWUpKSB7Ci0gICAgICAgIHNldFN1YmNsYXNzU3RydWN0dXJlSWZO
ZWVkZWQ8VGVzdFR5cGVkZWZzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIG9iamVj
dCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICB9
CisgICAgc2V0U3ViY2xhc3NTdHJ1Y3R1cmVJZk5lZWRlZDxUZXN0VHlwZWRlZnM+KGxleGljYWxH
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYXNPYmplY3QoanNWYWx1ZSkpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9u
T3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCmluZGV4IDczYzhkOTFlYmEw
ZWU0NzhhZWRlZDcxMDMzZmI4NTQzYTU1OTE1NDMuLmMxY2I4ZWE1OWFlYzE3MzVlNDI2N2FhY2Nm
Yzk3YzZhNzNlM2VlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25P
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCkBAIC0zMiw4ICszMiwx
MCBAQCBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1
cm5UeXBlPiBjbGFzcyBFeGNlcHRpb25PciB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBF
eGNlcHRpb25PciB7CiBwdWJsaWM6CisgICAgdXNpbmcgUmV0dXJuVHlwZSA9IFQ7CisKICAgICBF
eGNlcHRpb25PcihFeGNlcHRpb24mJik7CiAgICAgRXhjZXB0aW9uT3IoUmV0dXJuVHlwZSYmKTsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGU+IEV4Y2VwdGlvbk9yKGNvbnN0IE90aGVy
VHlwZSYsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2NhbGFyPE90aGVyVHlwZT46
OnZhbHVlICYmIHN0ZDo6aXNfY29udmVydGlibGU8T3RoZXJUeXBlLCBSZXR1cm5UeXBlPjo6dmFs
dWU+Ojp0eXBlKiA9IG51bGxwdHIpOwpAQCAtNDgsOCArNTAsMTEgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgUmV0dXJuVHlwZT4gY2xhc3MgRXhjZXB0aW9uT3IgewogICAgIEV4cGVjdGVkPFJldHVyblR5
cGUsIEV4Y2VwdGlvbj4gbV92YWx1ZTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblJl
ZmVyZW5jZVR5cGU+IGNsYXNzIEV4Y2VwdGlvbk9yPFJldHVyblJlZmVyZW5jZVR5cGUmPiB7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBFeGNlcHRpb25PcjxUJj4gewogcHVibGljOgorICAg
IHVzaW5nIFJldHVyblR5cGUgPSBUJjsKKyAgICB1c2luZyBSZXR1cm5SZWZlcmVuY2VUeXBlID0g
VDsKKwogICAgIEV4Y2VwdGlvbk9yKEV4Y2VwdGlvbiYmKTsKICAgICBFeGNlcHRpb25PcihSZXR1
cm5SZWZlcmVuY2VUeXBlJik7CiAKQEAgLTY1LDYgKzcwLDggQEAgdGVtcGxhdGU8dHlwZW5hbWUg
UmV0dXJuUmVmZXJlbmNlVHlwZT4gY2xhc3MgRXhjZXB0aW9uT3I8UmV0dXJuUmVmZXJlbmNlVHlw
ZSY+IHsKIAogdGVtcGxhdGU8PiBjbGFzcyBFeGNlcHRpb25Pcjx2b2lkPiB7CiBwdWJsaWM6Cisg
ICAgdXNpbmcgUmV0dXJuVHlwZSA9IHZvaWQ7CisKICAgICBFeGNlcHRpb25PcihFeGNlcHRpb24m
Jik7CiAgICAgRXhjZXB0aW9uT3IoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRh
LmNwcAppbmRleCBjNjIzMjNlYzU0MzNhYjQ0NzA5YjU1MWRlNzg2MTIxNDgzODdhMTBlLi41MWM1
NWJkMzM2NDExYzZjZWE5ZjNmMjVkZTdhYmE1OTJiZmZkZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURhdGEuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIFJlZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6
Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxVaW50OENsYW1wZWRBcnJheT4mCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHNpemUsIFdURk1vdmUoYnl0ZUFycmF5KSkp
OwogfQogCi1FeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4gSW1hZ2VEYXRhOjpjcmVhdGUo
UmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSwgdW5zaWduZWQgc3csIE9wdGlvbmFs
PHVuc2lnbmVkPiBzaCkKK0V4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNy
ZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5LCB1bnNpZ25lZCBzdywgT3B0
aW9uYWw8dW5zaWduZWQ+IHNoKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ5dGVBcnJheS0+
bGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICUgNCkKQEAgLTkyLDcgKzkyLDEw
IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZShSZWY8
VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFyCiAgICAgaWYgKHNoICYmIHNoLnZhbHVlKCkgIT0g
aGVpZ2h0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IsICJzaCB2
YWx1ZSBpcyBub3QgZXF1YWwgdG8gaGVpZ2h0Il9zIH07CiAKLSAgICByZXR1cm4gY3JlYXRlKElu
dFNpemUoc3csIGhlaWdodCksIFdURk1vdmUoYnl0ZUFycmF5KSk7CisgICAgYXV0byByZXN1bHQg
PSBjcmVhdGUoSW50U2l6ZShzdywgaGVpZ2h0KSwgV1RGTW92ZShieXRlQXJyYXkpKTsKKyAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IgfTsKKyAg
ICByZXR1cm4gcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKIEltYWdlRGF0YTo6SW1hZ2VE
YXRhKGNvbnN0IEludFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAppbmRleCA1NjRm
ZTdjZDBkYmM0YTE4ZWQ2ODllYThhODU2OTk4Yzc2YTFhMDhhLi4yYTFiNTljMGE5MGUxNzg1MzY3
NmE0MmI1MzIxOGY0NWE1OGU1N2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKQEAgLTM5LDcg
KzM5LDcgQEAgY2xhc3MgSW1hZ2VEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VEYXRhPiB7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBj
cmVhdGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKGNvbnN0IEludFNpemUmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBS
ZWY8VWludDhDbGFtcGVkQXJyYXk+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNl
cHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4gY3JlYXRlKFJlZjxVaW50OENsYW1wZWRBcnJheT4m
JiwgdW5zaWduZWQgc3csIE9wdGlvbmFsPHVuc2lnbmVkPiBzaCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGUoUmVmPFVpbnQ4Q2xh
bXBlZEFycmF5PiYmLCB1bnNpZ25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoKTsKIAogICAg
IEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGludCB3aWR0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2l6ZS53aWR0aCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKaW5kZXggZDU4YjVjZDRkODMyMDYzMmFiNDI0NjMyZWU4MGRlMTNkMzdkOTYxZC4u
ZWU3ZjIxOWU3ZmYyNDkwYWUyMzI3ZTc0YjE1ZDFhYTQ0Nzk2YWU4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTEzOCw3ICs1MTM4LDcgQEAgdm9pZCBJbnRlcm5hbHM6
OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAgCiAgICAgYXV0
byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShyZ2JhLnJlbGVhc2VOb25OdWxsKCksIHZp
ZGVvU2V0dGluZ3Mud2lkdGgoKSwgdmlkZW9TZXR0aW5ncy5oZWlnaHQoKSk7CiAgICAgaWYgKCFp
bWFnZURhdGEuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIG1fbmV4dFRyYWNrRnJhbWVQcm9taXNl
LT5yZXNvbHZlKGltYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKS5yZWxlYXNlTm9uTnVsbCgp
KTsKKyAgICAgICAgbV9uZXh0VHJhY2tGcmFtZVByb21pc2UtPnJlc29sdmUoaW1hZ2VEYXRhLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpKTsKICAgICBlbHNlCiAgICAgICAgIG1fbmV4dFRyYWNrRnJhbWVQ
cm9taXNlLT5yZWplY3QoaW1hZ2VEYXRhLmV4Y2VwdGlvbigpLmNvZGUoKSk7CiAgICAgbV9uZXh0
VHJhY2tGcmFtZVByb21pc2UgPSBudWxscHRyOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>