<?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>229846</bug_id>
          
          <creation_ts>2021-09-02 19:32:20 -0700</creation_ts>
          <short_desc>[JSC] Validate JSPropertyNameEnumerator via watchpoints</short_desc>
          <delta_ts>2021-09-03 12:47:19 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1790025</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-02 19:32:20 -0700</bug_when>
    <thetext>[JSC] Guard JSPropertyNameEnumerator validation via watchpoints</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790026</commentid>
    <comment_count>1</comment_count>
      <attachid>437235</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-02 19:47:50 -0700</bug_when>
    <thetext>Created attachment 437235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790061</commentid>
    <comment_count>2</comment_count>
      <attachid>437244</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-02 22:13:51 -0700</bug_when>
    <thetext>Created attachment 437244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790193</commentid>
    <comment_count>3</comment_count>
      <attachid>437244</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-09-03 09:10:32 -0700</bug_when>
    <thetext>Comment on attachment 437244
Patch

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

Maybe file a bug for Baseline/LLInt too?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:13946
&gt;          SpeculateCellOperand base(this, node-&gt;child1());

Maybe file a bug to constant fold this if we have the watchpoint and a known constant structure?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:13963
&gt; +        static_assert(ArrayWithUndecided &lt;= ArrayWithUndecided);

I assume this should be `static_assert(NonArrayWithUndecided &lt;= ArrayWithUndecided)`?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:13240
&gt; +            static_assert(ArrayWithUndecided &lt;= ArrayWithUndecided);

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:13244
&gt; +            LBasicBlock lastNext = m_out.appendTo(checkExistingCase, notNullCase);

Nit: Seems like notNull would be the wrong continuation if anyone tried to fall-through right? Then again I never understood what lastNext was intended to represent lol

&gt; Source/JavaScriptCore/runtime/JSPropertyNameEnumerator.h:126
&gt; +    uint32_t m_validatedViaWatchpoint { 0 };

Nit: I&apos;m not sure if m_modeSet increased the size of the struct but we could use a bit in m_modeSet if it did. That said I don&apos;t think there&apos;s a noticeable number of enumerator objects anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790276</commentid>
    <comment_count>4</comment_count>
      <attachid>437244</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-03 12:10:58 -0700</bug_when>
    <thetext>Comment on attachment 437244
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:13946
&gt;&gt;          SpeculateCellOperand base(this, node-&gt;child1());
&gt; 
&gt; Maybe file a bug to constant fold this if we have the watchpoint and a known constant structure?

Sounds good. Will file.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:13963
&gt;&gt; +        static_assert(ArrayWithUndecided &lt;= ArrayWithUndecided);
&gt; 
&gt; I assume this should be `static_assert(NonArrayWithUndecided &lt;= ArrayWithUndecided)`?

There is no NonArrayWithUndecided since UndecidedShape is only valid for Array :)

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:13240
&gt;&gt; +            static_assert(ArrayWithUndecided &lt;= ArrayWithUndecided);
&gt; 
&gt; Ditto.

Ditto.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:13244
&gt;&gt; +            LBasicBlock lastNext = m_out.appendTo(checkExistingCase, notNullCase);
&gt; 
&gt; Nit: Seems like notNull would be the wrong continuation if anyone tried to fall-through right? Then again I never understood what lastNext was intended to represent lol

I think this is correct, right? After the branch, we are putting notNullCase

&gt;&gt; Source/JavaScriptCore/runtime/JSPropertyNameEnumerator.h:126
&gt;&gt; +    uint32_t m_validatedViaWatchpoint { 0 };
&gt; 
&gt; Nit: I&apos;m not sure if m_modeSet increased the size of the struct but we could use a bit in m_modeSet if it did. That said I don&apos;t think there&apos;s a noticeable number of enumerator objects anyway.

That sounds good. Changing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790302</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-03 12:46:49 -0700</bug_when>
    <thetext>Committed r282014 (241319@main): &lt;https://commits.webkit.org/241319@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790304</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-03 12:47:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/82735046&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437235</attachid>
            <date>2021-09-02 19:47:50 -0700</date>
            <delta_ts>2021-09-02 22:13:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229846-20210902194749.patch</filename>
            <type>text/plain</type>
            <size>32940</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MzczYmNmZGE5NGMwYjMzODhmYmQ3ZTI2YWNhZDg0MzMyYjdmNTIxLi42MGY3NjdiZTBmNDU0MmMw
OWI0N2I4Mjk1YzRlZDA5MjA2MjUxNjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAyMS0wOS0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFZhbGlkYXRlIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciB2aWEg
d2F0Y2hwb2ludHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyOTg0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIExvb2tlZCBpbnRvIEVsbS1Ub2RvTVZDIHNhbXBsaW5nIHByb2ZpbGVyIGRhdGEgYW5kIGZv
dW5kIHRoYXQgb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IgaXMgdGFraW5nIGVub3VnaCBhbW91
bnQgb2YgdGltZS4KKyAgICAgICAgQW5kIEluc3RydW1lbnRzIHNheSB2YWxpZGF0aW5nIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvciB2aWEgdHJhdmVyc2luZyBTdHJ1Y3R1cmVDaGFpbiBpcyBjb3N0
bHkuCisgICAgICAgIFdlIGFyZSBjYWNoaW5nIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciBvbmx5
IHdoZW4gd2UgbWVldCB0aGUgY29uZGl0aW9uOiBvYmplY3RzIGluIHByb3RvdHlwZSBjaGFpbiBj
YW4gZW5zdXJlIGlkZW50aXR5IG9mCisgICAgICAgIHByb3BlcnR5IG5hbWVzIGlmIHN0cnVjdHVy
ZSBpcyBub3QgY2hhbmdlZC4gU28gd2UgY2FuIHVzZSB3YXRjaHBvaW50IGJhc2VkIGFwcHJvYWNo
IHRvIGludmFsaWRhdGUgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW5qZWN0cyBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50cyBpZiBwb3NzaWJs
ZS4gQW5kIHdoZW4gd2F0Y2hwb2ludCBpcyBmaXJlZCwgd2UgaW52YWxpZGF0ZSBKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IKKyAgICAgICAgY2FjaGVkIGluIFN0cnVjdHVyZVJhcmVEYXRhLCBhcyBp
ZiB3ZSBhcmUgZW5zdXJpbmcgcHJvdG90eXBlIGNoYWluIGNvbmRpdGlvbiBmb3IgdGhlIG90aGVy
IHByb3BlcnR5IGFjY2Vzc2VzLgorCisgICAgICAgIFRoaXMgb2ZmZXJzIDAuNiUgaW1wcm92ZW1l
bnQgaW4gU3BlZWRvbWV0ZXIyLgorCisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg
fCAgICAgICAgICAgICAgIHN1YnRlc3QgICAgICAgICAgICAgICAgfCAgICAgbXMgICAgICB8ICAg
ICBtcyAgICAgIHwgIGIgLyBhICAgfCBwVmFsdWUgKHNpZ25pZmljYW5jZSB1c2luZyBGYWxzZSBE
aXNjb3ZlcnkgUmF0ZSkgfAorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIHwgRWxt
LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgICAgIHwxMjEuOTcxNjY3ICAgfDExNy43MjUw
MDAgICB8MC45NjUxODMgIHwgMC4wMDAwMDAgKHNpZ25pZmljYW50KSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBWdWVKUy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAg
ICAgfDI2LjI0NjY2NyAgICB8MjYuMDM1MDAwICAgIHwwLjk5MTkzNSAgfCAwLjM2MDYxNCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEVtYmVySlMt
VG9kb01WQyAgICAgICAgICAgICAgICAgICAgICB8MTI2LjE5NjY2NyAgIHwxMjYuNjUzMzMzICAg
fDEuMDAzNjE5ICB8IDAuMTAzMTM4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIHwgQmFja2JvbmVKUy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgIHw0
OC45NzY2NjcgICAgfDQ4Ljg4MTY2NyAgICB8MC45OTgwNjAgIHwgMC40NzQxMDYgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBQcmVhY3QtVG9kb01W
QyAgICAgICAgICAgICAgICAgICAgICAgfDIwLjExODMzMyAgICB8MjAuMTE1MDAwICAgIHwwLjk5
OTgzNCAgfCAwLjk4OTAzOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICB8IEFuZ3VsYXJKUy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICB8MTMxLjU0
NTAwMCAgIHwxMzAuNzA2NjY3ICAgfDAuOTkzNjI3ICB8IDAuMDE1MzQ0IChzaWduaWZpY2FudCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgVmFuaWxsYS1FUzIwMTUtVG9k
b01WQyAgICAgICAgICAgICAgIHw2My43MjUwMDAgICAgfDYzLjc3MzMzMyAgICB8MS4wMDA3NTgg
IHwgMC43MDY1NjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICAgfCBJbmZlcm5vLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDY0LjIzMTY2NyAg
ICB8NjIuNjUzMzMzICAgIHwwLjk3NTQyNyAgfCAwLjAwMDAwMCAoc2lnbmlmaWNhbnQpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEZsaWdodC1Ub2RvTVZDICAgICAgICAg
ICAgICAgICAgICAgICB8NzcuMjIzMzMzICAgIHw3Ny42OTAwMDAgICAgfDEuMDA2MDQzICB8IDAu
MjY4MzA5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
IHwgQW5ndWxhcjItVHlwZVNjcmlwdC1Ub2RvTVZDICAgICAgICAgIHwzOS42ODY2NjcgICAgfDM5
LjUwMDAwMCAgICB8MC45OTUyOTYgIHwgMC40OTk2NzggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBWYW5pbGxhSlMtVG9kb01WQyAgICAgICAgICAg
ICAgICAgICAgfDUyLjMyMTY2NyAgICB8NTEuOTczMzMzICAgIHwwLjk5MzM0MiAgfCAwLjA3Nzc3
NyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGpR
dWVyeS1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICB8MjI0LjkwODMzMyAgIHwyMjUuNzYx
NjY3ICAgfDEuMDAzNzk0ICB8IDAuMDIyMTM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgIHwgRW1iZXJKUy1EZWJ1Zy1Ub2RvTVZDICAgICAgICAgICAg
ICAgIHwzMzkuODU4MzMzICAgfDMzOS44ODY2NjcgICB8MS4wMDAwODMgIHwgMC45NTAzMjAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBSZWFjdC1U
b2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgfDg2LjU0NTAwMCAgICB8ODYuMDcwMDAwICAg
IHwwLjk5NDUxMiAgfCAwLjAwMTUxOCAoc2lnbmlmaWNhbnQpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICB8IFJlYWN0LVJlZHV4LVRvZG9NVkMgICAgICAgICAgICAgICAgICB8
MTQ2LjAxMDAwMCAgIHwxNDIuODU1MDAwICAgfDAuOTc4MzkyICB8IDAuMDAwMDAwIChzaWduaWZp
Y2FudCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgVmFuaWxsYS1FUzIw
MTUtQmFiZWwtV2VicGFjay1Ub2RvTVZDIHw2MS40MTE2NjcgICAgfDYxLjQ1NjY2NyAgICB8MS4w
MDA3MzMgIHwgMC42MzE0OTkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBhIG1lYW4gPSAyNTUuOTY1NDMK
KyAgICAgICAgYiBtZWFuID0gMjU3LjUzMzc5CisgICAgICAgIHBWYWx1ZSA9IDAuMDAwMDAzNDM5
NAorICAgICAgICAoQmlnZ2VyIG1lYW5zIGFyZSBiZXR0ZXIuKQorICAgICAgICAxLjAwNiB0aW1l
cyBiZXR0ZXIKKyAgICAgICAgUmVzdWx0cyBBUkUgc2lnbmlmaWNhbnQKKworICAgICAgICAqIGJ5
dGVjb2RlL1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9pbnQuaDoK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9yKToKKyAgICAgICAg
KiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExMb3dl
ckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51
bWVyYXRvci5oOgorICAgICAgICAoSlNDOjpwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmVSYXJlRGF0YUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6
OnNldENhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVDaGFpbkludmFsaWRhdGlvbldhdGNocG9pbnQ6Omluc3RhbGwpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVDaGFpbkludmFsaWRhdGlvbldhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjp0cnlDYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0
b3JWaWFXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmludmFs
aWRhdGVXYXRjaHBvaW50QmFzZWRWYWxpZGF0aW9uKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxh
clZNLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAg
ICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIxLTA4LTI3ICBTdGVw
aGFuIFN6YWJvICA8c3RlcGhhbi5zemFib0Bzb255LmNvbT4KIAogICAgICAgICBbUGxheVN0YXRp
b25dW0NNYWtlXSBBZGQgY29udHJvbCBvdmVyIHdoZXRoZXIgSmF2YVNjcmlwdENvcmUgc2hvdWxk
IGJlIHNoYXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dh
dGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQu
Y3BwCmluZGV4IDk0ZjA3MTA1MWZiMjlhY2RiNjlmOTY4NGI0YTRmYzhiM2VkYmU1MDQuLmE3Mzg3
ZGNkOTRiNTNkNGEwZTBlZTk1ZmIwY2I2YmFiNjdmMTJlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJGdW5jdGlvblJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiSGVhcElubGluZXMuaCIKICNpbmNs
dWRlICJMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCIKKyNp
bmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVT
dHViQ2xlYXJpbmdXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiVk0uaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgKaW5kZXggOTYwODM4MzBlMTYxYWYxNmIx
NjU5Y2ZmMjVmYmYzOWQyODA1MzQ3Ni4uMTNjYzE1NTQ0YmQ3NDA0OGViMjFlMDY0YTc4NmE5NDhm
NzFlNTk5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNo
cG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5o
CkBAIC0xMDgsNyArMTA4LDggQEAgY2xhc3MgV2F0Y2hwb2ludFNldDsKICAgICBtYWNybyhDb2Rl
QmxvY2tKZXR0aXNvbmluZywgQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50KSBcCiAgICAg
bWFjcm8oTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmUsIExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludCkgXAogICAgIG1hY3JvKEZ1bmN0aW9uUmFy
ZURhdGFBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nLCBGdW5jdGlvblJhcmVEYXRhOjpBbGxvY2F0
aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCkgXAotICAgIG1hY3JvKENhY2hlZFNwZWNpYWxQ
cm9wZXJ0eUFkYXB0aXZlU3RydWN0dXJlLCBDYWNoZWRTcGVjaWFsUHJvcGVydHlBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQpCisgICAgbWFjcm8oQ2FjaGVkU3BlY2lhbFByb3BlcnR5QWRhcHRp
dmVTdHJ1Y3R1cmUsIENhY2hlZFNwZWNpYWxQcm9wZXJ0eUFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludCkgXAorICAgIG1hY3JvKFN0cnVjdHVyZUNoYWluSW52YWxpZGF0aW9uLCBTdHJ1Y3R1cmVD
aGFpbkludmFsaWRhdGlvbldhdGNocG9pbnQpIFwKIAogI2lmIEVOQUJMRShKSVQpCiAjZGVmaW5l
IEpTQ19XQVRDSFBPSU5UX1RZUEVTX1dJVEhPVVRfREZHKG1hY3JvKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDgxNjRmYWViYzA0
MjZiMTRkZDUzNGQ4Mjc3NjE1MDRlNzRlYzRmMGEuLjE2NjZlZTczNjY5ZTkwMjIwODRjYzM1MDA1
N2JiNzMyMjgwMmRhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCkBAIC0xMzk0NCwxNCArMTM5NDQsNDQgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldFByb3BlcnR5RW51bWVyYXRvcihOb2RlKiBub2RlKQogewogICAgIGlm
IChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgewogICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhp
cyk7CisKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICBHUFJS
ZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2gy
R1BSID0gc2NyYXRjaDIuZ3ByKCk7CiAKLSAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdl
dFByb3BlcnR5RW51bWVyYXRvckNlbGwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGJhc2VHUFIpOworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNl
czsKKworICAgICAgICAvLyBXZSBnbyB0byB0aGUgaW5saW5lZCBmYXN0IHBhdGggaWYgdGhlIG9i
amVjdCBpcyBVbmRlY2lkZWRTaGFwZSAvIE5vSW5kZXhpbmdTaGFwZSBmb3Igc2ltcGxpY2l0eS4K
KyAgICAgICAgc3RhdGljX2Fzc2VydCghTm9uQXJyYXkpOworICAgICAgICBzdGF0aWNfYXNzZXJ0
KEFycmF5Q2xhc3MgPT0gMSk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoVW5kZWNpZGVkU2hhcGUg
PT0gMik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoQXJyYXlXaXRoVW5kZWNpZGVkID09IDMpOwor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KE5vbkFycmF5IDw9IEFycmF5V2l0aFVuZGVjaWRlZCk7Cisg
ICAgICAgIHN0YXRpY19hc3NlcnQoQXJyYXlDbGFzcyA8PSBBcnJheVdpdGhVbmRlY2lkZWQpOwor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KEFycmF5V2l0aFVuZGVjaWRlZCA8PSBBcnJheVdpdGhVbmRl
Y2lkZWQpOworICAgICAgICBtX2ppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNDZWxsOjppbmRleGluZ1R5cGVBbmRNaXNjT2Zmc2V0KCkpLCBzY3JhdGNoMUdQUik7Cisg
ICAgICAgIG1faml0LmFuZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEluZGV4aW5nVHlw
ZU1hc2spLCBzY3JhdGNoMUdQUik7CisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZSwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKEFycmF5V2l0aFVuZGVjaWRlZCkpKTsKKyAgICAgICAgbV9qaXQuZW1pdExvYWRT
dHJ1Y3R1cmUodm0oKSwgYmFzZUdQUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDFHUFIsIFN0cnVj
dHVyZTo6cHJldmlvdXNPclJhcmVEYXRhT2Zmc2V0KCkpLCBzY3JhdGNoMUdQUik7CisKKyAgICAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVy
bywgc2NyYXRjaDFHUFIpKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gz
MihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDFHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4odm0oKS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUtPnN0cnVjdHVyZUlEKCkpKSkpOworICAg
ICAgICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoMUdQUiwgU3Ry
dWN0dXJlUmFyZURhdGE6Om9mZnNldE9mQ2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcigpKSwg
c2NyYXRjaDFHUFIpOworICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQ
dHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzY3JhdGNoMUdQUikpOworICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olplcm8sIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzY3JhdGNoMUdQUiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpvZmZzZXRP
ZlZhbGlkYXRlZFZpYVdhdGNocG9pbnQoKSkpKTsKKyAgICAgICAgYXV0byBkb25lID0gbV9qaXQu
anVtcCgpOworCisgICAgICAgIHNsb3dDYXNlcy5saW5rKCZtX2ppdCk7CisgICAgICAgIHNpbGVu
dFNwaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUik7CisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yQ2VsbCwgc2NyYXRjaDFH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSKTsKKyAgICAgICAgc2lsZW50
RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisKKyAgICAgICAgZG9uZS5saW5rKCZt
X2ppdCk7CisgICAgICAgIGNlbGxSZXN1bHQoc2NyYXRjaDFHUFIsIG5vZGUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IDllZDg3MTMzZjc3MjMwZTBlMWJkNDQ1ZjMw
NjIzNDM3ZmNkNjM0MDYuLmVkMjM4ZmFhMzFhZjRjZDU4YjBmYTAzOGE4Y2IxZWE0MmFkOTFhZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCkBAIC0xMTAsMTEgKzExMCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEZUTCB7CiAgICAgbWFjcm8oSlNPYmplY3RfYnV0dGVyZmx5LCBKU09iamVjdDo6YnV0dGVy
Zmx5T2Zmc2V0KCkpIFwKICAgICBtYWNybyhKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3JfY2FjaGVk
SW5saW5lQ2FwYWNpdHksIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkSW5saW5lQ2Fw
YWNpdHlPZmZzZXQoKSkgXAogICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl9jYWNo
ZWRQcm9wZXJ0eU5hbWVzVmVjdG9yLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZFBy
b3BlcnR5TmFtZXNWZWN0b3JPZmZzZXQoKSkgXAorICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvcl9jYWNoZWRQcm90b3R5cGVDaGFpbiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpv
ZmZzZXRPZkNhY2hlZFByb3RvdHlwZUNoYWluKCkpIFwKICAgICBtYWNybyhKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3JfY2FjaGVkU3RydWN0dXJlSUQsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6
Y2FjaGVkU3RydWN0dXJlSURPZmZzZXQoKSkgXAogICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvcl9lbmRHZW5lcmljUHJvcGVydHlJbmRleCwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
OjplbmRHZW5lcmljUHJvcGVydHlJbmRleE9mZnNldCgpKSBcCiAgICAgbWFjcm8oSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yX2VuZFN0cnVjdHVyZVByb3BlcnR5SW5kZXgsIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcjo6ZW5kU3RydWN0dXJlUHJvcGVydHlJbmRleE9mZnNldCgpKSBcCiAgICAgbWFj
cm8oSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yX2luZGV4TGVuZ3RoLCBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3I6OmluZGV4ZWRMZW5ndGhPZmZzZXQoKSkgXAogICAgIG1hY3JvKEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvcl9tb2RlU2V0LCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Om1vZGVTZXRP
ZmZzZXQoKSkgXAorICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl92YWxpZGF0ZWRW
aWFXYXRjaHBvaW50LCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Om9mZnNldE9mVmFsaWRhdGVk
VmlhV2F0Y2hwb2ludCgpKSBcCiAgICAgbWFjcm8oSlNSb3BlU3RyaW5nX2ZsYWdzLCBKU1JvcGVT
dHJpbmc6Om9mZnNldE9mRmxhZ3MoKSkgXAogICAgIG1hY3JvKEpTUm9wZVN0cmluZ19sZW5ndGgs
IEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXAogICAgIG1hY3JvKEpTUm9wZVN0cmlu
Z19maWJlcjAsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjAoKSkgXApAQCAtMTUyLDYgKzE1
NCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhTdHJ1Y3R1
cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAogICAgIG1h
Y3JvKFN0cnVjdHVyZVJhcmVEYXRhX2NhY2hlZEtleXMsIFN0cnVjdHVyZVJhcmVEYXRhOjpvZmZz
ZXRPZkNhY2hlZFByb3BlcnR5TmFtZXMoQ2FjaGVkUHJvcGVydHlOYW1lc0tpbmQ6OktleXMpKSBc
CiAgICAgbWFjcm8oU3RydWN0dXJlUmFyZURhdGFfY2FjaGVkR2V0T3duUHJvcGVydHlOYW1lcywg
U3RydWN0dXJlUmFyZURhdGE6Om9mZnNldE9mQ2FjaGVkUHJvcGVydHlOYW1lcyhDYWNoZWRQcm9w
ZXJ0eU5hbWVzS2luZDo6R2V0T3duUHJvcGVydHlOYW1lcykpIFwKKyAgICBtYWNybyhTdHJ1Y3R1
cmVSYXJlRGF0YV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLCBTdHJ1Y3R1cmVSYXJlRGF0
YTo6b2Zmc2V0T2ZDYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpIFwKICAgICBtYWNybyhI
YXNoTWFwSW1wbF9jYXBhY2l0eSwgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVj
a2V0RGF0YUtleT4+OjpvZmZzZXRPZkNhcGFjaXR5KCkpIFwKICAgICBtYWNybyhIYXNoTWFwSW1w
bF9idWZmZXIsICBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5
Pj46Om9mZnNldE9mQnVmZmVyKCkpIFwKICAgICBtYWNybyhIYXNoTWFwSW1wbF9oZWFkLCAgSGFz
aE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpvZmZzZXRPZkhl
YWQoKSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CmluZGV4IGFjOWQwYzQzM2UxMjZjOTVhYjI0ZmJhZDA1NDM3Yjg1MzgyMWE0ZjguLmYzODRhMzZi
MDU3YWZmODdiNDViOGY3OWQwYWM1MjE2YmQ2ZDc1Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEzMjIwLDEwICsxMzIyMCw1NCBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgIHZvaWQgY29tcGlsZUdldFByb3BlcnR5RW51bWVyYXRv
cigpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkKLSAgICAgICAgICAgIHNldEpTVmFsdWUo
dm1DYWxsKEludDY0LCBvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3JDZWxsLCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpKSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRpb25HZXRQ
cm9wZXJ0eUVudW1lcmF0b3IsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IENlbGxVc2UpIHsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNoZWNrRXhpc3RpbmdD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bGxD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIHJhcmVEYXRh
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayB2YWxpZGF0
aW9uQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBnZW5l
cmljQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250
aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICBMVmFsdWUgY2VsbCA9
IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgICAgIC8vIFdlIGdvIHRvIHRo
ZSBpbmxpbmVkIGZhc3QgcGF0aCBpZiB0aGUgb2JqZWN0IGlzIFVuZGVjaWRlZFNoYXBlIC8gTm9J
bmRleGluZ1NoYXBlIGZvciBzaW1wbGljaXR5LgorICAgICAgICAgICAgc3RhdGljX2Fzc2VydCgh
Tm9uQXJyYXkpOworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChBcnJheUNsYXNzID09IDEpOwor
ICAgICAgICAgICAgc3RhdGljX2Fzc2VydChVbmRlY2lkZWRTaGFwZSA9PSAyKTsKKyAgICAgICAg
ICAgIHN0YXRpY19hc3NlcnQoQXJyYXlXaXRoVW5kZWNpZGVkID09IDMpOworICAgICAgICAgICAg
c3RhdGljX2Fzc2VydChOb25BcnJheSA8PSBBcnJheVdpdGhVbmRlY2lkZWQpOworICAgICAgICAg
ICAgc3RhdGljX2Fzc2VydChBcnJheUNsYXNzIDw9IEFycmF5V2l0aFVuZGVjaWRlZCk7CisgICAg
ICAgICAgICBzdGF0aWNfYXNzZXJ0KEFycmF5V2l0aFVuZGVjaWRlZCA8PSBBcnJheVdpdGhVbmRl
Y2lkZWQpOworICAgICAgICAgICAgTFZhbHVlIGluZGV4aW5nVHlwZSA9IG1fb3V0LmJpdEFuZCht
X291dC5sb2FkOFplcm9FeHQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9pbmRleGluZ1R5cGVBbmRN
aXNjKSwgbV9vdXQuY29uc3RJbnQzMihJbmRleGluZ1R5cGVNYXNrKSk7CisgICAgICAgICAgICBt
X291dC5icmFuY2gobV9vdXQuYmVsb3dPckVxdWFsKGluZGV4aW5nVHlwZSwgbV9vdXQuY29uc3RJ
bnQzMihBcnJheVdpdGhVbmRlY2lkZWQpKSwgdW5zdXJlKGNoZWNrRXhpc3RpbmdDYXNlKSwgdW5z
dXJlKGdlbmVyaWNDYXNlKSk7CisKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuYXBwZW5kVG8oY2hlY2tFeGlzdGluZ0Nhc2UsIG5vdE51bGxDYXNlKTsKKyAgICAgICAg
ICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBsb2FkU3RydWN0dXJlKGNlbGwpOworICAgICAgICAgICAg
TFZhbHVlIHByZXZpb3VzT3JSYXJlRGF0YSA9IG1fb3V0LmxvYWRQdHIoc3RydWN0dXJlLCBtX2hl
YXBzLlN0cnVjdHVyZV9wcmV2aW91c09yUmFyZURhdGEpOworICAgICAgICAgICAgbV9vdXQuYnJh
bmNoKG1fb3V0Lm5vdE51bGwocHJldmlvdXNPclJhcmVEYXRhKSwgdW5zdXJlKG5vdE51bGxDYXNl
KSwgdW5zdXJlKGdlbmVyaWNDYXNlKSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5v
dE51bGxDYXNlLCByYXJlRGF0YUNhc2UpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAg
ICAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKG1fb3V0LmxvYWQzMihwcmV2aW91c09yUmFyZURh
dGEsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwgbV9vdXQuY29uc3RJbnQzMihtX2dyYXBo
Lm1fdm0uc3RydWN0dXJlU3RydWN0dXJlLT5zdHJ1Y3R1cmVJRCgpKSksCisgICAgICAgICAgICAg
ICAgdW5zdXJlKHJhcmVEYXRhQ2FzZSksIHVuc3VyZShnZW5lcmljQ2FzZSkpOworCisgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhyYXJlRGF0YUNhc2UsIHZhbGlkYXRpb25DYXNlKTsKKyAgICAg
ICAgICAgIExWYWx1ZSBjYWNoZWQgPSBtX291dC5sb2FkUHRyKHByZXZpb3VzT3JSYXJlRGF0YSwg
bV9oZWFwcy5TdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKTsK
KyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3ROdWxsKGNhY2hlZCksIHVuc3VyZSh2
YWxpZGF0aW9uQ2FzZSksIHVuc3VyZShnZW5lcmljQ2FzZSkpOworCisgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyh2YWxpZGF0aW9uQ2FzZSwgZ2VuZXJpY0Nhc2UpOworICAgICAgICAgICAgVmFs
dWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWNoZWQpOworICAgICAgICAg
ICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdFplcm8zMihtX291dC5sb2FkMzIoY2FjaGVkLCBtX2hl
YXBzLkpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl92YWxpZGF0ZWRWaWFXYXRjaHBvaW50KSksIHVu
c3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoZ2VuZXJpY0Nhc2UpKTsKKworICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oZ2VuZXJpY0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICBW
YWx1ZUZyb21CbG9jayBnZW5lcmljUmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChwb2ludGVy
VHlwZSgpLCBvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3JDZWxsLCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBjZWxsKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OworICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJl
c3VsdCwgZ2VuZXJpY1Jlc3VsdCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1l
cmF0b3IsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDEoKSkpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVFbnVtZXJhdG9yTmV4dFVwZGF0ZUlu
ZGV4QW5kTW9kZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCmluZGV4IDdkNDgxZTg5ZjI0ZDkzY2Q0YzlkMzll
ODExY2JiNzExYmQzOGMwZDguLmFkZDZhN2JlMTI4NGI1NzllZjAyODk2ZTk0ZDNmNDhmMjNkNjZj
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lRW51bWVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lRW51bWVyYXRvci5oCkBAIC03Miw2ICs3Miw3IEBAIGNsYXNzIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvciBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgU3RydWN0dXJlQ2hh
aW4qIGNhY2hlZFByb3RvdHlwZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9wcm90b3R5cGVDaGFp
bi5nZXQoKTsgfQogICAgIHZvaWQgc2V0Q2FjaGVkUHJvdG90eXBlQ2hhaW4oVk0mIHZtLCBTdHJ1
Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4pIHsgcmV0dXJuIG1fcHJvdG90eXBlQ2hhaW4uc2V0
KHZtLCB0aGlzLCBwcm90b3R5cGVDaGFpbik7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mQ2FjaGVkUHJvdG90eXBlQ2hhaW4oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLCBtX3Byb3RvdHlwZUNoYWluKTsgfQogCiAgICAgU3RydWN0dXJl
KiBjYWNoZWRTdHJ1Y3R1cmUoVk0mIHZtKSBjb25zdAogICAgIHsKQEAgLTk2LDYgKzk3LDEzIEBA
IGNsYXNzIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewog
ICAgIHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IsIG1fcHJvcGVydHlOYW1lcyk7CiAgICAgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZWYWxpZGF0ZWRWaWFXYXRjaHBvaW50KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvciwgbV92YWxpZGF0ZWRWaWFXYXRjaHBvaW50KTsgfQorCisg
ICAgYm9vbCB2YWxpZGF0ZWRWaWFXYXRjaHBvaW50KCkgY29uc3QgeyByZXR1cm4gbV92YWxpZGF0
ZWRWaWFXYXRjaHBvaW50OyB9CisgICAgdm9pZCBzZXRWYWxpZGF0ZWRWaWFXYXRjaHBvaW50KGJv
b2wgdmFsaWRhdGVkVmlhV2F0Y2hwb2ludCkKKyAgICB7CisgICAgICAgIG1fdmFsaWRhdGVkVmlh
V2F0Y2hwb2ludCA9IHZhbGlkYXRlZFZpYVdhdGNocG9pbnQ7CisgICAgfQogCiAgICAgSlNTdHJp
bmcqIGNvbXB1dGVOZXh0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGJhc2UsIHVpbnQzMl90
JiBjdXJyZW50SW5kZXgsIE1vZGUmLCBib29sIHNob3VsZEFsbG9jYXRlSW5kZXhlZE5hbWVTdHJp
bmcgPSB0cnVlKTsKIApAQCAtMTE1LDYgKzEyMyw3IEBAIGNsYXNzIEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvciBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVpbnQzMl90IG1fZW5kR2VuZXJp
Y1Byb3BlcnR5SW5kZXg7CiAgICAgdWludDMyX3QgbV9jYWNoZWRJbmxpbmVDYXBhY2l0eTsKICAg
ICB1aW50MzJfdCBtX21vZGVTZXQgeyAwIH07CisgICAgdWludDMyX3QgbV92YWxpZGF0ZWRWaWFX
YXRjaHBvaW50IHsgMCB9OwogfTsKIAogdm9pZCBnZXRFbnVtZXJhYmxlUHJvcGVydHlOYW1lcyhK
U0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCB1aW50MzJfdCYg
aW5kZXhlZExlbmd0aCwgdWludDMyX3QmIHN0cnVjdHVyZVByb3BlcnR5Q291bnQpOwpAQCAtMTMw
LDkgKzEzOSwxMCBAQCBpbmxpbmUgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBwcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogCiAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBiYXNlLT5zdHJ1Y3R1cmUodm0pOwogICAgIGlmICghaW5kZXhlZExlbmd0aAot
ICAgICAgICAmJiAoZW51bWVyYXRvciA9IHN0cnVjdHVyZS0+Y2FjaGVkUHJvcGVydHlOYW1lRW51
bWVyYXRvcigpKQotICAgICAgICAmJiBlbnVtZXJhdG9yLT5jYWNoZWRQcm90b3R5cGVDaGFpbigp
ID09IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZ2xvYmFsT2JqZWN0LCBiYXNlKSkKLSAgICAg
ICAgcmV0dXJuIGVudW1lcmF0b3I7CisgICAgICAgICYmIChlbnVtZXJhdG9yID0gc3RydWN0dXJl
LT5jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpKSB7CisgICAgICAgIGlmIChlbnVtZXJh
dG9yLT52YWxpZGF0ZWRWaWFXYXRjaHBvaW50KCkgfHwgZW51bWVyYXRvci0+Y2FjaGVkUHJvdG90
eXBlQ2hhaW4oKSA9PSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGdsb2JhbE9iamVjdCwgYmFz
ZSkpCisgICAgICAgICAgICByZXR1cm4gZW51bWVyYXRvcjsKKyAgICB9CiAKICAgICB1aW50MzJf
dCBudW1iZXJTdHJ1Y3R1cmVQcm9wZXJ0aWVzID0gMDsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBw
cm9wZXJ0eU5hbWVzKHZtLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBQcml2YXRlU3ltYm9s
TW9kZTo6RXhjbHVkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
CmluZGV4IDEzMWU3OGVmMThmMDc1NGIzNDNlOTlkYWM3YjYyZjZjMmE3YzU4NDkuLjlmMjdjYmEw
MWVkMjU2MGU0NTI1ZGNlMjBlOTRmYjA0MmRjMWVlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC02MzQsNiArNjM0LDExIEBAIGNsYXNzIFN0cnVjdHVy
ZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsKICAgICAgICAgcmV0dXJuIGRmZ1Nob3VsZFdhdGNo
SWZQb3NzaWJsZSgpICYmIHRyYW5zaXRpb25XYXRjaHBvaW50U2V0SXNTdGlsbFZhbGlkKCk7CiAg
ICAgfQorCisgICAgYm9vbCBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU2hvdWxkV2F0Y2goKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIGRmZ1Nob3VsZFdhdGNoKCk7CisgICAgfQogICAgICAg
ICAKICAgICB2b2lkIGFkZFRyYW5zaXRpb25XYXRjaHBvaW50KFdhdGNocG9pbnQqIHdhdGNocG9p
bnQpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZVJhcmVEYXRhLmgKaW5kZXggMDBiZjA2MzBkMmQxZjgwYzY2NTA5OWE3OWIyMmU2NjUz
NzA3NDAzYy4uZjA3ZDJjYmZjMzU1ZGYzOTM3ODIyNzUwZGRiY2RiZjc4MmFhNjc1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCkBA
IC0zMCwxMSArMzAsMTMgQEAKICNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCiAjaW5jbHVkZSAiUHJv
cGVydHlPZmZzZXQuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlIDx3dGYv
Rml4ZWRWZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcjsKIGNsYXNzIFN0cnVjdHVyZTsKK2NsYXNzIFN0cnVjdHVyZUNoYWluOwogY2xh
c3MgQ2FjaGVkU3BlY2lhbFByb3BlcnR5QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OwogY2xh
c3MgQ2FjaGVkU3BlY2lhbFByb3BlcnR5QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRj
aHBvaW50Owogc3RydWN0IFNwZWNpYWxQcm9wZXJ0eUNhY2hlOwpAQCAtNTIsNiArNTQsOSBAQCBl
bnVtIGNsYXNzIENhY2hlZFNwZWNpYWxQcm9wZXJ0eUtleSA6IHVpbnQ4X3QgewogfTsKIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZDYWNoZWRTcGVjaWFsUHJvcGVydHlLZXlzID0g
NDsKIAorY2xhc3MgU3RydWN0dXJlUmFyZURhdGE7CitjbGFzcyBTdHJ1Y3R1cmVDaGFpbkludmFs
aWRhdGlvbldhdGNocG9pbnQ7CisKIGNsYXNzIFN0cnVjdHVyZVJhcmVEYXRhIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKQEAgLTEwMiwx
MCArMTA3LDE3IEBAIGNsYXNzIFN0cnVjdHVyZVJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlUmFyZURhdGEsIG1f
Y2FjaGVkUHJvcGVydHlOYW1lcykgKyBzaXplb2YoV3JpdGVCYXJyaWVyPEpTSW1tdXRhYmxlQnV0
dGVyZmx5PikgKiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCk7CiAgICAgfQogCisgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVSYXJlRGF0YSwgbV9j
YWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKTsKKyAgICB9CisKICAgICBERUNMQVJFX0VYUE9S
VF9JTkZPOwogCiAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYpOwogCisgICAg
dm9pZCBpbnZhbGlkYXRlV2F0Y2hwb2ludEJhc2VkVmFsaWRhdGlvbigpOworCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgZnJpZW5kIGNsYXNzIENhY2hlZFNwZWNp
YWxQcm9wZXJ0eUFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDsKQEAgLTEyMSwxMCArMTMzLDEz
IEBAIGNsYXNzIFN0cnVjdHVyZVJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
Ym9vbCBjYW5DYWNoZVNwZWNpYWxQcm9wZXJ0eShDYWNoZWRTcGVjaWFsUHJvcGVydHlLZXkpOwog
ICAgIHZvaWQgZ2l2ZVVwT25TcGVjaWFsUHJvcGVydHlDYWNoZShDYWNoZWRTcGVjaWFsUHJvcGVy
dHlLZXkpOwogCisgICAgYm9vbCB0cnlDYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0b3JWaWFXYXRj
aHBvaW50KFZNJiwgU3RydWN0dXJlQ2hhaW4qKTsKKwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fcHJldmlvdXM7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIHNvbWUgc3Rvcnkg
Zm9yIGNsZWFyaW5nIHRoZXNlIHByb3BlcnR5IG5hbWVzIGNhY2hlcyBpbiBHQy4KICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjU5CiAgICAgV3JpdGVC
YXJyaWVyPEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcj4gbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yOworICAgIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUNoYWluSW52YWxpZGF0aW9uV2F0Y2hw
b2ludD4gbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yV2F0Y2hwb2ludHM7CiAgICAgV3Jp
dGVCYXJyaWVyPEpTSW1tdXRhYmxlQnV0dGVyZmx5PiBtX2NhY2hlZFByb3BlcnR5TmFtZXNbbnVt
YmVyT2ZDYWNoZWRQcm9wZXJ0eU5hbWVzXSB7IH07CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8UHJv
cGVydHlPZmZzZXQsIFJlZlB0cjxXYXRjaHBvaW50U2V0PiwgV1RGOjpJbnRIYXNoPFByb3BlcnR5
T2Zmc2V0PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxQcm9wZXJ0eU9mZnNl
dD4+IFByb3BlcnR5V2F0Y2hwb2ludE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgKaW5kZXggNTVhMTIzMTdl
YTU3YTZkMTNmOTlmN2NmZTdmMTc4NTA1OTUyMzkwZS4uNzJmMjg0ZWE1ZWFjMTNiYmJlZTFhYmQ5
MjAyMDY5OGIwMzJiOGEzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1l
RW51bWVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiU3RydWN0dXJl
Q2hhaW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YS5oIgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTQ3LDYgKzQ4LDIxIEBAIHN0cnVjdCBTcGVjaWFsUHJvcGVydHlDYWNoZSB7CiAgICAg
U3BlY2lhbFByb3BlcnR5Q2FjaGVFbnRyeSBtX2NhY2hlW251bWJlck9mQ2FjaGVkU3BlY2lhbFBy
b3BlcnR5S2V5c107CiB9OwogCitjbGFzcyBTdHJ1Y3R1cmVDaGFpbkludmFsaWRhdGlvbldhdGNo
cG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CitwdWJsaWM6CisgICAgU3RydWN0dXJl
Q2hhaW5JbnZhbGlkYXRpb25XYXRjaHBvaW50KCkKKyAgICAgICAgOiBXYXRjaHBvaW50KFdhdGNo
cG9pbnQ6OlR5cGU6OlN0cnVjdHVyZUNoYWluSW52YWxpZGF0aW9uKQorICAgICAgICAsIG1fc3Ry
dWN0dXJlUmFyZURhdGEobnVsbHB0cikKKyAgICB7IH0KKworICAgIHZvaWQgaW5zdGFsbChTdHJ1
Y3R1cmVSYXJlRGF0YSosIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmlyZUludGVybmFsKFZNJiwg
Y29uc3QgRmlyZURldGFpbCYpOworCitwcml2YXRlOgorICAgIC8vIE93biBkZXN0cnVjdG9yIG1h
eSBub3QgYmUgY2FsbGVkLiBLZWVwIG1lbWJlcnMgdHJpdmlhbGx5IGRlc3RydWN0aWJsZS4KKyAg
ICBKU0NfV0FUQ0hQT0lOVF9GSUVMRChQYWNrZWRDZWxsUHRyPFN0cnVjdHVyZVJhcmVEYXRhPiwg
bV9zdHJ1Y3R1cmVSYXJlRGF0YSk7Cit9OworCiBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0
YTo6c2V0UHJldmlvdXNJRChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIG1f
cHJldmlvdXMuc2V0KHZtLCB0aGlzLCBzdHJ1Y3R1cmUpOwpAQCAtODAsNiArOTYsOCBAQCBpbmxp
bmUgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJv
cGVydHlOYW1lRW51bWVyYXRvcgogaW5saW5lIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNldENh
Y2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IoVk0mIHZtLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IqIGVudW1lcmF0b3IpCiB7CiAgICAgbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLnNl
dCh2bSwgdGhpcywgZW51bWVyYXRvcik7CisgICAgYm9vbCB2YWxpZGF0ZWRWaWFXYXRjaHBvaW50
ID0gdHJ5Q2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yVmlhV2F0Y2hwb2ludCh2bSwgZW51bWVy
YXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4oKSk7CisgICAgZW51bWVyYXRvci0+c2V0VmFsaWRh
dGVkVmlhV2F0Y2hwb2ludCh2YWxpZGF0ZWRWaWFXYXRjaHBvaW50KTsKIH0KIAogaW5saW5lIEpT
SW1tdXRhYmxlQnV0dGVyZmx5KiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1l
cyhDYWNoZWRQcm9wZXJ0eU5hbWVzS2luZCBraW5kKSBjb25zdApAQCAtMTQwLDQgKzE1OCw0NCBA
QCBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVTcGVjaWFsUHJvcGVydHkoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIHJldHVybiBjYWNoZVNwZWNpYWxQcm9wZXJ0
eVNsb3coZ2xvYmFsT2JqZWN0LCB2bSwgb3duU3RydWN0dXJlLCB2YWx1ZSwga2V5LCBzbG90KTsK
IH0KIAoraW5saW5lIHZvaWQgU3RydWN0dXJlQ2hhaW5JbnZhbGlkYXRpb25XYXRjaHBvaW50Ojpp
bnN0YWxsKFN0cnVjdHVyZVJhcmVEYXRhKiBzdHJ1Y3R1cmVSYXJlRGF0YSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCit7CisgICAgbV9zdHJ1Y3R1cmVSYXJlRGF0YSA9IHN0cnVjdHVyZVJhcmVEYXRh
OworICAgIHN0cnVjdHVyZS0+YWRkVHJhbnNpdGlvbldhdGNocG9pbnQodGhpcyk7Cit9CisKK2lu
bGluZSB2b2lkIFN0cnVjdHVyZUNoYWluSW52YWxpZGF0aW9uV2F0Y2hwb2ludDo6ZmlyZUludGVy
bmFsKFZNJiwgY29uc3QgRmlyZURldGFpbCYpCit7CisgICAgaWYgKCFtX3N0cnVjdHVyZVJhcmVE
YXRhLT5pc0xpdmUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc3RydWN0dXJlUmFyZURhdGEt
PmludmFsaWRhdGVXYXRjaHBvaW50QmFzZWRWYWxpZGF0aW9uKCk7Cit9CisKK2lubGluZSBib29s
IFN0cnVjdHVyZVJhcmVEYXRhOjp0cnlDYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0b3JWaWFXYXRj
aHBvaW50KFZNJiB2bSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluKQoreworICAgIHVuc2lnbmVkIHNp
emUgPSAwOworICAgIGZvciAoYXV0byogY3VycmVudCA9IGNoYWluLT5oZWFkKCk7ICpjdXJyZW50
OyArK2N1cnJlbnQpIHsKKyAgICAgICAgKytzaXplOworICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1
Y3R1cmVJRCA9ICpjdXJyZW50OworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmdl
dFN0cnVjdHVyZShzdHJ1Y3R1cmVJRCk7CisgICAgICAgIGlmICghc3RydWN0dXJlLT5wcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yU2hvdWxkV2F0Y2goKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yV2F0Y2hwb2ludHMgPSBG
aXhlZFZlY3RvcjxTdHJ1Y3R1cmVDaGFpbkludmFsaWRhdGlvbldhdGNocG9pbnQ+KHNpemUpOwor
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8qIGN1cnJlbnQgPSBjaGFpbi0+
aGVhZCgpOyAqY3VycmVudDsgKytjdXJyZW50KSB7CisgICAgICAgIFN0cnVjdHVyZUlEIHN0cnVj
dHVyZUlEID0gKmN1cnJlbnQ7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uZ2V0
U3RydWN0dXJlKHN0cnVjdHVyZUlEKTsKKyAgICAgICAgbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yV2F0Y2hwb2ludHNbaW5kZXhdLmluc3RhbGwodGhpcywgc3RydWN0dXJlKTsKKyAgICAg
ICAgKytpbmRleDsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSB2b2lkIFN0
cnVjdHVyZVJhcmVEYXRhOjppbnZhbGlkYXRlV2F0Y2hwb2ludEJhc2VkVmFsaWRhdGlvbigpCit7
CisgICAgbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNsZWFyKCk7CisgICAgbV9jYWNo
ZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yV2F0Y2hwb2ludHMgPSBGaXhlZFZlY3RvcjxTdHJ1Y3R1
cmVDaGFpbkludmFsaWRhdGlvbldhdGNocG9pbnQ+KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDFkNDc0
ZmI0ZDhmMjg1MGQ0NWVmMGQwMzMzZDc0OTg5ZTRhMTAzNjcuLmE4NzAxNjkwNjU0YzZlMzQzY2M3
OGFkZmVhOGZmMzNlODJiZGRhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAKQEAgLTIxMTgsNiArMjExOCw3IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGZ1bmN0aW9uQXNhbkVuYWJsZWQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oZnVuY3Rpb25Jc01lbW9yeUxpbWl0ZWQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oZnVuY3Rpb25Vc2VKSVQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oZnVuY3Rpb25Jc0dpZ2FjYWdlRW5hYmxlZCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihmdW5jdGlvblRvQ2FjaGVhYmxlRGljdGlvbmFyeSk7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5KTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uSXNQcml2YXRlU3ltYm9sKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRHVtcEFuZFJlc2V0UGFz
RGVidWdTcGVjdHJ1bSk7CkBAIC0zNzEzLDYgKzM3MTQsMjAgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uSXNHaWdhY2FnZUVuYWJsZWQsIChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihHaWdhY2FnZTo6aXNF
bmFibGVkKCkpKTsKIH0KIAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uVG9DYWNo
ZWFibGVEaWN0aW9uYXJ5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQoreworICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGlmICghb2JqZWN0
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
RXhwZWN0ZWQgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0Il9zKTsKKyAgICBpZiAoIW9i
amVjdC0+c3RydWN0dXJlKHZtKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkKKyAgICAgICAg
b2JqZWN0LT5jb252ZXJ0VG9EaWN0aW9uYXJ5KHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKG9iamVjdCk7Cit9CisKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblRvVW5j
YWNoZWFibGVEaWN0aW9uYXJ5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7
CkBAIC0zOTQ2LDYgKzM5NjEsNyBAQCB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKICAgICBhZGRGdW5jdGlvbih2bSwgInVzZUpJVCIsIGZ1bmN0aW9uVXNlSklULCAwKTsK
ICAgICBhZGRGdW5jdGlvbih2bSwgImlzR2lnYWNhZ2VFbmFibGVkIiwgZnVuY3Rpb25Jc0dpZ2Fj
YWdlRW5hYmxlZCwgMCk7CiAKKyAgICBhZGRGdW5jdGlvbih2bSwgInRvQ2FjaGVhYmxlRGljdGlv
bmFyeSIsIGZ1bmN0aW9uVG9DYWNoZWFibGVEaWN0aW9uYXJ5LCAxKTsKICAgICBhZGRGdW5jdGlv
bih2bSwgInRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5IiwgZnVuY3Rpb25Ub1VuY2FjaGVhYmxlRGlj
dGlvbmFyeSwgMSk7CiAKICAgICBhZGRGdW5jdGlvbih2bSwgImlzUHJpdmF0ZVN5bWJvbCIsIGZ1
bmN0aW9uSXNQcml2YXRlU3ltYm9sLCAxKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjM2NjQwNzk1ZDQ4NmYyYzYwYTc5MTFmMjkxZDMz
YzI2NzU0NTA0MS4uMDE2OWU0MTNkYWZhMTY3MWFkN2JhYTA0MWZlZDRhNWYzNTIzZWFiNCAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wOS0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFZhbGlkYXRlIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciB2aWEg
d2F0Y2hwb2ludHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyOTg0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3RyZXNzL2Zvci1pbi1jYWNoZWFibGUtZGljdGlvbmFyeS5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgIChjb2xsZWN0KToKKyAgICAgICAgKiBzdHJlc3MvZm9y
LWluLWludmFsaWRhdGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAo
Y29sbGVjdCk6CisgICAgICAgICogc3RyZXNzL2Zvci1pbi11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGNvbGxlY3QpOgorCiAy
MDIxLTA4LTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
SW50bC5EYXRlVGltZUZvcm1hdCBpbmNvcnJlY3RseSBwYXJzZXMgcGF0dGVybnMgd2l0aCAnaCcg
bGl0ZXJhbApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZm9yLWluLWNhY2hlYWJsZS1kaWN0
aW9uYXJ5LmpzIGIvSlNUZXN0cy9zdHJlc3MvZm9yLWluLWNhY2hlYWJsZS1kaWN0aW9uYXJ5Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjEwZWJmMTc5MDExMjFiOWNiY2Y0NGNiZjRlYWNiMTY2NzdiMGQwMjgKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mb3ItaW4tY2FjaGVhYmxlLWRpY3Rpb25h
cnkuanMKQEAgLTAsMCArMSwzNCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2xldCBvYmplY3QgPSB7CisgICAgYTog
NDIsCisgICAgYjogNDQsCisgICAgYzogNDMsCisgICAgZDogNDQsCit9OworCitmdW5jdGlvbiBj
b2xsZWN0KG9iamVjdCkKK3sKKyAgICBsZXQgYXJyYXkgPSBbXTsKKyAgICBmb3IgKGxldCBrZXkg
aW4gb2JqZWN0KQorICAgICAgICBhcnJheS5wdXNoKGtleSk7CisgICAgcmV0dXJuIGFycmF5Owor
fQorCitsZXQgYXJyYXkxID0gY29sbGVjdChvYmplY3QpOworbGV0IGFycmF5MiA9IGNvbGxlY3Qo
b2JqZWN0KTsKKyR2bS50b0NhY2hlYWJsZURpY3Rpb25hcnkob2JqZWN0KTsKK29iamVjdC5lID0g
NDQ7CitsZXQgYXJyYXkzID0gY29sbGVjdChvYmplY3QpOworbGV0IGFycmF5NCA9IGNvbGxlY3Qo
b2JqZWN0KTsKK29iamVjdC5mID0gNDQ7CitsZXQgYXJyYXk1ID0gY29sbGVjdChvYmplY3QpOwor
CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShhcnJheTEpLCBgWyJhIiwiYiIsImMiLCJkIl1gKTsK
K3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KGFycmF5MiksIGBbImEiLCJiIiwiYyIsImQiXWApOwor
c2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoYXJyYXkzKSwgYFsiYSIsImIiLCJjIiwiZCIsImUiXWAp
Oworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoYXJyYXk0KSwgYFsiYSIsImIiLCJjIiwiZCIsImUi
XWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoYXJyYXk1KSwgYFsiYSIsImIiLCJjIiwiZCIs
ImUiLCJmIl1gKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Zvci1pbi1pbnZhbGlkYXRl
LmpzIGIvSlNUZXN0cy9zdHJlc3MvZm9yLWluLWludmFsaWRhdGUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJj
Y2ZiODIzNGQ1MDJiMGRkYTExZjYxODAwZDk0ZDAxNDhmMjIyZQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2Zvci1pbi1pbnZhbGlkYXRlLmpzCkBAIC0wLDAgKzEsNDggQEAKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwp
OworfQorCitsZXQgb2JqZWN0ID0geworICAgIGE6IDQyLAorICAgIGI6IDQ0LAorICAgIGM6IDQz
LAorICAgIGQ6IDQ0LAorfTsKKworZnVuY3Rpb24gY29sbGVjdChvYmplY3QpCit7CisgICAgbGV0
IGFycmF5ID0gW107CisgICAgZm9yIChsZXQga2V5IGluIG9iamVjdCkKKyAgICAgICAgYXJyYXku
cHVzaChrZXkpOworICAgIHJldHVybiBhcnJheTsKK30KKworbGV0IGFycmF5MSA9IGNvbGxlY3Qo
b2JqZWN0KTsKK2xldCBhcnJheTIgPSBjb2xsZWN0KG9iamVjdCk7CitvYmplY3QuZSA9IDQ0Owor
bGV0IGFycmF5MyA9IGNvbGxlY3Qob2JqZWN0KTsKK2xldCBhcnJheTQgPSBjb2xsZWN0KG9iamVj
dCk7CitvYmplY3QuZiA9IDQ0OworbGV0IGFycmF5NSA9IGNvbGxlY3Qob2JqZWN0KTsKK2xldCBh
cnJheTYgPSBjb2xsZWN0KG9iamVjdCk7CitsZXQgcHJvdG8gPSB7IEhlbGxvOiAzMyB9Oworb2Jq
ZWN0Ll9fcHJvdG9fXyA9IHByb3RvOworbGV0IGFycmF5NyA9IGNvbGxlY3Qob2JqZWN0KTsKK2xl
dCBhcnJheTggPSBjb2xsZWN0KG9iamVjdCk7Citwcm90by52YWx1ZXMgPSAzMzsKK2xldCBhcnJh
eTkgPSBjb2xsZWN0KG9iamVjdCk7CitsZXQgYXJyYXkxMCA9IGNvbGxlY3Qob2JqZWN0KTsKK2xl
dCBhcnJheTExID0gY29sbGVjdChvYmplY3QpOworCitzaG91bGRCZShKU09OLnN0cmluZ2lmeShh
cnJheTEpLCBgWyJhIiwiYiIsImMiLCJkIl1gKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KGFy
cmF5MiksIGBbImEiLCJiIiwiYyIsImQiXWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoYXJy
YXkzKSwgYFsiYSIsImIiLCJjIiwiZCIsImUiXWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
YXJyYXk0KSwgYFsiYSIsImIiLCJjIiwiZCIsImUiXWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdp
ZnkoYXJyYXk1KSwgYFsiYSIsImIiLCJjIiwiZCIsImUiLCJmIl1gKTsKK3Nob3VsZEJlKEpTT04u
c3RyaW5naWZ5KGFycmF5NiksIGBbImEiLCJiIiwiYyIsImQiLCJlIiwiZiJdYCk7CitzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShhcnJheTcpLCBgWyJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJIZWxs
byJdYCk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShhcnJheTgpLCBgWyJhIiwiYiIsImMiLCJk
IiwiZSIsImYiLCJIZWxsbyJdYCk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShhcnJheTkpLCBg
WyJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJIZWxsbyIsInZhbHVlcyJdYCk7CitzaG91bGRCZShK
U09OLnN0cmluZ2lmeShhcnJheTEwKSwgYFsiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiSGVsbG8i
LCJ2YWx1ZXMiXWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoYXJyYXkxMSksIGBbImEiLCJi
IiwiYyIsImQiLCJlIiwiZiIsIkhlbGxvIiwidmFsdWVzIl1gKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2Zvci1pbi11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LmpzIGIvSlNUZXN0cy9zdHJl
c3MvZm9yLWluLXVuY2FjaGVhYmxlLWRpY3Rpb25hcnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWZmOWZhNGZi
MGFmNDA2YzkxNDk4NWE3ZTllYzVlODM5NGY3MDlkZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2Zvci1pbi11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LmpzCkBAIC0wLDAgKzEsMzQg
QEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBh
Y3R1YWwpOworfQorCitsZXQgb2JqZWN0ID0geworICAgIGE6IDQyLAorICAgIGI6IDQ0LAorICAg
IGM6IDQzLAorICAgIGQ6IDQ0LAorfTsKKworZnVuY3Rpb24gY29sbGVjdChvYmplY3QpCit7Cisg
ICAgbGV0IGFycmF5ID0gW107CisgICAgZm9yIChsZXQga2V5IGluIG9iamVjdCkKKyAgICAgICAg
YXJyYXkucHVzaChrZXkpOworICAgIHJldHVybiBhcnJheTsKK30KKworbGV0IGFycmF5MSA9IGNv
bGxlY3Qob2JqZWN0KTsKK2xldCBhcnJheTIgPSBjb2xsZWN0KG9iamVjdCk7Ciskdm0udG9VbmNh
Y2hlYWJsZURpY3Rpb25hcnkob2JqZWN0KTsKK29iamVjdC5lID0gNDQ7CitsZXQgYXJyYXkzID0g
Y29sbGVjdChvYmplY3QpOworbGV0IGFycmF5NCA9IGNvbGxlY3Qob2JqZWN0KTsKK29iamVjdC5m
ID0gNDQ7CitsZXQgYXJyYXk1ID0gY29sbGVjdChvYmplY3QpOworCitzaG91bGRCZShKU09OLnN0
cmluZ2lmeShhcnJheTEpLCBgWyJhIiwiYiIsImMiLCJkIl1gKTsKK3Nob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KGFycmF5MiksIGBbImEiLCJiIiwiYyIsImQiXWApOworc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkoYXJyYXkzKSwgYFsiYSIsImIiLCJjIiwiZCIsImUiXWApOworc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoYXJyYXk0KSwgYFsiYSIsImIiLCJjIiwiZCIsImUiXWApOworc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoYXJyYXk1KSwgYFsiYSIsImIiLCJjIiwiZCIsImUiLCJmIl1gKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437244</attachid>
            <date>2021-09-02 22:13:51 -0700</date>
            <delta_ts>2021-09-03 09:10:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229846-20210902221350.patch</filename>
            <type>text/plain</type>
            <size>33042</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MzczYmNmZGE5NGMwYjMzODhmYmQ3ZTI2YWNhZDg0MzMyYjdmNTIxLi42MGY3NjdiZTBmNDU0MmMw
OWI0N2I4Mjk1YzRlZDA5MjA2MjUxNjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAyMS0wOS0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFZhbGlkYXRlIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciB2aWEg
d2F0Y2hwb2ludHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyOTg0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIExvb2tlZCBpbnRvIEVsbS1Ub2RvTVZDIHNhbXBsaW5nIHByb2ZpbGVyIGRhdGEgYW5kIGZv
dW5kIHRoYXQgb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IgaXMgdGFraW5nIGVub3VnaCBhbW91
bnQgb2YgdGltZS4KKyAgICAgICAgQW5kIEluc3RydW1lbnRzIHNheSB2YWxpZGF0aW5nIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvciB2aWEgdHJhdmVyc2luZyBTdHJ1Y3R1cmVDaGFpbiBpcyBjb3N0
bHkuCisgICAgICAgIFdlIGFyZSBjYWNoaW5nIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciBvbmx5
IHdoZW4gd2UgbWVldCB0aGUgY29uZGl0aW9uOiBvYmplY3RzIGluIHByb3RvdHlwZSBjaGFpbiBj
YW4gZW5zdXJlIGlkZW50aXR5IG9mCisgICAgICAgIHByb3BlcnR5IG5hbWVzIGlmIHN0cnVjdHVy
ZSBpcyBub3QgY2hhbmdlZC4gU28gd2UgY2FuIHVzZSB3YXRjaHBvaW50IGJhc2VkIGFwcHJvYWNo
IHRvIGludmFsaWRhdGUgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW5qZWN0cyBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50cyBpZiBwb3NzaWJs
ZS4gQW5kIHdoZW4gd2F0Y2hwb2ludCBpcyBmaXJlZCwgd2UgaW52YWxpZGF0ZSBKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IKKyAgICAgICAgY2FjaGVkIGluIFN0cnVjdHVyZVJhcmVEYXRhLCBhcyBp
ZiB3ZSBhcmUgZW5zdXJpbmcgcHJvdG90eXBlIGNoYWluIGNvbmRpdGlvbiBmb3IgdGhlIG90aGVy
IHByb3BlcnR5IGFjY2Vzc2VzLgorCisgICAgICAgIFRoaXMgb2ZmZXJzIDAuNiUgaW1wcm92ZW1l
bnQgaW4gU3BlZWRvbWV0ZXIyLgorCisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg
fCAgICAgICAgICAgICAgIHN1YnRlc3QgICAgICAgICAgICAgICAgfCAgICAgbXMgICAgICB8ICAg
ICBtcyAgICAgIHwgIGIgLyBhICAgfCBwVmFsdWUgKHNpZ25pZmljYW5jZSB1c2luZyBGYWxzZSBE
aXNjb3ZlcnkgUmF0ZSkgfAorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIHwgRWxt
LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgICAgIHwxMjEuOTcxNjY3ICAgfDExNy43MjUw
MDAgICB8MC45NjUxODMgIHwgMC4wMDAwMDAgKHNpZ25pZmljYW50KSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBWdWVKUy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAg
ICAgfDI2LjI0NjY2NyAgICB8MjYuMDM1MDAwICAgIHwwLjk5MTkzNSAgfCAwLjM2MDYxNCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEVtYmVySlMt
VG9kb01WQyAgICAgICAgICAgICAgICAgICAgICB8MTI2LjE5NjY2NyAgIHwxMjYuNjUzMzMzICAg
fDEuMDAzNjE5ICB8IDAuMTAzMTM4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIHwgQmFja2JvbmVKUy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgIHw0
OC45NzY2NjcgICAgfDQ4Ljg4MTY2NyAgICB8MC45OTgwNjAgIHwgMC40NzQxMDYgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBQcmVhY3QtVG9kb01W
QyAgICAgICAgICAgICAgICAgICAgICAgfDIwLjExODMzMyAgICB8MjAuMTE1MDAwICAgIHwwLjk5
OTgzNCAgfCAwLjk4OTAzOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICB8IEFuZ3VsYXJKUy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICB8MTMxLjU0
NTAwMCAgIHwxMzAuNzA2NjY3ICAgfDAuOTkzNjI3ICB8IDAuMDE1MzQ0IChzaWduaWZpY2FudCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgVmFuaWxsYS1FUzIwMTUtVG9k
b01WQyAgICAgICAgICAgICAgIHw2My43MjUwMDAgICAgfDYzLjc3MzMzMyAgICB8MS4wMDA3NTgg
IHwgMC43MDY1NjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICAgfCBJbmZlcm5vLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDY0LjIzMTY2NyAg
ICB8NjIuNjUzMzMzICAgIHwwLjk3NTQyNyAgfCAwLjAwMDAwMCAoc2lnbmlmaWNhbnQpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEZsaWdodC1Ub2RvTVZDICAgICAgICAg
ICAgICAgICAgICAgICB8NzcuMjIzMzMzICAgIHw3Ny42OTAwMDAgICAgfDEuMDA2MDQzICB8IDAu
MjY4MzA5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
IHwgQW5ndWxhcjItVHlwZVNjcmlwdC1Ub2RvTVZDICAgICAgICAgIHwzOS42ODY2NjcgICAgfDM5
LjUwMDAwMCAgICB8MC45OTUyOTYgIHwgMC40OTk2NzggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBWYW5pbGxhSlMtVG9kb01WQyAgICAgICAgICAg
ICAgICAgICAgfDUyLjMyMTY2NyAgICB8NTEuOTczMzMzICAgIHwwLjk5MzM0MiAgfCAwLjA3Nzc3
NyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IGpR
dWVyeS1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICB8MjI0LjkwODMzMyAgIHwyMjUuNzYx
NjY3ICAgfDEuMDAzNzk0ICB8IDAuMDIyMTM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgIHwgRW1iZXJKUy1EZWJ1Zy1Ub2RvTVZDICAgICAgICAgICAg
ICAgIHwzMzkuODU4MzMzICAgfDMzOS44ODY2NjcgICB8MS4wMDAwODMgIHwgMC45NTAzMjAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBSZWFjdC1U
b2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgfDg2LjU0NTAwMCAgICB8ODYuMDcwMDAwICAg
IHwwLjk5NDUxMiAgfCAwLjAwMTUxOCAoc2lnbmlmaWNhbnQpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICB8IFJlYWN0LVJlZHV4LVRvZG9NVkMgICAgICAgICAgICAgICAgICB8
MTQ2LjAxMDAwMCAgIHwxNDIuODU1MDAwICAgfDAuOTc4MzkyICB8IDAuMDAwMDAwIChzaWduaWZp
Y2FudCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgVmFuaWxsYS1FUzIw
MTUtQmFiZWwtV2VicGFjay1Ub2RvTVZDIHw2MS40MTE2NjcgICAgfDYxLjQ1NjY2NyAgICB8MS4w
MDA3MzMgIHwgMC42MzE0OTkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBhIG1lYW4gPSAyNTUuOTY1NDMK
KyAgICAgICAgYiBtZWFuID0gMjU3LjUzMzc5CisgICAgICAgIHBWYWx1ZSA9IDAuMDAwMDAzNDM5
NAorICAgICAgICAoQmlnZ2VyIG1lYW5zIGFyZSBiZXR0ZXIuKQorICAgICAgICAxLjAwNiB0aW1l
cyBiZXR0ZXIKKyAgICAgICAgUmVzdWx0cyBBUkUgc2lnbmlmaWNhbnQKKworICAgICAgICAqIGJ5
dGVjb2RlL1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9pbnQuaDoK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9yKToKKyAgICAgICAg
KiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExMb3dl
ckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51
bWVyYXRvci5oOgorICAgICAgICAoSlNDOjpwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmVSYXJlRGF0YUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6
OnNldENhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVDaGFpbkludmFsaWRhdGlvbldhdGNocG9pbnQ6Omluc3RhbGwpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVDaGFpbkludmFsaWRhdGlvbldhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjp0cnlDYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0
b3JWaWFXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmludmFs
aWRhdGVXYXRjaHBvaW50QmFzZWRWYWxpZGF0aW9uKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxh
clZNLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAg
ICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIxLTA4LTI3ICBTdGVw
aGFuIFN6YWJvICA8c3RlcGhhbi5zemFib0Bzb255LmNvbT4KIAogICAgICAgICBbUGxheVN0YXRp
b25dW0NNYWtlXSBBZGQgY29udHJvbCBvdmVyIHdoZXRoZXIgSmF2YVNjcmlwdENvcmUgc2hvdWxk
IGJlIHNoYXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dh
dGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQu
Y3BwCmluZGV4IDk0ZjA3MTA1MWZiMjlhY2RiNjlmOTY4NGI0YTRmYzhiM2VkYmU1MDQuLmE3Mzg3
ZGNkOTRiNTNkNGEwZTBlZTk1ZmIwY2I2YmFiNjdmMTJlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJGdW5jdGlvblJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiSGVhcElubGluZXMuaCIKICNpbmNs
dWRlICJMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCIKKyNp
bmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVT
dHViQ2xlYXJpbmdXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiVk0uaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgKaW5kZXggOTYwODM4MzBlMTYxYWYxNmIx
NjU5Y2ZmMjVmYmYzOWQyODA1MzQ3Ni4uMTNjYzE1NTQ0YmQ3NDA0OGViMjFlMDY0YTc4NmE5NDhm
NzFlNTk5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNo
cG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5o
CkBAIC0xMDgsNyArMTA4LDggQEAgY2xhc3MgV2F0Y2hwb2ludFNldDsKICAgICBtYWNybyhDb2Rl
QmxvY2tKZXR0aXNvbmluZywgQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50KSBcCiAgICAg
bWFjcm8oTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmUsIExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludCkgXAogICAgIG1hY3JvKEZ1bmN0aW9uUmFy
ZURhdGFBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nLCBGdW5jdGlvblJhcmVEYXRhOjpBbGxvY2F0
aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCkgXAotICAgIG1hY3JvKENhY2hlZFNwZWNpYWxQ
cm9wZXJ0eUFkYXB0aXZlU3RydWN0dXJlLCBDYWNoZWRTcGVjaWFsUHJvcGVydHlBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQpCisgICAgbWFjcm8oQ2FjaGVkU3BlY2lhbFByb3BlcnR5QWRhcHRp
dmVTdHJ1Y3R1cmUsIENhY2hlZFNwZWNpYWxQcm9wZXJ0eUFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludCkgXAorICAgIG1hY3JvKFN0cnVjdHVyZUNoYWluSW52YWxpZGF0aW9uLCBTdHJ1Y3R1cmVD
aGFpbkludmFsaWRhdGlvbldhdGNocG9pbnQpIFwKIAogI2lmIEVOQUJMRShKSVQpCiAjZGVmaW5l
IEpTQ19XQVRDSFBPSU5UX1RZUEVTX1dJVEhPVVRfREZHKG1hY3JvKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDgxNjRmYWViYzA0
MjZiMTRkZDUzNGQ4Mjc3NjE1MDRlNzRlYzRmMGEuLjE2NjZlZTczNjY5ZTkwMjIwODRjYzM1MDA1
N2JiNzMyMjgwMmRhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCkBAIC0xMzk0NCwxNCArMTM5NDQsNDQgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldFByb3BlcnR5RW51bWVyYXRvcihOb2RlKiBub2RlKQogewogICAgIGlm
IChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgewogICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhp
cyk7CisKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICBHUFJS
ZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2gy
R1BSID0gc2NyYXRjaDIuZ3ByKCk7CiAKLSAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdl
dFByb3BlcnR5RW51bWVyYXRvckNlbGwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGJhc2VHUFIpOworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNl
czsKKworICAgICAgICAvLyBXZSBnbyB0byB0aGUgaW5saW5lZCBmYXN0IHBhdGggaWYgdGhlIG9i
amVjdCBpcyBVbmRlY2lkZWRTaGFwZSAvIE5vSW5kZXhpbmdTaGFwZSBmb3Igc2ltcGxpY2l0eS4K
KyAgICAgICAgc3RhdGljX2Fzc2VydCghTm9uQXJyYXkpOworICAgICAgICBzdGF0aWNfYXNzZXJ0
KEFycmF5Q2xhc3MgPT0gMSk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoVW5kZWNpZGVkU2hhcGUg
PT0gMik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoQXJyYXlXaXRoVW5kZWNpZGVkID09IDMpOwor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KE5vbkFycmF5IDw9IEFycmF5V2l0aFVuZGVjaWRlZCk7Cisg
ICAgICAgIHN0YXRpY19hc3NlcnQoQXJyYXlDbGFzcyA8PSBBcnJheVdpdGhVbmRlY2lkZWQpOwor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KEFycmF5V2l0aFVuZGVjaWRlZCA8PSBBcnJheVdpdGhVbmRl
Y2lkZWQpOworICAgICAgICBtX2ppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNDZWxsOjppbmRleGluZ1R5cGVBbmRNaXNjT2Zmc2V0KCkpLCBzY3JhdGNoMUdQUik7Cisg
ICAgICAgIG1faml0LmFuZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEluZGV4aW5nVHlw
ZU1hc2spLCBzY3JhdGNoMUdQUik7CisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZSwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKEFycmF5V2l0aFVuZGVjaWRlZCkpKTsKKyAgICAgICAgbV9qaXQuZW1pdExvYWRT
dHJ1Y3R1cmUodm0oKSwgYmFzZUdQUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDFHUFIsIFN0cnVj
dHVyZTo6cHJldmlvdXNPclJhcmVEYXRhT2Zmc2V0KCkpLCBzY3JhdGNoMUdQUik7CisKKyAgICAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVy
bywgc2NyYXRjaDFHUFIpKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gz
MihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDFHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4odm0oKS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUtPnN0cnVjdHVyZUlEKCkpKSkpOworICAg
ICAgICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoMUdQUiwgU3Ry
dWN0dXJlUmFyZURhdGE6Om9mZnNldE9mQ2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcigpKSwg
c2NyYXRjaDFHUFIpOworICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQ
dHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzY3JhdGNoMUdQUikpOworICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olplcm8sIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzY3JhdGNoMUdQUiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpvZmZzZXRP
ZlZhbGlkYXRlZFZpYVdhdGNocG9pbnQoKSkpKTsKKyAgICAgICAgYXV0byBkb25lID0gbV9qaXQu
anVtcCgpOworCisgICAgICAgIHNsb3dDYXNlcy5saW5rKCZtX2ppdCk7CisgICAgICAgIHNpbGVu
dFNwaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUik7CisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yQ2VsbCwgc2NyYXRjaDFH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSKTsKKyAgICAgICAgc2lsZW50
RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisKKyAgICAgICAgZG9uZS5saW5rKCZt
X2ppdCk7CisgICAgICAgIGNlbGxSZXN1bHQoc2NyYXRjaDFHUFIsIG5vZGUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IDllZDg3MTMzZjc3MjMwZTBlMWJkNDQ1ZjMw
NjIzNDM3ZmNkNjM0MDYuLmVkMjM4ZmFhMzFhZjRjZDU4YjBmYTAzOGE4Y2IxZWE0MmFkOTFhZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCkBAIC0xMTAsMTEgKzExMCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEZUTCB7CiAgICAgbWFjcm8oSlNPYmplY3RfYnV0dGVyZmx5LCBKU09iamVjdDo6YnV0dGVy
Zmx5T2Zmc2V0KCkpIFwKICAgICBtYWNybyhKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3JfY2FjaGVk
SW5saW5lQ2FwYWNpdHksIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkSW5saW5lQ2Fw
YWNpdHlPZmZzZXQoKSkgXAogICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl9jYWNo
ZWRQcm9wZXJ0eU5hbWVzVmVjdG9yLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZFBy
b3BlcnR5TmFtZXNWZWN0b3JPZmZzZXQoKSkgXAorICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvcl9jYWNoZWRQcm90b3R5cGVDaGFpbiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpv
ZmZzZXRPZkNhY2hlZFByb3RvdHlwZUNoYWluKCkpIFwKICAgICBtYWNybyhKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3JfY2FjaGVkU3RydWN0dXJlSUQsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6
Y2FjaGVkU3RydWN0dXJlSURPZmZzZXQoKSkgXAogICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvcl9lbmRHZW5lcmljUHJvcGVydHlJbmRleCwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
OjplbmRHZW5lcmljUHJvcGVydHlJbmRleE9mZnNldCgpKSBcCiAgICAgbWFjcm8oSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yX2VuZFN0cnVjdHVyZVByb3BlcnR5SW5kZXgsIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcjo6ZW5kU3RydWN0dXJlUHJvcGVydHlJbmRleE9mZnNldCgpKSBcCiAgICAgbWFj
cm8oSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yX2luZGV4TGVuZ3RoLCBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3I6OmluZGV4ZWRMZW5ndGhPZmZzZXQoKSkgXAogICAgIG1hY3JvKEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvcl9tb2RlU2V0LCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Om1vZGVTZXRP
ZmZzZXQoKSkgXAorICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl92YWxpZGF0ZWRW
aWFXYXRjaHBvaW50LCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Om9mZnNldE9mVmFsaWRhdGVk
VmlhV2F0Y2hwb2ludCgpKSBcCiAgICAgbWFjcm8oSlNSb3BlU3RyaW5nX2ZsYWdzLCBKU1JvcGVT
dHJpbmc6Om9mZnNldE9mRmxhZ3MoKSkgXAogICAgIG1hY3JvKEpTUm9wZVN0cmluZ19sZW5ndGgs
IEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXAogICAgIG1hY3JvKEpTUm9wZVN0cmlu
Z19maWJlcjAsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjAoKSkgXApAQCAtMTUyLDYgKzE1
NCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhTdHJ1Y3R1
cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAogICAgIG1h
Y3JvKFN0cnVjdHVyZVJhcmVEYXRhX2NhY2hlZEtleXMsIFN0cnVjdHVyZVJhcmVEYXRhOjpvZmZz
ZXRPZkNhY2hlZFByb3BlcnR5TmFtZXMoQ2FjaGVkUHJvcGVydHlOYW1lc0tpbmQ6OktleXMpKSBc
CiAgICAgbWFjcm8oU3RydWN0dXJlUmFyZURhdGFfY2FjaGVkR2V0T3duUHJvcGVydHlOYW1lcywg
U3RydWN0dXJlUmFyZURhdGE6Om9mZnNldE9mQ2FjaGVkUHJvcGVydHlOYW1lcyhDYWNoZWRQcm9w
ZXJ0eU5hbWVzS2luZDo6R2V0T3duUHJvcGVydHlOYW1lcykpIFwKKyAgICBtYWNybyhTdHJ1Y3R1
cmVSYXJlRGF0YV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLCBTdHJ1Y3R1cmVSYXJlRGF0
YTo6b2Zmc2V0T2ZDYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpIFwKICAgICBtYWNybyhI
YXNoTWFwSW1wbF9jYXBhY2l0eSwgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVj
a2V0RGF0YUtleT4+OjpvZmZzZXRPZkNhcGFjaXR5KCkpIFwKICAgICBtYWNybyhIYXNoTWFwSW1w
bF9idWZmZXIsICBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5
Pj46Om9mZnNldE9mQnVmZmVyKCkpIFwKICAgICBtYWNybyhIYXNoTWFwSW1wbF9oZWFkLCAgSGFz
aE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpvZmZzZXRPZkhl
YWQoKSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CmluZGV4IGFjOWQwYzQzM2UxMjZjOTVhYjI0ZmJhZDA1NDM3Yjg1MzgyMWE0ZjguLmYzODRhMzZi
MDU3YWZmODdiNDViOGY3OWQwYWM1MjE2YmQ2ZDc1Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEzMjIwLDEwICsxMzIyMCw1NCBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgIHZvaWQgY29tcGlsZUdldFByb3BlcnR5RW51bWVyYXRv
cigpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkKLSAgICAgICAgICAgIHNldEpTVmFsdWUo
dm1DYWxsKEludDY0LCBvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3JDZWxsLCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpKSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRpb25HZXRQ
cm9wZXJ0eUVudW1lcmF0b3IsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IENlbGxVc2UpIHsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNoZWNrRXhpc3RpbmdD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bGxD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIHJhcmVEYXRh
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayB2YWxpZGF0
aW9uQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBnZW5l
cmljQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250
aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICBMVmFsdWUgY2VsbCA9
IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgICAgIC8vIFdlIGdvIHRvIHRo
ZSBpbmxpbmVkIGZhc3QgcGF0aCBpZiB0aGUgb2JqZWN0IGlzIFVuZGVjaWRlZFNoYXBlIC8gTm9J
bmRleGluZ1NoYXBlIGZvciBzaW1wbGljaXR5LgorICAgICAgICAgICAgc3RhdGljX2Fzc2VydCgh
Tm9uQXJyYXkpOworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChBcnJheUNsYXNzID09IDEpOwor
ICAgICAgICAgICAgc3RhdGljX2Fzc2VydChVbmRlY2lkZWRTaGFwZSA9PSAyKTsKKyAgICAgICAg
ICAgIHN0YXRpY19hc3NlcnQoQXJyYXlXaXRoVW5kZWNpZGVkID09IDMpOworICAgICAgICAgICAg
c3RhdGljX2Fzc2VydChOb25BcnJheSA8PSBBcnJheVdpdGhVbmRlY2lkZWQpOworICAgICAgICAg
ICAgc3RhdGljX2Fzc2VydChBcnJheUNsYXNzIDw9IEFycmF5V2l0aFVuZGVjaWRlZCk7CisgICAg
ICAgICAgICBzdGF0aWNfYXNzZXJ0KEFycmF5V2l0aFVuZGVjaWRlZCA8PSBBcnJheVdpdGhVbmRl
Y2lkZWQpOworICAgICAgICAgICAgTFZhbHVlIGluZGV4aW5nVHlwZSA9IG1fb3V0LmJpdEFuZCht
X291dC5sb2FkOFplcm9FeHQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9pbmRleGluZ1R5cGVBbmRN
aXNjKSwgbV9vdXQuY29uc3RJbnQzMihJbmRleGluZ1R5cGVNYXNrKSk7CisgICAgICAgICAgICBt
X291dC5icmFuY2gobV9vdXQuYmVsb3dPckVxdWFsKGluZGV4aW5nVHlwZSwgbV9vdXQuY29uc3RJ
bnQzMihBcnJheVdpdGhVbmRlY2lkZWQpKSwgdW5zdXJlKGNoZWNrRXhpc3RpbmdDYXNlKSwgdW5z
dXJlKGdlbmVyaWNDYXNlKSk7CisKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuYXBwZW5kVG8oY2hlY2tFeGlzdGluZ0Nhc2UsIG5vdE51bGxDYXNlKTsKKyAgICAgICAg
ICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBsb2FkU3RydWN0dXJlKGNlbGwpOworICAgICAgICAgICAg
TFZhbHVlIHByZXZpb3VzT3JSYXJlRGF0YSA9IG1fb3V0LmxvYWRQdHIoc3RydWN0dXJlLCBtX2hl
YXBzLlN0cnVjdHVyZV9wcmV2aW91c09yUmFyZURhdGEpOworICAgICAgICAgICAgbV9vdXQuYnJh
bmNoKG1fb3V0Lm5vdE51bGwocHJldmlvdXNPclJhcmVEYXRhKSwgdW5zdXJlKG5vdE51bGxDYXNl
KSwgdW5zdXJlKGdlbmVyaWNDYXNlKSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5v
dE51bGxDYXNlLCByYXJlRGF0YUNhc2UpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAg
ICAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKG1fb3V0LmxvYWQzMihwcmV2aW91c09yUmFyZURh
dGEsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwgbV9vdXQuY29uc3RJbnQzMihtX2dyYXBo
Lm1fdm0uc3RydWN0dXJlU3RydWN0dXJlLT5zdHJ1Y3R1cmVJRCgpKSksCisgICAgICAgICAgICAg
ICAgdW5zdXJlKHJhcmVEYXRhQ2FzZSksIHVuc3VyZShnZW5lcmljQ2FzZSkpOworCisgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhyYXJlRGF0YUNhc2UsIHZhbGlkYXRpb25DYXNlKTsKKyAgICAg
ICAgICAgIExWYWx1ZSBjYWNoZWQgPSBtX291dC5sb2FkUHRyKHByZXZpb3VzT3JSYXJlRGF0YSwg
bV9oZWFwcy5TdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKTsK
KyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3ROdWxsKGNhY2hlZCksIHVuc3VyZSh2
YWxpZGF0aW9uQ2FzZSksIHVuc3VyZShnZW5lcmljQ2FzZSkpOworCisgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyh2YWxpZGF0aW9uQ2FzZSwgZ2VuZXJpY0Nhc2UpOworICAgICAgICAgICAgVmFs
dWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWNoZWQpOworICAgICAgICAg
ICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdFplcm8zMihtX291dC5sb2FkMzIoY2FjaGVkLCBtX2hl
YXBzLkpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl92YWxpZGF0ZWRWaWFXYXRjaHBvaW50KSksIHVu
c3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoZ2VuZXJpY0Nhc2UpKTsKKworICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oZ2VuZXJpY0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICBW
YWx1ZUZyb21CbG9jayBnZW5lcmljUmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChwb2ludGVy
VHlwZSgpLCBvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3JDZWxsLCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBjZWxsKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OworICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJl
c3VsdCwgZ2VuZXJpY1Jlc3VsdCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1l
cmF0b3IsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDEoKSkpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVFbnVtZXJhdG9yTmV4dFVwZGF0ZUlu
ZGV4QW5kTW9kZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCmluZGV4IDdkNDgxZTg5ZjI0ZDkzY2Q0YzlkMzll
ODExY2JiNzExYmQzOGMwZDguLmFkZDZhN2JlMTI4NGI1NzllZjAyODk2ZTk0ZDNmNDhmMjNkNjZj
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lRW51bWVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lRW51bWVyYXRvci5oCkBAIC03Miw2ICs3Miw3IEBAIGNsYXNzIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvciBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgU3RydWN0dXJlQ2hh
aW4qIGNhY2hlZFByb3RvdHlwZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9wcm90b3R5cGVDaGFp
bi5nZXQoKTsgfQogICAgIHZvaWQgc2V0Q2FjaGVkUHJvdG90eXBlQ2hhaW4oVk0mIHZtLCBTdHJ1
Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4pIHsgcmV0dXJuIG1fcHJvdG90eXBlQ2hhaW4uc2V0
KHZtLCB0aGlzLCBwcm90b3R5cGVDaGFpbik7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mQ2FjaGVkUHJvdG90eXBlQ2hhaW4oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLCBtX3Byb3RvdHlwZUNoYWluKTsgfQogCiAgICAgU3RydWN0dXJl
KiBjYWNoZWRTdHJ1Y3R1cmUoVk0mIHZtKSBjb25zdAogICAgIHsKQEAgLTk2LDYgKzk3LDEzIEBA
IGNsYXNzIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewog
ICAgIHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IsIG1fcHJvcGVydHlOYW1lcyk7CiAgICAgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZWYWxpZGF0ZWRWaWFXYXRjaHBvaW50KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvciwgbV92YWxpZGF0ZWRWaWFXYXRjaHBvaW50KTsgfQorCisg
ICAgYm9vbCB2YWxpZGF0ZWRWaWFXYXRjaHBvaW50KCkgY29uc3QgeyByZXR1cm4gbV92YWxpZGF0
ZWRWaWFXYXRjaHBvaW50OyB9CisgICAgdm9pZCBzZXRWYWxpZGF0ZWRWaWFXYXRjaHBvaW50KGJv
b2wgdmFsaWRhdGVkVmlhV2F0Y2hwb2ludCkKKyAgICB7CisgICAgICAgIG1fdmFsaWRhdGVkVmlh
V2F0Y2hwb2ludCA9IHZhbGlkYXRlZFZpYVdhdGNocG9pbnQ7CisgICAgfQogCiAgICAgSlNTdHJp
bmcqIGNvbXB1dGVOZXh0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGJhc2UsIHVpbnQzMl90
JiBjdXJyZW50SW5kZXgsIE1vZGUmLCBib29sIHNob3VsZEFsbG9jYXRlSW5kZXhlZE5hbWVTdHJp
bmcgPSB0cnVlKTsKIApAQCAtMTE1LDYgKzEyMyw3IEBAIGNsYXNzIEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvciBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVpbnQzMl90IG1fZW5kR2VuZXJp
Y1Byb3BlcnR5SW5kZXg7CiAgICAgdWludDMyX3QgbV9jYWNoZWRJbmxpbmVDYXBhY2l0eTsKICAg
ICB1aW50MzJfdCBtX21vZGVTZXQgeyAwIH07CisgICAgdWludDMyX3QgbV92YWxpZGF0ZWRWaWFX
YXRjaHBvaW50IHsgMCB9OwogfTsKIAogdm9pZCBnZXRFbnVtZXJhYmxlUHJvcGVydHlOYW1lcyhK
U0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCB1aW50MzJfdCYg
aW5kZXhlZExlbmd0aCwgdWludDMyX3QmIHN0cnVjdHVyZVByb3BlcnR5Q291bnQpOwpAQCAtMTMw
LDkgKzEzOSwxMCBAQCBpbmxpbmUgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBwcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogCiAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBiYXNlLT5zdHJ1Y3R1cmUodm0pOwogICAgIGlmICghaW5kZXhlZExlbmd0aAot
ICAgICAgICAmJiAoZW51bWVyYXRvciA9IHN0cnVjdHVyZS0+Y2FjaGVkUHJvcGVydHlOYW1lRW51
bWVyYXRvcigpKQotICAgICAgICAmJiBlbnVtZXJhdG9yLT5jYWNoZWRQcm90b3R5cGVDaGFpbigp
ID09IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZ2xvYmFsT2JqZWN0LCBiYXNlKSkKLSAgICAg
ICAgcmV0dXJuIGVudW1lcmF0b3I7CisgICAgICAgICYmIChlbnVtZXJhdG9yID0gc3RydWN0dXJl
LT5jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpKSB7CisgICAgICAgIGlmIChlbnVtZXJh
dG9yLT52YWxpZGF0ZWRWaWFXYXRjaHBvaW50KCkgfHwgZW51bWVyYXRvci0+Y2FjaGVkUHJvdG90
eXBlQ2hhaW4oKSA9PSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGdsb2JhbE9iamVjdCwgYmFz
ZSkpCisgICAgICAgICAgICByZXR1cm4gZW51bWVyYXRvcjsKKyAgICB9CiAKICAgICB1aW50MzJf
dCBudW1iZXJTdHJ1Y3R1cmVQcm9wZXJ0aWVzID0gMDsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBw
cm9wZXJ0eU5hbWVzKHZtLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBQcml2YXRlU3ltYm9s
TW9kZTo6RXhjbHVkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
CmluZGV4IDEzMWU3OGVmMThmMDc1NGIzNDNlOTlkYWM3YjYyZjZjMmE3YzU4NDkuLjlmMjdjYmEw
MWVkMjU2MGU0NTI1ZGNlMjBlOTRmYjA0MmRjMWVlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC02MzQsNiArNjM0LDExIEBAIGNsYXNzIFN0cnVjdHVy
ZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsKICAgICAgICAgcmV0dXJuIGRmZ1Nob3VsZFdhdGNo
SWZQb3NzaWJsZSgpICYmIHRyYW5zaXRpb25XYXRjaHBvaW50U2V0SXNTdGlsbFZhbGlkKCk7CiAg
ICAgfQorCisgICAgYm9vbCBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU2hvdWxkV2F0Y2goKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIGRmZ1Nob3VsZFdhdGNoKCk7CisgICAgfQogICAgICAg
ICAKICAgICB2b2lkIGFkZFRyYW5zaXRpb25XYXRjaHBvaW50KFdhdGNocG9pbnQqIHdhdGNocG9p
bnQpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZVJhcmVEYXRhLmgKaW5kZXggMDBiZjA2MzBkMmQxZjgwYzY2NTA5OWE3OWIyMmU2NjUz
NzA3NDAzYy4uZjA3ZDJjYmZjMzU1ZGYzOTM3ODIyNzUwZGRiY2RiZjc4MmFhNjc1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCkBA
IC0zMCwxMSArMzAsMTMgQEAKICNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCiAjaW5jbHVkZSAiUHJv
cGVydHlPZmZzZXQuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlIDx3dGYv
Rml4ZWRWZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcjsKIGNsYXNzIFN0cnVjdHVyZTsKK2NsYXNzIFN0cnVjdHVyZUNoYWluOwogY2xh
c3MgQ2FjaGVkU3BlY2lhbFByb3BlcnR5QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OwogY2xh
c3MgQ2FjaGVkU3BlY2lhbFByb3BlcnR5QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRj
aHBvaW50Owogc3RydWN0IFNwZWNpYWxQcm9wZXJ0eUNhY2hlOwpAQCAtNTIsNiArNTQsOSBAQCBl
bnVtIGNsYXNzIENhY2hlZFNwZWNpYWxQcm9wZXJ0eUtleSA6IHVpbnQ4X3QgewogfTsKIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZDYWNoZWRTcGVjaWFsUHJvcGVydHlLZXlzID0g
NDsKIAorY2xhc3MgU3RydWN0dXJlUmFyZURhdGE7CitjbGFzcyBTdHJ1Y3R1cmVDaGFpbkludmFs
aWRhdGlvbldhdGNocG9pbnQ7CisKIGNsYXNzIFN0cnVjdHVyZVJhcmVEYXRhIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKQEAgLTEwMiwx
MCArMTA3LDE3IEBAIGNsYXNzIFN0cnVjdHVyZVJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlUmFyZURhdGEsIG1f
Y2FjaGVkUHJvcGVydHlOYW1lcykgKyBzaXplb2YoV3JpdGVCYXJyaWVyPEpTSW1tdXRhYmxlQnV0
dGVyZmx5PikgKiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCk7CiAgICAgfQogCisgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVSYXJlRGF0YSwgbV9j
YWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKTsKKyAgICB9CisKICAgICBERUNMQVJFX0VYUE9S
VF9JTkZPOwogCiAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYpOwogCisgICAg
dm9pZCBpbnZhbGlkYXRlV2F0Y2hwb2ludEJhc2VkVmFsaWRhdGlvbigpOworCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgZnJpZW5kIGNsYXNzIENhY2hlZFNwZWNp
YWxQcm9wZXJ0eUFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDsKQEAgLTEyMSwxMCArMTMzLDEz
IEBAIGNsYXNzIFN0cnVjdHVyZVJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
Ym9vbCBjYW5DYWNoZVNwZWNpYWxQcm9wZXJ0eShDYWNoZWRTcGVjaWFsUHJvcGVydHlLZXkpOwog
ICAgIHZvaWQgZ2l2ZVVwT25TcGVjaWFsUHJvcGVydHlDYWNoZShDYWNoZWRTcGVjaWFsUHJvcGVy
dHlLZXkpOwogCisgICAgYm9vbCB0cnlDYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0b3JWaWFXYXRj
aHBvaW50KFZNJiwgU3RydWN0dXJlQ2hhaW4qKTsKKwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fcHJldmlvdXM7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIHNvbWUgc3Rvcnkg
Zm9yIGNsZWFyaW5nIHRoZXNlIHByb3BlcnR5IG5hbWVzIGNhY2hlcyBpbiBHQy4KICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjU5CiAgICAgV3JpdGVC
YXJyaWVyPEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcj4gbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yOworICAgIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUNoYWluSW52YWxpZGF0aW9uV2F0Y2hw
b2ludD4gbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yV2F0Y2hwb2ludHM7CiAgICAgV3Jp
dGVCYXJyaWVyPEpTSW1tdXRhYmxlQnV0dGVyZmx5PiBtX2NhY2hlZFByb3BlcnR5TmFtZXNbbnVt
YmVyT2ZDYWNoZWRQcm9wZXJ0eU5hbWVzXSB7IH07CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8UHJv
cGVydHlPZmZzZXQsIFJlZlB0cjxXYXRjaHBvaW50U2V0PiwgV1RGOjpJbnRIYXNoPFByb3BlcnR5
T2Zmc2V0PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxQcm9wZXJ0eU9mZnNl
dD4+IFByb3BlcnR5V2F0Y2hwb2ludE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgKaW5kZXggNTVhMTIzMTdl
YTU3YTZkMTNmOTlmN2NmZTdmMTc4NTA1OTUyMzkwZS4uZTJjYjM3YmI4NzViM2NmZTE3YTk0ODIy
NTA2Y2QwYWY3ODRjMmE0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1l
RW51bWVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiU3RydWN0dXJl
Q2hhaW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YS5oIgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTQ3LDYgKzQ4LDIxIEBAIHN0cnVjdCBTcGVjaWFsUHJvcGVydHlDYWNoZSB7CiAgICAg
U3BlY2lhbFByb3BlcnR5Q2FjaGVFbnRyeSBtX2NhY2hlW251bWJlck9mQ2FjaGVkU3BlY2lhbFBy
b3BlcnR5S2V5c107CiB9OwogCitjbGFzcyBTdHJ1Y3R1cmVDaGFpbkludmFsaWRhdGlvbldhdGNo
cG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CitwdWJsaWM6CisgICAgU3RydWN0dXJl
Q2hhaW5JbnZhbGlkYXRpb25XYXRjaHBvaW50KCkKKyAgICAgICAgOiBXYXRjaHBvaW50KFdhdGNo
cG9pbnQ6OlR5cGU6OlN0cnVjdHVyZUNoYWluSW52YWxpZGF0aW9uKQorICAgICAgICAsIG1fc3Ry
dWN0dXJlUmFyZURhdGEobnVsbHB0cikKKyAgICB7IH0KKworICAgIHZvaWQgaW5zdGFsbChTdHJ1
Y3R1cmVSYXJlRGF0YSosIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmlyZUludGVybmFsKFZNJiwg
Y29uc3QgRmlyZURldGFpbCYpOworCitwcml2YXRlOgorICAgIC8vIE93biBkZXN0cnVjdG9yIG1h
eSBub3QgYmUgY2FsbGVkLiBLZWVwIG1lbWJlcnMgdHJpdmlhbGx5IGRlc3RydWN0aWJsZS4KKyAg
ICBKU0NfV0FUQ0hQT0lOVF9GSUVMRChQYWNrZWRDZWxsUHRyPFN0cnVjdHVyZVJhcmVEYXRhPiwg
bV9zdHJ1Y3R1cmVSYXJlRGF0YSk7Cit9OworCiBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0
YTo6c2V0UHJldmlvdXNJRChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIG1f
cHJldmlvdXMuc2V0KHZtLCB0aGlzLCBzdHJ1Y3R1cmUpOwpAQCAtODAsNiArOTYsOSBAQCBpbmxp
bmUgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJv
cGVydHlOYW1lRW51bWVyYXRvcgogaW5saW5lIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNldENh
Y2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IoVk0mIHZtLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IqIGVudW1lcmF0b3IpCiB7CiAgICAgbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLnNl
dCh2bSwgdGhpcywgZW51bWVyYXRvcik7CisgICAgbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yV2F0Y2hwb2ludHMgPSBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVDaGFpbkludmFsaWRhdGlvbldh
dGNocG9pbnQ+KCk7CisgICAgYm9vbCB2YWxpZGF0ZWRWaWFXYXRjaHBvaW50ID0gdHJ5Q2FjaGVQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yVmlhV2F0Y2hwb2ludCh2bSwgZW51bWVyYXRvci0+Y2FjaGVk
UHJvdG90eXBlQ2hhaW4oKSk7CisgICAgZW51bWVyYXRvci0+c2V0VmFsaWRhdGVkVmlhV2F0Y2hw
b2ludCh2YWxpZGF0ZWRWaWFXYXRjaHBvaW50KTsKIH0KIAogaW5saW5lIEpTSW1tdXRhYmxlQnV0
dGVyZmx5KiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1lcyhDYWNoZWRQcm9w
ZXJ0eU5hbWVzS2luZCBraW5kKSBjb25zdApAQCAtMTQwLDQgKzE1OSw0NCBAQCBpbmxpbmUgdm9p
ZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVTcGVjaWFsUHJvcGVydHkoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdAogICAgIHJldHVybiBjYWNoZVNwZWNpYWxQcm9wZXJ0eVNsb3coZ2xvYmFs
T2JqZWN0LCB2bSwgb3duU3RydWN0dXJlLCB2YWx1ZSwga2V5LCBzbG90KTsKIH0KIAoraW5saW5l
IHZvaWQgU3RydWN0dXJlQ2hhaW5JbnZhbGlkYXRpb25XYXRjaHBvaW50OjppbnN0YWxsKFN0cnVj
dHVyZVJhcmVEYXRhKiBzdHJ1Y3R1cmVSYXJlRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7
CisgICAgbV9zdHJ1Y3R1cmVSYXJlRGF0YSA9IHN0cnVjdHVyZVJhcmVEYXRhOworICAgIHN0cnVj
dHVyZS0+YWRkVHJhbnNpdGlvbldhdGNocG9pbnQodGhpcyk7Cit9CisKK2lubGluZSB2b2lkIFN0
cnVjdHVyZUNoYWluSW52YWxpZGF0aW9uV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKFZNJiwgY29u
c3QgRmlyZURldGFpbCYpCit7CisgICAgaWYgKCFtX3N0cnVjdHVyZVJhcmVEYXRhLT5pc0xpdmUo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc3RydWN0dXJlUmFyZURhdGEtPmludmFsaWRhdGVX
YXRjaHBvaW50QmFzZWRWYWxpZGF0aW9uKCk7Cit9CisKK2lubGluZSBib29sIFN0cnVjdHVyZVJh
cmVEYXRhOjp0cnlDYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0b3JWaWFXYXRjaHBvaW50KFZNJiB2
bSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluKQoreworICAgIHVuc2lnbmVkIHNpemUgPSAwOworICAg
IGZvciAoYXV0byogY3VycmVudCA9IGNoYWluLT5oZWFkKCk7ICpjdXJyZW50OyArK2N1cnJlbnQp
IHsKKyAgICAgICAgKytzaXplOworICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCA9ICpj
dXJyZW50OworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZShz
dHJ1Y3R1cmVJRCk7CisgICAgICAgIGlmICghc3RydWN0dXJlLT5wcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yU2hvdWxkV2F0Y2goKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
bV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yV2F0Y2hwb2ludHMgPSBGaXhlZFZlY3RvcjxT
dHJ1Y3R1cmVDaGFpbkludmFsaWRhdGlvbldhdGNocG9pbnQ+KHNpemUpOworICAgIHVuc2lnbmVk
IGluZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8qIGN1cnJlbnQgPSBjaGFpbi0+aGVhZCgpOyAqY3Vy
cmVudDsgKytjdXJyZW50KSB7CisgICAgICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEID0gKmN1
cnJlbnQ7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uZ2V0U3RydWN0dXJlKHN0
cnVjdHVyZUlEKTsKKyAgICAgICAgbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yV2F0Y2hw
b2ludHNbaW5kZXhdLmluc3RhbGwodGhpcywgc3RydWN0dXJlKTsKKyAgICAgICAgKytpbmRleDsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSB2b2lkIFN0cnVjdHVyZVJhcmVE
YXRhOjppbnZhbGlkYXRlV2F0Y2hwb2ludEJhc2VkVmFsaWRhdGlvbigpCit7CisgICAgbV9jYWNo
ZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNsZWFyKCk7CisgICAgbV9jYWNoZWRQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yV2F0Y2hwb2ludHMgPSBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVDaGFpbkludmFs
aWRhdGlvbldhdGNocG9pbnQ+KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDFkNDc0ZmI0ZDhmMjg1MGQ0
NWVmMGQwMzMzZDc0OTg5ZTRhMTAzNjcuLmE4NzAxNjkwNjU0YzZlMzQzY2M3OGFkZmVhOGZmMzNl
ODJiZGRhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAK
QEAgLTIxMTgsNiArMjExOCw3IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1
bmN0aW9uQXNhbkVuYWJsZWQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVu
Y3Rpb25Jc01lbW9yeUxpbWl0ZWQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
ZnVuY3Rpb25Vc2VKSVQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rp
b25Jc0dpZ2FjYWdlRW5hYmxlZCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihm
dW5jdGlvblRvQ2FjaGVhYmxlRGljdGlvbmFyeSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihmdW5jdGlvblRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5KTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uSXNQcml2YXRlU3ltYm9sKTsKIHN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRHVtcEFuZFJlc2V0UGFzRGVidWdTcGVjdHJ1
bSk7CkBAIC0zNzEzLDYgKzM3MTQsMjAgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0
aW9uSXNHaWdhY2FnZUVuYWJsZWQsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSoKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihHaWdhY2FnZTo6aXNFbmFibGVkKCkpKTsK
IH0KIAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uVG9DYWNoZWFibGVEaWN0aW9u
YXJ5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQoreworICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4o
dm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGlmICghb2JqZWN0KQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRXhwZWN0ZWQgZmly
c3QgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0Il9zKTsKKyAgICBpZiAoIW9iamVjdC0+c3RydWN0
dXJlKHZtKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkKKyAgICAgICAgb2JqZWN0LT5jb252
ZXJ0VG9EaWN0aW9uYXJ5KHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdCk7
Cit9CisKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblRvVW5jYWNoZWFibGVEaWN0
aW9uYXJ5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CkBAIC0zOTQ2LDYg
KzM5NjEsNyBAQCB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICBh
ZGRGdW5jdGlvbih2bSwgInVzZUpJVCIsIGZ1bmN0aW9uVXNlSklULCAwKTsKICAgICBhZGRGdW5j
dGlvbih2bSwgImlzR2lnYWNhZ2VFbmFibGVkIiwgZnVuY3Rpb25Jc0dpZ2FjYWdlRW5hYmxlZCwg
MCk7CiAKKyAgICBhZGRGdW5jdGlvbih2bSwgInRvQ2FjaGVhYmxlRGljdGlvbmFyeSIsIGZ1bmN0
aW9uVG9DYWNoZWFibGVEaWN0aW9uYXJ5LCAxKTsKICAgICBhZGRGdW5jdGlvbih2bSwgInRvVW5j
YWNoZWFibGVEaWN0aW9uYXJ5IiwgZnVuY3Rpb25Ub1VuY2FjaGVhYmxlRGljdGlvbmFyeSwgMSk7
CiAKICAgICBhZGRGdW5jdGlvbih2bSwgImlzUHJpdmF0ZVN5bWJvbCIsIGZ1bmN0aW9uSXNQcml2
YXRlU3ltYm9sLCAxKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZjM2NjQwNzk1ZDQ4NmYyYzYwYTc5MTFmMjkxZDMzYzI2NzU0NTA0MS4u
MDE2OWU0MTNkYWZhMTY3MWFkN2JhYTA0MWZlZDRhNWYzNTIzZWFiNCAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAyMS0wOS0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAg
IFtKU0NdIFZhbGlkYXRlIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciB2aWEgd2F0Y2hwb2ludHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTg0Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNz
L2Zvci1pbi1jYWNoZWFibGUtZGljdGlvbmFyeS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgIChjb2xsZWN0KToKKyAgICAgICAgKiBzdHJlc3MvZm9yLWluLWludmFsaWRh
dGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoY29sbGVjdCk6Cisg
ICAgICAgICogc3RyZXNzL2Zvci1pbi11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGNvbGxlY3QpOgorCiAyMDIxLTA4LTI2ICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgSW50bC5EYXRlVGlt
ZUZvcm1hdCBpbmNvcnJlY3RseSBwYXJzZXMgcGF0dGVybnMgd2l0aCAnaCcgbGl0ZXJhbApkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZm9yLWluLWNhY2hlYWJsZS1kaWN0aW9uYXJ5LmpzIGIv
SlNUZXN0cy9zdHJlc3MvZm9yLWluLWNhY2hlYWJsZS1kaWN0aW9uYXJ5LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEwZWJmMTc5MDExMjFiOWNiY2Y0NGNiZjRlYWNiMTY2NzdiMGQwMjgKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9mb3ItaW4tY2FjaGVhYmxlLWRpY3Rpb25hcnkuanMKQEAgLTAs
MCArMSwzNCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1
ZTogJyArIGFjdHVhbCk7Cit9CisKK2xldCBvYmplY3QgPSB7CisgICAgYTogNDIsCisgICAgYjog
NDQsCisgICAgYzogNDMsCisgICAgZDogNDQsCit9OworCitmdW5jdGlvbiBjb2xsZWN0KG9iamVj
dCkKK3sKKyAgICBsZXQgYXJyYXkgPSBbXTsKKyAgICBmb3IgKGxldCBrZXkgaW4gb2JqZWN0KQor
ICAgICAgICBhcnJheS5wdXNoKGtleSk7CisgICAgcmV0dXJuIGFycmF5OworfQorCitsZXQgYXJy
YXkxID0gY29sbGVjdChvYmplY3QpOworbGV0IGFycmF5MiA9IGNvbGxlY3Qob2JqZWN0KTsKKyR2
bS50b0NhY2hlYWJsZURpY3Rpb25hcnkob2JqZWN0KTsKK29iamVjdC5lID0gNDQ7CitsZXQgYXJy
YXkzID0gY29sbGVjdChvYmplY3QpOworbGV0IGFycmF5NCA9IGNvbGxlY3Qob2JqZWN0KTsKK29i
amVjdC5mID0gNDQ7CitsZXQgYXJyYXk1ID0gY29sbGVjdChvYmplY3QpOworCitzaG91bGRCZShK
U09OLnN0cmluZ2lmeShhcnJheTEpLCBgWyJhIiwiYiIsImMiLCJkIl1gKTsKK3Nob3VsZEJlKEpT
T04uc3RyaW5naWZ5KGFycmF5MiksIGBbImEiLCJiIiwiYyIsImQiXWApOworc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoYXJyYXkzKSwgYFsiYSIsImIiLCJjIiwiZCIsImUiXWApOworc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoYXJyYXk0KSwgYFsiYSIsImIiLCJjIiwiZCIsImUiXWApOworc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoYXJyYXk1KSwgYFsiYSIsImIiLCJjIiwiZCIsImUiLCJmIl1gKTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Zvci1pbi1pbnZhbGlkYXRlLmpzIGIvSlNUZXN0
cy9zdHJlc3MvZm9yLWluLWludmFsaWRhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJjY2ZiODIzNGQ1MDJi
MGRkYTExZjYxODAwZDk0ZDAxNDhmMjIyZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2Zvci1pbi1pbnZhbGlkYXRlLmpzCkBAIC0wLDAgKzEsNDggQEAKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitsZXQg
b2JqZWN0ID0geworICAgIGE6IDQyLAorICAgIGI6IDQ0LAorICAgIGM6IDQzLAorICAgIGQ6IDQ0
LAorfTsKKworZnVuY3Rpb24gY29sbGVjdChvYmplY3QpCit7CisgICAgbGV0IGFycmF5ID0gW107
CisgICAgZm9yIChsZXQga2V5IGluIG9iamVjdCkKKyAgICAgICAgYXJyYXkucHVzaChrZXkpOwor
ICAgIHJldHVybiBhcnJheTsKK30KKworbGV0IGFycmF5MSA9IGNvbGxlY3Qob2JqZWN0KTsKK2xl
dCBhcnJheTIgPSBjb2xsZWN0KG9iamVjdCk7CitvYmplY3QuZSA9IDQ0OworbGV0IGFycmF5MyA9
IGNvbGxlY3Qob2JqZWN0KTsKK2xldCBhcnJheTQgPSBjb2xsZWN0KG9iamVjdCk7CitvYmplY3Qu
ZiA9IDQ0OworbGV0IGFycmF5NSA9IGNvbGxlY3Qob2JqZWN0KTsKK2xldCBhcnJheTYgPSBjb2xs
ZWN0KG9iamVjdCk7CitsZXQgcHJvdG8gPSB7IEhlbGxvOiAzMyB9Oworb2JqZWN0Ll9fcHJvdG9f
XyA9IHByb3RvOworbGV0IGFycmF5NyA9IGNvbGxlY3Qob2JqZWN0KTsKK2xldCBhcnJheTggPSBj
b2xsZWN0KG9iamVjdCk7Citwcm90by52YWx1ZXMgPSAzMzsKK2xldCBhcnJheTkgPSBjb2xsZWN0
KG9iamVjdCk7CitsZXQgYXJyYXkxMCA9IGNvbGxlY3Qob2JqZWN0KTsKK2xldCBhcnJheTExID0g
Y29sbGVjdChvYmplY3QpOworCitzaG91bGRCZShKU09OLnN0cmluZ2lmeShhcnJheTEpLCBgWyJh
IiwiYiIsImMiLCJkIl1gKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KGFycmF5MiksIGBbImEi
LCJiIiwiYyIsImQiXWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoYXJyYXkzKSwgYFsiYSIs
ImIiLCJjIiwiZCIsImUiXWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoYXJyYXk0KSwgYFsi
YSIsImIiLCJjIiwiZCIsImUiXWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoYXJyYXk1KSwg
YFsiYSIsImIiLCJjIiwiZCIsImUiLCJmIl1gKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KGFy
cmF5NiksIGBbImEiLCJiIiwiYyIsImQiLCJlIiwiZiJdYCk7CitzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShhcnJheTcpLCBgWyJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJIZWxsbyJdYCk7CitzaG91
bGRCZShKU09OLnN0cmluZ2lmeShhcnJheTgpLCBgWyJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJI
ZWxsbyJdYCk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShhcnJheTkpLCBgWyJhIiwiYiIsImMi
LCJkIiwiZSIsImYiLCJIZWxsbyIsInZhbHVlcyJdYCk7CitzaG91bGRCZShKU09OLnN0cmluZ2lm
eShhcnJheTEwKSwgYFsiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiSGVsbG8iLCJ2YWx1ZXMiXWAp
Oworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoYXJyYXkxMSksIGBbImEiLCJiIiwiYyIsImQiLCJl
IiwiZiIsIkhlbGxvIiwidmFsdWVzIl1gKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Zv
ci1pbi11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LmpzIGIvSlNUZXN0cy9zdHJlc3MvZm9yLWluLXVu
Y2FjaGVhYmxlLWRpY3Rpb25hcnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWZmOWZhNGZiMGFmNDA2YzkxNDk4
NWE3ZTllYzVlODM5NGY3MDlkZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Zv
ci1pbi11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9u
IHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQor
CitsZXQgb2JqZWN0ID0geworICAgIGE6IDQyLAorICAgIGI6IDQ0LAorICAgIGM6IDQzLAorICAg
IGQ6IDQ0LAorfTsKKworZnVuY3Rpb24gY29sbGVjdChvYmplY3QpCit7CisgICAgbGV0IGFycmF5
ID0gW107CisgICAgZm9yIChsZXQga2V5IGluIG9iamVjdCkKKyAgICAgICAgYXJyYXkucHVzaChr
ZXkpOworICAgIHJldHVybiBhcnJheTsKK30KKworbGV0IGFycmF5MSA9IGNvbGxlY3Qob2JqZWN0
KTsKK2xldCBhcnJheTIgPSBjb2xsZWN0KG9iamVjdCk7Ciskdm0udG9VbmNhY2hlYWJsZURpY3Rp
b25hcnkob2JqZWN0KTsKK29iamVjdC5lID0gNDQ7CitsZXQgYXJyYXkzID0gY29sbGVjdChvYmpl
Y3QpOworbGV0IGFycmF5NCA9IGNvbGxlY3Qob2JqZWN0KTsKK29iamVjdC5mID0gNDQ7CitsZXQg
YXJyYXk1ID0gY29sbGVjdChvYmplY3QpOworCitzaG91bGRCZShKU09OLnN0cmluZ2lmeShhcnJh
eTEpLCBgWyJhIiwiYiIsImMiLCJkIl1gKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KGFycmF5
MiksIGBbImEiLCJiIiwiYyIsImQiXWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoYXJyYXkz
KSwgYFsiYSIsImIiLCJjIiwiZCIsImUiXWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoYXJy
YXk0KSwgYFsiYSIsImIiLCJjIiwiZCIsImUiXWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
YXJyYXk1KSwgYFsiYSIsImIiLCJjIiwiZCIsImUiLCJmIl1gKTsK
</data>
<flag name="review"
          id="460384"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>