<?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>191948</bug_id>
          
          <creation_ts>2018-11-24 18:31:53 -0800</creation_ts>
          <short_desc>[Cocoa] Make it easier to encode NSObjects for WebKit IPC</short_desc>
          <delta_ts>2018-11-26 13:15:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1481326</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-24 18:31:53 -0800</bug_when>
    <thetext>[Cocoa] Make it easier to encode NSObjects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481327</commentid>
    <comment_count>1</comment_count>
      <attachid>355569</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-24 18:34:16 -0800</bug_when>
    <thetext>Created attachment 355569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481328</commentid>
    <comment_count>2</comment_count>
      <attachid>355570</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-24 18:36:55 -0800</bug_when>
    <thetext>Created attachment 355570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481329</commentid>
    <comment_count>3</comment_count>
      <attachid>355571</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-24 18:41:20 -0800</bug_when>
    <thetext>Created attachment 355571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481330</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-24 18:45:13 -0800</bug_when>
    <thetext>Attachment 355571 did not pass style-queue:


ERROR: Source/WebCore/Modules/applepay/PaymentMethod.h:44:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:923:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.h:39:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/applepay/Payment.h:42:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentContact.h:43:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 6 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481334</commentid>
    <comment_count>5</comment_count>
      <attachid>355573</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-24 19:14:37 -0800</bug_when>
    <thetext>Created attachment 355573
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481341</commentid>
    <comment_count>6</comment_count>
      <attachid>355576</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-24 20:48:07 -0800</bug_when>
    <thetext>Created attachment 355576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481344</commentid>
    <comment_count>7</comment_count>
      <attachid>355578</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-24 21:04:05 -0800</bug_when>
    <thetext>Created attachment 355578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481567</commentid>
    <comment_count>8</comment_count>
      <attachid>355649</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-26 10:17:08 -0800</bug_when>
    <thetext>Created attachment 355649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481609</commentid>
    <comment_count>9</comment_count>
      <attachid>355649</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-11-26 11:50:32 -0800</bug_when>
    <thetext>Comment on attachment 355649
Patch

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

Cool patch!

&gt; Source/WebCore/Modules/applepay/cocoa/PaymentCocoa.mm:70
&gt; +Payment::Payment() = default;

Why did you move this to the implementation?

&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.h:57
&gt; +    ASSERT([object isKindOfClass:allowedClasses[0]]);

Maybe ASSERT allowedClasses has entries?

&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.h:58
&gt; +    return { adoptNS((T *)object) };

Can you static_cast here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481611</commentid>
    <comment_count>10</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-26 11:58:37 -0800</bug_when>
    <thetext>(In reply to Dean Jackson from comment #9)
&gt; Comment on attachment 355649 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=355649&amp;action=review
&gt; 
&gt; Cool patch!

Thanks for reviewing!

&gt; 
&gt; &gt; Source/WebCore/Modules/applepay/cocoa/PaymentCocoa.mm:70
&gt; &gt; +Payment::Payment() = default;
&gt; 
&gt; Why did you move this to the implementation?

check-webkit-style wanted me to (because it doesn&apos;t like inline member functions on exported classes).

&gt; 
&gt; &gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.h:57
&gt; &gt; +    ASSERT([object isKindOfClass:allowedClasses[0]]);
&gt; 
&gt; Maybe ASSERT allowedClasses has entries?

Yes, good idea.

&gt; 
&gt; &gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.h:58
&gt; &gt; +    return { adoptNS((T *)object) };
&gt; 
&gt; Can you static_cast here?

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481619</commentid>
    <comment_count>11</comment_count>
      <attachid>355664</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-26 12:06:24 -0800</bug_when>
    <thetext>Created attachment 355664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481651</commentid>
    <comment_count>12</comment_count>
      <attachid>355664</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-26 13:13:55 -0800</bug_when>
    <thetext>Comment on attachment 355664
Patch

Clearing flags on attachment: 355664

Committed r238515: &lt;https://trac.webkit.org/changeset/238515&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481652</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-26 13:13:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481653</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-26 13:15:45 -0800</bug_when>
    <thetext>&lt;rdar://problem/46254165&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355569</attachid>
            <date>2018-11-24 18:34:16 -0800</date>
            <delta_ts>2018-11-24 18:36:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191948-20181124183406.patch</filename>
            <type>text/plain</type>
            <size>47538</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5ZjQzYTkxNTIwNDQw
MzE4ZWEwYzgxOTFjZjFlOTk5NTE2MjZiNy4uNTQwNjMyNWMxNDkwNzBlNDlkNDFiNjgyZWJiZTg2
M2UxMzIxNjhmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTExLTI0ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIE1ha2UgaXQgZWFz
aWVyIHRvIGVuY29kZSBOU09iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MTk0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxl
cy9hcHBsZXBheS9QYXltZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
Q29udGFjdC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vz
c2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbjo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbik6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0
aG9kLmg6CisKIDIwMTgtMTEtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtDb2NvYV0gU09GVF9MSU5LX0NMQVNTX0ZPUl97SEVBREVSLFNPVVJDRX0gc2hvdWxk
IGdlbmVyYXRlIGEgbW9yZSBjb25jaXNlIGdldHRlciBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
aW5kZXggODQ5NGYyNzQ2MDVkZTA2MjA2NjgxZGU3N2EyZjM5YjVjNjNhZmNkNi4uZmI5NDFjYWVi
YTA2OTAwMjlmMjExYTk1ZDU0NjFmNDhkZWE5ZjFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTgtMTEtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gTWFrZSBpdCBlYXNpZXIgdG8gZW5jb2RlIE5TT2JqZWN0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxOTQ4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvc3BpL2Nv
Y29hL1Bhc3NLaXRTUEkuaDoKKwogMjAxOC0xMS0yNCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBTT0ZUX0xJTktfQ0xBU1NfRk9SX3tIRUFERVIsU09V
UkNFfSBzaG91bGQgZ2VuZXJhdGUgYSBtb3JlIGNvbmNpc2UgZ2V0dGVyIGZ1bmN0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDcxNzVmNmQ0ZTQ4YTA3Mjg4NzJiNDEyY2NhYWQ1YjUzMjUyZjg3Y2YuLjJkODZkN2Yy
ZGYzZTg3MmE3OTI0MjhkOWYwZGY3MmRjMDIxODVhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMg
QEAKKzIwMTgtMTEtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAg
IFtDb2NvYV0gTWFrZSBpdCBlYXNpZXIgdG8gZW5jb2RlIE5TT2JqZWN0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxOTQ4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQXJndW1l
bnRDb2RlcnNDb2NvYS5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6ZGVjb2RlT2JqZWN0KToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxUOjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJldGFpblB0cjxUPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8UmV0YWluUHRyPFQ+Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQXJn
dW1lbnRDb2RlcnNDb2NvYS5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvRGF0YURldGVjdGlvblJlc3VsdC5tbS4KKyAgICAgICAgKElQQzo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJl
c3VsdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpEYXRhRGV0ZWN0aW9uUmVzdWx0OjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpEYXRhRGV0ZWN0aW9uUmVzdWx0OjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD46OmRlY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRD
b250YWN0Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQ
YXltZW50TWVyY2hhbnRTZXNzaW9uPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPjo6ZGVjb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kPjo6ZW5jb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kPjo6ZGVjb2Rl
KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdD46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OmRlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9tYWMv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZT46OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlPjo6ZGVjb2RlUGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDcmVkZW50
aWFsPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpDcmVkZW50aWFsPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29k
ZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAo
SVBDOjpkZXZpY2VDb250ZXh0S2V5KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL1dl
YkhpdFRlc3RSZXN1bHREYXRhLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0
RGF0YTo6cGxhdGZvcm1FbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0
UmVzdWx0RGF0YTo6cGxhdGZvcm1EZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTgtMTEt
MjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gU09G
VF9MSU5LX0NMQVNTX0ZPUl97SEVBREVSLFNPVVJDRX0gc2hvdWxkIGdlbmVyYXRlIGEgbW9yZSBj
b25jaXNlIGdldHRlciBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9QYXltZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnQuaAppbmRleCA4NWY2N2JlZGYyZWQ3ZTBlNDgwYzQ1Y2ExZjdiNmVkZTdhZTY5YjFmLi44
Y2NkMjEwOTQ1MDY4ZDE3MzQzNzM5ODg0M2Y3NGZhMTA0MGQ2ZTdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw5ICszOCw4IEBAIHN0cnVjdCBBcHBsZVBh
eVBheW1lbnQ7CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBQYXltZW50IHsKIHB1YmxpYzoKICAgICBQ
YXltZW50KCkgPSBkZWZhdWx0OwotCi0gICAgZXhwbGljaXQgUGF5bWVudChQS1BheW1lbnQgKnBr
UGF5bWVudCkKLSAgICAgICAgOiBtX3BrUGF5bWVudChwa1BheW1lbnQpCisgICAgZXhwbGljaXQg
UGF5bWVudChSZXRhaW5QdHI8UEtQYXltZW50PiYmIHBrUGF5bWVudCkKKyAgICAgICAgOiBtX3Br
UGF5bWVudCB7IFdURk1vdmUocGtQYXltZW50KSB9CiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29udGFjdC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29udGFjdC5oCmluZGV4IGQwNDEy
ZDFkZWRhNjFiN2JmNGM1ZDY5MjdhYjA2ODE5Yjk2MmQzMjEuLmMyNmQ3ZDNhNzIyMjJlY2EwYWZj
NmUxMTZlMGU5YWQyNWYxMWI3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudENvbnRhY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L1BheW1lbnRDb250YWN0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw4ICszOSw4IEBAIHN0cnVjdCBBcHBsZVBh
eVBheW1lbnRDb250YWN0OwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgUGF5bWVudENvbnRhY3Qgewog
cHVibGljOgogICAgIFBheW1lbnRDb250YWN0KCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFBh
eW1lbnRDb250YWN0KFBLQ29udGFjdCAqcGtDb250YWN0KQotICAgICAgICA6IG1fcGtDb250YWN0
KHBrQ29udGFjdCkKKyAgICBleHBsaWNpdCBQYXltZW50Q29udGFjdChSZXRhaW5QdHI8UEtDb250
YWN0PiYmIHBrQ29udGFjdCkKKyAgICAgICAgOiBtX3BrQ29udGFjdCB7IFdURk1vdmUocGtDb250
YWN0KSB9CiAgICAgewogICAgIH0KICAgICB2aXJ0dWFsIH5QYXltZW50Q29udGFjdCgpID0gZGVm
YXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50TWVyY2hhbnRTZXNzaW9uLmgKaW5kZXggN2VkNmIyMTU3MzA2ZWViZDA3ZTUxMTYxOGM0MzQ0
NzljNTU0MzZlNy4uZGFhNzQ5NTQ5ZjUzZjVkYTNkMzY2ZDVlNjA4MzlhMjg4MDYzYjNmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRT
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVy
Y2hhbnRTZXNzaW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDIsOCArNDIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQ
YXltZW50TWVyY2hhbnRTZXNzaW9uIHsKIHB1YmxpYzoKICAgICBQYXltZW50TWVyY2hhbnRTZXNz
aW9uKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFBheW1lbnRNZXJjaGFudFNlc3Npb24oUEtQ
YXltZW50TWVyY2hhbnRTZXNzaW9uICpwa1BheW1lbnRNZXJjaGFudFNlc3Npb24pCi0gICAgICAg
IDogbV9wa1BheW1lbnRNZXJjaGFudFNlc3Npb24ocGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKQor
ICAgIGV4cGxpY2l0IFBheW1lbnRNZXJjaGFudFNlc3Npb24oUmV0YWluUHRyPFBLUGF5bWVudE1l
cmNoYW50U2Vzc2lvbj4mJiBwa1BheW1lbnRNZXJjaGFudFNlc3Npb24pCisgICAgICAgIDogbV9w
a1BheW1lbnRNZXJjaGFudFNlc3Npb24geyBXVEZNb3ZlKHBrUGF5bWVudE1lcmNoYW50U2Vzc2lv
bikgfQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudE1ldGhvZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50TWV0aG9kLmgKaW5kZXggOWNlN2JhYTc5NDNhYmQyZGRmZjEzMWI0NDMwOTdhMmFh
MDRiMTIxNS4uNzg4N2RjYzc0ODM2YzZiNTY4NjUwMGNlNjllOTc4YmI5MDlmNmZhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsOCAr
NDAsOCBAQCBwdWJsaWM6CiAgICAgUGF5bWVudE1ldGhvZCgpID0gZGVmYXVsdDsKICAgICB2aXJ0
dWFsIH5QYXltZW50TWV0aG9kKCkgPSBkZWZhdWx0OwogCi0gICAgZXhwbGljaXQgUGF5bWVudE1l
dGhvZChQS1BheW1lbnRNZXRob2QgKnBrUGF5bWVudE1ldGhvZCkKLSAgICAgICAgOiBtX3BrUGF5
bWVudE1ldGhvZChwa1BheW1lbnRNZXRob2QpCisgICAgZXhwbGljaXQgUGF5bWVudE1ldGhvZChS
ZXRhaW5QdHI8UEtQYXltZW50TWV0aG9kPiYmIHBrUGF5bWVudE1ldGhvZCkKKyAgICAgICAgOiBt
X3BrUGF5bWVudE1ldGhvZCB7IFdURk1vdmUocGtQYXltZW50TWV0aG9kKSB9CiAgICAgewogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tp
dFNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCmlu
ZGV4IDNjYTM5ZmE5NmZmYWM1MDZiZDAwMDM5ODVkNmE4NjMzYTk2ZmJjZjguLjE4OTU4ZTkyNjE0
YzFlM2I2YTRmMDRhNjhhZDE0MzNhYjE5NzE4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKQEAgLTMyNywxMCArMzI3LDE5IEBAIHZvaWQgUEtE
cmF3QXBwbGVQYXlCdXR0b24oX05vbm51bGwgQ0dDb250ZXh0UmVmLCBDR1JlY3QgZHJhd1JlY3Qs
IENHRmxvYXQgc2NhbGUsCiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BpbnRlcmZhY2Ug
UEtDb250YWN0ICgpIDxOU1NlY3VyZUNvZGluZz4KK0BlbmQKKwogQGludGVyZmFjZSBQS1Bhc3NM
aWJyYXJ5ICgpCiAtICh2b2lkKW9wZW5QYXltZW50U2V0dXBGb3JNZXJjaGFudElkZW50aWZpZXI6
KE5TU3RyaW5nICopaWRlbnRpZmllciBkb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvbXBsZXRp
b246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uOwogQGVuZAogCitAaW50ZXJmYWNl
IFBLUGF5bWVudCAoKSA8TlNTZWN1cmVDb2Rpbmc+CitAZW5kCisKK0BpbnRlcmZhY2UgUEtQYXlt
ZW50TWV0aG9kICgpIDxOU1NlY3VyZUNvZGluZz4KK0BlbmQKKwogQGludGVyZmFjZSBQS1BheW1l
bnRSZXF1ZXN0ICgpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU1N0cmluZyAqc291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwogQHByb3BlcnR5IChub25hdG9taWMsIHN0
cm9uZykgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2Eu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45NDlkZmMyMmEwMGVhNTcxZWI0ZmNiZGVjYjQwNWM2MjhiZTQxOGRiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2Nv
YS5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJBcmd1bWVudENvZGVy
cy5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisKKyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0Yu
aCIKKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CisjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBJUEMgeworCit2b2lkIGVuY29kZShFbmNv
ZGVyJiwgaWQgPE5TU2VjdXJlQ29kaW5nPik7CitzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZCA8
TlNTZWN1cmVDb2Rpbmc+Pj4gZGVjb2RlKERlY29kZXImLCBOU0FycmF5PENsYXNzPiAqYWxsb3dl
ZENsYXNzZXMpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RkOjpvcHRpb25hbDxSZXRhaW5Q
dHI8VD4+IGRlY29kZU9iamVjdChEZWNvZGVyJiBkZWNvZGVyLCBOU0FycmF5PENsYXNzPiAqYWxs
b3dlZENsYXNzZXMgPSBAWyBbVCBjbGFzc10gXSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IGRlY29k
ZShkZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcyk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoISpyZXN1bHQpCisgICAgICAgIHJldHVybiB7
IG51bGxwdHIgfTsKKworICAgIGlkIG9iamVjdCA9IHJlc3VsdC0+bGVha1JlZigpOworICAgIEFT
U0VSVChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6YWxsb3dlZENsYXNzZXNbMF1dKTsKKyAgICByZXR1
cm4geyBhZG9wdE5TKChUICopb2JqZWN0KSB9OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
c3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8VD4+IGRlY29kZU9iamVjdChEZWNvZGVyJiBkZWNvZGVy
LCBDbGFzcyBhbGxvd2VkQ2xhc3MpCit7CisgICAgcmV0dXJuIGRlY29kZU9iamVjdDxUPihkZWNv
ZGVyLCBAWyBhbGxvd2VkQ2xhc3MgXSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHVzaW5n
IENvbmZvcm1zVG9TZWN1cmVDb2RpbmcgPSBzdGQ6OmlzX2NvbnZlcnRpYmxlPFQgKiwgaWQgPE5T
U2VjdXJlQ29kaW5nPj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFQgKj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBULCBzdGQ6OmVuYWJsZV9pZl90
PENvbmZvcm1zVG9TZWN1cmVDb2Rpbmc8VT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBVICpvYmplY3QpCisgICAgeworICAgICAg
ICBJUEM6OmVuY29kZShlbmNvZGVyLCBvYmplY3QpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJldGFpblB0cjxUPj4geworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBVID0gVCwgc3RkOjplbmFibGVfaWZfdDxDb25mb3Jtc1RvU2VjdXJlQ29k
aW5nPFU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgUmV0YWluUHRyPFU+JiBvYmplY3QpCisgICAgeworICAgICAgICBB
cmd1bWVudENvZGVyPFUgKj46OmVuY29kZShlbmNvZGVyLCBvYmplY3QuZ2V0KCkpOworICAgIH0K
KworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVID0gVCwgc3RkOjplbmFibGVfaWZfdDxDb25mb3Jt
c1RvU2VjdXJlQ29kaW5nPFU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxSZXRhaW5QdHI8VT4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGRlY29kZU9iamVjdDxVPihkZWNvZGVyKTsKKyAgICB9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBJUEMKKworI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmE0ZjYyYTg5NGZhOWZjMTJhZWI0YjQ3NTI0NjRlMmRiZDYwZTFjOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAg
LTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
QXJndW1lbnRDb2RlcnNDb2NvYS5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisKKyNpbXBvcnQg
IkFyZ3VtZW50Q29kZXJzQ0YuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hp
dmVyU1BJLmg+CisKK25hbWVzcGFjZSBJUEMgeworCit2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBpZCA8TlNTZWN1cmVDb2Rpbmc+IG9iamVjdCkKK3sKKyAgICBhdXRvIGFyY2hpdmVyID0g
c2VjdXJlQXJjaGl2ZXIoKTsKKyAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0Om9iamVjdCBmb3JL
ZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKKyAgICBbYXJjaGl2ZXIgZmluaXNoRW5j
b2RpbmddOworCisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgKF9fYnJpZGdlIENGRGF0YVJlZilb
YXJjaGl2ZXIgZW5jb2RlZERhdGFdKTsKK30KKworc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8aWQg
PE5TU2VjdXJlQ29kaW5nPj4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBOU0FycmF5PENsYXNz
PiAqYWxsb3dlZENsYXNzZXMpCit7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKKyAg
ICBpZiAoIWRlY29kZShkZWNvZGVyLCBkYXRhKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoX19i
cmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CisgICAgQHRyeSB7CisgICAgICAgIGlkIHJlc3Vs
dCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aEFycmF5
OmFsbG93ZWRDbGFzc2VzXSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKKyAg
ICAgICAgQVNTRVJUKFtyZXN1bHQgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3Vy
ZUNvZGluZyldKTsKKyAgICAgICAgcmV0dXJuIHsgcmVzdWx0IH07CisgICAgfSBAY2F0Y2ggKE5T
RXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVj
b2RlIG9iamVjdCBvZiBjbGFzc2VzICVAOiAlQCIsIGFsbG93ZWRDbGFzc2VzLCBleGNlcHRpb24p
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0gQGZpbmFsbHkgeworICAgICAg
ICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFj
ZSBJUEMKKworI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5oCmluZGV4IDI3NDQzY2UzZjNiMjdiZGE3
NDBkZGI2MTM0OWE3ODZkMDBkZGY2YWEuLjJjOTliNGJkZWQ4N2NkNzc2Njc2YTdkYWIyNzY1Yzc1
OGNjZWVlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRl
Y3Rpb25SZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0
aW9uUmVzdWx0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgRGF0YURldGVjdGlvblJlc3VsdCB7CiAg
ICAgUmV0YWluUHRyPE5TQXJyYXk+IHJlc3VsdHM7CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVu
Y29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgRGF0
YURldGVjdGlvblJlc3VsdCYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERhdGFEZXRlY3Rp
b25SZXN1bHQ+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCmluZGV4IGFmNDIxNDYw
OGMwNDI2ODZkZjVlM2JiYjdhMGUxNGZjN2EzZmEyZTEuLjg4MDYwNTA4NjNmNTMyMzZjNTM5ZDFj
ZGQwOTU3NmI5NDk4OGViZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0RhdGFEZXRlY3Rpb25SZXN1bHQubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
RGF0YURldGVjdGlvblJlc3VsdC5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiRGF0YURldGVjdGlvblJlc3VsdC5oIgogCi0jaW1wb3J0ICJBcmd1bWVu
dENvZGVyc0NGLmgiCisjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NvY29hLmgiCiAjaW1wb3J0ICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvRGF0YURldGVj
dG9yc0NvcmVTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJ
Lmg+CkBAIC00MSwyNyArNDEsMTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgRGF0YURl
dGVjdGlvblJlc3VsdDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAg
ICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIgZW5jb2Rl
T2JqZWN0OnJlc3VsdHMuZ2V0KCkgZm9yS2V5OkAiZGF0YURldGVjdG9yUmVzdWx0cyJdOwotICAg
IElQQzo6ZW5jb2RlKGVuY29kZXIsIChfX2JyaWRnZSBDRkRhdGFSZWYpYXJjaGl2ZXIuZ2V0KCku
ZW5jb2RlZERhdGEpOworICAgIGVuY29kZXIgPDwgcmVzdWx0czsKIH0KIAotYm9vbCBEYXRhRGV0
ZWN0aW9uUmVzdWx0OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBEYXRhRGV0ZWN0aW9u
UmVzdWx0JiByZXN1bHQpCitzdGQ6Om9wdGlvbmFsPERhdGFEZXRlY3Rpb25SZXN1bHQ+IERhdGFE
ZXRlY3Rpb25SZXN1bHQ6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKLSAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRh
dGEpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byByZXN1bHRzID0gSVBDOjpkZWNv
ZGVPYmplY3Q8TlNBcnJheT4oZGVjb2RlciwgQFsgW05TQXJyYXkgY2xhc3NdLCBnZXRERFNjYW5u
ZXJSZXN1bHRDbGFzcygpIF0pOworICAgIGlmICghcmVzdWx0cykKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9t
RGF0YSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7Ci0gICAgQHRyeSB7Ci0gICAgICAg
IHJlc3VsdC5yZXN1bHRzID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltOU1Nl
dCBzZXRXaXRoQXJyYXk6QFsgW05TQXJyYXkgY2xhc3NdLCBnZXRERFNjYW5uZXJSZXN1bHRDbGFz
cygpXSBdIGZvcktleTpAImRhdGFEZXRlY3RvclJlc3VsdHMiXTsKLSAgICB9IEBjYXRjaCAoTlNF
eGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNv
ZGUgTlNBcnJheSBvZiBERFNjYW5SZXN1bHQ6ICVAIiwgZXhjZXB0aW9uKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHt7IFdURk1vdmUoKnJlc3VsdHMpIH19Owog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggMTY0OWQyZWM4MThhZDhjZGI0NDg0ZmM0
ZDYzM2M4MTI2Yjg3ODRmMC4uZTAxMzViZDAzZTRhNjc3NmEwMmNmOTEyNWRiNDUzYTgyZTJhYjkx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoQVBQ
TEVfUEFZKQogCisjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NvY29hLmgiCiAjaW1wb3J0ICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
Lmg+CiAjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CkBAIC0zOCwzMiArMzks
MTYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpQYXltZW50Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBh
eW1lbnQmIHBheW1lbnQpCiB7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7
Ci0gICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpwYXltZW50LnBrUGF5bWVudCgpIGZvcktleTpO
U0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwotICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGlu
Z107Ci0KLSAgICBhdXRvIGRhdGEgPSBhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YTsKLSAgICBl
bmNvZGVyIDw8IERhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRh
IGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgIGVuY29kZXIgPDwgcGF5bWVudC5wa1BheW1l
bnQoKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UGF5bWVudCYgcGF5bWVudCkKK3N0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGF5bWVudD4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Pjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZl
cmVuY2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhUmVmZXJlbmNlKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10g
aW5pdFdpdGhCeXRlc05vQ29weTpjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2
b2lkKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpKSBsZW5ndGg6ZGF0YVJlZmVyZW5jZS5zaXplKCkg
ZnJlZVdoZW5Eb25lOk5PXSk7Ci0gICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZl
ckZyb21EYXRhKGRhdGEuZ2V0KCkpOwotICAgIEB0cnkgewotICAgICAgICBQS1BheW1lbnQgKnBr
UGF5bWVudCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6UEFMOjpnZXRQS1BheW1l
bnRDbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwotICAgICAgICBw
YXltZW50ID0gUGF5bWVudChwa1BheW1lbnQpOwotICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAq
ZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBQS1BheW1l
bnQ6ICVAIiwgZXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBh
dXRvIHBheW1lbnQgPSBkZWNvZGVPYmplY3Q8UEtQYXltZW50PihkZWNvZGVyLCBQQUw6OmdldFBL
UGF5bWVudENsYXNzKCkpOworICAgIGlmICghcGF5bWVudCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICByZXR1cm4gUGF5bWVudCB7IFdURk1vdmUoKnBheW1lbnQpIH07CiB9CiAKIHZv
aWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlv
blJlc3VsdCYgcmVzdWx0KQpAQCAtODMsMzggKzY4LDIyIEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5
bWVuCiAgICAgZGVjb2RlciA+PiBlcnJvcnM7CiAgICAgaWYgKCFlcnJvcnMpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgCisKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqc3RhdHVz
KSwgV1RGTW92ZSgqZXJyb3JzKSB9fTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlBheW1lbnRDb250YWN0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6
OlBheW1lbnRDb250YWN0JiBwYXltZW50Q29udGFjdCkKIHsKLSAgICBhdXRvIGFyY2hpdmVyID0g
c2VjdXJlQXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnBheW1lbnRDb250
YWN0LnBrQ29udGFjdCgpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwotICAg
IFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107Ci0KLSAgICBhdXRvIGRhdGEgPSBhcmNoaXZlci5n
ZXQoKS5lbmNvZGVkRGF0YTsKLSAgICBlbmNvZGVyIDw8IERhdGFSZWZlcmVuY2Uoc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgIGVu
Y29kZXIgPDwgcGF5bWVudENvbnRhY3QucGtDb250YWN0KCk7CiB9CiAKLWJvb2wgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBX
ZWJDb3JlOjpQYXltZW50Q29udGFjdCYgcGF5bWVudENvbnRhY3QpCitzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlBheW1lbnRDb250YWN0PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250
YWN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhUmVmZXJlbmNlKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TRGF0
YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2Fz
dDxjb25zdCB2b2lkKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpKSBsZW5ndGg6ZGF0YVJlZmVyZW5j
ZS5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7Ci0gICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJl
VW5hcmNoaXZlckZyb21EYXRhKGRhdGEuZ2V0KCkpOwotICAgIEB0cnkgewotICAgICAgICBQS0Nv
bnRhY3QgKnBrQ29udGFjdCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6UEFMOjpn
ZXRQS0NvbnRhY3RDbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwot
ICAgICAgICBwYXltZW50Q29udGFjdCA9IFBheW1lbnRDb250YWN0KHBrQ29udGFjdCk7Ci0gICAg
fSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gZGVjb2RlIFBLQ29udGFjdDogJUAiLCBleGNlcHRpb24pOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQorICAgIGF1dG8gY29udGFjdCA9IGRlY29kZU9iamVjdDxQS0NvbnRh
Y3Q+KGRlY29kZXIsIFBBTDo6Z2V0UEtDb250YWN0Q2xhc3MoKSk7CisgICAgaWYgKCFjb250YWN0
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgW3VuYXJjaGl2ZXIgZmluaXNo
RGVjb2RpbmddOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBXZWJDb3JlOjpQYXltZW50
Q29udGFjdCB7IFdURk1vdmUoKmNvbnRhY3QpIH07CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpQYXltZW50RXJyb3I+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2Vi
Q29yZTo6UGF5bWVudEVycm9yJiBlcnJvcikKQEAgLTE0Niw2MiArMTE1LDMwIEBAIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGF5bWVudEVycm9yPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1l
bnRFcnJvcj46OmRlY29kCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVy
Y2hhbnRTZXNzaW9uPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBh
eW1lbnRNZXJjaGFudFNlc3Npb24mIHBheW1lbnRNZXJjaGFudFNlc3Npb24pCiB7Ci0gICAgYXV0
byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7Ci0gICAgW2FyY2hpdmVyIGVuY29kZU9iamVj
dDpwYXltZW50TWVyY2hhbnRTZXNzaW9uLnBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbigpIGZvcktl
eTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwotICAgIFthcmNoaXZlciBmaW5pc2hFbmNv
ZGluZ107Ci0KLSAgICBhdXRvIGRhdGEgPSBhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YTsKLSAg
ICBlbmNvZGVyIDw8IERhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtk
YXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgIGVuY29kZXIgPDwgcGF5bWVudE1lcmNo
YW50U2Vzc2lvbi5wa1BheW1lbnRNZXJjaGFudFNlc3Npb24oKTsKIH0KIAotYm9vbCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYgcGF5bWVudE1lcmNoYW50
U2Vzc2lvbikKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4g
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhUmVmZXJlbmNlKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdp
dGhCeXRlc05vQ29weTpjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4o
ZGF0YVJlZmVyZW5jZS5kYXRhKCkpKSBsZW5ndGg6ZGF0YVJlZmVyZW5jZS5zaXplKCkgZnJlZVdo
ZW5Eb25lOk5PXSk7Ci0gICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21E
YXRhKGRhdGEuZ2V0KCkpOwotICAgIEB0cnkgewotICAgICAgICBQS1BheW1lbnRNZXJjaGFudFNl
c3Npb24gKnBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVj
dE9mQ2xhc3M6UEFMOjpnZXRQS1BheW1lbnRNZXJjaGFudFNlc3Npb25DbGFzcygpIGZvcktleTpO
U0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwotICAgICAgICBwYXltZW50TWVyY2hhbnRTZXNz
aW9uID0gUGF5bWVudE1lcmNoYW50U2Vzc2lvbihwa1BheW1lbnRNZXJjaGFudFNlc3Npb24pOwot
ICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGRlY29kZSBQS1BheW1lbnRNZXJjaGFudFNlc3Npb246ICVAIiwgZXhjZXB0
aW9uKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBhdXRvIHBheW1lbnRNZXJj
aGFudFNlc3Npb24gPSBkZWNvZGVPYmplY3Q8UEtQYXltZW50TWVyY2hhbnRTZXNzaW9uPihkZWNv
ZGVyLCBQQUw6OmdldFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNsYXNzKCkpOworICAgIGlmICgh
cGF5bWVudE1lcmNoYW50U2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiB7IFdURk1vdmUoKnBheW1lbnRN
ZXJjaGFudFNlc3Npb24pIH07CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXlt
ZW50TWV0aG9kPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1l
bnRNZXRob2QmIHBheW1lbnRNZXRob2QpCiB7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFy
Y2hpdmVyKCk7Ci0gICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpwYXltZW50TWV0aG9kLnBrUGF5
bWVudE1ldGhvZCgpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwotICAgIFth
cmNoaXZlciBmaW5pc2hFbmNvZGluZ107Ci0KLSAgICBhdXRvIGRhdGEgPSBhcmNoaXZlci5nZXQo
KS5lbmNvZGVkRGF0YTsKLSAgICBlbmNvZGVyIDw8IERhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgIGVuY29k
ZXIgPDwgcGF5bWVudE1ldGhvZC5wa1BheW1lbnRNZXRob2QoKTsKIH0KIAotYm9vbCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
V2ViQ29yZTo6UGF5bWVudE1ldGhvZCYgcGF5bWVudE1ldGhvZCkKK3N0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UGF5bWVudE1ldGhvZD4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9k
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRh
dGFSZWZlcmVuY2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhUmVmZXJlbmNlKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxj
b25zdCB2b2lkKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpKSBsZW5ndGg6ZGF0YVJlZmVyZW5jZS5z
aXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7Ci0gICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5h
cmNoaXZlckZyb21EYXRhKGRhdGEuZ2V0KCkpOwotICAgIEB0cnkgewotICAgICAgICBQS1BheW1l
bnRNZXRob2QgKnBrUGF5bWVudE1ldGhvZCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xh
c3M6UEFMOjpnZXRQS1BheW1lbnRNZXRob2RDbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJv
b3RPYmplY3RLZXldOwotICAgICAgICBwYXltZW50TWV0aG9kID0gUGF5bWVudE1ldGhvZChwa1Bh
eW1lbnRNZXRob2QpOwotICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBQS1BheW1lbnQ6ICVAIiwgZXhjZXB0
aW9uKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBhdXRvIHBheW1lbnRNZXRo
b2QgPSBkZWNvZGVPYmplY3Q8UEtQYXltZW50TWV0aG9kPihkZWNvZGVyLCBQQUw6OmdldFBLUGF5
bWVudE1ldGhvZENsYXNzKCkpOworICAgIGlmICghcGF5bWVudE1ldGhvZCkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gUGF5bWVudE1ldGhvZCB7IFdURk1vdmUoKnBheW1l
bnRNZXRob2QpIH07CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0
aG9kVXBkYXRlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1l
bnRNZXRob2RVcGRhdGUmIHVwZGF0ZSkKQEAgLTI1NCwyMCArMTkxLDIyIEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdD46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBBcHBsCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXF1ZXN0LnNldFJlcXVp
cmVkQmlsbGluZ0NvbnRhY3RGaWVsZHMocmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkcyk7CiAK
LSAgICBQYXltZW50Q29udGFjdCBiaWxsaW5nQ29udGFjdDsKLSAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGJpbGxpbmdDb250YWN0KSkKKyAgICBzdGQ6Om9wdGlvbmFsPFBheW1lbnRDb250YWN0PiBi
aWxsaW5nQ29udGFjdDsKKyAgICBkZWNvZGVyID4+IGJpbGxpbmdDb250YWN0OworICAgIGlmICgh
YmlsbGluZ0NvbnRhY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXF1ZXN0LnNldEJp
bGxpbmdDb250YWN0KGJpbGxpbmdDb250YWN0KTsKKyAgICByZXF1ZXN0LnNldEJpbGxpbmdDb250
YWN0KCpiaWxsaW5nQ29udGFjdCk7CiAKICAgICBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dDo6Q29udGFjdEZpZWxkcyByZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkczsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKChyZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkcykpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgcmVxdWVzdC5zZXRSZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZp
ZWxkcyhyZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkcyk7CiAKLSAgICBQYXltZW50Q29udGFj
dCBzaGlwcGluZ0NvbnRhY3Q7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaGlwcGluZ0NvbnRh
Y3QpKQorICAgIHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbnRhY3Q+IHNoaXBwaW5nQ29udGFjdDsK
KyAgICBkZWNvZGVyID4+IHNoaXBwaW5nQ29udGFjdDsKKyAgICBpZiAoIXNoaXBwaW5nQ29udGFj
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlcXVlc3Quc2V0U2hpcHBpbmdDb250YWN0
KHNoaXBwaW5nQ29udGFjdCk7CisgICAgcmVxdWVzdC5zZXRTaGlwcGluZ0NvbnRhY3QoKnNoaXBw
aW5nQ29udGFjdCk7CiAKICAgICBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TWVyY2hh
bnRDYXBhYmlsaXRpZXMgbWVyY2hhbnRDYXBhYmlsaXRpZXM7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShtZXJjaGFudENhcGFiaWxpdGllcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24ubW0KaW5kZXggMWMxMWZmODg1Nzc0YWQ0MjQ0MDdhNjBiMWU3OWNhMDVjZWNjNmVmYS4uNTE2
ZDU5YjQ1MDMwYmE0MmNmM2JlODUzMGMwZTY1ZDkyN2JiYTc4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtOTIwLDEzICs5MjAsMTMgQEAgQ1N0cmluZyBSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAogICAgICAgICAgICAgVGV4
dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cCh0cyk7CiAgICAgICAgICAgICB0cyA8PCBjcmVhdGVk
TGF5ZXIudHlwZSA8PCIgIiA8PCBjcmVhdGVkTGF5ZXIubGF5ZXJJRDsKICAgICAgICAgICAgIHN3
aXRjaCAoY3JlYXRlZExheWVyLnR5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgorICAgICAgICAgICAgICAgIGNhc2UgV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgogICAgICAgICAgICAg
ICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJ
RCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgorICAgICAgICAgICAg
ICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3Zp
ZGVkTGF5ZXI6CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0
ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CisgICAg
ICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3Rv
bToKICAgICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVy
Lmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgZGVmYXVsdDoKQEAgLTkzOCw3ICs5MzgsNyBAQCBDU3RyaW5nIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgZHVtcENoYW5nZWRMYXllcnMo
dHMsIG1fY2hhbmdlZExheWVyUHJvcGVydGllcyk7CiAKICAgICBpZiAoIW1fZGVzdHJveWVkTGF5
ZXJJRHMuaXNFbXB0eSgpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHk8VmVjdG9yPEdyYXBoaWNz
TGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4+KCJkZXN0cm95ZWQtbGF5ZXJzIiwgbV9kZXN0cm95ZWRM
YXllcklEcyk7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eTxWZWN0b3I8V2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6UGxhdGZvcm1MYXllcklEPj4oImRlc3Ryb3llZC1sYXllcnMiLCBtX2Rlc3Ryb3ll
ZExheWVySURzKTsKIAogICAgIGlmIChtX2VkaXRvclN0YXRlKSB7CiAgICAgICAgIFRleHRTdHJl
YW06Okdyb3VwU2NvcGUgc2NvcGUodHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAppbmRleCAwZGZiNmU4ZjE5ZDQyMGU5ODdjYzQ4ODA0OTY3MTRmZDgx
MGZlOThlLi4wOTA5YjRkMTljYTA4OTVjNTQzMDVmNWY1NGNkYTBjMDQ5M2E4ODMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNjAxLDcgKzYw
MSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljcz4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlBheW1lbnQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OlBheW1lbnQmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNv
cmU6OlBheW1lbnQmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50
PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4gewpAQCAtNjExLDcgKzYxMSw3
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEF1dGhv
cml6YXRpb25SZXN1bHQ+IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpQYXltZW50Q29udGFjdD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
RGVjb2RlciYsIFdlYkNvcmU6OlBheW1lbnRDb250YWN0Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRFcnJvcj4gewpA
QCAtNjIxLDEyICs2MjEsMTIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpQYXltZW50RXJyb3I+IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJik7Ci0gICAg
c3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNz
aW9uJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50
U2Vzc2lvbj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpOwotICAgIHN0YXRpYyBi
b29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+IGRlY29kZShEZWNvZGVyJik7
CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRN
ZXRob2RVcGRhdGU+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lv
cy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQppbmRleCBmMWUwYzNhNjM1NmYw
M2IyNjgwOWM2MzcyZTg4ZmY0NTVhYzE1OTk3Li4wMzQ1NWU1NTViNzcyNTZlMjYxNjBhMTQxZjBk
ZmEyNWYwMjc5YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsNyBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbi5oIgogCi0jaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCisjaW1wb3J0ICJBcmd1
bWVudENvZGVyc0NvY29hLmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNp
bXBvcnQgPHBhbC9zcGkvY29jb2EvRGF0YURldGVjdG9yc0NvcmVTUEkuaD4KICNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CkBAIC03NiwxMCArNzYsNyBAQCB2b2lk
IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaXNEYXRhRGV0ZWN0b3JMaW5rOwogICAgIGlm
IChpc0RhdGFEZXRlY3RvckxpbmspIHsKICAgICAgICAgZW5jb2RlciA8PCBkYXRhRGV0ZWN0b3JJ
ZGVudGlmaWVyOwotICAgICAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKLSAg
ICAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpkYXRhRGV0ZWN0b3JSZXN1bHRzLmdldCgpIGZv
cktleTpAImRhdGFEZXRlY3RvclJlc3VsdHMiXTsKLQotICAgICAgICBJUEM6OmVuY29kZShlbmNv
ZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERh
dGEpKTsKKyAgICAgICAgZW5jb2RlciA8PCBkYXRhRGV0ZWN0b3JSZXN1bHRzOwogICAgIH0KICNl
bmRpZgogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQpAQCAtMTczLDE5ICsxNzAsMTIgQEAg
Ym9vbCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgSW50ZXJhY3Rpb24KICAgICBpZiAocmVzdWx0LmlzRGF0YURldGVjdG9yTGlu
aykgewogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5kYXRhRGV0ZWN0b3JJZGVu
dGlmaWVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gZGF0YTsKLSAgICAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRhKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIGF1dG8gdW5hcmNo
aXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoTlNEYXRhICopZGF0YS5nZXQoKSk7Ci0g
ICAgICAgIEB0cnkgewotICAgICAgICAgICAgcmVzdWx0LmRhdGFEZXRlY3RvclJlc3VsdHMgPSBb
dW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhBcnJheTpAWyBb
TlNBcnJheSBjbGFzc10sIGdldEREU2Nhbm5lclJlc3VsdENsYXNzKCldIF0gZm9yS2V5OkAiZGF0
YURldGVjdG9yUmVzdWx0cyJdOwotICAgICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2Vw
dGlvbikgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIE5TQXJyYXkg
b2YgRERTY2FuUmVzdWx0OiAlQCIsIGV4Y2VwdGlvbik7CisKKyAgICAgICAgYXV0byBkYXRhRGV0
ZWN0b3JSZXN1bHRzID0gSVBDOjpkZWNvZGVPYmplY3Q8TlNBcnJheT4oZGVjb2RlciwgQFsgW05T
QXJyYXkgY2xhc3NdLCBnZXRERFNjYW5uZXJSZXN1bHRDbGFzcygpIF0pOworICAgICAgICBpZiAo
IWRhdGFEZXRlY3RvclJlc3VsdHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKworICAg
ICAgICByZXN1bHQuZGF0YURldGVjdG9yUmVzdWx0cyA9IFdURk1vdmUoKmRhdGFEZXRlY3RvclJl
c3VsdHMpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQppbmRleCA4ZTM2OTY1MjMwNTc2ODY4ZDQ5
NWRkYjk2Yjg2MDA2OTcyYWU0YzY2Li5jNWE3MTY5NmRjNmVlNjU0NWI4ZmNmODVmZjE1OWJiMDJm
ODc2YjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNNYWMubW0KQEAgLTI3LDcgKzI3LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAKLSNpbXBvcnQgIkFyZ3VtZW50Q29k
ZXJzQ0YuaCIKKyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ29jb2EuaCIKICNpbXBvcnQgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oPgpAQCAtNDMxLDI2ICs0MzEs
MTYgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+OjpkZWNvZGVQ
bGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwKIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlByb3RlY3Rpb25TcGFjZT46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIHNwYWNlKQogewotICAgIGF1dG8gYXJj
aGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwotICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6c3Bh
Y2UubnNTcGFjZSgpIGZvcktleTpAInByb3RlY3Rpb25TcGFjZSJdOwotICAgIElQQzo6ZW5jb2Rl
KGVuY29kZXIsIChfX2JyaWRnZSBDRkRhdGFSZWYpYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGEp
OworICAgIGVuY29kZXIgPDwgc3BhY2UubnNTcGFjZSgpOwogfQogCiBib29sIEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXIm
IGRlY29kZXIsIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYgc3BhY2UpCiB7Ci0gICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gZGF0YTsKLSAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEp
KQorICAgIGF1dG8gcGxhdGZvcm1EYXRhID0gZGVjb2RlT2JqZWN0PE5TVVJMUHJvdGVjdGlvblNw
YWNlPihkZWNvZGVyKTsKKyAgICBpZiAoIXBsYXRmb3JtRGF0YSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKChf
X2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKLSAgICBAdHJ5IHsKLSAgICAgICAgaWYgKFJl
dGFpblB0cjxOU1VSTFByb3RlY3Rpb25TcGFjZT4gbnNTcGFjZSA9IFt1bmFyY2hpdmVyIGRlY29k
ZU9iamVjdE9mQ2xhc3M6W05TVVJMUHJvdGVjdGlvblNwYWNlIGNsYXNzXSBmb3JLZXk6QCJwcm90
ZWN0aW9uU3BhY2UiXSkKLSAgICAgICAgICAgIHNwYWNlID0gV2ViQ29yZTo6UHJvdGVjdGlvblNw
YWNlKG5zU3BhY2UuZ2V0KCkpOwotICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9u
KSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBOU1VSTFByb3RlY3Rpb25T
cGFjZTogJUAiLCBleGNlcHRpb24pOwotICAgIH0KLQotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERl
Y29kaW5nXTsKKyAgICBzcGFjZSA9IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSB7IHBsYXRmb3Jt
RGF0YS0+Z2V0KCkgfTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDc0LDEwICs0NjQsNyBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q3JlZGVudGlhbD46OmVuY29kZVBsYXRmb3Jt
RGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjbwogICAgIH0KIAogICAgIGVuY29kZXIgPDwgZmFsc2U7
Ci0KLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIg
ZW5jb2RlT2JqZWN0Om5zQ3JlZGVudGlhbCBmb3JLZXk6QCJjcmVkZW50aWFsIl07Ci0gICAgSVBD
OjplbmNvZGUoZW5jb2RlciwgKF9fYnJpZGdlIENGRGF0YVJlZilhcmNoaXZlci5nZXQoKS5lbmNv
ZGVkRGF0YSk7CisgICAgZW5jb2RlciA8PCBuc0NyZWRlbnRpYWw7CiB9CiAKIGJvb2wgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpDcmVkZW50aWFsPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXIm
IGRlY29kZXIsIFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCkBAIC01MDksMTkgKzQ5
NiwxMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q3JlZGVudGlhbD46OmRlY29kZVBs
YXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBXZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwotICAgIGlmICghSVBDOjpkZWNv
ZGUoZGVjb2RlciwgZGF0YSkpCisgICAgYXV0byBuc0NyZWRlbnRpYWwgPSBkZWNvZGVPYmplY3Q8
TlNVUkxDcmVkZW50aWFsPihkZWNvZGVyKTsKKyAgICBpZiAoIW5zQ3JlZGVudGlhbCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZl
ckZyb21EYXRhKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKLSAgICBAdHJ5IHsKLSAg
ICAgICAgaWYgKFJldGFpblB0cjxOU1VSTENyZWRlbnRpYWw+IG5zQ3JlZGVudGlhbCA9IFt1bmFy
Y2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TVVJMQ3JlZGVudGlhbCBjbGFzc10gZm9yS2V5
OkAiY3JlZGVudGlhbCJdKQotICAgICAgICAgICAgY3JlZGVudGlhbCA9IFdlYkNvcmU6OkNyZWRl
bnRpYWwobnNDcmVkZW50aWFsLmdldCgpKTsKLSAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4
Y2VwdGlvbikgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgTlNVUkxDcmVk
ZW50aWFsOiAlQCIsIGV4Y2VwdGlvbik7Ci0gICAgfQotCi0gICAgW3VuYXJjaGl2ZXIgZmluaXNo
RGVjb2RpbmddOworICAgIGNyZWRlbnRpYWwgPSBXZWJDb3JlOjpDcmVkZW50aWFsIHsgbnNDcmVk
ZW50aWFsLT5nZXQoKSB9OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01OTgsMjAgKzU3Nywx
MCBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKIAotc3RhdGljIE5TU3RyaW5nICpkZXZpY2VDb250ZXh0S2V5KCkKLXsKLSAg
ICBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBrZXkgPSBAImRldmljZUNvbnRleHQiOwotICAgIHJl
dHVybiBrZXk7Ci19Ci0KIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0KQogewotICAgIGF1
dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwotCiAgICAgaWYgKFtnZXRBVk91dHB1dENv
bnRleHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2Rpbmcp
XSkKLSAgICAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDp0YXJnZXQuYXZPdXRwdXRDb250ZXh0
KCkgZm9yS2V5OmRldmljZUNvbnRleHRLZXkoKV07Ci0KLSAgICBJUEM6OmVuY29kZShlbmNvZGVy
LCAoX19icmlkZ2UgQ0ZEYXRhUmVmKWFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKTsKKyAgICAg
ICAgZW5jb2RlciA8PCB0YXJnZXQuYXZPdXRwdXRDb250ZXh0KCk7CiB9CiAKIGJvb2wgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZVBsYXRm
b3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dCYgdGFyZ2V0KQpAQCAtNjE5LDIzICs1ODgsMTEgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERl
Y28KICAgICBpZiAoIVtnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2Nv
bDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKLSAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29k
ZXIsIGRhdGEpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIHVuYXJjaGl2ZXIg
PSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkp
OwotCi0gICAgQVZPdXRwdXRDb250ZXh0ICpjb250ZXh0ID0gbmlsOwotICAgIEB0cnkgewotICAg
ICAgICBjb250ZXh0ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRBVk91dHB1
dENvbnRleHRDbGFzcygpIGZvcktleTpkZXZpY2VDb250ZXh0S2V5KCldOwotICAgIH0gQGNhdGNo
IChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigiVGhlIHRhcmdl
dCBwaWNrZXIgYmVpbmcgZGVjb2RlZCBpcyBub3QgYW4gQVZPdXRwdXRDb250ZXh0LiIpOworICAg
IGF1dG8gY29udGV4dCA9IGRlY29kZU9iamVjdDxBVk91dHB1dENvbnRleHQ+KGRlY29kZXIsIGdl
dEFWT3V0cHV0Q29udGV4dENsYXNzKCkpOworICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KIAotICAgIHRhcmdldCA9IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0KGNvbnRleHQpOwotICAgIAotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29k
aW5nXTsKKyAgICB0YXJnZXQgPSBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB7
IGNvbnRleHQtPmdldCgpIH07CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5tbQppbmRleCA1ODhjNWU1MThh
MjQ5N2YzNThmNGI4MmNiYWFjOTQxOGQ5YWQxMGMwLi5mOTE3MjJmNjVkMWE3NTE5ZWZlYmQ4YmQw
MDQ3MDdmNjM0ODFiZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2Vi
SGl0VGVzdFJlc3VsdERhdGEubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkhp
dFRlc3RSZXN1bHREYXRhLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsMTAgKzQ1LDcgQEAgdm9pZCBXZWJIaXRUZXN0UmVz
dWx0RGF0YTo6cGxhdGZvcm1FbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAg
IGlmICghaGFzQWN0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBhcmNo
aXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7Ci0gICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpkZXRl
Y3RlZERhdGFBY3Rpb25Db250ZXh0LmdldCgpIGZvcktleTpAImFjdGlvbkNvbnRleHQiXTsKLQot
ICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIChfX2JyaWRnZSBDRkRhdGFSZWYpYXJjaGl2ZXIuZ2V0
KCkuZW5jb2RlZERhdGEpOworICAgIGVuY29kZXIgPDwgZGV0ZWN0ZWREYXRhQWN0aW9uQ29udGV4
dDsKIAogICAgIGVuY29kZXIgPDwgZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3g7CiAgICAgZW5jb2Rl
ciA8PCBkZXRlY3RlZERhdGFPcmlnaW5hdGluZ1BhZ2VPdmVybGF5OwpAQCAtNjgsMjAgKzY1LDEy
IEBAIGJvb2wgV2ViSGl0VGVzdFJlc3VsdERhdGE6OnBsYXRmb3JtRGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgV2ViSGl0VGVzdFJlc3VsCiAgICAgaWYgKCFoYXNBY3Rpb25Db250ZXh0KQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBBU1NFUlQoRGF0YURldGVjdG9yc0xpYnJhcnkoKSk7
Ci0KLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwotICAgIGlmICghSVBDOjpkZWNvZGUo
ZGVjb2RlciwgZGF0YSkpCisgICAgCisgICAgYXV0byBkZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0
ID0gZGVjb2RlT2JqZWN0PEREQWN0aW9uQ29udGV4dD4oZGVjb2RlciwgZ2V0RERBY3Rpb25Db250
ZXh0Q2xhc3MoKSk7CisgICAgaWYgKCFkZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVy
RnJvbURhdGEoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwotICAgIEB0cnkgewotICAg
ICAgICBoaXRUZXN0UmVzdWx0RGF0YS5kZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0ID0gW3VuYXJj
aGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXREREFjdGlvbkNvbnRleHRDbGFzcygpIGZvcktl
eTpAImFjdGlvbkNvbnRleHQiXTsKLSAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlv
bikgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgRERBY3Rpb25Db250ZXh0
OiAlQCIsIGV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0g
ICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAgIGhpdFRlc3RSZXN1bHREYXRhLmRl
dGVjdGVkRGF0YUFjdGlvbkNvbnRleHQgPSBXVEZNb3ZlKCpkZXRlY3RlZERhdGFBY3Rpb25Db250
ZXh0KTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEuZGV0ZWN0
ZWREYXRhQm91bmRpbmdCb3gpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKaW5kZXggNmFjOGZlYzE2Y2U5MmViZmE3MTZkZTMyYmEwNDU3OWFmZDIzNzU3Zi4uODY0
M2RhZTZiZTQzNmI4ZWZjZjc5YzEwMTUwOGYyNTY1YjQyYTMxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dApAQCAtMTIyLDYgKzEyMiw3IEBAIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRo
ZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbQogCiBTaGFyZWQvQ29jb2EvQVBJRGF0YUNvY29hLm1t
CiBTaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCitTaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnND
b2NvYS5tbQogU2hhcmVkL0NvY29hL0NoaWxkUHJvY2Vzc0NvY29hLm1tCiBTaGFyZWQvQ29jb2Ev
Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5tbQogU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rp
b25SZXN1bHQubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDI4MTkwNjkzZDNhM2ZlZmZlYjBlZWNiNjViNmYzNGEyYjg5NDk0YjMuLjYx
ZDk0ODFmNTMyY2U3OTQzY2M5ZTY3NDYwYjJiYjgwMjJjMzc2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI2NSw2ICsxMjY1LDcg
QEAKIAkJQTEzQjNEQTIyMDdGMzlERTAwOTBDNThEIC8qIE1vYmlsZVdpRmlTUEkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExM0IzREExMjA3RjM5REUw
MDkwQzU4RCAvKiBNb2JpbGVXaUZpU1BJLmggKi87IH07CiAJCUExM0RDNjgyMjA3QUE2QjIwMDY2
RUY3MiAvKiBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExM0RDNjgwMjA3QUE2QjIwMDY2RUY3MiAv
KiBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcuaCAqLzsgfTsKIAkJQTE1RUVERTYxRTMw
MUNFRTAwMDA2OUIwIC8qIFdLUGFzc3dvcmRWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTVFRURFNDFFMzAxQ0VFMDAwMDY5QjAgLyogV0tQYXNz
d29yZFZpZXcuaCAqLzsgfTsKKwkJQTE3NUM0NEEyMUFBMzE3MTAwMDAzN0QwIC8qIEFyZ3VtZW50
Q29kZXJzQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExNzVDNDQ5MjFBQTMxNzAwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLmggKi87
IH07CiAJCUExODJENUI1MUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTgyRDVCMzFCRTZC
RDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5oICovOyB9OwogCQlBMTlERDNDMDFEMDdE
MTY4MDBBQzgyM0IgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExOUREM0JGMUQwN0QxNjgw
MEFDODIzQiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oICovOyB9OwogCQlB
MUE0RkU1QTE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQTRGRTU3MThEQ0U5RkEwMEI1RUE4QSAv
KiBfV0tEb3dubG9hZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0zODE5LDYgKzM4MjAsOCBAQAogCQlBMTNEQzY4MTIwN0FBNkIyMDA2NkVGNzIg
LyogV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tOyBwYXRoID0gaW9zL1dLQXBwbGlj
YXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTE1RUVERTMxRTMwMUNFRTAwMDA2OUIwIC8qIFdLUGFzc3dvcmRWaWV3Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tQYXNzd29yZFZpZXcubW07IHBhdGggPSBp
b3MvV0tQYXNzd29yZFZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNUVF
REU0MUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXS1Bhc3N3b3JkVmlldy5oOyBwYXRoID0gaW9zL1dLUGFzc3dvcmRW
aWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNzVDNDQ5MjFBQTMxNzAwMDAw
MzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFyZ3VtZW50Q29kZXJzQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTE3NUM0NEIyMUFBMzMxQjAwMDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBBcmd1bWVudENvZGVyc0NvY29hLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMTgyRDVCMjFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0
eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2li
aWxpdHlJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExODJENUIzMUJFNkJE
MjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTE5REQzQkYxRDA3RDE2ODAwQUM4MjNCIC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlcklu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYlZpZXdQcmlu
dEZvcm1hdHRlckludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTcw
LDYgKzYxNzMsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMUExRUYxOTcxQTFENUI0MjAwMjMy
MDBBIC8qIEFQSURhdGFDb2NvYS5tbSAqLywKIAkJCQkzNzhFMUEzQjE4MUVENkZGMDAzMTAwN0Eg
LyogQVBJT2JqZWN0Lm1tICovLAorCQkJCUExNzVDNDQ5MjFBQTMxNzAwMDAwMzdEMCAvKiBBcmd1
bWVudENvZGVyc0NvY29hLmggKi8sCisJCQkJQTE3NUM0NEIyMUFBMzMxQjAwMDAzN0QwIC8qIEFy
Z3VtZW50Q29kZXJzQ29jb2EubW0gKi8sCiAJCQkJMUE2OThGMTcxRTQ5MTAyMjAwNjRFODgxIC8q
IENoaWxkUHJvY2Vzc0NvY29hLm1tICovLAogCQkJCTM3QkVDNERGMTk0OTE0ODYwMDhCNDI4NiAv
KiBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmggKi8sCiAJCQkJMzdCRUM0REUxOTQ5MTQ4
NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIubW0gKi8sCkBAIC04ODc1
LDcgKzg4ODAsNiBAQAogCQkJCTdBOEE5RDVBMUVGMTMwMjkwMDk4MDFBRSAvKiBBUElJbmplY3Rl
ZEJ1bmRsZUJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E4QTlENTgxRUYxMTlC
MDAwOTgwMUFFIC8qIEFQSUluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzNzc1MTIzMTFERjBERUUyMDA4QTM1MUMgLyogQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0RTU3RjZCMjFBODNCMTIwMDM0NUYzQyAvKiBSZW1v
dGVMYXllclRyZWVOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzY5MDc5RTE4RjM0MEEyMDAx
REZGMDQgLyogQVBJSW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QTNBQ0UxQjFFRUVGNzlCMDBBODY0QTQgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QThBOUQ1QzFFRjE0NTk4MDA5ODAxQUUgLyog
QVBJSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTg5MTYsNiArODkyMCw3IEBACiAJCQkJMUFFRkQyNzkxMUQxNkM4MTAwODIxOUQzIC8qIEFy
Z3VtZW50Q29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUZEMkY3MTFEMTgwN0IwMDgyMTlE
MyAvKiBBcmd1bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjBDNEExMkIxNjMz
NDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJzQ0YuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNzVD
NDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMTc5RkQ5QzEzNEQzODA2MDAxNUI4ODMgLyogQXJndW1lbnRDb2RlcnNNYWMuaCBp
biBIZWFkZXJzICovLAogCQkJCUNFMUEwQkQyMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25T
ZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU5QzRBNTkxOEI4MTE3NDAwN0JEQ0I2
IC8qIEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTkyMTcsNiAr
OTIyMiw3IEBACiAJCQkJMUFCMTZBRTIxNjQ4NjU2RDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjI0QTJFMTg3OUU0QkMw
MDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBQTNENzVDMTY1MUI0NEYwMDg3MTNEMCAvKiBSZW1vdGVMYXllclRy
ZWVIb3N0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEU1N0Y2QjIxQTgzQjEyMDAzNDVGM0MgLyog
UmVtb3RlTGF5ZXJUcmVlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRERTBBRkExODI5OEND
OTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGMjY0QTAxQTFGRjlDQzAwMUZFNzU5IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9s
bGluZ1BlcmZvcm1hbmNlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMUFDNkMxNjUxNzU5
RTAwQzE3RDdGIC8qIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355570</attachid>
            <date>2018-11-24 18:36:55 -0800</date>
            <delta_ts>2018-11-24 18:41:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191948-20181124183645.patch</filename>
            <type>text/plain</type>
            <size>47442</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5ZjQzYTkxNTIwNDQw
MzE4ZWEwYzgxOTFjZjFlOTk5NTE2MjZiNy4uNTQwNjMyNWMxNDkwNzBlNDlkNDFiNjgyZWJiZTg2
M2UxMzIxNjhmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTExLTI0ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIE1ha2UgaXQgZWFz
aWVyIHRvIGVuY29kZSBOU09iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MTk0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxl
cy9hcHBsZXBheS9QYXltZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
Q29udGFjdC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vz
c2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbjo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbik6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0
aG9kLmg6CisKIDIwMTgtMTEtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtDb2NvYV0gU09GVF9MSU5LX0NMQVNTX0ZPUl97SEVBREVSLFNPVVJDRX0gc2hvdWxk
IGdlbmVyYXRlIGEgbW9yZSBjb25jaXNlIGdldHRlciBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
aW5kZXggODQ5NGYyNzQ2MDVkZTA2MjA2NjgxZGU3N2EyZjM5YjVjNjNhZmNkNi4uZmI5NDFjYWVi
YTA2OTAwMjlmMjExYTk1ZDU0NjFmNDhkZWE5ZjFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTgtMTEtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gTWFrZSBpdCBlYXNpZXIgdG8gZW5jb2RlIE5TT2JqZWN0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxOTQ4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvc3BpL2Nv
Y29hL1Bhc3NLaXRTUEkuaDoKKwogMjAxOC0xMS0yNCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBTT0ZUX0xJTktfQ0xBU1NfRk9SX3tIRUFERVIsU09V
UkNFfSBzaG91bGQgZ2VuZXJhdGUgYSBtb3JlIGNvbmNpc2UgZ2V0dGVyIGZ1bmN0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDcxNzVmNmQ0ZTQ4YTA3Mjg4NzJiNDEyY2NhYWQ1YjUzMjUyZjg3Y2YuLjJkODZkN2Yy
ZGYzZTg3MmE3OTI0MjhkOWYwZGY3MmRjMDIxODVhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMg
QEAKKzIwMTgtMTEtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAg
IFtDb2NvYV0gTWFrZSBpdCBlYXNpZXIgdG8gZW5jb2RlIE5TT2JqZWN0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxOTQ4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQXJndW1l
bnRDb2RlcnNDb2NvYS5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6ZGVjb2RlT2JqZWN0KToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxUOjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJldGFpblB0cjxUPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8UmV0YWluUHRyPFQ+Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQXJn
dW1lbnRDb2RlcnNDb2NvYS5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvRGF0YURldGVjdGlvblJlc3VsdC5tbS4KKyAgICAgICAgKElQQzo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJl
c3VsdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpEYXRhRGV0ZWN0aW9uUmVzdWx0OjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpEYXRhRGV0ZWN0aW9uUmVzdWx0OjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD46OmRlY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRD
b250YWN0Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQ
YXltZW50TWVyY2hhbnRTZXNzaW9uPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPjo6ZGVjb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kPjo6ZW5jb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kPjo6ZGVjb2Rl
KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdD46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OmRlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9tYWMv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZT46OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlPjo6ZGVjb2RlUGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDcmVkZW50
aWFsPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpDcmVkZW50aWFsPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29k
ZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAo
SVBDOjpkZXZpY2VDb250ZXh0S2V5KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL1dl
YkhpdFRlc3RSZXN1bHREYXRhLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0
RGF0YTo6cGxhdGZvcm1FbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0
UmVzdWx0RGF0YTo6cGxhdGZvcm1EZWNvZGUpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTgtMTEt
MjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gU09G
VF9MSU5LX0NMQVNTX0ZPUl97SEVBREVSLFNPVVJDRX0gc2hvdWxkIGdlbmVyYXRlIGEgbW9yZSBj
b25jaXNlIGdldHRlciBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9QYXltZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnQuaAppbmRleCA4NWY2N2JlZGYyZWQ3ZTBlNDgwYzQ1Y2ExZjdiNmVkZTdhZTY5YjFmLi44
Y2NkMjEwOTQ1MDY4ZDE3MzQzNzM5ODg0M2Y3NGZhMTA0MGQ2ZTdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw5ICszOCw4IEBAIHN0cnVjdCBBcHBsZVBh
eVBheW1lbnQ7CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBQYXltZW50IHsKIHB1YmxpYzoKICAgICBQ
YXltZW50KCkgPSBkZWZhdWx0OwotCi0gICAgZXhwbGljaXQgUGF5bWVudChQS1BheW1lbnQgKnBr
UGF5bWVudCkKLSAgICAgICAgOiBtX3BrUGF5bWVudChwa1BheW1lbnQpCisgICAgZXhwbGljaXQg
UGF5bWVudChSZXRhaW5QdHI8UEtQYXltZW50PiYmIHBrUGF5bWVudCkKKyAgICAgICAgOiBtX3Br
UGF5bWVudCB7IFdURk1vdmUocGtQYXltZW50KSB9CiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29udGFjdC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29udGFjdC5oCmluZGV4IGQwNDEy
ZDFkZWRhNjFiN2JmNGM1ZDY5MjdhYjA2ODE5Yjk2MmQzMjEuLmMyNmQ3ZDNhNzIyMjJlY2EwYWZj
NmUxMTZlMGU5YWQyNWYxMWI3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudENvbnRhY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L1BheW1lbnRDb250YWN0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw4ICszOSw4IEBAIHN0cnVjdCBBcHBsZVBh
eVBheW1lbnRDb250YWN0OwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgUGF5bWVudENvbnRhY3Qgewog
cHVibGljOgogICAgIFBheW1lbnRDb250YWN0KCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFBh
eW1lbnRDb250YWN0KFBLQ29udGFjdCAqcGtDb250YWN0KQotICAgICAgICA6IG1fcGtDb250YWN0
KHBrQ29udGFjdCkKKyAgICBleHBsaWNpdCBQYXltZW50Q29udGFjdChSZXRhaW5QdHI8UEtDb250
YWN0PiYmIHBrQ29udGFjdCkKKyAgICAgICAgOiBtX3BrQ29udGFjdCB7IFdURk1vdmUocGtDb250
YWN0KSB9CiAgICAgewogICAgIH0KICAgICB2aXJ0dWFsIH5QYXltZW50Q29udGFjdCgpID0gZGVm
YXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50TWVyY2hhbnRTZXNzaW9uLmgKaW5kZXggN2VkNmIyMTU3MzA2ZWViZDA3ZTUxMTYxOGM0MzQ0
NzljNTU0MzZlNy4uZGFhNzQ5NTQ5ZjUzZjVkYTNkMzY2ZDVlNjA4MzlhMjg4MDYzYjNmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRT
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVy
Y2hhbnRTZXNzaW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDIsOCArNDIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQ
YXltZW50TWVyY2hhbnRTZXNzaW9uIHsKIHB1YmxpYzoKICAgICBQYXltZW50TWVyY2hhbnRTZXNz
aW9uKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFBheW1lbnRNZXJjaGFudFNlc3Npb24oUEtQ
YXltZW50TWVyY2hhbnRTZXNzaW9uICpwa1BheW1lbnRNZXJjaGFudFNlc3Npb24pCi0gICAgICAg
IDogbV9wa1BheW1lbnRNZXJjaGFudFNlc3Npb24ocGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKQor
ICAgIGV4cGxpY2l0IFBheW1lbnRNZXJjaGFudFNlc3Npb24oUmV0YWluUHRyPFBLUGF5bWVudE1l
cmNoYW50U2Vzc2lvbj4mJiBwa1BheW1lbnRNZXJjaGFudFNlc3Npb24pCisgICAgICAgIDogbV9w
a1BheW1lbnRNZXJjaGFudFNlc3Npb24geyBXVEZNb3ZlKHBrUGF5bWVudE1lcmNoYW50U2Vzc2lv
bikgfQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudE1ldGhvZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50TWV0aG9kLmgKaW5kZXggOWNlN2JhYTc5NDNhYmQyZGRmZjEzMWI0NDMwOTdhMmFh
MDRiMTIxNS4uNzg4N2RjYzc0ODM2YzZiNTY4NjUwMGNlNjllOTc4YmI5MDlmNmZhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsOCAr
NDAsOCBAQCBwdWJsaWM6CiAgICAgUGF5bWVudE1ldGhvZCgpID0gZGVmYXVsdDsKICAgICB2aXJ0
dWFsIH5QYXltZW50TWV0aG9kKCkgPSBkZWZhdWx0OwogCi0gICAgZXhwbGljaXQgUGF5bWVudE1l
dGhvZChQS1BheW1lbnRNZXRob2QgKnBrUGF5bWVudE1ldGhvZCkKLSAgICAgICAgOiBtX3BrUGF5
bWVudE1ldGhvZChwa1BheW1lbnRNZXRob2QpCisgICAgZXhwbGljaXQgUGF5bWVudE1ldGhvZChS
ZXRhaW5QdHI8UEtQYXltZW50TWV0aG9kPiYmIHBrUGF5bWVudE1ldGhvZCkKKyAgICAgICAgOiBt
X3BrUGF5bWVudE1ldGhvZCB7IFdURk1vdmUocGtQYXltZW50TWV0aG9kKSB9CiAgICAgewogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tp
dFNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCmlu
ZGV4IDNjYTM5ZmE5NmZmYWM1MDZiZDAwMDM5ODVkNmE4NjMzYTk2ZmJjZjguLjE4OTU4ZTkyNjE0
YzFlM2I2YTRmMDRhNjhhZDE0MzNhYjE5NzE4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKQEAgLTMyNywxMCArMzI3LDE5IEBAIHZvaWQgUEtE
cmF3QXBwbGVQYXlCdXR0b24oX05vbm51bGwgQ0dDb250ZXh0UmVmLCBDR1JlY3QgZHJhd1JlY3Qs
IENHRmxvYXQgc2NhbGUsCiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BpbnRlcmZhY2Ug
UEtDb250YWN0ICgpIDxOU1NlY3VyZUNvZGluZz4KK0BlbmQKKwogQGludGVyZmFjZSBQS1Bhc3NM
aWJyYXJ5ICgpCiAtICh2b2lkKW9wZW5QYXltZW50U2V0dXBGb3JNZXJjaGFudElkZW50aWZpZXI6
KE5TU3RyaW5nICopaWRlbnRpZmllciBkb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvbXBsZXRp
b246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uOwogQGVuZAogCitAaW50ZXJmYWNl
IFBLUGF5bWVudCAoKSA8TlNTZWN1cmVDb2Rpbmc+CitAZW5kCisKK0BpbnRlcmZhY2UgUEtQYXlt
ZW50TWV0aG9kICgpIDxOU1NlY3VyZUNvZGluZz4KK0BlbmQKKwogQGludGVyZmFjZSBQS1BheW1l
bnRSZXF1ZXN0ICgpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU1N0cmluZyAqc291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwogQHByb3BlcnR5IChub25hdG9taWMsIHN0
cm9uZykgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2Eu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lNDQ2OTU3OWEwMGQyNzBhZDJiNTQ0ZTI4YWRlNTFlMjZhNWZmMTUwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2Nv
YS5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJBcmd1bWVudENvZGVy
cy5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
KworbmFtZXNwYWNlIElQQyB7CisKK3ZvaWQgZW5jb2RlKEVuY29kZXImLCBpZCA8TlNTZWN1cmVD
b2Rpbmc+KTsKK3N0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkIDxOU1NlY3VyZUNvZGluZz4+PiBk
ZWNvZGUoRGVjb2RlciYsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3Nlcyk7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxUPj4gZGVjb2RlT2JqZWN0
KERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcyA9IEBbIFtU
IGNsYXNzXSBdKQoreworICAgIGF1dG8gcmVzdWx0ID0gZGVjb2RlKGRlY29kZXIsIGFsbG93ZWRD
bGFzc2VzKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIGlmICghKnJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciB9OworCisgICAg
aWQgb2JqZWN0ID0gcmVzdWx0LT5sZWFrUmVmKCk7CisgICAgQVNTRVJUKFtvYmplY3QgaXNLaW5k
T2ZDbGFzczphbGxvd2VkQ2xhc3Nlc1swXV0pOworICAgIHJldHVybiB7IGFkb3B0TlMoKFQgKilv
YmplY3QpIH07Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdGQ6Om9wdGlvbmFsPFJldGFp
blB0cjxUPj4gZGVjb2RlT2JqZWN0KERlY29kZXImIGRlY29kZXIsIENsYXNzIGFsbG93ZWRDbGFz
cykKK3sKKyAgICByZXR1cm4gZGVjb2RlT2JqZWN0PFQ+KGRlY29kZXIsIEBbIGFsbG93ZWRDbGFz
cyBdKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gdXNpbmcgQ29uZm9ybXNUb1NlY3VyZUNv
ZGluZyA9IHN0ZDo6aXNfY29udmVydGlibGU8VCAqLCBpZCA8TlNTZWN1cmVDb2Rpbmc+PjsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8VCAqPiB7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVSA9IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8Q29uZm9ybXNUb1NlY3VyZUNv
ZGluZzxVPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIFUgKm9iamVjdCkKKyAgICB7CisgICAgICAgIElQQzo6ZW5jb2RlKGVuY29k
ZXIsIG9iamVjdCk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8UmV0YWluUHRyPFQ+PiB7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFUgPSBU
LCBzdGQ6OmVuYWJsZV9pZl90PENvbmZvcm1zVG9TZWN1cmVDb2Rpbmc8VT46OnZhbHVlPiogPSBu
dWxscHRyPgorICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBS
ZXRhaW5QdHI8VT4mIG9iamVjdCkKKyAgICB7CisgICAgICAgIEFyZ3VtZW50Q29kZXI8VSAqPjo6
ZW5jb2RlKGVuY29kZXIsIG9iamVjdC5nZXQoKSk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFUgPSBULCBzdGQ6OmVuYWJsZV9pZl90PENvbmZvcm1zVG9TZWN1cmVDb2Rpbmc8VT46
OnZhbHVlPiogPSBudWxscHRyPgorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxV
Pj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICByZXR1cm4gZGVjb2Rl
T2JqZWN0PFU+KGRlY29kZXIpOworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIElQQworCisj
ZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTRmNjJhODk0ZmE5ZmMxMmFl
YjRiNDc1MjQ2NGUyZGJkNjBlMWM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NvY29h
LmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKworI2ltcG9ydCAiQXJndW1lbnRDb2RlcnNDRi5o
IgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KKworbmFtZXNw
YWNlIElQQyB7CisKK3ZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGlkIDxOU1NlY3VyZUNv
ZGluZz4gb2JqZWN0KQoreworICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwor
ICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6b2JqZWN0IGZvcktleTpOU0tleWVkQXJjaGl2ZVJv
b3RPYmplY3RLZXldOworICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107CisKKyAgICBJUEM6
OmVuY29kZShlbmNvZGVyLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKVthcmNoaXZlciBlbmNvZGVkRGF0
YV0pOworfQorCitzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZCA8TlNTZWN1cmVDb2Rpbmc+Pj4g
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykK
K3sKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOworICAgIGlmICghZGVjb2RlKGRlY29k
ZXIsIGRhdGEpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byB1bmFy
Y2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKChfX2JyaWRnZSBOU0RhdGEgKilkYXRh
LmdldCgpKTsKKyAgICBAdHJ5IHsKKyAgICAgICAgaWQgcmVzdWx0ID0gW3VuYXJjaGl2ZXIgZGVj
b2RlT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoQXJyYXk6YWxsb3dlZENsYXNzZXNdIGZv
cktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOworICAgICAgICBBU1NFUlQoW3Jlc3Vs
dCBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pOworICAgICAg
ICByZXR1cm4geyByZXN1bHQgfTsKKyAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlv
bikgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgb2JqZWN0IG9mIGNsYXNz
ZXMgJUA6ICVAIiwgYWxsb3dlZENsYXNzZXMsIGV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgfSBAZmluYWxseSB7CisgICAgICAgIFt1bmFyY2hpdmVyIGZpbmlz
aERlY29kaW5nXTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIElQQworCisjZW5kaWYgLy8g
UExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9E
YXRhRGV0ZWN0aW9uUmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0
ZWN0aW9uUmVzdWx0LmgKaW5kZXggMjc0NDNjZTNmM2IyN2JkYTc0MGRkYjYxMzQ5YTc4NmQwMGRk
ZjZhYS4uMmM5OWI0YmRlZDg3Y2Q3NzY2NzZhN2RhYjI3NjVjNzU4Y2NlZWUyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICsz
OCw3IEBAIHN0cnVjdCBEYXRhRGV0ZWN0aW9uUmVzdWx0IHsKICAgICBSZXRhaW5QdHI8TlNBcnJh
eT4gcmVzdWx0czsKIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAg
IHN0YXRpYyBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBEYXRhRGV0ZWN0aW9uUmVzdWx0Jik7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0YURldGVjdGlvblJlc3VsdD4gZGVjb2RlKElQ
Qzo6RGVjb2RlciYpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0RhdGFEZXRlY3Rpb25SZXN1bHQubW0KaW5kZXggYWY0MjE0NjA4YzA0MjY4NmRmNWUzYmJiN2Ew
ZTE0ZmM3YTNmYTJlMS4uODgwNjA1MDg2M2Y1MzIzNmM1MzlkMWNkZDA5NTc2Yjk0OTg4ZWJmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3Vs
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0
Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEYXRh
RGV0ZWN0aW9uUmVzdWx0LmgiCiAKLSNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKyNpbXBv
cnQgIkFyZ3VtZW50Q29kZXJzQ29jb2EuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNQSS5oPgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KQEAgLTQxLDI3ICs0MSwx
NiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBEYXRhRGV0ZWN0aW9uUmVzdWx0OjplbmNv
ZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGF1dG8gYXJjaGl2ZXIgPSBz
ZWN1cmVBcmNoaXZlcigpOwotICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cmVzdWx0cy5nZXQo
KSBmb3JLZXk6QCJkYXRhRGV0ZWN0b3JSZXN1bHRzIl07Ci0gICAgSVBDOjplbmNvZGUoZW5jb2Rl
ciwgKF9fYnJpZGdlIENGRGF0YVJlZilhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CisgICAg
ZW5jb2RlciA8PCByZXN1bHRzOwogfQogCi1ib29sIERhdGFEZXRlY3Rpb25SZXN1bHQ6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIsIERhdGFEZXRlY3Rpb25SZXN1bHQmIHJlc3VsdCkKK3N0
ZDo6b3B0aW9uYWw8RGF0YURldGVjdGlvblJlc3VsdD4gRGF0YURldGVjdGlvblJlc3VsdDo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBk
YXRhOwotICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBhdXRvIHJlc3VsdHMgPSBJUEM6OmRlY29kZU9iamVjdDxOU0FycmF5Pihk
ZWNvZGVyLCBAWyBbTlNBcnJheSBjbGFzc10sIGdldEREU2Nhbm5lclJlc3VsdENsYXNzKCkgXSk7
CisgICAgaWYgKCFyZXN1bHRzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
YXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKChfX2JyaWRnZSBOU0Rh
dGEgKilkYXRhLmdldCgpKTsKLSAgICBAdHJ5IHsKLSAgICAgICAgcmVzdWx0LnJlc3VsdHMgPSBb
dW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhBcnJheTpAWyBb
TlNBcnJheSBjbGFzc10sIGdldEREU2Nhbm5lclJlc3VsdENsYXNzKCldIF0gZm9yS2V5OkAiZGF0
YURldGVjdG9yUmVzdWx0cyJdOwotICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9u
KSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBOU0FycmF5IG9mIEREU2Nh
blJlc3VsdDogJUAiLCBleGNlcHRpb24pOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIAotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4ge3sgV1RGTW92ZSgqcmVzdWx0cykgfX07CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnND
b2NvYS5tbQppbmRleCAxNjQ5ZDJlYzgxOGFkOGNkYjQ0ODRmYzRkNjMzYzgxMjZiODc4NGYwLi5l
MDEzNWJkMDNlNGE2Nzc2YTAyY2Y5MTI1ZGI0NTNhODJlMmFiOTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKKyNpbXBvcnQg
IkFyZ3VtZW50Q29kZXJzQ29jb2EuaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBv
cnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KICNpbXBvcnQgPHBhbC9j
b2NvYS9QYXNzS2l0U29mdExpbmsuaD4KQEAgLTM4LDMyICszOSwxNiBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYgcGF5bWVudCkKIHsK
LSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIgZW5j
b2RlT2JqZWN0OnBheW1lbnQucGtQYXltZW50KCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9i
amVjdEtleV07Ci0gICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKLQotICAgIGF1dG8gZGF0
YSA9IGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhOwotICAgIGVuY29kZXIgPDwgRGF0YVJlZmVy
ZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVu
Z3RoXSk7CisgICAgZW5jb2RlciA8PCBwYXltZW50LnBrUGF5bWVudCgpOwogfQogCi1ib29sIEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBX
ZWJDb3JlOjpQYXltZW50JiBwYXltZW50KQorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50
PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5
OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhUmVmZXJlbmNl
LmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsK
LSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoZGF0YS5nZXQo
KSk7Ci0gICAgQHRyeSB7Ci0gICAgICAgIFBLUGF5bWVudCAqcGtQYXltZW50ID0gW3VuYXJjaGl2
ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldFBLUGF5bWVudENsYXNzKCkgZm9yS2V5Ok5T
S2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0gICAgICAgIHBheW1lbnQgPSBQYXltZW50KHBr
UGF5bWVudCk7Ci0gICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVudDogJUAiLCBleGNlcHRpb24p
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGF1dG8gcGF5bWVudCA9IGRlY29k
ZU9iamVjdDxQS1BheW1lbnQ+KGRlY29kZXIsIFBBTDo6Z2V0UEtQYXltZW50Q2xhc3MoKSk7Cisg
ICAgaWYgKCFwYXltZW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgW3Vu
YXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBQ
YXltZW50IHsgV1RGTW92ZSgqcGF5bWVudCkgfTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0JiByZXN1bHQpCkBA
IC04MywzOCArNjgsMjIgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXph
dGlvblJlc3VsdD4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW4KICAgICBkZWNvZGVyID4+
IGVycm9yczsKICAgICBpZiAoIWVycm9ycykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICAKKwogICAgIHJldHVybiB7eyBXVEZNb3ZlKCpzdGF0dXMpLCBXVEZNb3ZlKCplcnJvcnMp
IH19OwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmIHBh
eW1lbnRDb250YWN0KQogewotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwot
ICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cGF5bWVudENvbnRhY3QucGtDb250YWN0KCkgZm9y
S2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0gICAgW2FyY2hpdmVyIGZpbmlzaEVu
Y29kaW5nXTsKLQotICAgIGF1dG8gZGF0YSA9IGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhOwot
ICAgIGVuY29kZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
W2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgZW5jb2RlciA8PCBwYXltZW50Q29u
dGFjdC5wa0NvbnRhY3QoKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1l
bnRDb250YWN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlBheW1lbnRDb250
YWN0JiBwYXltZW50Q29udGFjdCkKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudENvbnRh
Y3Q+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5
dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRh
UmVmZXJlbmNlLmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRv
bmU6Tk9dKTsKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEo
ZGF0YS5nZXQoKSk7Ci0gICAgQHRyeSB7Ci0gICAgICAgIFBLQ29udGFjdCAqcGtDb250YWN0ID0g
W3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldFBLQ29udGFjdENsYXNzKCkg
Zm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0gICAgICAgIHBheW1lbnRDb250
YWN0ID0gUGF5bWVudENvbnRhY3QocGtDb250YWN0KTsKLSAgICB9IEBjYXRjaCAoTlNFeGNlcHRp
b24gKmV4Y2VwdGlvbikgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgUEtD
b250YWN0OiAlQCIsIGV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Cisg
ICAgYXV0byBjb250YWN0ID0gZGVjb2RlT2JqZWN0PFBLQ29udGFjdD4oZGVjb2RlciwgUEFMOjpn
ZXRQS0NvbnRhY3RDbGFzcygpKTsKKyAgICBpZiAoIWNvbnRhY3QpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107Ci0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIFdlYkNvcmU6OlBheW1lbnRDb250YWN0IHsgV1RGTW92ZSgq
Y29udGFjdCkgfTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRFcnJv
cj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50RXJyb3Im
IGVycm9yKQpAQCAtMTQ2LDYyICsxMTUsMzAgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXlt
ZW50RXJyb3I+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEVycm9yPjo6ZGVjb2QKIAog
dm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lv
biYgcGF5bWVudE1lcmNoYW50U2Vzc2lvbikKIHsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJl
QXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnBheW1lbnRNZXJjaGFudFNl
c3Npb24ucGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9v
dE9iamVjdEtleV07Ci0gICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKLQotICAgIGF1dG8g
ZGF0YSA9IGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhOwotICAgIGVuY29kZXIgPDwgRGF0YVJl
ZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEg
bGVuZ3RoXSk7CisgICAgZW5jb2RlciA8PCBwYXltZW50TWVyY2hhbnRTZXNzaW9uLnBrUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbigpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5
bWVudE1lcmNoYW50U2Vzc2lvbj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQ
YXltZW50TWVyY2hhbnRTZXNzaW9uJiBwYXltZW50TWVyY2hhbnRTZXNzaW9uKQorc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPiBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRv
IGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0
X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhUmVmZXJlbmNlLmRhdGEo
KSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsKLSAgICBh
dXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoZGF0YS5nZXQoKSk7Ci0g
ICAgQHRyeSB7Ci0gICAgICAgIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAqcGtQYXltZW50TWVy
Y2hhbnRTZXNzaW9uID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldFBL
UGF5bWVudE1lcmNoYW50U2Vzc2lvbkNsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9i
amVjdEtleV07Ci0gICAgICAgIHBheW1lbnRNZXJjaGFudFNlc3Npb24gPSBQYXltZW50TWVyY2hh
bnRTZXNzaW9uKHBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbik7Ci0gICAgfSBAY2F0Y2ggKE5TRXhj
ZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2Rl
IFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbjogJUAiLCBleGNlcHRpb24pOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQorICAgIGF1dG8gcGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IGRlY29k
ZU9iamVjdDxQS1BheW1lbnRNZXJjaGFudFNlc3Npb24+KGRlY29kZXIsIFBBTDo6Z2V0UEtQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uQ2xhc3MoKSk7CisgICAgaWYgKCFwYXltZW50TWVyY2hhbnRTZXNz
aW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgW3VuYXJjaGl2ZXIgZmlu
aXNoRGVjb2RpbmddOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBXZWJDb3JlOjpQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uIHsgV1RGTW92ZSgqcGF5bWVudE1lcmNoYW50U2Vzc2lvbikgfTsK
IH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYgcGF5bWVudE1l
dGhvZCkKIHsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKLSAgICBbYXJj
aGl2ZXIgZW5jb2RlT2JqZWN0OnBheW1lbnRNZXRob2QucGtQYXltZW50TWV0aG9kKCkgZm9yS2V5
Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0gICAgW2FyY2hpdmVyIGZpbmlzaEVuY29k
aW5nXTsKLQotICAgIGF1dG8gZGF0YSA9IGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhOwotICAg
IGVuY29kZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2Rh
dGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgZW5jb2RlciA8PCBwYXltZW50TWV0aG9k
LnBrUGF5bWVudE1ldGhvZCgpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5
bWVudE1ldGhvZD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQYXltZW50TWV0
aG9kJiBwYXltZW50TWV0aG9kKQorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWV0aG9k
PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVz
Tm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhUmVm
ZXJlbmNlLmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRvbmU6
Tk9dKTsKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoZGF0
YS5nZXQoKSk7Ci0gICAgQHRyeSB7Ci0gICAgICAgIFBLUGF5bWVudE1ldGhvZCAqcGtQYXltZW50
TWV0aG9kID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldFBLUGF5bWVu
dE1ldGhvZENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0gICAg
ICAgIHBheW1lbnRNZXRob2QgPSBQYXltZW50TWV0aG9kKHBrUGF5bWVudE1ldGhvZCk7Ci0gICAg
fSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVudDogJUAiLCBleGNlcHRpb24pOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQorICAgIGF1dG8gcGF5bWVudE1ldGhvZCA9IGRlY29kZU9iamVjdDxQ
S1BheW1lbnRNZXRob2Q+KGRlY29kZXIsIFBBTDo6Z2V0UEtQYXltZW50TWV0aG9kQ2xhc3MoKSk7
CisgICAgaWYgKCFwYXltZW50TWV0aG9kKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOwotICAgIHJldHVybiB0cnVlOworICAg
IHJldHVybiBQYXltZW50TWV0aG9kIHsgV1RGTW92ZSgqcGF5bWVudE1ldGhvZCkgfTsKIH0KIAog
dm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2RVcGRhdGU+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZSYgdXBk
YXRlKQpAQCAtMjU0LDIwICsxOTEsMjIgQEAgYm9vbCBBcmd1bWVudENvZGVyPEFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEFwcGwKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJlcXVlc3Quc2V0UmVxdWlyZWRCaWxsaW5nQ29udGFjdEZp
ZWxkcyhyZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzKTsKIAotICAgIFBheW1lbnRDb250YWN0
IGJpbGxpbmdDb250YWN0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYmlsbGluZ0NvbnRhY3Qp
KQorICAgIHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbnRhY3Q+IGJpbGxpbmdDb250YWN0OworICAg
IGRlY29kZXIgPj4gYmlsbGluZ0NvbnRhY3Q7CisgICAgaWYgKCFiaWxsaW5nQ29udGFjdCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlcXVlc3Quc2V0QmlsbGluZ0NvbnRhY3QoYmlsbGlu
Z0NvbnRhY3QpOworICAgIHJlcXVlc3Quc2V0QmlsbGluZ0NvbnRhY3QoKmJpbGxpbmdDb250YWN0
KTsKIAogICAgIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpDb250YWN0RmllbGRzIHJl
cXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKHJl
cXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICByZXF1ZXN0LnNldFJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzKHJlcXVpcmVkU2hpcHBp
bmdDb250YWN0RmllbGRzKTsKIAotICAgIFBheW1lbnRDb250YWN0IHNoaXBwaW5nQ29udGFjdDsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoaXBwaW5nQ29udGFjdCkpCisgICAgc3RkOjpvcHRp
b25hbDxQYXltZW50Q29udGFjdD4gc2hpcHBpbmdDb250YWN0OworICAgIGRlY29kZXIgPj4gc2hp
cHBpbmdDb250YWN0OworICAgIGlmICghc2hpcHBpbmdDb250YWN0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmVxdWVzdC5zZXRTaGlwcGluZ0NvbnRhY3Qoc2hpcHBpbmdDb250YWN0KTsK
KyAgICByZXF1ZXN0LnNldFNoaXBwaW5nQ29udGFjdCgqc2hpcHBpbmdDb250YWN0KTsKIAogICAg
IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudENhcGFiaWxpdGllcyBtZXJj
aGFudENhcGFiaWxpdGllczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lcmNoYW50Q2FwYWJp
bGl0aWVzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCAxYzExZmY4
ODU3NzRhZDQyNDQwN2E2MGIxZTc5Y2EwNWNlY2M2ZWZhLi41MTZkNTliNDUwMzBiYTQyY2YzYmU4
NTMwYzBlNjVkOTI3YmJhNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1t
CkBAIC05MjAsMTMgKzkyMCwxMyBAQCBDU3RyaW5nIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpkZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3Bl
IGdyb3VwKHRzKTsKICAgICAgICAgICAgIHRzIDw8IGNyZWF0ZWRMYXllci50eXBlIDw8IiAiIDw8
IGNyZWF0ZWRMYXllci5sYXllcklEOwogICAgICAgICAgICAgc3dpdGNoIChjcmVhdGVkTGF5ZXIu
dHlwZSkgewotICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxh
eWVyTGF5ZXI6CisgICAgICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4
dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CisgICAgICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAg
ICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250
ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKKyAgICAgICAgICAgICAgICBjYXNlIFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgICAgICAgICAgICAg
IHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8
PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgpAQCAt
OTM4LDcgKzkzOCw3IEBAIENTdHJpbmcgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlc2Ny
aXB0aW9uKCkgY29uc3QKICAgICBkdW1wQ2hhbmdlZExheWVycyh0cywgbV9jaGFuZ2VkTGF5ZXJQ
cm9wZXJ0aWVzKTsKIAogICAgIGlmICghbV9kZXN0cm95ZWRMYXllcklEcy5pc0VtcHR5KCkpCi0g
ICAgICAgIHRzLmR1bXBQcm9wZXJ0eTxWZWN0b3I8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXll
cklEPj4oImRlc3Ryb3llZC1sYXllcnMiLCBtX2Rlc3Ryb3llZExheWVySURzKTsKKyAgICAgICAg
dHMuZHVtcFByb3BlcnR5PFZlY3RvcjxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxh
eWVySUQ+PigiZGVzdHJveWVkLWxheWVycyIsIG1fZGVzdHJveWVkTGF5ZXJJRHMpOwogCiAgICAg
aWYgKG1fZWRpdG9yU3RhdGUpIHsKICAgICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBzY29w
ZSh0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmlu
ZGV4IDBkZmI2ZThmMTlkNDIwZTk4N2NjNDg4MDQ5NjcxNGZkODEwZmU5OGUuLjA5MDliNGQxOWNh
MDg5NWM1NDMwNWY1ZjU0Y2RhMGMwNDkzYTg4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC02MDEsNyArNjAxLDcgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiB7CiAK
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD4gewogICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYpOwot
ICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6UGF5bWVudCYpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnQ+IGRlY29kZShEZWNvZGVyJik7
CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRB
dXRob3JpemF0aW9uUmVzdWx0PiB7CkBAIC02MTEsNyArNjExLDcgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4gewog
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250YWN0
PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQYXlt
ZW50Q29udGFjdCYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6
UGF5bWVudENvbnRhY3QmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXlt
ZW50Q29udGFjdD4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEVycm9yPiB7CkBAIC02MjEsMTIgKzYyMSwxMiBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRFcnJvcj4g
ewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJj
aGFudFNlc3Npb24+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
RGVjb2RlciYsIFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQ
YXltZW50TWV0aG9kPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBX
ZWJDb3JlOjpQYXltZW50TWV0aG9kJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UGF5bWVudE1ldGhvZD4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZT4gewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uLm1tCmluZGV4IGYxZTBjM2E2MzU2ZjAzYjI2ODA5YzYzNzJlODhmZjQ1
NWFjMTU5OTcuLjAzNDU1ZTU1NWI3NzI1NmUyNjE2MGExNDFmMGRmYTI1ZjAyNzljNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24ubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgiCiAKLSNpbXBv
cnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ29jb2EuaCIK
ICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9EYXRhRGV0ZWN0b3JzQ29yZVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVk
QXJjaGl2ZXJTUEkuaD4KQEAgLTc2LDEwICs3Niw3IEBAIHZvaWQgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb246OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ZW5jb2RlciA8PCBpc0RhdGFEZXRlY3Rvckxpbms7CiAgICAgaWYgKGlzRGF0YURldGVjdG9yTGlu
aykgewogICAgICAgICBlbmNvZGVyIDw8IGRhdGFEZXRlY3RvcklkZW50aWZpZXI7Ci0gICAgICAg
IGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwotICAgICAgICBbYXJjaGl2ZXIgZW5j
b2RlT2JqZWN0OmRhdGFEZXRlY3RvclJlc3VsdHMuZ2V0KCkgZm9yS2V5OkAiZGF0YURldGVjdG9y
UmVzdWx0cyJdOwotCi0gICAgICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nh
c3Q8Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOworICAgICAgICBlbmNv
ZGVyIDw8IGRhdGFEZXRlY3RvclJlc3VsdHM7CiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKERB
VEFMSVNUX0VMRU1FTlQpCkBAIC0xNzMsMTkgKzE3MCwxMiBAQCBib29sIEludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBJbnRlcmFj
dGlvbgogICAgIGlmIChyZXN1bHQuaXNEYXRhRGV0ZWN0b3JMaW5rKSB7CiAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRhdGFEZXRlY3RvcklkZW50aWZpZXIpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwotICAg
ICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAKLSAgICAgICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNo
aXZlckZyb21EYXRhKChOU0RhdGEgKilkYXRhLmdldCgpKTsKLSAgICAgICAgQHRyeSB7Ci0gICAg
ICAgICAgICByZXN1bHQuZGF0YURldGVjdG9yUmVzdWx0cyA9IFt1bmFyY2hpdmVyIGRlY29kZU9i
amVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aEFycmF5OkBbIFtOU0FycmF5IGNsYXNzXSwgZ2V0
RERTY2FubmVyUmVzdWx0Q2xhc3MoKV0gXSBmb3JLZXk6QCJkYXRhRGV0ZWN0b3JSZXN1bHRzIl07
Ci0gICAgICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgTlNBcnJheSBvZiBERFNjYW5SZXN1bHQ6ICVA
IiwgZXhjZXB0aW9uKTsKKworICAgICAgICBhdXRvIGRhdGFEZXRlY3RvclJlc3VsdHMgPSBJUEM6
OmRlY29kZU9iamVjdDxOU0FycmF5PihkZWNvZGVyLCBAWyBbTlNBcnJheSBjbGFzc10sIGdldERE
U2Nhbm5lclJlc3VsdENsYXNzKCkgXSk7CisgICAgICAgIGlmICghZGF0YURldGVjdG9yUmVzdWx0
cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAg
ICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworCisgICAgICAgIHJlc3VsdC5kYXRhRGV0
ZWN0b3JSZXN1bHRzID0gV1RGTW92ZSgqZGF0YURldGVjdG9yUmVzdWx0cyk7CiAgICAgfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1l
bnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzTWFjLm1tCmluZGV4IDhlMzY5NjUyMzA1NzY4NjhkNDk1ZGRiOTZiODYwMDY5NzJhZTRj
NjYuLmRhZTAzZTg2NWY4MzA4Y2E2MDJkNTVmY2I2ZjJhZWE1ZjAxMWQzN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQpA
QCAtMjgsNiArMjgsNyBAQAogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAKICNp
bXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ29jb2Eu
aCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNh
dGVJbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5o
PgpAQCAtNDMxLDI2ICs0MzIsMTYgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291
cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwKIAogdm9pZCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZT46OmVuY29kZVBsYXRmb3JtRGF0
YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIHNwYWNl
KQogewotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwotICAgIFthcmNoaXZl
ciBlbmNvZGVPYmplY3Q6c3BhY2UubnNTcGFjZSgpIGZvcktleTpAInByb3RlY3Rpb25TcGFjZSJd
OwotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIChfX2JyaWRnZSBDRkRhdGFSZWYpYXJjaGl2ZXIu
Z2V0KCkuZW5jb2RlZERhdGEpOworICAgIGVuY29kZXIgPDwgc3BhY2UubnNTcGFjZSgpOwogfQog
CiBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlPjo6ZGVjb2RlUGxh
dGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYgc3Bh
Y2UpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKLSAgICBpZiAoIUlQQzo6ZGVj
b2RlKGRlY29kZXIsIGRhdGEpKQorICAgIGF1dG8gcGxhdGZvcm1EYXRhID0gZGVjb2RlT2JqZWN0
PE5TVVJMUHJvdGVjdGlvblNwYWNlPihkZWNvZGVyKTsKKyAgICBpZiAoIXBsYXRmb3JtRGF0YSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5h
cmNoaXZlckZyb21EYXRhKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKLSAgICBAdHJ5
IHsKLSAgICAgICAgaWYgKFJldGFpblB0cjxOU1VSTFByb3RlY3Rpb25TcGFjZT4gbnNTcGFjZSA9
IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TVVJMUHJvdGVjdGlvblNwYWNlIGNs
YXNzXSBmb3JLZXk6QCJwcm90ZWN0aW9uU3BhY2UiXSkKLSAgICAgICAgICAgIHNwYWNlID0gV2Vi
Q29yZTo6UHJvdGVjdGlvblNwYWNlKG5zU3BhY2UuZ2V0KCkpOwotICAgIH0gQGNhdGNoIChOU0V4
Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29k
ZSBOU1VSTFByb3RlY3Rpb25TcGFjZTogJUAiLCBleGNlcHRpb24pOwotICAgIH0KLQotICAgIFt1
bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICBzcGFjZSA9IFdlYkNvcmU6OlByb3RlY3Rp
b25TcGFjZSB7IHBsYXRmb3JtRGF0YS0+Z2V0KCkgfTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtNDc0LDEwICs0NjUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q3JlZGVudGlh
bD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjbwogICAgIH0KIAogICAg
IGVuY29kZXIgPDwgZmFsc2U7Ci0KLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIo
KTsKLSAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0Om5zQ3JlZGVudGlhbCBmb3JLZXk6QCJjcmVk
ZW50aWFsIl07Ci0gICAgSVBDOjplbmNvZGUoZW5jb2RlciwgKF9fYnJpZGdlIENGRGF0YVJlZilh
cmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CisgICAgZW5jb2RlciA8PCBuc0NyZWRlbnRpYWw7
CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDcmVkZW50aWFsPjo6ZGVjb2RlUGxh
dGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRp
YWwpCkBAIC01MDksMTkgKzQ5NywxMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q3Jl
ZGVudGlhbD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBXZQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwot
ICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCisgICAgYXV0byBuc0NyZWRlbnRp
YWwgPSBkZWNvZGVPYmplY3Q8TlNVUkxDcmVkZW50aWFsPihkZWNvZGVyKTsKKyAgICBpZiAoIW5z
Q3JlZGVudGlhbCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB1bmFyY2hpdmVy
ID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgp
KTsKLSAgICBAdHJ5IHsKLSAgICAgICAgaWYgKFJldGFpblB0cjxOU1VSTENyZWRlbnRpYWw+IG5z
Q3JlZGVudGlhbCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TVVJMQ3JlZGVu
dGlhbCBjbGFzc10gZm9yS2V5OkAiY3JlZGVudGlhbCJdKQotICAgICAgICAgICAgY3JlZGVudGlh
bCA9IFdlYkNvcmU6OkNyZWRlbnRpYWwobnNDcmVkZW50aWFsLmdldCgpKTsKLSAgICB9IEBjYXRj
aCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBkZWNvZGUgTlNVUkxDcmVkZW50aWFsOiAlQCIsIGV4Y2VwdGlvbik7Ci0gICAgfQotCi0gICAg
W3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAgIGNyZWRlbnRpYWwgPSBXZWJDb3JlOjpD
cmVkZW50aWFsIHsgbnNDcmVkZW50aWFsLT5nZXQoKSB9OwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC01OTgsMjAgKzU3OCwxMCBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZQogCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIAotc3RhdGljIE5TU3RyaW5nICpkZXZpY2VD
b250ZXh0S2V5KCkKLXsKLSAgICBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBrZXkgPSBAImRldmlj
ZUNvbnRleHQiOwotICAgIHJldHVybiBrZXk7Ci19Ci0KIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYg
dGFyZ2V0KQogewotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwotCiAgICAg
aWYgKFtnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9j
b2woTlNTZWN1cmVDb2RpbmcpXSkKLSAgICAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDp0YXJn
ZXQuYXZPdXRwdXRDb250ZXh0KCkgZm9yS2V5OmRldmljZUNvbnRleHRLZXkoKV07Ci0KLSAgICBJ
UEM6OmVuY29kZShlbmNvZGVyLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKWFyY2hpdmVyLmdldCgpLmVu
Y29kZWREYXRhKTsKKyAgICAgICAgZW5jb2RlciA8PCB0YXJnZXQuYXZPdXRwdXRDb250ZXh0KCk7
CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0KQpAQCAtNjE5LDIzICs1ODksMTEgQEAgYm9v
bCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKERlY28KICAgICBpZiAoIVtnZXRBVk91dHB1dENvbnRleHRDbGFzcygp
IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKLSAgICBpZiAo
IUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoKF9fYnJpZGdlIE5T
RGF0YSAqKWRhdGEuZ2V0KCkpOwotCi0gICAgQVZPdXRwdXRDb250ZXh0ICpjb250ZXh0ID0gbmls
OwotICAgIEB0cnkgewotICAgICAgICBjb250ZXh0ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0
T2ZDbGFzczpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGZvcktleTpkZXZpY2VDb250ZXh0S2V5
KCldOwotICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIExP
R19FUlJPUigiVGhlIHRhcmdldCBwaWNrZXIgYmVpbmcgZGVjb2RlZCBpcyBub3QgYW4gQVZPdXRw
dXRDb250ZXh0LiIpOworICAgIGF1dG8gY29udGV4dCA9IGRlY29kZU9iamVjdDxBVk91dHB1dENv
bnRleHQ+KGRlY29kZXIsIGdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkpOworICAgIGlmICghY29u
dGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAotICAgIHRhcmdldCA9IFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KGNvbnRleHQpOwotICAgIAotICAgIFt1bmFy
Y2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICB0YXJnZXQgPSBXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dCB7IGNvbnRleHQtPmdldCgpIH07CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0
RGF0YS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5t
bQppbmRleCA1ODhjNWU1MThhMjQ5N2YzNThmNGI4MmNiYWFjOTQxOGQ5YWQxMGMwLi5mOTE3MjJm
NjVkMWE3NTE5ZWZlYmQ4YmQwMDQ3MDdmNjM0ODFiZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL1dlYkhpdFRlc3RSZXN1bHREYXRhLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsMTAgKzQ1LDcgQEAg
dm9pZCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6cGxhdGZvcm1FbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGlmICghaGFzQWN0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7Ci0gICAgW2FyY2hpdmVy
IGVuY29kZU9iamVjdDpkZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0LmdldCgpIGZvcktleTpAImFj
dGlvbkNvbnRleHQiXTsKLQotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIChfX2JyaWRnZSBDRkRh
dGFSZWYpYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGEpOworICAgIGVuY29kZXIgPDwgZGV0ZWN0
ZWREYXRhQWN0aW9uQ29udGV4dDsKIAogICAgIGVuY29kZXIgPDwgZGV0ZWN0ZWREYXRhQm91bmRp
bmdCb3g7CiAgICAgZW5jb2RlciA8PCBkZXRlY3RlZERhdGFPcmlnaW5hdGluZ1BhZ2VPdmVybGF5
OwpAQCAtNjgsMjAgKzY1LDEyIEBAIGJvb2wgV2ViSGl0VGVzdFJlc3VsdERhdGE6OnBsYXRmb3Jt
RGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViSGl0VGVzdFJlc3VsCiAgICAgaWYgKCFo
YXNBY3Rpb25Db250ZXh0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBBU1NFUlQoRGF0YURl
dGVjdG9yc0xpYnJhcnkoKSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwotICAg
IGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCisgICAgCisgICAgYXV0byBkZXRlY3Rl
ZERhdGFBY3Rpb25Db250ZXh0ID0gZGVjb2RlT2JqZWN0PEREQWN0aW9uQ29udGV4dD4oZGVjb2Rl
ciwgZ2V0RERBY3Rpb25Db250ZXh0Q2xhc3MoKSk7CisgICAgaWYgKCFkZXRlY3RlZERhdGFBY3Rp
b25Db250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHVuYXJjaGl2ZXIg
PSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkp
OwotICAgIEB0cnkgewotICAgICAgICBoaXRUZXN0UmVzdWx0RGF0YS5kZXRlY3RlZERhdGFBY3Rp
b25Db250ZXh0ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXREREFjdGlvbkNv
bnRleHRDbGFzcygpIGZvcktleTpAImFjdGlvbkNvbnRleHQiXTsKLSAgICB9IEBjYXRjaCAoTlNF
eGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNv
ZGUgRERBY3Rpb25Db250ZXh0OiAlQCIsIGV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgCi0gICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAgIGhp
dFRlc3RSZXN1bHREYXRhLmRldGVjdGVkRGF0YUFjdGlvbkNvbnRleHQgPSBXVEZNb3ZlKCpkZXRl
Y3RlZERhdGFBY3Rpb25Db250ZXh0KTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGl0VGVz
dFJlc3VsdERhdGEuZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3gpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNmFjOGZlYzE2Y2U5MmViZmE3MTZkZTMyYmEw
NDU3OWFmZDIzNzU3Zi4uODY0M2RhZTZiZTQzNmI4ZWZjZjc5YzEwMTUwOGYyNTY1YjQyYTMxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMTIyLDYgKzEyMiw3IEBAIFNoYXJlZC9BdXRoZW50
aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbQogCiBTaGFyZWQvQ29j
b2EvQVBJRGF0YUNvY29hLm1tCiBTaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCitTaGFyZWQvQ29j
b2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQogU2hhcmVkL0NvY29hL0NoaWxkUHJvY2Vzc0NvY29h
Lm1tCiBTaGFyZWQvQ29jb2EvQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5tbQogU2hhcmVk
L0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI4MTkwNjkzZDNhM2ZlZmZlYjBlZWNiNjVi
NmYzNGEyYjg5NDk0YjMuLjYxZDk0ODFmNTMyY2U3OTQzY2M5ZTY3NDYwYjJiYjgwMjJjMzc2Zjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTI2NSw2ICsxMjY1LDcgQEAKIAkJQTEzQjNEQTIyMDdGMzlERTAwOTBDNThEIC8qIE1vYmls
ZVdpRmlTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExM0IzREExMjA3RjM5REUwMDkwQzU4RCAvKiBNb2JpbGVXaUZpU1BJLmggKi87IH07CiAJCUEx
M0RDNjgyMjA3QUE2QjIwMDY2RUY3MiAvKiBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExM0RDNjgw
MjA3QUE2QjIwMDY2RUY3MiAvKiBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcuaCAqLzsg
fTsKIAkJQTE1RUVERTYxRTMwMUNFRTAwMDA2OUIwIC8qIFdLUGFzc3dvcmRWaWV3LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTVFRURFNDFFMzAxQ0VF
MDAwMDY5QjAgLyogV0tQYXNzd29yZFZpZXcuaCAqLzsgfTsKKwkJQTE3NUM0NEEyMUFBMzE3MTAw
MDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzVDNDQ5MjFBQTMxNzAwMDAwMzdEMCAvKiBBcmd1bWVu
dENvZGVyc0NvY29hLmggKi87IH07CiAJCUExODJENUI1MUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nl
c3NpYmlsaXR5SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTgyRDVCMzFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5oICovOyB9
OwogCQlBMTlERDNDMDFEMDdEMTY4MDBBQzgyM0IgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVy
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExOUREM0JGMUQwN0QxNjgwMEFDODIzQiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRl
cm5hbC5oICovOyB9OwogCQlBMUE0RkU1QTE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQTRGRTU3
MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zODE5LDYgKzM4MjAsOCBAQAogCQlBMTNEQzY4
MTIwN0FBNkIyMDA2NkVGNzIgLyogV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tOyBw
YXRoID0gaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTE1RUVERTMxRTMwMUNFRTAwMDA2OUIwIC8qIFdLUGFzc3dvcmRW
aWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tQYXNzd29y
ZFZpZXcubW07IHBhdGggPSBpb3MvV0tQYXNzd29yZFZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExNUVFREU0MUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1Bhc3N3b3JkVmlldy5oOyBwYXRo
ID0gaW9zL1dLUGFzc3dvcmRWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEx
NzVDNDQ5MjFBQTMxNzAwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFyZ3VtZW50Q29kZXJzQ29jb2EuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3NUM0NEIyMUFBMzMxQjAwMDAzN0QwIC8qIEFyZ3VtZW50
Q29kZXJzQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcmd1bWVudENvZGVyc0NvY29h
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTgyRDVCMjFCRTZCRDI1MDA4N0E3
Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExODJENUIzMUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJT1MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE5REQzQkYxRDA3RDE2ODAwQUM4MjNCIC8qIF9XS1dlYlZp
ZXdQcmludEZvcm1hdHRlckludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS1dlYlZpZXdQcmludEZvcm1hdHRlckludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02MTcwLDYgKzYxNzMsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMUEx
RUYxOTcxQTFENUI0MjAwMjMyMDBBIC8qIEFQSURhdGFDb2NvYS5tbSAqLywKIAkJCQkzNzhFMUEz
QjE4MUVENkZGMDAzMTAwN0EgLyogQVBJT2JqZWN0Lm1tICovLAorCQkJCUExNzVDNDQ5MjFBQTMx
NzAwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLmggKi8sCisJCQkJQTE3NUM0NEIyMUFB
MzMxQjAwMDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EubW0gKi8sCiAJCQkJMUE2OThGMTcx
RTQ5MTAyMjAwNjRFODgxIC8qIENoaWxkUHJvY2Vzc0NvY29hLm1tICovLAogCQkJCTM3QkVDNERG
MTk0OTE0ODYwMDhCNDI4NiAvKiBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmggKi8sCiAJ
CQkJMzdCRUM0REUxOTQ5MTQ4NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNr
ZXIubW0gKi8sCkBAIC04ODc1LDcgKzg4ODAsNiBAQAogCQkJCTdBOEE5RDVBMUVGMTMwMjkwMDk4
MDFBRSAvKiBBUElJbmplY3RlZEJ1bmRsZUJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0E4QTlENTgxRUYxMTlCMDAwOTgwMUFFIC8qIEFQSUluamVjdGVkQnVuZGxlQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzNzc1MTIzMTFERjBERUUyMDA4QTM1MUMgLyogQVBJSW5qZWN0
ZWRCdW5kbGVFZGl0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0RTU3RjZCMjFBODNC
MTIwMDM0NUYzQyAvKiBSZW1vdGVMYXllclRyZWVOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
NzY5MDc5RTE4RjM0MEEyMDAxREZGMDQgLyogQVBJSW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QTNBQ0UxQjFFRUVGNzlCMDBBODY0QTQgLyogQVBJSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QThBOUQ1QzFF
RjE0NTk4MDA5ODAxQUUgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKQEAgLTg5MTYsNiArODkyMCw3IEBACiAJCQkJMUFFRkQyNzkxMUQx
NkM4MTAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUZE
MkY3MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFBRjBDNEExMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJzQ0YuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0Nv
Y29hLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTc5RkQ5QzEzNEQzODA2MDAxNUI4ODMgLyogQXJn
dW1lbnRDb2RlcnNNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMUEwQkQyMUE0OEU2QzYwMDU0
RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU5QzRB
NTkxOEI4MTE3NDAwN0JEQ0I2IC8qIEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmggaW4gSGVhZGVy
cyAqLywKQEAgLTkyMTcsNiArOTIyMiw3IEBACiAJCQkJMUFCMTZBRTIxNjQ4NjU2RDAwMjkwRDYy
IC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRjI0QTJFMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTNENzVDMTY1MUI0NEYwMDg3MTNE
MCAvKiBSZW1vdGVMYXllclRyZWVIb3N0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEU1N0Y2QjIx
QTgzQjEyMDAzNDVGM0MgLyogUmVtb3RlTGF5ZXJUcmVlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkRERTBBRkExODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBw
bGllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGMjY0QTAxQTFGRjlDQzAwMUZFNzU5IC8qIFJl
bW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFGMUFDNkMxNjUxNzU5RTAwQzE3RDdGIC8qIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
LmggaW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355571</attachid>
            <date>2018-11-24 18:41:20 -0800</date>
            <delta_ts>2018-11-24 19:14:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191948-20181124184110.patch</filename>
            <type>text/plain</type>
            <size>47162</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ4M2MyN2FkZDk4OWI2
ZjBlNmFlNDM2NDU4M2RmNDUyNWI4NmIyYi4uZTgyZWYxZTk0YjNmNGU5OWQ1ZGI3YTllYTQ3Zjgy
MmRhZTRlMjcyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTExLTI0ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIE1ha2UgaXQgZWFz
aWVyIHRvIGVuY29kZSBOU09iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MTk0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxl
cy9hcHBsZXBheS9QYXltZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
Q29udGFjdC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vz
c2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbjo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbik6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0
aG9kLmg6CisKIDIwMTgtMTEtMjQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgW0NvY29hXSBGaXggYSBmZXcgbG9jYWxpemFibGUgc3RyaW5nIGRlc2Ny
aXB0aW9ucyBpbiBXZWJFZGl0Q29tbWFuZFByb3h5LmNwcCBhbmQgV2ViRWRpdG9yQ2xpZW50Lm1t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwppbmRleCA4NDk0ZjI3NDYwNWRlMDYyMDY2ODFkZTc3YTJmMzliNWM2
M2FmY2Q2Li5mYjk0MWNhZWJhMDY5MDAyOWYyMTFhOTVkNTQ2MWY0OGRlYTlmMWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOC0xMS0yNCAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBNYWtlIGl0IGVhc2llciB0byBlbmNv
ZGUgTlNPYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTE5NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oOgorCiAyMDE4LTExLTI0ICBBbmR5IEVz
dGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFNPRlRfTElOS19DTEFT
U19GT1Jfe0hFQURFUixTT1VSQ0V9IHNob3VsZCBnZW5lcmF0ZSBhIG1vcmUgY29uY2lzZSBnZXR0
ZXIgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNWU1MzI1YzAzZDIzNzQwZTcxNmZiZjUyYTViMGMzZTBi
ZGFmZGI2Yy4uMzljMDcxOTUzZmJkM2U2YjRlZTdiNTRmYjc0ZTY2OTU1MDU2N2VmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1MyBAQAorMjAxOC0xMS0yNCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBs
ZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBNYWtlIGl0IGVhc2llciB0byBlbmNvZGUgTlNPYmpl
Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE5
NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNo
YXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpk
ZWNvZGVPYmplY3QpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFQ6OmVuY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPFQ+Pjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8VD4+OjpkZWNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tLgorICAgICAgICAoSVBD
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db2Nv
YS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL0RhdGFEZXRl
Y3Rpb25SZXN1bHQubW06CisgICAgICAgIChXZWJLaXQ6OkRhdGFEZXRlY3Rpb25SZXN1bHQ6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFEZXRlY3Rpb25SZXN1bHQ6OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjplbmNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0
aW9uUmVzdWx0Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpQYXltZW50Q29udGFjdD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+OjplbmNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+Ojpk
ZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRo
b2Q+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1l
bnRNZXRob2Q+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24gY29uc3QpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvaW9z
L0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmRlY29kZSk6CisgICAg
ICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlPjo6ZW5jb2RlUGxhdGZv
cm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQcm90ZWN0aW9u
U3BhY2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkNyZWRlbnRpYWw+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNyZWRlbnRpYWw+OjpkZWNvZGVQbGF0Zm9ybURhdGEp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZVBsYXRmb3Jt
RGF0YSk6CisgICAgICAgIChJUEM6OmRldmljZUNvbnRleHRLZXkpOiBEZWxldGVkLgorICAgICAg
ICAqIFNoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW06CisgICAgICAgIChXZWJLaXQ6
OldlYkhpdFRlc3RSZXN1bHREYXRhOjpwbGF0Zm9ybUVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjpwbGF0Zm9ybURlY29kZSk6CisgICAgICAgICog
U291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKwogMjAxOC0xMS0yNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIEZpeCBhIGZldyBsb2NhbGl6YWJsZSBzdHJpbmcgZGVzY3Jp
cHRpb25zIGluIFdlYkVkaXRDb21tYW5kUHJveHkuY3BwIGFuZCBXZWJFZGl0b3JDbGllbnQubW0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50LmgKaW5kZXggODVmNjdiZWRm
MmVkN2UwZTQ4MGM0NWNhMWY3YjZlZGU3YWU2OWIxZi4uOGNjZDIxMDk0NTA2OGQxNzM0MzczOTg4
NDNmNzRmYTEwNDBkNmU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzgsOSArMzgsOCBAQCBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50OwogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgUGF5bWVudCB7CiBwdWJsaWM6CiAgICAgUGF5bWVudCgpID0gZGVmYXVsdDsKLQot
ICAgIGV4cGxpY2l0IFBheW1lbnQoUEtQYXltZW50ICpwa1BheW1lbnQpCi0gICAgICAgIDogbV9w
a1BheW1lbnQocGtQYXltZW50KQorICAgIGV4cGxpY2l0IFBheW1lbnQoUmV0YWluUHRyPFBLUGF5
bWVudD4mJiBwa1BheW1lbnQpCisgICAgICAgIDogbV9wa1BheW1lbnQgeyBXVEZNb3ZlKHBrUGF5
bWVudCkgfQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudENvbnRhY3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudENvbnRhY3QuaAppbmRleCBkMDQxMmQxZGVkYTYxYjdiZjRjNWQ2OTI3YWIw
NjgxOWI5NjJkMzIxLi5jMjZkN2QzYTcyMjIyZWNhMGFmYzZlMTE2ZTBlOWFkMjVmMTFiNzVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb250YWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29udGFjdC5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzksOCArMzksOCBAQCBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50Q29udGFjdDsKIGNsYXNz
IFdFQkNPUkVfRVhQT1JUIFBheW1lbnRDb250YWN0IHsKIHB1YmxpYzoKICAgICBQYXltZW50Q29u
dGFjdCgpID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBQYXltZW50Q29udGFjdChQS0NvbnRhY3Qg
KnBrQ29udGFjdCkKLSAgICAgICAgOiBtX3BrQ29udGFjdChwa0NvbnRhY3QpCisgICAgZXhwbGlj
aXQgUGF5bWVudENvbnRhY3QoUmV0YWluUHRyPFBLQ29udGFjdD4mJiBwa0NvbnRhY3QpCisgICAg
ICAgIDogbV9wa0NvbnRhY3QgeyBXVEZNb3ZlKHBrQ29udGFjdCkgfQogICAgIHsKICAgICB9CiAg
ICAgdmlydHVhbCB+UGF5bWVudENvbnRhY3QoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXJjaGFudFNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oCmlu
ZGV4IDdlZDZiMjE1NzMwNmVlYmQwN2U1MTE2MThjNDM0NDc5YzU1NDM2ZTcuLmRhYTc0OTU0OWY1
M2Y1ZGEzZDM2NmQ1ZTYwODM5YTI4ODA2M2IzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDggKzQy
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbiB7
CiBwdWJsaWM6CiAgICAgUGF5bWVudE1lcmNoYW50U2Vzc2lvbigpID0gZGVmYXVsdDsKLSAgICBl
eHBsaWNpdCBQYXltZW50TWVyY2hhbnRTZXNzaW9uKFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAq
cGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKQotICAgICAgICA6IG1fcGtQYXltZW50TWVyY2hhbnRT
ZXNzaW9uKHBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbikKKyAgICBleHBsaWNpdCBQYXltZW50TWVy
Y2hhbnRTZXNzaW9uKFJldGFpblB0cjxQS1BheW1lbnRNZXJjaGFudFNlc3Npb24+JiYgcGtQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uKQorICAgICAgICA6IG1fcGtQYXltZW50TWVyY2hhbnRTZXNzaW9u
IHsgV1RGTW92ZShwa1BheW1lbnRNZXJjaGFudFNlc3Npb24pIH0KICAgICB7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXRob2Qu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZC5oCmluZGV4
IDljZTdiYWE3OTQzYWJkMmRkZmYxMzFiNDQzMDk3YTJhYTA0YjEyMTUuLjc4ODdkY2M3NDgzNmM2
YjU2ODY1MDBjZTY5ZTk3OGJiOTA5ZjZmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDggKzQwLDggQEAgcHVibGljOgogICAgIFBh
eW1lbnRNZXRob2QoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+UGF5bWVudE1ldGhvZCgpID0g
ZGVmYXVsdDsKIAotICAgIGV4cGxpY2l0IFBheW1lbnRNZXRob2QoUEtQYXltZW50TWV0aG9kICpw
a1BheW1lbnRNZXRob2QpCi0gICAgICAgIDogbV9wa1BheW1lbnRNZXRob2QocGtQYXltZW50TWV0
aG9kKQorICAgIGV4cGxpY2l0IFBheW1lbnRNZXRob2QoUmV0YWluUHRyPFBLUGF5bWVudE1ldGhv
ZD4mJiBwa1BheW1lbnRNZXRob2QpCisgICAgICAgIDogbV9wa1BheW1lbnRNZXRob2QgeyBXVEZN
b3ZlKHBrUGF5bWVudE1ldGhvZCkgfQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaAppbmRleCAzY2EzOWZhOTZmZmFjNTA2YmQw
MDAzOTg1ZDZhODYzM2E5NmZiY2Y4Li4xODk1OGU5MjYxNGMxZTNiNmE0ZjA0YTY4YWQxNDMzYWIx
OTcxODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNz
S2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQ
SS5oCkBAIC0zMjcsMTAgKzMyNywxOSBAQCB2b2lkIFBLRHJhd0FwcGxlUGF5QnV0dG9uKF9Ob25u
dWxsIENHQ29udGV4dFJlZiwgQ0dSZWN0IGRyYXdSZWN0LCBDR0Zsb2F0IHNjYWxlLAogCiBOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgogCitAaW50ZXJmYWNlIFBLQ29udGFjdCAoKSA8TlNTZWN1cmVD
b2Rpbmc+CitAZW5kCisKIEBpbnRlcmZhY2UgUEtQYXNzTGlicmFyeSAoKQogLSAodm9pZClvcGVu
UGF5bWVudFNldHVwRm9yTWVyY2hhbnRJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIg
ZG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBjb21wbGV0aW9uOih2b2lkKF4pKEJPT0wgc3VjY2Vz
cykpY29tcGxldGlvbjsKIEBlbmQKIAorQGludGVyZmFjZSBQS1BheW1lbnQgKCkgPE5TU2VjdXJl
Q29kaW5nPgorQGVuZAorCitAaW50ZXJmYWNlIFBLUGF5bWVudE1ldGhvZCAoKSA8TlNTZWN1cmVD
b2Rpbmc+CitAZW5kCisKIEBpbnRlcmZhY2UgUEtQYXltZW50UmVxdWVzdCAoKQogQHByb3BlcnR5
IChub25hdG9taWMsIHN0cm9uZykgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllcjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIE5TU3RyaW5nICpzb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ0Njk1NzlhMDBkMjcw
YWQyYjU0NGUyOGFkZTUxZTI2YTVmZjE1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EuaApAQCAtMCwwICsxLDg0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiQXJndW1lbnRDb2RlcnMuaCIKKworI2lmIFBMQVRGT1JNKENP
Q09BKQorCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBJUEMgeworCit2
b2lkIGVuY29kZShFbmNvZGVyJiwgaWQgPE5TU2VjdXJlQ29kaW5nPik7CitzdGQ6Om9wdGlvbmFs
PFJldGFpblB0cjxpZCA8TlNTZWN1cmVDb2Rpbmc+Pj4gZGVjb2RlKERlY29kZXImLCBOU0FycmF5
PENsYXNzPiAqYWxsb3dlZENsYXNzZXMpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RkOjpv
cHRpb25hbDxSZXRhaW5QdHI8VD4+IGRlY29kZU9iamVjdChEZWNvZGVyJiBkZWNvZGVyLCBOU0Fy
cmF5PENsYXNzPiAqYWxsb3dlZENsYXNzZXMgPSBAWyBbVCBjbGFzc10gXSkKK3sKKyAgICBhdXRv
IHJlc3VsdCA9IGRlY29kZShkZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcyk7CisgICAgaWYgKCFyZXN1
bHQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoISpyZXN1bHQpCisg
ICAgICAgIHJldHVybiB7IG51bGxwdHIgfTsKKworICAgIGlkIG9iamVjdCA9IHJlc3VsdC0+bGVh
a1JlZigpOworICAgIEFTU0VSVChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6YWxsb3dlZENsYXNzZXNb
MF1dKTsKKyAgICByZXR1cm4geyBhZG9wdE5TKChUICopb2JqZWN0KSB9OworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8VD4+IGRlY29kZU9iamVjdChE
ZWNvZGVyJiBkZWNvZGVyLCBDbGFzcyBhbGxvd2VkQ2xhc3MpCit7CisgICAgcmV0dXJuIGRlY29k
ZU9iamVjdDxUPihkZWNvZGVyLCBAWyBhbGxvd2VkQ2xhc3MgXSk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHVzaW5nIENvbmZvcm1zVG9TZWN1cmVDb2RpbmcgPSBzdGQ6OmlzX2NvbnZlcnRp
YmxlPFQgKiwgaWQgPE5TU2VjdXJlQ29kaW5nPj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFQgKj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBULCBz
dGQ6OmVuYWJsZV9pZl90PENvbmZvcm1zVG9TZWN1cmVDb2Rpbmc8VT46OnZhbHVlPiogPSBudWxs
cHRyPgorICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBVICpvYmplY3Qp
CisgICAgeworICAgICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCBvYmplY3QpOworICAgIH0KK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJldGFpblB0cjxU
Pj4geworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVID0gVCwgc3RkOjplbmFibGVfaWZfdDxDb25m
b3Jtc1RvU2VjdXJlQ29kaW5nPFU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmV0YWluUHRyPFU+JiBvYmplY3QpCisg
ICAgeworICAgICAgICBBcmd1bWVudENvZGVyPFUgKj46OmVuY29kZShlbmNvZGVyLCBvYmplY3Qu
Z2V0KCkpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVID0gVCwgc3RkOjplbmFi
bGVfaWZfdDxDb25mb3Jtc1RvU2VjdXJlQ29kaW5nPFU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8VT4+IGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRlY29kZU9iamVjdDxVPihkZWNvZGVyKTsKKyAg
ICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKKworI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09B
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnND
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmE0ZjYyYTg5NGZhOWZjMTJhZWI0YjQ3NTI0NjRlMmRiZDYwZTFjOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29k
ZXJzQ29jb2EubW0KQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiQXJndW1lbnRDb2RlcnNDb2NvYS5oIgorCisjaWYgUExBVEZPUk0oQ09D
T0EpCisKKyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CisKK25hbWVzcGFjZSBJUEMgeworCit2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBpZCA8TlNTZWN1cmVDb2Rpbmc+IG9iamVjdCkKK3sKKyAgICBh
dXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyAgICBbYXJjaGl2ZXIgZW5jb2RlT2Jq
ZWN0Om9iamVjdCBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKKyAgICBbYXJj
aGl2ZXIgZmluaXNoRW5jb2RpbmddOworCisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgKF9fYnJp
ZGdlIENGRGF0YVJlZilbYXJjaGl2ZXIgZW5jb2RlZERhdGFdKTsKK30KKworc3RkOjpvcHRpb25h
bDxSZXRhaW5QdHI8aWQgPE5TU2VjdXJlQ29kaW5nPj4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsYXNzZXMpCit7CisgICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gZGF0YTsKKyAgICBpZiAoIWRlY29kZShkZWNvZGVyLCBkYXRhKSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2
ZXJGcm9tRGF0YSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CisgICAgQHRyeSB7Cisg
ICAgICAgIGlkIHJlc3VsdCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczpbTlNT
ZXQgc2V0V2l0aEFycmF5OmFsbG93ZWRDbGFzc2VzXSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290
T2JqZWN0S2V5XTsKKyAgICAgICAgQVNTRVJUKFtyZXN1bHQgY29uZm9ybXNUb1Byb3RvY29sOkBw
cm90b2NvbChOU1NlY3VyZUNvZGluZyldKTsKKyAgICAgICAgcmV0dXJuIHsgcmVzdWx0IH07Cisg
ICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gZGVjb2RlIG9iamVjdCBvZiBjbGFzc2VzICVAOiAlQCIsIGFsbG93ZWRDbGFz
c2VzLCBleGNlcHRpb24pOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0gQGZp
bmFsbHkgeworICAgICAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgfQorfQor
Cit9IC8vIG5hbWVzcGFjZSBJUEMKKworI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5oCmluZGV4IGEw
ODg4ZjkxODk2YjQ5NWRhODJmOTcwYjg2YWQ1MTBjZjVhZDNjZWYuLjJjOTliNGJkZWQ4N2NkNzc2
Njc2YTdkYWIyNzY1Yzc1OGNjZWVlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0RhdGFEZXRlY3Rpb25SZXN1bHQubW0KaW5kZXggZGFmZWQ5ZjA1YjdjYmEzNTFmMTdjZmQ4ZWYz
MDdhMzU5MDkxZjY3Zi4uZjFhOTBiNWI0OGMzNjlmMGZjM2FhMzVjNTE4YTY3NWYzMjhlZjZhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3Vs
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0
Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEYXRh
RGV0ZWN0aW9uUmVzdWx0LmgiCiAKLSNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKyNpbXBv
cnQgIkFyZ3VtZW50Q29kZXJzQ29jb2EuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNQSS5oPgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KQEAgLTQxLDI3ICs0MSwx
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBEYXRhRGV0ZWN0aW9uUmVzdWx0OjplbmNv
ZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGF1dG8gYXJjaGl2ZXIgPSBz
ZWN1cmVBcmNoaXZlcigpOwotICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cmVzdWx0cy5nZXQo
KSBmb3JLZXk6QCJkYXRhRGV0ZWN0b3JSZXN1bHRzIl07Ci0gICAgSVBDOjplbmNvZGUoZW5jb2Rl
ciwgKF9fYnJpZGdlIENGRGF0YVJlZilhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CisgICAg
ZW5jb2RlciA8PCByZXN1bHRzOwogfQogCiBzdGQ6Om9wdGlvbmFsPERhdGFEZXRlY3Rpb25SZXN1
bHQ+IERhdGFEZXRlY3Rpb25SZXN1bHQ6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKLSAgICBpZiAoIUlQQzo6ZGVjb2RlKGRl
Y29kZXIsIGRhdGEpKQorICAgIGF1dG8gcmVzdWx0cyA9IElQQzo6ZGVjb2RlT2JqZWN0PE5TQXJy
YXk+KGRlY29kZXIsIEBbIFtOU0FycmF5IGNsYXNzXSwgZ2V0RERTY2FubmVyUmVzdWx0Q2xhc3Mo
KSBdKTsKKyAgICBpZiAoIXJlc3VsdHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBEYXRhRGV0ZWN0aW9uUmVzdWx0IHJlc3VsdDsKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBz
ZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwot
ICAgIEB0cnkgewotICAgICAgICByZXN1bHQucmVzdWx0cyA9IFt1bmFyY2hpdmVyIGRlY29kZU9i
amVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aEFycmF5OkBbIFtOU0FycmF5IGNsYXNzXSwgZ2V0
RERTY2FubmVyUmVzdWx0Q2xhc3MoKV0gXSBmb3JLZXk6QCJkYXRhRGV0ZWN0b3JSZXN1bHRzIl07
Ci0gICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gZGVjb2RlIE5TQXJyYXkgb2YgRERTY2FuUmVzdWx0OiAlQCIsIGV4Y2Vw
dGlvbik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotICAgIAotICAgIFt1
bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICByZXN1bHQucmVzdWx0cyA9IFdURk1vdmUo
KnJlc3VsdHMpOwogICAgIHJldHVybiB7IFdURk1vdmUocmVzdWx0KSB9OwogfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tCmluZGV4IDE2NDlkMmVjODE4YWQ4Y2RiNDQ4NGZjNGQ2MzNjODEyNmI4Nzg0
ZjAuLmUwMTM1YmQwM2U0YTY3NzZhMDJjZjkxMjVkYjQ1M2E4MmUyYWI5MTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAorI2lt
cG9ydCAiQXJndW1lbnRDb2RlcnNDb2NvYS5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgog
I2ltcG9ydCA8V2ViQ29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgogI2ltcG9ydCA8
cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgpAQCAtMzgsMzIgKzM5LDE2IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50JiBwYXltZW50
KQogewotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwotICAgIFthcmNoaXZl
ciBlbmNvZGVPYmplY3Q6cGF5bWVudC5wa1BheW1lbnQoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVS
b290T2JqZWN0S2V5XTsKLSAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwotCi0gICAgYXV0
byBkYXRhID0gYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGE7Ci0gICAgZW5jb2RlciA8PCBEYXRh
UmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0
YSBsZW5ndGhdKTsKKyAgICBlbmNvZGVyIDw8IHBheW1lbnQucGtQYXltZW50KCk7CiB9CiAKLWJv
b2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Pjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIFdlYkNvcmU6OlBheW1lbnQmIHBheW1lbnQpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBh
eW1lbnQ+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNO
b0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZl
cmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpO
T10pOwotICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRh
LmdldCgpKTsKLSAgICBAdHJ5IHsKLSAgICAgICAgUEtQYXltZW50ICpwa1BheW1lbnQgPSBbdW5h
cmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOlBBTDo6Z2V0UEtQYXltZW50Q2xhc3MoKSBmb3JL
ZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKLSAgICAgICAgcGF5bWVudCA9IFBheW1l
bnQocGtQYXltZW50KTsKLSAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewot
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgUEtQYXltZW50OiAlQCIsIGV4Y2Vw
dGlvbik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgYXV0byBwYXltZW50ID0g
ZGVjb2RlT2JqZWN0PFBLUGF5bWVudD4oZGVjb2RlciwgUEFMOjpnZXRQS1BheW1lbnRDbGFzcygp
KTsKKyAgICBpZiAoIXBheW1lbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0
dXJuIFBheW1lbnQgeyBXVEZNb3ZlKCpwYXltZW50KSB9OwogfQogCiB2b2lkIEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQmIHJlc3Vs
dCkKQEAgLTgzLDM4ICs2OCwyMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRo
b3JpemF0aW9uUmVzdWx0PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbgogICAgIGRlY29k
ZXIgPj4gZXJyb3JzOwogICAgIGlmICghZXJyb3JzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgIAorCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKnN0YXR1cyksIFdURk1vdmUoKmVy
cm9ycykgfX07CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFj
dD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50Q29udGFj
dCYgcGF5bWVudENvbnRhY3QpCiB7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVy
KCk7Ci0gICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpwYXltZW50Q29udGFjdC5wa0NvbnRhY3Qo
KSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKLSAgICBbYXJjaGl2ZXIgZmlu
aXNoRW5jb2RpbmddOwotCi0gICAgYXV0byBkYXRhID0gYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERh
dGE7Ci0gICAgZW5jb2RlciA8PCBEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICBlbmNvZGVyIDw8IHBheW1l
bnRDb250YWN0LnBrQ29udGFjdCgpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UGF5bWVudENvbnRhY3Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UGF5bWVu
dENvbnRhY3QmIHBheW1lbnRDb250YWN0KQorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50
Q29udGFjdD4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNl
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRX
aXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+
KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVX
aGVuRG9uZTpOT10pOwotICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9t
RGF0YShkYXRhLmdldCgpKTsKLSAgICBAdHJ5IHsKLSAgICAgICAgUEtDb250YWN0ICpwa0NvbnRh
Y3QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOlBBTDo6Z2V0UEtDb250YWN0Q2xh
c3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKLSAgICAgICAgcGF5bWVu
dENvbnRhY3QgPSBQYXltZW50Q29udGFjdChwa0NvbnRhY3QpOwotICAgIH0gQGNhdGNoIChOU0V4
Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29k
ZSBQS0NvbnRhY3Q6ICVAIiwgZXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KKyAgICBhdXRvIGNvbnRhY3QgPSBkZWNvZGVPYmplY3Q8UEtDb250YWN0PihkZWNvZGVyLCBQ
QUw6OmdldFBLQ29udGFjdENsYXNzKCkpOworICAgIGlmICghY29udGFjdCkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gV2ViQ29yZTo6UGF5bWVudENvbnRhY3QgeyBXVEZN
b3ZlKCpjb250YWN0KSB9OwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVu
dEVycm9yPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRF
cnJvciYgZXJyb3IpCkBAIC0xNDYsNjIgKzExNSwzMCBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBheW1lbnRFcnJvcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50RXJyb3I+OjpkZWNv
ZAogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbj46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRT
ZXNzaW9uJiBwYXltZW50TWVyY2hhbnRTZXNzaW9uKQogewotICAgIGF1dG8gYXJjaGl2ZXIgPSBz
ZWN1cmVBcmNoaXZlcigpOwotICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cGF5bWVudE1lcmNo
YW50U2Vzc2lvbi5wa1BheW1lbnRNZXJjaGFudFNlc3Npb24oKSBmb3JLZXk6TlNLZXllZEFyY2hp
dmVSb290T2JqZWN0S2V5XTsKLSAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwotCi0gICAg
YXV0byBkYXRhID0gYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGE7Ci0gICAgZW5jb2RlciA8PCBE
YXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBb
ZGF0YSBsZW5ndGhdKTsKKyAgICBlbmNvZGVyIDw8IHBheW1lbnRNZXJjaGFudFNlc3Npb24ucGtQ
YXltZW50TWVyY2hhbnRTZXNzaW9uKCk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdlYkNv
cmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mIHBheW1lbnRNZXJjaGFudFNlc3Npb24pCitzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6
Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2Uu
ZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwot
ICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRhLmdldCgp
KTsKLSAgICBAdHJ5IHsKLSAgICAgICAgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICpwa1BheW1l
bnRNZXJjaGFudFNlc3Npb24gPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOlBBTDo6
Z2V0UEtQYXltZW50TWVyY2hhbnRTZXNzaW9uQ2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVS
b290T2JqZWN0S2V5XTsKLSAgICAgICAgcGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IFBheW1lbnRN
ZXJjaGFudFNlc3Npb24ocGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKTsKLSAgICB9IEBjYXRjaCAo
TlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBk
ZWNvZGUgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uOiAlQCIsIGV4Y2VwdGlvbik7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgYXV0byBwYXltZW50TWVyY2hhbnRTZXNzaW9uID0g
ZGVjb2RlT2JqZWN0PFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbj4oZGVjb2RlciwgUEFMOjpnZXRQ
S1BheW1lbnRNZXJjaGFudFNlc3Npb25DbGFzcygpKTsKKyAgICBpZiAoIXBheW1lbnRNZXJjaGFu
dFNlc3Npb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBbdW5hcmNoaXZl
ciBmaW5pc2hEZWNvZGluZ107Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFdlYkNvcmU6
OlBheW1lbnRNZXJjaGFudFNlc3Npb24geyBXVEZNb3ZlKCpwYXltZW50TWVyY2hhbnRTZXNzaW9u
KSB9OwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJiBwYXlt
ZW50TWV0aG9kKQogewotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwotICAg
IFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cGF5bWVudE1ldGhvZC5wa1BheW1lbnRNZXRob2QoKSBm
b3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKLSAgICBbYXJjaGl2ZXIgZmluaXNo
RW5jb2RpbmddOwotCi0gICAgYXV0byBkYXRhID0gYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGE7
Ci0gICAgZW5jb2RlciA8PCBEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICBlbmNvZGVyIDw8IHBheW1lbnRN
ZXRob2QucGtQYXltZW50TWV0aG9kKCk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpQYXltZW50TWV0aG9kPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlBheW1l
bnRNZXRob2QmIHBheW1lbnRNZXRob2QpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRN
ZXRob2Q+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRo
Qnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRh
dGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVu
RG9uZTpOT10pOwotICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0
YShkYXRhLmdldCgpKTsKLSAgICBAdHJ5IHsKLSAgICAgICAgUEtQYXltZW50TWV0aG9kICpwa1Bh
eW1lbnRNZXRob2QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOlBBTDo6Z2V0UEtQ
YXltZW50TWV0aG9kQ2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsK
LSAgICAgICAgcGF5bWVudE1ldGhvZCA9IFBheW1lbnRNZXRob2QocGtQYXltZW50TWV0aG9kKTsK
LSAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byBkZWNvZGUgUEtQYXltZW50OiAlQCIsIGV4Y2VwdGlvbik7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgYXV0byBwYXltZW50TWV0aG9kID0gZGVjb2RlT2Jq
ZWN0PFBLUGF5bWVudE1ldGhvZD4oZGVjb2RlciwgUEFMOjpnZXRQS1BheW1lbnRNZXRob2RDbGFz
cygpKTsKKyAgICBpZiAoIXBheW1lbnRNZXRob2QpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107Ci0gICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIFBheW1lbnRNZXRob2QgeyBXVEZNb3ZlKCpwYXltZW50TWV0aG9kKSB9Owog
fQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZT46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRl
JiB1cGRhdGUpCkBAIC0yNTQsMjAgKzE5MSwyMiBAQCBib29sIEFyZ3VtZW50Q29kZXI8QXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQXBwbAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVxdWVzdC5zZXRSZXF1aXJlZEJpbGxpbmdDb250
YWN0RmllbGRzKHJlcXVpcmVkQmlsbGluZ0NvbnRhY3RGaWVsZHMpOwogCi0gICAgUGF5bWVudENv
bnRhY3QgYmlsbGluZ0NvbnRhY3Q7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShiaWxsaW5nQ29u
dGFjdCkpCisgICAgc3RkOjpvcHRpb25hbDxQYXltZW50Q29udGFjdD4gYmlsbGluZ0NvbnRhY3Q7
CisgICAgZGVjb2RlciA+PiBiaWxsaW5nQ29udGFjdDsKKyAgICBpZiAoIWJpbGxpbmdDb250YWN0
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVxdWVzdC5zZXRCaWxsaW5nQ29udGFjdChi
aWxsaW5nQ29udGFjdCk7CisgICAgcmVxdWVzdC5zZXRCaWxsaW5nQ29udGFjdCgqYmlsbGluZ0Nv
bnRhY3QpOwogCiAgICAgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkNvbnRhY3RGaWVs
ZHMgcmVxdWlyZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZSgocmVxdWlyZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHMpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHJlcXVlc3Quc2V0UmVxdWlyZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHMocmVxdWlyZWRT
aGlwcGluZ0NvbnRhY3RGaWVsZHMpOwogCi0gICAgUGF5bWVudENvbnRhY3Qgc2hpcHBpbmdDb250
YWN0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2hpcHBpbmdDb250YWN0KSkKKyAgICBzdGQ6
Om9wdGlvbmFsPFBheW1lbnRDb250YWN0PiBzaGlwcGluZ0NvbnRhY3Q7CisgICAgZGVjb2RlciA+
PiBzaGlwcGluZ0NvbnRhY3Q7CisgICAgaWYgKCFzaGlwcGluZ0NvbnRhY3QpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXF1ZXN0LnNldFNoaXBwaW5nQ29udGFjdChzaGlwcGluZ0NvbnRh
Y3QpOworICAgIHJlcXVlc3Quc2V0U2hpcHBpbmdDb250YWN0KCpzaGlwcGluZ0NvbnRhY3QpOwog
CiAgICAgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Ok1lcmNoYW50Q2FwYWJpbGl0aWVz
IG1lcmNoYW50Q2FwYWJpbGl0aWVzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVyY2hhbnRD
YXBhYmlsaXRpZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IDFj
MTFmZjg4NTc3NGFkNDI0NDA3YTYwYjFlNzljYTA1Y2VjYzZlZmEuLjUxNmQ1OWI0NTAzMGJhNDJj
ZjNiZTg1MzBjMGU2NWQ5MjdiYmE3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24ubW0KQEAgLTkyMCwxMyArOTIwLDEzIEBAIENTdHJpbmcgUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb246OmRlc2NyaXB0aW9uKCkgY29uc3QKICAgICAgICAgICAgIFRleHRTdHJlYW06Okdyb3Vw
U2NvcGUgZ3JvdXAodHMpOwogICAgICAgICAgICAgdHMgPDwgY3JlYXRlZExheWVyLnR5cGUgPDwi
ICIgPDwgY3JlYXRlZExheWVyLmxheWVySUQ7CiAgICAgICAgICAgICBzd2l0Y2ggKGNyZWF0ZWRM
YXllci50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
QVZQbGF5ZXJMYXllcjoKKyAgICAgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKICAgICAgICAgICAgICAgICB0cyA8PCAiIChj
b250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKKyAgICAgICAgICAgICAgICBjYXNlIFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAg
ICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGlu
Z0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgorICAgICAgICAgICAgICAgIGNh
c2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgICAgICAg
ICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4
dElEIDw8ICIpIjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6
CkBAIC05MzgsNyArOTM4LDcgQEAgQ1N0cmluZyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
ZGVzY3JpcHRpb24oKSBjb25zdAogICAgIGR1bXBDaGFuZ2VkTGF5ZXJzKHRzLCBtX2NoYW5nZWRM
YXllclByb3BlcnRpZXMpOwogCiAgICAgaWYgKCFtX2Rlc3Ryb3llZExheWVySURzLmlzRW1wdHko
KSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5PFZlY3RvcjxHcmFwaGljc0xheWVyOjpQbGF0Zm9y
bUxheWVySUQ+PigiZGVzdHJveWVkLWxheWVycyIsIG1fZGVzdHJveWVkTGF5ZXJJRHMpOworICAg
ICAgICB0cy5kdW1wUHJvcGVydHk8VmVjdG9yPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRm
b3JtTGF5ZXJJRD4+KCJkZXN0cm95ZWQtbGF5ZXJzIiwgbV9kZXN0cm95ZWRMYXllcklEcyk7CiAK
ICAgICBpZiAobV9lZGl0b3JTdGF0ZSkgewogICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3Bl
IHNjb3BlKHRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKaW5kZXggMGRmYjZlOGYxOWQ0MjBlOTg3Y2M0ODgwNDk2NzE0ZmQ4MTBmZTk4ZS4uMDkwOWI0
ZDE5Y2EwODk1YzU0MzA1ZjVmNTRjZGEwYzA0OTNhODgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTYwMSw3ICs2MDEsNyBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+
IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50PiB7
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50
Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpQYXltZW50Jik7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudD4gZGVjb2RlKERlY29k
ZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5
bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+IHsKQEAgLTYxMSw3ICs2MTEsNyBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0
PiB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENv
bnRhY3Q+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6
OlBheW1lbnRDb250YWN0Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJD
b3JlOjpQYXltZW50Q29udGFjdCYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBheW1lbnRDb250YWN0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50RXJyb3I+IHsKQEAgLTYyMSwxMiArNjIx
LDEyIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEVy
cm9yPiB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpOwotICAgIHN0YXRpYyBib29sIGRl
Y29kZShEZWNvZGVyJiwgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlBheW1lbnRNZXRob2Q+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IFdlYkNvcmU6OlBheW1lbnRNZXRob2QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVj
b2RlciYsIFdlYkNvcmU6OlBheW1lbnRNZXRob2QmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYXltZW50TWV0aG9kPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlPiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KaW5kZXggZjFlMGMzYTYzNTZmMDNiMjY4MDljNjM3MmU4
OGZmNDU1YWMxNTk5Ny4uMDM0NTVlNTU1Yjc3MjU2ZTI2MTYwYTE0MWYwZGZhMjVmMDI3OWM2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCIKIAot
I2ltcG9ydCAiQXJndW1lbnRDb2RlcnNDRi5oIgorI2ltcG9ydCAiQXJndW1lbnRDb2RlcnNDb2Nv
YS5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05T
S2V5ZWRBcmNoaXZlclNQSS5oPgpAQCAtNzYsMTAgKzc2LDcgQEAgdm9pZCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQXRQb3NpdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
ICAgICBlbmNvZGVyIDw8IGlzRGF0YURldGVjdG9yTGluazsKICAgICBpZiAoaXNEYXRhRGV0ZWN0
b3JMaW5rKSB7CiAgICAgICAgIGVuY29kZXIgPDwgZGF0YURldGVjdG9ySWRlbnRpZmllcjsKLSAg
ICAgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7Ci0gICAgICAgIFthcmNoaXZl
ciBlbmNvZGVPYmplY3Q6ZGF0YURldGVjdG9yUmVzdWx0cy5nZXQoKSBmb3JLZXk6QCJkYXRhRGV0
ZWN0b3JSZXN1bHRzIl07Ci0KLSAgICAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgcmVpbnRlcnBy
ZXRfY2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKSk7CisgICAgICAg
IGVuY29kZXIgPDwgZGF0YURldGVjdG9yUmVzdWx0czsKICAgICB9CiAjZW5kaWYKICNpZiBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKQEAgLTE3MywxOSArMTcwLDEyIEBAIGJvb2wgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIElu
dGVyYWN0aW9uCiAgICAgaWYgKHJlc3VsdC5pc0RhdGFEZXRlY3RvckxpbmspIHsKICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZGF0YURldGVjdG9ySWRlbnRpZmllcikpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7
Ci0gICAgICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVV
bmFyY2hpdmVyRnJvbURhdGEoKE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwotICAgICAgICBAdHJ5IHsK
LSAgICAgICAgICAgIHJlc3VsdC5kYXRhRGV0ZWN0b3JSZXN1bHRzID0gW3VuYXJjaGl2ZXIgZGVj
b2RlT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoQXJyYXk6QFsgW05TQXJyYXkgY2xhc3Nd
LCBnZXRERFNjYW5uZXJSZXN1bHRDbGFzcygpXSBdIGZvcktleTpAImRhdGFEZXRlY3RvclJlc3Vs
dHMiXTsKLSAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBOU0FycmF5IG9mIEREU2NhblJlc3Vs
dDogJUAiLCBleGNlcHRpb24pOworCisgICAgICAgIGF1dG8gZGF0YURldGVjdG9yUmVzdWx0cyA9
IElQQzo6ZGVjb2RlT2JqZWN0PE5TQXJyYXk+KGRlY29kZXIsIEBbIFtOU0FycmF5IGNsYXNzXSwg
Z2V0RERTY2FubmVyUmVzdWx0Q2xhc3MoKSBdKTsKKyAgICAgICAgaWYgKCFkYXRhRGV0ZWN0b3JS
ZXN1bHRzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CisKKyAgICAgICAgcmVzdWx0LmRh
dGFEZXRlY3RvclJlc3VsdHMgPSBXVEZNb3ZlKCpkYXRhRGV0ZWN0b3JSZXN1bHRzKTsKICAgICB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVB
cmd1bWVudENvZGVyc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNNYWMubW0KaW5kZXggOGUzNjk2NTIzMDU3Njg2OGQ0OTVkZGI5NmI4NjAwNjk3
MmFlNGM2Ni4uZGFlMDNlODY1ZjgzMDhjYTYwMmQ1NWZjYjZmMmFlYTVmMDExZDM3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFj
Lm1tCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
IAogI2ltcG9ydCAiQXJndW1lbnRDb2RlcnNDRi5oIgorI2ltcG9ydCAiQXJndW1lbnRDb2RlcnND
b2NvYS5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9DZXJ0
aWZpY2F0ZUluZm8uaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyLmg+CkBAIC00MzEsMjYgKzQzMiwxNiBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UmVzb3VyY2VFcnJvcj46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLAogCiB2
b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlPjo6ZW5jb2RlUGxhdGZv
cm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYg
c3BhY2UpCiB7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7Ci0gICAgW2Fy
Y2hpdmVyIGVuY29kZU9iamVjdDpzcGFjZS5uc1NwYWNlKCkgZm9yS2V5OkAicHJvdGVjdGlvblNw
YWNlIl07Ci0gICAgSVBDOjplbmNvZGUoZW5jb2RlciwgKF9fYnJpZGdlIENGRGF0YVJlZilhcmNo
aXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CisgICAgZW5jb2RlciA8PCBzcGFjZS5uc1NwYWNlKCk7
CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2U+OjpkZWNv
ZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNl
JiBzcGFjZSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwotICAgIGlmICghSVBD
OjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCisgICAgYXV0byBwbGF0Zm9ybURhdGEgPSBkZWNvZGVP
YmplY3Q8TlNVUkxQcm90ZWN0aW9uU3BhY2U+KGRlY29kZXIpOworICAgIGlmICghcGxhdGZvcm1E
YXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1
cmVVbmFyY2hpdmVyRnJvbURhdGEoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwotICAg
IEB0cnkgewotICAgICAgICBpZiAoUmV0YWluUHRyPE5TVVJMUHJvdGVjdGlvblNwYWNlPiBuc1Nw
YWNlID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbTlNVUkxQcm90ZWN0aW9uU3Bh
Y2UgY2xhc3NdIGZvcktleTpAInByb3RlY3Rpb25TcGFjZSJdKQotICAgICAgICAgICAgc3BhY2Ug
PSBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UobnNTcGFjZS5nZXQoKSk7Ci0gICAgfSBAY2F0Y2gg
KE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8g
ZGVjb2RlIE5TVVJMUHJvdGVjdGlvblNwYWNlOiAlQCIsIGV4Y2VwdGlvbik7Ci0gICAgfQotCi0g
ICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAgIHNwYWNlID0gV2ViQ29yZTo6UHJv
dGVjdGlvblNwYWNlIHsgcGxhdGZvcm1EYXRhLT5nZXQoKSB9OwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC00NzQsMTAgKzQ2NSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDcmVk
ZW50aWFsPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvCiAgICAgfQog
CiAgICAgZW5jb2RlciA8PCBmYWxzZTsKLQotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNo
aXZlcigpOwotICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6bnNDcmVkZW50aWFsIGZvcktleTpA
ImNyZWRlbnRpYWwiXTsKLSAgICBJUEM6OmVuY29kZShlbmNvZGVyLCAoX19icmlkZ2UgQ0ZEYXRh
UmVmKWFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKTsKKyAgICBlbmNvZGVyIDw8IG5zQ3JlZGVu
dGlhbDsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNyZWRlbnRpYWw+OjpkZWNv
ZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3Jl
ZGVudGlhbCkKQEAgLTUwOSwxOSArNDk3LDExIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpDcmVkZW50aWFsPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFdlCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRh
dGE7Ci0gICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRhKSkKKyAgICBhdXRvIG5zQ3Jl
ZGVudGlhbCA9IGRlY29kZU9iamVjdDxOU1VSTENyZWRlbnRpYWw+KGRlY29kZXIpOworICAgIGlm
ICghbnNDcmVkZW50aWFsKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHVuYXJj
aGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEu
Z2V0KCkpOwotICAgIEB0cnkgewotICAgICAgICBpZiAoUmV0YWluUHRyPE5TVVJMQ3JlZGVudGlh
bD4gbnNDcmVkZW50aWFsID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbTlNVUkxD
cmVkZW50aWFsIGNsYXNzXSBmb3JLZXk6QCJjcmVkZW50aWFsIl0pCi0gICAgICAgICAgICBjcmVk
ZW50aWFsID0gV2ViQ29yZTo6Q3JlZGVudGlhbChuc0NyZWRlbnRpYWwuZ2V0KCkpOwotICAgIH0g
QGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFp
bGVkIHRvIGRlY29kZSBOU1VSTENyZWRlbnRpYWw6ICVAIiwgZXhjZXB0aW9uKTsKLSAgICB9Ci0K
LSAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgY3JlZGVudGlhbCA9IFdlYkNv
cmU6OkNyZWRlbnRpYWwgeyBuc0NyZWRlbnRpYWwtPmdldCgpIH07CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTU5OCwyMCArNTc4LDEwIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlCiAKICNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCi1zdGF0aWMgTlNTdHJpbmcgKmRl
dmljZUNvbnRleHRLZXkoKQotewotICAgIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGtleSA9IEAi
ZGV2aWNlQ29udGV4dCI7Ci0gICAgcmV0dXJuIGtleTsKLX0KLQogdm9pZCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRh
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0JiB0YXJnZXQpCiB7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7Ci0K
ICAgICBpZiAoW2dldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBw
cm90b2NvbChOU1NlY3VyZUNvZGluZyldKQotICAgICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0
OnRhcmdldC5hdk91dHB1dENvbnRleHQoKSBmb3JLZXk6ZGV2aWNlQ29udGV4dEtleSgpXTsKLQot
ICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIChfX2JyaWRnZSBDRkRhdGFSZWYpYXJjaGl2ZXIuZ2V0
KCkuZW5jb2RlZERhdGEpOworICAgICAgICBlbmNvZGVyIDw8IHRhcmdldC5hdk91dHB1dENvbnRl
eHQoKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCkBAIC02MTksMjMgKzU4OSwxMSBA
QCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+
OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjbwogICAgIGlmICghW2dldEFWT3V0cHV0Q29udGV4dENs
YXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwotICAg
IGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoX19icmlk
Z2UgTlNEYXRhICopZGF0YS5nZXQoKSk7Ci0KLSAgICBBVk91dHB1dENvbnRleHQgKmNvbnRleHQg
PSBuaWw7Ci0gICAgQHRyeSB7Ci0gICAgICAgIGNvbnRleHQgPSBbdW5hcmNoaXZlciBkZWNvZGVP
YmplY3RPZkNsYXNzOmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgZm9yS2V5OmRldmljZUNvbnRl
eHRLZXkoKV07Ci0gICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAg
ICAgTE9HX0VSUk9SKCJUaGUgdGFyZ2V0IHBpY2tlciBiZWluZyBkZWNvZGVkIGlzIG5vdCBhbiBB
Vk91dHB1dENvbnRleHQuIik7CisgICAgYXV0byBjb250ZXh0ID0gZGVjb2RlT2JqZWN0PEFWT3V0
cHV0Q29udGV4dD4oZGVjb2RlciwgZ2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSk7CisgICAgaWYg
KCFjb250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCi0gICAgdGFyZ2V0ID0g
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoY29udGV4dCk7Ci0gICAgCi0gICAg
W3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAgIHRhcmdldCA9IFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0IHsgY29udGV4dC0+Z2V0KCkgfTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkhpdFRlc3RS
ZXN1bHREYXRhLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkhpdFRlc3RSZXN1bHRE
YXRhLm1tCmluZGV4IDU4OGM1ZTUxOGEyNDk3ZjM1OGY0YjgyY2JhYWM5NDE4ZDlhZDEwYzAuLmY5
MTcyMmY2NWQxYTc1MTllZmViZDhiZDAwNDcwN2Y2MzQ4MWJlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0KQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSwxMCArNDUs
NyBAQCB2b2lkIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpwbGF0Zm9ybUVuY29kZShJUEM6OkVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiAgICAgaWYgKCFoYXNBY3Rpb25Db250ZXh0KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKLSAgICBbYXJj
aGl2ZXIgZW5jb2RlT2JqZWN0OmRldGVjdGVkRGF0YUFjdGlvbkNvbnRleHQuZ2V0KCkgZm9yS2V5
OkAiYWN0aW9uQ29udGV4dCJdOwotCi0gICAgSVBDOjplbmNvZGUoZW5jb2RlciwgKF9fYnJpZGdl
IENGRGF0YVJlZilhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CisgICAgZW5jb2RlciA8PCBk
ZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0OwogCiAgICAgZW5jb2RlciA8PCBkZXRlY3RlZERhdGFC
b3VuZGluZ0JveDsKICAgICBlbmNvZGVyIDw8IGRldGVjdGVkRGF0YU9yaWdpbmF0aW5nUGFnZU92
ZXJsYXk7CkBAIC02OCwyMCArNjUsMTIgQEAgYm9vbCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6cGxh
dGZvcm1EZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJIaXRUZXN0UmVzdWwKICAgICBp
ZiAoIWhhc0FjdGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIEFTU0VSVChE
YXRhRGV0ZWN0b3JzTGlicmFyeSgpKTsKLQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7
Ci0gICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRhKSkKKyAgICAKKyAgICBhdXRvIGRl
dGVjdGVkRGF0YUFjdGlvbkNvbnRleHQgPSBkZWNvZGVPYmplY3Q8RERBY3Rpb25Db250ZXh0Pihk
ZWNvZGVyLCBnZXREREFjdGlvbkNvbnRleHRDbGFzcygpKTsKKyAgICBpZiAoIWRldGVjdGVkRGF0
YUFjdGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gdW5hcmNo
aXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5n
ZXQoKSk7Ci0gICAgQHRyeSB7Ci0gICAgICAgIGhpdFRlc3RSZXN1bHREYXRhLmRldGVjdGVkRGF0
YUFjdGlvbkNvbnRleHQgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldEREQWN0
aW9uQ29udGV4dENsYXNzKCkgZm9yS2V5OkAiYWN0aW9uQ29udGV4dCJdOwotICAgIH0gQGNhdGNo
IChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IGRlY29kZSBEREFjdGlvbkNvbnRleHQ6ICVAIiwgZXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107Cisg
ICAgaGl0VGVzdFJlc3VsdERhdGEuZGV0ZWN0ZWREYXRhQWN0aW9uQ29udGV4dCA9IFdURk1vdmUo
KmRldGVjdGVkRGF0YUFjdGlvbkNvbnRleHQpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSho
aXRUZXN0UmVzdWx0RGF0YS5kZXRlY3RlZERhdGFCb3VuZGluZ0JveCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA2YWM4ZmVjMTZjZTkyZWJmYTcxNmRl
MzJiYTA0NTc5YWZkMjM3NTdmLi44NjQzZGFlNmJlNDM2YjhlZmNmNzljMTAxNTA4ZjI1NjViNDJh
MzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xMjIsNiArMTIyLDcgQEAgU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCiAKIFNoYXJl
ZC9Db2NvYS9BUElEYXRhQ29jb2EubW0KIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KK1NoYXJl
ZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCiBTaGFyZWQvQ29jb2EvQ2hpbGRQcm9jZXNz
Q29jb2EubW0KIFNoYXJlZC9Db2NvYS9Db21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLm1tCiBT
aGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjgxOTA2OTNkM2EzZmVmZmViMGVl
Y2I2NWI2ZjM0YTJiODk0OTRiMy4uNjFkOTQ4MWY1MzJjZTc5NDNjYzllNjc0NjBiMmJiODAyMmMz
NzZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMjY1LDYgKzEyNjUsNyBAQAogCQlBMTNCM0RBMjIwN0YzOURFMDA5MEM1OEQgLyog
TW9iaWxlV2lGaVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTEzQjNEQTEyMDdGMzlERTAwOTBDNThEIC8qIE1vYmlsZVdpRmlTUEkuaCAqLzsgfTsK
IAkJQTEzREM2ODIyMDdBQTZCMjAwNjZFRjcyIC8qIFdLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5n
Vmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEz
REM2ODAyMDdBQTZCMjAwNjZFRjcyIC8qIFdLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5o
ICovOyB9OwogCQlBMTVFRURFNjFFMzAxQ0VFMDAwMDY5QjAgLyogV0tQYXNzd29yZFZpZXcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNUVFREU0MUUz
MDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oICovOyB9OworCQlBMTc1QzQ0QTIxQUEz
MTcxMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3NUM0NDkyMUFBMzE3MDAwMDAzN0QwIC8qIEFy
Z3VtZW50Q29kZXJzQ29jb2EuaCAqLzsgfTsKIAkJQTE4MkQ1QjUxQkU2QkQyNTAwODdBN0NDIC8q
IEFjY2Vzc2liaWxpdHlJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExODJENUIzMUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmgg
Ki87IH07CiAJCUExOUREM0MwMUQwN0QxNjgwMEFDODIzQiAvKiBfV0tXZWJWaWV3UHJpbnRGb3Jt
YXR0ZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE5REQzQkYxRDA3RDE2ODAwQUM4MjNCIC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRl
ckludGVybmFsLmggKi87IH07CiAJCUExQTRGRTVBMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3du
bG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFB
NEZFNTcxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM4MTksNiArMzgyMCw4IEBACiAJCUEx
M0RDNjgxMjA3QUE2QjIwMDY2RUY3MiAvKiBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcu
bW07IHBhdGggPSBpb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMTVFRURFMzFFMzAxQ0VFMDAwMDY5QjAgLyogV0tQYXNz
d29yZFZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1Bh
c3N3b3JkVmlldy5tbTsgcGF0aCA9IGlvcy9XS1Bhc3N3b3JkVmlldy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTE1RUVERTQxRTMwMUNFRTAwMDA2OUIwIC8qIFdLUGFzc3dvcmRW
aWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUGFzc3dvcmRWaWV3Lmg7
IHBhdGggPSBpb3MvV0tQYXNzd29yZFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTE3NUM0NDkyMUFBMzE3MDAwMDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJndW1lbnRDb2RlcnNDb2NvYS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc1QzQ0QjIxQUEzMzFCMDAwMDM3RDAgLyogQXJn
dW1lbnRDb2RlcnNDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFyZ3VtZW50Q29kZXJz
Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExODJENUIyMUJFNkJEMjUw
MDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTE4MkQ1QjMxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2liaWxpdHlJT1MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eUlPUy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTlERDNCRjFEMDdEMTY4MDBBQzgyM0IgLyogX1dL
V2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTYxNzAsNiArNjE3Myw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQkxQTFFRjE5NzFBMUQ1QjQyMDAyMzIwMEEgLyogQVBJRGF0YUNvY29hLm1tICovLAogCQkJCTM3
OEUxQTNCMTgxRUQ2RkYwMDMxMDA3QSAvKiBBUElPYmplY3QubW0gKi8sCisJCQkJQTE3NUM0NDky
MUFBMzE3MDAwMDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EuaCAqLywKKwkJCQlBMTc1QzQ0
QjIxQUEzMzFCMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5tbSAqLywKIAkJCQkxQTY5
OEYxNzFFNDkxMDIyMDA2NEU4ODEgLyogQ2hpbGRQcm9jZXNzQ29jb2EubW0gKi8sCiAJCQkJMzdC
RUM0REYxOTQ5MTQ4NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCAq
LywKIAkJCQkzN0JFQzRERTE5NDkxNDg2MDA4QjQyODYgLyogQ29tcGxldGlvbkhhbmRsZXJDYWxs
Q2hlY2tlci5tbSAqLywKQEAgLTg4NzUsNyArODg4MCw2IEBACiAJCQkJN0E4QTlENUExRUYxMzAy
OTAwOTgwMUFFIC8qIEFQSUluamVjdGVkQnVuZGxlQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QThBOUQ1ODFFRjExOUIwMDA5ODAxQUUgLyogQVBJSW5qZWN0ZWRCdW5kbGVDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NzUxMjMxMURGMERFRTIwMDhBMzUxQyAvKiBBUElJ
bmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTRFNTdGNkIy
MUE4M0IxMjAwMzQ1RjNDIC8qIFJlbW90ZUxheWVyVHJlZU5vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTM3NjkwNzlFMThGMzQwQTIwMDFERkYwNCAvKiBBUElJbmplY3RlZEJ1bmRsZUZvcm1DbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBM0FDRTFCMUVFRUY3OUIwMEE4NjRBNCAvKiBBUElJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBOEE5
RDVDMUVGMTQ1OTgwMDk4MDFBRSAvKiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRD
bGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtODkxNiw2ICs4OTIwLDcgQEAKIAkJCQkxQUVGRDI3
OTExRDE2QzgxMDA4MjE5RDMgLyogQXJndW1lbnRDb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFFRkQyRjcxMUQxODA3QjAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXJzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUFGMEM0QTEyQjE2MzM0MDA4RTQ5RTIgLyogQXJndW1lbnRDb2RlcnNDRi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTE3NUM0NEEyMUFBMzE3MTAwMDAzN0QwIC8qIEFyZ3VtZW50Q29k
ZXJzQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzlGRDlDMTM0RDM4MDYwMDE1Qjg4MyAv
KiBBcmd1bWVudENvZGVyc01hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxQTBCRDIxQTQ4RTZD
NjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
NTlDNEE1OTE4QjgxMTc0MDA3QkRDQjYgLyogQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCBpbiBI
ZWFkZXJzICovLApAQCAtOTIxNyw2ICs5MjIyLDcgQEAKIAkJCQkxQUIxNkFFMjE2NDg2NTZEMDAy
OTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGMjRBMkUxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBM0Q3NUMxNjUxQjQ0RjAw
ODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RTU3
RjZCMjFBODNCMTIwMDM0NUYzQyAvKiBSZW1vdGVMYXllclRyZWVOb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyRERFMEFGQTE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVy
dHlBcHBsaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkYyNjRBMDFBMUZGOUNDMDAxRkU3NTkg
LyogUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUYxQUM2QzE2NTE3NTlFMDBDMTdEN0YgLyogUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355573</attachid>
            <date>2018-11-24 19:14:37 -0800</date>
            <delta_ts>2018-11-24 20:48:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191948-20181124191427.patch</filename>
            <type>text/plain</type>
            <size>51161</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ4M2MyN2FkZDk4OWI2
ZjBlNmFlNDM2NDU4M2RmNDUyNWI4NmIyYi4uNjlmMmI0OTI4MDAyYjY1NDNiYjk5N2NmMGU2MTYy
OTg0YjAyYjVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTExLTI0ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIE1ha2UgaXQgZWFz
aWVyIHRvIGVuY29kZSBOU09iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MTk0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Lmg6CisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29udGFjdC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbjo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbik6CisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kLmg6CisKIDIwMTgtMTEtMjQgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBGaXggYSBmZXcg
bG9jYWxpemFibGUgc3RyaW5nIGRlc2NyaXB0aW9ucyBpbiBXZWJFZGl0Q29tbWFuZFByb3h5LmNw
cCBhbmQgV2ViRWRpdG9yQ2xpZW50Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA4NDk0ZjI3NDYw
NWRlMDYyMDY2ODFkZTc3YTJmMzliNWM2M2FmY2Q2Li5mYjk0MWNhZWJhMDY5MDAyOWYyMTFhOTVk
NTQ2MWY0OGRlYTlmMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
OC0xMS0yNCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29h
XSBNYWtlIGl0IGVhc2llciB0byBlbmNvZGUgTlNPYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE5NDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5o
OgorCiAyMDE4LTExLTI0ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ29jb2FdIFNPRlRfTElOS19DTEFTU19GT1Jfe0hFQURFUixTT1VSQ0V9IHNob3VsZCBnZW5l
cmF0ZSBhIG1vcmUgY29uY2lzZSBnZXR0ZXIgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNWU1MzI1YzAz
ZDIzNzQwZTcxNmZiZjUyYTViMGMzZTBiZGFmZGI2Yy4uMzljMDcxOTUzZmJkM2U2YjRlZTdiNTRm
Yjc0ZTY2OTU1MDU2N2VmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxOC0xMS0yNCAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBNYWtlIGl0
IGVhc2llciB0byBlbmNvZGUgTlNPYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE5NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmg6
IEFkZGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVPYmplY3QpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFQ6OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmV0YWlu
UHRyPFQ+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8
VD4+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29h
Lm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9u
UmVzdWx0Lm1tLgorICAgICAgICAoSVBDOjplbmNvZGUpOgorICAgICAgICAoSVBDOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lmg6CisgICAgICAg
ICogU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW06CisgICAgICAgIChXZWJLaXQ6
OkRhdGFEZXRlY3Rpb25SZXN1bHQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRh
dGFEZXRlY3Rpb25SZXN1bHQ6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlBheW1lbnQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD46OmVuY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+OjpkZWNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNl
c3Npb24+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBh
eW1lbnRNZXJjaGFudFNlc3Npb24+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Pjo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVz
Y3JpcHRpb24gY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9u
Lm1tOgorICAgICAgICAoV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRD
b2RlcnNNYWMubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UHJvdGVj
dGlvblNwYWNlPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNyZWRlbnRpYWw+OjplbmNvZGVQbGF0
Zm9ybURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNyZWRlbnRp
YWw+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OmRldmljZUNvbnRl
eHRLZXkpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERh
dGEubW06CisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjpwbGF0Zm9ybUVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjpwbGF0
Zm9ybURlY29kZSk6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0xMS0yNCAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEZpeCBhIGZldyBs
b2NhbGl6YWJsZSBzdHJpbmcgZGVzY3JpcHRpb25zIGluIFdlYkVkaXRDb21tYW5kUHJveHkuY3Bw
IGFuZCBXZWJFZGl0b3JDbGllbnQubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50LmgKaW5kZXggODVmNjdiZWRmMmVkN2UwZTQ4MGM0NWNhMWY3YjZlZGU3YWU2OWIxZi4u
MzZmYjZmZTgyZDhjNDU5ZGY3YWQwNjUzYWZlMGQ1ZjgzZWUxY2I1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTggKzM3LDEzIEBAIHN0cnVjdCBBcHBs
ZVBheVBheW1lbnQ7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFBheW1lbnQgewogcHVibGljOgot
ICAgIFBheW1lbnQoKSA9IGRlZmF1bHQ7Ci0KLSAgICBleHBsaWNpdCBQYXltZW50KFBLUGF5bWVu
dCAqcGtQYXltZW50KQotICAgICAgICA6IG1fcGtQYXltZW50KHBrUGF5bWVudCkKLSAgICB7Ci0g
ICAgfQotCi0gICAgdmlydHVhbCB+UGF5bWVudCgpID0gZGVmYXVsdDsKKyAgICBQYXltZW50KCk7
CisgICAgZXhwbGljaXQgUGF5bWVudChSZXRhaW5QdHI8UEtQYXltZW50PiYmKTsKKyAgICB2aXJ0
dWFsIH5QYXltZW50KCk7CiAKICAgICB2aXJ0dWFsIEFwcGxlUGF5UGF5bWVudCB0b0FwcGxlUGF5
UGF5bWVudCh1bnNpZ25lZCB2ZXJzaW9uKSBjb25zdDsKIAotICAgIFBLUGF5bWVudCAqcGtQYXlt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9wa1BheW1lbnQuZ2V0KCk7IH0KKyAgICBQS1BheW1lbnQg
KnBrUGF5bWVudCgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFJldGFpblB0cjxQS1BheW1lbnQ+
IG1fcGtQYXltZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50Q29udGFjdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50Q29udGFjdC5oCmluZGV4IGQwNDEyZDFkZWRhNjFiN2JmNGM1ZDY5MjdhYjA2ODE5Yjk2MmQz
MjEuLjE1NmZiZjk0YjllMDAxOWEyMzBlMjIzNTc4NGQ3NTcxNDFlYjc0Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvbnRhY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb250YWN0LmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwx
NyArMzgsMTQgQEAgc3RydWN0IEFwcGxlUGF5UGF5bWVudENvbnRhY3Q7CiAKIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIFBheW1lbnRDb250YWN0IHsKIHB1YmxpYzoKLSAgICBQYXltZW50Q29udGFjdCgp
ID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBQYXltZW50Q29udGFjdChQS0NvbnRhY3QgKnBrQ29u
dGFjdCkKLSAgICAgICAgOiBtX3BrQ29udGFjdChwa0NvbnRhY3QpCi0gICAgewotICAgIH0KLSAg
ICB2aXJ0dWFsIH5QYXltZW50Q29udGFjdCgpID0gZGVmYXVsdDsKKyAgICBQYXltZW50Q29udGFj
dCgpOworICAgIGV4cGxpY2l0IFBheW1lbnRDb250YWN0KFJldGFpblB0cjxQS0NvbnRhY3Q+JiYp
OworICAgIHZpcnR1YWwgflBheW1lbnRDb250YWN0KCk7CiAKICAgICBzdGF0aWMgUGF5bWVudENv
bnRhY3QgZnJvbUFwcGxlUGF5UGF5bWVudENvbnRhY3QodW5zaWduZWQgdmVyc2lvbiwgY29uc3Qg
QXBwbGVQYXlQYXltZW50Q29udGFjdCYpOwogICAgIHZpcnR1YWwgQXBwbGVQYXlQYXltZW50Q29u
dGFjdCB0b0FwcGxlUGF5UGF5bWVudENvbnRhY3QodW5zaWduZWQgdmVyc2lvbikgY29uc3Q7CiAK
LSAgICBQS0NvbnRhY3QgKnBrQ29udGFjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGtDb250YWN0Lmdl
dCgpOyB9CisgICAgUEtDb250YWN0ICpwa0NvbnRhY3QoKSBjb25zdDsKIAogcHJpdmF0ZToKICAg
ICBSZXRhaW5QdHI8UEtDb250YWN0PiBtX3BrQ29udGFjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKaW5kZXgg
N2VkNmIyMTU3MzA2ZWViZDA3ZTUxMTYxOGM0MzQ0NzljNTU0MzZlNy4uZGFhNzQ5NTQ5ZjUzZjVk
YTNkMzY2ZDVlNjA4MzlhMjg4MDYzYjNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsOCArNDIsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQYXltZW50TWVyY2hhbnRTZXNzaW9uIHsKIHB1
YmxpYzoKICAgICBQYXltZW50TWVyY2hhbnRTZXNzaW9uKCkgPSBkZWZhdWx0OwotICAgIGV4cGxp
Y2l0IFBheW1lbnRNZXJjaGFudFNlc3Npb24oUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICpwa1Bh
eW1lbnRNZXJjaGFudFNlc3Npb24pCi0gICAgICAgIDogbV9wa1BheW1lbnRNZXJjaGFudFNlc3Np
b24ocGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKQorICAgIGV4cGxpY2l0IFBheW1lbnRNZXJjaGFu
dFNlc3Npb24oUmV0YWluUHRyPFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbj4mJiBwa1BheW1lbnRN
ZXJjaGFudFNlc3Npb24pCisgICAgICAgIDogbV9wa1BheW1lbnRNZXJjaGFudFNlc3Npb24geyBX
VEZNb3ZlKHBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbikgfQogICAgIHsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kLmgKaW5kZXggOWNl
N2JhYTc5NDNhYmQyZGRmZjEzMWI0NDMwOTdhMmFhMDRiMTIxNS4uNGFmYmEyZjI5ZTBjMzQxY2E4
NDQwMzA1ZGMxMDhjYjQ0NGExODhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9QYXltZW50TWV0aG9kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50TWV0aG9kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTcgKzM3LDEzIEBAIHN0cnVjdCBBcHBsZVBheVBh
eW1lbnRNZXRob2Q7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFBheW1lbnRNZXRob2QgewogcHVi
bGljOgotICAgIFBheW1lbnRNZXRob2QoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB+UGF5bWVu
dE1ldGhvZCgpID0gZGVmYXVsdDsKLQotICAgIGV4cGxpY2l0IFBheW1lbnRNZXRob2QoUEtQYXlt
ZW50TWV0aG9kICpwa1BheW1lbnRNZXRob2QpCi0gICAgICAgIDogbV9wa1BheW1lbnRNZXRob2Qo
cGtQYXltZW50TWV0aG9kKQotICAgIHsKLSAgICB9CisgICAgUGF5bWVudE1ldGhvZCgpOworICAg
IGV4cGxpY2l0IFBheW1lbnRNZXRob2QoUmV0YWluUHRyPFBLUGF5bWVudE1ldGhvZD4mJik7Cisg
ICAgdmlydHVhbCB+UGF5bWVudE1ldGhvZCgpOwogCiAgICAgdmlydHVhbCBBcHBsZVBheVBheW1l
bnRNZXRob2QgdG9BcHBsZVBheVBheW1lbnRNZXRob2QoKSBjb25zdDsKIAotICAgIFBLUGF5bWVu
dE1ldGhvZCAqcGtQYXltZW50TWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9wa1BheW1lbnRNZXRo
b2QuZ2V0KCk7IH0KKyAgICBQS1BheW1lbnRNZXRob2QgKnBrUGF5bWVudE1ldGhvZCgpIGNvbnN0
OwogCiBwcml2YXRlOgogICAgIFJldGFpblB0cjxQS1BheW1lbnRNZXRob2Q+IG1fcGtQYXltZW50
TWV0aG9kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2Nv
YS9QYXltZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29h
L1BheW1lbnRDb2NvYS5tbQppbmRleCAwYjI5ZDc0N2UyNDA3YzM1OWZkY2IxNGIzYjc4YzVhZDYx
ZDJkODg2Li5mMzBhNjYzNTk1OTk3YzI2ZjljYTU4ZWU1ODg5YTg5YTczOGMzYmVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2Nv
YS5tbQpAQCAtNjYsMTIgKzY2LDI2IEBAIHN0YXRpYyBBcHBsZVBheVBheW1lbnQgY29udmVydCh1
bnNpZ25lZCB2ZXJzaW9uLCBQS1BheW1lbnQgKnBheW1lbnQpCiAKICAgICByZXR1cm4gcmVzdWx0
OwogfQorICAgIAorUGF5bWVudDo6UGF5bWVudCgpID0gZGVmYXVsdDsKKworUGF5bWVudDo6UGF5
bWVudChSZXRhaW5QdHI8UEtQYXltZW50PiYmIHBrUGF5bWVudCkKKyAgICA6IG1fcGtQYXltZW50
IHsgV1RGTW92ZShwa1BheW1lbnQpIH0KK3sKK30KKworUGF5bWVudDo6flBheW1lbnQoKSA9IGRl
ZmF1bHQ7CiAKIEFwcGxlUGF5UGF5bWVudCBQYXltZW50Ojp0b0FwcGxlUGF5UGF5bWVudCh1bnNp
Z25lZCB2ZXJzaW9uKSBjb25zdAogewogICAgIHJldHVybiBjb252ZXJ0KHZlcnNpb24sIG1fcGtQ
YXltZW50LmdldCgpKTsKIH0KIAorUEtQYXltZW50ICpQYXltZW50Ojpwa1BheW1lbnQoKSBjb25z
dAoreworICAgIHJldHVybiBtX3BrUGF5bWVudC5nZXQoKTsKK30KKwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENv
bnRhY3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5
bWVudENvbnRhY3RDb2NvYS5tbQppbmRleCBjYzk3ZmQ1ZTFmNjIzNDU5OWViODg0Y2E4MTg3ZmIy
Y2QwODU3YzY1Li5lODgyODRjNTdkMDg2Mzc5MmQzM2IxNTc5NTg0YjY1ZWYxMDM2NmEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250
YWN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9Q
YXltZW50Q29udGFjdENvY29hLm1tCkBAIC0yMDgsNiArMjA4LDE1IEBAIHN0YXRpYyBBcHBsZVBh
eVBheW1lbnRDb250YWN0IGNvbnZlcnQodW5zaWduZWQgdmVyc2lvbiwgUEtDb250YWN0ICpjb250
YWN0KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1BheW1lbnRDb250YWN0OjpQYXltZW50Q29u
dGFjdCgpID0gZGVmYXVsdDsKKworUGF5bWVudENvbnRhY3Q6OlBheW1lbnRDb250YWN0KFJldGFp
blB0cjxQS0NvbnRhY3Q+JiYgcGtDb250YWN0KQorICAgIDogbV9wa0NvbnRhY3QgeyBXVEZNb3Zl
KHBrQ29udGFjdCkgfQoreworfQorCitQYXltZW50Q29udGFjdDo6flBheW1lbnRDb250YWN0KCkg
PSBkZWZhdWx0OworCiBQYXltZW50Q29udGFjdCBQYXltZW50Q29udGFjdDo6ZnJvbUFwcGxlUGF5
UGF5bWVudENvbnRhY3QodW5zaWduZWQgdmVyc2lvbiwgY29uc3QgQXBwbGVQYXlQYXltZW50Q29u
dGFjdCYgY29udGFjdCkKIHsKICAgICByZXR1cm4gUGF5bWVudENvbnRhY3QoY29udmVydCh2ZXJz
aW9uLCBjb250YWN0KS5nZXQoKSk7CkBAIC0yMTgsNiArMjI3LDExIEBAIEFwcGxlUGF5UGF5bWVu
dENvbnRhY3QgUGF5bWVudENvbnRhY3Q6OnRvQXBwbGVQYXlQYXltZW50Q29udGFjdCh1bnNpZ25l
ZCB2ZXJzaW9uCiAgICAgcmV0dXJuIGNvbnZlcnQodmVyc2lvbiwgbV9wa0NvbnRhY3QuZ2V0KCkp
OwogfQogCitQS0NvbnRhY3QgKlBheW1lbnRDb250YWN0Ojpwa0NvbnRhY3QoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3BrQ29udGFjdC5nZXQoKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0
aG9kQ29jb2EubW0KaW5kZXggNmFlNjhjZGY4MzI2YmEwNTYzODAyNjg0MmU5ZWFmMjRhZjBkZGYx
OC4uZmQxYTg1OTM1MmQxNzM2Yzc1ZWFiOTAxZmQyZDBmNDhkMmE1OGI0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0
aG9kQ29jb2EubW0KQEAgLTEwMSwxMSArMTAxLDI1IEBAIHN0YXRpYyBBcHBsZVBheVBheW1lbnRN
ZXRob2QgY29udmVydChQS1BheW1lbnRNZXRob2QgKnBheW1lbnRNZXRob2QpCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAorUGF5bWVudE1ldGhvZDo6UGF5bWVudE1ldGhvZCgpID0gZGVmYXVsdDsK
KworUGF5bWVudE1ldGhvZDo6UGF5bWVudE1ldGhvZChSZXRhaW5QdHI8UEtQYXltZW50TWV0aG9k
PiYmIHBrUGF5bWVudE1ldGhvZCkKKyAgICA6IG1fcGtQYXltZW50TWV0aG9kIHsgV1RGTW92ZShw
a1BheW1lbnRNZXRob2QpIH0KK3sKK30KKworUGF5bWVudE1ldGhvZDo6flBheW1lbnRNZXRob2Qo
KSA9IGRlZmF1bHQ7CisKIEFwcGxlUGF5UGF5bWVudE1ldGhvZCBQYXltZW50TWV0aG9kOjp0b0Fw
cGxlUGF5UGF5bWVudE1ldGhvZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbnZlcnQobV9wa1Bh
eW1lbnRNZXRob2QuZ2V0KCkpOwogfQogCitQS1BheW1lbnRNZXRob2QgKlBheW1lbnRNZXRob2Q6
OnBrUGF5bWVudE1ldGhvZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGtQYXltZW50TWV0aG9k
LmdldCgpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y29jb2EvUGFzc0tpdFNQSS5oCmluZGV4IDNjYTM5ZmE5NmZmYWM1MDZiZDAwMDM5ODVkNmE4NjMz
YTk2ZmJjZjguLjE4OTU4ZTkyNjE0YzFlM2I2YTRmMDRhNjhhZDE0MzNhYjE5NzE4MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKQEAgLTMyNywx
MCArMzI3LDE5IEBAIHZvaWQgUEtEcmF3QXBwbGVQYXlCdXR0b24oX05vbm51bGwgQ0dDb250ZXh0
UmVmLCBDR1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsCiAKIE5TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCiAKK0BpbnRlcmZhY2UgUEtDb250YWN0ICgpIDxOU1NlY3VyZUNvZGluZz4KK0BlbmQK
KwogQGludGVyZmFjZSBQS1Bhc3NMaWJyYXJ5ICgpCiAtICh2b2lkKW9wZW5QYXltZW50U2V0dXBG
b3JNZXJjaGFudElkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBkb21haW46KE5TU3Ry
aW5nICopZG9tYWluIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9u
OwogQGVuZAogCitAaW50ZXJmYWNlIFBLUGF5bWVudCAoKSA8TlNTZWN1cmVDb2Rpbmc+CitAZW5k
CisKK0BpbnRlcmZhY2UgUEtQYXltZW50TWV0aG9kICgpIDxOU1NlY3VyZUNvZGluZz4KK0BlbmQK
KwogQGludGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0ICgpCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
c3Ryb25nKSBOU1N0cmluZyAqc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vj
b25kYXJ5SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0FyZ3VtZW50Q29kZXJzQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3Vt
ZW50Q29kZXJzQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYmU3MTU4Yjc4OWJmMTYzNWI2MGIwMjYyMTQ0
NDViYmI1Yjk5YTI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvQXJndW1lbnRDb2RlcnNDb2NvYS5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJBcmd1bWVudENvZGVycy5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisKKyNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK3ZvaWQgZW5jb2RlKEVu
Y29kZXImLCBpZCA8TlNTZWN1cmVDb2Rpbmc+KTsKK3N0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlk
IDxOU1NlY3VyZUNvZGluZz4+PiBkZWNvZGUoRGVjb2RlciYsIE5TQXJyYXk8Q2xhc3M+ICphbGxv
d2VkQ2xhc3Nlcyk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGQ6Om9wdGlvbmFsPFJldGFpblB0
cjxUPj4gZGVjb2RlT2JqZWN0KERlY29kZXImLCBDbGFzcyBhbGxvd2VkQ2xhc3MpOwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8VD4+IGRlY29kZU9iamVjdChE
ZWNvZGVyJiwgTlNBcnJheTxDbGFzcz4gKmFsbG93ZWRDbGFzc2VzID0gQFsgW1QgY2xhc3NdIF0p
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8VD4+IGRl
Y29kZU9iamVjdChEZWNvZGVyJiBkZWNvZGVyLCBDbGFzcyBhbGxvd2VkQ2xhc3MpCit7CisgICAg
cmV0dXJuIGRlY29kZU9iamVjdDxUPihkZWNvZGVyLCBAWyBhbGxvd2VkQ2xhc3MgXSk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxUPj4gZGVjb2Rl
T2JqZWN0KERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IGRlY29kZShkZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcyk7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAo
ISpyZXN1bHQpCisgICAgICAgIHJldHVybiB7IG51bGxwdHIgfTsKKworICAgIGlkIG9iamVjdCA9
IHJlc3VsdC0+bGVha1JlZigpOworICAgIEFTU0VSVChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6YWxs
b3dlZENsYXNzZXNbMF1dKTsKKyAgICByZXR1cm4geyBhZG9wdE5TKChUICopb2JqZWN0KSB9Owor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB1c2luZyBDb25mb3Jtc1RvU2VjdXJlQ29kaW5nID0g
c3RkOjppc19jb252ZXJ0aWJsZTxUICosIGlkIDxOU1NlY3VyZUNvZGluZz4+OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxUICo+IHsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVID0gVCwgc3RkOjplbmFibGVfaWZfdDxDb25mb3Jtc1RvU2VjdXJlQ29kaW5nPFU+
Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgVSAqb2JqZWN0KQorICAgIHsKKyAgICAgICAgSVBDOjplbmNvZGUoZW5jb2Rlciwgb2Jq
ZWN0KTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxSZXRhaW5QdHI8VD4+IHsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSA9IFQsIHN0ZDo6
ZW5hYmxlX2lmX3Q8Q29uZm9ybXNUb1NlY3VyZUNvZGluZzxVPjo6dmFsdWU+KiA9IG51bGxwdHI+
CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJldGFpblB0
cjxVPiYgb2JqZWN0KQorICAgIHsKKyAgICAgICAgQXJndW1lbnRDb2RlcjxVICo+OjplbmNvZGUo
ZW5jb2Rlciwgb2JqZWN0LmdldCgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VSA9IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8Q29uZm9ybXNUb1NlY3VyZUNvZGluZzxVPjo6dmFsdWU+
KiA9IG51bGxwdHI+CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPFU+PiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHJldHVybiBkZWNvZGVPYmplY3Q8
VT4oZGVjb2Rlcik7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCisKKyNlbmRpZiAv
LyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0FyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1
bWVudENvZGVyc0NvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhNGY2MmE4OTRmYTlmYzEyYWViNGI0NzUy
NDY0ZTJkYmQ2MGUxYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ29jb2EuaCIKKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCisjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgorCituYW1lc3BhY2UgSVBD
IHsKKwordm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgaWQgPE5TU2VjdXJlQ29kaW5nPiBv
YmplY3QpCit7CisgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisgICAgW2Fy
Y2hpdmVyIGVuY29kZU9iamVjdDpvYmplY3QgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVj
dEtleV07CisgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKKworICAgIElQQzo6ZW5jb2Rl
KGVuY29kZXIsIChfX2JyaWRnZSBDRkRhdGFSZWYpW2FyY2hpdmVyIGVuY29kZWREYXRhXSk7Cit9
CisKK3N0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkIDxOU1NlY3VyZUNvZGluZz4+PiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgTlNBcnJheTxDbGFzcz4gKmFsbG93ZWRDbGFzc2VzKQoreworICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CisgICAgaWYgKCFkZWNvZGUoZGVjb2RlciwgZGF0
YSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIHVuYXJjaGl2ZXIg
PSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkp
OworICAgIEB0cnkgeworICAgICAgICBpZCByZXN1bHQgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmpl
Y3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhBcnJheTphbGxvd2VkQ2xhc3Nlc10gZm9yS2V5Ok5T
S2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgICAgIEFTU0VSVChbcmVzdWx0IGNvbmZv
cm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSk7CisgICAgICAgIHJldHVy
biB7IHJlc3VsdCB9OworICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Cisg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBvYmplY3Qgb2YgY2xhc3NlcyAlQDog
JUAiLCBhbGxvd2VkQ2xhc3NlcywgZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICB9IEBmaW5hbGx5IHsKKyAgICAgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2Rp
bmddOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgSVBDCisKKyNlbmRpZiAvLyBQTEFURk9S
TShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRl
Y3Rpb25SZXN1bHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25S
ZXN1bHQuaAppbmRleCBhMDg4OGY5MTg5NmI0OTVkYTgyZjk3MGI4NmFkNTEwY2Y1YWQzY2VmLi4y
Yzk5YjRiZGVkODdjZDc3NjY3NmE3ZGFiMjc2NWM3NThjY2VlZTIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0LmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCmluZGV4IGRhZmVkOWYwNWI3
Y2JhMzUxZjE3Y2ZkOGVmMzA3YTM1OTA5MWY2N2YuLmYxYTkwYjViNDhjMzY5ZjBmYzNhYTM1YzUx
OGE2NzVmMzI4ZWY2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0Rh
dGFEZXRlY3Rpb25SZXN1bHQubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0
YURldGVjdGlvblJlc3VsdC5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiRGF0YURldGVjdGlvblJlc3VsdC5oIgogCi0jaW1wb3J0ICJBcmd1bWVudENv
ZGVyc0NGLmgiCisjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NvY29hLmgiCiAjaW1wb3J0ICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvRGF0YURldGVjdG9y
c0NvcmVTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+
CkBAIC00MSwyNyArNDEsMTcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgRGF0YURldGVj
dGlvblJlc3VsdDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBh
dXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIgZW5jb2RlT2Jq
ZWN0OnJlc3VsdHMuZ2V0KCkgZm9yS2V5OkAiZGF0YURldGVjdG9yUmVzdWx0cyJdOwotICAgIElQ
Qzo6ZW5jb2RlKGVuY29kZXIsIChfX2JyaWRnZSBDRkRhdGFSZWYpYXJjaGl2ZXIuZ2V0KCkuZW5j
b2RlZERhdGEpOworICAgIGVuY29kZXIgPDwgcmVzdWx0czsKIH0KIAogc3RkOjpvcHRpb25hbDxE
YXRhRGV0ZWN0aW9uUmVzdWx0PiBEYXRhRGV0ZWN0aW9uUmVzdWx0OjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7Ci0gICAgaWYg
KCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRhKSkKKyAgICBhdXRvIHJlc3VsdHMgPSBJUEM6OmRl
Y29kZU9iamVjdDxOU0FycmF5PihkZWNvZGVyLCBAWyBbTlNBcnJheSBjbGFzc10sIGdldEREU2Nh
bm5lclJlc3VsdENsYXNzKCkgXSk7CisgICAgaWYgKCFyZXN1bHRzKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgRGF0YURldGVjdGlvblJlc3VsdCByZXN1bHQ7Ci0gICAgYXV0
byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKChfX2JyaWRnZSBOU0RhdGEg
KilkYXRhLmdldCgpKTsKLSAgICBAdHJ5IHsKLSAgICAgICAgcmVzdWx0LnJlc3VsdHMgPSBbdW5h
cmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhBcnJheTpAWyBbTlNB
cnJheSBjbGFzc10sIGdldEREU2Nhbm5lclJlc3VsdENsYXNzKCldIF0gZm9yS2V5OkAiZGF0YURl
dGVjdG9yUmVzdWx0cyJdOwotICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7
Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBOU0FycmF5IG9mIEREU2NhblJl
c3VsdDogJUAiLCBleGNlcHRpb24pOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
IH0KLSAgICAKLSAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgcmVzdWx0LnJl
c3VsdHMgPSBXVEZNb3ZlKCpyZXN1bHRzKTsKICAgICByZXR1cm4geyBXVEZNb3ZlKHJlc3VsdCkg
fTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCAxNjQ5ZDJlYzgxOGFkOGNkYjQ0ODRm
YzRkNjMzYzgxMjZiODc4NGYwLi5lMDEzNWJkMDNlNGE2Nzc2YTAyY2Y5MTI1ZGI0NTNhODJlMmFi
OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1l
bnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShB
UFBMRV9QQVkpCiAKKyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ29jb2EuaCIKICNpbXBvcnQgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXMuaD4KICNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KQEAgLTM4LDMyICsz
OSwxNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlBheW1lbnQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6
UGF5bWVudCYgcGF5bWVudCkKIHsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIo
KTsKLSAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnBheW1lbnQucGtQYXltZW50KCkgZm9yS2V5
Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0gICAgW2FyY2hpdmVyIGZpbmlzaEVuY29k
aW5nXTsKLQotICAgIGF1dG8gZGF0YSA9IGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhOwotICAg
IGVuY29kZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2Rh
dGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgZW5jb2RlciA8PCBwYXltZW50LnBrUGF5
bWVudCgpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQYXltZW50JiBwYXltZW50KQorc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYXltZW50PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJl
ZmVyZW5jZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9j
XSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0
IHZvaWQqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUo
KSBmcmVlV2hlbkRvbmU6Tk9dKTsKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hp
dmVyRnJvbURhdGEoZGF0YS5nZXQoKSk7Ci0gICAgQHRyeSB7Ci0gICAgICAgIFBLUGF5bWVudCAq
cGtQYXltZW50ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldFBLUGF5
bWVudENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0gICAgICAg
IHBheW1lbnQgPSBQYXltZW50KHBrUGF5bWVudCk7Ci0gICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9u
ICpleGNlcHRpb24pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5
bWVudDogJUAiLCBleGNlcHRpb24pOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAg
IGF1dG8gcGF5bWVudCA9IGRlY29kZU9iamVjdDxQS1BheW1lbnQ+KGRlY29kZXIsIFBBTDo6Z2V0
UEtQYXltZW50Q2xhc3MoKSk7CisgICAgaWYgKCFwYXltZW50KQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOwotICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBQYXltZW50IHsgV1RGTW92ZSgqcGF5bWVudCkgfTsKIH0KIAog
dm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0Pjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0
aW9uUmVzdWx0JiByZXN1bHQpCkBAIC04MywzOCArNjgsMjIgQEAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQ
YXltZW4KICAgICBkZWNvZGVyID4+IGVycm9yczsKICAgICBpZiAoIWVycm9ycykKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAKKwogICAgIHJldHVybiB7eyBXVEZNb3ZlKCpzdGF0
dXMpLCBXVEZNb3ZlKCplcnJvcnMpIH19OwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6UGF5bWVudENvbnRhY3Q+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29y
ZTo6UGF5bWVudENvbnRhY3QmIHBheW1lbnRDb250YWN0KQogewotICAgIGF1dG8gYXJjaGl2ZXIg
PSBzZWN1cmVBcmNoaXZlcigpOwotICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cGF5bWVudENv
bnRhY3QucGtDb250YWN0KCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0g
ICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKLQotICAgIGF1dG8gZGF0YSA9IGFyY2hpdmVy
LmdldCgpLmVuY29kZWREYXRhOwotICAgIGVuY29kZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAg
ZW5jb2RlciA8PCBwYXltZW50Q29udGFjdC5wa0NvbnRhY3QoKTsKIH0KIAotYm9vbCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250YWN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JiBwYXltZW50Q29udGFjdCkKK3N0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENv
bnRhY3Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2Up
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNE
YXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19j
YXN0PGNvbnN0IHZvaWQqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJl
bmNlLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1
cmVVbmFyY2hpdmVyRnJvbURhdGEoZGF0YS5nZXQoKSk7Ci0gICAgQHRyeSB7Ci0gICAgICAgIFBL
Q29udGFjdCAqcGtDb250YWN0ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6
OmdldFBLQ29udGFjdENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07
Ci0gICAgICAgIHBheW1lbnRDb250YWN0ID0gUGF5bWVudENvbnRhY3QocGtDb250YWN0KTsKLSAg
ICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBkZWNvZGUgUEtDb250YWN0OiAlQCIsIGV4Y2VwdGlvbik7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9CisgICAgYXV0byBjb250YWN0ID0gZGVjb2RlT2JqZWN0PFBLQ29u
dGFjdD4oZGVjb2RlciwgUEFMOjpnZXRQS0NvbnRhY3RDbGFzcygpKTsKKyAgICBpZiAoIWNvbnRh
Y3QpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBbdW5hcmNoaXZlciBmaW5p
c2hEZWNvZGluZ107Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFdlYkNvcmU6OlBheW1l
bnRDb250YWN0IHsgV1RGTW92ZSgqY29udGFjdCkgfTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlBheW1lbnRFcnJvcj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBX
ZWJDb3JlOjpQYXltZW50RXJyb3ImIGVycm9yKQpAQCAtMTQ2LDYyICsxMTUsMzAgQEAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYXltZW50RXJyb3I+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5
bWVudEVycm9yPjo6ZGVjb2QKIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRN
ZXJjaGFudFNlc3Npb24+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6
UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYgcGF5bWVudE1lcmNoYW50U2Vzc2lvbikKIHsKLSAgICBh
dXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIgZW5jb2RlT2Jq
ZWN0OnBheW1lbnRNZXJjaGFudFNlc3Npb24ucGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKCkgZm9y
S2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0gICAgW2FyY2hpdmVyIGZpbmlzaEVu
Y29kaW5nXTsKLQotICAgIGF1dG8gZGF0YSA9IGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhOwot
ICAgIGVuY29kZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
W2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgZW5jb2RlciA8PCBwYXltZW50TWVy
Y2hhbnRTZXNzaW9uLnBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbigpOwogfQogCi1ib29sIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbj46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJiBwYXltZW50TWVyY2hh
bnRTZXNzaW9uKQorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9u
PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5j
ZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0
V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQq
PihkYXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVl
V2hlbkRvbmU6Tk9dKTsKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJv
bURhdGEoZGF0YS5nZXQoKSk7Ci0gICAgQHRyeSB7Ci0gICAgICAgIFBLUGF5bWVudE1lcmNoYW50
U2Vzc2lvbiAqcGtQYXltZW50TWVyY2hhbnRTZXNzaW9uID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2Jq
ZWN0T2ZDbGFzczpQQUw6OmdldFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNsYXNzKCkgZm9yS2V5
Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0gICAgICAgIHBheW1lbnRNZXJjaGFudFNl
c3Npb24gPSBQYXltZW50TWVyY2hhbnRTZXNzaW9uKHBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbik7
Ci0gICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbjogJUAiLCBleGNl
cHRpb24pOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGF1dG8gcGF5bWVudE1l
cmNoYW50U2Vzc2lvbiA9IGRlY29kZU9iamVjdDxQS1BheW1lbnRNZXJjaGFudFNlc3Npb24+KGRl
Y29kZXIsIFBBTDo6Z2V0UEtQYXltZW50TWVyY2hhbnRTZXNzaW9uQ2xhc3MoKSk7CisgICAgaWYg
KCFwYXltZW50TWVyY2hhbnRTZXNzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOwotICAgIHJldHVybiB0cnVlOworICAg
IHJldHVybiBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uIHsgV1RGTW92ZSgqcGF5bWVu
dE1lcmNoYW50U2Vzc2lvbikgfTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBh
eW1lbnRNZXRob2Q+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5
bWVudE1ldGhvZCYgcGF5bWVudE1ldGhvZCkKIHsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJl
QXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnBheW1lbnRNZXRob2QucGtQ
YXltZW50TWV0aG9kKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0gICAg
W2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKLQotICAgIGF1dG8gZGF0YSA9IGFyY2hpdmVyLmdl
dCgpLmVuY29kZWREYXRhOwotICAgIGVuY29kZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgZW5j
b2RlciA8PCBwYXltZW50TWV0aG9kLnBrUGF5bWVudE1ldGhvZCgpOwogfQogCi1ib29sIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJiBwYXltZW50TWV0aG9kKQorc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYXltZW50TWV0aG9kPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRo
b2Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRh
IGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0
PGNvbnN0IHZvaWQqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNl
LnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVV
bmFyY2hpdmVyRnJvbURhdGEoZGF0YS5nZXQoKSk7Ci0gICAgQHRyeSB7Ci0gICAgICAgIFBLUGF5
bWVudE1ldGhvZCAqcGtQYXltZW50TWV0aG9kID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZD
bGFzczpQQUw6OmdldFBLUGF5bWVudE1ldGhvZENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZl
Um9vdE9iamVjdEtleV07Ci0gICAgICAgIHBheW1lbnRNZXRob2QgPSBQYXltZW50TWV0aG9kKHBr
UGF5bWVudE1ldGhvZCk7Ci0gICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsK
LSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVudDogJUAiLCBleGNl
cHRpb24pOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGF1dG8gcGF5bWVudE1l
dGhvZCA9IGRlY29kZU9iamVjdDxQS1BheW1lbnRNZXRob2Q+KGRlY29kZXIsIFBBTDo6Z2V0UEtQ
YXltZW50TWV0aG9kQ2xhc3MoKSk7CisgICAgaWYgKCFwYXltZW50TWV0aG9kKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOwot
ICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBQYXltZW50TWV0aG9kIHsgV1RGTW92ZSgqcGF5
bWVudE1ldGhvZCkgfTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRN
ZXRob2RVcGRhdGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5
bWVudE1ldGhvZFVwZGF0ZSYgdXBkYXRlKQpAQCAtMjU0LDIwICsxOTEsMjIgQEAgYm9vbCBBcmd1
bWVudENvZGVyPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Pjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIEFwcGwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlcXVlc3Quc2V0UmVx
dWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkcyhyZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzKTsK
IAotICAgIFBheW1lbnRDb250YWN0IGJpbGxpbmdDb250YWN0OwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYmlsbGluZ0NvbnRhY3QpKQorICAgIHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbnRhY3Q+
IGJpbGxpbmdDb250YWN0OworICAgIGRlY29kZXIgPj4gYmlsbGluZ0NvbnRhY3Q7CisgICAgaWYg
KCFiaWxsaW5nQ29udGFjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlcXVlc3Quc2V0
QmlsbGluZ0NvbnRhY3QoYmlsbGluZ0NvbnRhY3QpOworICAgIHJlcXVlc3Quc2V0QmlsbGluZ0Nv
bnRhY3QoKmJpbGxpbmdDb250YWN0KTsKIAogICAgIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0OjpDb250YWN0RmllbGRzIHJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoKHJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXF1ZXN0LnNldFJlcXVpcmVkU2hpcHBpbmdDb250YWN0
RmllbGRzKHJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzKTsKIAotICAgIFBheW1lbnRDb250
YWN0IHNoaXBwaW5nQ29udGFjdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoaXBwaW5nQ29u
dGFjdCkpCisgICAgc3RkOjpvcHRpb25hbDxQYXltZW50Q29udGFjdD4gc2hpcHBpbmdDb250YWN0
OworICAgIGRlY29kZXIgPj4gc2hpcHBpbmdDb250YWN0OworICAgIGlmICghc2hpcHBpbmdDb250
YWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVxdWVzdC5zZXRTaGlwcGluZ0NvbnRh
Y3Qoc2hpcHBpbmdDb250YWN0KTsKKyAgICByZXF1ZXN0LnNldFNoaXBwaW5nQ29udGFjdCgqc2hp
cHBpbmdDb250YWN0KTsKIAogICAgIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpNZXJj
aGFudENhcGFiaWxpdGllcyBtZXJjaGFudENhcGFiaWxpdGllczsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKG1lcmNoYW50Q2FwYWJpbGl0aWVzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbi5tbQppbmRleCAxYzExZmY4ODU3NzRhZDQyNDQwN2E2MGIxZTc5Y2EwNWNlY2M2ZWZhLi4y
MjhmYjU4YzJmNTljMWQ0NzAxY2U3NTU3MmJhYmZlZjM3ODRmNTRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC05MjAsMTMgKzkyMCwxMyBAQCBDU3RyaW5nIFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgICAgICAgICBU
ZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHRzKTsKICAgICAgICAgICAgIHRzIDw8IGNyZWF0
ZWRMYXllci50eXBlIDw8IiAiIDw8IGNyZWF0ZWRMYXllci5sYXllcklEOwogICAgICAgICAgICAg
c3dpdGNoIChjcmVhdGVkTGF5ZXIudHlwZSkgewotICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6CisgICAgICAgICAgICBjYXNlIFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKICAgICAgICAgICAgICAg
ICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQg
PDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKKyAgICAgICAgICAgIGNh
c2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5
ZXI6CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXll
ci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CisgICAgICAgICAg
ICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgICAg
ICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0Nv
bnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZh
dWx0OgpAQCAtOTM4LDcgKzkzOCw3IEBAIENTdHJpbmcgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OmRlc2NyaXB0aW9uKCkgY29uc3QKICAgICBkdW1wQ2hhbmdlZExheWVycyh0cywgbV9jaGFu
Z2VkTGF5ZXJQcm9wZXJ0aWVzKTsKIAogICAgIGlmICghbV9kZXN0cm95ZWRMYXllcklEcy5pc0Vt
cHR5KCkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eTxWZWN0b3I8R3JhcGhpY3NMYXllcjo6UGxh
dGZvcm1MYXllcklEPj4oImRlc3Ryb3llZC1sYXllcnMiLCBtX2Rlc3Ryb3llZExheWVySURzKTsK
KyAgICAgICAgdHMuZHVtcFByb3BlcnR5PFZlY3RvcjxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQ
bGF0Zm9ybUxheWVySUQ+PigiZGVzdHJveWVkLWxheWVycyIsIG1fZGVzdHJveWVkTGF5ZXJJRHMp
OwogCiAgICAgaWYgKG1fZWRpdG9yU3RhdGUpIHsKICAgICAgICAgVGV4dFN0cmVhbTo6R3JvdXBT
Y29wZSBzY29wZSh0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCmluZGV4IDBkZmI2ZThmMTlkNDIwZTk4N2NjNDg4MDQ5NjcxNGZkODEwZmU5OGUuLjA5
MDliNGQxOWNhMDg5NWM1NDMwNWY1ZjU0Y2RhMGMwNDkzYTg4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC02MDEsNyArNjAxLDcgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzPiB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVu
dD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5
bWVudCYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6UGF5bWVu
dCYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnQ+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiB7CkBAIC02MTEsNyArNjExLDcgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJl
c3VsdD4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1l
bnRDb250YWN0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJD
b3JlOjpQYXltZW50Q29udGFjdCYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwg
V2ViQ29yZTo6UGF5bWVudENvbnRhY3QmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYXltZW50Q29udGFjdD4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEVycm9yPiB7CkBAIC02MjEsMTIg
KzYyMSwxMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1l
bnRFcnJvcj4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBh
eW1lbnRNZXJjaGFudFNlc3Npb24+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKLSAgICBzdGF0aWMgYm9v
bCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPiBk
ZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpQYXltZW50TWV0aG9kPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2Rl
KERlY29kZXImLCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJik7CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0
ZT4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCmluZGV4IGYxZTBjM2E2MzU2ZjAzYjI2ODA5YzYz
NzJlODhmZjQ1NWFjMTU5OTcuLjAzNDU1ZTU1NWI3NzI1NmUyNjE2MGExNDFmMGRmYTI1ZjAyNzlj
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgi
CiAKLSNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJz
Q29jb2EuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KQEAgLTc2LDEwICs3Niw3IEBAIHZvaWQgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAgICAgZW5jb2RlciA8PCBpc0RhdGFEZXRlY3Rvckxpbms7CiAgICAgaWYgKGlzRGF0YURl
dGVjdG9yTGluaykgewogICAgICAgICBlbmNvZGVyIDw8IGRhdGFEZXRlY3RvcklkZW50aWZpZXI7
Ci0gICAgICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwotICAgICAgICBbYXJj
aGl2ZXIgZW5jb2RlT2JqZWN0OmRhdGFEZXRlY3RvclJlc3VsdHMuZ2V0KCkgZm9yS2V5OkAiZGF0
YURldGVjdG9yUmVzdWx0cyJdOwotCi0gICAgICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50
ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOworICAg
ICAgICBlbmNvZGVyIDw8IGRhdGFEZXRlY3RvclJlc3VsdHM7CiAgICAgfQogI2VuZGlmCiAjaWYg
RU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCkBAIC0xNzMsMTkgKzE3MCwxMiBAQCBib29sIEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBJbnRlcmFjdGlvbgogICAgIGlmIChyZXN1bHQuaXNEYXRhRGV0ZWN0b3JMaW5rKSB7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRhdGFEZXRlY3RvcklkZW50aWZpZXIpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBk
YXRhOwotICAgICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICAgICAgYXV0byB1bmFyY2hpdmVyID0gc2Vj
dXJlVW5hcmNoaXZlckZyb21EYXRhKChOU0RhdGEgKilkYXRhLmdldCgpKTsKLSAgICAgICAgQHRy
eSB7Ci0gICAgICAgICAgICByZXN1bHQuZGF0YURldGVjdG9yUmVzdWx0cyA9IFt1bmFyY2hpdmVy
IGRlY29kZU9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aEFycmF5OkBbIFtOU0FycmF5IGNs
YXNzXSwgZ2V0RERTY2FubmVyUmVzdWx0Q2xhc3MoKV0gXSBmb3JLZXk6QCJkYXRhRGV0ZWN0b3JS
ZXN1bHRzIl07Ci0gICAgICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0g
ICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgTlNBcnJheSBvZiBERFNjYW5S
ZXN1bHQ6ICVAIiwgZXhjZXB0aW9uKTsKKworICAgICAgICBhdXRvIGRhdGFEZXRlY3RvclJlc3Vs
dHMgPSBJUEM6OmRlY29kZU9iamVjdDxOU0FycmF5PihkZWNvZGVyLCBAWyBbTlNBcnJheSBjbGFz
c10sIGdldEREU2Nhbm5lclJlc3VsdENsYXNzKCkgXSk7CisgICAgICAgIGlmICghZGF0YURldGVj
dG9yUmVzdWx0cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworCisgICAgICAgIHJlc3Vs
dC5kYXRhRGV0ZWN0b3JSZXN1bHRzID0gV1RGTW92ZSgqZGF0YURldGVjdG9yUmVzdWx0cyk7CiAg
ICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJD
b3JlQXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzTWFjLm1tCmluZGV4IDhlMzY5NjUyMzA1NzY4NjhkNDk1ZGRiOTZiODYw
MDY5NzJhZTRjNjYuLmRhZTAzZTg2NWY4MzA4Y2E2MDJkNTVmY2I2ZjJhZWE1ZjAxMWQzN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVy
c01hYy5tbQpAQCAtMjgsNiArMjgsNyBAQAogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCiAKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKyNpbXBvcnQgIkFyZ3VtZW50Q29k
ZXJzQ29jb2EuaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUv
Q2VydGlmaWNhdGVJbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlci5oPgpAQCAtNDMxLDI2ICs0MzIsMTYgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwK
IAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZT46OmVuY29kZVBs
YXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3Bh
Y2UmIHNwYWNlKQogewotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwotICAg
IFthcmNoaXZlciBlbmNvZGVPYmplY3Q6c3BhY2UubnNTcGFjZSgpIGZvcktleTpAInByb3RlY3Rp
b25TcGFjZSJdOwotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIChfX2JyaWRnZSBDRkRhdGFSZWYp
YXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGEpOworICAgIGVuY29kZXIgPDwgc3BhY2UubnNTcGFj
ZSgpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlPjo6
ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlByb3RlY3Rpb25T
cGFjZSYgc3BhY2UpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKLSAgICBpZiAo
IUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQorICAgIGF1dG8gcGxhdGZvcm1EYXRhID0gZGVj
b2RlT2JqZWN0PE5TVVJMUHJvdGVjdGlvblNwYWNlPihkZWNvZGVyKTsKKyAgICBpZiAoIXBsYXRm
b3JtRGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB1bmFyY2hpdmVyID0g
c2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsK
LSAgICBAdHJ5IHsKLSAgICAgICAgaWYgKFJldGFpblB0cjxOU1VSTFByb3RlY3Rpb25TcGFjZT4g
bnNTcGFjZSA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TVVJMUHJvdGVjdGlv
blNwYWNlIGNsYXNzXSBmb3JLZXk6QCJwcm90ZWN0aW9uU3BhY2UiXSkKLSAgICAgICAgICAgIHNw
YWNlID0gV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlKG5zU3BhY2UuZ2V0KCkpOwotICAgIH0gQGNh
dGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIGRlY29kZSBOU1VSTFByb3RlY3Rpb25TcGFjZTogJUAiLCBleGNlcHRpb24pOwotICAgIH0K
LQotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICBzcGFjZSA9IFdlYkNvcmU6
OlByb3RlY3Rpb25TcGFjZSB7IHBsYXRmb3JtRGF0YS0+Z2V0KCkgfTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtNDc0LDEwICs0NjUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
Q3JlZGVudGlhbD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjbwogICAg
IH0KIAogICAgIGVuY29kZXIgPDwgZmFsc2U7Ci0KLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJl
QXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0Om5zQ3JlZGVudGlhbCBmb3JL
ZXk6QCJjcmVkZW50aWFsIl07Ci0gICAgSVBDOjplbmNvZGUoZW5jb2RlciwgKF9fYnJpZGdlIENG
RGF0YVJlZilhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CisgICAgZW5jb2RlciA8PCBuc0Ny
ZWRlbnRpYWw7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDcmVkZW50aWFsPjo6
ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OkNyZWRlbnRpYWwm
IGNyZWRlbnRpYWwpCkBAIC01MDksMTkgKzQ5NywxMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6Q3JlZGVudGlhbD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBX
ZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBkYXRhOwotICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCisgICAgYXV0byBu
c0NyZWRlbnRpYWwgPSBkZWNvZGVPYmplY3Q8TlNVUkxDcmVkZW50aWFsPihkZWNvZGVyKTsKKyAg
ICBpZiAoIW5zQ3JlZGVudGlhbCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB1
bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKChfX2JyaWRnZSBOU0RhdGEgKilk
YXRhLmdldCgpKTsKLSAgICBAdHJ5IHsKLSAgICAgICAgaWYgKFJldGFpblB0cjxOU1VSTENyZWRl
bnRpYWw+IG5zQ3JlZGVudGlhbCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05T
VVJMQ3JlZGVudGlhbCBjbGFzc10gZm9yS2V5OkAiY3JlZGVudGlhbCJdKQotICAgICAgICAgICAg
Y3JlZGVudGlhbCA9IFdlYkNvcmU6OkNyZWRlbnRpYWwobnNDcmVkZW50aWFsLmdldCgpKTsKLSAg
ICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBkZWNvZGUgTlNVUkxDcmVkZW50aWFsOiAlQCIsIGV4Y2VwdGlvbik7Ci0gICAg
fQotCi0gICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAgIGNyZWRlbnRpYWwgPSBX
ZWJDb3JlOjpDcmVkZW50aWFsIHsgbnNDcmVkZW50aWFsLT5nZXQoKSB9OwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC01OTgsMjAgKzU3OCwxMCBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZQog
CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIAotc3RhdGljIE5TU3RyaW5n
ICpkZXZpY2VDb250ZXh0S2V5KCkKLXsKLSAgICBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBrZXkg
PSBAImRldmljZUNvbnRleHQiOwotICAgIHJldHVybiBrZXk7Ci19Ci0KIHZvaWQgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3Jt
RGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dCYgdGFyZ2V0KQogewotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigp
OwotCiAgICAgaWYgKFtnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2Nv
bDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkKLSAgICAgICAgW2FyY2hpdmVyIGVuY29kZU9i
amVjdDp0YXJnZXQuYXZPdXRwdXRDb250ZXh0KCkgZm9yS2V5OmRldmljZUNvbnRleHRLZXkoKV07
Ci0KLSAgICBJUEM6OmVuY29kZShlbmNvZGVyLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKWFyY2hpdmVy
LmdldCgpLmVuY29kZWREYXRhKTsKKyAgICAgICAgZW5jb2RlciA8PCB0YXJnZXQuYXZPdXRwdXRD
b250ZXh0KCk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0KQpAQCAtNjE5LDIzICs1ODks
MTEgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY28KICAgICBpZiAoIVtnZXRBVk91dHB1dENvbnRl
eHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsK
LSAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoKF9f
YnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwotCi0gICAgQVZPdXRwdXRDb250ZXh0ICpjb250
ZXh0ID0gbmlsOwotICAgIEB0cnkgewotICAgICAgICBjb250ZXh0ID0gW3VuYXJjaGl2ZXIgZGVj
b2RlT2JqZWN0T2ZDbGFzczpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGZvcktleTpkZXZpY2VD
b250ZXh0S2V5KCldOwotICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiVGhlIHRhcmdldCBwaWNrZXIgYmVpbmcgZGVjb2RlZCBpcyBub3Qg
YW4gQVZPdXRwdXRDb250ZXh0LiIpOworICAgIGF1dG8gY29udGV4dCA9IGRlY29kZU9iamVjdDxB
Vk91dHB1dENvbnRleHQ+KGRlY29kZXIsIGdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkpOworICAg
IGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAotICAgIHRhcmdl
dCA9IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KGNvbnRleHQpOwotICAgIAot
ICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICB0YXJnZXQgPSBXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB7IGNvbnRleHQtPmdldCgpIH07CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJIaXRU
ZXN0UmVzdWx0RGF0YS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJIaXRUZXN0UmVz
dWx0RGF0YS5tbQppbmRleCA1ODhjNWU1MThhMjQ5N2YzNThmNGI4MmNiYWFjOTQxOGQ5YWQxMGMw
Li41ZGJiNDEzZWI1YTcwYjY2ZjFhZTM3Y2IzZTIzYWU3NDA0ZmM2MWM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkhpdFRlc3RSZXN1bHREYXRhLm1tCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsMTAg
KzQ1LDcgQEAgdm9pZCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6cGxhdGZvcm1FbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGlmICghaGFzQWN0aW9uQ29udGV4dCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7Ci0gICAg
W2FyY2hpdmVyIGVuY29kZU9iamVjdDpkZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0LmdldCgpIGZv
cktleTpAImFjdGlvbkNvbnRleHQiXTsKLQotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIChfX2Jy
aWRnZSBDRkRhdGFSZWYpYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGEpOworICAgIGVuY29kZXIg
PDwgZGV0ZWN0ZWREYXRhQWN0aW9uQ29udGV4dDsKIAogICAgIGVuY29kZXIgPDwgZGV0ZWN0ZWRE
YXRhQm91bmRpbmdCb3g7CiAgICAgZW5jb2RlciA8PCBkZXRlY3RlZERhdGFPcmlnaW5hdGluZ1Bh
Z2VPdmVybGF5OwpAQCAtNjgsMjAgKzY1LDEyIEBAIGJvb2wgV2ViSGl0VGVzdFJlc3VsdERhdGE6
OnBsYXRmb3JtRGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViSGl0VGVzdFJlc3VsCiAg
ICAgaWYgKCFoYXNBY3Rpb25Db250ZXh0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBBU1NF
UlQoRGF0YURldGVjdG9yc0xpYnJhcnkoKSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBk
YXRhOwotICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCisgICAgCisgICAgYXV0
byBkZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0ID0gSVBDOjpkZWNvZGVPYmplY3Q8RERBY3Rpb25D
b250ZXh0PihkZWNvZGVyLCBnZXREREFjdGlvbkNvbnRleHRDbGFzcygpKTsKKyAgICBpZiAoIWRl
dGVjdGVkRGF0YUFjdGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1
dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoX19icmlkZ2UgTlNEYXRh
ICopZGF0YS5nZXQoKSk7Ci0gICAgQHRyeSB7Ci0gICAgICAgIGhpdFRlc3RSZXN1bHREYXRhLmRl
dGVjdGVkRGF0YUFjdGlvbkNvbnRleHQgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNz
OmdldEREQWN0aW9uQ29udGV4dENsYXNzKCkgZm9yS2V5OkAiYWN0aW9uQ29udGV4dCJdOwotICAg
IH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIGRlY29kZSBEREFjdGlvbkNvbnRleHQ6ICVAIiwgZXhjZXB0aW9uKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNv
ZGluZ107CisgICAgaGl0VGVzdFJlc3VsdERhdGEuZGV0ZWN0ZWREYXRhQWN0aW9uQ29udGV4dCA9
IFdURk1vdmUoKmRldGVjdGVkRGF0YUFjdGlvbkNvbnRleHQpOwogCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5kZXRlY3RlZERhdGFCb3VuZGluZ0JveCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA2YWM4ZmVjMTZjZTky
ZWJmYTcxNmRlMzJiYTA0NTc5YWZkMjM3NTdmLi44NjQzZGFlNmJlNDM2YjhlZmNmNzljMTAxNTA4
ZjI1NjViNDJhMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xMjIsNiArMTIyLDcgQEAg
U2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1t
CiAKIFNoYXJlZC9Db2NvYS9BUElEYXRhQ29jb2EubW0KIFNoYXJlZC9Db2NvYS9BUElPYmplY3Qu
bW0KK1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCiBTaGFyZWQvQ29jb2EvQ2hp
bGRQcm9jZXNzQ29jb2EubW0KIFNoYXJlZC9Db2NvYS9Db21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyLm1tCiBTaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjgxOTA2OTNkM2Ez
ZmVmZmViMGVlY2I2NWI2ZjM0YTJiODk0OTRiMy4uNjFkOTQ4MWY1MzJjZTc5NDNjYzllNjc0NjBi
MmJiODAyMmMzNzZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMjY1LDYgKzEyNjUsNyBAQAogCQlBMTNCM0RBMjIwN0YzOURFMDA5
MEM1OEQgLyogTW9iaWxlV2lGaVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTEzQjNEQTEyMDdGMzlERTAwOTBDNThEIC8qIE1vYmlsZVdpRmlTUEku
aCAqLzsgfTsKIAkJQTEzREM2ODIyMDdBQTZCMjAwNjZFRjcyIC8qIFdLQXBwbGljYXRpb25TdGF0
ZVRyYWNraW5nVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTEzREM2ODAyMDdBQTZCMjAwNjZFRjcyIC8qIFdLQXBwbGljYXRpb25TdGF0ZVRyYWNr
aW5nVmlldy5oICovOyB9OwogCQlBMTVFRURFNjFFMzAxQ0VFMDAwMDY5QjAgLyogV0tQYXNzd29y
ZFZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
NUVFREU0MUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oICovOyB9OworCQlBMTc1
QzQ0QTIxQUEzMTcxMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3NUM0NDkyMUFBMzE3MDAwMDAz
N0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EuaCAqLzsgfTsKIAkJQTE4MkQ1QjUxQkU2QkQyNTAw
ODdBN0NDIC8qIEFjY2Vzc2liaWxpdHlJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExODJENUIzMUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmls
aXR5SU9TLmggKi87IH07CiAJCUExOUREM0MwMUQwN0QxNjgwMEFDODIzQiAvKiBfV0tXZWJWaWV3
UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTE5REQzQkYxRDA3RDE2ODAwQUM4MjNCIC8qIF9XS1dlYlZpZXdQcmlu
dEZvcm1hdHRlckludGVybmFsLmggKi87IH07CiAJCUExQTRGRTVBMThEQ0U5RkEwMEI1RUE4QSAv
KiBfV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTFBNEZFNTcxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM4MTksNiArMzgyMCw4
IEBACiAJCUExM0RDNjgxMjA3QUE2QjIwMDY2RUY3MiAvKiBXS0FwcGxpY2F0aW9uU3RhdGVUcmFj
a2luZ1ZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0FwcGxpY2F0aW9uU3RhdGVUcmFj
a2luZ1ZpZXcubW07IHBhdGggPSBpb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTVFRURFMzFFMzAxQ0VFMDAwMDY5QjAg
LyogV0tQYXNzd29yZFZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBXS1Bhc3N3b3JkVmlldy5tbTsgcGF0aCA9IGlvcy9XS1Bhc3N3b3JkVmlldy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE1RUVERTQxRTMwMUNFRTAwMDA2OUIwIC8qIFdL
UGFzc3dvcmRWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUGFzc3dv
cmRWaWV3Lmg7IHBhdGggPSBpb3MvV0tQYXNzd29yZFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTE3NUM0NDkyMUFBMzE3MDAwMDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29j
b2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJndW1lbnRDb2RlcnNDb2Nv
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc1QzQ0QjIxQUEzMzFCMDAwMDM3
RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExODJENUIy
MUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eUlPUy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTE4MkQ1QjMxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2liaWxp
dHlJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eUlP
Uy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTlERDNCRjFEMDdEMTY4MDBBQzgy
M0IgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxNzAsNiArNjE3Myw4IEBACiAJCQljaGlsZHJl
biA9ICgKIAkJCQkxQTFFRjE5NzFBMUQ1QjQyMDAyMzIwMEEgLyogQVBJRGF0YUNvY29hLm1tICov
LAogCQkJCTM3OEUxQTNCMTgxRUQ2RkYwMDMxMDA3QSAvKiBBUElPYmplY3QubW0gKi8sCisJCQkJ
QTE3NUM0NDkyMUFBMzE3MDAwMDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EuaCAqLywKKwkJ
CQlBMTc1QzQ0QjIxQUEzMzFCMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5tbSAqLywK
IAkJCQkxQTY5OEYxNzFFNDkxMDIyMDA2NEU4ODEgLyogQ2hpbGRQcm9jZXNzQ29jb2EubW0gKi8s
CiAJCQkJMzdCRUM0REYxOTQ5MTQ4NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXIuaCAqLywKIAkJCQkzN0JFQzRERTE5NDkxNDg2MDA4QjQyODYgLyogQ29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlci5tbSAqLywKQEAgLTg4NzUsNyArODg4MCw2IEBACiAJCQkJN0E4QTlE
NUExRUYxMzAyOTAwOTgwMUFFIC8qIEFQSUluamVjdGVkQnVuZGxlQnVuZGxlQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk3QThBOUQ1ODFFRjExOUIwMDA5ODAxQUUgLyogQVBJSW5qZWN0ZWRC
dW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NzUxMjMxMURGMERFRTIwMDhBMzUx
QyAvKiBBUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
RTRFNTdGNkIyMUE4M0IxMjAwMzQ1RjNDIC8qIFJlbW90ZUxheWVyVHJlZU5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTM3NjkwNzlFMThGMzQwQTIwMDFERkYwNCAvKiBBUElJbmplY3RlZEJ1bmRs
ZUZvcm1DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBM0FDRTFCMUVFRUY3OUIwMEE4NjRB
NCAvKiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdBOEE5RDVDMUVGMTQ1OTgwMDk4MDFBRSAvKiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VSZXNv
dXJjZUxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtODkxNiw2ICs4OTIwLDcgQEAKIAkJ
CQkxQUVGRDI3OTExRDE2QzgxMDA4MjE5RDMgLyogQXJndW1lbnRDb2Rlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFFRkQyRjcxMUQxODA3QjAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXJzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUFGMEM0QTEyQjE2MzM0MDA4RTQ5RTIgLyogQXJndW1lbnRDb2Rl
cnNDRi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE3NUM0NEEyMUFBMzE3MTAwMDAzN0QwIC8qIEFy
Z3VtZW50Q29kZXJzQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzlGRDlDMTM0RDM4MDYw
MDE1Qjg4MyAvKiBBcmd1bWVudENvZGVyc01hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxQTBC
RDIxQTQ4RTZDNjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDNTlDNEE1OTE4QjgxMTc0MDA3QkRDQjYgLyogQXNzaXN0ZWROb2RlSW5mb3JtYXRp
b24uaCBpbiBIZWFkZXJzICovLApAQCAtOTIxNyw2ICs5MjIyLDcgQEAKIAkJCQkxQUIxNkFFMjE2
NDg2NTZEMDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGMjRBMkUxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBM0Q3NUMx
NjUxQjQ0RjAwODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCUU0RTU3RjZCMjFBODNCMTIwMDM0NUYzQyAvKiBSZW1vdGVMYXllclRyZWVOb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRERFMEFGQTE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJU
cmVlUHJvcGVydHlBcHBsaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkYyNjRBMDFBMUZGOUND
MDAxRkU3NTkgLyogUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUYxQUM2QzE2NTE3NTlFMDBDMTdEN0YgLyogUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355576</attachid>
            <date>2018-11-24 20:48:07 -0800</date>
            <delta_ts>2018-11-24 21:04:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191948-20181124204758.patch</filename>
            <type>text/plain</type>
            <size>51138</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ4M2MyN2FkZDk4OWI2
ZjBlNmFlNDM2NDU4M2RmNDUyNWI4NmIyYi4uNjlmMmI0OTI4MDAyYjY1NDNiYjk5N2NmMGU2MTYy
OTg0YjAyYjVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTExLTI0ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIE1ha2UgaXQgZWFz
aWVyIHRvIGVuY29kZSBOU09iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MTk0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Lmg6CisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29udGFjdC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbjo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbik6CisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kLmg6CisKIDIwMTgtMTEtMjQgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBGaXggYSBmZXcg
bG9jYWxpemFibGUgc3RyaW5nIGRlc2NyaXB0aW9ucyBpbiBXZWJFZGl0Q29tbWFuZFByb3h5LmNw
cCBhbmQgV2ViRWRpdG9yQ2xpZW50Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA4NDk0ZjI3NDYw
NWRlMDYyMDY2ODFkZTc3YTJmMzliNWM2M2FmY2Q2Li5mYjk0MWNhZWJhMDY5MDAyOWYyMTFhOTVk
NTQ2MWY0OGRlYTlmMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
OC0xMS0yNCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29h
XSBNYWtlIGl0IGVhc2llciB0byBlbmNvZGUgTlNPYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE5NDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5o
OgorCiAyMDE4LTExLTI0ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ29jb2FdIFNPRlRfTElOS19DTEFTU19GT1Jfe0hFQURFUixTT1VSQ0V9IHNob3VsZCBnZW5l
cmF0ZSBhIG1vcmUgY29uY2lzZSBnZXR0ZXIgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNWU1MzI1YzAz
ZDIzNzQwZTcxNmZiZjUyYTViMGMzZTBiZGFmZGI2Yy4uMzljMDcxOTUzZmJkM2U2YjRlZTdiNTRm
Yjc0ZTY2OTU1MDU2N2VmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxOC0xMS0yNCAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBNYWtlIGl0
IGVhc2llciB0byBlbmNvZGUgTlNPYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE5NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmg6
IEFkZGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVPYmplY3QpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFQ6OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmV0YWlu
UHRyPFQ+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8
VD4+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29h
Lm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9u
UmVzdWx0Lm1tLgorICAgICAgICAoSVBDOjplbmNvZGUpOgorICAgICAgICAoSVBDOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lmg6CisgICAgICAg
ICogU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW06CisgICAgICAgIChXZWJLaXQ6
OkRhdGFEZXRlY3Rpb25SZXN1bHQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRh
dGFEZXRlY3Rpb25SZXN1bHQ6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlBheW1lbnQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD46OmVuY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+OjpkZWNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNl
c3Npb24+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBh
eW1lbnRNZXJjaGFudFNlc3Npb24+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Pjo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVz
Y3JpcHRpb24gY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9u
Lm1tOgorICAgICAgICAoV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRD
b2RlcnNNYWMubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UHJvdGVj
dGlvblNwYWNlPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNyZWRlbnRpYWw+OjplbmNvZGVQbGF0
Zm9ybURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNyZWRlbnRp
YWw+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OmRldmljZUNvbnRl
eHRLZXkpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERh
dGEubW06CisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjpwbGF0Zm9ybUVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjpwbGF0
Zm9ybURlY29kZSk6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0xMS0yNCAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEZpeCBhIGZldyBs
b2NhbGl6YWJsZSBzdHJpbmcgZGVzY3JpcHRpb25zIGluIFdlYkVkaXRDb21tYW5kUHJveHkuY3Bw
IGFuZCBXZWJFZGl0b3JDbGllbnQubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50LmgKaW5kZXggODVmNjdiZWRmMmVkN2UwZTQ4MGM0NWNhMWY3YjZlZGU3YWU2OWIxZi4u
MzZmYjZmZTgyZDhjNDU5ZGY3YWQwNjUzYWZlMGQ1ZjgzZWUxY2I1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTggKzM3LDEzIEBAIHN0cnVjdCBBcHBs
ZVBheVBheW1lbnQ7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFBheW1lbnQgewogcHVibGljOgot
ICAgIFBheW1lbnQoKSA9IGRlZmF1bHQ7Ci0KLSAgICBleHBsaWNpdCBQYXltZW50KFBLUGF5bWVu
dCAqcGtQYXltZW50KQotICAgICAgICA6IG1fcGtQYXltZW50KHBrUGF5bWVudCkKLSAgICB7Ci0g
ICAgfQotCi0gICAgdmlydHVhbCB+UGF5bWVudCgpID0gZGVmYXVsdDsKKyAgICBQYXltZW50KCk7
CisgICAgZXhwbGljaXQgUGF5bWVudChSZXRhaW5QdHI8UEtQYXltZW50PiYmKTsKKyAgICB2aXJ0
dWFsIH5QYXltZW50KCk7CiAKICAgICB2aXJ0dWFsIEFwcGxlUGF5UGF5bWVudCB0b0FwcGxlUGF5
UGF5bWVudCh1bnNpZ25lZCB2ZXJzaW9uKSBjb25zdDsKIAotICAgIFBLUGF5bWVudCAqcGtQYXlt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9wa1BheW1lbnQuZ2V0KCk7IH0KKyAgICBQS1BheW1lbnQg
KnBrUGF5bWVudCgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFJldGFpblB0cjxQS1BheW1lbnQ+
IG1fcGtQYXltZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50Q29udGFjdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50Q29udGFjdC5oCmluZGV4IGQwNDEyZDFkZWRhNjFiN2JmNGM1ZDY5MjdhYjA2ODE5Yjk2MmQz
MjEuLjE1NmZiZjk0YjllMDAxOWEyMzBlMjIzNTc4NGQ3NTcxNDFlYjc0Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvbnRhY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb250YWN0LmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwx
NyArMzgsMTQgQEAgc3RydWN0IEFwcGxlUGF5UGF5bWVudENvbnRhY3Q7CiAKIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIFBheW1lbnRDb250YWN0IHsKIHB1YmxpYzoKLSAgICBQYXltZW50Q29udGFjdCgp
ID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBQYXltZW50Q29udGFjdChQS0NvbnRhY3QgKnBrQ29u
dGFjdCkKLSAgICAgICAgOiBtX3BrQ29udGFjdChwa0NvbnRhY3QpCi0gICAgewotICAgIH0KLSAg
ICB2aXJ0dWFsIH5QYXltZW50Q29udGFjdCgpID0gZGVmYXVsdDsKKyAgICBQYXltZW50Q29udGFj
dCgpOworICAgIGV4cGxpY2l0IFBheW1lbnRDb250YWN0KFJldGFpblB0cjxQS0NvbnRhY3Q+JiYp
OworICAgIHZpcnR1YWwgflBheW1lbnRDb250YWN0KCk7CiAKICAgICBzdGF0aWMgUGF5bWVudENv
bnRhY3QgZnJvbUFwcGxlUGF5UGF5bWVudENvbnRhY3QodW5zaWduZWQgdmVyc2lvbiwgY29uc3Qg
QXBwbGVQYXlQYXltZW50Q29udGFjdCYpOwogICAgIHZpcnR1YWwgQXBwbGVQYXlQYXltZW50Q29u
dGFjdCB0b0FwcGxlUGF5UGF5bWVudENvbnRhY3QodW5zaWduZWQgdmVyc2lvbikgY29uc3Q7CiAK
LSAgICBQS0NvbnRhY3QgKnBrQ29udGFjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGtDb250YWN0Lmdl
dCgpOyB9CisgICAgUEtDb250YWN0ICpwa0NvbnRhY3QoKSBjb25zdDsKIAogcHJpdmF0ZToKICAg
ICBSZXRhaW5QdHI8UEtDb250YWN0PiBtX3BrQ29udGFjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKaW5kZXgg
N2VkNmIyMTU3MzA2ZWViZDA3ZTUxMTYxOGM0MzQ0NzljNTU0MzZlNy4uZGFhNzQ5NTQ5ZjUzZjVk
YTNkMzY2ZDVlNjA4MzlhMjg4MDYzYjNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsOCArNDIsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQYXltZW50TWVyY2hhbnRTZXNzaW9uIHsKIHB1
YmxpYzoKICAgICBQYXltZW50TWVyY2hhbnRTZXNzaW9uKCkgPSBkZWZhdWx0OwotICAgIGV4cGxp
Y2l0IFBheW1lbnRNZXJjaGFudFNlc3Npb24oUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICpwa1Bh
eW1lbnRNZXJjaGFudFNlc3Npb24pCi0gICAgICAgIDogbV9wa1BheW1lbnRNZXJjaGFudFNlc3Np
b24ocGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKQorICAgIGV4cGxpY2l0IFBheW1lbnRNZXJjaGFu
dFNlc3Npb24oUmV0YWluUHRyPFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbj4mJiBwa1BheW1lbnRN
ZXJjaGFudFNlc3Npb24pCisgICAgICAgIDogbV9wa1BheW1lbnRNZXJjaGFudFNlc3Npb24geyBX
VEZNb3ZlKHBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbikgfQogICAgIHsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kLmgKaW5kZXggOWNl
N2JhYTc5NDNhYmQyZGRmZjEzMWI0NDMwOTdhMmFhMDRiMTIxNS4uNGFmYmEyZjI5ZTBjMzQxY2E4
NDQwMzA1ZGMxMDhjYjQ0NGExODhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9QYXltZW50TWV0aG9kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50TWV0aG9kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTcgKzM3LDEzIEBAIHN0cnVjdCBBcHBsZVBheVBh
eW1lbnRNZXRob2Q7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFBheW1lbnRNZXRob2QgewogcHVi
bGljOgotICAgIFBheW1lbnRNZXRob2QoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB+UGF5bWVu
dE1ldGhvZCgpID0gZGVmYXVsdDsKLQotICAgIGV4cGxpY2l0IFBheW1lbnRNZXRob2QoUEtQYXlt
ZW50TWV0aG9kICpwa1BheW1lbnRNZXRob2QpCi0gICAgICAgIDogbV9wa1BheW1lbnRNZXRob2Qo
cGtQYXltZW50TWV0aG9kKQotICAgIHsKLSAgICB9CisgICAgUGF5bWVudE1ldGhvZCgpOworICAg
IGV4cGxpY2l0IFBheW1lbnRNZXRob2QoUmV0YWluUHRyPFBLUGF5bWVudE1ldGhvZD4mJik7Cisg
ICAgdmlydHVhbCB+UGF5bWVudE1ldGhvZCgpOwogCiAgICAgdmlydHVhbCBBcHBsZVBheVBheW1l
bnRNZXRob2QgdG9BcHBsZVBheVBheW1lbnRNZXRob2QoKSBjb25zdDsKIAotICAgIFBLUGF5bWVu
dE1ldGhvZCAqcGtQYXltZW50TWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9wa1BheW1lbnRNZXRo
b2QuZ2V0KCk7IH0KKyAgICBQS1BheW1lbnRNZXRob2QgKnBrUGF5bWVudE1ldGhvZCgpIGNvbnN0
OwogCiBwcml2YXRlOgogICAgIFJldGFpblB0cjxQS1BheW1lbnRNZXRob2Q+IG1fcGtQYXltZW50
TWV0aG9kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2Nv
YS9QYXltZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29h
L1BheW1lbnRDb2NvYS5tbQppbmRleCAwYjI5ZDc0N2UyNDA3YzM1OWZkY2IxNGIzYjc4YzVhZDYx
ZDJkODg2Li5mMzBhNjYzNTk1OTk3YzI2ZjljYTU4ZWU1ODg5YTg5YTczOGMzYmVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2Nv
YS5tbQpAQCAtNjYsMTIgKzY2LDI2IEBAIHN0YXRpYyBBcHBsZVBheVBheW1lbnQgY29udmVydCh1
bnNpZ25lZCB2ZXJzaW9uLCBQS1BheW1lbnQgKnBheW1lbnQpCiAKICAgICByZXR1cm4gcmVzdWx0
OwogfQorICAgIAorUGF5bWVudDo6UGF5bWVudCgpID0gZGVmYXVsdDsKKworUGF5bWVudDo6UGF5
bWVudChSZXRhaW5QdHI8UEtQYXltZW50PiYmIHBrUGF5bWVudCkKKyAgICA6IG1fcGtQYXltZW50
IHsgV1RGTW92ZShwa1BheW1lbnQpIH0KK3sKK30KKworUGF5bWVudDo6flBheW1lbnQoKSA9IGRl
ZmF1bHQ7CiAKIEFwcGxlUGF5UGF5bWVudCBQYXltZW50Ojp0b0FwcGxlUGF5UGF5bWVudCh1bnNp
Z25lZCB2ZXJzaW9uKSBjb25zdAogewogICAgIHJldHVybiBjb252ZXJ0KHZlcnNpb24sIG1fcGtQ
YXltZW50LmdldCgpKTsKIH0KIAorUEtQYXltZW50ICpQYXltZW50Ojpwa1BheW1lbnQoKSBjb25z
dAoreworICAgIHJldHVybiBtX3BrUGF5bWVudC5nZXQoKTsKK30KKwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENv
bnRhY3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5
bWVudENvbnRhY3RDb2NvYS5tbQppbmRleCBjYzk3ZmQ1ZTFmNjIzNDU5OWViODg0Y2E4MTg3ZmIy
Y2QwODU3YzY1Li5lODgyODRjNTdkMDg2Mzc5MmQzM2IxNTc5NTg0YjY1ZWYxMDM2NmEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250
YWN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9Q
YXltZW50Q29udGFjdENvY29hLm1tCkBAIC0yMDgsNiArMjA4LDE1IEBAIHN0YXRpYyBBcHBsZVBh
eVBheW1lbnRDb250YWN0IGNvbnZlcnQodW5zaWduZWQgdmVyc2lvbiwgUEtDb250YWN0ICpjb250
YWN0KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1BheW1lbnRDb250YWN0OjpQYXltZW50Q29u
dGFjdCgpID0gZGVmYXVsdDsKKworUGF5bWVudENvbnRhY3Q6OlBheW1lbnRDb250YWN0KFJldGFp
blB0cjxQS0NvbnRhY3Q+JiYgcGtDb250YWN0KQorICAgIDogbV9wa0NvbnRhY3QgeyBXVEZNb3Zl
KHBrQ29udGFjdCkgfQoreworfQorCitQYXltZW50Q29udGFjdDo6flBheW1lbnRDb250YWN0KCkg
PSBkZWZhdWx0OworCiBQYXltZW50Q29udGFjdCBQYXltZW50Q29udGFjdDo6ZnJvbUFwcGxlUGF5
UGF5bWVudENvbnRhY3QodW5zaWduZWQgdmVyc2lvbiwgY29uc3QgQXBwbGVQYXlQYXltZW50Q29u
dGFjdCYgY29udGFjdCkKIHsKICAgICByZXR1cm4gUGF5bWVudENvbnRhY3QoY29udmVydCh2ZXJz
aW9uLCBjb250YWN0KS5nZXQoKSk7CkBAIC0yMTgsNiArMjI3LDExIEBAIEFwcGxlUGF5UGF5bWVu
dENvbnRhY3QgUGF5bWVudENvbnRhY3Q6OnRvQXBwbGVQYXlQYXltZW50Q29udGFjdCh1bnNpZ25l
ZCB2ZXJzaW9uCiAgICAgcmV0dXJuIGNvbnZlcnQodmVyc2lvbiwgbV9wa0NvbnRhY3QuZ2V0KCkp
OwogfQogCitQS0NvbnRhY3QgKlBheW1lbnRDb250YWN0Ojpwa0NvbnRhY3QoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3BrQ29udGFjdC5nZXQoKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0
aG9kQ29jb2EubW0KaW5kZXggNmFlNjhjZGY4MzI2YmEwNTYzODAyNjg0MmU5ZWFmMjRhZjBkZGYx
OC4uZmQxYTg1OTM1MmQxNzM2Yzc1ZWFiOTAxZmQyZDBmNDhkMmE1OGI0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0
aG9kQ29jb2EubW0KQEAgLTEwMSwxMSArMTAxLDI1IEBAIHN0YXRpYyBBcHBsZVBheVBheW1lbnRN
ZXRob2QgY29udmVydChQS1BheW1lbnRNZXRob2QgKnBheW1lbnRNZXRob2QpCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAorUGF5bWVudE1ldGhvZDo6UGF5bWVudE1ldGhvZCgpID0gZGVmYXVsdDsK
KworUGF5bWVudE1ldGhvZDo6UGF5bWVudE1ldGhvZChSZXRhaW5QdHI8UEtQYXltZW50TWV0aG9k
PiYmIHBrUGF5bWVudE1ldGhvZCkKKyAgICA6IG1fcGtQYXltZW50TWV0aG9kIHsgV1RGTW92ZShw
a1BheW1lbnRNZXRob2QpIH0KK3sKK30KKworUGF5bWVudE1ldGhvZDo6flBheW1lbnRNZXRob2Qo
KSA9IGRlZmF1bHQ7CisKIEFwcGxlUGF5UGF5bWVudE1ldGhvZCBQYXltZW50TWV0aG9kOjp0b0Fw
cGxlUGF5UGF5bWVudE1ldGhvZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbnZlcnQobV9wa1Bh
eW1lbnRNZXRob2QuZ2V0KCkpOwogfQogCitQS1BheW1lbnRNZXRob2QgKlBheW1lbnRNZXRob2Q6
OnBrUGF5bWVudE1ldGhvZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGtQYXltZW50TWV0aG9k
LmdldCgpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y29jb2EvUGFzc0tpdFNQSS5oCmluZGV4IDNjYTM5ZmE5NmZmYWM1MDZiZDAwMDM5ODVkNmE4NjMz
YTk2ZmJjZjguLjE4OTU4ZTkyNjE0YzFlM2I2YTRmMDRhNjhhZDE0MzNhYjE5NzE4MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKQEAgLTMyNywx
MCArMzI3LDE5IEBAIHZvaWQgUEtEcmF3QXBwbGVQYXlCdXR0b24oX05vbm51bGwgQ0dDb250ZXh0
UmVmLCBDR1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsCiAKIE5TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCiAKK0BpbnRlcmZhY2UgUEtDb250YWN0ICgpIDxOU1NlY3VyZUNvZGluZz4KK0BlbmQK
KwogQGludGVyZmFjZSBQS1Bhc3NMaWJyYXJ5ICgpCiAtICh2b2lkKW9wZW5QYXltZW50U2V0dXBG
b3JNZXJjaGFudElkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBkb21haW46KE5TU3Ry
aW5nICopZG9tYWluIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9u
OwogQGVuZAogCitAaW50ZXJmYWNlIFBLUGF5bWVudCAoKSA8TlNTZWN1cmVDb2Rpbmc+CitAZW5k
CisKK0BpbnRlcmZhY2UgUEtQYXltZW50TWV0aG9kICgpIDxOU1NlY3VyZUNvZGluZz4KK0BlbmQK
KwogQGludGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0ICgpCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
c3Ryb25nKSBOU1N0cmluZyAqc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vj
b25kYXJ5SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0FyZ3VtZW50Q29kZXJzQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3Vt
ZW50Q29kZXJzQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzY4MTk3YmU5ZjExZjU1ZjViM2ExOTE1ZGQy
ODg3ODI3ZGViOGQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvQXJndW1lbnRDb2RlcnNDb2NvYS5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJBcmd1bWVudENvZGVycy5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisKKyNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK3ZvaWQgZW5jb2RlT2Jq
ZWN0KEVuY29kZXImLCBpZCA8TlNTZWN1cmVDb2Rpbmc+KTsKK3N0ZDo6b3B0aW9uYWw8UmV0YWlu
UHRyPGlkIDxOU1NlY3VyZUNvZGluZz4+PiBkZWNvZGVPYmplY3QoRGVjb2RlciYsIE5TQXJyYXk8
Q2xhc3M+ICphbGxvd2VkQ2xhc3Nlcyk7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0ZDo6b3B0
aW9uYWw8UmV0YWluUHRyPFQ+PiBkZWNvZGUoRGVjb2RlciYsIENsYXNzIGFsbG93ZWRDbGFzcyk7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxUPj4gZGVjb2Rl
KERlY29kZXImLCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsYXNzZXMgPSBAWyBbVCBjbGFzc10g
XSk7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxUPj4g
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENsYXNzIGFsbG93ZWRDbGFzcykKK3sKKyAgICByZXR1
cm4gZGVjb2RlPFQ+KGRlY29kZXIsIEBbIGFsbG93ZWRDbGFzcyBdKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4KK3N0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPFQ+PiBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgTlNBcnJheTxDbGFzcz4gKmFsbG93ZWRDbGFzc2VzKQoreworICAgIGF1dG8gcmVz
dWx0ID0gZGVjb2RlT2JqZWN0KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzKTsKKyAgICBpZiAoIXJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghKnJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciB9OworCisgICAgaWQgb2JqZWN0ID0gcmVzdWx0LT5s
ZWFrUmVmKCk7CisgICAgQVNTRVJUKFtvYmplY3QgaXNLaW5kT2ZDbGFzczphbGxvd2VkQ2xhc3Nl
c1swXV0pOworICAgIHJldHVybiB7IGFkb3B0TlMoKFQgKilvYmplY3QpIH07Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHVzaW5nIENvbmZvcm1zVG9TZWN1cmVDb2RpbmcgPSBzdGQ6OmlzX2Nv
bnZlcnRpYmxlPFQgKiwgaWQgPE5TU2VjdXJlQ29kaW5nPj47CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPFQgKj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUg
PSBULCBzdGQ6OmVuYWJsZV9pZl90PENvbmZvcm1zVG9TZWN1cmVDb2Rpbmc8VT46OnZhbHVlPiog
PSBudWxscHRyPgorICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBVICpv
YmplY3QpCisgICAgeworICAgICAgICBlbmNvZGVPYmplY3QoZW5jb2Rlciwgb2JqZWN0KTsKKyAg
ICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZXRh
aW5QdHI8VD4+IHsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSA9IFQsIHN0ZDo6ZW5hYmxlX2lm
X3Q8Q29uZm9ybXNUb1NlY3VyZUNvZGluZzxVPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJldGFpblB0cjxVPiYgb2Jq
ZWN0KQorICAgIHsKKyAgICAgICAgQXJndW1lbnRDb2RlcjxVICo+OjplbmNvZGUoZW5jb2Rlciwg
b2JqZWN0LmdldCgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSA9IFQsIHN0
ZDo6ZW5hYmxlX2lmX3Q8Q29uZm9ybXNUb1NlY3VyZUNvZGluZzxVPjo6dmFsdWU+KiA9IG51bGxw
dHI+CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPFU+PiBkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHJldHVybiBJUEM6OmRlY29kZTxVPihkZWNvZGVy
KTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKKworI2VuZGlmIC8vIFBMQVRGT1JN
KENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRD
b2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJz
Q29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI3ZGEyNjdmZjRiNmU2MGU3NzIxODA1OTlhYzhhYmJlZjY4
OTU1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3Vt
ZW50Q29kZXJzQ29jb2EubW0KQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiQXJndW1lbnRDb2RlcnNDb2NvYS5oIgorCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisKKyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKyNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CisKK25hbWVzcGFjZSBJUEMgeworCit2b2lk
IGVuY29kZU9iamVjdChFbmNvZGVyJiBlbmNvZGVyLCBpZCA8TlNTZWN1cmVDb2Rpbmc+IG9iamVj
dCkKK3sKKyAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyAgICBbYXJjaGl2
ZXIgZW5jb2RlT2JqZWN0Om9iamVjdCBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5
XTsKKyAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOworCisgICAgSVBDOjplbmNvZGUoZW5j
b2RlciwgKF9fYnJpZGdlIENGRGF0YVJlZilbYXJjaGl2ZXIgZW5jb2RlZERhdGFdKTsKK30KKwor
c3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8aWQgPE5TU2VjdXJlQ29kaW5nPj4+IGRlY29kZU9iamVj
dChEZWNvZGVyJiBkZWNvZGVyLCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsYXNzZXMpCit7Cisg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKKyAgICBpZiAoIWRlY29kZShkZWNvZGVyLCBk
YXRhKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gdW5hcmNoaXZl
ciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQo
KSk7CisgICAgQHRyeSB7CisgICAgICAgIGlkIHJlc3VsdCA9IFt1bmFyY2hpdmVyIGRlY29kZU9i
amVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aEFycmF5OmFsbG93ZWRDbGFzc2VzXSBmb3JLZXk6
TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKKyAgICAgICAgQVNTRVJUKFtyZXN1bHQgY29u
Zm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKTsKKyAgICAgICAgcmV0
dXJuIHsgcmVzdWx0IH07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsK
KyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIG9iamVjdCBvZiBjbGFzc2VzICVA
OiAlQCIsIGFsbG93ZWRDbGFzc2VzLCBleGNlcHRpb24pOworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIH0gQGZpbmFsbHkgeworICAgICAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNv
ZGluZ107CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBJUEMKKworI2VuZGlmIC8vIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURl
dGVjdGlvblJlc3VsdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlv
blJlc3VsdC5oCmluZGV4IGEwODg4ZjkxODk2YjQ5NWRhODJmOTcwYjg2YWQ1MTBjZjVhZDNjZWYu
LjJjOTliNGJkZWQ4N2NkNzc2Njc2YTdkYWIyNzY1Yzc1OGNjZWVlMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0LmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0KaW5kZXggZGFmZWQ5ZjA1
YjdjYmEzNTFmMTdjZmQ4ZWYzMDdhMzU5MDkxZjY3Zi4uOGRlNjdhMTcwYjI1YzVlYWNmM2NhZGMz
NjcyMjYxNmZiYTQyZjg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
RGF0YURldGVjdGlvblJlc3VsdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9E
YXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJEYXRhRGV0ZWN0aW9uUmVzdWx0LmgiCiAKLSNpbXBvcnQgIkFyZ3VtZW50
Q29kZXJzQ0YuaCIKKyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ29jb2EuaCIKICNpbXBvcnQgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9EYXRhRGV0ZWN0
b3JzQ29yZVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEku
aD4KQEAgLTQxLDI3ICs0MSwxNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBEYXRhRGV0
ZWN0aW9uUmVzdWx0OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAg
IGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwotICAgIFthcmNoaXZlciBlbmNvZGVP
YmplY3Q6cmVzdWx0cy5nZXQoKSBmb3JLZXk6QCJkYXRhRGV0ZWN0b3JSZXN1bHRzIl07Ci0gICAg
SVBDOjplbmNvZGUoZW5jb2RlciwgKF9fYnJpZGdlIENGRGF0YVJlZilhcmNoaXZlci5nZXQoKS5l
bmNvZGVkRGF0YSk7CisgICAgZW5jb2RlciA8PCByZXN1bHRzOwogfQogCiBzdGQ6Om9wdGlvbmFs
PERhdGFEZXRlY3Rpb25SZXN1bHQ+IERhdGFEZXRlY3Rpb25SZXN1bHQ6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKLSAgICBp
ZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQorICAgIGF1dG8gcmVzdWx0cyA9IElQQzo6
ZGVjb2RlPE5TQXJyYXk+KGRlY29kZXIsIEBbIFtOU0FycmF5IGNsYXNzXSwgZ2V0RERTY2FubmVy
UmVzdWx0Q2xhc3MoKSBdKTsKKyAgICBpZiAoIXJlc3VsdHMpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBEYXRhRGV0ZWN0aW9uUmVzdWx0IHJlc3VsdDsKLSAgICBhdXRvIHVu
YXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoKF9fYnJpZGdlIE5TRGF0YSAqKWRh
dGEuZ2V0KCkpOwotICAgIEB0cnkgewotICAgICAgICByZXN1bHQucmVzdWx0cyA9IFt1bmFyY2hp
dmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aEFycmF5OkBbIFtOU0FycmF5
IGNsYXNzXSwgZ2V0RERTY2FubmVyUmVzdWx0Q2xhc3MoKV0gXSBmb3JLZXk6QCJkYXRhRGV0ZWN0
b3JSZXN1bHRzIl07Ci0gICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIE5TQXJyYXkgb2YgRERTY2FuUmVzdWx0
OiAlQCIsIGV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQot
ICAgIAotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICByZXN1bHQucmVzdWx0
cyA9IFdURk1vdmUoKnJlc3VsdHMpOwogICAgIHJldHVybiB7IFdURk1vdmUocmVzdWx0KSB9Owog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDE2NDlkMmVjODE4YWQ4Y2RiNDQ4NGZjNGQ2
MzNjODEyNmI4Nzg0ZjAuLjBkZDVkM2M0MTgzNDQ4M2EyYzJmOGZmZjMwNzVmN2UxNzU5YzU2OTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEFQUExF
X1BBWSkKIAorI2ltcG9ydCAiQXJndW1lbnRDb2RlcnNDb2NvYS5oIgogI2ltcG9ydCAiRGF0YVJl
ZmVyZW5jZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5o
PgogI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgpAQCAtMzgsMzIgKzM5LDE2
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6UGF5bWVudD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXlt
ZW50JiBwYXltZW50KQogewotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwot
ICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cGF5bWVudC5wa1BheW1lbnQoKSBmb3JLZXk6TlNL
ZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKLSAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2Rpbmdd
OwotCi0gICAgYXV0byBkYXRhID0gYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGE7Ci0gICAgZW5j
b2RlciA8PCBEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBi
eXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICBlbmNvZGVyIDw8IHBheW1lbnQucGtQYXltZW50
KCk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlBheW1lbnQmIHBheW1lbnQpCitzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlBheW1lbnQ+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJl
bmNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGlu
aXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9p
ZCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZy
ZWVXaGVuRG9uZTpOT10pOwotICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJG
cm9tRGF0YShkYXRhLmdldCgpKTsKLSAgICBAdHJ5IHsKLSAgICAgICAgUEtQYXltZW50ICpwa1Bh
eW1lbnQgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOlBBTDo6Z2V0UEtQYXltZW50
Q2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKLSAgICAgICAgcGF5
bWVudCA9IFBheW1lbnQocGtQYXltZW50KTsKLSAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4
Y2VwdGlvbikgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgUEtQYXltZW50
OiAlQCIsIGV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgYXV0
byBwYXltZW50ID0gSVBDOjpkZWNvZGU8UEtQYXltZW50PihkZWNvZGVyLCBQQUw6OmdldFBLUGF5
bWVudENsYXNzKCkpOworICAgIGlmICghcGF5bWVudCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICByZXR1cm4gUGF5bWVudCB7IFdURk1vdmUoKnBheW1lbnQpIH07CiB9CiAKIHZvaWQg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJl
c3VsdCYgcmVzdWx0KQpAQCAtODMsMzggKzY4LDIyIEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVu
CiAgICAgZGVjb2RlciA+PiBlcnJvcnM7CiAgICAgaWYgKCFlcnJvcnMpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgCisKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqc3RhdHVzKSwg
V1RGTW92ZSgqZXJyb3JzKSB9fTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBh
eW1lbnRDb250YWN0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBh
eW1lbnRDb250YWN0JiBwYXltZW50Q29udGFjdCkKIHsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2Vj
dXJlQXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnBheW1lbnRDb250YWN0
LnBrQ29udGFjdCgpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwotICAgIFth
cmNoaXZlciBmaW5pc2hFbmNvZGluZ107Ci0KLSAgICBhdXRvIGRhdGEgPSBhcmNoaXZlci5nZXQo
KS5lbmNvZGVkRGF0YTsKLSAgICBlbmNvZGVyIDw8IERhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgIGVuY29k
ZXIgPDwgcGF5bWVudENvbnRhY3QucGtDb250YWN0KCk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJD
b3JlOjpQYXltZW50Q29udGFjdCYgcGF5bWVudENvbnRhY3QpCitzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBheW1lbnRDb250YWN0PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250YWN0
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRh
dGFSZWZlcmVuY2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhUmVmZXJlbmNlKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxj
b25zdCB2b2lkKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpKSBsZW5ndGg6ZGF0YVJlZmVyZW5jZS5z
aXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7Ci0gICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5h
cmNoaXZlckZyb21EYXRhKGRhdGEuZ2V0KCkpOwotICAgIEB0cnkgewotICAgICAgICBQS0NvbnRh
Y3QgKnBrQ29udGFjdCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6UEFMOjpnZXRQ
S0NvbnRhY3RDbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwotICAg
ICAgICBwYXltZW50Q29udGFjdCA9IFBheW1lbnRDb250YWN0KHBrQ29udGFjdCk7Ci0gICAgfSBA
Y2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gZGVjb2RlIFBLQ29udGFjdDogJUAiLCBleGNlcHRpb24pOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQorICAgIGF1dG8gY29udGFjdCA9IElQQzo6ZGVjb2RlPFBLQ29udGFjdD4o
ZGVjb2RlciwgUEFMOjpnZXRQS0NvbnRhY3RDbGFzcygpKTsKKyAgICBpZiAoIWNvbnRhY3QpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNv
ZGluZ107Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFdlYkNvcmU6OlBheW1lbnRDb250
YWN0IHsgV1RGTW92ZSgqY29udGFjdCkgfTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlBheW1lbnRFcnJvcj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3Jl
OjpQYXltZW50RXJyb3ImIGVycm9yKQpAQCAtMTQ2LDYyICsxMTUsMzAgQEAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYXltZW50RXJyb3I+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEVy
cm9yPjo6ZGVjb2QKIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFu
dFNlc3Npb24+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbiYgcGF5bWVudE1lcmNoYW50U2Vzc2lvbikKIHsKLSAgICBhdXRvIGFy
Y2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnBh
eW1lbnRNZXJjaGFudFNlc3Npb24ucGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKCkgZm9yS2V5Ok5T
S2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0gICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5n
XTsKLQotICAgIGF1dG8gZGF0YSA9IGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhOwotICAgIGVu
Y29kZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEg
Ynl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgZW5jb2RlciA8PCBwYXltZW50TWVyY2hhbnRT
ZXNzaW9uLnBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbigpOwogfQogCi1ib29sIEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbj46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJiBwYXltZW50TWVyY2hhbnRTZXNz
aW9uKQorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPiBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5
dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRh
UmVmZXJlbmNlLmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRv
bmU6Tk9dKTsKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEo
ZGF0YS5nZXQoKSk7Ci0gICAgQHRyeSB7Ci0gICAgICAgIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lv
biAqcGtQYXltZW50TWVyY2hhbnRTZXNzaW9uID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZD
bGFzczpQQUw6OmdldFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNsYXNzKCkgZm9yS2V5Ok5TS2V5
ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0gICAgICAgIHBheW1lbnRNZXJjaGFudFNlc3Npb24g
PSBQYXltZW50TWVyY2hhbnRTZXNzaW9uKHBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbik7Ci0gICAg
fSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbjogJUAiLCBleGNlcHRpb24p
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGF1dG8gcGF5bWVudE1lcmNoYW50
U2Vzc2lvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbj4oZGVjb2Rlciwg
UEFMOjpnZXRQS1BheW1lbnRNZXJjaGFudFNlc3Npb25DbGFzcygpKTsKKyAgICBpZiAoIXBheW1l
bnRNZXJjaGFudFNlc3Npb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBb
dW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJu
IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24geyBXVEZNb3ZlKCpwYXltZW50TWVyY2hh
bnRTZXNzaW9uKSB9OwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1l
dGhvZD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0
aG9kJiBwYXltZW50TWV0aG9kKQogewotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZl
cigpOwotICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cGF5bWVudE1ldGhvZC5wa1BheW1lbnRN
ZXRob2QoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKLSAgICBbYXJjaGl2
ZXIgZmluaXNoRW5jb2RpbmddOwotCi0gICAgYXV0byBkYXRhID0gYXJjaGl2ZXIuZ2V0KCkuZW5j
b2RlZERhdGE7Ci0gICAgZW5jb2RlciA8PCBEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICBlbmNvZGVyIDw8
IHBheW1lbnRNZXRob2QucGtQYXltZW50TWV0aG9kKCk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpQYXltZW50TWV0aG9kPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdlYkNv
cmU6OlBheW1lbnRNZXRob2QmIHBheW1lbnRNZXRob2QpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBheW1lbnRNZXRob2Q+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVm
ZXJlbmNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2Nd
IGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qg
dm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgp
IGZyZWVXaGVuRG9uZTpOT10pOwotICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2
ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsKLSAgICBAdHJ5IHsKLSAgICAgICAgUEtQYXltZW50TWV0
aG9kICpwa1BheW1lbnRNZXRob2QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOlBB
TDo6Z2V0UEtQYXltZW50TWV0aG9kQ2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2Jq
ZWN0S2V5XTsKLSAgICAgICAgcGF5bWVudE1ldGhvZCA9IFBheW1lbnRNZXRob2QocGtQYXltZW50
TWV0aG9kKTsKLSAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgUEtQYXltZW50OiAlQCIsIGV4Y2VwdGlvbik7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgYXV0byBwYXltZW50TWV0aG9kID0g
SVBDOjpkZWNvZGU8UEtQYXltZW50TWV0aG9kPihkZWNvZGVyLCBQQUw6OmdldFBLUGF5bWVudE1l
dGhvZENsYXNzKCkpOworICAgIGlmICghcGF5bWVudE1ldGhvZCkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICByZXR1cm4gUGF5bWVudE1ldGhvZCB7IFdURk1vdmUoKnBheW1lbnRNZXRo
b2QpIH07CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBk
YXRlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXRo
b2RVcGRhdGUmIHVwZGF0ZSkKQEAgLTI1NCwyMCArMTkxLDIyIEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBBcHBsCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXF1ZXN0LnNldFJlcXVpcmVkQmls
bGluZ0NvbnRhY3RGaWVsZHMocmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkcyk7CiAKLSAgICBQ
YXltZW50Q29udGFjdCBiaWxsaW5nQ29udGFjdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJp
bGxpbmdDb250YWN0KSkKKyAgICBzdGQ6Om9wdGlvbmFsPFBheW1lbnRDb250YWN0PiBiaWxsaW5n
Q29udGFjdDsKKyAgICBkZWNvZGVyID4+IGJpbGxpbmdDb250YWN0OworICAgIGlmICghYmlsbGlu
Z0NvbnRhY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXF1ZXN0LnNldEJpbGxpbmdD
b250YWN0KGJpbGxpbmdDb250YWN0KTsKKyAgICByZXF1ZXN0LnNldEJpbGxpbmdDb250YWN0KCpi
aWxsaW5nQ29udGFjdCk7CiAKICAgICBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6Q29u
dGFjdEZpZWxkcyByZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkczsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKChyZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkcykpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmVxdWVzdC5zZXRSZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkcyhy
ZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkcyk7CiAKLSAgICBQYXltZW50Q29udGFjdCBzaGlw
cGluZ0NvbnRhY3Q7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaGlwcGluZ0NvbnRhY3QpKQor
ICAgIHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbnRhY3Q+IHNoaXBwaW5nQ29udGFjdDsKKyAgICBk
ZWNvZGVyID4+IHNoaXBwaW5nQ29udGFjdDsKKyAgICBpZiAoIXNoaXBwaW5nQ29udGFjdCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlcXVlc3Quc2V0U2hpcHBpbmdDb250YWN0KHNoaXBw
aW5nQ29udGFjdCk7CisgICAgcmVxdWVzdC5zZXRTaGlwcGluZ0NvbnRhY3QoKnNoaXBwaW5nQ29u
dGFjdCk7CiAKICAgICBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBh
YmlsaXRpZXMgbWVyY2hhbnRDYXBhYmlsaXRpZXM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSht
ZXJjaGFudENhcGFiaWxpdGllcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0K
aW5kZXggMWMxMWZmODg1Nzc0YWQ0MjQ0MDdhNjBiMWU3OWNhMDVjZWNjNmVmYS4uMjI4ZmI1OGMy
ZjU5YzFkNDcwMWNlNzU1NzJiYWJmZWYzNzg0ZjU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5tbQpAQCAtOTIwLDEzICs5MjAsMTMgQEAgQ1N0cmluZyBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAogICAgICAgICAgICAgVGV4dFN0cmVh
bTo6R3JvdXBTY29wZSBncm91cCh0cyk7CiAgICAgICAgICAgICB0cyA8PCBjcmVhdGVkTGF5ZXIu
dHlwZSA8PCIgIiA8PCBjcmVhdGVkTGF5ZXIubGF5ZXJJRDsKICAgICAgICAgICAgIHN3aXRjaCAo
Y3JlYXRlZExheWVyLnR5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVBVlBsYXllckxheWVyOgorICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6CiAgICAgICAgICAgICAgICAgdHMgPDwg
IiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsK
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CisgICAgICAgICAgICBjYXNlIFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAg
ICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGlu
Z0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgorICAgICAgICAgICAgY2FzZSBX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICAgICAgICAgICAg
ICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQg
PDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKQEAg
LTkzOCw3ICs5MzgsNyBAQCBDU3RyaW5nIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNj
cmlwdGlvbigpIGNvbnN0CiAgICAgZHVtcENoYW5nZWRMYXllcnModHMsIG1fY2hhbmdlZExheWVy
UHJvcGVydGllcyk7CiAKICAgICBpZiAoIW1fZGVzdHJveWVkTGF5ZXJJRHMuaXNFbXB0eSgpKQot
ICAgICAgICB0cy5kdW1wUHJvcGVydHk8VmVjdG9yPEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5
ZXJJRD4+KCJkZXN0cm95ZWQtbGF5ZXJzIiwgbV9kZXN0cm95ZWRMYXllcklEcyk7CisgICAgICAg
IHRzLmR1bXBQcm9wZXJ0eTxWZWN0b3I8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1M
YXllcklEPj4oImRlc3Ryb3llZC1sYXllcnMiLCBtX2Rlc3Ryb3llZExheWVySURzKTsKIAogICAg
IGlmIChtX2VkaXRvclN0YXRlKSB7CiAgICAgICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgc2Nv
cGUodHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApp
bmRleCAwZGZiNmU4ZjE5ZDQyMGU5ODdjYzQ4ODA0OTY3MTRmZDgxMGZlOThlLi4wOTA5YjRkMTlj
YTA4OTVjNTQzMDVmNWY1NGNkYTBjMDQ5M2E4ODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNjAxLDcgKzYwMSw3IEBAIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gewog
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+IHsKICAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmKTsK
LSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlBheW1lbnQmKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50PiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblJlc3VsdD4gewpAQCAtNjExLDcgKzYxMSw3IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+IHsK
IAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFj
dD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5
bWVudENvbnRhY3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6
OlBheW1lbnRDb250YWN0Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5
bWVudENvbnRhY3Q+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRFcnJvcj4gewpAQCAtNjIxLDEyICs2MjEsMTIg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50RXJyb3I+
IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVy
Y2hhbnRTZXNzaW9uPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBX
ZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2Rl
KERlY29kZXImLCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4gZGVjb2RlKERl
Y29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UGF5bWVudE1ldGhvZD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qg
V2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVy
JiwgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlBheW1lbnRNZXRob2Q+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2RVcGRhdGU+IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbi5tbQppbmRleCBmMWUwYzNhNjM1NmYwM2IyNjgwOWM2MzcyZTg4ZmY0
NTVhYzE1OTk3Li5kMGFhODUxOTZjZDc1ZWQ5OGZkYjk3MTRhZDRlNjNmNjA2YmYwOWVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIgogCi0jaW1w
b3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCisjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NvY29hLmgi
CiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvRGF0YURldGVjdG9yc0NvcmVTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXll
ZEFyY2hpdmVyU1BJLmg+CkBAIC03NiwxMCArNzYsNyBAQCB2b2lkIEludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAg
IGVuY29kZXIgPDwgaXNEYXRhRGV0ZWN0b3JMaW5rOwogICAgIGlmIChpc0RhdGFEZXRlY3Rvckxp
bmspIHsKICAgICAgICAgZW5jb2RlciA8PCBkYXRhRGV0ZWN0b3JJZGVudGlmaWVyOwotICAgICAg
ICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKLSAgICAgICAgW2FyY2hpdmVyIGVu
Y29kZU9iamVjdDpkYXRhRGV0ZWN0b3JSZXN1bHRzLmdldCgpIGZvcktleTpAImRhdGFEZXRlY3Rv
clJlc3VsdHMiXTsKLQotICAgICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9j
YXN0PENGRGF0YVJlZj4oYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGEpKTsKKyAgICAgICAgZW5j
b2RlciA8PCBkYXRhRGV0ZWN0b3JSZXN1bHRzOwogICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShE
QVRBTElTVF9FTEVNRU5UKQpAQCAtMTczLDE5ICsxNzAsMTIgQEAgYm9vbCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQXRQb3NpdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSW50ZXJh
Y3Rpb24KICAgICBpZiAocmVzdWx0LmlzRGF0YURldGVjdG9yTGluaykgewogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5kYXRhRGV0ZWN0b3JJZGVudGlmaWVyKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKLSAg
ICAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRhKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJj
aGl2ZXJGcm9tRGF0YSgoTlNEYXRhICopZGF0YS5nZXQoKSk7Ci0gICAgICAgIEB0cnkgewotICAg
ICAgICAgICAgcmVzdWx0LmRhdGFEZXRlY3RvclJlc3VsdHMgPSBbdW5hcmNoaXZlciBkZWNvZGVP
YmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhBcnJheTpAWyBbTlNBcnJheSBjbGFzc10sIGdl
dEREU2Nhbm5lclJlc3VsdENsYXNzKCldIF0gZm9yS2V5OkAiZGF0YURldGVjdG9yUmVzdWx0cyJd
OwotICAgICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIE5TQXJyYXkgb2YgRERTY2FuUmVzdWx0OiAl
QCIsIGV4Y2VwdGlvbik7CisKKyAgICAgICAgYXV0byBkYXRhRGV0ZWN0b3JSZXN1bHRzID0gSVBD
OjpkZWNvZGU8TlNBcnJheT4oZGVjb2RlciwgQFsgW05TQXJyYXkgY2xhc3NdLCBnZXRERFNjYW5u
ZXJSZXN1bHRDbGFzcygpIF0pOworICAgICAgICBpZiAoIWRhdGFEZXRlY3RvclJlc3VsdHMpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFt1
bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKworICAgICAgICByZXN1bHQuZGF0YURldGVjdG9y
UmVzdWx0cyA9IFdURk1vdmUoKmRhdGFEZXRlY3RvclJlc3VsdHMpOwogICAgIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVy
c01hYy5tbQppbmRleCA4ZTM2OTY1MjMwNTc2ODY4ZDQ5NWRkYjk2Yjg2MDA2OTcyYWU0YzY2Li41
ZmRhN2JmNjZjOWMyMjRjMjI5NTczOGU4NDhlMWRlYmZiY2NlNDJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KQEAgLTI4
LDYgKzI4LDcgQEAKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogCiAjaW1wb3J0
ICJBcmd1bWVudENvZGVyc0NGLmgiCisjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NvY29hLmgiCiAj
aW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NlcnRpZmljYXRlSW5m
by5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaD4KQEAg
LTQzMSwyNiArNDMyLDE2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsCiAKIHZvaWQgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2U+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJiBzcGFjZSkKIHsK
LSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIgZW5j
b2RlT2JqZWN0OnNwYWNlLm5zU3BhY2UoKSBmb3JLZXk6QCJwcm90ZWN0aW9uU3BhY2UiXTsKLSAg
ICBJUEM6OmVuY29kZShlbmNvZGVyLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKWFyY2hpdmVyLmdldCgp
LmVuY29kZWREYXRhKTsKKyAgICBlbmNvZGVyIDw8IHNwYWNlLm5zU3BhY2UoKTsKIH0KIAogYm9v
bCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZT46OmRlY29kZVBsYXRmb3Jt
RGF0YShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIHNwYWNlKQog
ewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7Ci0gICAgaWYgKCFJUEM6OmRlY29kZShk
ZWNvZGVyLCBkYXRhKSkKKyAgICBhdXRvIHBsYXRmb3JtRGF0YSA9IElQQzo6ZGVjb2RlPE5TVVJM
UHJvdGVjdGlvblNwYWNlPihkZWNvZGVyKTsKKyAgICBpZiAoIXBsYXRmb3JtRGF0YSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZl
ckZyb21EYXRhKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKLSAgICBAdHJ5IHsKLSAg
ICAgICAgaWYgKFJldGFpblB0cjxOU1VSTFByb3RlY3Rpb25TcGFjZT4gbnNTcGFjZSA9IFt1bmFy
Y2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TVVJMUHJvdGVjdGlvblNwYWNlIGNsYXNzXSBm
b3JLZXk6QCJwcm90ZWN0aW9uU3BhY2UiXSkKLSAgICAgICAgICAgIHNwYWNlID0gV2ViQ29yZTo6
UHJvdGVjdGlvblNwYWNlKG5zU3BhY2UuZ2V0KCkpOwotICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlv
biAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBOU1VS
TFByb3RlY3Rpb25TcGFjZTogJUAiLCBleGNlcHRpb24pOwotICAgIH0KLQotICAgIFt1bmFyY2hp
dmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICBzcGFjZSA9IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFj
ZSB7IHBsYXRmb3JtRGF0YS0+Z2V0KCkgfTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDc0
LDEwICs0NjUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q3JlZGVudGlhbD46OmVu
Y29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjbwogICAgIH0KIAogICAgIGVuY29k
ZXIgPDwgZmFsc2U7Ci0KLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKLSAg
ICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0Om5zQ3JlZGVudGlhbCBmb3JLZXk6QCJjcmVkZW50aWFs
Il07Ci0gICAgSVBDOjplbmNvZGUoZW5jb2RlciwgKF9fYnJpZGdlIENGRGF0YVJlZilhcmNoaXZl
ci5nZXQoKS5lbmNvZGVkRGF0YSk7CisgICAgZW5jb2RlciA8PCBuc0NyZWRlbnRpYWw7CiB9CiAK
IGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDcmVkZW50aWFsPjo6ZGVjb2RlUGxhdGZvcm1E
YXRhKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCkBA
IC01MDksMTkgKzQ5NywxMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q3JlZGVudGlh
bD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBXZQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwotICAgIGlm
ICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCisgICAgYXV0byBuc0NyZWRlbnRpYWwgPSBJ
UEM6OmRlY29kZTxOU1VSTENyZWRlbnRpYWw+KGRlY29kZXIpOworICAgIGlmICghbnNDcmVkZW50
aWFsKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1
cmVVbmFyY2hpdmVyRnJvbURhdGEoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwotICAg
IEB0cnkgewotICAgICAgICBpZiAoUmV0YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gbnNDcmVkZW50
aWFsID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbTlNVUkxDcmVkZW50aWFsIGNs
YXNzXSBmb3JLZXk6QCJjcmVkZW50aWFsIl0pCi0gICAgICAgICAgICBjcmVkZW50aWFsID0gV2Vi
Q29yZTo6Q3JlZGVudGlhbChuc0NyZWRlbnRpYWwuZ2V0KCkpOwotICAgIH0gQGNhdGNoIChOU0V4
Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29k
ZSBOU1VSTENyZWRlbnRpYWw6ICVAIiwgZXhjZXB0aW9uKTsKLSAgICB9Ci0KLSAgICBbdW5hcmNo
aXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgY3JlZGVudGlhbCA9IFdlYkNvcmU6OkNyZWRlbnRp
YWwgeyBuc0NyZWRlbnRpYWwtPmdldCgpIH07CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTU5
OCwyMCArNTc4LDEwIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlCiAKICNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCi1zdGF0aWMgTlNTdHJpbmcgKmRldmljZUNvbnRleHRL
ZXkoKQotewotICAgIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGtleSA9IEAiZGV2aWNlQ29udGV4
dCI7Ci0gICAgcmV0dXJuIGtleTsKLX0KLQogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQp
CiB7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7Ci0KICAgICBpZiAoW2dl
dEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1Nl
Y3VyZUNvZGluZyldKQotICAgICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnRhcmdldC5hdk91
dHB1dENvbnRleHQoKSBmb3JLZXk6ZGV2aWNlQ29udGV4dEtleSgpXTsKLQotICAgIElQQzo6ZW5j
b2RlKGVuY29kZXIsIChfX2JyaWRnZSBDRkRhdGFSZWYpYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERh
dGEpOworICAgICAgICBlbmNvZGVyIDw8IHRhcmdldC5hdk91dHB1dENvbnRleHQoKTsKIH0KIAog
Ym9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6
ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCkBAIC02MTksMjMgKzU4OSwxMSBAQCBib29sIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0
Zm9ybURhdGEoRGVjbwogICAgIGlmICghW2dldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9y
bXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwotICAgIGlmICghSVBDOjpk
ZWNvZGUoZGVjb2RlciwgZGF0YSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8g
dW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoX19icmlkZ2UgTlNEYXRhICop
ZGF0YS5nZXQoKSk7Ci0KLSAgICBBVk91dHB1dENvbnRleHQgKmNvbnRleHQgPSBuaWw7Ci0gICAg
QHRyeSB7Ci0gICAgICAgIGNvbnRleHQgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNz
OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgZm9yS2V5OmRldmljZUNvbnRleHRLZXkoKV07Ci0g
ICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAgICAgTE9HX0VSUk9S
KCJUaGUgdGFyZ2V0IHBpY2tlciBiZWluZyBkZWNvZGVkIGlzIG5vdCBhbiBBVk91dHB1dENvbnRl
eHQuIik7CisgICAgYXV0byBjb250ZXh0ID0gSVBDOjpkZWNvZGU8QVZPdXRwdXRDb250ZXh0Pihk
ZWNvZGVyLCBnZXRBVk91dHB1dENvbnRleHRDbGFzcygpKTsKKyAgICBpZiAoIWNvbnRleHQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKLSAgICB0YXJnZXQgPSBXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dChjb250ZXh0KTsKLSAgICAKLSAgICBbdW5hcmNoaXZlciBm
aW5pc2hEZWNvZGluZ107CisgICAgdGFyZ2V0ID0gV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQgeyBjb250ZXh0LT5nZXQoKSB9OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0KaW5kZXgg
NTg4YzVlNTE4YTI0OTdmMzU4ZjRiODJjYmFhYzk0MThkOWFkMTBjMC4uYTMwZDAzNzVmYjI3ZGVi
ZjIxYTEzMmZkMjhiMDYzZjc0YWY4NWJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL1dlYkhpdFRlc3RSZXN1bHREYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDEwICs0NSw3IEBAIHZvaWQgV2Vi
SGl0VGVzdFJlc3VsdERhdGE6OnBsYXRmb3JtRW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICBpZiAoIWhhc0FjdGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwotICAgIFthcmNoaXZlciBlbmNvZGVP
YmplY3Q6ZGV0ZWN0ZWREYXRhQWN0aW9uQ29udGV4dC5nZXQoKSBmb3JLZXk6QCJhY3Rpb25Db250
ZXh0Il07Ci0KLSAgICBJUEM6OmVuY29kZShlbmNvZGVyLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKWFy
Y2hpdmVyLmdldCgpLmVuY29kZWREYXRhKTsKKyAgICBlbmNvZGVyIDw8IGRldGVjdGVkRGF0YUFj
dGlvbkNvbnRleHQ7CiAKICAgICBlbmNvZGVyIDw8IGRldGVjdGVkRGF0YUJvdW5kaW5nQm94Owog
ICAgIGVuY29kZXIgPDwgZGV0ZWN0ZWREYXRhT3JpZ2luYXRpbmdQYWdlT3ZlcmxheTsKQEAgLTY4
LDIwICs2NSwxMiBAQCBib29sIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpwbGF0Zm9ybURlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIFdlYkhpdFRlc3RSZXN1bAogICAgIGlmICghaGFzQWN0aW9u
Q29udGV4dCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgQVNTRVJUKERhdGFEZXRlY3RvcnNM
aWJyYXJ5KCkpOwotCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKLSAgICBpZiAoIUlQ
Qzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQorICAgIAorICAgIGF1dG8gZGV0ZWN0ZWREYXRhQWN0
aW9uQ29udGV4dCA9IElQQzo6ZGVjb2RlPEREQWN0aW9uQ29udGV4dD4oZGVjb2RlciwgZ2V0RERB
Y3Rpb25Db250ZXh0Q2xhc3MoKSk7CisgICAgaWYgKCFkZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVV
bmFyY2hpdmVyRnJvbURhdGEoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwotICAgIEB0
cnkgewotICAgICAgICBoaXRUZXN0UmVzdWx0RGF0YS5kZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0
ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXREREFjdGlvbkNvbnRleHRDbGFz
cygpIGZvcktleTpAImFjdGlvbkNvbnRleHQiXTsKLSAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24g
KmV4Y2VwdGlvbikgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgRERBY3Rp
b25Db250ZXh0OiAlQCIsIGV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgCi0gICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAgIGhpdFRlc3RSZXN1
bHREYXRhLmRldGVjdGVkRGF0YUFjdGlvbkNvbnRleHQgPSBXVEZNb3ZlKCpkZXRlY3RlZERhdGFB
Y3Rpb25Db250ZXh0KTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERh
dGEuZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3gpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKaW5kZXggNmFjOGZlYzE2Y2U5MmViZmE3MTZkZTMyYmEwNDU3OWFmZDIz
NzU3Zi4uODY0M2RhZTZiZTQzNmI4ZWZjZjc5YzEwMTUwOGYyNTY1YjQyYTMxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dApAQCAtMTIyLDYgKzEyMiw3IEBAIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9j
b2NvYS9BdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbQogCiBTaGFyZWQvQ29jb2EvQVBJRGF0
YUNvY29hLm1tCiBTaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCitTaGFyZWQvQ29jb2EvQXJndW1l
bnRDb2RlcnNDb2NvYS5tbQogU2hhcmVkL0NvY29hL0NoaWxkUHJvY2Vzc0NvY29hLm1tCiBTaGFy
ZWQvQ29jb2EvQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5tbQogU2hhcmVkL0NvY29hL0Rh
dGFEZXRlY3Rpb25SZXN1bHQubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDI4MTkwNjkzZDNhM2ZlZmZlYjBlZWNiNjViNmYzNGEyYjg5
NDk0YjMuLjYxZDk0ODFmNTMyY2U3OTQzY2M5ZTY3NDYwYjJiYjgwMjJjMzc2ZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI2NSw2
ICsxMjY1LDcgQEAKIAkJQTEzQjNEQTIyMDdGMzlERTAwOTBDNThEIC8qIE1vYmlsZVdpRmlTUEku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExM0IzREEx
MjA3RjM5REUwMDkwQzU4RCAvKiBNb2JpbGVXaUZpU1BJLmggKi87IH07CiAJCUExM0RDNjgyMjA3
QUE2QjIwMDY2RUY3MiAvKiBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExM0RDNjgwMjA3QUE2QjIw
MDY2RUY3MiAvKiBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcuaCAqLzsgfTsKIAkJQTE1
RUVERTYxRTMwMUNFRTAwMDA2OUIwIC8qIFdLUGFzc3dvcmRWaWV3LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTVFRURFNDFFMzAxQ0VFMDAwMDY5QjAg
LyogV0tQYXNzd29yZFZpZXcuaCAqLzsgfTsKKwkJQTE3NUM0NEEyMUFBMzE3MTAwMDAzN0QwIC8q
IEFyZ3VtZW50Q29kZXJzQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExNzVDNDQ5MjFBQTMxNzAwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0Nv
Y29hLmggKi87IH07CiAJCUExODJENUI1MUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5
SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTgy
RDVCMzFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5oICovOyB9OwogCQlBMTlE
RDNDMDFEMDdEMTY4MDBBQzgyM0IgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExOUREM0JG
MUQwN0QxNjgwMEFDODIzQiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oICov
OyB9OwogCQlBMUE0RkU1QTE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQTRGRTU3MThEQ0U5RkEw
MEI1RUE4QSAvKiBfV0tEb3dubG9hZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0zODE5LDYgKzM4MjAsOCBAQAogCQlBMTNEQzY4MTIwN0FBNkIy
MDA2NkVGNzIgLyogV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tOyBwYXRoID0gaW9z
L1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTE1RUVERTMxRTMwMUNFRTAwMDA2OUIwIC8qIFdLUGFzc3dvcmRWaWV3Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tQYXNzd29yZFZpZXcubW07
IHBhdGggPSBpb3MvV0tQYXNzd29yZFZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExNUVFREU0MUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1Bhc3N3b3JkVmlldy5oOyBwYXRoID0gaW9zL1dL
UGFzc3dvcmRWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNzVDNDQ5MjFB
QTMxNzAwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFyZ3VtZW50Q29kZXJzQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTE3NUM0NEIyMUFBMzMxQjAwMDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29j
b2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcmd1bWVudENvZGVyc0NvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTgyRDVCMjFCRTZCRDI1MDA4N0E3Q0MgLyogQWNj
ZXNzaWJpbGl0eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEFjY2Vzc2liaWxpdHlJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExODJE
NUIzMUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTE5REQzQkYxRDA3RDE2ODAwQUM4MjNCIC8qIF9XS1dlYlZpZXdQcmludEZv
cm1hdHRlckludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dl
YlZpZXdQcmludEZvcm1hdHRlckludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02MTcwLDYgKzYxNzMsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMUExRUYxOTcxQTFE
NUI0MjAwMjMyMDBBIC8qIEFQSURhdGFDb2NvYS5tbSAqLywKIAkJCQkzNzhFMUEzQjE4MUVENkZG
MDAzMTAwN0EgLyogQVBJT2JqZWN0Lm1tICovLAorCQkJCUExNzVDNDQ5MjFBQTMxNzAwMDAwMzdE
MCAvKiBBcmd1bWVudENvZGVyc0NvY29hLmggKi8sCisJCQkJQTE3NUM0NEIyMUFBMzMxQjAwMDAz
N0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EubW0gKi8sCiAJCQkJMUE2OThGMTcxRTQ5MTAyMjAw
NjRFODgxIC8qIENoaWxkUHJvY2Vzc0NvY29hLm1tICovLAogCQkJCTM3QkVDNERGMTk0OTE0ODYw
MDhCNDI4NiAvKiBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmggKi8sCiAJCQkJMzdCRUM0
REUxOTQ5MTQ4NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIubW0gKi8s
CkBAIC04ODc1LDcgKzg4ODAsNiBAQAogCQkJCTdBOEE5RDVBMUVGMTMwMjkwMDk4MDFBRSAvKiBB
UElJbmplY3RlZEJ1bmRsZUJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E4QTlE
NTgxRUYxMTlCMDAwOTgwMUFFIC8qIEFQSUluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzNzc1MTIzMTFERjBERUUyMDA4QTM1MUMgLyogQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0RTU3RjZCMjFBODNCMTIwMDM0NUYz
QyAvKiBSZW1vdGVMYXllclRyZWVOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzY5MDc5RTE4
RjM0MEEyMDAxREZGMDQgLyogQVBJSW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3QTNBQ0UxQjFFRUVGNzlCMDBBODY0QTQgLyogQVBJSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QThBOUQ1QzFFRjE0NTk4MDA5
ODAxQUUgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTg5MTYsNiArODkyMCw3IEBACiAJCQkJMUFFRkQyNzkxMUQxNkM4MTAwODIx
OUQzIC8qIEFyZ3VtZW50Q29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUZEMkY3MTFEMTgw
N0IwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjBD
NEExMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJzQ0YuaCBpbiBIZWFkZXJzICovLAor
CQkJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMTc5RkQ5QzEzNEQzODA2MDAxNUI4ODMgLyogQXJndW1lbnRDb2Rl
cnNNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMUEwQkQyMUE0OEU2QzYwMDU0RUY3NCAvKiBB
c3NlcnRpb25TZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU5QzRBNTkxOEI4MTE3
NDAwN0JEQ0I2IC8qIEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAg
LTkyMTcsNiArOTIyMiw3IEBACiAJCQkJMUFCMTZBRTIxNjQ4NjU2RDAwMjkwRDYyIC8qIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjI0QTJF
MTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTNENzVDMTY1MUI0NEYwMDg3MTNEMCAvKiBSZW1v
dGVMYXllclRyZWVIb3N0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEU1N0Y2QjIxQTgzQjEyMDAz
NDVGM0MgLyogUmVtb3RlTGF5ZXJUcmVlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRERTBB
RkExODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZGMjY0QTAxQTFGRjlDQzAwMUZFNzU5IC8qIFJlbW90ZUxheWVy
VHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMUFD
NkMxNjUxNzU5RTAwQzE3RDdGIC8qIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggaW4gSGVh
ZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355578</attachid>
            <date>2018-11-24 21:04:05 -0800</date>
            <delta_ts>2018-11-26 10:16:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191948-20181124210356.patch</filename>
            <type>text/plain</type>
            <size>50504</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ4M2MyN2FkZDk4OWI2
ZjBlNmFlNDM2NDU4M2RmNDUyNWI4NmIyYi4uNjlmMmI0OTI4MDAyYjY1NDNiYjk5N2NmMGU2MTYy
OTg0YjAyYjVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTExLTI0ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIE1ha2UgaXQgZWFz
aWVyIHRvIGVuY29kZSBOU09iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MTk0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Lmg6CisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29udGFjdC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbjo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbik6CisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kLmg6CisKIDIwMTgtMTEtMjQgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBGaXggYSBmZXcg
bG9jYWxpemFibGUgc3RyaW5nIGRlc2NyaXB0aW9ucyBpbiBXZWJFZGl0Q29tbWFuZFByb3h5LmNw
cCBhbmQgV2ViRWRpdG9yQ2xpZW50Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA4NDk0ZjI3NDYw
NWRlMDYyMDY2ODFkZTc3YTJmMzliNWM2M2FmY2Q2Li5mYjk0MWNhZWJhMDY5MDAyOWYyMTFhOTVk
NTQ2MWY0OGRlYTlmMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
OC0xMS0yNCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29h
XSBNYWtlIGl0IGVhc2llciB0byBlbmNvZGUgTlNPYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE5NDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5o
OgorCiAyMDE4LTExLTI0ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ29jb2FdIFNPRlRfTElOS19DTEFTU19GT1Jfe0hFQURFUixTT1VSQ0V9IHNob3VsZCBnZW5l
cmF0ZSBhIG1vcmUgY29uY2lzZSBnZXR0ZXIgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNWU1MzI1YzAz
ZDIzNzQwZTcxNmZiZjUyYTViMGMzZTBiZGFmZGI2Yy4uMzljMDcxOTUzZmJkM2U2YjRlZTdiNTRm
Yjc0ZTY2OTU1MDU2N2VmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxOC0xMS0yNCAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBNYWtlIGl0
IGVhc2llciB0byBlbmNvZGUgTlNPYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE5NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmg6
IEFkZGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVPYmplY3QpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFQ6OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmV0YWlu
UHRyPFQ+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8
VD4+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29h
Lm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9u
UmVzdWx0Lm1tLgorICAgICAgICAoSVBDOjplbmNvZGUpOgorICAgICAgICAoSVBDOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lmg6CisgICAgICAg
ICogU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW06CisgICAgICAgIChXZWJLaXQ6
OkRhdGFEZXRlY3Rpb25SZXN1bHQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRh
dGFEZXRlY3Rpb25SZXN1bHQ6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlBheW1lbnQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD46OmVuY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+OjpkZWNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNl
c3Npb24+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBh
eW1lbnRNZXJjaGFudFNlc3Npb24+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Pjo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVz
Y3JpcHRpb24gY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9u
Lm1tOgorICAgICAgICAoV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRD
b2RlcnNNYWMubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UHJvdGVj
dGlvblNwYWNlPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNyZWRlbnRpYWw+OjplbmNvZGVQbGF0
Zm9ybURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNyZWRlbnRp
YWw+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OmRldmljZUNvbnRl
eHRLZXkpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERh
dGEubW06CisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjpwbGF0Zm9ybUVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjpwbGF0
Zm9ybURlY29kZSk6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0xMS0yNCAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEZpeCBhIGZldyBs
b2NhbGl6YWJsZSBzdHJpbmcgZGVzY3JpcHRpb25zIGluIFdlYkVkaXRDb21tYW5kUHJveHkuY3Bw
IGFuZCBXZWJFZGl0b3JDbGllbnQubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50LmgKaW5kZXggODVmNjdiZWRmMmVkN2UwZTQ4MGM0NWNhMWY3YjZlZGU3YWU2OWIxZi4u
MzZmYjZmZTgyZDhjNDU5ZGY3YWQwNjUzYWZlMGQ1ZjgzZWUxY2I1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTggKzM3LDEzIEBAIHN0cnVjdCBBcHBs
ZVBheVBheW1lbnQ7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFBheW1lbnQgewogcHVibGljOgot
ICAgIFBheW1lbnQoKSA9IGRlZmF1bHQ7Ci0KLSAgICBleHBsaWNpdCBQYXltZW50KFBLUGF5bWVu
dCAqcGtQYXltZW50KQotICAgICAgICA6IG1fcGtQYXltZW50KHBrUGF5bWVudCkKLSAgICB7Ci0g
ICAgfQotCi0gICAgdmlydHVhbCB+UGF5bWVudCgpID0gZGVmYXVsdDsKKyAgICBQYXltZW50KCk7
CisgICAgZXhwbGljaXQgUGF5bWVudChSZXRhaW5QdHI8UEtQYXltZW50PiYmKTsKKyAgICB2aXJ0
dWFsIH5QYXltZW50KCk7CiAKICAgICB2aXJ0dWFsIEFwcGxlUGF5UGF5bWVudCB0b0FwcGxlUGF5
UGF5bWVudCh1bnNpZ25lZCB2ZXJzaW9uKSBjb25zdDsKIAotICAgIFBLUGF5bWVudCAqcGtQYXlt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9wa1BheW1lbnQuZ2V0KCk7IH0KKyAgICBQS1BheW1lbnQg
KnBrUGF5bWVudCgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFJldGFpblB0cjxQS1BheW1lbnQ+
IG1fcGtQYXltZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50Q29udGFjdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50Q29udGFjdC5oCmluZGV4IGQwNDEyZDFkZWRhNjFiN2JmNGM1ZDY5MjdhYjA2ODE5Yjk2MmQz
MjEuLjE1NmZiZjk0YjllMDAxOWEyMzBlMjIzNTc4NGQ3NTcxNDFlYjc0Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvbnRhY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb250YWN0LmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwx
NyArMzgsMTQgQEAgc3RydWN0IEFwcGxlUGF5UGF5bWVudENvbnRhY3Q7CiAKIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIFBheW1lbnRDb250YWN0IHsKIHB1YmxpYzoKLSAgICBQYXltZW50Q29udGFjdCgp
ID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBQYXltZW50Q29udGFjdChQS0NvbnRhY3QgKnBrQ29u
dGFjdCkKLSAgICAgICAgOiBtX3BrQ29udGFjdChwa0NvbnRhY3QpCi0gICAgewotICAgIH0KLSAg
ICB2aXJ0dWFsIH5QYXltZW50Q29udGFjdCgpID0gZGVmYXVsdDsKKyAgICBQYXltZW50Q29udGFj
dCgpOworICAgIGV4cGxpY2l0IFBheW1lbnRDb250YWN0KFJldGFpblB0cjxQS0NvbnRhY3Q+JiYp
OworICAgIHZpcnR1YWwgflBheW1lbnRDb250YWN0KCk7CiAKICAgICBzdGF0aWMgUGF5bWVudENv
bnRhY3QgZnJvbUFwcGxlUGF5UGF5bWVudENvbnRhY3QodW5zaWduZWQgdmVyc2lvbiwgY29uc3Qg
QXBwbGVQYXlQYXltZW50Q29udGFjdCYpOwogICAgIHZpcnR1YWwgQXBwbGVQYXlQYXltZW50Q29u
dGFjdCB0b0FwcGxlUGF5UGF5bWVudENvbnRhY3QodW5zaWduZWQgdmVyc2lvbikgY29uc3Q7CiAK
LSAgICBQS0NvbnRhY3QgKnBrQ29udGFjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGtDb250YWN0Lmdl
dCgpOyB9CisgICAgUEtDb250YWN0ICpwa0NvbnRhY3QoKSBjb25zdDsKIAogcHJpdmF0ZToKICAg
ICBSZXRhaW5QdHI8UEtDb250YWN0PiBtX3BrQ29udGFjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKaW5kZXgg
N2VkNmIyMTU3MzA2ZWViZDA3ZTUxMTYxOGM0MzQ0NzljNTU0MzZlNy4uZGFhNzQ5NTQ5ZjUzZjVk
YTNkMzY2ZDVlNjA4MzlhMjg4MDYzYjNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsOCArNDIsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQYXltZW50TWVyY2hhbnRTZXNzaW9uIHsKIHB1
YmxpYzoKICAgICBQYXltZW50TWVyY2hhbnRTZXNzaW9uKCkgPSBkZWZhdWx0OwotICAgIGV4cGxp
Y2l0IFBheW1lbnRNZXJjaGFudFNlc3Npb24oUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICpwa1Bh
eW1lbnRNZXJjaGFudFNlc3Npb24pCi0gICAgICAgIDogbV9wa1BheW1lbnRNZXJjaGFudFNlc3Np
b24ocGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKQorICAgIGV4cGxpY2l0IFBheW1lbnRNZXJjaGFu
dFNlc3Npb24oUmV0YWluUHRyPFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbj4mJiBwa1BheW1lbnRN
ZXJjaGFudFNlc3Npb24pCisgICAgICAgIDogbV9wa1BheW1lbnRNZXJjaGFudFNlc3Npb24geyBX
VEZNb3ZlKHBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbikgfQogICAgIHsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kLmgKaW5kZXggOWNl
N2JhYTc5NDNhYmQyZGRmZjEzMWI0NDMwOTdhMmFhMDRiMTIxNS4uNGFmYmEyZjI5ZTBjMzQxY2E4
NDQwMzA1ZGMxMDhjYjQ0NGExODhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9QYXltZW50TWV0aG9kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50TWV0aG9kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTcgKzM3LDEzIEBAIHN0cnVjdCBBcHBsZVBheVBh
eW1lbnRNZXRob2Q7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFBheW1lbnRNZXRob2QgewogcHVi
bGljOgotICAgIFBheW1lbnRNZXRob2QoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB+UGF5bWVu
dE1ldGhvZCgpID0gZGVmYXVsdDsKLQotICAgIGV4cGxpY2l0IFBheW1lbnRNZXRob2QoUEtQYXlt
ZW50TWV0aG9kICpwa1BheW1lbnRNZXRob2QpCi0gICAgICAgIDogbV9wa1BheW1lbnRNZXRob2Qo
cGtQYXltZW50TWV0aG9kKQotICAgIHsKLSAgICB9CisgICAgUGF5bWVudE1ldGhvZCgpOworICAg
IGV4cGxpY2l0IFBheW1lbnRNZXRob2QoUmV0YWluUHRyPFBLUGF5bWVudE1ldGhvZD4mJik7Cisg
ICAgdmlydHVhbCB+UGF5bWVudE1ldGhvZCgpOwogCiAgICAgdmlydHVhbCBBcHBsZVBheVBheW1l
bnRNZXRob2QgdG9BcHBsZVBheVBheW1lbnRNZXRob2QoKSBjb25zdDsKIAotICAgIFBLUGF5bWVu
dE1ldGhvZCAqcGtQYXltZW50TWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9wa1BheW1lbnRNZXRo
b2QuZ2V0KCk7IH0KKyAgICBQS1BheW1lbnRNZXRob2QgKnBrUGF5bWVudE1ldGhvZCgpIGNvbnN0
OwogCiBwcml2YXRlOgogICAgIFJldGFpblB0cjxQS1BheW1lbnRNZXRob2Q+IG1fcGtQYXltZW50
TWV0aG9kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2Nv
YS9QYXltZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29h
L1BheW1lbnRDb2NvYS5tbQppbmRleCAwYjI5ZDc0N2UyNDA3YzM1OWZkY2IxNGIzYjc4YzVhZDYx
ZDJkODg2Li5mMzBhNjYzNTk1OTk3YzI2ZjljYTU4ZWU1ODg5YTg5YTczOGMzYmVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2Nv
YS5tbQpAQCAtNjYsMTIgKzY2LDI2IEBAIHN0YXRpYyBBcHBsZVBheVBheW1lbnQgY29udmVydCh1
bnNpZ25lZCB2ZXJzaW9uLCBQS1BheW1lbnQgKnBheW1lbnQpCiAKICAgICByZXR1cm4gcmVzdWx0
OwogfQorICAgIAorUGF5bWVudDo6UGF5bWVudCgpID0gZGVmYXVsdDsKKworUGF5bWVudDo6UGF5
bWVudChSZXRhaW5QdHI8UEtQYXltZW50PiYmIHBrUGF5bWVudCkKKyAgICA6IG1fcGtQYXltZW50
IHsgV1RGTW92ZShwa1BheW1lbnQpIH0KK3sKK30KKworUGF5bWVudDo6flBheW1lbnQoKSA9IGRl
ZmF1bHQ7CiAKIEFwcGxlUGF5UGF5bWVudCBQYXltZW50Ojp0b0FwcGxlUGF5UGF5bWVudCh1bnNp
Z25lZCB2ZXJzaW9uKSBjb25zdAogewogICAgIHJldHVybiBjb252ZXJ0KHZlcnNpb24sIG1fcGtQ
YXltZW50LmdldCgpKTsKIH0KIAorUEtQYXltZW50ICpQYXltZW50Ojpwa1BheW1lbnQoKSBjb25z
dAoreworICAgIHJldHVybiBtX3BrUGF5bWVudC5nZXQoKTsKK30KKwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENv
bnRhY3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5
bWVudENvbnRhY3RDb2NvYS5tbQppbmRleCBjYzk3ZmQ1ZTFmNjIzNDU5OWViODg0Y2E4MTg3ZmIy
Y2QwODU3YzY1Li5lODgyODRjNTdkMDg2Mzc5MmQzM2IxNTc5NTg0YjY1ZWYxMDM2NmEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250
YWN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9Q
YXltZW50Q29udGFjdENvY29hLm1tCkBAIC0yMDgsNiArMjA4LDE1IEBAIHN0YXRpYyBBcHBsZVBh
eVBheW1lbnRDb250YWN0IGNvbnZlcnQodW5zaWduZWQgdmVyc2lvbiwgUEtDb250YWN0ICpjb250
YWN0KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1BheW1lbnRDb250YWN0OjpQYXltZW50Q29u
dGFjdCgpID0gZGVmYXVsdDsKKworUGF5bWVudENvbnRhY3Q6OlBheW1lbnRDb250YWN0KFJldGFp
blB0cjxQS0NvbnRhY3Q+JiYgcGtDb250YWN0KQorICAgIDogbV9wa0NvbnRhY3QgeyBXVEZNb3Zl
KHBrQ29udGFjdCkgfQoreworfQorCitQYXltZW50Q29udGFjdDo6flBheW1lbnRDb250YWN0KCkg
PSBkZWZhdWx0OworCiBQYXltZW50Q29udGFjdCBQYXltZW50Q29udGFjdDo6ZnJvbUFwcGxlUGF5
UGF5bWVudENvbnRhY3QodW5zaWduZWQgdmVyc2lvbiwgY29uc3QgQXBwbGVQYXlQYXltZW50Q29u
dGFjdCYgY29udGFjdCkKIHsKICAgICByZXR1cm4gUGF5bWVudENvbnRhY3QoY29udmVydCh2ZXJz
aW9uLCBjb250YWN0KS5nZXQoKSk7CkBAIC0yMTgsNiArMjI3LDExIEBAIEFwcGxlUGF5UGF5bWVu
dENvbnRhY3QgUGF5bWVudENvbnRhY3Q6OnRvQXBwbGVQYXlQYXltZW50Q29udGFjdCh1bnNpZ25l
ZCB2ZXJzaW9uCiAgICAgcmV0dXJuIGNvbnZlcnQodmVyc2lvbiwgbV9wa0NvbnRhY3QuZ2V0KCkp
OwogfQogCitQS0NvbnRhY3QgKlBheW1lbnRDb250YWN0Ojpwa0NvbnRhY3QoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3BrQ29udGFjdC5nZXQoKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0
aG9kQ29jb2EubW0KaW5kZXggNmFlNjhjZGY4MzI2YmEwNTYzODAyNjg0MmU5ZWFmMjRhZjBkZGYx
OC4uZmQxYTg1OTM1MmQxNzM2Yzc1ZWFiOTAxZmQyZDBmNDhkMmE1OGI0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0
aG9kQ29jb2EubW0KQEAgLTEwMSwxMSArMTAxLDI1IEBAIHN0YXRpYyBBcHBsZVBheVBheW1lbnRN
ZXRob2QgY29udmVydChQS1BheW1lbnRNZXRob2QgKnBheW1lbnRNZXRob2QpCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAorUGF5bWVudE1ldGhvZDo6UGF5bWVudE1ldGhvZCgpID0gZGVmYXVsdDsK
KworUGF5bWVudE1ldGhvZDo6UGF5bWVudE1ldGhvZChSZXRhaW5QdHI8UEtQYXltZW50TWV0aG9k
PiYmIHBrUGF5bWVudE1ldGhvZCkKKyAgICA6IG1fcGtQYXltZW50TWV0aG9kIHsgV1RGTW92ZShw
a1BheW1lbnRNZXRob2QpIH0KK3sKK30KKworUGF5bWVudE1ldGhvZDo6flBheW1lbnRNZXRob2Qo
KSA9IGRlZmF1bHQ7CisKIEFwcGxlUGF5UGF5bWVudE1ldGhvZCBQYXltZW50TWV0aG9kOjp0b0Fw
cGxlUGF5UGF5bWVudE1ldGhvZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbnZlcnQobV9wa1Bh
eW1lbnRNZXRob2QuZ2V0KCkpOwogfQogCitQS1BheW1lbnRNZXRob2QgKlBheW1lbnRNZXRob2Q6
OnBrUGF5bWVudE1ldGhvZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGtQYXltZW50TWV0aG9k
LmdldCgpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y29jb2EvUGFzc0tpdFNQSS5oCmluZGV4IDNjYTM5ZmE5NmZmYWM1MDZiZDAwMDM5ODVkNmE4NjMz
YTk2ZmJjZjguLjE4OTU4ZTkyNjE0YzFlM2I2YTRmMDRhNjhhZDE0MzNhYjE5NzE4MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKQEAgLTMyNywx
MCArMzI3LDE5IEBAIHZvaWQgUEtEcmF3QXBwbGVQYXlCdXR0b24oX05vbm51bGwgQ0dDb250ZXh0
UmVmLCBDR1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsCiAKIE5TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCiAKK0BpbnRlcmZhY2UgUEtDb250YWN0ICgpIDxOU1NlY3VyZUNvZGluZz4KK0BlbmQK
KwogQGludGVyZmFjZSBQS1Bhc3NMaWJyYXJ5ICgpCiAtICh2b2lkKW9wZW5QYXltZW50U2V0dXBG
b3JNZXJjaGFudElkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBkb21haW46KE5TU3Ry
aW5nICopZG9tYWluIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9u
OwogQGVuZAogCitAaW50ZXJmYWNlIFBLUGF5bWVudCAoKSA8TlNTZWN1cmVDb2Rpbmc+CitAZW5k
CisKK0BpbnRlcmZhY2UgUEtQYXltZW50TWV0aG9kICgpIDxOU1NlY3VyZUNvZGluZz4KK0BlbmQK
KwogQGludGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0ICgpCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
c3Ryb25nKSBOU1N0cmluZyAqc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vj
b25kYXJ5SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0FyZ3VtZW50Q29kZXJzQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3Vt
ZW50Q29kZXJzQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzY4MTk3YmU5ZjExZjU1ZjViM2ExOTE1ZGQy
ODg3ODI3ZGViOGQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvQXJndW1lbnRDb2RlcnNDb2NvYS5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJBcmd1bWVudENvZGVycy5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisKKyNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK3ZvaWQgZW5jb2RlT2Jq
ZWN0KEVuY29kZXImLCBpZCA8TlNTZWN1cmVDb2Rpbmc+KTsKK3N0ZDo6b3B0aW9uYWw8UmV0YWlu
UHRyPGlkIDxOU1NlY3VyZUNvZGluZz4+PiBkZWNvZGVPYmplY3QoRGVjb2RlciYsIE5TQXJyYXk8
Q2xhc3M+ICphbGxvd2VkQ2xhc3Nlcyk7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0ZDo6b3B0
aW9uYWw8UmV0YWluUHRyPFQ+PiBkZWNvZGUoRGVjb2RlciYsIENsYXNzIGFsbG93ZWRDbGFzcyk7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxUPj4gZGVjb2Rl
KERlY29kZXImLCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsYXNzZXMgPSBAWyBbVCBjbGFzc10g
XSk7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxUPj4g
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENsYXNzIGFsbG93ZWRDbGFzcykKK3sKKyAgICByZXR1
cm4gZGVjb2RlPFQ+KGRlY29kZXIsIEBbIGFsbG93ZWRDbGFzcyBdKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4KK3N0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPFQ+PiBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgTlNBcnJheTxDbGFzcz4gKmFsbG93ZWRDbGFzc2VzKQoreworICAgIGF1dG8gcmVz
dWx0ID0gZGVjb2RlT2JqZWN0KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzKTsKKyAgICBpZiAoIXJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghKnJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciB9OworCisgICAgaWQgb2JqZWN0ID0gcmVzdWx0LT5s
ZWFrUmVmKCk7CisgICAgQVNTRVJUKFtvYmplY3QgaXNLaW5kT2ZDbGFzczphbGxvd2VkQ2xhc3Nl
c1swXV0pOworICAgIHJldHVybiB7IGFkb3B0TlMoKFQgKilvYmplY3QpIH07Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHVzaW5nIENvbmZvcm1zVG9TZWN1cmVDb2RpbmcgPSBzdGQ6OmlzX2Nv
bnZlcnRpYmxlPFQgKiwgaWQgPE5TU2VjdXJlQ29kaW5nPj47CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPFQgKj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUg
PSBULCBzdGQ6OmVuYWJsZV9pZl90PENvbmZvcm1zVG9TZWN1cmVDb2Rpbmc8VT46OnZhbHVlPiog
PSBudWxscHRyPgorICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBVICpv
YmplY3QpCisgICAgeworICAgICAgICBlbmNvZGVPYmplY3QoZW5jb2Rlciwgb2JqZWN0KTsKKyAg
ICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZXRh
aW5QdHI8VD4+IHsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSA9IFQsIHN0ZDo6ZW5hYmxlX2lm
X3Q8Q29uZm9ybXNUb1NlY3VyZUNvZGluZzxVPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJldGFpblB0cjxVPiYgb2Jq
ZWN0KQorICAgIHsKKyAgICAgICAgQXJndW1lbnRDb2RlcjxVICo+OjplbmNvZGUoZW5jb2Rlciwg
b2JqZWN0LmdldCgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSA9IFQsIHN0
ZDo6ZW5hYmxlX2lmX3Q8Q29uZm9ybXNUb1NlY3VyZUNvZGluZzxVPjo6dmFsdWU+KiA9IG51bGxw
dHI+CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPFU+PiBkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHJldHVybiBJUEM6OmRlY29kZTxVPihkZWNvZGVy
KTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKKworI2VuZGlmIC8vIFBMQVRGT1JN
KENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRD
b2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJz
Q29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI3ZGEyNjdmZjRiNmU2MGU3NzIxODA1OTlhYzhhYmJlZjY4
OTU1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3Vt
ZW50Q29kZXJzQ29jb2EubW0KQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiQXJndW1lbnRDb2RlcnNDb2NvYS5oIgorCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisKKyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKyNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CisKK25hbWVzcGFjZSBJUEMgeworCit2b2lk
IGVuY29kZU9iamVjdChFbmNvZGVyJiBlbmNvZGVyLCBpZCA8TlNTZWN1cmVDb2Rpbmc+IG9iamVj
dCkKK3sKKyAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyAgICBbYXJjaGl2
ZXIgZW5jb2RlT2JqZWN0Om9iamVjdCBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5
XTsKKyAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOworCisgICAgSVBDOjplbmNvZGUoZW5j
b2RlciwgKF9fYnJpZGdlIENGRGF0YVJlZilbYXJjaGl2ZXIgZW5jb2RlZERhdGFdKTsKK30KKwor
c3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8aWQgPE5TU2VjdXJlQ29kaW5nPj4+IGRlY29kZU9iamVj
dChEZWNvZGVyJiBkZWNvZGVyLCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsYXNzZXMpCit7Cisg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKKyAgICBpZiAoIWRlY29kZShkZWNvZGVyLCBk
YXRhKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gdW5hcmNoaXZl
ciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQo
KSk7CisgICAgQHRyeSB7CisgICAgICAgIGlkIHJlc3VsdCA9IFt1bmFyY2hpdmVyIGRlY29kZU9i
amVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aEFycmF5OmFsbG93ZWRDbGFzc2VzXSBmb3JLZXk6
TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKKyAgICAgICAgQVNTRVJUKFtyZXN1bHQgY29u
Zm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKTsKKyAgICAgICAgcmV0
dXJuIHsgcmVzdWx0IH07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsK
KyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIG9iamVjdCBvZiBjbGFzc2VzICVA
OiAlQCIsIGFsbG93ZWRDbGFzc2VzLCBleGNlcHRpb24pOworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIH0gQGZpbmFsbHkgeworICAgICAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNv
ZGluZ107CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBJUEMKKworI2VuZGlmIC8vIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURl
dGVjdGlvblJlc3VsdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rp
b25SZXN1bHQubW0KaW5kZXggZGFmZWQ5ZjA1YjdjYmEzNTFmMTdjZmQ4ZWYzMDdhMzU5MDkxZjY3
Zi4uOGRlNjdhMTcwYjI1YzVlYWNmM2NhZGMzNjcyMjYxNmZiYTQyZjg2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYs
NyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEYXRhRGV0ZWN0aW9uUmVz
dWx0LmgiCiAKLSNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKyNpbXBvcnQgIkFyZ3VtZW50
Q29kZXJzQ29jb2EuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNQSS5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KQEAgLTQxLDI3ICs0MSwxNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogdm9pZCBEYXRhRGV0ZWN0aW9uUmVzdWx0OjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZl
cigpOwotICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cmVzdWx0cy5nZXQoKSBmb3JLZXk6QCJk
YXRhRGV0ZWN0b3JSZXN1bHRzIl07Ci0gICAgSVBDOjplbmNvZGUoZW5jb2RlciwgKF9fYnJpZGdl
IENGRGF0YVJlZilhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CisgICAgZW5jb2RlciA8PCBy
ZXN1bHRzOwogfQogCiBzdGQ6Om9wdGlvbmFsPERhdGFEZXRlY3Rpb25SZXN1bHQ+IERhdGFEZXRl
Y3Rpb25SZXN1bHQ6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gZGF0YTsKLSAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEp
KQorICAgIGF1dG8gcmVzdWx0cyA9IElQQzo6ZGVjb2RlPE5TQXJyYXk+KGRlY29kZXIsIEBbIFtO
U0FycmF5IGNsYXNzXSwgZ2V0RERTY2FubmVyUmVzdWx0Q2xhc3MoKSBdKTsKKyAgICBpZiAoIXJl
c3VsdHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBEYXRhRGV0ZWN0aW9u
UmVzdWx0IHJlc3VsdDsKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJv
bURhdGEoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwotICAgIEB0cnkgewotICAgICAg
ICByZXN1bHQucmVzdWx0cyA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczpbTlNT
ZXQgc2V0V2l0aEFycmF5OkBbIFtOU0FycmF5IGNsYXNzXSwgZ2V0RERTY2FubmVyUmVzdWx0Q2xh
c3MoKV0gXSBmb3JLZXk6QCJkYXRhRGV0ZWN0b3JSZXN1bHRzIl07Ci0gICAgfSBAY2F0Y2ggKE5T
RXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVj
b2RlIE5TQXJyYXkgb2YgRERTY2FuUmVzdWx0OiAlQCIsIGV4Y2VwdGlvbik7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotICAgIAotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERl
Y29kaW5nXTsKKyAgICByZXN1bHQucmVzdWx0cyA9IFdURk1vdmUoKnJlc3VsdHMpOwogICAgIHJl
dHVybiB7IFdURk1vdmUocmVzdWx0KSB9OwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4
IDE2NDlkMmVjODE4YWQ4Y2RiNDQ4NGZjNGQ2MzNjODEyNmI4Nzg0ZjAuLjBkZDVkM2M0MTgzNDQ4
M2EyYzJmOGZmZjMwNzVmN2UxNzU5YzU2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAorI2ltcG9ydCAiQXJndW1lbnRDb2Rl
cnNDb2NvYS5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9Q
YXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgogI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRT
b2Z0TGluay5oPgpAQCAtMzgsMzIgKzM5LDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50JiBwYXltZW50KQogewotICAgIGF1dG8gYXJj
aGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwotICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cGF5
bWVudC5wa1BheW1lbnQoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKLSAg
ICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwotCi0gICAgYXV0byBkYXRhID0gYXJjaGl2ZXIu
Z2V0KCkuZW5jb2RlZERhdGE7Ci0gICAgZW5jb2RlciA8PCBEYXRhUmVmZXJlbmNlKHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICBl
bmNvZGVyIDw8IHBheW1lbnQucGtQYXltZW50KCk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpQYXltZW50Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlBheW1l
bnQmIHBheW1lbnQpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnQ+IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6UGF5bWVudD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGF0YVJlZmVyZW5jZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gZGF0YSA9
IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2
b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVu
Z3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwotICAgIGF1dG8gdW5h
cmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsKLSAgICBAdHJ5
IHsKLSAgICAgICAgUEtQYXltZW50ICpwa1BheW1lbnQgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmpl
Y3RPZkNsYXNzOlBBTDo6Z2V0UEtQYXltZW50Q2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVS
b290T2JqZWN0S2V5XTsKLSAgICAgICAgcGF5bWVudCA9IFBheW1lbnQocGtQYXltZW50KTsKLSAg
ICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBkZWNvZGUgUEtQYXltZW50OiAlQCIsIGV4Y2VwdGlvbik7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9CisgICAgYXV0byBwYXltZW50ID0gSVBDOjpkZWNvZGU8UEtQYXlt
ZW50PihkZWNvZGVyLCBQQUw6OmdldFBLUGF5bWVudENsYXNzKCkpOworICAgIGlmICghcGF5bWVu
dCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFt1bmFyY2hpdmVyIGZpbmlz
aERlY29kaW5nXTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gUGF5bWVudCB7IFdURk1v
dmUoKnBheW1lbnQpIH07CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblJlc3VsdD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJD
b3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCYgcmVzdWx0KQpAQCAtODMsMzggKzY4LDIy
IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVuCiAgICAgZGVjb2RlciA+PiBlcnJvcnM7CiAgICAg
aWYgKCFlcnJvcnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgCisKICAgICBy
ZXR1cm4ge3sgV1RGTW92ZSgqc3RhdHVzKSwgV1RGTW92ZSgqZXJyb3JzKSB9fTsKIH0KIAogdm9p
ZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250YWN0Pjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JiBwYXltZW50Q29udGFjdCkK
IHsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIg
ZW5jb2RlT2JqZWN0OnBheW1lbnRDb250YWN0LnBrQ29udGFjdCgpIGZvcktleTpOU0tleWVkQXJj
aGl2ZVJvb3RPYmplY3RLZXldOwotICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107Ci0KLSAg
ICBhdXRvIGRhdGEgPSBhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YTsKLSAgICBlbmNvZGVyIDw8
IERhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSks
IFtkYXRhIGxlbmd0aF0pOworICAgIGVuY29kZXIgPDwgcGF5bWVudENvbnRhY3QucGtDb250YWN0
KCk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQYXltZW50Q29udGFjdCYgcGF5bWVudENv
bnRhY3QpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRDb250YWN0PiBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlBheW1lbnRDb250YWN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShkYXRhUmVmZXJlbmNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0
byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25z
dF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oZGF0YVJlZmVyZW5jZS5kYXRh
KCkpKSBsZW5ndGg6ZGF0YVJlZmVyZW5jZS5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7Ci0gICAg
YXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKGRhdGEuZ2V0KCkpOwot
ICAgIEB0cnkgewotICAgICAgICBQS0NvbnRhY3QgKnBrQ29udGFjdCA9IFt1bmFyY2hpdmVyIGRl
Y29kZU9iamVjdE9mQ2xhc3M6UEFMOjpnZXRQS0NvbnRhY3RDbGFzcygpIGZvcktleTpOU0tleWVk
QXJjaGl2ZVJvb3RPYmplY3RLZXldOwotICAgICAgICBwYXltZW50Q29udGFjdCA9IFBheW1lbnRD
b250YWN0KHBrQ29udGFjdCk7Ci0gICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24p
IHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIFBLQ29udGFjdDogJUAiLCBl
eGNlcHRpb24pOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGF1dG8gY29udGFj
dCA9IElQQzo6ZGVjb2RlPFBLQ29udGFjdD4oZGVjb2RlciwgUEFMOjpnZXRQS0NvbnRhY3RDbGFz
cygpKTsKKyAgICBpZiAoIWNvbnRhY3QpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIFdlYkNvcmU6OlBheW1lbnRDb250YWN0IHsgV1RGTW92ZSgqY29udGFjdCkgfTsKIH0K
IAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRFcnJvcj46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50RXJyb3ImIGVycm9yKQpAQCAtMTQ2
LDYyICsxMTUsMzAgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50RXJyb3I+IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEVycm9yPjo6ZGVjb2QKIAogdm9pZCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYgcGF5bWVudE1lcmNo
YW50U2Vzc2lvbikKIHsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKLSAg
ICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnBheW1lbnRNZXJjaGFudFNlc3Npb24ucGtQYXltZW50
TWVyY2hhbnRTZXNzaW9uKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0g
ICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKLQotICAgIGF1dG8gZGF0YSA9IGFyY2hpdmVy
LmdldCgpLmVuY29kZWREYXRhOwotICAgIGVuY29kZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAg
ZW5jb2RlciA8PCBwYXltZW50TWVyY2hhbnRTZXNzaW9uLnBrUGF5bWVudE1lcmNoYW50U2Vzc2lv
bigpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vz
c2lvbj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRT
ZXNzaW9uJiBwYXltZW50TWVyY2hhbnRTZXNzaW9uKQorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQ
YXltZW50TWVyY2hhbnRTZXNzaW9uPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJj
aGFudFNlc3Npb24+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZl
cmVuY2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGRhdGEgPSBhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0
YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxlbmd0aDpkYXRh
UmVmZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsKLSAgICBhdXRvIHVuYXJjaGl2ZXIg
PSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoZGF0YS5nZXQoKSk7Ci0gICAgQHRyeSB7Ci0gICAg
ICAgIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAqcGtQYXltZW50TWVyY2hhbnRTZXNzaW9uID0g
W3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldFBLUGF5bWVudE1lcmNoYW50
U2Vzc2lvbkNsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0gICAg
ICAgIHBheW1lbnRNZXJjaGFudFNlc3Npb24gPSBQYXltZW50TWVyY2hhbnRTZXNzaW9uKHBrUGF5
bWVudE1lcmNoYW50U2Vzc2lvbik7Ci0gICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRp
b24pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVudE1lcmNo
YW50U2Vzc2lvbjogJUAiLCBleGNlcHRpb24pOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQorICAgIGF1dG8gcGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbj4oZGVjb2RlciwgUEFMOjpnZXRQS1BheW1lbnRNZXJjaGFudFNlc3Np
b25DbGFzcygpKTsKKyAgICBpZiAoIXBheW1lbnRNZXJjaGFudFNlc3Npb24pCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107Ci0g
ICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Np
b24geyBXVEZNb3ZlKCpwYXltZW50TWVyY2hhbnRTZXNzaW9uKSB9OwogfQogCiB2b2lkIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJiBwYXltZW50TWV0aG9kKQogewotICAgIGF1
dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwotICAgIFthcmNoaXZlciBlbmNvZGVPYmpl
Y3Q6cGF5bWVudE1ldGhvZC5wa1BheW1lbnRNZXRob2QoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVS
b290T2JqZWN0S2V5XTsKLSAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwotCi0gICAgYXV0
byBkYXRhID0gYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGE7Ci0gICAgZW5jb2RlciA8PCBEYXRh
UmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0
YSBsZW5ndGhdKTsKKyAgICBlbmNvZGVyIDw8IHBheW1lbnRNZXRob2QucGtQYXltZW50TWV0aG9k
KCk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlBheW1lbnRNZXRob2QmIHBheW1lbnRNZXRo
b2QpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6UGF5bWVudE1ldGhvZD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoZGF0YVJlZmVyZW5jZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gZGF0
YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2Fz
dDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkg
bGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwotICAgIGF1dG8g
dW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsKLSAgICBA
dHJ5IHsKLSAgICAgICAgUEtQYXltZW50TWV0aG9kICpwa1BheW1lbnRNZXRob2QgPSBbdW5hcmNo
aXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOlBBTDo6Z2V0UEtQYXltZW50TWV0aG9kQ2xhc3MoKSBm
b3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKLSAgICAgICAgcGF5bWVudE1ldGhv
ZCA9IFBheW1lbnRNZXRob2QocGtQYXltZW50TWV0aG9kKTsKLSAgICB9IEBjYXRjaCAoTlNFeGNl
cHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUg
UEtQYXltZW50OiAlQCIsIGV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
CisgICAgYXV0byBwYXltZW50TWV0aG9kID0gSVBDOjpkZWNvZGU8UEtQYXltZW50TWV0aG9kPihk
ZWNvZGVyLCBQQUw6OmdldFBLUGF5bWVudE1ldGhvZENsYXNzKCkpOworICAgIGlmICghcGF5bWVu
dE1ldGhvZCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFt1bmFyY2hpdmVy
IGZpbmlzaERlY29kaW5nXTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gUGF5bWVudE1l
dGhvZCB7IFdURk1vdmUoKnBheW1lbnRNZXRob2QpIH07CiB9CiAKIHZvaWQgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXRob2RVcGRhdGUmIHVwZGF0ZSkKQEAgLTI1NCwyMCAr
MTkxLDIyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBBcHBsCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICByZXF1ZXN0LnNldFJlcXVpcmVkQmlsbGluZ0NvbnRhY3RGaWVsZHMocmVxdWlyZWRCaWxs
aW5nQ29udGFjdEZpZWxkcyk7CiAKLSAgICBQYXltZW50Q29udGFjdCBiaWxsaW5nQ29udGFjdDsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJpbGxpbmdDb250YWN0KSkKKyAgICBzdGQ6Om9wdGlv
bmFsPFBheW1lbnRDb250YWN0PiBiaWxsaW5nQ29udGFjdDsKKyAgICBkZWNvZGVyID4+IGJpbGxp
bmdDb250YWN0OworICAgIGlmICghYmlsbGluZ0NvbnRhY3QpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXF1ZXN0LnNldEJpbGxpbmdDb250YWN0KGJpbGxpbmdDb250YWN0KTsKKyAgICBy
ZXF1ZXN0LnNldEJpbGxpbmdDb250YWN0KCpiaWxsaW5nQ29udGFjdCk7CiAKICAgICBBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdDo6Q29udGFjdEZpZWxkcyByZXF1aXJlZFNoaXBwaW5nQ29u
dGFjdEZpZWxkczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKChyZXF1aXJlZFNoaXBwaW5nQ29u
dGFjdEZpZWxkcykpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVxdWVzdC5zZXRSZXF1
aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkcyhyZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkcyk7
CiAKLSAgICBQYXltZW50Q29udGFjdCBzaGlwcGluZ0NvbnRhY3Q7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzaGlwcGluZ0NvbnRhY3QpKQorICAgIHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbnRh
Y3Q+IHNoaXBwaW5nQ29udGFjdDsKKyAgICBkZWNvZGVyID4+IHNoaXBwaW5nQ29udGFjdDsKKyAg
ICBpZiAoIXNoaXBwaW5nQ29udGFjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlcXVl
c3Quc2V0U2hpcHBpbmdDb250YWN0KHNoaXBwaW5nQ29udGFjdCk7CisgICAgcmVxdWVzdC5zZXRT
aGlwcGluZ0NvbnRhY3QoKnNoaXBwaW5nQ29udGFjdCk7CiAKICAgICBBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBhYmlsaXRpZXMgbWVyY2hhbnRDYXBhYmlsaXRpZXM7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXJjaGFudENhcGFiaWxpdGllcykpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5kZXggMWMxMWZmODg1Nzc0YWQ0MjQ0MDdhNjBi
MWU3OWNhMDVjZWNjNmVmYS4uMjI4ZmI1OGMyZjU5YzFkNDcwMWNlNzU1NzJiYWJmZWYzNzg0ZjU0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtOTIwLDEzICs5MjAs
MTMgQEAgQ1N0cmluZyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24oKSBj
b25zdAogICAgICAgICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cCh0cyk7CiAgICAg
ICAgICAgICB0cyA8PCBjcmVhdGVkTGF5ZXIudHlwZSA8PCIgIiA8PCBjcmVhdGVkTGF5ZXIubGF5
ZXJJRDsKICAgICAgICAgICAgIHN3aXRjaCAoY3JlYXRlZExheWVyLnR5cGUpIHsKLSAgICAgICAg
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgorICAgICAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5
ZXI6CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXll
ci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5
ZXI6CisgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
Q29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQt
aWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
Q3VzdG9tOgorICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZUN1c3RvbToKICAgICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3Jl
YXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgZGVmYXVsdDoKQEAgLTkzOCw3ICs5MzgsNyBAQCBDU3RyaW5nIFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgZHVtcENoYW5n
ZWRMYXllcnModHMsIG1fY2hhbmdlZExheWVyUHJvcGVydGllcyk7CiAKICAgICBpZiAoIW1fZGVz
dHJveWVkTGF5ZXJJRHMuaXNFbXB0eSgpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHk8VmVjdG9y
PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4+KCJkZXN0cm95ZWQtbGF5ZXJzIiwgbV9k
ZXN0cm95ZWRMYXllcklEcyk7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eTxWZWN0b3I8V2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPj4oImRlc3Ryb3llZC1sYXllcnMiLCBt
X2Rlc3Ryb3llZExheWVySURzKTsKIAogICAgIGlmIChtX2VkaXRvclN0YXRlKSB7CiAgICAgICAg
IFRleHRTdHJlYW06Okdyb3VwU2NvcGUgc2NvcGUodHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAwZGZiNmU4ZjE5ZDQyMGU5ODdjYzQ4ODA0
OTY3MTRmZDgxMGZlOThlLi4wOTA5YjRkMTljYTA4OTVjNTQzMDVmNWY1NGNkYTBjMDQ5M2E4ODMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAt
NjAxLDcgKzYwMSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlBheW1lbnQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2Rl
ciYsIFdlYkNvcmU6OlBheW1lbnQmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQYXltZW50PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4gewpAQCAtNjEx
LDcgKzYxMSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5
bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmKTsKLSAgICBzdGF0aWMgYm9v
bCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlBheW1lbnRDb250YWN0Jik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+IGRlY29kZShEZWNvZGVyJik7
CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRF
cnJvcj4gewpAQCAtNjIxLDEyICs2MjEsMTIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQYXltZW50RXJyb3I+IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPiB7CiAgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9u
Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpQYXltZW50TWVy
Y2hhbnRTZXNzaW9uJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpOwotICAg
IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlBheW1lbnRNZXRob2RVcGRhdGU+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQppbmRleCBmMWUw
YzNhNjM1NmYwM2IyNjgwOWM2MzcyZTg4ZmY0NTVhYzE1OTk3Li5kMGFhODUxOTZjZDc1ZWQ5OGZk
Yjk3MTRhZDRlNjNmNjA2YmYwOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9p
b3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYs
NyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbi5oIgogCi0jaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCisjaW1w
b3J0ICJBcmd1bWVudENvZGVyc0NvY29hLmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvRGF0YURldGVjdG9yc0NvcmVTUEkuaD4KICNp
bXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CkBAIC03NiwxMCArNzYs
NyBAQCB2b2lkIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjplbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaXNEYXRhRGV0ZWN0b3JMaW5r
OwogICAgIGlmIChpc0RhdGFEZXRlY3RvckxpbmspIHsKICAgICAgICAgZW5jb2RlciA8PCBkYXRh
RGV0ZWN0b3JJZGVudGlmaWVyOwotICAgICAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2
ZXIoKTsKLSAgICAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpkYXRhRGV0ZWN0b3JSZXN1bHRz
LmdldCgpIGZvcktleTpAImRhdGFEZXRlY3RvclJlc3VsdHMiXTsKLQotICAgICAgICBJUEM6OmVu
Y29kZShlbmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oYXJjaGl2ZXIuZ2V0KCku
ZW5jb2RlZERhdGEpKTsKKyAgICAgICAgZW5jb2RlciA8PCBkYXRhRGV0ZWN0b3JSZXN1bHRzOwog
ICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQpAQCAtMTczLDE5ICsx
NzAsMTIgQEAgYm9vbCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgSW50ZXJhY3Rpb24KICAgICBpZiAocmVzdWx0LmlzRGF0YURl
dGVjdG9yTGluaykgewogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5kYXRhRGV0
ZWN0b3JJZGVudGlmaWVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKLSAgICAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVy
LCBkYXRhKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIGF1
dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoTlNEYXRhICopZGF0YS5n
ZXQoKSk7Ci0gICAgICAgIEB0cnkgewotICAgICAgICAgICAgcmVzdWx0LmRhdGFEZXRlY3RvclJl
c3VsdHMgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhB
cnJheTpAWyBbTlNBcnJheSBjbGFzc10sIGdldEREU2Nhbm5lclJlc3VsdENsYXNzKCldIF0gZm9y
S2V5OkAiZGF0YURldGVjdG9yUmVzdWx0cyJdOwotICAgICAgICB9IEBjYXRjaCAoTlNFeGNlcHRp
b24gKmV4Y2VwdGlvbikgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2Rl
IE5TQXJyYXkgb2YgRERTY2FuUmVzdWx0OiAlQCIsIGV4Y2VwdGlvbik7CisKKyAgICAgICAgYXV0
byBkYXRhRGV0ZWN0b3JSZXN1bHRzID0gSVBDOjpkZWNvZGU8TlNBcnJheT4oZGVjb2RlciwgQFsg
W05TQXJyYXkgY2xhc3NdLCBnZXRERFNjYW5uZXJSZXN1bHRDbGFzcygpIF0pOworICAgICAgICBp
ZiAoIWRhdGFEZXRlY3RvclJlc3VsdHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKwor
ICAgICAgICByZXN1bHQuZGF0YURldGVjdG9yUmVzdWx0cyA9IFdURk1vdmUoKmRhdGFEZXRlY3Rv
clJlc3VsdHMpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQppbmRleCA4ZTM2OTY1MjMwNTc2ODY4
ZDQ5NWRkYjk2Yjg2MDA2OTcyYWU0YzY2Li41ZmRhN2JmNjZjOWMyMjRjMjI5NTczOGU4NDhlMWRl
YmZiY2NlNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNNYWMubW0KQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogCiAjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCisjaW1wb3J0
ICJBcmd1bWVudENvZGVyc0NvY29hLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIuaD4KQEAgLTQzMSwyNiArNDMyLDE2IEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29k
ZXImIGRlY29kZXIsCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQcm90ZWN0aW9uU3Bh
Y2U+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6
UHJvdGVjdGlvblNwYWNlJiBzcGFjZSkKIHsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJj
aGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnNwYWNlLm5zU3BhY2UoKSBmb3JL
ZXk6QCJwcm90ZWN0aW9uU3BhY2UiXTsKLSAgICBJUEM6OmVuY29kZShlbmNvZGVyLCAoX19icmlk
Z2UgQ0ZEYXRhUmVmKWFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKTsKKyAgICBlbmNvZGVyIDw8
IHNwYWNlLm5zU3BhY2UoKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlByb3Rl
Y3Rpb25TcGFjZT46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3Jl
OjpQcm90ZWN0aW9uU3BhY2UmIHNwYWNlKQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRh
dGE7Ci0gICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRhKSkKKyAgICBhdXRvIHBsYXRm
b3JtRGF0YSA9IElQQzo6ZGVjb2RlPE5TVVJMUHJvdGVjdGlvblNwYWNlPihkZWNvZGVyKTsKKyAg
ICBpZiAoIXBsYXRmb3JtRGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB1
bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKChfX2JyaWRnZSBOU0RhdGEgKilk
YXRhLmdldCgpKTsKLSAgICBAdHJ5IHsKLSAgICAgICAgaWYgKFJldGFpblB0cjxOU1VSTFByb3Rl
Y3Rpb25TcGFjZT4gbnNTcGFjZSA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05T
VVJMUHJvdGVjdGlvblNwYWNlIGNsYXNzXSBmb3JLZXk6QCJwcm90ZWN0aW9uU3BhY2UiXSkKLSAg
ICAgICAgICAgIHNwYWNlID0gV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlKG5zU3BhY2UuZ2V0KCkp
OwotICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIGRlY29kZSBOU1VSTFByb3RlY3Rpb25TcGFjZTogJUAiLCBleGNlcHRp
b24pOwotICAgIH0KLQotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICBzcGFj
ZSA9IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSB7IHBsYXRmb3JtRGF0YS0+Z2V0KCkgfTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDc0LDEwICs0NjUsNyBAQCB2b2lkIEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6Q3JlZGVudGlhbD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNv
ZGVyLCBjbwogICAgIH0KIAogICAgIGVuY29kZXIgPDwgZmFsc2U7Ci0KLSAgICBhdXRvIGFyY2hp
dmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0Om5zQ3Jl
ZGVudGlhbCBmb3JLZXk6QCJjcmVkZW50aWFsIl07Ci0gICAgSVBDOjplbmNvZGUoZW5jb2Rlciwg
KF9fYnJpZGdlIENGRGF0YVJlZilhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CisgICAgZW5j
b2RlciA8PCBuc0NyZWRlbnRpYWw7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpD
cmVkZW50aWFsPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6
OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCkBAIC01MDksMTkgKzQ5NywxMSBAQCBib29sIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6Q3JlZGVudGlhbD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVy
JiBkZWNvZGVyLCBXZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBkYXRhOwotICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkp
CisgICAgYXV0byBuc0NyZWRlbnRpYWwgPSBJUEM6OmRlY29kZTxOU1VSTENyZWRlbnRpYWw+KGRl
Y29kZXIpOworICAgIGlmICghbnNDcmVkZW50aWFsKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoKF9fYnJpZGdl
IE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwotICAgIEB0cnkgewotICAgICAgICBpZiAoUmV0YWluUHRy
PE5TVVJMQ3JlZGVudGlhbD4gbnNDcmVkZW50aWFsID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0
T2ZDbGFzczpbTlNVUkxDcmVkZW50aWFsIGNsYXNzXSBmb3JLZXk6QCJjcmVkZW50aWFsIl0pCi0g
ICAgICAgICAgICBjcmVkZW50aWFsID0gV2ViQ29yZTo6Q3JlZGVudGlhbChuc0NyZWRlbnRpYWwu
Z2V0KCkpOwotICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBOU1VSTENyZWRlbnRpYWw6ICVAIiwgZXhjZXB0
aW9uKTsKLSAgICB9Ci0KLSAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgY3Jl
ZGVudGlhbCA9IFdlYkNvcmU6OkNyZWRlbnRpYWwgeyBuc0NyZWRlbnRpYWwtPmdldCgpIH07CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTU5OCwyMCArNTc4LDEwIEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCi1zdGF0
aWMgTlNTdHJpbmcgKmRldmljZUNvbnRleHRLZXkoKQotewotICAgIHN0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IGtleSA9IEAiZGV2aWNlQ29udGV4dCI7Ci0gICAgcmV0dXJuIGtleTsKLX0KLQogdm9p
ZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5j
b2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCiB7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3Vy
ZUFyY2hpdmVyKCk7Ci0KICAgICBpZiAoW2dldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9y
bXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQotICAgICAgICBbYXJjaGl2
ZXIgZW5jb2RlT2JqZWN0OnRhcmdldC5hdk91dHB1dENvbnRleHQoKSBmb3JLZXk6ZGV2aWNlQ29u
dGV4dEtleSgpXTsKLQotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIChfX2JyaWRnZSBDRkRhdGFS
ZWYpYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGEpOworICAgICAgICBlbmNvZGVyIDw8IHRhcmdl
dC5hdk91dHB1dENvbnRleHQoKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRl
Y29kZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCkBAIC02
MTksMjMgKzU4OSwxMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjbwogICAgIGlmICghW2dldEFW
T3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3Vy
ZUNvZGluZyldKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBkYXRhOwotICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJG
cm9tRGF0YSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7Ci0KLSAgICBBVk91dHB1dENv
bnRleHQgKmNvbnRleHQgPSBuaWw7Ci0gICAgQHRyeSB7Ci0gICAgICAgIGNvbnRleHQgPSBbdW5h
cmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgZm9y
S2V5OmRldmljZUNvbnRleHRLZXkoKV07Ci0gICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNl
cHRpb24pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJUaGUgdGFyZ2V0IHBpY2tlciBiZWluZyBkZWNv
ZGVkIGlzIG5vdCBhbiBBVk91dHB1dENvbnRleHQuIik7CisgICAgYXV0byBjb250ZXh0ID0gSVBD
OjpkZWNvZGU8QVZPdXRwdXRDb250ZXh0PihkZWNvZGVyLCBnZXRBVk91dHB1dENvbnRleHRDbGFz
cygpKTsKKyAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAK
LSAgICB0YXJnZXQgPSBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChjb250ZXh0
KTsKLSAgICAKLSAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgdGFyZ2V0ID0g
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgeyBjb250ZXh0LT5nZXQoKSB9Owog
ICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2Vi
SGl0VGVzdFJlc3VsdERhdGEubW0KaW5kZXggNTg4YzVlNTE4YTI0OTdmMzU4ZjRiODJjYmFhYzk0
MThkOWFkMTBjMC4uNTg4MTM0M2U4YjUwMDQxNmY1MmQ1ZGZjNzQyN2NlNDE4NmQ1NDlkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkhpdFRlc3RSZXN1bHREYXRhLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5tbQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQ1LDEwICs0NSw3IEBAIHZvaWQgV2ViSGl0VGVzdFJlc3VsdERhdGE6OnBsYXRmb3JtRW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBpZiAoIWhhc0FjdGlvbkNvbnRl
eHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZl
cigpOwotICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6ZGV0ZWN0ZWREYXRhQWN0aW9uQ29udGV4
dC5nZXQoKSBmb3JLZXk6QCJhY3Rpb25Db250ZXh0Il07Ci0KLSAgICBJUEM6OmVuY29kZShlbmNv
ZGVyLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKWFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKTsKKyAg
ICBlbmNvZGVyIDw8IGRldGVjdGVkRGF0YUFjdGlvbkNvbnRleHQ7CiAKICAgICBlbmNvZGVyIDw8
IGRldGVjdGVkRGF0YUJvdW5kaW5nQm94OwogICAgIGVuY29kZXIgPDwgZGV0ZWN0ZWREYXRhT3Jp
Z2luYXRpbmdQYWdlT3ZlcmxheTsKQEAgLTY5LDE5ICs2NiwxMSBAQCBib29sIFdlYkhpdFRlc3RS
ZXN1bHREYXRhOjpwbGF0Zm9ybURlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYkhpdFRl
c3RSZXN1bAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBBU1NFUlQoRGF0YURldGVjdG9yc0xp
YnJhcnkoKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwotICAgIGlmICghSVBD
OjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCisgICAgYXV0byBkZXRlY3RlZERhdGFBY3Rpb25Db250
ZXh0ID0gSVBDOjpkZWNvZGU8RERBY3Rpb25Db250ZXh0PihkZWNvZGVyLCBnZXREREFjdGlvbkNv
bnRleHRDbGFzcygpKTsKKyAgICBpZiAoIWRldGVjdGVkRGF0YUFjdGlvbkNvbnRleHQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2
ZXJGcm9tRGF0YSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7Ci0gICAgQHRyeSB7Ci0g
ICAgICAgIGhpdFRlc3RSZXN1bHREYXRhLmRldGVjdGVkRGF0YUFjdGlvbkNvbnRleHQgPSBbdW5h
cmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldEREQWN0aW9uQ29udGV4dENsYXNzKCkgZm9y
S2V5OkAiYWN0aW9uQ29udGV4dCJdOwotICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0
aW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBEREFjdGlvbkNvbnRl
eHQ6ICVAIiwgZXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAK
LSAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgaGl0VGVzdFJlc3VsdERhdGEu
ZGV0ZWN0ZWREYXRhQWN0aW9uQ29udGV4dCA9IFdURk1vdmUoKmRldGVjdGVkRGF0YUFjdGlvbkNv
bnRleHQpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5kZXRl
Y3RlZERhdGFCb3VuZGluZ0JveCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAppbmRleCA2YWM4ZmVjMTZjZTkyZWJmYTcxNmRlMzJiYTA0NTc5YWZkMjM3NTdmLi44
NjQzZGFlNmJlNDM2YjhlZmNmNzljMTAxNTA4ZjI1NjViNDJhMzFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CkBAIC0xMjIsNiArMTIyLDcgQEAgU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1
dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCiAKIFNoYXJlZC9Db2NvYS9BUElEYXRhQ29jb2Eu
bW0KIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KK1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVy
c0NvY29hLm1tCiBTaGFyZWQvQ29jb2EvQ2hpbGRQcm9jZXNzQ29jb2EubW0KIFNoYXJlZC9Db2Nv
YS9Db21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLm1tCiBTaGFyZWQvQ29jb2EvRGF0YURldGVj
dGlvblJlc3VsdC5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMjgxOTA2OTNkM2EzZmVmZmViMGVlY2I2NWI2ZjM0YTJiODk0OTRiMy4u
NjFkOTQ4MWY1MzJjZTc5NDNjYzllNjc0NjBiMmJiODAyMmMzNzZmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjY1LDYgKzEyNjUs
NyBAQAogCQlBMTNCM0RBMjIwN0YzOURFMDA5MEM1OEQgLyogTW9iaWxlV2lGaVNQSS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEzQjNEQTEyMDdGMzlE
RTAwOTBDNThEIC8qIE1vYmlsZVdpRmlTUEkuaCAqLzsgfTsKIAkJQTEzREM2ODIyMDdBQTZCMjAw
NjZFRjcyIC8qIFdLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEzREM2ODAyMDdBQTZCMjAwNjZFRjcy
IC8qIFdLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5oICovOyB9OwogCQlBMTVFRURFNjFF
MzAxQ0VFMDAwMDY5QjAgLyogV0tQYXNzd29yZFZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNUVFREU0MUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bh
c3N3b3JkVmlldy5oICovOyB9OworCQlBMTc1QzQ0QTIxQUEzMTcxMDAwMDM3RDAgLyogQXJndW1l
bnRDb2RlcnNDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE3NUM0NDkyMUFBMzE3MDAwMDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EuaCAq
LzsgfTsKIAkJQTE4MkQ1QjUxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2liaWxpdHlJT1MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODJENUIzMUJF
NkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggKi87IH07CiAJCUExOUREM0MwMUQw
N0QxNjgwMEFDODIzQiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE5REQzQkYxRDA3RDE2
ODAwQUM4MjNCIC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlckludGVybmFsLmggKi87IH07CiAJ
CUExQTRGRTVBMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFBNEZFNTcxOERDRTlGQTAwQjVFQThB
IC8qIF9XS0Rvd25sb2FkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTM4MTksNiArMzgyMCw4IEBACiAJCUExM0RDNjgxMjA3QUE2QjIwMDY2RUY3
MiAvKiBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW07IHBhdGggPSBpb3MvV0tBcHBs
aWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTVFRURFMzFFMzAxQ0VFMDAwMDY5QjAgLyogV0tQYXNzd29yZFZpZXcubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1Bhc3N3b3JkVmlldy5tbTsgcGF0aCA9
IGlvcy9XS1Bhc3N3b3JkVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE1
RUVERTQxRTMwMUNFRTAwMDA2OUIwIC8qIFdLUGFzc3dvcmRWaWV3LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFdLUGFzc3dvcmRWaWV3Lmg7IHBhdGggPSBpb3MvV0tQYXNzd29y
ZFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3NUM0NDkyMUFBMzE3MDAw
MDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXJndW1lbnRDb2RlcnNDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBMTc1QzQ0QjIxQUEzMzFCMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFyZ3VtZW50Q29kZXJzQ29jb2EubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUExODJENUIyMUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmls
aXR5SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNz
aWJpbGl0eUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE4MkQ1QjMxQkU2
QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2liaWxpdHlJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMTlERDNCRjFEMDdEMTY4MDBBQzgyM0IgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVy
SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2ViVmlld1By
aW50Rm9ybWF0dGVySW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYx
NzAsNiArNjE3Myw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxQTFFRjE5NzFBMUQ1QjQyMDAy
MzIwMEEgLyogQVBJRGF0YUNvY29hLm1tICovLAogCQkJCTM3OEUxQTNCMTgxRUQ2RkYwMDMxMDA3
QSAvKiBBUElPYmplY3QubW0gKi8sCisJCQkJQTE3NUM0NDkyMUFBMzE3MDAwMDAzN0QwIC8qIEFy
Z3VtZW50Q29kZXJzQ29jb2EuaCAqLywKKwkJCQlBMTc1QzQ0QjIxQUEzMzFCMDAwMDM3RDAgLyog
QXJndW1lbnRDb2RlcnNDb2NvYS5tbSAqLywKIAkJCQkxQTY5OEYxNzFFNDkxMDIyMDA2NEU4ODEg
LyogQ2hpbGRQcm9jZXNzQ29jb2EubW0gKi8sCiAJCQkJMzdCRUM0REYxOTQ5MTQ4NjAwOEI0Mjg2
IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCAqLywKIAkJCQkzN0JFQzRERTE5NDkx
NDg2MDA4QjQyODYgLyogQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5tbSAqLywKQEAgLTg4
NzUsNyArODg4MCw2IEBACiAJCQkJN0E4QTlENUExRUYxMzAyOTAwOTgwMUFFIC8qIEFQSUluamVj
dGVkQnVuZGxlQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QThBOUQ1ODFFRjEx
OUIwMDA5ODAxQUUgLyogQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTM3NzUxMjMxMURGMERFRTIwMDhBMzUxQyAvKiBBUElJbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTRFNTdGNkIyMUE4M0IxMjAwMzQ1RjNDIC8qIFJl
bW90ZUxheWVyVHJlZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjkwNzlFMThGMzQwQTIw
MDFERkYwNCAvKiBBUElJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdBM0FDRTFCMUVFRUY3OUIwMEE4NjRBNCAvKiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBOEE5RDVDMUVGMTQ1OTgwMDk4MDFBRSAv
KiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICov
LApAQCAtODkxNiw2ICs4OTIwLDcgQEAKIAkJCQkxQUVGRDI3OTExRDE2QzgxMDA4MjE5RDMgLyog
QXJndW1lbnRDb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFRkQyRjcxMUQxODA3QjAwODIx
OUQzIC8qIEFyZ3VtZW50Q29kZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFGMEM0QTEyQjE2
MzM0MDA4RTQ5RTIgLyogQXJndW1lbnRDb2RlcnNDRi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE3
NUM0NEEyMUFBMzE3MTAwMDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxNzlGRDlDMTM0RDM4MDYwMDE1Qjg4MyAvKiBBcmd1bWVudENvZGVyc01hYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxQTBCRDIxQTQ4RTZDNjAwNTRFRjc0IC8qIEFzc2VydGlv
blNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTlDNEE1OTE4QjgxMTc0MDA3QkRD
QjYgLyogQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtOTIxNyw2
ICs5MjIyLDcgQEAKIAkJCQkxQUIxNkFFMjE2NDg2NTZEMDAyOTBENjIgLyogUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGMjRBMkUxODc5RTRC
QzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFBM0Q3NUMxNjUxQjQ0RjAwODcxM0QwIC8qIFJlbW90ZUxheWVy
VHJlZUhvc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RTU3RjZCMjFBODNCMTIwMDM0NUYzQyAv
KiBSZW1vdGVMYXllclRyZWVOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRERFMEFGQTE4Mjk4
Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkYyNjRBMDFBMUZGOUNDMDAxRkU3NTkgLyogUmVtb3RlTGF5ZXJUcmVlU2Ny
b2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUYxQUM2QzE2NTE3
NTlFMDBDMTdEN0YgLyogUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICov
LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355649</attachid>
            <date>2018-11-26 10:17:08 -0800</date>
            <delta_ts>2018-11-26 12:06:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191948-20181126101707.patch</filename>
            <type>text/plain</type>
            <size>52105</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWY4MTliOGVlZWM5MzYx
ZDY1MTY0NDIzNmE3Njg5ZDMzZDViNTI1MS4uZjNmYTkxYmMyYTlhYzljNGNhMjFhN2U0NTNkNWQ5
NDI2MmY4MTk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4LTExLTI2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIE1ha2UgaXQgZWFz
aWVyIHRvIGVuY29kZSBOU09iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MTk0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Lmg6IENoYW5nZWQgdGhl
IFBLUGF5bWVudCAqIGNvbnN0cnVjdG9yIHRvIHRha2UgYQorICAgICAgICBSZXRhaW5QdHI8UEtQ
YXltZW50PiYmIGluc3RlYWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29u
dGFjdC5oOiBEaXR0byBmb3IgUEtDb250YWN0LgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkv
UGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oOiBEaXR0byBmb3IgUEtQYXltZW50TWVyY2hhbnRTZXNz
aW9uLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZC5oOiBEaXR0byBm
b3IgUEtQYXltZW50TWV0aG9kLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5
bWVudENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudDo6UGF5bWVudCk6IE1vdmVk
IGRlZmluaXRpb24gb3V0LW9mLWxpbmUuCisgICAgICAgIChXZWJDb3JlOjpQYXltZW50Ojpwa1Bh
eW1lbnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1Bh
eW1lbnRDb250YWN0Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50Q29udGFjdDo6
UGF5bWVudENvbnRhY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRDb250YWN0
Ojpwa0NvbnRhY3QgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2Nv
Y29hL1BheW1lbnRNZXRob2RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRNZXRo
b2Q6OlBheW1lbnRNZXRob2QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRNZXRo
b2Q6OnBrUGF5bWVudE1ldGhvZCBjb25zdCk6IERpdHRvLgorCiAyMDE4LTExLTI1ICBaYWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBVc2UgZmxvYXQg
Ym94J3MgbWFyZ2luIGJveCB0byBhZGp1c3QgdGhlIGxpbmUgY29uc3RyYWludHMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwppbmRleCA4NDk0ZjI3NDYwNWRlMDYyMDY2ODFkZTc3YTJmMzliNWM2M2FmY2Q2Li5l
MjkzNjFmNjY4NDlhMTgwNGViOWQwM2FlM2EzMDg4YWVjZjhmYjJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOC0xMS0yNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBs
ZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBNYWtlIGl0IGVhc2llciB0byBlbmNvZGUgTlNPYmpl
Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE5
NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBh
bC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oOiBEZWNsYXJlZCBzb21lIGNsYXNzZXMgdGhhdCBzZWNy
ZXRseSBjb25mb3JtIHRvIE5TU2VjdXJlQ29kaW5nLgorCiAyMDE4LTExLTI0ICBBbmR5IEVzdGVz
ICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFNPRlRfTElOS19DTEFTU19G
T1Jfe0hFQURFUixTT1VSQ0V9IHNob3VsZCBnZW5lcmF0ZSBhIG1vcmUgY29uY2lzZSBnZXR0ZXIg
ZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMDcxNDQ4ZDdjMmVkOWQ2ZWIwN2VlYTc4M2VkOTBhODE5MjM3
MWJhYS4uY2JjMmI5NGNkZGI1YThmMGEyZTc3NzY4ZWUxZDM5N2Q5NmIwN2IyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1OSBAQAorMjAxOC0xMS0yNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5j
b20+CisKKyAgICAgICAgW0NvY29hXSBNYWtlIGl0IGVhc2llciB0byBlbmNvZGUgTlNPYmplY3Rz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE5NDgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCBzaG91
bGQgYmUgZWFzaWVyIHRvIGVuY29kZSBvYmplY3RzIHRoYXQgY29uZm9ybSB0byBOU1NlY3VyZUNv
ZGluZyBmb3IgV2ViS2l0IElQQy4gUmlnaHQKKyAgICAgICAgbm93LCBzZXZlcmFsIGFyZ3VtZW50
IGNvZGVycyBkdXBsaWNhdGUgdGhlIGxvZ2ljIGZvciBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2Jq
ZWN0cyB1c2luZworICAgICAgICBOU0tleWVkQXJjaGl2ZXIgYW5kIE5TS2V5ZWRVbmFyY2hpdmVy
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBlbmNvZGVPYmplY3QoKSBhbmQgZGVjb2RlT2Jq
ZWN0KCkgcHJpbWl0aXZlcyBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHVzaW5nCisgICAgICAg
IEZvdW5kYXRpb24ga2V5ZWQgYXJjaGl2aW5nLiBJdCB0aGVuIHBhcnRpYWxseSBzcGVjaWFsaXpl
cyBBcmd1bWVudENvZGVyIGZvciByYXcgcG9pbnRlcnMgYW5kCisgICAgICAgIFJldGFpblB0cnMg
d2hvc2UgcG9pbnRlZSBjb25mb3JtcyB0byBOU1NlY3VyZUNvZGluZyB0byBjYWxsIHRoZXNlIG5l
dyBwcmltaXRpdmVzLgorCisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRvIHVzZSBFbmNvZGVyOjpv
cGVyYXRvcjw8IHRvIGVuY29kZSByYXcgcG9pbnRlcnMgb3IgUmV0YWluUHRycyBhbmQgdXNlCisg
ICAgICAgIERlY29kZXI6Om9wZXJhdG9yPj4gdG8gZGVjb2RlIHRvIGFuIG9wdGlvbmFsIFJldGFp
blB0ci4gQnkgZGVmYXVsdCwgSVBDOjpkZWNvZGUgaW5mZXJzIHRoZQorICAgICAgICBhbGxvd2Vk
IGNsYXNzIGZvciBkZWNvZGluZyBieSBjYWxsaW5nIGBbVCBjbGFzc11gLiBXZSBjYW4gYWxzbyBz
cGVjaWZ5IHRoZSBhbGxvd2VkIGNsYXNzZXMKKyAgICAgICAgZXhwbGljaXRseSBmb3IgY29udGFp
bmVycyBhbmQgY2xhc3NlcyB0aGF0IGFyZSBsb2FkZWQgYXQgcnVudGltZS4KKworICAgICAgICAq
IFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmg6IEFkZGVkLgorICAgICAgICAqIFNo
YXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKiBTaGFy
ZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbToKKyAgICAgICAgKFdlYktpdDo6RGF0YURl
dGVjdGlvblJlc3VsdDo6ZW5jb2RlIGNvbnN0KTogUmVtb3ZlZCBjdXN0b20gZW5jb2RpbmcgY29k
ZSBhbmQgdXNlZCBBcmd1bWVudENvZGVyc0NvY29hIGluc3RlYWQuCisgICAgICAgIChXZWJLaXQ6
OkRhdGFEZXRlY3Rpb25SZXN1bHQ6OmRlY29kZSk6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9D
b2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Pjo6ZW5jb2RlKTogRGl0dG8uCisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD46OmRlY29kZSk6IERpdHRvLgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0
Pjo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UGF5bWVudENvbnRhY3Q+OjplbmNvZGUpOiBEaXR0by4KKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD46OmRlY29kZSk6IERpdHRvLgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+OjplbmNv
ZGUpOiBEaXR0by4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50
TWVyY2hhbnRTZXNzaW9uPjo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD46OmVuY29kZSk6IERpdHRvLgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjpkZWNvZGUpOiBEaXR0
by4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdD46OmRlY29kZSk6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6IEFkZGVkIHNvbWUgbmVlZGVk
IG5hbWVzcGFjZXMgZHVlIHRvIHVuaWZpZWQgc291cmNlIHNodWZmbGluZy4KKyAgICAgICAgKiBT
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6IE1vZGVybml6ZWQgc2V2ZXJhbCBkZWNvZGVy
cy4KKyAgICAgICAgKiBTaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9u
Lm1tOgorICAgICAgICAoV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6
ZW5jb2RlIGNvbnN0KTogUmVtb3ZlZCBjdXN0b20gZW5jb2RpbmcgY29kZSBhbmQgdXNlZCBBcmd1
bWVudENvZGVyc0NvY29hIGluc3RlYWQuCisgICAgICAgIChXZWJLaXQ6OkludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uOjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvbWFj
L1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2U+OjplbmNvZGVQbGF0Zm9ybURhdGEpOiBEaXR0by4K
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2U+Ojpk
ZWNvZGVQbGF0Zm9ybURhdGEpOiBEaXR0by4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpDcmVkZW50aWFsPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKTogRGl0dG8uCisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q3JlZGVudGlhbD46OmRlY29kZVBsYXRmb3Jt
RGF0YSk6IERpdHRvLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKTogRGl0dG8uCisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOiBEaXR0by4KKyAgICAgICAgKElQQzo6ZGV2aWNlQ29u
dGV4dEtleSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0
RGF0YS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdERhdGE6OnBsYXRmb3Jt
RW5jb2RlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHRE
YXRhOjpwbGF0Zm9ybURlY29kZSk6IERpdHRvLgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
IEFkZGVkIEFyZ3VtZW50Q29kZXJzQ29jb2EubW0uCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorCiAyMDE4LTExLTI2ICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBsYXllciB0cmVlIGZyZWV6aW5n
IGxvZ2ljIGluIFdlYlBhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
LmgKaW5kZXggODVmNjdiZWRmMmVkN2UwZTQ4MGM0NWNhMWY3YjZlZGU3YWU2OWIxZi4uMzZmYjZm
ZTgyZDhjNDU5ZGY3YWQwNjUzYWZlMGQ1ZjgzZWUxY2I1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTggKzM3LDEzIEBAIHN0cnVjdCBBcHBsZVBheVBh
eW1lbnQ7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFBheW1lbnQgewogcHVibGljOgotICAgIFBh
eW1lbnQoKSA9IGRlZmF1bHQ7Ci0KLSAgICBleHBsaWNpdCBQYXltZW50KFBLUGF5bWVudCAqcGtQ
YXltZW50KQotICAgICAgICA6IG1fcGtQYXltZW50KHBrUGF5bWVudCkKLSAgICB7Ci0gICAgfQot
Ci0gICAgdmlydHVhbCB+UGF5bWVudCgpID0gZGVmYXVsdDsKKyAgICBQYXltZW50KCk7CisgICAg
ZXhwbGljaXQgUGF5bWVudChSZXRhaW5QdHI8UEtQYXltZW50PiYmKTsKKyAgICB2aXJ0dWFsIH5Q
YXltZW50KCk7CiAKICAgICB2aXJ0dWFsIEFwcGxlUGF5UGF5bWVudCB0b0FwcGxlUGF5UGF5bWVu
dCh1bnNpZ25lZCB2ZXJzaW9uKSBjb25zdDsKIAotICAgIFBLUGF5bWVudCAqcGtQYXltZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9wa1BheW1lbnQuZ2V0KCk7IH0KKyAgICBQS1BheW1lbnQgKnBrUGF5
bWVudCgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFJldGFpblB0cjxQS1BheW1lbnQ+IG1fcGtQ
YXltZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50Q29udGFjdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29u
dGFjdC5oCmluZGV4IGQwNDEyZDFkZWRhNjFiN2JmNGM1ZDY5MjdhYjA2ODE5Yjk2MmQzMjEuLjE1
NmZiZjk0YjllMDAxOWEyMzBlMjIzNTc4NGQ3NTcxNDFlYjc0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvbnRhY3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb250YWN0LmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwxNyArMzgs
MTQgQEAgc3RydWN0IEFwcGxlUGF5UGF5bWVudENvbnRhY3Q7CiAKIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFBheW1lbnRDb250YWN0IHsKIHB1YmxpYzoKLSAgICBQYXltZW50Q29udGFjdCgpID0gZGVm
YXVsdDsKLSAgICBleHBsaWNpdCBQYXltZW50Q29udGFjdChQS0NvbnRhY3QgKnBrQ29udGFjdCkK
LSAgICAgICAgOiBtX3BrQ29udGFjdChwa0NvbnRhY3QpCi0gICAgewotICAgIH0KLSAgICB2aXJ0
dWFsIH5QYXltZW50Q29udGFjdCgpID0gZGVmYXVsdDsKKyAgICBQYXltZW50Q29udGFjdCgpOwor
ICAgIGV4cGxpY2l0IFBheW1lbnRDb250YWN0KFJldGFpblB0cjxQS0NvbnRhY3Q+JiYpOworICAg
IHZpcnR1YWwgflBheW1lbnRDb250YWN0KCk7CiAKICAgICBzdGF0aWMgUGF5bWVudENvbnRhY3Qg
ZnJvbUFwcGxlUGF5UGF5bWVudENvbnRhY3QodW5zaWduZWQgdmVyc2lvbiwgY29uc3QgQXBwbGVQ
YXlQYXltZW50Q29udGFjdCYpOwogICAgIHZpcnR1YWwgQXBwbGVQYXlQYXltZW50Q29udGFjdCB0
b0FwcGxlUGF5UGF5bWVudENvbnRhY3QodW5zaWduZWQgdmVyc2lvbikgY29uc3Q7CiAKLSAgICBQ
S0NvbnRhY3QgKnBrQ29udGFjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGtDb250YWN0LmdldCgpOyB9
CisgICAgUEtDb250YWN0ICpwa0NvbnRhY3QoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBSZXRh
aW5QdHI8UEtDb250YWN0PiBtX3BrQ29udGFjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKaW5kZXggN2VkNmIy
MTU3MzA2ZWViZDA3ZTUxMTYxOGM0MzQ0NzljNTU0MzZlNy4uZGFhNzQ5NTQ5ZjUzZjVkYTNkMzY2
ZDVlNjA4MzlhMjg4MDYzYjNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsOCArNDIsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQYXltZW50TWVyY2hhbnRTZXNzaW9uIHsKIHB1YmxpYzoK
ICAgICBQYXltZW50TWVyY2hhbnRTZXNzaW9uKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFBh
eW1lbnRNZXJjaGFudFNlc3Npb24oUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICpwa1BheW1lbnRN
ZXJjaGFudFNlc3Npb24pCi0gICAgICAgIDogbV9wa1BheW1lbnRNZXJjaGFudFNlc3Npb24ocGtQ
YXltZW50TWVyY2hhbnRTZXNzaW9uKQorICAgIGV4cGxpY2l0IFBheW1lbnRNZXJjaGFudFNlc3Np
b24oUmV0YWluUHRyPFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbj4mJiBwa1BheW1lbnRNZXJjaGFu
dFNlc3Npb24pCisgICAgICAgIDogbV9wa1BheW1lbnRNZXJjaGFudFNlc3Npb24geyBXVEZNb3Zl
KHBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbikgfQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kLmgKaW5kZXggOWNlN2JhYTc5
NDNhYmQyZGRmZjEzMWI0NDMwOTdhMmFhMDRiMTIxNS4uNGFmYmEyZjI5ZTBjMzQxY2E4NDQwMzA1
ZGMxMDhjYjQ0NGExODhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50TWV0aG9kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50TWV0aG9kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzcsMTcgKzM3LDEzIEBAIHN0cnVjdCBBcHBsZVBheVBheW1lbnRN
ZXRob2Q7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFBheW1lbnRNZXRob2QgewogcHVibGljOgot
ICAgIFBheW1lbnRNZXRob2QoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB+UGF5bWVudE1ldGhv
ZCgpID0gZGVmYXVsdDsKLQotICAgIGV4cGxpY2l0IFBheW1lbnRNZXRob2QoUEtQYXltZW50TWV0
aG9kICpwa1BheW1lbnRNZXRob2QpCi0gICAgICAgIDogbV9wa1BheW1lbnRNZXRob2QocGtQYXlt
ZW50TWV0aG9kKQotICAgIHsKLSAgICB9CisgICAgUGF5bWVudE1ldGhvZCgpOworICAgIGV4cGxp
Y2l0IFBheW1lbnRNZXRob2QoUmV0YWluUHRyPFBLUGF5bWVudE1ldGhvZD4mJik7CisgICAgdmly
dHVhbCB+UGF5bWVudE1ldGhvZCgpOwogCiAgICAgdmlydHVhbCBBcHBsZVBheVBheW1lbnRNZXRo
b2QgdG9BcHBsZVBheVBheW1lbnRNZXRob2QoKSBjb25zdDsKIAotICAgIFBLUGF5bWVudE1ldGhv
ZCAqcGtQYXltZW50TWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9wa1BheW1lbnRNZXRob2QuZ2V0
KCk7IH0KKyAgICBQS1BheW1lbnRNZXRob2QgKnBrUGF5bWVudE1ldGhvZCgpIGNvbnN0OwogCiBw
cml2YXRlOgogICAgIFJldGFpblB0cjxQS1BheW1lbnRNZXRob2Q+IG1fcGtQYXltZW50TWV0aG9k
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXlt
ZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1l
bnRDb2NvYS5tbQppbmRleCAwYjI5ZDc0N2UyNDA3YzM1OWZkY2IxNGIzYjc4YzVhZDYxZDJkODg2
Li5mMzBhNjYzNTk1OTk3YzI2ZjljYTU4ZWU1ODg5YTg5YTczOGMzYmVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5tbQpA
QCAtNjYsMTIgKzY2LDI2IEBAIHN0YXRpYyBBcHBsZVBheVBheW1lbnQgY29udmVydCh1bnNpZ25l
ZCB2ZXJzaW9uLCBQS1BheW1lbnQgKnBheW1lbnQpCiAKICAgICByZXR1cm4gcmVzdWx0OwogfQor
ICAgIAorUGF5bWVudDo6UGF5bWVudCgpID0gZGVmYXVsdDsKKworUGF5bWVudDo6UGF5bWVudChS
ZXRhaW5QdHI8UEtQYXltZW50PiYmIHBrUGF5bWVudCkKKyAgICA6IG1fcGtQYXltZW50IHsgV1RG
TW92ZShwa1BheW1lbnQpIH0KK3sKK30KKworUGF5bWVudDo6flBheW1lbnQoKSA9IGRlZmF1bHQ7
CiAKIEFwcGxlUGF5UGF5bWVudCBQYXltZW50Ojp0b0FwcGxlUGF5UGF5bWVudCh1bnNpZ25lZCB2
ZXJzaW9uKSBjb25zdAogewogICAgIHJldHVybiBjb252ZXJ0KHZlcnNpb24sIG1fcGtQYXltZW50
LmdldCgpKTsKIH0KIAorUEtQYXltZW50ICpQYXltZW50Ojpwa1BheW1lbnQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3BrUGF5bWVudC5nZXQoKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRhY3RD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENv
bnRhY3RDb2NvYS5tbQppbmRleCBjYzk3ZmQ1ZTFmNjIzNDU5OWViODg0Y2E4MTg3ZmIyY2QwODU3
YzY1Li5lODgyODRjNTdkMDg2Mzc5MmQzM2IxNTc5NTg0YjY1ZWYxMDM2NmEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50
Q29udGFjdENvY29hLm1tCkBAIC0yMDgsNiArMjA4LDE1IEBAIHN0YXRpYyBBcHBsZVBheVBheW1l
bnRDb250YWN0IGNvbnZlcnQodW5zaWduZWQgdmVyc2lvbiwgUEtDb250YWN0ICpjb250YWN0KQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1BheW1lbnRDb250YWN0OjpQYXltZW50Q29udGFjdCgp
ID0gZGVmYXVsdDsKKworUGF5bWVudENvbnRhY3Q6OlBheW1lbnRDb250YWN0KFJldGFpblB0cjxQ
S0NvbnRhY3Q+JiYgcGtDb250YWN0KQorICAgIDogbV9wa0NvbnRhY3QgeyBXVEZNb3ZlKHBrQ29u
dGFjdCkgfQoreworfQorCitQYXltZW50Q29udGFjdDo6flBheW1lbnRDb250YWN0KCkgPSBkZWZh
dWx0OworCiBQYXltZW50Q29udGFjdCBQYXltZW50Q29udGFjdDo6ZnJvbUFwcGxlUGF5UGF5bWVu
dENvbnRhY3QodW5zaWduZWQgdmVyc2lvbiwgY29uc3QgQXBwbGVQYXlQYXltZW50Q29udGFjdCYg
Y29udGFjdCkKIHsKICAgICByZXR1cm4gUGF5bWVudENvbnRhY3QoY29udmVydCh2ZXJzaW9uLCBj
b250YWN0KS5nZXQoKSk7CkBAIC0yMTgsNiArMjI3LDExIEBAIEFwcGxlUGF5UGF5bWVudENvbnRh
Y3QgUGF5bWVudENvbnRhY3Q6OnRvQXBwbGVQYXlQYXltZW50Q29udGFjdCh1bnNpZ25lZCB2ZXJz
aW9uCiAgICAgcmV0dXJuIGNvbnZlcnQodmVyc2lvbiwgbV9wa0NvbnRhY3QuZ2V0KCkpOwogfQog
CitQS0NvbnRhY3QgKlBheW1lbnRDb250YWN0Ojpwa0NvbnRhY3QoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3BrQ29udGFjdC5nZXQoKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kQ29j
b2EubW0KaW5kZXggNmFlNjhjZGY4MzI2YmEwNTYzODAyNjg0MmU5ZWFmMjRhZjBkZGYxOC4uZmQx
YTg1OTM1MmQxNzM2Yzc1ZWFiOTAxZmQyZDBmNDhkMmE1OGI0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kQ29j
b2EubW0KQEAgLTEwMSwxMSArMTAxLDI1IEBAIHN0YXRpYyBBcHBsZVBheVBheW1lbnRNZXRob2Qg
Y29udmVydChQS1BheW1lbnRNZXRob2QgKnBheW1lbnRNZXRob2QpCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAorUGF5bWVudE1ldGhvZDo6UGF5bWVudE1ldGhvZCgpID0gZGVmYXVsdDsKKworUGF5
bWVudE1ldGhvZDo6UGF5bWVudE1ldGhvZChSZXRhaW5QdHI8UEtQYXltZW50TWV0aG9kPiYmIHBr
UGF5bWVudE1ldGhvZCkKKyAgICA6IG1fcGtQYXltZW50TWV0aG9kIHsgV1RGTW92ZShwa1BheW1l
bnRNZXRob2QpIH0KK3sKK30KKworUGF5bWVudE1ldGhvZDo6flBheW1lbnRNZXRob2QoKSA9IGRl
ZmF1bHQ7CisKIEFwcGxlUGF5UGF5bWVudE1ldGhvZCBQYXltZW50TWV0aG9kOjp0b0FwcGxlUGF5
UGF5bWVudE1ldGhvZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbnZlcnQobV9wa1BheW1lbnRN
ZXRob2QuZ2V0KCkpOwogfQogCitQS1BheW1lbnRNZXRob2QgKlBheW1lbnRNZXRob2Q6OnBrUGF5
bWVudE1ldGhvZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGtQYXltZW50TWV0aG9kLmdldCgp
OworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY29jb2EvUGFzc0tpdFNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
UGFzc0tpdFNQSS5oCmluZGV4IDNjYTM5ZmE5NmZmYWM1MDZiZDAwMDM5ODVkNmE4NjMzYTk2ZmJj
ZjguLjE4OTU4ZTkyNjE0YzFlM2I2YTRmMDRhNjhhZDE0MzNhYjE5NzE4MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKQEAgLTMyNywxMCArMzI3
LDE5IEBAIHZvaWQgUEtEcmF3QXBwbGVQYXlCdXR0b24oX05vbm51bGwgQ0dDb250ZXh0UmVmLCBD
R1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsCiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CiAKK0BpbnRlcmZhY2UgUEtDb250YWN0ICgpIDxOU1NlY3VyZUNvZGluZz4KK0BlbmQKKwogQGlu
dGVyZmFjZSBQS1Bhc3NMaWJyYXJ5ICgpCiAtICh2b2lkKW9wZW5QYXltZW50U2V0dXBGb3JNZXJj
aGFudElkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBkb21haW46KE5TU3RyaW5nICop
ZG9tYWluIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uOwogQGVu
ZAogCitAaW50ZXJmYWNlIFBLUGF5bWVudCAoKSA8TlNTZWN1cmVDb2Rpbmc+CitAZW5kCisKK0Bp
bnRlcmZhY2UgUEtQYXltZW50TWV0aG9kICgpIDxOU1NlY3VyZUNvZGluZz4KK0BlbmQKKwogQGlu
dGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0ICgpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25n
KSBOU1N0cmluZyAqc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwogQHByb3BlcnR5
IChub25hdG9taWMsIHN0cm9uZykgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3Vt
ZW50Q29kZXJzQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29k
ZXJzQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzY4MTk3YmU5ZjExZjU1ZjViM2ExOTE1ZGQyODg3ODI3
ZGViOGQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJn
dW1lbnRDb2RlcnNDb2NvYS5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJBcmd1bWVudENvZGVycy5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisKKyNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK3ZvaWQgZW5jb2RlT2JqZWN0KEVu
Y29kZXImLCBpZCA8TlNTZWN1cmVDb2Rpbmc+KTsKK3N0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlk
IDxOU1NlY3VyZUNvZGluZz4+PiBkZWNvZGVPYmplY3QoRGVjb2RlciYsIE5TQXJyYXk8Q2xhc3M+
ICphbGxvd2VkQ2xhc3Nlcyk7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0ZDo6b3B0aW9uYWw8
UmV0YWluUHRyPFQ+PiBkZWNvZGUoRGVjb2RlciYsIENsYXNzIGFsbG93ZWRDbGFzcyk7Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxUPj4gZGVjb2RlKERlY29k
ZXImLCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsYXNzZXMgPSBAWyBbVCBjbGFzc10gXSk7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxUPj4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIENsYXNzIGFsbG93ZWRDbGFzcykKK3sKKyAgICByZXR1cm4gZGVj
b2RlPFQ+KGRlY29kZXIsIEBbIGFsbG93ZWRDbGFzcyBdKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK3N0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPFQ+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgTlNBcnJheTxDbGFzcz4gKmFsbG93ZWRDbGFzc2VzKQoreworICAgIGF1dG8gcmVzdWx0ID0g
ZGVjb2RlT2JqZWN0KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzKTsKKyAgICBpZiAoIXJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghKnJlc3VsdCkKKyAgICAg
ICAgcmV0dXJuIHsgbnVsbHB0ciB9OworCisgICAgaWQgb2JqZWN0ID0gcmVzdWx0LT5sZWFrUmVm
KCk7CisgICAgQVNTRVJUKFtvYmplY3QgaXNLaW5kT2ZDbGFzczphbGxvd2VkQ2xhc3Nlc1swXV0p
OworICAgIHJldHVybiB7IGFkb3B0TlMoKFQgKilvYmplY3QpIH07Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHVzaW5nIENvbmZvcm1zVG9TZWN1cmVDb2RpbmcgPSBzdGQ6OmlzX2NvbnZlcnRp
YmxlPFQgKiwgaWQgPE5TU2VjdXJlQ29kaW5nPj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFQgKj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBULCBz
dGQ6OmVuYWJsZV9pZl90PENvbmZvcm1zVG9TZWN1cmVDb2Rpbmc8VT46OnZhbHVlPiogPSBudWxs
cHRyPgorICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBVICpvYmplY3Qp
CisgICAgeworICAgICAgICBlbmNvZGVPYmplY3QoZW5jb2Rlciwgb2JqZWN0KTsKKyAgICB9Cit9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8
VD4+IHsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSA9IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8Q29u
Zm9ybXNUb1NlY3VyZUNvZGluZzxVPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJldGFpblB0cjxVPiYgb2JqZWN0KQor
ICAgIHsKKyAgICAgICAgQXJndW1lbnRDb2RlcjxVICo+OjplbmNvZGUoZW5jb2Rlciwgb2JqZWN0
LmdldCgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSA9IFQsIHN0ZDo6ZW5h
YmxlX2lmX3Q8Q29uZm9ybXNUb1NlY3VyZUNvZGluZzxVPjo6dmFsdWU+KiA9IG51bGxwdHI+Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPFU+PiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKKyAgICB7CisgICAgICAgIHJldHVybiBJUEM6OmRlY29kZTxVPihkZWNvZGVyKTsKKyAg
ICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKKworI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09B
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnND
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2EyMDQ5YjFmMzlkNzhmZWViYzI2YjQ1MmRjYzljYTQyYmNmYWZiYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29k
ZXJzQ29jb2EubW0KQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiQXJndW1lbnRDb2RlcnNDb2NvYS5oIgorCisjaWYgUExBVEZPUk0oQ09D
T0EpCisKKyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CisKK25hbWVzcGFjZSBJUEMgeworCit2b2lkIGVuY29k
ZU9iamVjdChFbmNvZGVyJiBlbmNvZGVyLCBpZCA8TlNTZWN1cmVDb2Rpbmc+IG9iamVjdCkKK3sK
KyAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyAgICBbYXJjaGl2ZXIgZW5j
b2RlT2JqZWN0Om9iamVjdCBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKKyAg
ICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOworCisgICAgSVBDOjplbmNvZGUoZW5jb2Rlciwg
KF9fYnJpZGdlIENGRGF0YVJlZilbYXJjaGl2ZXIgZW5jb2RlZERhdGFdKTsKK30KKworc3RkOjpv
cHRpb25hbDxSZXRhaW5QdHI8aWQgPE5TU2VjdXJlQ29kaW5nPj4+IGRlY29kZU9iamVjdChEZWNv
ZGVyJiBkZWNvZGVyLCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsYXNzZXMpCit7CisgICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKKyAgICBpZiAoIWRlY29kZShkZWNvZGVyLCBkYXRhKSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gdW5hcmNoaXZlciA9IHNl
Y3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7Cisg
ICAgQHRyeSB7CisgICAgICAgIGlkIHJlc3VsdCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9m
Q2xhc3NlczpbTlNTZXQgc2V0V2l0aEFycmF5OmFsbG93ZWRDbGFzc2VzXSBmb3JLZXk6TlNLZXll
ZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQgfHwgW3Jlc3Vs
dCBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pOworICAgICAg
ICByZXR1cm4geyByZXN1bHQgfTsKKyAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlv
bikgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgb2JqZWN0IG9mIGNsYXNz
ZXMgJUA6ICVAIiwgYWxsb3dlZENsYXNzZXMsIGV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgfSBAZmluYWxseSB7CisgICAgICAgIFt1bmFyY2hpdmVyIGZpbmlz
aERlY29kaW5nXTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIElQQworCisjZW5kaWYgLy8g
UExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9E
YXRhRGV0ZWN0aW9uUmVzdWx0Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURl
dGVjdGlvblJlc3VsdC5tbQppbmRleCBkYWZlZDlmMDViN2NiYTM1MWYxN2NmZDhlZjMwN2EzNTkw
OTFmNjdmLi44ZGU2N2ExNzBiMjVjNWVhY2YzY2FkYzM2NzIyNjE2ZmJhNDJmODY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0KQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkRhdGFEZXRlY3Rp
b25SZXN1bHQuaCIKIAotI2ltcG9ydCAiQXJndW1lbnRDb2RlcnNDRi5oIgorI2ltcG9ydCAiQXJn
dW1lbnRDb2RlcnNDb2NvYS5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU1BJLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgpAQCAtNDEsMjcgKzQxLDE3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIERhdGFEZXRlY3Rpb25SZXN1bHQ6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFy
Y2hpdmVyKCk7Ci0gICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpyZXN1bHRzLmdldCgpIGZvcktl
eTpAImRhdGFEZXRlY3RvclJlc3VsdHMiXTsKLSAgICBJUEM6OmVuY29kZShlbmNvZGVyLCAoX19i
cmlkZ2UgQ0ZEYXRhUmVmKWFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKTsKKyAgICBlbmNvZGVy
IDw8IHJlc3VsdHM7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8RGF0YURldGVjdGlvblJlc3VsdD4gRGF0
YURldGVjdGlvblJlc3VsdDo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwotICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2Rlciwg
ZGF0YSkpCisgICAgYXV0byByZXN1bHRzID0gSVBDOjpkZWNvZGU8TlNBcnJheT4oZGVjb2Rlciwg
QFsgW05TQXJyYXkgY2xhc3NdLCBnZXRERFNjYW5uZXJSZXN1bHRDbGFzcygpIF0pOworICAgIGlm
ICghcmVzdWx0cykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIERhdGFEZXRl
Y3Rpb25SZXN1bHQgcmVzdWx0OwotICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2
ZXJGcm9tRGF0YSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7Ci0gICAgQHRyeSB7Ci0g
ICAgICAgIHJlc3VsdC5yZXN1bHRzID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2Vz
OltOU1NldCBzZXRXaXRoQXJyYXk6QFsgW05TQXJyYXkgY2xhc3NdLCBnZXRERFNjYW5uZXJSZXN1
bHRDbGFzcygpXSBdIGZvcktleTpAImRhdGFEZXRlY3RvclJlc3VsdHMiXTsKLSAgICB9IEBjYXRj
aCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBkZWNvZGUgTlNBcnJheSBvZiBERFNjYW5SZXN1bHQ6ICVAIiwgZXhjZXB0aW9uKTsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0gICAgCi0gICAgW3VuYXJjaGl2ZXIgZmlu
aXNoRGVjb2RpbmddOworICAgIHJlc3VsdC5yZXN1bHRzID0gV1RGTW92ZSgqcmVzdWx0cyk7CiAg
ICAgcmV0dXJuIHsgV1RGTW92ZShyZXN1bHQpIH07CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0K
aW5kZXggMTY0OWQyZWM4MThhZDhjZGI0NDg0ZmM0ZDYzM2M4MTI2Yjg3ODRmMC4uMGRkNWQzYzQx
ODM0NDgzYTJjMmY4ZmZmMzA3NWY3ZTE3NTljNTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCisjaW1wb3J0ICJBcmd1bWVu
dENvZGVyc0NvY29hLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0IDxXZWJD
b3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+CiAjaW1wb3J0IDxwYWwvY29jb2EvUGFz
c0tpdFNvZnRMaW5rLmg+CkBAIC0zOCwzMiArMzksMTYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmIHBheW1lbnQpCiB7Ci0gICAgYXV0
byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7Ci0gICAgW2FyY2hpdmVyIGVuY29kZU9iamVj
dDpwYXltZW50LnBrUGF5bWVudCgpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXld
OwotICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107Ci0KLSAgICBhdXRvIGRhdGEgPSBhcmNo
aXZlci5nZXQoKS5lbmNvZGVkRGF0YTsKLSAgICBlbmNvZGVyIDw8IERhdGFSZWZlcmVuY2Uoc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwor
ICAgIGVuY29kZXIgPDwgcGF5bWVudC5wa1BheW1lbnQoKTsKIH0KIAotYm9vbCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6
UGF5bWVudCYgcGF5bWVudCkKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudD4gQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhUmVmZXJlbmNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBk
YXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25zdF9j
YXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkp
KSBsZW5ndGg6ZGF0YVJlZmVyZW5jZS5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7Ci0gICAgYXV0
byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKGRhdGEuZ2V0KCkpOwotICAg
IEB0cnkgewotICAgICAgICBQS1BheW1lbnQgKnBrUGF5bWVudCA9IFt1bmFyY2hpdmVyIGRlY29k
ZU9iamVjdE9mQ2xhc3M6UEFMOjpnZXRQS1BheW1lbnRDbGFzcygpIGZvcktleTpOU0tleWVkQXJj
aGl2ZVJvb3RPYmplY3RLZXldOwotICAgICAgICBwYXltZW50ID0gUGF5bWVudChwa1BheW1lbnQp
OwotICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIGRlY29kZSBQS1BheW1lbnQ6ICVAIiwgZXhjZXB0aW9uKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBhdXRvIHBheW1lbnQgPSBJUEM6OmRlY29kZTxQ
S1BheW1lbnQ+KGRlY29kZXIsIFBBTDo6Z2V0UEtQYXltZW50Q2xhc3MoKSk7CisgICAgaWYgKCFw
YXltZW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgW3VuYXJjaGl2ZXIg
ZmluaXNoRGVjb2RpbmddOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBQYXltZW50IHsg
V1RGTW92ZSgqcGF5bWVudCkgfTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBh
eW1lbnRBdXRob3JpemF0aW9uUmVzdWx0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0JiByZXN1bHQpCkBAIC04MywzOCAr
NjgsMjIgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3Vs
dD4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW4KICAgICBkZWNvZGVyID4+IGVycm9yczsK
ICAgICBpZiAoIWVycm9ycykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAKKwog
ICAgIHJldHVybiB7eyBXVEZNb3ZlKCpzdGF0dXMpLCBXVEZNb3ZlKCplcnJvcnMpIH19OwogfQog
CiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmIHBheW1lbnRDb250
YWN0KQogewotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwotICAgIFthcmNo
aXZlciBlbmNvZGVPYmplY3Q6cGF5bWVudENvbnRhY3QucGtDb250YWN0KCkgZm9yS2V5Ok5TS2V5
ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0gICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsK
LQotICAgIGF1dG8gZGF0YSA9IGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhOwotICAgIGVuY29k
ZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0
ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgZW5jb2RlciA8PCBwYXltZW50Q29udGFjdC5wa0Nv
bnRhY3QoKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250YWN0
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlBheW1lbnRDb250YWN0JiBwYXlt
ZW50Q29udGFjdCkKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5
OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhUmVmZXJlbmNl
LmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsK
LSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoZGF0YS5nZXQo
KSk7Ci0gICAgQHRyeSB7Ci0gICAgICAgIFBLQ29udGFjdCAqcGtDb250YWN0ID0gW3VuYXJjaGl2
ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldFBLQ29udGFjdENsYXNzKCkgZm9yS2V5Ok5T
S2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0gICAgICAgIHBheW1lbnRDb250YWN0ID0gUGF5
bWVudENvbnRhY3QocGtDb250YWN0KTsKLSAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2Vw
dGlvbikgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgUEtDb250YWN0OiAl
QCIsIGV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgYXV0byBj
b250YWN0ID0gSVBDOjpkZWNvZGU8UEtDb250YWN0PihkZWNvZGVyLCBQQUw6OmdldFBLQ29udGFj
dENsYXNzKCkpOworICAgIGlmICghY29udGFjdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6UGF5bWVudENvbnRhY3QgeyBXVEZNb3ZlKCpjb250YWN0KSB9
OwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEVycm9yPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRFcnJvciYgZXJyb3IpCkBA
IC0xNDYsNjIgKzExNSwzMCBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRFcnJvcj4g
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50RXJyb3I+OjpkZWNvZAogCiB2b2lkIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJiBwYXltZW50
TWVyY2hhbnRTZXNzaW9uKQogewotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigp
OwotICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cGF5bWVudE1lcmNoYW50U2Vzc2lvbi5wa1Bh
eW1lbnRNZXJjaGFudFNlc3Npb24oKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5
XTsKLSAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwotCi0gICAgYXV0byBkYXRhID0gYXJj
aGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGE7Ci0gICAgZW5jb2RlciA8PCBEYXRhUmVmZXJlbmNlKHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsK
KyAgICBlbmNvZGVyIDw8IHBheW1lbnRNZXJjaGFudFNlc3Npb24ucGtQYXltZW50TWVyY2hhbnRT
ZXNzaW9uKCk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hh
bnRTZXNzaW9uPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlBheW1lbnRNZXJj
aGFudFNlc3Npb24mIHBheW1lbnRNZXJjaGFudFNlc3Npb24pCitzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIElQQzo6
RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0
YVJlZmVyZW5jZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gZGF0YSA9IGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3Ro
OmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwotICAgIGF1dG8gdW5hcmNo
aXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsKLSAgICBAdHJ5IHsK
LSAgICAgICAgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICpwa1BheW1lbnRNZXJjaGFudFNlc3Np
b24gPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOlBBTDo6Z2V0UEtQYXltZW50TWVy
Y2hhbnRTZXNzaW9uQ2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsK
LSAgICAgICAgcGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IFBheW1lbnRNZXJjaGFudFNlc3Npb24o
cGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKTsKLSAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4
Y2VwdGlvbikgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgUEtQYXltZW50
TWVyY2hhbnRTZXNzaW9uOiAlQCIsIGV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9CisgICAgYXV0byBwYXltZW50TWVyY2hhbnRTZXNzaW9uID0gSVBDOjpkZWNvZGU8UEtQ
YXltZW50TWVyY2hhbnRTZXNzaW9uPihkZWNvZGVyLCBQQUw6OmdldFBLUGF5bWVudE1lcmNoYW50
U2Vzc2lvbkNsYXNzKCkpOworICAgIGlmICghcGF5bWVudE1lcmNoYW50U2Vzc2lvbikKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5n
XTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50
U2Vzc2lvbiB7IFdURk1vdmUoKnBheW1lbnRNZXJjaGFudFNlc3Npb24pIH07CiB9CiAKIHZvaWQg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kPjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXRob2QmIHBheW1lbnRNZXRob2QpCiB7Ci0g
ICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7Ci0gICAgW2FyY2hpdmVyIGVuY29k
ZU9iamVjdDpwYXltZW50TWV0aG9kLnBrUGF5bWVudE1ldGhvZCgpIGZvcktleTpOU0tleWVkQXJj
aGl2ZVJvb3RPYmplY3RLZXldOwotICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107Ci0KLSAg
ICBhdXRvIGRhdGEgPSBhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YTsKLSAgICBlbmNvZGVyIDw8
IERhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSks
IFtkYXRhIGxlbmd0aF0pOworICAgIGVuY29kZXIgPDwgcGF5bWVudE1ldGhvZC5wa1BheW1lbnRN
ZXRob2QoKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYgcGF5bWVu
dE1ldGhvZCkKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD4gQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShkYXRhUmVmZXJlbmNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0
byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25z
dF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oZGF0YVJlZmVyZW5jZS5kYXRh
KCkpKSBsZW5ndGg6ZGF0YVJlZmVyZW5jZS5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7Ci0gICAg
YXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKGRhdGEuZ2V0KCkpOwot
ICAgIEB0cnkgewotICAgICAgICBQS1BheW1lbnRNZXRob2QgKnBrUGF5bWVudE1ldGhvZCA9IFt1
bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6UEFMOjpnZXRQS1BheW1lbnRNZXRob2RDbGFz
cygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwotICAgICAgICBwYXltZW50
TWV0aG9kID0gUGF5bWVudE1ldGhvZChwa1BheW1lbnRNZXRob2QpOwotICAgIH0gQGNhdGNoIChO
U0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRl
Y29kZSBQS1BheW1lbnQ6ICVAIiwgZXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KKyAgICBhdXRvIHBheW1lbnRNZXRob2QgPSBJUEM6OmRlY29kZTxQS1BheW1lbnRNZXRo
b2Q+KGRlY29kZXIsIFBBTDo6Z2V0UEtQYXltZW50TWV0aG9kQ2xhc3MoKSk7CisgICAgaWYgKCFw
YXltZW50TWV0aG9kKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgW3VuYXJj
aGl2ZXIgZmluaXNoRGVjb2RpbmddOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBQYXlt
ZW50TWV0aG9kIHsgV1RGTW92ZSgqcGF5bWVudE1ldGhvZCkgfTsKIH0KIAogdm9pZCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2RVcGRhdGU+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZSYgdXBkYXRlKQpAQCAtMjU0
LDIwICsxOTEsMjIgQEAgYm9vbCBBcmd1bWVudENvZGVyPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEFwcGwKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHJlcXVlc3Quc2V0UmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkcyhyZXF1aXJl
ZEJpbGxpbmdDb250YWN0RmllbGRzKTsKIAotICAgIFBheW1lbnRDb250YWN0IGJpbGxpbmdDb250
YWN0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYmlsbGluZ0NvbnRhY3QpKQorICAgIHN0ZDo6
b3B0aW9uYWw8UGF5bWVudENvbnRhY3Q+IGJpbGxpbmdDb250YWN0OworICAgIGRlY29kZXIgPj4g
YmlsbGluZ0NvbnRhY3Q7CisgICAgaWYgKCFiaWxsaW5nQ29udGFjdCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHJlcXVlc3Quc2V0QmlsbGluZ0NvbnRhY3QoYmlsbGluZ0NvbnRhY3QpOwor
ICAgIHJlcXVlc3Quc2V0QmlsbGluZ0NvbnRhY3QoKmJpbGxpbmdDb250YWN0KTsKIAogICAgIEFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpDb250YWN0RmllbGRzIHJlcXVpcmVkU2hpcHBp
bmdDb250YWN0RmllbGRzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKHJlcXVpcmVkU2hpcHBp
bmdDb250YWN0RmllbGRzKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXF1ZXN0LnNl
dFJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzKHJlcXVpcmVkU2hpcHBpbmdDb250YWN0Rmll
bGRzKTsKIAotICAgIFBheW1lbnRDb250YWN0IHNoaXBwaW5nQ29udGFjdDsKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHNoaXBwaW5nQ29udGFjdCkpCisgICAgc3RkOjpvcHRpb25hbDxQYXltZW50
Q29udGFjdD4gc2hpcHBpbmdDb250YWN0OworICAgIGRlY29kZXIgPj4gc2hpcHBpbmdDb250YWN0
OworICAgIGlmICghc2hpcHBpbmdDb250YWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmVxdWVzdC5zZXRTaGlwcGluZ0NvbnRhY3Qoc2hpcHBpbmdDb250YWN0KTsKKyAgICByZXF1ZXN0
LnNldFNoaXBwaW5nQ29udGFjdCgqc2hpcHBpbmdDb250YWN0KTsKIAogICAgIEFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudENhcGFiaWxpdGllcyBtZXJjaGFudENhcGFiaWxp
dGllczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lcmNoYW50Q2FwYWJpbGl0aWVzKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCAxYzExZmY4ODU3NzRhZDQyNDQw
N2E2MGIxZTc5Y2EwNWNlY2M2ZWZhLi4yMjhmYjU4YzJmNTljMWQ0NzAxY2U3NTU3MmJhYmZlZjM3
ODRmNTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC05MjAsMTMg
KzkyMCwxMyBAQCBDU3RyaW5nIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlv
bigpIGNvbnN0CiAgICAgICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHRzKTsK
ICAgICAgICAgICAgIHRzIDw8IGNyZWF0ZWRMYXllci50eXBlIDw8IiAiIDw8IGNyZWF0ZWRMYXll
ci5sYXllcklEOwogICAgICAgICAgICAgc3dpdGNoIChjcmVhdGVkTGF5ZXIudHlwZSkgewotICAg
ICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6Cisg
ICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5
ZXJMYXllcjoKICAgICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRl
ZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlk
ZWRMYXllcjoKKyAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29u
dGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVDdXN0b206CisgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlQ3VzdG9tOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8
PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgpAQCAtOTM4LDcgKzkzOCw3IEBAIENTdHJpbmcg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlc2NyaXB0aW9uKCkgY29uc3QKICAgICBkdW1w
Q2hhbmdlZExheWVycyh0cywgbV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzKTsKIAogICAgIGlmICgh
bV9kZXN0cm95ZWRMYXllcklEcy5pc0VtcHR5KCkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eTxW
ZWN0b3I8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPj4oImRlc3Ryb3llZC1sYXllcnMi
LCBtX2Rlc3Ryb3llZExheWVySURzKTsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5PFZlY3RvcjxX
ZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+PigiZGVzdHJveWVkLWxheWVy
cyIsIG1fZGVzdHJveWVkTGF5ZXJJRHMpOwogCiAgICAgaWYgKG1fZWRpdG9yU3RhdGUpIHsKICAg
ICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBzY29wZSh0cyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDBkZmI2ZThmMTlkNDIwZTk4N2Nj
NDg4MDQ5NjcxNGZkODEwZmU5OGUuLjA5MDliNGQxOWNhMDg5NWM1NDMwNWY1ZjU0Y2RhMGMwNDkz
YTg4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CkBAIC02MDEsNyArNjAxLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShE
ZWNvZGVyJiwgV2ViQ29yZTo6UGF5bWVudCYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlBheW1lbnQ+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiB7CkBA
IC02MTEsNyArNjExLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250YWN0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50Q29udGFjdCYpOwotICAgIHN0YXRp
YyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50Q29udGFjdD4gZGVjb2RlKERlY29k
ZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5
bWVudEVycm9yPiB7CkBAIC02MjEsMTIgKzYyMSwxMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRFcnJvcj4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+IHsKICAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNl
c3Npb24mKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlBheW1l
bnRNZXJjaGFudFNlc3Npb24mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQ
YXltZW50TWVyY2hhbnRTZXNzaW9uPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kPiB7CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJik7
Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpQYXltZW50TWV0aG9k
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD4gZGVj
b2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZT4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCmluZGV4
IGYxZTBjM2E2MzU2ZjAzYjI2ODA5YzYzNzJlODhmZjQ1NWFjMTU5OTcuLmQwYWE4NTE5NmNkNzVl
ZDk4ZmRiOTcxNGFkNGU2M2Y2MDZiZjA5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uLmgiCiAKLSNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIK
KyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ29jb2EuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNQSS5o
PgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KQEAgLTc2LDEw
ICs3Niw3IEBAIHZvaWQgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBpc0RhdGFEZXRlY3Rv
ckxpbms7CiAgICAgaWYgKGlzRGF0YURldGVjdG9yTGluaykgewogICAgICAgICBlbmNvZGVyIDw8
IGRhdGFEZXRlY3RvcklkZW50aWZpZXI7Ci0gICAgICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVB
cmNoaXZlcigpOwotICAgICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OmRhdGFEZXRlY3RvclJl
c3VsdHMuZ2V0KCkgZm9yS2V5OkAiZGF0YURldGVjdG9yUmVzdWx0cyJdOwotCi0gICAgICAgIElQ
Qzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihhcmNoaXZlci5n
ZXQoKS5lbmNvZGVkRGF0YSkpOworICAgICAgICBlbmNvZGVyIDw8IGRhdGFEZXRlY3RvclJlc3Vs
dHM7CiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCkBAIC0xNzMs
MTkgKzE3MCwxMiBAQCBib29sIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBJbnRlcmFjdGlvbgogICAgIGlmIChyZXN1bHQuaXNE
YXRhRGV0ZWN0b3JMaW5rKSB7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRh
dGFEZXRlY3RvcklkZW50aWZpZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwotICAgICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRl
Y29kZXIsIGRhdGEpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICAg
ICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKChOU0RhdGEgKilk
YXRhLmdldCgpKTsKLSAgICAgICAgQHRyeSB7Ci0gICAgICAgICAgICByZXN1bHQuZGF0YURldGVj
dG9yUmVzdWx0cyA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0
V2l0aEFycmF5OkBbIFtOU0FycmF5IGNsYXNzXSwgZ2V0RERTY2FubmVyUmVzdWx0Q2xhc3MoKV0g
XSBmb3JLZXk6QCJkYXRhRGV0ZWN0b3JSZXN1bHRzIl07Ci0gICAgICAgIH0gQGNhdGNoIChOU0V4
Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBk
ZWNvZGUgTlNBcnJheSBvZiBERFNjYW5SZXN1bHQ6ICVAIiwgZXhjZXB0aW9uKTsKKworICAgICAg
ICBhdXRvIGRhdGFEZXRlY3RvclJlc3VsdHMgPSBJUEM6OmRlY29kZTxOU0FycmF5PihkZWNvZGVy
LCBAWyBbTlNBcnJheSBjbGFzc10sIGdldEREU2Nhbm5lclJlc3VsdENsYXNzKCkgXSk7CisgICAg
ICAgIGlmICghZGF0YURldGVjdG9yUmVzdWx0cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2Rpbmdd
OworCisgICAgICAgIHJlc3VsdC5kYXRhRGV0ZWN0b3JSZXN1bHRzID0gV1RGTW92ZSgqZGF0YURl
dGVjdG9yUmVzdWx0cyk7CiAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCmluZGV4IDhlMzY5NjUyMzA1
NzY4NjhkNDk1ZGRiOTZiODYwMDY5NzJhZTRjNjYuLjVmZGE3YmY2NmM5YzIyNGMyMjk1NzM4ZTg0
OGUxZGViZmJjY2U0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJD
b3JlQXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dl
YkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQpAQCAtMjgsNiArMjgsNyBAQAogI2ltcG9ydCAiV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgiCiAKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKyNp
bXBvcnQgIkFyZ3VtZW50Q29kZXJzQ29jb2EuaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Nv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oPgpAQCAtNDMxLDI2ICs0MzIsMTYgQEAgYm9vbCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEo
RGVjb2RlciYgZGVjb2RlciwKIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlByb3RlY3Rp
b25TcGFjZT46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJD
b3JlOjpQcm90ZWN0aW9uU3BhY2UmIHNwYWNlKQogewotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1
cmVBcmNoaXZlcigpOwotICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6c3BhY2UubnNTcGFjZSgp
IGZvcktleTpAInByb3RlY3Rpb25TcGFjZSJdOwotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIChf
X2JyaWRnZSBDRkRhdGFSZWYpYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGEpOworICAgIGVuY29k
ZXIgPDwgc3BhY2UubnNTcGFjZSgpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UHJvdGVjdGlvblNwYWNlPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFdl
YkNvcmU6OlByb3RlY3Rpb25TcGFjZSYgc3BhY2UpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gZGF0YTsKLSAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQorICAgIGF1dG8g
cGxhdGZvcm1EYXRhID0gSVBDOjpkZWNvZGU8TlNVUkxQcm90ZWN0aW9uU3BhY2U+KGRlY29kZXIp
OworICAgIGlmICghcGxhdGZvcm1EYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBh
dXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoKF9fYnJpZGdlIE5TRGF0
YSAqKWRhdGEuZ2V0KCkpOwotICAgIEB0cnkgewotICAgICAgICBpZiAoUmV0YWluUHRyPE5TVVJM
UHJvdGVjdGlvblNwYWNlPiBuc1NwYWNlID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFz
czpbTlNVUkxQcm90ZWN0aW9uU3BhY2UgY2xhc3NdIGZvcktleTpAInByb3RlY3Rpb25TcGFjZSJd
KQotICAgICAgICAgICAgc3BhY2UgPSBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UobnNTcGFjZS5n
ZXQoKSk7Ci0gICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIE5TVVJMUHJvdGVjdGlvblNwYWNlOiAlQCIsIGV4
Y2VwdGlvbik7Ci0gICAgfQotCi0gICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAg
IHNwYWNlID0gV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlIHsgcGxhdGZvcm1EYXRhLT5nZXQoKSB9
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00NzQsMTAgKzQ2NSw3IEBAIHZvaWQgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpDcmVkZW50aWFsPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXIm
IGVuY29kZXIsIGNvCiAgICAgfQogCiAgICAgZW5jb2RlciA8PCBmYWxzZTsKLQotICAgIGF1dG8g
YXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOwotICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6
bnNDcmVkZW50aWFsIGZvcktleTpAImNyZWRlbnRpYWwiXTsKLSAgICBJUEM6OmVuY29kZShlbmNv
ZGVyLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKWFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKTsKKyAg
ICBlbmNvZGVyIDw8IG5zQ3JlZGVudGlhbDsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkNyZWRlbnRpYWw+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2Vi
Q29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKQEAgLTUwOSwxOSArNDk3LDExIEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDcmVkZW50aWFsPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERl
Y29kZXImIGRlY29kZXIsIFdlCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7Ci0gICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBk
YXRhKSkKKyAgICBhdXRvIG5zQ3JlZGVudGlhbCA9IElQQzo6ZGVjb2RlPE5TVVJMQ3JlZGVudGlh
bD4oZGVjb2Rlcik7CisgICAgaWYgKCFuc0NyZWRlbnRpYWwpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoX19i
cmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7Ci0gICAgQHRyeSB7Ci0gICAgICAgIGlmIChSZXRh
aW5QdHI8TlNVUkxDcmVkZW50aWFsPiBuc0NyZWRlbnRpYWwgPSBbdW5hcmNoaXZlciBkZWNvZGVP
YmplY3RPZkNsYXNzOltOU1VSTENyZWRlbnRpYWwgY2xhc3NdIGZvcktleTpAImNyZWRlbnRpYWwi
XSkKLSAgICAgICAgICAgIGNyZWRlbnRpYWwgPSBXZWJDb3JlOjpDcmVkZW50aWFsKG5zQ3JlZGVu
dGlhbC5nZXQoKSk7Ci0gICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIE5TVVJMQ3JlZGVudGlhbDogJUAiLCBl
eGNlcHRpb24pOwotICAgIH0KLQotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAg
ICBjcmVkZW50aWFsID0gV2ViQ29yZTo6Q3JlZGVudGlhbCB7IG5zQ3JlZGVudGlhbC0+Z2V0KCkg
fTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTk4LDIwICs1NzgsMTAgQEAgYm9vbCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcj46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGUKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAK
LXN0YXRpYyBOU1N0cmluZyAqZGV2aWNlQ29udGV4dEtleSgpCi17Ci0gICAgc3RhdGljIE5TU3Ry
aW5nICogY29uc3Qga2V5ID0gQCJkZXZpY2VDb250ZXh0IjsKLSAgICByZXR1cm4ga2V5OwotfQot
CiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+
OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkKIHsKLSAgICBhdXRvIGFyY2hpdmVyID0g
c2VjdXJlQXJjaGl2ZXIoKTsKLQogICAgIGlmIChbZ2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBj
b25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCi0gICAgICAgIFth
cmNoaXZlciBlbmNvZGVPYmplY3Q6dGFyZ2V0LmF2T3V0cHV0Q29udGV4dCgpIGZvcktleTpkZXZp
Y2VDb250ZXh0S2V5KCldOwotCi0gICAgSVBDOjplbmNvZGUoZW5jb2RlciwgKF9fYnJpZGdlIENG
RGF0YVJlZilhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CisgICAgICAgIGVuY29kZXIgPDwg
dGFyZ2V0LmF2T3V0cHV0Q29udGV4dCgpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2Rl
ciYgZGVjb2RlciwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkK
QEAgLTYxOSwyMyArNTg5LDExIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvCiAgICAgaWYgKCFb
Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5T
U2VjdXJlQ29kaW5nKV0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IGRhdGE7Ci0gICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRhKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNo
aXZlckZyb21EYXRhKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKLQotICAgIEFWT3V0
cHV0Q29udGV4dCAqY29udGV4dCA9IG5pbDsKLSAgICBAdHJ5IHsKLSAgICAgICAgY29udGV4dCA9
IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3Mo
KSBmb3JLZXk6ZGV2aWNlQ29udGV4dEtleSgpXTsKLSAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24g
KmV4Y2VwdGlvbikgewotICAgICAgICBMT0dfRVJST1IoIlRoZSB0YXJnZXQgcGlja2VyIGJlaW5n
IGRlY29kZWQgaXMgbm90IGFuIEFWT3V0cHV0Q29udGV4dC4iKTsKKyAgICBhdXRvIGNvbnRleHQg
PSBJUEM6OmRlY29kZTxBVk91dHB1dENvbnRleHQ+KGRlY29kZXIsIGdldEFWT3V0cHV0Q29udGV4
dENsYXNzKCkpOworICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KIAotICAgIHRhcmdldCA9IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KGNv
bnRleHQpOwotICAgIAotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICB0YXJn
ZXQgPSBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB7IGNvbnRleHQtPmdldCgp
IH07CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5tbQppbmRleCA1ODhjNWU1MThhMjQ5N2YzNThmNGI4MmNi
YWFjOTQxOGQ5YWQxMGMwLi41ODgxMzQzZThiNTAwNDE2ZjUyZDVkZmM3NDI3Y2U0MTg2ZDU0OWQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERh
dGEubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkhpdFRlc3RSZXN1bHREYXRh
Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDUsMTAgKzQ1LDcgQEAgdm9pZCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6cGxhdGZv
cm1FbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGlmICghaGFzQWN0aW9u
Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFy
Y2hpdmVyKCk7Ci0gICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpkZXRlY3RlZERhdGFBY3Rpb25D
b250ZXh0LmdldCgpIGZvcktleTpAImFjdGlvbkNvbnRleHQiXTsKLQotICAgIElQQzo6ZW5jb2Rl
KGVuY29kZXIsIChfX2JyaWRnZSBDRkRhdGFSZWYpYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGEp
OworICAgIGVuY29kZXIgPDwgZGV0ZWN0ZWREYXRhQWN0aW9uQ29udGV4dDsKIAogICAgIGVuY29k
ZXIgPDwgZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3g7CiAgICAgZW5jb2RlciA8PCBkZXRlY3RlZERh
dGFPcmlnaW5hdGluZ1BhZ2VPdmVybGF5OwpAQCAtNjksMTkgKzY2LDExIEBAIGJvb2wgV2ViSGl0
VGVzdFJlc3VsdERhdGE6OnBsYXRmb3JtRGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2Vi
SGl0VGVzdFJlc3VsCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIEFTU0VSVChEYXRhRGV0ZWN0
b3JzTGlicmFyeSgpKTsKIAotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7Ci0gICAgaWYg
KCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRhKSkKKyAgICBhdXRvIGRldGVjdGVkRGF0YUFjdGlv
bkNvbnRleHQgPSBJUEM6OmRlY29kZTxEREFjdGlvbkNvbnRleHQ+KGRlY29kZXIsIGdldEREQWN0
aW9uQ29udGV4dENsYXNzKCkpOworICAgIGlmICghZGV0ZWN0ZWREYXRhQWN0aW9uQ29udGV4dCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5h
cmNoaXZlckZyb21EYXRhKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKLSAgICBAdHJ5
IHsKLSAgICAgICAgaGl0VGVzdFJlc3VsdERhdGEuZGV0ZWN0ZWREYXRhQWN0aW9uQ29udGV4dCA9
IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6Z2V0RERBY3Rpb25Db250ZXh0Q2xhc3Mo
KSBmb3JLZXk6QCJhY3Rpb25Db250ZXh0Il07Ci0gICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpl
eGNlcHRpb24pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIEREQWN0aW9u
Q29udGV4dDogJUAiLCBleGNlcHRpb24pOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIAotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICBoaXRUZXN0UmVzdWx0
RGF0YS5kZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0ID0gV1RGTW92ZSgqZGV0ZWN0ZWREYXRhQWN0
aW9uQ29udGV4dCk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRh
LmRldGVjdGVkRGF0YUJvdW5kaW5nQm94KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IDZhYzhmZWMxNmNlOTJlYmZhNzE2ZGUzMmJhMDQ1NzlhZmQyMzc1
N2YuLjg2NDNkYWU2YmU0MzZiOGVmY2Y3OWMxMDE1MDhmMjU2NWI0MmEzMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKQEAgLTEyMiw2ICsxMjIsNyBAQCBTaGFyZWQvQXV0aGVudGljYXRpb24vY29j
b2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0KIAogU2hhcmVkL0NvY29hL0FQSURhdGFD
b2NvYS5tbQogU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorU2hhcmVkL0NvY29hL0FyZ3VtZW50
Q29kZXJzQ29jb2EubW0KIFNoYXJlZC9Db2NvYS9DaGlsZFByb2Nlc3NDb2NvYS5tbQogU2hhcmVk
L0NvY29hL0NvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIubW0KIFNoYXJlZC9Db2NvYS9EYXRh
RGV0ZWN0aW9uUmVzdWx0Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAyODE5MDY5M2QzYTNmZWZmZWIwZWVjYjY1YjZmMzRhMmI4OTQ5
NGIzLi42MWQ5NDgxZjUzMmNlNzk0M2NjOWU2NzQ2MGIyYmI4MDIyYzM3NmY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNjUsNiAr
MTI2NSw3IEBACiAJCUExM0IzREEyMjA3RjM5REUwMDkwQzU4RCAvKiBNb2JpbGVXaUZpU1BJLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTNCM0RBMTIw
N0YzOURFMDA5MEM1OEQgLyogTW9iaWxlV2lGaVNQSS5oICovOyB9OwogCQlBMTNEQzY4MjIwN0FB
NkIyMDA2NkVGNzIgLyogV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTNEQzY4MDIwN0FBNkIyMDA2
NkVGNzIgLyogV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmggKi87IH07CiAJCUExNUVF
REU2MUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1RUVERTQxRTMwMUNFRTAwMDA2OUIwIC8q
IFdLUGFzc3dvcmRWaWV3LmggKi87IH07CisJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBB
cmd1bWVudENvZGVyc0NvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTc1QzQ0OTIxQUEzMTcwMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2Nv
YS5oICovOyB9OwogCQlBMTgyRDVCNTFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlP
Uy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4MkQ1
QjMxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2liaWxpdHlJT1MuaCAqLzsgfTsKIAkJQTE5REQz
QzAxRDA3RDE2ODAwQUM4MjNCIC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlckludGVybmFsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTlERDNCRjFE
MDdEMTY4MDBBQzgyM0IgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaCAqLzsg
fTsKIAkJQTFBNEZFNUExOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUE0RkU1NzE4RENFOUZBMDBC
NUVBOEEgLyogX1dLRG93bmxvYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMzgxOSw2ICszODIwLDggQEAKIAkJQTEzREM2ODEyMDdBQTZCMjAw
NjZFRjcyIC8qIFdLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFdLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbTsgcGF0aCA9IGlvcy9X
S0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExNUVFREUzMUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLUGFzc3dvcmRWaWV3Lm1tOyBw
YXRoID0gaW9zL1dLUGFzc3dvcmRWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTVFRURFNDFFMzAxQ0VFMDAwMDY5QjAgLyogV0tQYXNzd29yZFZpZXcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tQYXNzd29yZFZpZXcuaDsgcGF0aCA9IGlvcy9XS1Bh
c3N3b3JkVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc1QzQ0OTIxQUEz
MTcwMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBcmd1bWVudENvZGVyc0NvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUExNzVDNDRCMjFBQTMzMUIwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29h
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXJndW1lbnRDb2RlcnNDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE4MkQ1QjIxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vz
c2liaWxpdHlJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBB
Y2Nlc3NpYmlsaXR5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTgyRDVC
MzFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5SU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExOUREM0JGMUQwN0QxNjgwMEFDODIzQiAvKiBfV0tXZWJWaWV3UHJpbnRGb3Jt
YXR0ZXJJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJW
aWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNjE3MCw2ICs2MTczLDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFBMUVGMTk3MUExRDVC
NDIwMDIzMjAwQSAvKiBBUElEYXRhQ29jb2EubW0gKi8sCiAJCQkJMzc4RTFBM0IxODFFRDZGRjAw
MzEwMDdBIC8qIEFQSU9iamVjdC5tbSAqLywKKwkJCQlBMTc1QzQ0OTIxQUEzMTcwMDAwMDM3RDAg
LyogQXJndW1lbnRDb2RlcnNDb2NvYS5oICovLAorCQkJCUExNzVDNDRCMjFBQTMzMUIwMDAwMzdE
MCAvKiBBcmd1bWVudENvZGVyc0NvY29hLm1tICovLAogCQkJCTFBNjk4RjE3MUU0OTEwMjIwMDY0
RTg4MSAvKiBDaGlsZFByb2Nlc3NDb2NvYS5tbSAqLywKIAkJCQkzN0JFQzRERjE5NDkxNDg2MDA4
QjQyODYgLyogQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oICovLAogCQkJCTM3QkVDNERF
MTk0OTE0ODYwMDhCNDI4NiAvKiBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLm1tICovLApA
QCAtODg3NSw3ICs4ODgwLDYgQEAKIAkJCQk3QThBOUQ1QTFFRjEzMDI5MDA5ODAxQUUgLyogQVBJ
SW5qZWN0ZWRCdW5kbGVCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBOEE5RDU4
MUVGMTE5QjAwMDk4MDFBRSAvKiBBUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzc3NTEyMzExREYwREVFMjAwOEEzNTFDIC8qIEFQSUluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNEU1N0Y2QjIxQTgzQjEyMDAzNDVGM0Mg
LyogUmVtb3RlTGF5ZXJUcmVlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc2OTA3OUUxOEYz
NDBBMjAwMURGRjA0IC8qIEFQSUluamVjdGVkQnVuZGxlRm9ybUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0EzQUNFMUIxRUVFRjc5QjAwQTg2NEE0IC8qIEFQSUluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E4QTlENUMxRUYxNDU5ODAwOTgw
MUFFIC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC04OTE2LDYgKzg5MjAsNyBAQAogCQkJCTFBRUZEMjc5MTFEMTZDODEwMDgyMTlE
MyAvKiBBcmd1bWVudENvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUVGRDJGNzExRDE4MDdC
MDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUYwQzRB
MTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVudENvZGVyc0NGLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBMTc1QzQ0QTIxQUEzMTcxMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTE3OUZEOUMxMzREMzgwNjAwMTVCODgzIC8qIEFyZ3VtZW50Q29kZXJz
TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTFBMEJEMjFBNDhFNkM2MDA1NEVGNzQgLyogQXNz
ZXJ0aW9uU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1OUM0QTU5MThCODExNzQw
MDdCRENCNiAvKiBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC05
MjE3LDYgKzkyMjIsNyBAQAogCQkJCTFBQjE2QUUyMTY0ODY1NkQwMDI5MEQ2MiAvKiBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkYyNEEyRTE4
NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUEzRDc1QzE2NTFCNDRGMDA4NzEzRDAgLyogUmVtb3Rl
TGF5ZXJUcmVlSG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTRFNTdGNkIyMUE4M0IxMjAwMzQ1
RjNDIC8qIFJlbW90ZUxheWVyVHJlZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEREUwQUZB
MTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRjI2NEEwMUExRkY5Q0MwMDFGRTc1OSAvKiBSZW1vdGVMYXllclRy
ZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjFBQzZD
MTY1MTc1OUUwMEMxN0Q3RiAvKiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355664</attachid>
            <date>2018-11-26 12:06:24 -0800</date>
            <delta_ts>2018-11-26 13:13:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191948-20181126120624.patch</filename>
            <type>text/plain</type>
            <size>52961</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWY4MTliOGVlZWM5MzYx
ZDY1MTY0NDIzNmE3Njg5ZDMzZDViNTI1MS4uYjFmMDFmOGU1MjFiODM3MTRiZmYyZGM3ZDczNDdl
MDkzMjQ5N2M2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4LTExLTI2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIE1ha2UgaXQgZWFz
aWVyIHRvIGVuY29kZSBOU09iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MTk0OAorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nv
bi4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudC5oOiBDaGFuZ2VkIHRoZSBQ
S1BheW1lbnQgKiBjb25zdHJ1Y3RvciB0byB0YWtlIGEKKyAgICAgICAgUmV0YWluUHRyPFBLUGF5
bWVudD4mJiBpbnN0ZWFkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvbnRh
Y3QuaDogRGl0dG8gZm9yIFBLQ29udGFjdC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnRNZXJjaGFudFNlc3Npb24uaDogRGl0dG8gZm9yIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lv
bi4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXRob2QuaDogRGl0dG8gZm9y
IFBLUGF5bWVudE1ldGhvZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1l
bnRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnQ6OlBheW1lbnQpOiBNb3ZlZCBk
ZWZpbml0aW9uIG91dC1vZi1saW5lLgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudDo6cGtQYXlt
ZW50IGNvbnN0KTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXlt
ZW50Q29udGFjdENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvbnRhY3Q6OlBh
eW1lbnRDb250YWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQYXltZW50Q29udGFjdDo6
cGtDb250YWN0IGNvbnN0KTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9jb2Nv
YS9QYXltZW50TWV0aG9kQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50TWV0aG9k
OjpQYXltZW50TWV0aG9kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQYXltZW50TWV0aG9k
Ojpwa1BheW1lbnRNZXRob2QgY29uc3QpOiBEaXR0by4KKwogMjAxOC0xMS0yNSAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gVXNlIGZsb2F0IGJv
eCdzIG1hcmdpbiBib3ggdG8gYWRqdXN0IHRoZSBsaW5lIGNvbnN0cmFpbnRzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKaW5kZXggODQ5NGYyNzQ2MDVkZTA2MjA2NjgxZGU3N2EyZjM5YjVjNjNhZmNkNi4uMGVl
ODNiY2VmZjBkOTc0ZjYwZjg3NjJlOWE0MDRjM2JmZDMzZWMxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMTEtMjYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgorCisgICAgICAgIFtDb2NvYV0gTWFrZSBpdCBlYXNpZXIgdG8gZW5jb2RlIE5TT2JqZWN0
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxOTQ4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgICogcGFsL3Nw
aS9jb2NvYS9QYXNzS2l0U1BJLmg6IERlY2xhcmVkIHNvbWUgY2xhc3NlcyB0aGF0IHNlY3JldGx5
IGNvbmZvcm0gdG8gTlNTZWN1cmVDb2RpbmcuCisKIDIwMTgtMTEtMjQgIEFuZHkgRXN0ZXMgIDxh
ZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gU09GVF9MSU5LX0NMQVNTX0ZPUl97
SEVBREVSLFNPVVJDRX0gc2hvdWxkIGdlbmVyYXRlIGEgbW9yZSBjb25jaXNlIGdldHRlciBmdW5j
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCAwNzE0NDhkN2MyZWQ5ZDZlYjA3ZWVhNzgzZWQ5MGE4MTkyMzcxYmFh
Li5kNTdhZTBjOGNjYzJjODYxMTgwYzc3YTYwZmUxMTMyM2QxNmMwOTkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU5IEBACisyMDE4LTExLTI2ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4K
KworICAgICAgICBbQ29jb2FdIE1ha2UgaXQgZWFzaWVyIHRvIGVuY29kZSBOU09iamVjdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTk0OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBJdCBzaG91bGQgYmUg
ZWFzaWVyIHRvIGVuY29kZSBvYmplY3RzIHRoYXQgY29uZm9ybSB0byBOU1NlY3VyZUNvZGluZyBm
b3IgV2ViS2l0IElQQy4gUmlnaHQKKyAgICAgICAgbm93LCBzZXZlcmFsIGFyZ3VtZW50IGNvZGVy
cyBkdXBsaWNhdGUgdGhlIGxvZ2ljIGZvciBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2JqZWN0cyB1
c2luZworICAgICAgICBOU0tleWVkQXJjaGl2ZXIgYW5kIE5TS2V5ZWRVbmFyY2hpdmVyLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBlbmNvZGVPYmplY3QoKSBhbmQgZGVjb2RlT2JqZWN0KCkg
cHJpbWl0aXZlcyBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHVzaW5nCisgICAgICAgIEZvdW5k
YXRpb24ga2V5ZWQgYXJjaGl2aW5nLiBJdCB0aGVuIHBhcnRpYWxseSBzcGVjaWFsaXplcyBBcmd1
bWVudENvZGVyIGZvciByYXcgcG9pbnRlcnMgYW5kCisgICAgICAgIFJldGFpblB0cnMgd2hvc2Ug
cG9pbnRlZSBjb25mb3JtcyB0byBOU1NlY3VyZUNvZGluZyB0byBjYWxsIHRoZXNlIG5ldyBwcmlt
aXRpdmVzLgorCisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRvIHVzZSBFbmNvZGVyOjpvcGVyYXRv
cjw8IHRvIGVuY29kZSByYXcgcG9pbnRlcnMgb3IgUmV0YWluUHRycyBhbmQgdXNlCisgICAgICAg
IERlY29kZXI6Om9wZXJhdG9yPj4gdG8gZGVjb2RlIHRvIGFuIG9wdGlvbmFsIFJldGFpblB0ci4g
QnkgZGVmYXVsdCwgSVBDOjpkZWNvZGUgaW5mZXJzIHRoZQorICAgICAgICBhbGxvd2VkIGNsYXNz
IGZvciBkZWNvZGluZyBieSBjYWxsaW5nIGBbVCBjbGFzc11gLiBXZSBjYW4gYWxzbyBzcGVjaWZ5
IHRoZSBhbGxvd2VkIGNsYXNzZXMKKyAgICAgICAgZXhwbGljaXRseSBmb3IgY29udGFpbmVycyBh
bmQgY2xhc3NlcyB0aGF0IGFyZSBsb2FkZWQgYXQgcnVudGltZS4KKworICAgICAgICAqIFNoYXJl
ZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9D
b2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvRGF0YURldGVjdGlvblJlc3VsdC5tbToKKyAgICAgICAgKFdlYktpdDo6RGF0YURldGVjdGlv
blJlc3VsdDo6ZW5jb2RlIGNvbnN0KTogUmVtb3ZlZCBjdXN0b20gZW5jb2RpbmcgY29kZSBhbmQg
dXNlZCBBcmd1bWVudENvZGVyc0NvY29hIGluc3RlYWQuCisgICAgICAgIChXZWJLaXQ6OkRhdGFE
ZXRlY3Rpb25SZXN1bHQ6OmRlY29kZSk6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpQYXltZW50Pjo6ZW5jb2RlKTogRGl0dG8uCisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD46OmRlY29kZSk6IERpdHRvLgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0Pjo6ZGVj
b2RlKTogRGl0dG8uCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVu
dENvbnRhY3Q+OjplbmNvZGUpOiBEaXR0by4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpQYXltZW50Q29udGFjdD46OmRlY29kZSk6IERpdHRvLgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+OjplbmNvZGUpOiBE
aXR0by4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hh
bnRTZXNzaW9uPjo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6UGF5bWVudE1ldGhvZD46OmVuY29kZSk6IERpdHRvLgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjpkZWNvZGUpOiBEaXR0by4KKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdD46
OmRlY29kZSk6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6IEFkZGVkIHNvbWUgbmVlZGVkIG5hbWVz
cGFjZXMgZHVlIHRvIHVuaWZpZWQgc291cmNlIHNodWZmbGluZy4KKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6IE1vZGVybml6ZWQgc2V2ZXJhbCBkZWNvZGVycy4KKyAg
ICAgICAgKiBTaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tOgor
ICAgICAgICAoV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZW5jb2Rl
IGNvbnN0KTogUmVtb3ZlZCBjdXN0b20gZW5jb2RpbmcgY29kZSBhbmQgdXNlZCBBcmd1bWVudENv
ZGVyc0NvY29hIGluc3RlYWQuCisgICAgICAgIChXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uOjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvbWFjL1dlYkNv
cmVBcmd1bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpQcm90ZWN0aW9uU3BhY2U+OjplbmNvZGVQbGF0Zm9ybURhdGEpOiBEaXR0by4KKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2U+OjpkZWNvZGVQ
bGF0Zm9ybURhdGEpOiBEaXR0by4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpDcmVkZW50aWFsPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKTogRGl0dG8uCisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q3JlZGVudGlhbD46OmRlY29kZVBsYXRmb3JtRGF0YSk6
IERpdHRvLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKTogRGl0dG8uCisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+Ojpk
ZWNvZGVQbGF0Zm9ybURhdGEpOiBEaXR0by4KKyAgICAgICAgKElQQzo6ZGV2aWNlQ29udGV4dEtl
eSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdERhdGE6OnBsYXRmb3JtRW5jb2Rl
IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjpw
bGF0Zm9ybURlY29kZSk6IERpdHRvLgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6IEFkZGVk
IEFyZ3VtZW50Q29kZXJzQ29jb2EubW0uCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IERpdHRvLgorCiAyMDE4LTExLTI2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBsYXllciB0cmVlIGZyZWV6aW5nIGxvZ2lj
IGluIFdlYlBhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
UGF5bWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50LmgKaW5k
ZXggODVmNjdiZWRmMmVkN2UwZTQ4MGM0NWNhMWY3YjZlZGU3YWU2OWIxZi4uMzZmYjZmZTgyZDhj
NDU5ZGY3YWQwNjUzYWZlMGQ1ZjgzZWUxY2I1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzcsMTggKzM3LDEzIEBAIHN0cnVjdCBBcHBsZVBheVBheW1lbnQ7
CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFBheW1lbnQgewogcHVibGljOgotICAgIFBheW1lbnQo
KSA9IGRlZmF1bHQ7Ci0KLSAgICBleHBsaWNpdCBQYXltZW50KFBLUGF5bWVudCAqcGtQYXltZW50
KQotICAgICAgICA6IG1fcGtQYXltZW50KHBrUGF5bWVudCkKLSAgICB7Ci0gICAgfQotCi0gICAg
dmlydHVhbCB+UGF5bWVudCgpID0gZGVmYXVsdDsKKyAgICBQYXltZW50KCk7CisgICAgZXhwbGlj
aXQgUGF5bWVudChSZXRhaW5QdHI8UEtQYXltZW50PiYmKTsKKyAgICB2aXJ0dWFsIH5QYXltZW50
KCk7CiAKICAgICB2aXJ0dWFsIEFwcGxlUGF5UGF5bWVudCB0b0FwcGxlUGF5UGF5bWVudCh1bnNp
Z25lZCB2ZXJzaW9uKSBjb25zdDsKIAotICAgIFBLUGF5bWVudCAqcGtQYXltZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9wa1BheW1lbnQuZ2V0KCk7IH0KKyAgICBQS1BheW1lbnQgKnBrUGF5bWVudCgp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIFJldGFpblB0cjxQS1BheW1lbnQ+IG1fcGtQYXltZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29u
dGFjdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29udGFjdC5o
CmluZGV4IGQwNDEyZDFkZWRhNjFiN2JmNGM1ZDY5MjdhYjA2ODE5Yjk2MmQzMjEuLjE1NmZiZjk0
YjllMDAxOWEyMzBlMjIzNTc4NGQ3NTcxNDFlYjc0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvbnRhY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb250YWN0LmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwxNyArMzgsMTQgQEAg
c3RydWN0IEFwcGxlUGF5UGF5bWVudENvbnRhY3Q7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFBh
eW1lbnRDb250YWN0IHsKIHB1YmxpYzoKLSAgICBQYXltZW50Q29udGFjdCgpID0gZGVmYXVsdDsK
LSAgICBleHBsaWNpdCBQYXltZW50Q29udGFjdChQS0NvbnRhY3QgKnBrQ29udGFjdCkKLSAgICAg
ICAgOiBtX3BrQ29udGFjdChwa0NvbnRhY3QpCi0gICAgewotICAgIH0KLSAgICB2aXJ0dWFsIH5Q
YXltZW50Q29udGFjdCgpID0gZGVmYXVsdDsKKyAgICBQYXltZW50Q29udGFjdCgpOworICAgIGV4
cGxpY2l0IFBheW1lbnRDb250YWN0KFJldGFpblB0cjxQS0NvbnRhY3Q+JiYpOworICAgIHZpcnR1
YWwgflBheW1lbnRDb250YWN0KCk7CiAKICAgICBzdGF0aWMgUGF5bWVudENvbnRhY3QgZnJvbUFw
cGxlUGF5UGF5bWVudENvbnRhY3QodW5zaWduZWQgdmVyc2lvbiwgY29uc3QgQXBwbGVQYXlQYXlt
ZW50Q29udGFjdCYpOwogICAgIHZpcnR1YWwgQXBwbGVQYXlQYXltZW50Q29udGFjdCB0b0FwcGxl
UGF5UGF5bWVudENvbnRhY3QodW5zaWduZWQgdmVyc2lvbikgY29uc3Q7CiAKLSAgICBQS0NvbnRh
Y3QgKnBrQ29udGFjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGtDb250YWN0LmdldCgpOyB9CisgICAg
UEtDb250YWN0ICpwa0NvbnRhY3QoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8
UEtDb250YWN0PiBtX3BrQ29udGFjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKaW5kZXggN2VkNmIyMTU3MzA2
ZWViZDA3ZTUxMTYxOGM0MzQ0NzljNTU0MzZlNy4uZGFhNzQ5NTQ5ZjUzZjVkYTNkMzY2ZDVlNjA4
MzlhMjg4MDYzYjNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsOCArNDIsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBQYXltZW50TWVyY2hhbnRTZXNzaW9uIHsKIHB1YmxpYzoKICAgICBQ
YXltZW50TWVyY2hhbnRTZXNzaW9uKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFBheW1lbnRN
ZXJjaGFudFNlc3Npb24oUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICpwa1BheW1lbnRNZXJjaGFu
dFNlc3Npb24pCi0gICAgICAgIDogbV9wa1BheW1lbnRNZXJjaGFudFNlc3Npb24ocGtQYXltZW50
TWVyY2hhbnRTZXNzaW9uKQorICAgIGV4cGxpY2l0IFBheW1lbnRNZXJjaGFudFNlc3Npb24oUmV0
YWluUHRyPFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbj4mJiBwa1BheW1lbnRNZXJjaGFudFNlc3Np
b24pCisgICAgICAgIDogbV9wa1BheW1lbnRNZXJjaGFudFNlc3Npb24geyBXVEZNb3ZlKHBrUGF5
bWVudE1lcmNoYW50U2Vzc2lvbikgfQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kLmgKaW5kZXggOWNlN2JhYTc5NDNhYmQy
ZGRmZjEzMWI0NDMwOTdhMmFhMDRiMTIxNS4uNGFmYmEyZjI5ZTBjMzQxY2E4NDQwMzA1ZGMxMDhj
YjQ0NGExODhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50TWV0aG9kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50TWV0aG9kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzcsMTcgKzM3LDEzIEBAIHN0cnVjdCBBcHBsZVBheVBheW1lbnRNZXRob2Q7
CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFBheW1lbnRNZXRob2QgewogcHVibGljOgotICAgIFBh
eW1lbnRNZXRob2QoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB+UGF5bWVudE1ldGhvZCgpID0g
ZGVmYXVsdDsKLQotICAgIGV4cGxpY2l0IFBheW1lbnRNZXRob2QoUEtQYXltZW50TWV0aG9kICpw
a1BheW1lbnRNZXRob2QpCi0gICAgICAgIDogbV9wa1BheW1lbnRNZXRob2QocGtQYXltZW50TWV0
aG9kKQotICAgIHsKLSAgICB9CisgICAgUGF5bWVudE1ldGhvZCgpOworICAgIGV4cGxpY2l0IFBh
eW1lbnRNZXRob2QoUmV0YWluUHRyPFBLUGF5bWVudE1ldGhvZD4mJik7CisgICAgdmlydHVhbCB+
UGF5bWVudE1ldGhvZCgpOwogCiAgICAgdmlydHVhbCBBcHBsZVBheVBheW1lbnRNZXRob2QgdG9B
cHBsZVBheVBheW1lbnRNZXRob2QoKSBjb25zdDsKIAotICAgIFBLUGF5bWVudE1ldGhvZCAqcGtQ
YXltZW50TWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9wa1BheW1lbnRNZXRob2QuZ2V0KCk7IH0K
KyAgICBQS1BheW1lbnRNZXRob2QgKnBrUGF5bWVudE1ldGhvZCgpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIFJldGFpblB0cjxQS1BheW1lbnRNZXRob2Q+IG1fcGtQYXltZW50TWV0aG9kOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2Nv
YS5tbQppbmRleCAwYjI5ZDc0N2UyNDA3YzM1OWZkY2IxNGIzYjc4YzVhZDYxZDJkODg2Li42MGE5
N2UxNThhMzZhMDFkMTUyZDUwNTFkOTU4ZDdjMzg0YTZhNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5tbQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NiwxMiAr
NjYsMjYgQEAgc3RhdGljIEFwcGxlUGF5UGF5bWVudCBjb252ZXJ0KHVuc2lnbmVkIHZlcnNpb24s
IFBLUGF5bWVudCAqcGF5bWVudCkKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CisgICAgCitQYXlt
ZW50OjpQYXltZW50KCkgPSBkZWZhdWx0OworCitQYXltZW50OjpQYXltZW50KFJldGFpblB0cjxQ
S1BheW1lbnQ+JiYgcGtQYXltZW50KQorICAgIDogbV9wa1BheW1lbnQgeyBXVEZNb3ZlKHBrUGF5
bWVudCkgfQoreworfQorCitQYXltZW50Ojp+UGF5bWVudCgpID0gZGVmYXVsdDsKIAogQXBwbGVQ
YXlQYXltZW50IFBheW1lbnQ6OnRvQXBwbGVQYXlQYXltZW50KHVuc2lnbmVkIHZlcnNpb24pIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGNvbnZlcnQodmVyc2lvbiwgbV9wa1BheW1lbnQuZ2V0KCkpOwog
fQogCitQS1BheW1lbnQgKlBheW1lbnQ6OnBrUGF5bWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcGtQYXltZW50LmdldCgpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29h
Lm1tCmluZGV4IGNjOTdmZDVlMWY2MjM0NTk5ZWI4ODRjYTgxODdmYjJjZDA4NTdjNjUuLmU4ODI4
NGM1N2QwODYzNzkyZDMzYjE1Nzk1ODRiNjVlZjEwMzY2YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRhY3RDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29j
b2EubW0KQEAgLTIwOCw2ICsyMDgsMTUgQEAgc3RhdGljIEFwcGxlUGF5UGF5bWVudENvbnRhY3Qg
Y29udmVydCh1bnNpZ25lZCB2ZXJzaW9uLCBQS0NvbnRhY3QgKmNvbnRhY3QpCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAorUGF5bWVudENvbnRhY3Q6OlBheW1lbnRDb250YWN0KCkgPSBkZWZhdWx0
OworCitQYXltZW50Q29udGFjdDo6UGF5bWVudENvbnRhY3QoUmV0YWluUHRyPFBLQ29udGFjdD4m
JiBwa0NvbnRhY3QpCisgICAgOiBtX3BrQ29udGFjdCB7IFdURk1vdmUocGtDb250YWN0KSB9Cit7
Cit9CisKK1BheW1lbnRDb250YWN0Ojp+UGF5bWVudENvbnRhY3QoKSA9IGRlZmF1bHQ7CisKIFBh
eW1lbnRDb250YWN0IFBheW1lbnRDb250YWN0Ojpmcm9tQXBwbGVQYXlQYXltZW50Q29udGFjdCh1
bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVBheW1lbnRDb250YWN0JiBjb250YWN0KQog
ewogICAgIHJldHVybiBQYXltZW50Q29udGFjdChjb252ZXJ0KHZlcnNpb24sIGNvbnRhY3QpLmdl
dCgpKTsKQEAgLTIxOCw2ICsyMjcsMTEgQEAgQXBwbGVQYXlQYXltZW50Q29udGFjdCBQYXltZW50
Q29udGFjdDo6dG9BcHBsZVBheVBheW1lbnRDb250YWN0KHVuc2lnbmVkIHZlcnNpb24KICAgICBy
ZXR1cm4gY29udmVydCh2ZXJzaW9uLCBtX3BrQ29udGFjdC5nZXQoKSk7CiB9CiAKK1BLQ29udGFj
dCAqUGF5bWVudENvbnRhY3Q6OnBrQ29udGFjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGtD
b250YWN0LmdldCgpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQppbmRl
eCA2YWU2OGNkZjgzMjZiYTA1NjM4MDI2ODQyZTllYWYyNGFmMGRkZjE4Li5hNWM1OTlhZmY2Y2I5
YTkwNTQxNjQ3ZDU2NTNiODYwNTNkMmE0ODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDEs
MTEgKzEwMSwyNSBAQCBzdGF0aWMgQXBwbGVQYXlQYXltZW50TWV0aG9kIGNvbnZlcnQoUEtQYXlt
ZW50TWV0aG9kICpwYXltZW50TWV0aG9kKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1BheW1l
bnRNZXRob2Q6OlBheW1lbnRNZXRob2QoKSA9IGRlZmF1bHQ7CisKK1BheW1lbnRNZXRob2Q6OlBh
eW1lbnRNZXRob2QoUmV0YWluUHRyPFBLUGF5bWVudE1ldGhvZD4mJiBwa1BheW1lbnRNZXRob2Qp
CisgICAgOiBtX3BrUGF5bWVudE1ldGhvZCB7IFdURk1vdmUocGtQYXltZW50TWV0aG9kKSB9Cit7
Cit9CisKK1BheW1lbnRNZXRob2Q6On5QYXltZW50TWV0aG9kKCkgPSBkZWZhdWx0OworCiBBcHBs
ZVBheVBheW1lbnRNZXRob2QgUGF5bWVudE1ldGhvZDo6dG9BcHBsZVBheVBheW1lbnRNZXRob2Qo
KSBjb25zdAogewogICAgIHJldHVybiBjb252ZXJ0KG1fcGtQYXltZW50TWV0aG9kLmdldCgpKTsK
IH0KIAorUEtQYXltZW50TWV0aG9kICpQYXltZW50TWV0aG9kOjpwa1BheW1lbnRNZXRob2QoKSBj
b25zdAoreworICAgIHJldHVybiBtX3BrUGF5bWVudE1ldGhvZC5nZXQoKTsKK30KKwogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NL
aXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaApp
bmRleCAzY2EzOWZhOTZmZmFjNTA2YmQwMDAzOTg1ZDZhODYzM2E5NmZiY2Y4Li4xODk1OGU5MjYx
NGMxZTNiNmE0ZjA0YTY4YWQxNDMzYWIxOTcxODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCkBAIC0zMjcsMTAgKzMyNywxOSBAQCB2b2lkIFBL
RHJhd0FwcGxlUGF5QnV0dG9uKF9Ob25udWxsIENHQ29udGV4dFJlZiwgQ0dSZWN0IGRyYXdSZWN0
LCBDR0Zsb2F0IHNjYWxlLAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitAaW50ZXJmYWNl
IFBLQ29udGFjdCAoKSA8TlNTZWN1cmVDb2Rpbmc+CitAZW5kCisKIEBpbnRlcmZhY2UgUEtQYXNz
TGlicmFyeSAoKQogLSAodm9pZClvcGVuUGF5bWVudFNldHVwRm9yTWVyY2hhbnRJZGVudGlmaWVy
OihOU1N0cmluZyAqKWlkZW50aWZpZXIgZG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBjb21wbGV0
aW9uOih2b2lkKF4pKEJPT0wgc3VjY2VzcykpY29tcGxldGlvbjsKIEBlbmQKIAorQGludGVyZmFj
ZSBQS1BheW1lbnQgKCkgPE5TU2VjdXJlQ29kaW5nPgorQGVuZAorCitAaW50ZXJmYWNlIFBLUGF5
bWVudE1ldGhvZCAoKSA8TlNTZWN1cmVDb2Rpbmc+CitAZW5kCisKIEBpbnRlcmZhY2UgUEtQYXlt
ZW50UmVxdWVzdCAoKQogQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgTlNTdHJpbmcgKnNv
dXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBz
dHJvbmcpIE5TU3RyaW5nICpzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29h
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTJiMTM4MGUyNjkzZTlkNTIxNWM3ZWJkNmY0N2NhZWI3MTdhNDQzNQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29j
b2EuaApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiQXJndW1lbnRDb2Rl
cnMuaCIKKworI2lmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CisKK25hbWVzcGFjZSBJUEMgeworCit2b2lkIGVuY29kZU9iamVjdChFbmNvZGVyJiwgaWQgPE5T
U2VjdXJlQ29kaW5nPik7CitzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZCA8TlNTZWN1cmVDb2Rp
bmc+Pj4gZGVjb2RlT2JqZWN0KERlY29kZXImLCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsYXNz
ZXMpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxUPj4g
ZGVjb2RlKERlY29kZXImLCBDbGFzcyBhbGxvd2VkQ2xhc3MpOwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8VD4+IGRlY29kZShEZWNvZGVyJiwgTlNBcnJheTxD
bGFzcz4gKmFsbG93ZWRDbGFzc2VzID0gQFsgW1QgY2xhc3NdIF0pOworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8VD4+IGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBDbGFzcyBhbGxvd2VkQ2xhc3MpCit7CisgICAgcmV0dXJuIGRlY29kZTxUPihkZWNvZGVy
LCBAWyBhbGxvd2VkQ2xhc3MgXSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdGQ6Om9w
dGlvbmFsPFJldGFpblB0cjxUPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xh
c3M+ICphbGxvd2VkQ2xhc3NlcykKK3sKKyAgICBhdXRvIHJlc3VsdCA9IGRlY29kZU9iamVjdChk
ZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcyk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoISpyZXN1bHQpCisgICAgICAgIHJldHVybiB7IG51
bGxwdHIgfTsKKworICAgIGlkIG9iamVjdCA9IHJlc3VsdC0+bGVha1JlZigpOworICAgIEFTU0VS
VChbYWxsb3dlZENsYXNzZXMgY29udGFpbnNPYmplY3Q6W29iamVjdCBjbGFzc11dKTsKKyAgICBy
ZXR1cm4geyBhZG9wdE5TKHN0YXRpY19jYXN0PFQgKj4ob2JqZWN0KSkgfTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gdXNpbmcgQ29uZm9ybXNUb1NlY3VyZUNvZGluZyA9IHN0ZDo6aXNfY29u
dmVydGlibGU8VCAqLCBpZCA8TlNTZWN1cmVDb2Rpbmc+PjsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8VCAqPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9
IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8Q29uZm9ybXNUb1NlY3VyZUNvZGluZzxVPjo6dmFsdWU+KiA9
IG51bGxwdHI+CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIFUgKm9i
amVjdCkKKyAgICB7CisgICAgICAgIGVuY29kZU9iamVjdChlbmNvZGVyLCBvYmplY3QpOworICAg
IH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJldGFp
blB0cjxUPj4geworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVID0gVCwgc3RkOjplbmFibGVfaWZf
dDxDb25mb3Jtc1RvU2VjdXJlQ29kaW5nPFU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmV0YWluUHRyPFU+JiBvYmpl
Y3QpCisgICAgeworICAgICAgICBBcmd1bWVudENvZGVyPFUgKj46OmVuY29kZShlbmNvZGVyLCBv
YmplY3QuZ2V0KCkpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVID0gVCwgc3Rk
OjplbmFibGVfaWZfdDxDb25mb3Jtc1RvU2VjdXJlQ29kaW5nPFU+Ojp2YWx1ZT4qID0gbnVsbHB0
cj4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8VT4+IGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIElQQzo6ZGVjb2RlPFU+KGRlY29kZXIp
OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIElQQworCisjZW5kaWYgLy8gUExBVEZPUk0o
Q09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENv
ZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnND
b2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jYTIwNDliMWYzOWQ3OGZlZWJjMjZiNDUyZGNjOWNhNDJiY2Zh
ZmJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1l
bnRDb2RlcnNDb2NvYS5tbQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NvY29hLmgiCisKKyNpZiBQTEFURk9S
TShDT0NPQSkKKworI2ltcG9ydCAiQXJndW1lbnRDb2RlcnNDRi5oIgorI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK3ZvaWQg
ZW5jb2RlT2JqZWN0KEVuY29kZXImIGVuY29kZXIsIGlkIDxOU1NlY3VyZUNvZGluZz4gb2JqZWN0
KQoreworICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworICAgIFthcmNoaXZl
ciBlbmNvZGVPYmplY3Q6b2JqZWN0IGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXld
OworICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107CisKKyAgICBJUEM6OmVuY29kZShlbmNv
ZGVyLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKVthcmNoaXZlciBlbmNvZGVkRGF0YV0pOworfQorCitz
dGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZCA8TlNTZWN1cmVDb2Rpbmc+Pj4gZGVjb2RlT2JqZWN0
KERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykKK3sKKyAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOworICAgIGlmICghZGVjb2RlKGRlY29kZXIsIGRh
dGEpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byB1bmFyY2hpdmVy
ID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgp
KTsKKyAgICBAdHJ5IHsKKyAgICAgICAgaWQgcmVzdWx0ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2Jq
ZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoQXJyYXk6YWxsb3dlZENsYXNzZXNdIGZvcktleTpO
U0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOworICAgICAgICBBU1NFUlQoIXJlc3VsdCB8fCBb
cmVzdWx0IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSk7Cisg
ICAgICAgIHJldHVybiB7IHJlc3VsdCB9OworICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhj
ZXB0aW9uKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBvYmplY3Qgb2Yg
Y2xhc3NlcyAlQDogJUAiLCBhbGxvd2VkQ2xhc3NlcywgZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9IEBmaW5hbGx5IHsKKyAgICAgICAgW3VuYXJjaGl2ZXIg
ZmluaXNoRGVjb2RpbmddOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgSVBDCisKKyNlbmRp
ZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9E
YXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCmluZGV4IGRhZmVkOWYwNWI3Y2JhMzUxZjE3Y2ZkOGVmMzA3
YTM1OTA5MWY2N2YuLjhkZTY3YTE3MGIyNWM1ZWFjZjNjYWRjMzY3MjI2MTZmYmE0MmY4NjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5t
bQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRGF0YURl
dGVjdGlvblJlc3VsdC5oIgogCi0jaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCisjaW1wb3J0
ICJBcmd1bWVudENvZGVyc0NvY29hLmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvRGF0YURldGVjdG9yc0NvcmVTUEkuaD4KICNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CkBAIC00MSwyNyArNDEsMTcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgRGF0YURldGVjdGlvblJlc3VsdDo6ZW5jb2Rl
KElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2Vj
dXJlQXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnJlc3VsdHMuZ2V0KCkg
Zm9yS2V5OkAiZGF0YURldGVjdG9yUmVzdWx0cyJdOwotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIs
IChfX2JyaWRnZSBDRkRhdGFSZWYpYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGEpOworICAgIGVu
Y29kZXIgPDwgcmVzdWx0czsKIH0KIAogc3RkOjpvcHRpb25hbDxEYXRhRGV0ZWN0aW9uUmVzdWx0
PiBEYXRhRGV0ZWN0aW9uUmVzdWx0OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewot
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7Ci0gICAgaWYgKCFJUEM6OmRlY29kZShkZWNv
ZGVyLCBkYXRhKSkKKyAgICBhdXRvIHJlc3VsdHMgPSBJUEM6OmRlY29kZTxOU0FycmF5PihkZWNv
ZGVyLCBAWyBbTlNBcnJheSBjbGFzc10sIGdldEREU2Nhbm5lclJlc3VsdENsYXNzKCkgXSk7Cisg
ICAgaWYgKCFyZXN1bHRzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRGF0
YURldGVjdGlvblJlc3VsdCByZXN1bHQ7Ci0gICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5h
cmNoaXZlckZyb21EYXRhKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKLSAgICBAdHJ5
IHsKLSAgICAgICAgcmVzdWx0LnJlc3VsdHMgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNs
YXNzZXM6W05TU2V0IHNldFdpdGhBcnJheTpAWyBbTlNBcnJheSBjbGFzc10sIGdldEREU2Nhbm5l
clJlc3VsdENsYXNzKCldIF0gZm9yS2V5OkAiZGF0YURldGVjdG9yUmVzdWx0cyJdOwotICAgIH0g
QGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFp
bGVkIHRvIGRlY29kZSBOU0FycmF5IG9mIEREU2NhblJlc3VsdDogJUAiLCBleGNlcHRpb24pOwot
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLSAgICAKLSAgICBbdW5hcmNoaXZl
ciBmaW5pc2hEZWNvZGluZ107CisgICAgcmVzdWx0LnJlc3VsdHMgPSBXVEZNb3ZlKCpyZXN1bHRz
KTsKICAgICByZXR1cm4geyBXVEZNb3ZlKHJlc3VsdCkgfTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbQppbmRleCAxNjQ5ZDJlYzgxOGFkOGNkYjQ0ODRmYzRkNjMzYzgxMjZiODc4NGYwLi4wZGQ1
ZDNjNDE4MzQ0ODNhMmMyZjhmZmYzMDc1ZjdlMTc1OWM1Njk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKKyNpbXBvcnQgIkFy
Z3VtZW50Q29kZXJzQ29jb2EuaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQg
PFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KICNpbXBvcnQgPHBhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsuaD4KQEAgLTM4LDMyICszOSwxNiBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYgcGF5bWVudCkKIHsKLSAg
ICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIgZW5jb2Rl
T2JqZWN0OnBheW1lbnQucGtQYXltZW50KCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVj
dEtleV07Ci0gICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKLQotICAgIGF1dG8gZGF0YSA9
IGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhOwotICAgIGVuY29kZXIgPDwgRGF0YVJlZmVyZW5j
ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3Ro
XSk7CisgICAgZW5jb2RlciA8PCBwYXltZW50LnBrUGF5bWVudCgpOwogfQogCi1ib29sIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJD
b3JlOjpQYXltZW50JiBwYXltZW50KQorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50PiBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBh
dXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNv
bnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhUmVmZXJlbmNlLmRh
dGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsKLSAg
ICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoZGF0YS5nZXQoKSk7
Ci0gICAgQHRyeSB7Ci0gICAgICAgIFBLUGF5bWVudCAqcGtQYXltZW50ID0gW3VuYXJjaGl2ZXIg
ZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldFBLUGF5bWVudENsYXNzKCkgZm9yS2V5Ok5TS2V5
ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0gICAgICAgIHBheW1lbnQgPSBQYXltZW50KHBrUGF5
bWVudCk7Ci0gICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVudDogJUAiLCBleGNlcHRpb24pOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGF1dG8gcGF5bWVudCA9IElQQzo6ZGVj
b2RlPFBLUGF5bWVudD4oZGVjb2RlciwgUEFMOjpnZXRQS1BheW1lbnRDbGFzcygpKTsKKyAgICBp
ZiAoIXBheW1lbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBbdW5hcmNo
aXZlciBmaW5pc2hEZWNvZGluZ107Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFBheW1l
bnQgeyBXVEZNb3ZlKCpwYXltZW50KSB9OwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQmIHJlc3VsdCkKQEAgLTgz
LDM4ICs2OCwyMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9u
UmVzdWx0PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbgogICAgIGRlY29kZXIgPj4gZXJy
b3JzOwogICAgIGlmICghZXJyb3JzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
IAorCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKnN0YXR1cyksIFdURk1vdmUoKmVycm9ycykgfX07
CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50Q29udGFjdCYgcGF5bWVu
dENvbnRhY3QpCiB7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7Ci0gICAg
W2FyY2hpdmVyIGVuY29kZU9iamVjdDpwYXltZW50Q29udGFjdC5wa0NvbnRhY3QoKSBmb3JLZXk6
TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKLSAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2Rp
bmddOwotCi0gICAgYXV0byBkYXRhID0gYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGE7Ci0gICAg
ZW5jb2RlciA8PCBEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0
YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICBlbmNvZGVyIDw8IHBheW1lbnRDb250YWN0
LnBrQ29udGFjdCgpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENv
bnRhY3Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UGF5bWVudENvbnRhY3Qm
IHBheW1lbnRDb250YWN0KQorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50Q29udGFjdD4g
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNO
b0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZl
cmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpO
T10pOwotICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRh
LmdldCgpKTsKLSAgICBAdHJ5IHsKLSAgICAgICAgUEtDb250YWN0ICpwa0NvbnRhY3QgPSBbdW5h
cmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOlBBTDo6Z2V0UEtDb250YWN0Q2xhc3MoKSBmb3JL
ZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKLSAgICAgICAgcGF5bWVudENvbnRhY3Qg
PSBQYXltZW50Q29udGFjdChwa0NvbnRhY3QpOwotICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAq
ZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBQS0NvbnRh
Y3Q6ICVAIiwgZXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBh
dXRvIGNvbnRhY3QgPSBJUEM6OmRlY29kZTxQS0NvbnRhY3Q+KGRlY29kZXIsIFBBTDo6Z2V0UEtD
b250YWN0Q2xhc3MoKSk7CisgICAgaWYgKCFjb250YWN0KQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOwotICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiBXZWJDb3JlOjpQYXltZW50Q29udGFjdCB7IFdURk1vdmUoKmNvbnRh
Y3QpIH07CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50RXJyb3I+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudEVycm9yJiBlcnJv
cikKQEAgLTE0Niw2MiArMTE1LDMwIEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEVy
cm9yPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRFcnJvcj46OmRlY29kCiAKIHZvaWQg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mIHBh
eW1lbnRNZXJjaGFudFNlc3Npb24pCiB7Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hp
dmVyKCk7Ci0gICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpwYXltZW50TWVyY2hhbnRTZXNzaW9u
LnBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbigpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmpl
Y3RLZXldOwotICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107Ci0KLSAgICBhdXRvIGRhdGEg
PSBhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YTsKLSAgICBlbmNvZGVyIDw8IERhdGFSZWZlcmVu
Y2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0
aF0pOworICAgIGVuY29kZXIgPDwgcGF5bWVudE1lcmNoYW50U2Vzc2lvbi5wa1BheW1lbnRNZXJj
aGFudFNlc3Npb24oKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRN
ZXJjaGFudFNlc3Npb24+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbiYgcGF5bWVudE1lcmNoYW50U2Vzc2lvbikKK3N0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQ
YXltZW50TWVyY2hhbnRTZXNzaW9uPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
SVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkYXRhUmVmZXJlbmNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBkYXRh
ID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25zdF9jYXN0
PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpKSBs
ZW5ndGg6ZGF0YVJlZmVyZW5jZS5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7Ci0gICAgYXV0byB1
bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKGRhdGEuZ2V0KCkpOwotICAgIEB0
cnkgewotICAgICAgICBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKnBrUGF5bWVudE1lcmNoYW50
U2Vzc2lvbiA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6UEFMOjpnZXRQS1BheW1l
bnRNZXJjaGFudFNlc3Npb25DbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RL
ZXldOwotICAgICAgICBwYXltZW50TWVyY2hhbnRTZXNzaW9uID0gUGF5bWVudE1lcmNoYW50U2Vz
c2lvbihwa1BheW1lbnRNZXJjaGFudFNlc3Npb24pOwotICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlv
biAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBQS1Bh
eW1lbnRNZXJjaGFudFNlc3Npb246ICVAIiwgZXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KKyAgICBhdXRvIHBheW1lbnRNZXJjaGFudFNlc3Npb24gPSBJUEM6OmRlY29k
ZTxQS1BheW1lbnRNZXJjaGFudFNlc3Npb24+KGRlY29kZXIsIFBBTDo6Z2V0UEtQYXltZW50TWVy
Y2hhbnRTZXNzaW9uQ2xhc3MoKSk7CisgICAgaWYgKCFwYXltZW50TWVyY2hhbnRTZXNzaW9uKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVj
b2RpbmddOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBXZWJDb3JlOjpQYXltZW50TWVy
Y2hhbnRTZXNzaW9uIHsgV1RGTW92ZSgqcGF5bWVudE1lcmNoYW50U2Vzc2lvbikgfTsKIH0KIAog
dm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYgcGF5bWVudE1ldGhvZCkK
IHsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIg
ZW5jb2RlT2JqZWN0OnBheW1lbnRNZXRob2QucGtQYXltZW50TWV0aG9kKCkgZm9yS2V5Ok5TS2V5
ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0gICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsK
LQotICAgIGF1dG8gZGF0YSA9IGFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhOwotICAgIGVuY29k
ZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0
ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgZW5jb2RlciA8PCBwYXltZW50TWV0aG9kLnBrUGF5
bWVudE1ldGhvZCgpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1l
dGhvZD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJiBw
YXltZW50TWV0aG9kKQorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWV0aG9kPiBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5
OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhUmVmZXJlbmNl
LmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsK
LSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoZGF0YS5nZXQo
KSk7Ci0gICAgQHRyeSB7Ci0gICAgICAgIFBLUGF5bWVudE1ldGhvZCAqcGtQYXltZW50TWV0aG9k
ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldFBLUGF5bWVudE1ldGhv
ZENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07Ci0gICAgICAgIHBh
eW1lbnRNZXRob2QgPSBQYXltZW50TWV0aG9kKHBrUGF5bWVudE1ldGhvZCk7Ci0gICAgfSBAY2F0
Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gZGVjb2RlIFBLUGF5bWVudDogJUAiLCBleGNlcHRpb24pOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQorICAgIGF1dG8gcGF5bWVudE1ldGhvZCA9IElQQzo6ZGVjb2RlPFBLUGF5bWVu
dE1ldGhvZD4oZGVjb2RlciwgUEFMOjpnZXRQS1BheW1lbnRNZXRob2RDbGFzcygpKTsKKyAgICBp
ZiAoIXBheW1lbnRNZXRob2QpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBb
dW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJu
IFBheW1lbnRNZXRob2QgeyBXVEZNb3ZlKCpwYXltZW50TWV0aG9kKSB9OwogfQogCiB2b2lkIEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZT46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlJiB1cGRhdGUpCkBA
IC0yNTQsMjAgKzE5MSwyMiBAQCBib29sIEFyZ3VtZW50Q29kZXI8QXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQXBwbAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmVxdWVzdC5zZXRSZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzKHJl
cXVpcmVkQmlsbGluZ0NvbnRhY3RGaWVsZHMpOwogCi0gICAgUGF5bWVudENvbnRhY3QgYmlsbGlu
Z0NvbnRhY3Q7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShiaWxsaW5nQ29udGFjdCkpCisgICAg
c3RkOjpvcHRpb25hbDxQYXltZW50Q29udGFjdD4gYmlsbGluZ0NvbnRhY3Q7CisgICAgZGVjb2Rl
ciA+PiBiaWxsaW5nQ29udGFjdDsKKyAgICBpZiAoIWJpbGxpbmdDb250YWN0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmVxdWVzdC5zZXRCaWxsaW5nQ29udGFjdChiaWxsaW5nQ29udGFj
dCk7CisgICAgcmVxdWVzdC5zZXRCaWxsaW5nQ29udGFjdCgqYmlsbGluZ0NvbnRhY3QpOwogCiAg
ICAgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkNvbnRhY3RGaWVsZHMgcmVxdWlyZWRT
aGlwcGluZ0NvbnRhY3RGaWVsZHM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgocmVxdWlyZWRT
aGlwcGluZ0NvbnRhY3RGaWVsZHMpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlcXVl
c3Quc2V0UmVxdWlyZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHMocmVxdWlyZWRTaGlwcGluZ0NvbnRh
Y3RGaWVsZHMpOwogCi0gICAgUGF5bWVudENvbnRhY3Qgc2hpcHBpbmdDb250YWN0OwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc2hpcHBpbmdDb250YWN0KSkKKyAgICBzdGQ6Om9wdGlvbmFsPFBh
eW1lbnRDb250YWN0PiBzaGlwcGluZ0NvbnRhY3Q7CisgICAgZGVjb2RlciA+PiBzaGlwcGluZ0Nv
bnRhY3Q7CisgICAgaWYgKCFzaGlwcGluZ0NvbnRhY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXF1ZXN0LnNldFNoaXBwaW5nQ29udGFjdChzaGlwcGluZ0NvbnRhY3QpOworICAgIHJl
cXVlc3Quc2V0U2hpcHBpbmdDb250YWN0KCpzaGlwcGluZ0NvbnRhY3QpOwogCiAgICAgQXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Ok1lcmNoYW50Q2FwYWJpbGl0aWVzIG1lcmNoYW50Q2Fw
YWJpbGl0aWVzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVyY2hhbnRDYXBhYmlsaXRpZXMp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IDFjMTFmZjg4NTc3NGFk
NDI0NDA3YTYwYjFlNzljYTA1Y2VjYzZlZmEuLmMxZTE4YzRmMjFjMjFlM2FkNGRjMTIzZjIxOWFk
OTg5NTAyZDRmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTIwLDEz
ICs5MjAsMTMgQEAgQ1N0cmluZyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVzY3JpcHRp
b24oKSBjb25zdAogICAgICAgICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cCh0cyk7
CiAgICAgICAgICAgICB0cyA8PCBjcmVhdGVkTGF5ZXIudHlwZSA8PCIgIiA8PCBjcmVhdGVkTGF5
ZXIubGF5ZXJJRDsKICAgICAgICAgICAgIHN3aXRjaCAoY3JlYXRlZExheWVyLnR5cGUpIHsKLSAg
ICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgor
ICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxh
eWVyTGF5ZXI6CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0
ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3Zp
ZGVkTGF5ZXI6CisgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNv
bnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQ3VzdG9tOgorICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZUN1c3RvbToKICAgICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIg
PDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKQEAgLTkzOCw3ICs5MzgsNyBAQCBDU3RyaW5n
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgZHVt
cENoYW5nZWRMYXllcnModHMsIG1fY2hhbmdlZExheWVyUHJvcGVydGllcyk7CiAKICAgICBpZiAo
IW1fZGVzdHJveWVkTGF5ZXJJRHMuaXNFbXB0eSgpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHk8
VmVjdG9yPEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4+KCJkZXN0cm95ZWQtbGF5ZXJz
IiwgbV9kZXN0cm95ZWRMYXllcklEcyk7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eTxWZWN0b3I8
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPj4oImRlc3Ryb3llZC1sYXll
cnMiLCBtX2Rlc3Ryb3llZExheWVySURzKTsKIAogICAgIGlmIChtX2VkaXRvclN0YXRlKSB7CiAg
ICAgICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgc2NvcGUodHMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAwZGZiNmU4ZjE5ZDQyMGU5ODdj
YzQ4ODA0OTY3MTRmZDgxMGZlOThlLi4wOTA5YjRkMTljYTA4OTVjNTQzMDVmNWY1NGNkYTBjMDQ5
M2E4ODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aApAQCAtNjAxLDcgKzYwMSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
RGVjb2RlciYsIFdlYkNvcmU6OlBheW1lbnQmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYXltZW50PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4gewpA
QCAtNjExLDcgKzYxMSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD4gewogICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmKTsKLSAgICBzdGF0
aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlBheW1lbnRDb250YWN0Jik7CisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+IGRlY29kZShEZWNv
ZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBh
eW1lbnRFcnJvcj4gewpAQCAtNjIxLDEyICs2MjEsMTIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50RXJyb3I+IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPiB7CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRT
ZXNzaW9uJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD4gewogICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYp
OwotICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6UGF5bWVudE1ldGhv
ZCYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+IGRl
Y29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlBheW1lbnRNZXRob2RVcGRhdGU+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQppbmRl
eCBmMWUwYzNhNjM1NmYwM2IyNjgwOWM2MzcyZTg4ZmY0NTVhYzE1OTk3Li5kMGFhODUxOTZjZDc1
ZWQ5OGZkYjk3MTRhZDRlNjNmNjA2YmYwOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIgogCi0jaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgi
CisjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NvY29hLmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvRGF0YURldGVjdG9yc0NvcmVTUEku
aD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CkBAIC03Niwx
MCArNzYsNyBAQCB2b2lkIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaXNEYXRhRGV0ZWN0
b3JMaW5rOwogICAgIGlmIChpc0RhdGFEZXRlY3RvckxpbmspIHsKICAgICAgICAgZW5jb2RlciA8
PCBkYXRhRGV0ZWN0b3JJZGVudGlmaWVyOwotICAgICAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJl
QXJjaGl2ZXIoKTsKLSAgICAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpkYXRhRGV0ZWN0b3JS
ZXN1bHRzLmdldCgpIGZvcktleTpAImRhdGFEZXRlY3RvclJlc3VsdHMiXTsKLQotICAgICAgICBJ
UEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oYXJjaGl2ZXIu
Z2V0KCkuZW5jb2RlZERhdGEpKTsKKyAgICAgICAgZW5jb2RlciA8PCBkYXRhRGV0ZWN0b3JSZXN1
bHRzOwogICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQpAQCAtMTcz
LDE5ICsxNzAsMTIgQEAgYm9vbCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSW50ZXJhY3Rpb24KICAgICBpZiAocmVzdWx0Lmlz
RGF0YURldGVjdG9yTGluaykgewogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5k
YXRhRGV0ZWN0b3JJZGVudGlmaWVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKLSAgICAgICAgaWYgKCFJUEM6OmRlY29kZShk
ZWNvZGVyLCBkYXRhKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAg
ICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoTlNEYXRhICop
ZGF0YS5nZXQoKSk7Ci0gICAgICAgIEB0cnkgewotICAgICAgICAgICAgcmVzdWx0LmRhdGFEZXRl
Y3RvclJlc3VsdHMgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNl
dFdpdGhBcnJheTpAWyBbTlNBcnJheSBjbGFzc10sIGdldEREU2Nhbm5lclJlc3VsdENsYXNzKCld
IF0gZm9yS2V5OkAiZGF0YURldGVjdG9yUmVzdWx0cyJdOwotICAgICAgICB9IEBjYXRjaCAoTlNF
eGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8g
ZGVjb2RlIE5TQXJyYXkgb2YgRERTY2FuUmVzdWx0OiAlQCIsIGV4Y2VwdGlvbik7CisKKyAgICAg
ICAgYXV0byBkYXRhRGV0ZWN0b3JSZXN1bHRzID0gSVBDOjpkZWNvZGU8TlNBcnJheT4oZGVjb2Rl
ciwgQFsgW05TQXJyYXkgY2xhc3NdLCBnZXRERFNjYW5uZXJSZXN1bHRDbGFzcygpIF0pOworICAg
ICAgICBpZiAoIWRhdGFEZXRlY3RvclJlc3VsdHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5n
XTsKKworICAgICAgICByZXN1bHQuZGF0YURldGVjdG9yUmVzdWx0cyA9IFdURk1vdmUoKmRhdGFE
ZXRlY3RvclJlc3VsdHMpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQppbmRleCA4ZTM2OTY1MjMw
NTc2ODY4ZDQ5NWRkYjk2Yjg2MDA2OTcyYWU0YzY2Li41ZmRhN2JmNjZjOWMyMjRjMjI5NTczOGU4
NDhlMWRlYmZiY2NlNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogCiAjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCisj
aW1wb3J0ICJBcmd1bWVudENvZGVyc0NvY29hLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW1wb3J0IDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5oPgogI2ltcG9ydCA8V2ViQ29yZS9D
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaD4KQEAgLTQzMSwyNiArNDMyLDE2IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPjo6ZGVjb2RlUGxhdGZvcm1EYXRh
KERlY29kZXImIGRlY29kZXIsCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQcm90ZWN0
aW9uU3BhY2U+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2Vi
Q29yZTo6UHJvdGVjdGlvblNwYWNlJiBzcGFjZSkKIHsKLSAgICBhdXRvIGFyY2hpdmVyID0gc2Vj
dXJlQXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnNwYWNlLm5zU3BhY2Uo
KSBmb3JLZXk6QCJwcm90ZWN0aW9uU3BhY2UiXTsKLSAgICBJUEM6OmVuY29kZShlbmNvZGVyLCAo
X19icmlkZ2UgQ0ZEYXRhUmVmKWFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKTsKKyAgICBlbmNv
ZGVyIDw8IHNwYWNlLm5zU3BhY2UoKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlByb3RlY3Rpb25TcGFjZT46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBX
ZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIHNwYWNlKQogewotICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGRhdGE7Ci0gICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRhKSkKKyAgICBhdXRv
IHBsYXRmb3JtRGF0YSA9IElQQzo6ZGVjb2RlPE5TVVJMUHJvdGVjdGlvblNwYWNlPihkZWNvZGVy
KTsKKyAgICBpZiAoIXBsYXRmb3JtRGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
YXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKChfX2JyaWRnZSBOU0Rh
dGEgKilkYXRhLmdldCgpKTsKLSAgICBAdHJ5IHsKLSAgICAgICAgaWYgKFJldGFpblB0cjxOU1VS
TFByb3RlY3Rpb25TcGFjZT4gbnNTcGFjZSA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xh
c3M6W05TVVJMUHJvdGVjdGlvblNwYWNlIGNsYXNzXSBmb3JLZXk6QCJwcm90ZWN0aW9uU3BhY2Ui
XSkKLSAgICAgICAgICAgIHNwYWNlID0gV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlKG5zU3BhY2Uu
Z2V0KCkpOwotICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBOU1VSTFByb3RlY3Rpb25TcGFjZTogJUAiLCBl
eGNlcHRpb24pOwotICAgIH0KLQotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAg
ICBzcGFjZSA9IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSB7IHBsYXRmb3JtRGF0YS0+Z2V0KCkg
fTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDc0LDEwICs0NjUsNyBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6Q3JlZGVudGlhbD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVy
JiBlbmNvZGVyLCBjbwogICAgIH0KIAogICAgIGVuY29kZXIgPDwgZmFsc2U7Ci0KLSAgICBhdXRv
IGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKLSAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0
Om5zQ3JlZGVudGlhbCBmb3JLZXk6QCJjcmVkZW50aWFsIl07Ci0gICAgSVBDOjplbmNvZGUoZW5j
b2RlciwgKF9fYnJpZGdlIENGRGF0YVJlZilhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7Cisg
ICAgZW5jb2RlciA8PCBuc0NyZWRlbnRpYWw7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpDcmVkZW50aWFsPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFdl
YkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCkBAIC01MDksMTkgKzQ5NywxMSBAQCBib29s
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q3JlZGVudGlhbD46OmRlY29kZVBsYXRmb3JtRGF0YShE
ZWNvZGVyJiBkZWNvZGVyLCBXZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwotICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2Rlciwg
ZGF0YSkpCisgICAgYXV0byBuc0NyZWRlbnRpYWwgPSBJUEM6OmRlY29kZTxOU1VSTENyZWRlbnRp
YWw+KGRlY29kZXIpOworICAgIGlmICghbnNDcmVkZW50aWFsKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoKF9f
YnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwotICAgIEB0cnkgewotICAgICAgICBpZiAoUmV0
YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gbnNDcmVkZW50aWFsID0gW3VuYXJjaGl2ZXIgZGVjb2Rl
T2JqZWN0T2ZDbGFzczpbTlNVUkxDcmVkZW50aWFsIGNsYXNzXSBmb3JLZXk6QCJjcmVkZW50aWFs
Il0pCi0gICAgICAgICAgICBjcmVkZW50aWFsID0gV2ViQ29yZTo6Q3JlZGVudGlhbChuc0NyZWRl
bnRpYWwuZ2V0KCkpOwotICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBOU1VSTENyZWRlbnRpYWw6ICVAIiwg
ZXhjZXB0aW9uKTsKLSAgICB9Ci0KLSAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107Cisg
ICAgY3JlZGVudGlhbCA9IFdlYkNvcmU6OkNyZWRlbnRpYWwgeyBuc0NyZWRlbnRpYWwtPmdldCgp
IH07CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTU5OCwyMCArNTc4LDEwIEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQog
Ci1zdGF0aWMgTlNTdHJpbmcgKmRldmljZUNvbnRleHRLZXkoKQotewotICAgIHN0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IGtleSA9IEAiZGV2aWNlQ29udGV4dCI7Ci0gICAgcmV0dXJuIGtleTsKLX0K
LQogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCiB7Ci0gICAgYXV0byBhcmNoaXZlciA9
IHNlY3VyZUFyY2hpdmVyKCk7Ci0KICAgICBpZiAoW2dldEFWT3V0cHV0Q29udGV4dENsYXNzKCkg
Y29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQotICAgICAgICBb
YXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnRhcmdldC5hdk91dHB1dENvbnRleHQoKSBmb3JLZXk6ZGV2
aWNlQ29udGV4dEtleSgpXTsKLQotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIChfX2JyaWRnZSBD
RkRhdGFSZWYpYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGEpOworICAgICAgICBlbmNvZGVyIDw8
IHRhcmdldC5hdk91dHB1dENvbnRleHQoKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29k
ZXImIGRlY29kZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQp
CkBAIC02MTksMjMgKzU4OSwxMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjbwogICAgIGlmICgh
W2dldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChO
U1NlY3VyZUNvZGluZyldKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBkYXRhOwotICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJj
aGl2ZXJGcm9tRGF0YSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7Ci0KLSAgICBBVk91
dHB1dENvbnRleHQgKmNvbnRleHQgPSBuaWw7Ci0gICAgQHRyeSB7Ci0gICAgICAgIGNvbnRleHQg
PSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldEFWT3V0cHV0Q29udGV4dENsYXNz
KCkgZm9yS2V5OmRldmljZUNvbnRleHRLZXkoKV07Ci0gICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9u
ICpleGNlcHRpb24pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJUaGUgdGFyZ2V0IHBpY2tlciBiZWlu
ZyBkZWNvZGVkIGlzIG5vdCBhbiBBVk91dHB1dENvbnRleHQuIik7CisgICAgYXV0byBjb250ZXh0
ID0gSVBDOjpkZWNvZGU8QVZPdXRwdXRDb250ZXh0PihkZWNvZGVyLCBnZXRBVk91dHB1dENvbnRl
eHRDbGFzcygpKTsKKyAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9CiAKLSAgICB0YXJnZXQgPSBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChj
b250ZXh0KTsKLSAgICAKLSAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgdGFy
Z2V0ID0gV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgeyBjb250ZXh0LT5nZXQo
KSB9OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0KaW5kZXggNTg4YzVlNTE4YTI0OTdmMzU4ZjRiODJj
YmFhYzk0MThkOWFkMTBjMC4uNTg4MTM0M2U4YjUwMDQxNmY1MmQ1ZGZjNzQyN2NlNDE4NmQ1NDlk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkhpdFRlc3RSZXN1bHRE
YXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0
YS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ1LDEwICs0NSw3IEBAIHZvaWQgV2ViSGl0VGVzdFJlc3VsdERhdGE6OnBsYXRm
b3JtRW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBpZiAoIWhhc0FjdGlv
bkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVB
cmNoaXZlcigpOwotICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6ZGV0ZWN0ZWREYXRhQWN0aW9u
Q29udGV4dC5nZXQoKSBmb3JLZXk6QCJhY3Rpb25Db250ZXh0Il07Ci0KLSAgICBJUEM6OmVuY29k
ZShlbmNvZGVyLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKWFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRh
KTsKKyAgICBlbmNvZGVyIDw8IGRldGVjdGVkRGF0YUFjdGlvbkNvbnRleHQ7CiAKICAgICBlbmNv
ZGVyIDw8IGRldGVjdGVkRGF0YUJvdW5kaW5nQm94OwogICAgIGVuY29kZXIgPDwgZGV0ZWN0ZWRE
YXRhT3JpZ2luYXRpbmdQYWdlT3ZlcmxheTsKQEAgLTY5LDE5ICs2NiwxMSBAQCBib29sIFdlYkhp
dFRlc3RSZXN1bHREYXRhOjpwbGF0Zm9ybURlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdl
YkhpdFRlc3RSZXN1bAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBBU1NFUlQoRGF0YURldGVj
dG9yc0xpYnJhcnkoKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwotICAgIGlm
ICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCisgICAgYXV0byBkZXRlY3RlZERhdGFBY3Rp
b25Db250ZXh0ID0gSVBDOjpkZWNvZGU8RERBY3Rpb25Db250ZXh0PihkZWNvZGVyLCBnZXREREFj
dGlvbkNvbnRleHRDbGFzcygpKTsKKyAgICBpZiAoIWRldGVjdGVkRGF0YUFjdGlvbkNvbnRleHQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVu
YXJjaGl2ZXJGcm9tRGF0YSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7Ci0gICAgQHRy
eSB7Ci0gICAgICAgIGhpdFRlc3RSZXN1bHREYXRhLmRldGVjdGVkRGF0YUFjdGlvbkNvbnRleHQg
PSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldEREQWN0aW9uQ29udGV4dENsYXNz
KCkgZm9yS2V5OkAiYWN0aW9uQ29udGV4dCJdOwotICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAq
ZXhjZXB0aW9uKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBEREFjdGlv
bkNvbnRleHQ6ICVAIiwgZXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICAKLSAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgaGl0VGVzdFJlc3Vs
dERhdGEuZGV0ZWN0ZWREYXRhQWN0aW9uQ29udGV4dCA9IFdURk1vdmUoKmRldGVjdGVkRGF0YUFj
dGlvbkNvbnRleHQpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0RGF0
YS5kZXRlY3RlZERhdGFCb3VuZGluZ0JveCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dAppbmRleCA2YWM4ZmVjMTZjZTkyZWJmYTcxNmRlMzJiYTA0NTc5YWZkMjM3
NTdmLi44NjQzZGFlNmJlNDM2YjhlZmNmNzljMTAxNTA4ZjI1NjViNDJhMzFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC0xMjIsNiArMTIyLDcgQEAgU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2Nv
Y29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCiAKIFNoYXJlZC9Db2NvYS9BUElEYXRh
Q29jb2EubW0KIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KK1NoYXJlZC9Db2NvYS9Bcmd1bWVu
dENvZGVyc0NvY29hLm1tCiBTaGFyZWQvQ29jb2EvQ2hpbGRQcm9jZXNzQ29jb2EubW0KIFNoYXJl
ZC9Db2NvYS9Db21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLm1tCiBTaGFyZWQvQ29jb2EvRGF0
YURldGVjdGlvblJlc3VsdC5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMjgxOTA2OTNkM2EzZmVmZmViMGVlY2I2NWI2ZjM0YTJiODk0
OTRiMy4uNjFkOTQ4MWY1MzJjZTc5NDNjYzllNjc0NjBiMmJiODAyMmMzNzZmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjY1LDYg
KzEyNjUsNyBAQAogCQlBMTNCM0RBMjIwN0YzOURFMDA5MEM1OEQgLyogTW9iaWxlV2lGaVNQSS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEzQjNEQTEy
MDdGMzlERTAwOTBDNThEIC8qIE1vYmlsZVdpRmlTUEkuaCAqLzsgfTsKIAkJQTEzREM2ODIyMDdB
QTZCMjAwNjZFRjcyIC8qIFdLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEzREM2ODAyMDdBQTZCMjAw
NjZFRjcyIC8qIFdLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5oICovOyB9OwogCQlBMTVF
RURFNjFFMzAxQ0VFMDAwMDY5QjAgLyogV0tQYXNzd29yZFZpZXcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNUVFREU0MUUzMDFDRUUwMDAwNjlCMCAv
KiBXS1Bhc3N3b3JkVmlldy5oICovOyB9OworCQlBMTc1QzQ0QTIxQUEzMTcxMDAwMDM3RDAgLyog
QXJndW1lbnRDb2RlcnNDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTE3NUM0NDkyMUFBMzE3MDAwMDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29j
b2EuaCAqLzsgfTsKIAkJQTE4MkQ1QjUxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2liaWxpdHlJ
T1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODJE
NUIzMUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggKi87IH07CiAJCUExOURE
M0MwMUQwN0QxNjgwMEFDODIzQiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE5REQzQkYx
RDA3RDE2ODAwQUM4MjNCIC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlckludGVybmFsLmggKi87
IH07CiAJCUExQTRGRTVBMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFBNEZFNTcxOERDRTlGQTAw
QjVFQThBIC8qIF9XS0Rvd25sb2FkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTM4MTksNiArMzgyMCw4IEBACiAJCUExM0RDNjgxMjA3QUE2QjIw
MDY2RUY3MiAvKiBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW07IHBhdGggPSBpb3Mv
V0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMTVFRURFMzFFMzAxQ0VFMDAwMDY5QjAgLyogV0tQYXNzd29yZFZpZXcubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1Bhc3N3b3JkVmlldy5tbTsg
cGF0aCA9IGlvcy9XS1Bhc3N3b3JkVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTE1RUVERTQxRTMwMUNFRTAwMDA2OUIwIC8qIFdLUGFzc3dvcmRWaWV3LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUGFzc3dvcmRWaWV3Lmg7IHBhdGggPSBpb3MvV0tQ
YXNzd29yZFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3NUM0NDkyMUFB
MzE3MDAwMDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXJndW1lbnRDb2RlcnNDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBMTc1QzQ0QjIxQUEzMzFCMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFyZ3VtZW50Q29kZXJzQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExODJENUIyMUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nl
c3NpYmlsaXR5SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
QWNjZXNzaWJpbGl0eUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE4MkQ1
QjMxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2liaWxpdHlJT1MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMTlERDNCRjFEMDdEMTY4MDBBQzgyM0IgLyogX1dLV2ViVmlld1ByaW50Rm9y
bWF0dGVySW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTYxNzAsNiArNjE3Myw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxQTFFRjE5NzFBMUQ1
QjQyMDAyMzIwMEEgLyogQVBJRGF0YUNvY29hLm1tICovLAogCQkJCTM3OEUxQTNCMTgxRUQ2RkYw
MDMxMDA3QSAvKiBBUElPYmplY3QubW0gKi8sCisJCQkJQTE3NUM0NDkyMUFBMzE3MDAwMDAzN0Qw
IC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EuaCAqLywKKwkJCQlBMTc1QzQ0QjIxQUEzMzFCMDAwMDM3
RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5tbSAqLywKIAkJCQkxQTY5OEYxNzFFNDkxMDIyMDA2
NEU4ODEgLyogQ2hpbGRQcm9jZXNzQ29jb2EubW0gKi8sCiAJCQkJMzdCRUM0REYxOTQ5MTQ4NjAw
OEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCAqLywKIAkJCQkzN0JFQzRE
RTE5NDkxNDg2MDA4QjQyODYgLyogQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5tbSAqLywK
QEAgLTg4NzUsNyArODg4MCw2IEBACiAJCQkJN0E4QTlENUExRUYxMzAyOTAwOTgwMUFFIC8qIEFQ
SUluamVjdGVkQnVuZGxlQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QThBOUQ1
ODFFRjExOUIwMDA5ODAxQUUgLyogQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTM3NzUxMjMxMURGMERFRTIwMDhBMzUxQyAvKiBBUElJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTRFNTdGNkIyMUE4M0IxMjAwMzQ1RjND
IC8qIFJlbW90ZUxheWVyVHJlZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjkwNzlFMThG
MzQwQTIwMDFERkYwNCAvKiBBUElJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdBM0FDRTFCMUVFRUY3OUIwMEE4NjRBNCAvKiBBUElJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBOEE5RDVDMUVGMTQ1OTgwMDk4
MDFBRSAvKiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCBpbiBIZWFk
ZXJzICovLApAQCAtODkxNiw2ICs4OTIwLDcgQEAKIAkJCQkxQUVGRDI3OTExRDE2QzgxMDA4MjE5
RDMgLyogQXJndW1lbnRDb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFRkQyRjcxMUQxODA3
QjAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFGMEM0
QTEyQjE2MzM0MDA4RTQ5RTIgLyogQXJndW1lbnRDb2RlcnNDRi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTE3NUM0NEEyMUFBMzE3MTAwMDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxNzlGRDlDMTM0RDM4MDYwMDE1Qjg4MyAvKiBBcmd1bWVudENvZGVy
c01hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxQTBCRDIxQTQ4RTZDNjAwNTRFRjc0IC8qIEFz
c2VydGlvblNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTlDNEE1OTE4QjgxMTc0
MDA3QkRDQjYgLyogQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAt
OTIxNyw2ICs5MjIyLDcgQEAKIAkJCQkxQUIxNkFFMjE2NDg2NTZEMDAyOTBENjIgLyogUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGMjRBMkUx
ODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBM0Q3NUMxNjUxQjQ0RjAwODcxM0QwIC8qIFJlbW90
ZUxheWVyVHJlZUhvc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RTU3RjZCMjFBODNCMTIwMDM0
NUYzQyAvKiBSZW1vdGVMYXllclRyZWVOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRERFMEFG
QTE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkYyNjRBMDFBMUZGOUNDMDAxRkU3NTkgLyogUmVtb3RlTGF5ZXJU
cmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUYxQUM2
QzE2NTE3NTlFMDBDMTdEN0YgLyogUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>