<?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>196644</bug_id>
          
          <creation_ts>2019-04-05 08:10:59 -0700</creation_ts>
          <short_desc>Combine event and touch action regions into a single class</short_desc>
          <delta_ts>2019-04-06 09:49:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Scrolling</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>graouts</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1524693</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-04-05 08:10:59 -0700</bug_when>
    <thetext>They are closely related, this avoid duplication.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524694</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-05 08:11:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/49643614&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524702</commentid>
    <comment_count>2</comment_count>
      <attachid>366815</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-04-05 08:27:22 -0700</bug_when>
    <thetext>Created attachment 366815
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524707</commentid>
    <comment_count>3</comment_count>
      <attachid>366816</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-04-05 08:51:33 -0700</bug_when>
    <thetext>Created attachment 366816
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524716</commentid>
    <comment_count>4</comment_count>
      <attachid>366816</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-04-05 09:28:48 -0700</bug_when>
    <thetext>Comment on attachment 366816
patch

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

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h:127
&gt; +    WEBCORE_EXPORT void setEventRegion(EventRegion&amp;&amp;) override;

Kind of surprised that these are override and not final. Maybe still a confusing area of C++ for our coding conventions?

&gt; Source/WebCore/rendering/EventRegion.cpp:112
&gt; +        if (m_touchActionRegions.size() &lt; index + 1)
&gt; +            m_touchActionRegions.grow(index + 1);

Not new: Seems like Vector should have this operation instead of it being two function calls.

&gt; Source/WebCore/rendering/EventRegion.cpp:132
&gt;              if (action == TouchAction::None || action == TouchAction::Manipulation)

Not new: Does this require that &quot;none&quot; and &quot;manipulation&quot; be earlier in the enumeration than any other actions? If so, then maybe static_assert that here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525021</commentid>
    <comment_count>5</comment_count>
      <attachid>366887</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-04-06 07:24:40 -0700</bug_when>
    <thetext>Created attachment 366887
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525022</commentid>
    <comment_count>6</comment_count>
      <attachid>366887</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-06 09:49:04 -0700</bug_when>
    <thetext>Comment on attachment 366887
patch

Clearing flags on attachment: 366887

Committed r243962: &lt;https://trac.webkit.org/changeset/243962&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525023</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-06 09:49:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366815</attachid>
            <date>2019-04-05 08:27:22 -0700</date>
            <delta_ts>2019-04-05 08:51:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>event-region-class.patch</filename>
            <type>text/plain</type>
            <size>61861</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE5LTA0LTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDb21iaW5lIGV2ZW50IGFuZCB0
b3VjaCBhY3Rpb24gcmVnaW9ucyBpbnRvIGEgc2luZ2xlIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY2NDQKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ5NjQzNjE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggcmVwbGFjZXMgdGhlIGV4aXN0aW5nIFRvdWNoQWN0aW9uUmVn
aW9uIGNsYXNzIHdpdGggdGhlIG1vcmUgZ2VuZXJhbCBFdmVudFJlZ2lvbiBjbGFzcy4KKyAgICAg
ICAgSXQgY29sbGVjdHMgYm90aCB0aGUgb3ZlcmFsbCBldmVudCByZWdpb24gYW5kIHRoZSB0b3Vj
aCBhY3Rpb24gcmVnaW9ucy4KKworICAgICAgICBUaGlzIGF2b2lkcyBjb2RlIGR1cGxpY2F0aW9u
IGFuZCBzaW1wbGlmaWVzIHRoZSBjb2RlLgorICAgICAgICBUaGUgcGF0Y2ggYWxzbyBhZGRzIHNl
cmlhbGl6YXRpb24gc3VwcG9ydCBmb3IgdGhlIHR5cGUuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpzZXRFdmVudFJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyOjpkdW1wUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyOjpzZXRUb3VjaEFjdGlvblJlZ2lvbik6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6ZXZlbnRSZWdpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllcjo6dG91Y2hBY3Rpb25SZWdpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRFdmVudFJlZ2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldFRvdWNoQWN0aW9uUmVnaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9FdmVudFJlZ2lvbi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9Ub3VjaEFjdGlvblJlZ2lvbi5jcHAuCisgICAgICAgIChXZWJDb3JlOjpF
dmVudFJlZ2lvbjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFJl
Z2lvbjo6dW5pdGUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246OnRyYW5zbGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudFJlZ2lvbjo6dW5pdGVUb3VjaEFjdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246OnRvdWNoQWN0aW9uc0ZvclBvaW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hB
Y3Rpb25SZWdpb246OnVuaXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoQWN0
aW9uUmVnaW9uOjphY3Rpb25zRm9yUG9pbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VG91Y2hBY3Rpb25SZWdpb246OnRyYW5zbGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICog
cmVuZGVyaW5nL0V2ZW50UmVnaW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Ub3VjaEFjdGlvblJlZ2lvbi5oLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246
OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246OmNvbnRhaW5z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UmVnaW9uOjpoYXNUb3VjaEFjdGlvbnMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudFJlZ2lvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRvdWNoQWN0aW9uUmVnaW9uOjppc0VtcHR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlRvdWNoQWN0aW9uUmVnaW9uOjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1BhaW50SW5mby5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6cGFpbnRPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29sbGVjdEV2ZW50UmVnaW9u
Rm9yRnJhZ21lbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlRXZlbnRSZWdpb24pOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5l
TGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9Ub3VjaEFjdGlvblJlZ2lv
bi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1RvdWNoQWN0aW9uUmVnaW9uLmg6
IFJlbW92ZWQuCisKIDIwMTktMDQtMDUgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNDM4ODcpOiBUcnkgdG8gZml4IFdpbmRvd3MgYnVp
bGRzIGJ5IGluY2x1ZGluZyA8d3RmL0lzb01hbGxvYy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJl
dmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xOTUwLDYgKzE5NTAsNyBAQCByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAogcmVuZGVy
aW5nL0NsaXBSZWN0LmNwcAogcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcAogcmVuZGVyaW5nL0Vs
bGlwc2lzQm94LmNwcAorcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmNwcAogcmVuZGVyaW5nL0ZsZXhp
YmxlQm94QWxnb3JpdGhtLmNwcAogcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCiByZW5k
ZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcApAQCAtMjA2OCw3ICsyMDY5LDYgQEAgcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdAogcmVuZGVyaW5nL1RleHREZWNvcmF0aW9u
UGFpbnRlci5jcHAKIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKIHJlbmRlcmluZy9UZXh0
UGFpbnRlci5jcHAKLXJlbmRlcmluZy9Ub3VjaEFjdGlvblJlZ2lvbi5jcHAKIHJlbmRlcmluZy9U
cmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guY3BwCiAKIHJlbmRlcmluZy9saW5lL0xpbmVCcmVh
a2VyLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQzOTMxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00ODIyLDcgKzQ4
MjIsNyBAQAogCQlFNEE4MTRENDFDNkRFQzQwMDBCRjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
QTgxNEQzMUM2REVDNDAwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oICovOyB9
OwogCQlFNEE4MTREQTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEE4
MTREOTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmggKi87
IH07CiAJCUU0QTgxNEUwMUM3MzM4RUIwMEJGODVBQyAvKiBJZENoYW5nZUludmFsaWRhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBODE0REYx
QzczMzhFQjAwQkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi87IH07Ci0JCUU0QThE
MjEwMjI1MzhGRDIwMEE4NDYzQyAvKiBUb3VjaEFjdGlvblJlZ2lvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBOEQyMEYyMjUzOEZEMTAwQTg0NjND
IC8qIFRvdWNoQWN0aW9uUmVnaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRTRBOEQyMTYyMjU3OERCNzAwQTg0NjNDIC8qIEV2ZW50UmVnaW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEE4RDIx
NDIyNTc4REEwMDBBODQ2M0MgLyogRXZlbnRSZWdpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEFFN0MxNjE3RDFCQjk1MDAwOUZCMzEgLyog
RWxlbWVudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNEFFN0MxNTE3RDFCQjk1MDAwOUZCMzEgLyogRWxlbWVudEl0ZXJhdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTRBRTdDMUEx
N0QyMzIzNTAwMDlGQjMxIC8qIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEFFN0MxOTE3RDIzMjM1MDAwOUZC
MzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEFGQ0ZBNTBEQUYyOUEzMDBGNUY1NUMgLyogVW5p
dEJlemllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTRBRkNGQTQwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCAqLzsgfTsKQEAgLTE0ODg0
LDggKzE0ODg0LDggQEAKIAkJRTRBODE0RDkxQzcwRTEwRDAwQkY4NUFDIC8qIEF0dHJpYnV0ZUNo
YW5nZUludmFsaWRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdHRy
aWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTRBODE0REQxQzczMzhEMTAwQkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElkQ2hhbmdlSW52YWxpZGF0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBODE0REYxQzczMzhFQjAwQkY4NUFD
IC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IElkQ2hhbmdlSW52YWxpZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUU0QThEMjBDMjI1MzhGQzcwMEE4NDYzQyAvKiBUb3VjaEFjdGlvblJlZ2lvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUb3VjaEFjdGlvblJlZ2lvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUU0QThEMjBGMjI1MzhGRDEwMEE4NDYzQyAvKiBU
b3VjaEFjdGlvblJlZ2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUb3Vj
aEFjdGlvblJlZ2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEE4RDIxNDIy
NTc4REEwMDBBODQ2M0MgLyogRXZlbnRSZWdpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRXZlbnRSZWdpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRB
OEQyMTUyMjU3OERBMDAwQTg0NjNDIC8qIEV2ZW50UmVnaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50UmVnaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTRBRTdDMTUxN0QxQkI5NTAwMDlGQjMxIC8qIEVsZW1lbnRJdGVyYXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50SXRlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBRTdDMTkxN0QyMzIzNTAwMDlGQjMxIC8qIEVs
ZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUU0QUZDRkE0MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFVuaXRCZXppZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI2ODAxLDYgKzI2ODAxLDggQEAKIAkJCQkwRjUzRkI4MzIxM0IxQkI4MDBDNDBEMzQg
LyogQ1NTRmlsdGVyLmggKi8sCiAJCQkJQThDRkY2Q0EwQTE1NjFDRDAwMEE0MjM0IC8qIEVsbGlw
c2lzQm94LmNwcCAqLywKIAkJCQlBOENGRjZCRDBBMTU2MTE4MDAwQTQyMzQgLyogRWxsaXBzaXNC
b3guaCAqLywKKwkJCQlFNEE4RDIxNTIyNTc4REEwMDBBODQ2M0MgLyogRXZlbnRSZWdpb24uY3Bw
ICovLAorCQkJCUU0QThEMjE0MjI1NzhEQTAwMEE4NDYzQyAvKiBFdmVudFJlZ2lvbi5oICovLAog
CQkJCUE4Q0ZGMDQ4MEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0LmNwcCAqLywK
IAkJCQlBOENGRjA0QTBBMTU0RjA5MDAwQTQyMzQgLyogRml4ZWRUYWJsZUxheW91dC5oICovLAog
CQkJCTk0REQ3OTcyMUU1NEUzQTIwMDU4RkI4MCAvKiBGbGV4aWJsZUJveEFsZ29yaXRobS5jcHAg
Ki8sCkBAIC0yNzA1Nyw4ICsyNzA1OSw2IEBACiAJCQkJMUMxOERBNTcxODFBRjZBNTAwQzRFRjIy
IC8qIFRleHRQYWludGVyLmggKi8sCiAJCQkJRTRDOTFBMEYxODAyMzQzOTAwQTE3RjZEIC8qIFRl
eHRQYWludFN0eWxlLmNwcCAqLywKIAkJCQlFNEM5MUEwRDE4MDIzNDMxMDBBMTdGNkQgLyogVGV4
dFBhaW50U3R5bGUuaCAqLywKLQkJCQlFNEE4RDIwQzIyNTM4RkM3MDBBODQ2M0MgLyogVG91Y2hB
Y3Rpb25SZWdpb24uY3BwICovLAotCQkJCUU0QThEMjBGMjI1MzhGRDEwMEE4NDYzQyAvKiBUb3Vj
aEFjdGlvblJlZ2lvbi5oICovLAogCQkJCTExMDBGQzZFMUZEQjNDNEQwMEREOTYxQiAvKiBUcmFp
bGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guY3BwICovLAogCQkJCTM3RkM5NkRBMTEwNEVENzEwMDNF
MUZBRCAvKiBUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaCAqLywKIAkJCQlCQ0EyNTcxNDEy
OTNDMDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggKi8sCkBAIC0yOTUwMCw3
ICsyOTUwMCw2IEBACiAJCQkJRkRBMTVFQTgxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9EZXN0
aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUFFMTJCMDNFRTEwMDNBNTgz
QSAvKiBKU0F1ZGlvTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUIwMTJCMDNF
RTEwMDNBNTgzQSAvKiBKU0F1ZGlvTm9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTRBOEQyMTAy
MjUzOEZEMjAwQTg0NjNDIC8qIFRvdWNoQWN0aW9uUmVnaW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGREExNUVCNDEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1BhcmFtLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGREExNUVCNjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1Byb2Nlc3NpbmdFdmVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU4RUYwNDMxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVk
aW9UcmFjay5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTc4Niw2ICsyOTc4NSw3IEBACiAJCQkJRTQ0
NjE0M0EwQ0Q2ODlDODAwRkFEQTc1IC8qIEpTSFRNTE1lZGlhRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFFMkFFNUMwQTFEMjZGMjAwQjQyQjI1IC8qIEpTSFRNTE1lbnVFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBODBFN0ExODBBMTlDM0Q2MDA3RkI4QzUgLyogSlNIVE1MTWV0
YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0QThEMjE2MjI1NzhEQjcwMEE4NDYzQyAv
KiBFdmVudFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCQkUyNjcxMUFGQjNGMjAwMDVF
QTAzIC8qIEpTSFRNTE1ldGVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMkFCMkEw
QTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTE1vZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMzA1QzdBMEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuY3BwCShyZXZpc2lvbiAyNDM5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEx
LDE4ICs0MTEsMTEgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpzZXRTaGFwZUxheWVyV2luZFJ1bAog
I2VuZGlmCiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllcjo6c2V0RXZlbnRSZWdpb24oUmVnaW9uJiYg
ZXZlbnRSZWdpb24pCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldEV2ZW50UmVnaW9uKEV2ZW50UmVn
aW9uJiYgZXZlbnRSZWdpb24pCiB7CiAgICAgbV9ldmVudFJlZ2lvbiA9IFdURk1vdmUoZXZlbnRS
ZWdpb24pOwogfQogCi0jaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQotdm9pZCBHcmFwaGljc0xh
eWVyOjpzZXRUb3VjaEFjdGlvblJlZ2lvbihUb3VjaEFjdGlvblJlZ2lvbiYmIHRvdWNoQWN0aW9u
UmVnaW9uKQotewotICAgIG1fdG91Y2hBY3Rpb25SZWdpb24gPSBXVEZNb3ZlKHRvdWNoQWN0aW9u
UmVnaW9uKTsKLX0KLSNlbmRpZgotCiB2b2lkIEdyYXBoaWNzTGF5ZXI6Om5vdGVEZXZpY2VPclBh
Z2VTY2FsZUZhY3RvckNoYW5nZWRJbmNsdWRpbmdEZXNjZW5kYW50cygpCiB7CiAgICAgZGV2aWNl
T3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CkBAIC05MzMsMTMgKzkyNiw5IEBAIHZvaWQgR3Jh
cGhpY3NMYXllcjo6ZHVtcFByb3BlcnRpZXMoVGV4dFMKICAgICAgICAgdHMgPDwgaW5kZW50IDw8
ICIpXG4iOwogICAgIH0KIAotICAgIGlmIChiZWhhdmlvciAmIExheWVyVHJlZUFzVGV4dEluY2x1
ZGVFdmVudFJlZ2lvbikgewotICAgICAgICBpZiAoIW1fZXZlbnRSZWdpb24uaXNFbXB0eSgpKQot
ICAgICAgICAgICAgdHMgPDwgaW5kZW50IDw8ICIoZXZlbnQgcmVnaW9uIiA8PCBtX2V2ZW50UmVn
aW9uIDw8ICIpXG4iOwotI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLSAgICAgICAgaWYgKCFt
X3RvdWNoQWN0aW9uUmVnaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRzIDw8IGluZGVudCA8
PCAiKHRvdWNoLWFjdGlvbiByZWdpb24iIDw8IG1fdG91Y2hBY3Rpb25SZWdpb24gPDwgIilcbiI7
Ci0jZW5kaWYKKyAgICBpZiAoYmVoYXZpb3IgJiBMYXllclRyZWVBc1RleHRJbmNsdWRlRXZlbnRS
ZWdpb24gJiYgIW1fZXZlbnRSZWdpb24uaXNFbXB0eSgpKSB7CisgICAgICAgIHRzIDw8IGluZGVu
dCA8PCAiKGV2ZW50IHJlZ2lvbiIgPDwgbV9ldmVudFJlZ2lvbjsKKyAgICAgICAgdHMgPDwgaW5k
ZW50IDw8ICIpXG4iOwogICAgIH0KIAogICAgIGlmIChiZWhhdmlvciAmIExheWVyVHJlZUFzVGV4
dEluY2x1ZGVQYWludGluZ1BoYXNlcyAmJiBwYWludGluZ1BoYXNlKCkpIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHJldmlz
aW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQW5p
bWF0aW9uLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJFdmVudFJlZ2lvbi5oIgog
I2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAj
aW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCkBAIC0zNyw3ICszOCw2IEBACiAjaW5jbHVkZSAiUGxh
dGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVB
cmVhLmgiCi0jaW5jbHVkZSAiVG91Y2hBY3Rpb25SZWdpb24uaCIKICNpbmNsdWRlICJUcmFuc2Zv
cm1PcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KQEAgLTQ1NCwxMiArNDU0LDkgQEAgcHVibGljOgogICAgIFdpbmRSdWxlIHNoYXBl
TGF5ZXJXaW5kUnVsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaGFwZUxheWVyV2lu
ZFJ1bGUoV2luZFJ1bGUpOwogCi0gICAgY29uc3QgUmVnaW9uJiBldmVudFJlZ2lvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZXZlbnRSZWdpb247IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RXZlbnRSZWdp
b24oUmVnaW9uJiYpOwotI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLSAgICBjb25zdCBUb3Vj
aEFjdGlvblJlZ2lvbiYgdG91Y2hBY3Rpb25SZWdpb24oKSBjb25zdCB7IHJldHVybiBtX3RvdWNo
QWN0aW9uUmVnaW9uOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFRvdWNoQWN0aW9uUmVnaW9uKFRv
dWNoQWN0aW9uUmVnaW9uJiYpOwotI2VuZGlmCisgICAgY29uc3QgRXZlbnRSZWdpb24mIGV2ZW50
UmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFJlZ2lvbjsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzZXRFdmVudFJlZ2lvbihFdmVudFJlZ2lvbiYmKTsKKwogICAgIC8vIFRyYW5zaXRpb25zIGFy
ZSBpZGVudGlmaWVkIGJ5IGEgc3BlY2lhbCBhbmltYXRpb24gbmFtZSB0aGF0IGNhbm5vdCBjbGFz
aCB3aXRoIGEga2V5ZnJhbWUgaWRlbnRpZmllci4KICAgICBzdGF0aWMgU3RyaW5nIGFuaW1hdGlv
bk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlJRCk7CiAKQEAgLTczNCwxMCArNzMx
LDcgQEAgcHJvdGVjdGVkOgogICAgIEZsb2F0Um91bmRlZFJlY3QgbV9iYWNrZHJvcEZpbHRlcnNS
ZWN0OwogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbV9hbmltYXRpb25FeHRlbnQ7CiAKLSAgICBS
ZWdpb24gbV9ldmVudFJlZ2lvbjsKLSNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCi0gICAgVG91
Y2hBY3Rpb25SZWdpb24gbV90b3VjaEFjdGlvblJlZ2lvbjsKLSNlbmRpZgorICAgIEV2ZW50UmVn
aW9uIG1fZXZlbnRSZWdpb247CiAjaWYgVVNFKENBKQogICAgIFdpbmRSdWxlIG1fc2hhcGVMYXll
cldpbmRSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKICAgICBQYXRoIG1fc2hhcGVMYXllclBh
dGg7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAJ
KHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
Z2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1OSw3ICs2NTksNiBAQCBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjCiAgICAgICAgIGZvciAoYXV0byYgcmVjdCA6IHJl
Z2lvbi5yZWN0cygpKQogICAgICAgICAgICAgdHMgPDwgaW5kZW50IDw8ICIocmVjdCAiIDw8IHJl
Y3QgPDwgIilcbiI7CiAgICAgfQotICAgIHRzIDw8IGluZGVudDsKIAogICAgIHJldHVybiB0czsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAkocmV2aXNpb24gMjQzOTMxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTg0LDcgKzk4NCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRTaGFwZUxheWVy
V2luZFIKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoV2luZFJ1bGVDaGFuZ2VkKTsKIH0K
IAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEV2ZW50UmVnaW9uKFJlZ2lvbiYmIGV2ZW50UmVn
aW9uKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEV2ZW50UmVnaW9uKEV2ZW50UmVnaW9uJiYg
ZXZlbnRSZWdpb24pCiB7CiAgICAgaWYgKGV2ZW50UmVnaW9uID09IG1fZXZlbnRSZWdpb24pCiAg
ICAgICAgIHJldHVybjsKQEAgLTk5MywxNyArOTkzLDYgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6
OnNldEV2ZW50UmVnaW9uKFJlZwogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChFdmVudFJl
Z2lvbkNoYW5nZWQsIG1faXNDb21taXR0aW5nQ2hhbmdlcyA/IERvbnRTY2hlZHVsZUZsdXNoIDog
U2NoZWR1bGVGbHVzaCk7CiB9CiAKLSNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCi12b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0VG91Y2hBY3Rpb25SZWdpb24oVG91Y2hBY3Rpb25SZWdpb24mJiB0
b3VjaEFjdGlvblJlZ2lvbikKLXsKLSAgICBpZiAodG91Y2hBY3Rpb25SZWdpb24gPT0gbV90b3Vj
aEFjdGlvblJlZ2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0
VG91Y2hBY3Rpb25SZWdpb24oV1RGTW92ZSh0b3VjaEFjdGlvblJlZ2lvbikpOwotICAgIC8vIEZJ
WE1FOiBJbnZhbGlkYXRlIGFuZCBwYXNzIHRvIHBsYXRmb3JtIGxheWVyLgotfQotI2VuZGlmCi0K
IGJvb2wgR3JhcGhpY3NMYXllckNBOjpzaG91bGRSZXBhaW50T25TaXplQ2hhbmdlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gZHJhd3NDb250ZW50KCkgJiYgIXRpbGVkQmFja2luZygpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmgJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsMTAgKzEy
NCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNoYXBlTGF5ZXJQYXRo
KGNvbnN0IFBhdGgmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNoYXBl
TGF5ZXJXaW5kUnVsZShXaW5kUnVsZSkgb3ZlcnJpZGU7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEV2ZW50UmVnaW9uKFJlZ2lvbiYmKSBvdmVycmlkZTsKLSNpZiBFTkFCTEUoUE9JTlRF
Ul9FVkVOVFMpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUb3VjaEFjdGlvblJlZ2lvbihU
b3VjaEFjdGlvblJlZ2lvbiYmKSBvdmVycmlkZTsKLSNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0RXZlbnRSZWdpb24oRXZlbnRSZWdpb24mJikgb3ZlcnJpZGU7CisKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKE1vbm90b25pY1RpbWUpIG92ZXJyaWRl
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygpIG92ZXJyaWRlOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9Q
bGF0Zm9ybUNBTGF5ZXIuaAkocmV2aXNpb24gMjQzOTMxKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
NCw3ICsyMzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXaW5kUnVsZSBzaGFwZVdpbmRSdWxl
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaGFwZVdpbmRSdWxlKFdpbmRSdWxl
KSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RXZlbnRSZWdpb24oY29uc3QgUmVnaW9uJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRFdmVudFJlZ2lvbihjb25zdCBFdmVudFJlZ2lvbiYp
ID0gMDsKICAgICAKICAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2Ug
Y3VzdG9tQXBwZWFyYW5jZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ3Vz
dG9tQXBwZWFyYW5jZShHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlKSA9IDA7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5
ZXJDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNv
Y29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAgR3Jh
cGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBjdXN0b21BcHBlYXJhbmNlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9jdXN0b21BcHBlYXJhbmNlOyB9CiAgICAgdm9pZCB1cGRhdGVDdXN0
b21BcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UpIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCBzZXRFdmVudFJlZ2lvbihjb25zdCBSZWdpb24mKSBvdmVycmlkZSB7IH0KKyAg
ICB2b2lkIHNldEV2ZW50UmVnaW9uKGNvbnN0IEV2ZW50UmVnaW9uJikgb3ZlcnJpZGUgeyB9CiAK
ICAgICBHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCgpIGNvbnN0
IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oCShyZXZpc2lvbiAyNDM5
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1D
QUxheWVyV2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAg
ICAgR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBjdXN0b21BcHBlYXJhbmNlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jdXN0b21BcHBlYXJhbmNlOyB9CiAgICAgdm9pZCB1cGRh
dGVDdXN0b21BcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UgY3VzdG9t
QXBwZWFyYW5jZSkgb3ZlcnJpZGUgeyBtX2N1c3RvbUFwcGVhcmFuY2UgPSBjdXN0b21BcHBlYXJh
bmNlOyB9CiAKLSAgICB2b2lkIHNldEV2ZW50UmVnaW9uKGNvbnN0IFJlZ2lvbiYpIG92ZXJyaWRl
IHsgfQorICAgIHZvaWQgc2V0RXZlbnRSZWdpb24oY29uc3QgRXZlbnRSZWdpb24mKSBvdmVycmlk
ZSB7IH0KIAogICAgIEdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lE
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVu
dFJlZ2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50
UmVnaW9uLmNwcAkocmV2aXNpb24gMjQzOTMxKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVG91Y2hBY3Rpb25SZWdpb24uY3BwOjI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9FdmVudFJlZ2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVG91Y2hBY3Rpb25SZWdp
b24uaCIKKworI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjb25zdGV4cHIgdW5zaWduZWQgdG9JbmRleChUb3VjaEFjdGlvbiB0b3VjaEFjdGlvbikK
K3sKKyAgICBzd2l0Y2ggKHRvdWNoQWN0aW9uKSB7CisgICAgY2FzZSBUb3VjaEFjdGlvbjo6Tm9u
ZToKKyAgICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBUb3VjaEFjdGlvbjo6TWFuaXB1bGF0aW9u
OgorICAgICAgICByZXR1cm4gMTsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpQYW5YOgorICAgICAg
ICByZXR1cm4gMjsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpQYW5ZOgorICAgICAgICByZXR1cm4g
MzsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpQaW5jaFpvb206CisgICAgICAgIHJldHVybiA0Owor
ICAgIGNhc2UgVG91Y2hBY3Rpb246OkF1dG86CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworY29uc3RleHByIFRvdWNo
QWN0aW9uIHRvVG91Y2hBY3Rpb24odW5zaWduZWQgaW5kZXgpCit7CisgICAgc3dpdGNoIChpbmRl
eCkgeworICAgIGNhc2UgMDoKKyAgICAgICAgcmV0dXJuIFRvdWNoQWN0aW9uOjpOb25lOworICAg
IGNhc2UgMToKKyAgICAgICAgcmV0dXJuIFRvdWNoQWN0aW9uOjpNYW5pcHVsYXRpb247CisgICAg
Y2FzZSAyOgorICAgICAgICByZXR1cm4gVG91Y2hBY3Rpb246OlBhblg7CisgICAgY2FzZSAzOgor
ICAgICAgICByZXR1cm4gVG91Y2hBY3Rpb246OlBhblk7CisgICAgY2FzZSA0OgorICAgICAgICBy
ZXR1cm4gVG91Y2hBY3Rpb246OlBpbmNoWm9vbTsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVh
azsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFRvdWNoQWN0
aW9uOjpBdXRvOworfQorCitUb3VjaEFjdGlvblJlZ2lvbjo6VG91Y2hBY3Rpb25SZWdpb24oKSA9
IGRlZmF1bHQ7CisKK3ZvaWQgVG91Y2hBY3Rpb25SZWdpb246OnVuaXRlKGNvbnN0IFJlZ2lvbiYg
dG91Y2hSZWdpb24sIE9wdGlvblNldDxUb3VjaEFjdGlvbj4gdG91Y2hBY3Rpb25zKQoreworICAg
IGZvciAoYXV0byB0b3VjaEFjdGlvbiA6IHRvdWNoQWN0aW9ucykgeworICAgICAgICBpZiAodG91
Y2hBY3Rpb24gPT0gVG91Y2hBY3Rpb246OkF1dG8pCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgYXV0byBpbmRleCA9IHRvSW5kZXgodG91Y2hBY3Rpb24pOworICAgICAgICBpZiAobV9yZWdp
b25zLnNpemUoKSA8IGluZGV4ICsgMSkKKyAgICAgICAgICAgIG1fcmVnaW9ucy5ncm93KGluZGV4
ICsgMSk7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcmVnaW9ucy5z
aXplKCk7ICsraSkgeworICAgICAgICBhdXRvIHJlZ2lvblRvdWNoQWN0aW9uID0gdG9Ub3VjaEFj
dGlvbihpKTsKKyAgICAgICAgaWYgKHRvdWNoQWN0aW9ucy5jb250YWlucyhyZWdpb25Ub3VjaEFj
dGlvbikpCisgICAgICAgICAgICBtX3JlZ2lvbnNbaV0udW5pdGUodG91Y2hSZWdpb24pOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX3JlZ2lvbnNbaV0uc3VidHJhY3QodG91Y2hSZWdpb24p
OworICAgIH0KK30KKworT3B0aW9uU2V0PFRvdWNoQWN0aW9uPiBUb3VjaEFjdGlvblJlZ2lvbjo6
YWN0aW9uc0ZvclBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK3sKKyAgICBPcHRp
b25TZXQ8VG91Y2hBY3Rpb24+IGFjdGlvbnM7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9yZWdpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX3JlZ2lvbnNbaV0uY29u
dGFpbnMocG9pbnQpKSB7CisgICAgICAgICAgICBhdXRvIGFjdGlvbiA9IHRvVG91Y2hBY3Rpb24o
aSk7CisgICAgICAgICAgICBhY3Rpb25zLmFkZChhY3Rpb24pOworICAgICAgICAgICAgaWYgKGFj
dGlvbiA9PSBUb3VjaEFjdGlvbjo6Tm9uZSB8fCBhY3Rpb24gPT0gVG91Y2hBY3Rpb246Ok1hbmlw
dWxhdGlvbikKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiBhY3Rpb25zOworfQorCit2b2lkIFRvdWNoQWN0aW9uUmVnaW9uOjp0cmFuc2xhdGUo
Y29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIGZvciAoYXV0byYgcmVnaW9uIDogbV9yZWdp
b25zKQorICAgICAgICByZWdpb24udHJhbnNsYXRlKG9mZnNldCk7Cit9CisKK1RleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFRvdWNoQWN0aW9uIHRvdWNoQWN0aW9uKQorewor
ICAgIHN3aXRjaCAodG91Y2hBY3Rpb24pIHsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpOb25lOgor
ICAgICAgICByZXR1cm4gdHMgPDwgIm5vbmUiOworICAgIGNhc2UgVG91Y2hBY3Rpb246Ok1hbmlw
dWxhdGlvbjoKKyAgICAgICAgcmV0dXJuIHRzIDw8ICJtYW5pcHVsYXRpb24iOworICAgIGNhc2Ug
VG91Y2hBY3Rpb246OlBhblg6CisgICAgICAgIHJldHVybiB0cyA8PCAicGFuLXgiOworICAgIGNh
c2UgVG91Y2hBY3Rpb246OlBhblk6CisgICAgICAgIHJldHVybiB0cyA8PCAicGFuLXkiOworICAg
IGNhc2UgVG91Y2hBY3Rpb246OlBpbmNoWm9vbToKKyAgICAgICAgcmV0dXJuIHRzIDw8ICJwaW5j
aC16b29tIjsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpBdXRvOgorICAgICAgICByZXR1cm4gdHMg
PDwgImF1dG8iOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
dHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFRv
dWNoQWN0aW9uUmVnaW9uJiB0b3VjaEFjdGlvblJlZ2lvbikKK3sKKyAgICB0cyA8PCAiXG4iOwor
ICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdWNoQWN0aW9uUmVnaW9u
Lm1fcmVnaW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKHRvdWNoQWN0aW9uUmVn
aW9uLm1fcmVnaW9uc1tpXS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBUZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBpbmRlbnRTY29wZSh0cyk7CisgICAg
ICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIigiIDw8IHRvVG91Y2hBY3Rpb24oaSk7CisgICAgICAg
ICAgICB0cyA8PCBpbmRlbnQgPDwgdG91Y2hBY3Rpb25SZWdpb24ubV9yZWdpb25zW2ldIDw8ICIp
XG4iOworICAgICAgICB9CisgICAgfQorICAgIHRzIDw8IGluZGVudDsKKworICAgIHJldHVybiB0
czsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVu
dFJlZ2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50
UmVnaW9uLmNwcAkocmV2aXNpb24gMjQzOTMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0V2ZW50UmVnaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTIgKzI0LDQ0IEBACiAgKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRvdWNoQWN0aW9uUmVnaW9uLmgiCisj
aW5jbHVkZSAiRXZlbnRSZWdpb24uaCIKIAotI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKKyNp
bmNsdWRlICJSZW5kZXJTdHlsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0V2ZW50UmVn
aW9uOjpFdmVudFJlZ2lvbigpID0gZGVmYXVsdDsKKworYm9vbCBFdmVudFJlZ2lvbjo6b3BlcmF0
b3I9PShjb25zdCBFdmVudFJlZ2lvbiYgb3RoZXIpIGNvbnN0Cit7CisjaWYgRU5BQkxFKFBPSU5U
RVJfRVZFTlRTKQorICAgIGlmIChtX3RvdWNoQWN0aW9uUmVnaW9ucyAhPSBvdGhlci5tX3RvdWNo
QWN0aW9uUmVnaW9ucykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgcmV0dXJu
IG1fcmVnaW9uID09IG90aGVyLm1fcmVnaW9uOworfQorCit2b2lkIEV2ZW50UmVnaW9uOjp1bml0
ZShjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAg
IG1fcmVnaW9uLnVuaXRlKHJlZ2lvbik7CisKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCisg
ICAgdW5pdGVUb3VjaEFjdGlvbnMocmVnaW9uLCBzdHlsZS5lZmZlY3RpdmVUb3VjaEFjdGlvbnMo
KSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdHlsZSk7CisjZW5kaWYKK30KKwordm9pZCBF
dmVudFJlZ2lvbjo6dHJhbnNsYXRlKGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBtX3Jl
Z2lvbi50cmFuc2xhdGUob2Zmc2V0KTsKKworICAgIGZvciAoYXV0byYgdG91Y2hBY3Rpb25SZWdp
b24gOiBtX3RvdWNoQWN0aW9uUmVnaW9ucykKKyAgICAgICAgdG91Y2hBY3Rpb25SZWdpb24udHJh
bnNsYXRlKG9mZnNldCk7Cit9CisKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCisKIGNvbnN0
ZXhwciB1bnNpZ25lZCB0b0luZGV4KFRvdWNoQWN0aW9uIHRvdWNoQWN0aW9uKQogewogICAgIHN3
aXRjaCAodG91Y2hBY3Rpb24pIHsKQEAgLTcwLDMzICsxMDIsMzEgQEAgY29uc3RleHByIFRvdWNo
QWN0aW9uIHRvVG91Y2hBY3Rpb24odW5zaQogICAgIHJldHVybiBUb3VjaEFjdGlvbjo6QXV0bzsK
IH0KIAotVG91Y2hBY3Rpb25SZWdpb246OlRvdWNoQWN0aW9uUmVnaW9uKCkgPSBkZWZhdWx0Owot
Ci12b2lkIFRvdWNoQWN0aW9uUmVnaW9uOjp1bml0ZShjb25zdCBSZWdpb24mIHRvdWNoUmVnaW9u
LCBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+IHRvdWNoQWN0aW9ucykKK3ZvaWQgRXZlbnRSZWdpb246
OnVuaXRlVG91Y2hBY3Rpb25zKGNvbnN0IFJlZ2lvbiYgdG91Y2hSZWdpb24sIE9wdGlvblNldDxU
b3VjaEFjdGlvbj4gdG91Y2hBY3Rpb25zKQogewogICAgIGZvciAoYXV0byB0b3VjaEFjdGlvbiA6
IHRvdWNoQWN0aW9ucykgewogICAgICAgICBpZiAodG91Y2hBY3Rpb24gPT0gVG91Y2hBY3Rpb246
OkF1dG8pCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgYXV0byBpbmRleCA9IHRvSW5kZXgo
dG91Y2hBY3Rpb24pOwotICAgICAgICBpZiAobV9yZWdpb25zLnNpemUoKSA8IGluZGV4ICsgMSkK
LSAgICAgICAgICAgIG1fcmVnaW9ucy5ncm93KGluZGV4ICsgMSk7CisgICAgICAgIGlmIChtX3Rv
dWNoQWN0aW9uUmVnaW9ucy5zaXplKCkgPCBpbmRleCArIDEpCisgICAgICAgICAgICBtX3RvdWNo
QWN0aW9uUmVnaW9ucy5ncm93KGluZGV4ICsgMSk7CiAgICAgfQogCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fcmVnaW9ucy5zaXplKCk7ICsraSkgeworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX3RvdWNoQWN0aW9uUmVnaW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICBh
dXRvIHJlZ2lvblRvdWNoQWN0aW9uID0gdG9Ub3VjaEFjdGlvbihpKTsKICAgICAgICAgaWYgKHRv
dWNoQWN0aW9ucy5jb250YWlucyhyZWdpb25Ub3VjaEFjdGlvbikpCi0gICAgICAgICAgICBtX3Jl
Z2lvbnNbaV0udW5pdGUodG91Y2hSZWdpb24pOworICAgICAgICAgICAgbV90b3VjaEFjdGlvblJl
Z2lvbnNbaV0udW5pdGUodG91Y2hSZWdpb24pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X3JlZ2lvbnNbaV0uc3VidHJhY3QodG91Y2hSZWdpb24pOworICAgICAgICAgICAgbV90b3VjaEFj
dGlvblJlZ2lvbnNbaV0uc3VidHJhY3QodG91Y2hSZWdpb24pOwogICAgIH0KIH0KIAotT3B0aW9u
U2V0PFRvdWNoQWN0aW9uPiBUb3VjaEFjdGlvblJlZ2lvbjo6YWN0aW9uc0ZvclBvaW50KGNvbnN0
IEludFBvaW50JiBwb2ludCkgY29uc3QKK09wdGlvblNldDxUb3VjaEFjdGlvbj4gRXZlbnRSZWdp
b246OnRvdWNoQWN0aW9uc0ZvclBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsK
ICAgICBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+IGFjdGlvbnM7CiAKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9yZWdpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX3JlZ2lv
bnNbaV0uY29udGFpbnMocG9pbnQpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
dG91Y2hBY3Rpb25SZWdpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX3RvdWNoQWN0
aW9uUmVnaW9uc1tpXS5jb250YWlucyhwb2ludCkpIHsKICAgICAgICAgICAgIGF1dG8gYWN0aW9u
ID0gdG9Ub3VjaEFjdGlvbihpKTsKICAgICAgICAgICAgIGFjdGlvbnMuYWRkKGFjdGlvbik7CiAg
ICAgICAgICAgICBpZiAoYWN0aW9uID09IFRvdWNoQWN0aW9uOjpOb25lIHx8IGFjdGlvbiA9PSBU
b3VjaEFjdGlvbjo6TWFuaXB1bGF0aW9uKQpAQCAtMTA3LDEyICsxMzcsNiBAQCBPcHRpb25TZXQ8
VG91Y2hBY3Rpb24+IFRvdWNoQWN0aW9uUmVnaW9uCiAgICAgcmV0dXJuIGFjdGlvbnM7CiB9CiAK
LXZvaWQgVG91Y2hBY3Rpb25SZWdpb246OnRyYW5zbGF0ZShjb25zdCBJbnRTaXplJiBvZmZzZXQp
Ci17Ci0gICAgZm9yIChhdXRvJiByZWdpb24gOiBtX3JlZ2lvbnMpCi0gICAgICAgIHJlZ2lvbi50
cmFuc2xhdGUob2Zmc2V0KTsKLX0KLQogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgVG91Y2hBY3Rpb24gdG91Y2hBY3Rpb24pCiB7CiAgICAgc3dpdGNoICh0b3VjaEFjdGlv
bikgewpAQCAtMTMzLDIzICsxNTcsMjkgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgVAogICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgVG91Y2hBY3Rpb25SZWdpb24mIHRvdWNoQWN0aW9uUmVnaW9u
KQorI2VuZGlmCisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IEV2ZW50UmVnaW9uJiBldmVudFJlZ2lvbikKIHsKLSAgICB0cyA8PCAiXG4iOwotICAgIHsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdWNoQWN0aW9uUmVnaW9uLm1fcmVnaW9u
cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKHRvdWNoQWN0aW9uUmVnaW9uLm1fcmVn
aW9uc1tpXS5pc0VtcHR5KCkpCisgICAgdHMgPDwgZXZlbnRSZWdpb24ubV9yZWdpb247CisKKyNp
ZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCisgICAgaWYgKCFldmVudFJlZ2lvbi5tX3RvdWNoQWN0
aW9uUmVnaW9ucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgVGV4dFN0cmVhbTo6SW5kZW50U2NvcGUg
aW5kZW50U2NvcGUodHMpOworICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIih0b3VjaC1hY3Rpb25c
biI7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBldmVudFJlZ2lvbi5tX3RvdWNo
QWN0aW9uUmVnaW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGV2ZW50UmVnaW9u
Lm1fdG91Y2hBY3Rpb25SZWdpb25zW2ldLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudFNjb3BlKHRz
KTsKICAgICAgICAgICAgIHRzIDw8IGluZGVudCA8PCAiKCIgPDwgdG9Ub3VjaEFjdGlvbihpKTsK
LSAgICAgICAgICAgIHRzIDw8IGluZGVudCA8PCB0b3VjaEFjdGlvblJlZ2lvbi5tX3JlZ2lvbnNb
aV0gPDwgIilcbiI7CisgICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgZXZlbnRSZWdpb24ubV90
b3VjaEFjdGlvblJlZ2lvbnNbaV07CisgICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIilcbiI7
CiAgICAgICAgIH0KKyAgICAgICAgdHMgPDwgaW5kZW50IDw8ICIpXG4iOwogICAgIH0KLSAgICB0
cyA8PCBpbmRlbnQ7CisjZW5kaWYKIAogICAgIHJldHVybiB0czsKIH0KIAogfQotCi0jZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCShyZXZpc2lvbiAyNDM5
MzEpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Ub3VjaEFjdGlvblJlZ2lvbi5oOjI0
MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShQT0lOVEVSX0VWRU5UUykKKworI2luY2x1ZGUgIlJlZ2lvbi5oIgorI2luY2x1ZGUg
IlRvdWNoQWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUb3VjaEFjdGlvblJl
Z2lvbiB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgVG91Y2hBY3Rpb25SZWdpb24oKTsK
KworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9ucy5pc0VtcHR5KCk7
IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUb3VjaEFjdGlvblJlZ2lvbiYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9ucyA9PSBvdGhlci5tX3JlZ2lvbnM7IH0KKworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdW5pdGUoY29uc3QgUmVnaW9uJiwgT3B0aW9uU2V0PFRvdWNoQWN0
aW9uPik7CisgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uU2V0PFRvdWNoQWN0aW9uPiBhY3Rpb25z
Rm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHRyYW5zbGF0ZShjb25zdCBJbnRTaXplJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFRvdWNoQWN0aW9uUmVnaW9uJik7
CisKKyAgICBWZWN0b3I8UmVnaW9uPiBtX3JlZ2lvbnM7Cit9OworCitUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBUb3VjaEFjdGlvblJlZ2lvbiYpOworCit9CisKKyNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmgJKHJldmlzaW9u
IDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxF
KFBPSU5URVJfRVZFTlRTKQotCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVG91Y2hB
Y3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CkBAIC0zNCwyNiArMzIsODcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUb3VjaEFjdGlvblJlZ2lvbiB7CitjbGFz
cyBSZW5kZXJTdHlsZTsKKworY2xhc3MgRXZlbnRSZWdpb24gewogcHVibGljOgotICAgIFdFQkNP
UkVfRVhQT1JUIFRvdWNoQWN0aW9uUmVnaW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXZlbnRS
ZWdpb24oKTsKIAotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9ucy5p
c0VtcHR5KCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lvbi5p
c0VtcHR5KCk7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUb3VjaEFjdGlvblJlZ2lv
biYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9ucyA9PSBvdGhlci5tX3JlZ2lvbnM7IH0K
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRSZWdpb24mKSBj
b25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5pdGUoY29uc3QgUmVnaW9uJiwgT3B0
aW9uU2V0PFRvdWNoQWN0aW9uPik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uU2V0PFRvdWNo
QWN0aW9uPiBhY3Rpb25zRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVuaXRlKGNvbnN0IFJlZ2lvbiYsIGNvbnN0IFJlbmRlclN0eWxlJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cmFuc2xhdGUoY29uc3QgSW50U2l6ZSYpOwogCisg
ICAgYm9vbCBjb250YWlucyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0IHsgcmV0dXJuIG1f
cmVnaW9uLmNvbnRhaW5zKHBvaW50KTsgfQorICAgIGJvb2wgY29udGFpbnMoY29uc3QgSW50UmVj
dCYgcmVjdCkgY29uc3QgeyByZXR1cm4gbV9yZWdpb24uY29udGFpbnMocmVjdCk7IH0KKworI2lm
IEVOQUJMRShQT0lOVEVSX0VWRU5UUykKKyAgICBib29sIGhhc1RvdWNoQWN0aW9ucygpIGNvbnN0
IHsgcmV0dXJuICFtX3RvdWNoQWN0aW9uUmVnaW9ucy5pc0VtcHR5KCk7IH0KKyAgICBXRUJDT1JF
X0VYUE9SVCBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+IHRvdWNoQWN0aW9uc0ZvclBvaW50KGNvbnN0
IEludFBvaW50JikgY29uc3Q7CisjZW5kaWYKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8RXZlbnRSZWdpb24+IGRlY29kZShEZWNvZGVyJik7CisgICAgLy8g
RklYTUU6IFJlbW92ZSBsZWdhY3kgZGVjb2RlLgorICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgRXZlbnRSZWdpb24mKTsKKwogcHJpdmF0ZToK
LSAgICBmcmllbmQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgVG91
Y2hBY3Rpb25SZWdpb24mKTsKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCisgICAgdm9pZCB1
bml0ZVRvdWNoQWN0aW9ucyhjb25zdCBSZWdpb24mLCBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+KTsK
KyNlbmRpZgorICAgIGZyaWVuZCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBFdmVudFJlZ2lvbiYpOwogCi0gICAgVmVjdG9yPFJlZ2lvbj4gbV9yZWdpb25zOworICAg
IFJlZ2lvbiBtX3JlZ2lvbjsKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCisgICAgVmVjdG9y
PFJlZ2lvbj4gbV90b3VjaEFjdGlvblJlZ2lvbnM7CisjZW5kaWYKIH07CiAKLVRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFRvdWNoQWN0aW9uUmVnaW9uJik7CitUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBFdmVudFJlZ2lvbiYpOwogCit0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBFdmVudFJlZ2lvbjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3JlZ2lvbjsKKyNpZiBFTkFCTEUo
UE9JTlRFUl9FVkVOVFMpCisgICAgZW5jb2RlciA8PCBtX3RvdWNoQWN0aW9uUmVnaW9uczsKKyNl
bmRpZgogfQogCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8RXZlbnRSZWdpb24+
IEV2ZW50UmVnaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxS
ZWdpb24+IHJlZ2lvbjsKKyAgICBkZWNvZGVyID4+IHJlZ2lvbjsKKyAgICBpZiAoIXJlZ2lvbikK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIEV2ZW50UmVnaW9uIGV2ZW50UmVn
aW9uOworICAgIGV2ZW50UmVnaW9uLm1fcmVnaW9uID0gV1RGTW92ZSgqcmVnaW9uKTsKKworI2lm
IEVOQUJMRShQT0lOVEVSX0VWRU5UUykKKyAgICBPcHRpb25hbDxWZWN0b3I8UmVnaW9uPj4gdG91
Y2hBY3Rpb25SZWdpb25zOworICAgIGRlY29kZXIgPj4gdG91Y2hBY3Rpb25SZWdpb25zOworICAg
IGlmICghdG91Y2hBY3Rpb25SZWdpb25zKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgZXZlbnRSZWdpb24ubV90b3VjaEFjdGlvblJlZ2lvbnMgPSBXVEZNb3ZlKCp0b3VjaEFj
dGlvblJlZ2lvbnMpOwogI2VuZGlmCisKKyAgICByZXR1cm4gZXZlbnRSZWdpb247Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIEV2ZW50UmVnaW9uOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgRXZlbnRSZWdpb24mIGV2ZW50UmVnaW9uKQoreworICAgIE9wdGlvbmFsPEV2ZW50
UmVnaW9uPiBkZWNvZGVkRXZlbnRSZWdpb247CisgICAgZGVjb2RlciA+PiBkZWNvZGVkRXZlbnRS
ZWdpb247CisgICAgaWYgKCFkZWNvZGVkRXZlbnRSZWdpb24pCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBldmVudFJlZ2lvbiA9IFdURk1vdmUoKmRlY29kZWRFdmVudFJlZ2lvbik7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkVkaXRvci5o
IgogI2luY2x1ZGUgIkVsbGlwc2lzQm94LmgiCisjaW5jbHVkZSAiRXZlbnRSZWdpb24uaCIKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
IkhpdFRlc3RSZXN1bHQuaCIKQEAgLTUwNCw3ICs1MDUsNyBAQCB2b2lkIElubGluZVRleHRCb3g6
OnBhaW50KFBhaW50SW5mbyYgcGFpCiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50
UGhhc2U6OkV2ZW50UmVnaW9uKSB7CiAgICAgICAgIGlmICh2aXNpYmxlVG9IaXRUZXN0aW5nKCkp
Ci0gICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb24tPnVuaXRlKGVuY2xvc2luZ0ludFJl
Y3QoYm94UmVjdCkpOworICAgICAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uLT51bml0ZShl
bmNsb3NpbmdJbnRSZWN0KGJveFJlY3QpLCByZW5kZXJlcigpLnN0eWxlKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCShy
ZXZpc2lvbiAyNDM5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDE3ICszNywxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIEV2ZW50UmVnaW9uOwogY2xhc3MgT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50Owot
Y2xhc3MgUmVnaW9uOwogY2xhc3MgUmVuZGVySW5saW5lOwogY2xhc3MgUmVuZGVyTGF5ZXI7CiBj
bGFzcyBSZW5kZXJMYXllck1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyT2JqZWN0OwogCi0jaWYg
RU5BQkxFKFBPSU5URVJfRVZFTlRTKQotY2xhc3MgVG91Y2hBY3Rpb25SZWdpb247Ci0jZW5kaWYK
LSAgICAKIHR5cGVkZWYgSGFzaE1hcDxPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQqLCBJbnRSZWN0
PiBPdmVybGFwVGVzdFJlcXVlc3RNYXA7CiAKIC8qCkBAIC0xMzQsMTAgKzEzMCw3IEBAIHN0cnVj
dCBQYWludEluZm8gewogICAgIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29u
dGFpbmVyOyAvLyB0aGUgbGF5ZXIgb2JqZWN0IHRoYXQgb3JpZ2luYXRlcyB0aGUgY3VycmVudCBw
YWludGluZwogICAgIGJvb2wgcmVxdWlyZVNlY3VyaXR5T3JpZ2luQWNjZXNzRm9yV2lkZ2V0cyB7
IGZhbHNlIH07CiAgICAgY29uc3QgUmVuZGVyTGF5ZXIqIG1fZW5jbG9zaW5nU2VsZlBhaW50aW5n
TGF5ZXIgeyBudWxscHRyIH07Ci0gICAgUmVnaW9uKiBldmVudFJlZ2lvbiB7IG51bGxwdHIgfTsg
Ly8gRm9yIFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uLgotI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5U
UykKLSAgICBUb3VjaEFjdGlvblJlZ2lvbiogdG91Y2hBY3Rpb25SZWdpb24geyBudWxscHRyIH07
Ci0jZW5kaWYKKyAgICBFdmVudFJlZ2lvbiogZXZlbnRSZWdpb24geyBudWxscHRyIH07IC8vIEZv
ciBQYWludFBoYXNlOjpFdmVudFJlZ2lvbi4KIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0
KiBtX2NvbnRleHQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCShyZXZpc2lvbiAyNDM5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisj
aW5jbHVkZSAiRXZlbnRSZWdpb24uaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCkBAIC03MCw3ICs3MSw2IEBA
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVk
ZSAiU2hhcGVPdXRzaWRlSW5mby5oIgotI2luY2x1ZGUgIlRvdWNoQWN0aW9uUmVnaW9uLmgiCiAj
aW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMTI0NiwxNyArMTI0Niwx
MyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8mCiAKICAgICAgICAg
aWYgKHZpc2libGVUb0hpdFRlc3RpbmcoKSkgewogICAgICAgICAgICAgYXV0byBib3JkZXJSZWdp
b24gPSBhcHByb3hpbWF0ZUFzUmVnaW9uKHN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihib3Jk
ZXJSZWN0KSk7Ci0gICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb24tPnVuaXRlKGJvcmRl
clJlZ2lvbik7Ci0jaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQotICAgICAgICAgICAgaWYgKHBh
aW50SW5mby50b3VjaEFjdGlvblJlZ2lvbikKLSAgICAgICAgICAgICAgICBwYWludEluZm8udG91
Y2hBY3Rpb25SZWdpb24tPnVuaXRlKGJvcmRlclJlZ2lvbiwgc3R5bGUoKS5lZmZlY3RpdmVUb3Vj
aEFjdGlvbnMoKSk7Ci0jZW5kaWYKKyAgICAgICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lvbi0+
dW5pdGUoYm9yZGVyUmVnaW9uLCBzdHlsZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE5v
IG5lZWQgdG8gY2hlY2sgZGVzY2VuZGFudHMgaWYgd2UgZG9uJ3QgaGF2ZSBvdmVyZmxvdyBhbmQg
dGhlIGFyZWEgaXMgYWxyZWFkeSBjb3ZlcmVkLgogICAgICAgICBib29sIG5lZWRzVHJhdmVyc2VE
ZXNjZW5kYW50cyA9IGhhc1Zpc3VhbE92ZXJmbG93KCkgfHwgIXBhaW50SW5mby5ldmVudFJlZ2lv
bi0+Y29udGFpbnMoZW5jbG9zaW5nSW50UmVjdChib3JkZXJSZWN0KSk7CiAjaWYgRU5BQkxFKFBP
SU5URVJfRVZFTlRTKQotICAgICAgICBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgPSBuZWVkc1Ry
YXZlcnNlRGVzY2VuZGFudHMgfHwgcGFpbnRJbmZvLnRvdWNoQWN0aW9uUmVnaW9uOworICAgICAg
ICBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgPSBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgfHwg
ZG9jdW1lbnQoKS50b3VjaEFjdGlvbkVsZW1lbnRzKCk7CiAjZW5kaWYKICAgICAgICAgaWYgKCFu
ZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMpCiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDI0MzkzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ4OTEsOSArNDg5MSw2IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RFdmVudFJlZ2lv
bkZvckYKICAgICBmb3IgKGNvbnN0IGF1dG8mIGZyYWdtZW50IDogbGF5ZXJGcmFnbWVudHMpIHsK
ICAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBmcmFnbWVudC5mb3JlZ3JvdW5k
UmVjdC5yZWN0KCksIFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uLCB7IH0pOwogICAgICAgICBwYWlu
dEluZm8uZXZlbnRSZWdpb24gPSBsb2NhbFBhaW50aW5nSW5mby5ldmVudFJlZ2lvbjsKLSNpZiBF
TkFCTEUoUE9JTlRFUl9FVkVOVFMpCi0gICAgICAgIHBhaW50SW5mby50b3VjaEFjdGlvblJlZ2lv
biA9IGxvY2FsUGFpbnRpbmdJbmZvLnRvdWNoQWN0aW9uUmVnaW9uOwotI2VuZGlmCiAgICAgICAg
IHJlbmRlcmVyKCkucGFpbnQocGFpbnRJbmZvLCB0b0xheW91dFBvaW50KGZyYWdtZW50LmxheWVy
Qm91bmRzLmxvY2F0aW9uKCkgLSByZW5kZXJCb3hMb2NhdGlvbigpICsgbG9jYWxQYWludGluZ0lu
Zm8uc3VicGl4ZWxPZmZzZXQpKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuaAkocmV2aXNpb24gMjQzOTMxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTRmlsdGVyOwogY2xhc3MgQ2xpcFJlY3RzOwogY2xh
c3MgQ2xpcFJlY3RzQ2FjaGU7CitjbGFzcyBFdmVudFJlZ2lvbjsKIGNsYXNzIEhpdFRlc3RSZXF1
ZXN0OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0
ZTsKQEAgLTgwLDEwICs4MSw2IEBAIGNsYXNzIFJlbmRlclZpZXc7CiBjbGFzcyBTY3JvbGxiYXI7
CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAotI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5U
UykKLWNsYXNzIFRvdWNoQWN0aW9uUmVnaW9uOwotI2VuZGlmCi0KIGVudW0gQm9yZGVyUmFkaXVz
Q2xpcHBpbmdSdWxlIHsgSW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMsIERvTm90SW5jbHVkZVNl
bGZGb3JCb3JkZXJSYWRpdXMgfTsKIGVudW0gSW5jbHVkZVNlbGZPck5vdCB7IEluY2x1ZGVTZWxm
LCBFeGNsdWRlU2VsZiB9OwogCkBAIC05MTYsMTAgKzkxMyw3IEBAIHByaXZhdGU6CiAgICAgICAg
IE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yOwogICAgICAgICBib29sIHJl
cXVpcmVTZWN1cml0eU9yaWdpbkFjY2Vzc0ZvcldpZGdldHM7CiAgICAgICAgIGJvb2wgY2xpcFRv
RGlydHlSZWN0IHsgdHJ1ZSB9OwotICAgICAgICBSZWdpb24qIGV2ZW50UmVnaW9uIHsgbnVsbHB0
ciB9OwotI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLSAgICAgICAgVG91Y2hBY3Rpb25SZWdp
b24qIHRvdWNoQWN0aW9uUmVnaW9uIHsgbnVsbHB0ciB9OwotI2VuZGlmCisgICAgICAgIEV2ZW50
UmVnaW9uKiBldmVudFJlZ2lvbiB7IG51bGxwdHIgfTsKICAgICB9OwogCiAgICAgLy8gQ29tcHV0
ZSwgY2FjaGUgYW5kIHJldHVybiBjbGlwIHJlY3RzIGNvbXB1dGVkIHdpdGggdGhlIGdpdmVuIGxh
eWVyIGFzIHRoZSByb290LgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIK
ICNpbmNsdWRlICJEb2N1bWVudFRpbWVsaW5lLmgiCisjaW5jbHVkZSAiRXZlbnRSZWdpb24uaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgpAQCAtNTEsNyArNTIsNiBAQAogI2luY2x1ZGUgIlBlcmZvcm1hbmNl
TG9nZ2luZ0NsaWVudC5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCiAjaW5jbHVkZSAi
UHJvZ3Jlc3NUcmFja2VyLmgiCi0jaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVy
RnJhZ21lbnRDb250YWluZXIuaCIKICNpbmNsdWRlICJSZW5kZXJGcmFnbWVudGVkRmxvdy5oIgog
I2luY2x1ZGUgIlJlbmRlckhUTUxDYW52YXMuaCIKQEAgLTE0NDksMTUgKzE0NDksOSBAQCB2b2lk
IFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlRXZlbnRSZWdpCiAgICAgR3JhcGhpY3NDb250ZXh0
IG51bGxDb250ZXh0KG51bGxwdHIpOwogICAgIFJlbmRlckxheWVyOjpMYXllclBhaW50aW5nSW5m
byBwYWludGluZ0luZm8oJm1fb3duaW5nTGF5ZXIsIGNvbXBvc2l0ZWRCb3VuZHMoKSwgeyB9LCBM
YXlvdXRTaXplKCkpOwogCi0gICAgUmVnaW9uIGV2ZW50UmVnaW9uOworICAgIEV2ZW50UmVnaW9u
IGV2ZW50UmVnaW9uOwogICAgIHBhaW50aW5nSW5mby5ldmVudFJlZ2lvbiA9ICZldmVudFJlZ2lv
bjsKIAotI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLSAgICBUb3VjaEFjdGlvblJlZ2lvbiB0
b3VjaEFjdGlvblJlZ2lvbjsKLSAgICBpZiAoaGFzVG91Y2hBY3Rpb25FbGVtZW50cykKLSAgICAg
ICAgcGFpbnRpbmdJbmZvLnRvdWNoQWN0aW9uUmVnaW9uID0gJnRvdWNoQWN0aW9uUmVnaW9uOwot
I2VuZGlmCi0KICAgICBhdXRvIHBhaW50RmxhZ3MgPSBSZW5kZXJMYXllcjo6cGFpbnRMYXllclBh
aW50aW5nQ29tcG9zaXRpbmdBbGxQaGFzZXNGbGFncygpIHwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5
ZXJDb2xsZWN0aW5nRXZlbnRSZWdpb247CiAgICAgbV9vd25pbmdMYXllci5wYWludExheWVyQ29u
dGVudHMobnVsbENvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiAKQEAgLTE0NjUs
MTAgKzE0NTksNiBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlRXZlbnRSZWdpCiAg
ICAgZXZlbnRSZWdpb24udHJhbnNsYXRlKGNvbnRlbnRPZmZzZXQpOwogICAgIG1fZ3JhcGhpY3NM
YXllci0+c2V0RXZlbnRSZWdpb24oV1RGTW92ZShldmVudFJlZ2lvbikpOwogCi0jaWYgRU5BQkxF
KFBPSU5URVJfRVZFTlRTKQotICAgIHRvdWNoQWN0aW9uUmVnaW9uLnRyYW5zbGF0ZShjb250ZW50
T2Zmc2V0KTsKLSAgICBtX2dyYXBoaWNzTGF5ZXItPnNldFRvdWNoQWN0aW9uUmVnaW9uKFdURk1v
dmUodG91Y2hBY3Rpb25SZWdpb24pKTsKLSNlbmRpZgogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAJ
KHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ck1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKIAogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgi
CisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXRGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAyNDM5MzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJpZGlSdW4uaCIKICNpbmNsdWRlICJCaWRp
UnVuTGlzdC5oIgorI2luY2x1ZGUgIkV2ZW50UmVnaW9uLmgiCiAjaW5jbHVkZSAiRm9udENhY2hl
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKQEAg
LTgzLDcgKzg0LDcgQEAgdm9pZCBwYWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbAog
ICAgICAgICBwYWludFJlY3QubW92ZUJ5KC1wYWludE9mZnNldCk7CiAgICAgICAgIGZvciAoYXV0
byBydW4gOiBsYXlvdXQucnVuUmVzb2x2ZXIoKS5yYW5nZUZvclJlY3QocGFpbnRSZWN0KSkgewog
ICAgICAgICAgICAgRmxvYXRSZWN0IHZpc3VhbE92ZXJmbG93UmVjdCA9IGNvbXB1dGVPdmVyZmxv
dyhmbG93LCBydW4ucmVjdCgpKTsKLSAgICAgICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lvbi0+
dW5pdGUoZW5jbG9zaW5nSW50UmVjdCh2aXN1YWxPdmVyZmxvd1JlY3QpKTsKKyAgICAgICAgICAg
IHBhaW50SW5mby5ldmVudFJlZ2lvbi0+dW5pdGUoZW5jbG9zaW5nSW50UmVjdCh2aXN1YWxPdmVy
Zmxvd1JlY3QpLCBmbG93LnN0eWxlKCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVG91Y2hBY3Rpb25SZWdpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Ub3VjaEFjdGlvblJlZ2lv
bi5jcHAJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Ub3Vj
aEFjdGlvblJlZ2lvbi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNTUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUb3VjaEFjdGlvblJlZ2lvbi5o
IgotCi0jaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNvbnN0ZXhwciB1bnNpZ25lZCB0b0luZGV4KFRvdWNoQWN0aW9uIHRvdWNoQWN0aW9uKQotewot
ICAgIHN3aXRjaCAodG91Y2hBY3Rpb24pIHsKLSAgICBjYXNlIFRvdWNoQWN0aW9uOjpOb25lOgot
ICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIFRvdWNoQWN0aW9uOjpNYW5pcHVsYXRpb246Ci0g
ICAgICAgIHJldHVybiAxOwotICAgIGNhc2UgVG91Y2hBY3Rpb246OlBhblg6Ci0gICAgICAgIHJl
dHVybiAyOwotICAgIGNhc2UgVG91Y2hBY3Rpb246OlBhblk6Ci0gICAgICAgIHJldHVybiAzOwot
ICAgIGNhc2UgVG91Y2hBY3Rpb246OlBpbmNoWm9vbToKLSAgICAgICAgcmV0dXJuIDQ7Ci0gICAg
Y2FzZSBUb3VjaEFjdGlvbjo6QXV0bzoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi1jb25zdGV4cHIgVG91Y2hBY3Rp
b24gdG9Ub3VjaEFjdGlvbih1bnNpZ25lZCBpbmRleCkKLXsKLSAgICBzd2l0Y2ggKGluZGV4KSB7
Ci0gICAgY2FzZSAwOgotICAgICAgICByZXR1cm4gVG91Y2hBY3Rpb246Ok5vbmU7Ci0gICAgY2Fz
ZSAxOgotICAgICAgICByZXR1cm4gVG91Y2hBY3Rpb246Ok1hbmlwdWxhdGlvbjsKLSAgICBjYXNl
IDI6Ci0gICAgICAgIHJldHVybiBUb3VjaEFjdGlvbjo6UGFuWDsKLSAgICBjYXNlIDM6Ci0gICAg
ICAgIHJldHVybiBUb3VjaEFjdGlvbjo6UGFuWTsKLSAgICBjYXNlIDQ6Ci0gICAgICAgIHJldHVy
biBUb3VjaEFjdGlvbjo6UGluY2hab29tOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVG91Y2hBY3Rpb246
OkF1dG87Ci19Ci0KLVRvdWNoQWN0aW9uUmVnaW9uOjpUb3VjaEFjdGlvblJlZ2lvbigpID0gZGVm
YXVsdDsKLQotdm9pZCBUb3VjaEFjdGlvblJlZ2lvbjo6dW5pdGUoY29uc3QgUmVnaW9uJiB0b3Vj
aFJlZ2lvbiwgT3B0aW9uU2V0PFRvdWNoQWN0aW9uPiB0b3VjaEFjdGlvbnMpCi17Ci0gICAgZm9y
IChhdXRvIHRvdWNoQWN0aW9uIDogdG91Y2hBY3Rpb25zKSB7Ci0gICAgICAgIGlmICh0b3VjaEFj
dGlvbiA9PSBUb3VjaEFjdGlvbjo6QXV0bykKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBh
dXRvIGluZGV4ID0gdG9JbmRleCh0b3VjaEFjdGlvbik7Ci0gICAgICAgIGlmIChtX3JlZ2lvbnMu
c2l6ZSgpIDwgaW5kZXggKyAxKQotICAgICAgICAgICAgbV9yZWdpb25zLmdyb3coaW5kZXggKyAx
KTsKLSAgICB9Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9yZWdpb25zLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGF1dG8gcmVnaW9uVG91Y2hBY3Rpb24gPSB0b1RvdWNoQWN0aW9u
KGkpOwotICAgICAgICBpZiAodG91Y2hBY3Rpb25zLmNvbnRhaW5zKHJlZ2lvblRvdWNoQWN0aW9u
KSkKLSAgICAgICAgICAgIG1fcmVnaW9uc1tpXS51bml0ZSh0b3VjaFJlZ2lvbik7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fcmVnaW9uc1tpXS5zdWJ0cmFjdCh0b3VjaFJlZ2lvbik7Ci0g
ICAgfQotfQotCi1PcHRpb25TZXQ8VG91Y2hBY3Rpb24+IFRvdWNoQWN0aW9uUmVnaW9uOjphY3Rp
b25zRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAotewotICAgIE9wdGlvblNl
dDxUb3VjaEFjdGlvbj4gYWN0aW9uczsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X3JlZ2lvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fcmVnaW9uc1tpXS5jb250YWlu
cyhwb2ludCkpIHsKLSAgICAgICAgICAgIGF1dG8gYWN0aW9uID0gdG9Ub3VjaEFjdGlvbihpKTsK
LSAgICAgICAgICAgIGFjdGlvbnMuYWRkKGFjdGlvbik7Ci0gICAgICAgICAgICBpZiAoYWN0aW9u
ID09IFRvdWNoQWN0aW9uOjpOb25lIHx8IGFjdGlvbiA9PSBUb3VjaEFjdGlvbjo6TWFuaXB1bGF0
aW9uKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0
dXJuIGFjdGlvbnM7Ci19Ci0KLXZvaWQgVG91Y2hBY3Rpb25SZWdpb246OnRyYW5zbGF0ZShjb25z
dCBJbnRTaXplJiBvZmZzZXQpCi17Ci0gICAgZm9yIChhdXRvJiByZWdpb24gOiBtX3JlZ2lvbnMp
Ci0gICAgICAgIHJlZ2lvbi50cmFuc2xhdGUob2Zmc2V0KTsKLX0KLQotVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVG91Y2hBY3Rpb24gdG91Y2hBY3Rpb24pCi17Ci0gICAg
c3dpdGNoICh0b3VjaEFjdGlvbikgewotICAgIGNhc2UgVG91Y2hBY3Rpb246Ok5vbmU6Ci0gICAg
ICAgIHJldHVybiB0cyA8PCAibm9uZSI7Ci0gICAgY2FzZSBUb3VjaEFjdGlvbjo6TWFuaXB1bGF0
aW9uOgotICAgICAgICByZXR1cm4gdHMgPDwgIm1hbmlwdWxhdGlvbiI7Ci0gICAgY2FzZSBUb3Vj
aEFjdGlvbjo6UGFuWDoKLSAgICAgICAgcmV0dXJuIHRzIDw8ICJwYW4teCI7Ci0gICAgY2FzZSBU
b3VjaEFjdGlvbjo6UGFuWToKLSAgICAgICAgcmV0dXJuIHRzIDw8ICJwYW4teSI7Ci0gICAgY2Fz
ZSBUb3VjaEFjdGlvbjo6UGluY2hab29tOgotICAgICAgICByZXR1cm4gdHMgPDwgInBpbmNoLXpv
b20iOwotICAgIGNhc2UgVG91Y2hBY3Rpb246OkF1dG86Ci0gICAgICAgIHJldHVybiB0cyA8PCAi
YXV0byI7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiB0czsK
LX0KLQotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVG91Y2hB
Y3Rpb25SZWdpb24mIHRvdWNoQWN0aW9uUmVnaW9uKQotewotICAgIHRzIDw8ICJcbiI7Ci0gICAg
ewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG91Y2hBY3Rpb25SZWdpb24ubV9y
ZWdpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAodG91Y2hBY3Rpb25SZWdpb24u
bV9yZWdpb25zW2ldLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudFNjb3BlKHRzKTsKLSAgICAgICAg
ICAgIHRzIDw8IGluZGVudCA8PCAiKCIgPDwgdG9Ub3VjaEFjdGlvbihpKTsKLSAgICAgICAgICAg
IHRzIDw8IGluZGVudCA8PCB0b3VjaEFjdGlvblJlZ2lvbi5tX3JlZ2lvbnNbaV0gPDwgIilcbiI7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgdHMgPDwgaW5kZW50OwotCi0gICAgcmV0dXJuIHRzOwot
fQotCi19Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RvdWNoQWN0
aW9uUmVnaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RvdWNo
QWN0aW9uUmVnaW9uLmgJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Ub3VjaEFjdGlvblJlZ2lvbi5oCShub25leGlzdGVudCkKQEAgLTEsNTkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQot
Ci0jaW5jbHVkZSAiUmVnaW9uLmgiCi0jaW5jbHVkZSAiVG91Y2hBY3Rpb24uaCIKLSNpbmNsdWRl
IDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIFRvdWNoQWN0aW9uUmVnaW9uIHsKLXB1YmxpYzoKLSAgICBXRUJD
T1JFX0VYUE9SVCBUb3VjaEFjdGlvblJlZ2lvbigpOwotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV9yZWdpb25zLmlzRW1wdHkoKTsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFRvdWNoQWN0aW9uUmVnaW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9yZWdpb25z
ID09IG90aGVyLm1fcmVnaW9uczsgfQotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bml0ZShj
b25zdCBSZWdpb24mLCBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+KTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+IGFjdGlvbnNGb3JQb2ludChjb25zdCBJbnRQb2ludCYp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJhbnNsYXRlKGNvbnN0IEludFNpemUm
KTsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiwgY29uc3QgVG91Y2hBY3Rpb25SZWdpb24mKTsKLQotICAgIFZlY3RvcjxSZWdpb24+IG1f
cmVnaW9uczsKLX07Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IFRvdWNoQWN0aW9uUmVnaW9uJik7Ci0KLX0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNp
b24gMjQzOTMzKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyMiBAQAorMjAxOS0wNC0wNSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgQ29tYmluZSBldmVudCBhbmQgdG91Y2ggYWN0aW9uIHJlZ2lvbnMgaW50
byBhIHNpbmdsZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk2NjQ0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80OTY0MzYxND4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBTaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpk
ZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlTm9kZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVOb2RlOjpldmVudFJl
Z2lvbiBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVOb2RlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVOb2RlOjpz
ZXRFdmVudFJlZ2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OnNldEV2ZW50UmVnaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oOgorCiAyMDE5LTA0
LTA1ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTihyMjQwNjg1KTogUmVtb3ZlIGR1cGxpY2F0ZSBIZWFkZXJzIGVudHJ5IGZvciBfV0tJbnNw
ZWN0b3JXaW5kb3cuaCBpbiBYY29kZSBwcm9qZWN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMjQzOTMxKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgb3BhcXVlOwogICAg
ICAgICBib29sIGNvbnRlbnRzSGlkZGVuOwogICAgICAgICBib29sIHVzZXJJbnRlcmFjdGlvbkVu
YWJsZWQ7Ci0gICAgICAgIFdlYkNvcmU6OlJlZ2lvbiBldmVudFJlZ2lvbjsKKyAgICAgICAgV2Vi
Q29yZTo6RXZlbnRSZWdpb24gZXZlbnRSZWdpb247CiAgICAgfTsKIAogICAgIGV4cGxpY2l0IFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uLm1tCShyZXZpc2lvbiAyNDM5MzEpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDggKzMxLDggQEAKICNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllclJlbW90ZS5oIgog
I2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1
YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRXZlbnRSZWdpb24uaD4KICNpbXBvcnQgPFdl
YkNvcmUvTGVuZ3RoRnVuY3Rpb25zLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1JlZ2lvbi5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaW1pbmdGdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgpAQCAtNTA4LDcgKzUwOCw3IEBA
IGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHIKICAgICB9CiAKICAgICBp
ZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgRXZlbnRSZWdpb25DaGFuZ2VkKSB7Ci0gICAg
ICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lvbj4gZXZlbnRSZWdpb247CisgICAgICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkV2ZW50UmVnaW9uPiBldmVudFJlZ2lvbjsKICAgICAgICAgZGVjb2RlciA+
PiBldmVudFJlZ2lvbjsKICAgICAgICAgaWYgKCFldmVudFJlZ2lvbikKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUuaAkocmV2aXNpb24gMjQz
OTMxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZU5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsOCArNTYsOCBAQCBwdWJsaWM6CiAK
ICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGF5ZXJJRDsgfQogCi0gICAgY29uc3QgV2ViQ29yZTo6UmVnaW9uJiBl
dmVudFJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRSZWdpb247IH0KLSAgICB2b2lkIHNl
dEV2ZW50UmVnaW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYpOworICAgIGNvbnN0IFdlYkNvcmU6
OkV2ZW50UmVnaW9uJiBldmVudFJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRSZWdpb247
IH0KKyAgICB2b2lkIHNldEV2ZW50UmVnaW9uKGNvbnN0IFdlYkNvcmU6OkV2ZW50UmVnaW9uJik7
CiAKICAgICAvLyBJZiBlbXB0eSB0aGUgbGF5ZXIgaXMgc2Nyb2xsZWQgbm9ybWFsbHkgYnkgYW4g
YW5jZXN0b3Igc2Nyb2xsZXIuCiAgICAgY29uc3QgYXV0byYgcmVsYXRlZFNjcm9sbENvbnRhaW5l
cklEcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVsYXRlZFNjcm9sbENvbnRhaW5lcklEczsgfQpAQCAt
ODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxVSVZpZXc+IG1fdWlWaWV3Owog
I2VuZGlmCiAKLSAgICBXZWJDb3JlOjpSZWdpb24gbV9ldmVudFJlZ2lvbjsKKyAgICBXZWJDb3Jl
OjpFdmVudFJlZ2lvbiBtX2V2ZW50UmVnaW9uOwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4gbV9yZWxhdGVkU2Nyb2xsQ29udGFpbmVySURzOwog
ICAgIFdlYkNvcmU6OlNjcm9sbFBvc2l0aW9uaW5nQmVoYXZpb3IgbV9yZWxhdGVkU2Nyb2xsQ29u
dGFpbmVyUG9zaXRpb25pbmdCZWhhdmlvciB7IFdlYkNvcmU6OlNjcm9sbFBvc2l0aW9uaW5nQmVo
YXZpb3I6Ok5vbmUgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tCShyZXZpc2lv
biAyNDM5MzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlTm9kZS5tbQkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsNyBAQCB2b2lk
IFJlbW90ZUxheWVyVHJlZU5vZGU6OmRldGFjaEZyb21QYXJlCiAgICAgW2xheWVyKCkgcmVtb3Zl
RnJvbVN1cGVybGF5ZXJdOwogfQogCi12b2lkIFJlbW90ZUxheWVyVHJlZU5vZGU6OnNldEV2ZW50
UmVnaW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgZXZlbnRSZWdpb24pCit2b2lkIFJlbW90ZUxh
eWVyVHJlZU5vZGU6OnNldEV2ZW50UmVnaW9uKGNvbnN0IFdlYkNvcmU6OkV2ZW50UmVnaW9uJiBl
dmVudFJlZ2lvbikKIHsKICAgICBtX2V2ZW50UmVnaW9uID0gZXZlbnRSZWdpb247CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAkocmV2
aXNpb24gMjQzOTMxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZUNvbnRleHQuaCIKICNpbXBvcnQg
IlJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oIgogI2ltcG9ydCA8V2ViQ29yZS9Bbmlt
YXRpb25VdGlsaXRpZXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRXZlbnRSZWdpb24uaD4KICNpbXBv
cnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNz
TGF5ZXJDQS5oPgogI2ltcG9ydCA8V2ViQ29yZS9MZW5ndGhGdW5jdGlvbnMuaD4KQEAgLTg3MSw3
ICs4NzIsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6dXBkYXRlQ3VzdG9tCiAgICAg
bV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6Q3VzdG9tQXBwZWFyYW5jZUNoYW5nZWQpOwogfQogCi12b2lkIFBsYXRmb3JtQ0FMYXll
clJlbW90ZTo6c2V0RXZlbnRSZWdpb24oY29uc3QgV2ViQ29yZTo6UmVnaW9uJiBldmVudFJlZ2lv
bikKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRFdmVudFJlZ2lvbihjb25zdCBXZWJD
b3JlOjpFdmVudFJlZ2lvbiYgZXZlbnRSZWdpb24pCiB7CiAgICAgaWYgKG1fcHJvcGVydGllcy5l
dmVudFJlZ2lvbiA9PSBldmVudFJlZ2lvbikKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAkocmV2aXNpb24gMjQzOTMx
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNyArMTc0LDcgQEAg
cHVibGljOgogICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UgY3Vz
dG9tQXBwZWFyYW5jZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQ3VzdG9tQXBw
ZWFyYW5jZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlKSBvdmVycmlk
ZTsKIAotICAgIHZvaWQgc2V0RXZlbnRSZWdpb24oY29uc3QgV2ViQ29yZTo6UmVnaW9uJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRFdmVudFJlZ2lvbihjb25zdCBXZWJDb3JlOjpFdmVudFJlZ2lv
biYpIG92ZXJyaWRlOwogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3
SUQgZW1iZWRkZWRWaWV3SUQoKSBjb25zdCBvdmVycmlkZTsKIApJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MjQzOTMxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTktMDQtMDUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgor
CisgICAgICAgIENvbWJpbmUgZXZlbnQgYW5kIHRvdWNoIGFjdGlvbiByZWdpb25zIGludG8gYSBz
aW5nbGUgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NjY0NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDk2NDM2MTQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwb2ludGVyZXZlbnRzL2lv
cy90b3VjaC1hY3Rpb24tcmVnaW9uLWJhc2ljLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwb2lu
dGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tcmVnaW9uLWxheWVycy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLXJlZ2lvbi1wYW4teC15LWV4
cGVjdGVkLnR4dDoKKwogMjAxOS0wNC0wNSAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtXUEVdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLCB1cGRhdGUgdW5l
eHBlY3RlZCBwYXNzZXMKSW5kZXg6IExheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNo
LWFjdGlvbi1yZWdpb24tYmFzaWMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1yZWdpb24tYmFzaWMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAyNDM5MzEpCisrKyBMYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90
b3VjaC1hY3Rpb24tcmVnaW9uLWJhc2ljLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
OSwxNCArOSwxNCBAQAogICAgICAgKGJhY2tncm91bmRDb2xvciAjRkZGRkZGKQogICAgICAgKGV2
ZW50IHJlZ2lvbgogICAgICAgICAocmVjdCAoMCwwKSB3aWR0aD04MDAgaGVpZ2h0PTYyMSkKLSAg
ICAgICkKLSAgICAgICh0b3VjaC1hY3Rpb24gcmVnaW9uCi0gICAgICAgIChub25lICAgICAgICAK
LSAgICAgICAgICAocmVjdCAoOCw4KSB3aWR0aD0xMDAgaGVpZ2h0PTEwMCkKLSAgICAgICAgICAo
cmVjdCAoOCwyMDgpIHdpZHRoPTIwMCBoZWlnaHQ9MjUpCi0gICAgICAgICAgKHJlY3QgKDgsMjMz
KSB3aWR0aD0xMDAgaGVpZ2h0PTc1KQotICAgICAgICAgIChyZWN0ICg4LDQwOCkgd2lkdGg9MTAw
IGhlaWdodD01MCkKLSAgICAgICAgICAocmVjdCAoOCw0NTgpIHdpZHRoPTUwIGhlaWdodD01MCkK
KyAgICAgICAgKHRvdWNoLWFjdGlvbgorICAgICAgICAgIChub25lICAgICAgICAgIAorICAgICAg
ICAgICAgKHJlY3QgKDgsOCkgd2lkdGg9MTAwIGhlaWdodD0xMDApCisgICAgICAgICAgICAocmVj
dCAoOCwyMDgpIHdpZHRoPTIwMCBoZWlnaHQ9MjUpCisgICAgICAgICAgICAocmVjdCAoOCwyMzMp
IHdpZHRoPTEwMCBoZWlnaHQ9NzUpCisgICAgICAgICAgICAocmVjdCAoOCw0MDgpIHdpZHRoPTEw
MCBoZWlnaHQ9NTApCisgICAgICAgICAgICAocmVjdCAoOCw0NTgpIHdpZHRoPTUwIGhlaWdodD01
MCkKKyAgICAgICAgICApCiAgICAgICAgICkKICAgICAgICkKICAgICApCkluZGV4OiBMYXlvdXRU
ZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tcmVnaW9uLWxheWVycy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gt
YWN0aW9uLXJlZ2lvbi1sYXllcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNDM5MzEpCisrKyBM
YXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tcmVnaW9uLWxheWVycy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3LDEwICsxNywxMCBAQAogICAgICAgICAg
IChjb250ZW50c09wYXF1ZSAxKQogICAgICAgICAgIChldmVudCByZWdpb24KICAgICAgICAgICAg
IChyZWN0ICgwLDApIHdpZHRoPTEwMCBoZWlnaHQ9MTAwKQotICAgICAgICAgICkKLSAgICAgICAg
ICAodG91Y2gtYWN0aW9uIHJlZ2lvbgotICAgICAgICAgICAgKG5vbmUgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgKHJlY3QgKDAsMCkgd2lkdGg9MTAwIGhlaWdodD0xMDApCisgICAgICAgICAg
ICAodG91Y2gtYWN0aW9uCisgICAgICAgICAgICAgIChub25lICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAocmVjdCAoMCwwKSB3aWR0aD0xMDAgaGVpZ2h0PTEwMCkKKyAgICAgICAgICAg
ICAgKQogICAgICAgICAgICAgKQogICAgICAgICAgICkKICAgICAgICAgKQpAQCAtMzEsMTEgKzMx
LDExIEBACiAgICAgICAgICAgKGV2ZW50IHJlZ2lvbgogICAgICAgICAgICAgKHJlY3QgKDAsMCkg
d2lkdGg9MjAwIGhlaWdodD0yNSkKICAgICAgICAgICAgIChyZWN0ICgwLDI1KSB3aWR0aD0xMDAg
aGVpZ2h0PTc1KQotICAgICAgICAgICkKLSAgICAgICAgICAodG91Y2gtYWN0aW9uIHJlZ2lvbgot
ICAgICAgICAgICAgKG5vbmUgICAgICAgICAgICAKLSAgICAgICAgICAgICAgKHJlY3QgKDAsMCkg
d2lkdGg9MjAwIGhlaWdodD0yNSkKLSAgICAgICAgICAgICAgKHJlY3QgKDAsMjUpIHdpZHRoPTEw
MCBoZWlnaHQ9NzUpCisgICAgICAgICAgICAodG91Y2gtYWN0aW9uCisgICAgICAgICAgICAgIChu
b25lICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAocmVjdCAoMCwwKSB3aWR0aD0yMDAg
aGVpZ2h0PTI1KQorICAgICAgICAgICAgICAgIChyZWN0ICgwLDI1KSB3aWR0aD0xMDAgaGVpZ2h0
PTc1KQorICAgICAgICAgICAgICApCiAgICAgICAgICAgICApCiAgICAgICAgICAgKQogICAgICAg
ICApCkBAIC00NSwxMCArNDUsMTAgQEAKICAgICAgICAgICAoY29udGVudHNPcGFxdWUgMSkKICAg
ICAgICAgICAoZXZlbnQgcmVnaW9uCiAgICAgICAgICAgICAocmVjdCAoMCwwKSB3aWR0aD0xMDAg
aGVpZ2h0PTEwMCkKLSAgICAgICAgICApCi0gICAgICAgICAgKHRvdWNoLWFjdGlvbiByZWdpb24K
LSAgICAgICAgICAgIChub25lICAgICAgICAgICAgCi0gICAgICAgICAgICAgIChyZWN0ICgwLDAp
IHdpZHRoPTEwMCBoZWlnaHQ9MTAwKQorICAgICAgICAgICAgKHRvdWNoLWFjdGlvbgorICAgICAg
ICAgICAgICAobm9uZSAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgKHJlY3QgKDAsMCkg
d2lkdGg9MTAwIGhlaWdodD0xMDApCisgICAgICAgICAgICAgICkKICAgICAgICAgICAgICkKICAg
ICAgICAgICApCiAgICAgICAgICkKQEAgLTY5LDEyICs2OSwxMiBAQAogICAgICAgICAgICAgKHJl
Y3QgKDAsMCkgd2lkdGg9MTAwIGhlaWdodD01MCkKICAgICAgICAgICAgIChyZWN0ICgwLDUwKSB3
aWR0aD0xNTAgaGVpZ2h0PTUwKQogICAgICAgICAgICAgKHJlY3QgKDUwLDEwMCkgd2lkdGg9MTAw
IGhlaWdodD01MCkKLSAgICAgICAgICApCi0gICAgICAgICAgKHRvdWNoLWFjdGlvbiByZWdpb24K
LSAgICAgICAgICAgIChub25lICAgICAgICAgICAgCi0gICAgICAgICAgICAgIChyZWN0ICgwLDAp
IHdpZHRoPTEwMCBoZWlnaHQ9NTApCi0gICAgICAgICAgICAgIChyZWN0ICgwLDUwKSB3aWR0aD0x
NTAgaGVpZ2h0PTUwKQotICAgICAgICAgICAgICAocmVjdCAoNTAsMTAwKSB3aWR0aD0xMDAgaGVp
Z2h0PTUwKQorICAgICAgICAgICAgKHRvdWNoLWFjdGlvbgorICAgICAgICAgICAgICAobm9uZSAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgKHJlY3QgKDAsMCkgd2lkdGg9MTAwIGhlaWdo
dD01MCkKKyAgICAgICAgICAgICAgICAocmVjdCAoMCw1MCkgd2lkdGg9MTUwIGhlaWdodD01MCkK
KyAgICAgICAgICAgICAgICAocmVjdCAoNTAsMTAwKSB3aWR0aD0xMDAgaGVpZ2h0PTUwKQorICAg
ICAgICAgICAgICApCiAgICAgICAgICAgICApCiAgICAgICAgICAgKQogICAgICAgICAgIChjaGls
ZHJlbiAyCkBAIC04OCwxMCArODgsMTAgQEAKICAgICAgICAgICAgICAgKGNvbnRlbnRzT3BhcXVl
IDEpCiAgICAgICAgICAgICAgIChldmVudCByZWdpb24KICAgICAgICAgICAgICAgICAocmVjdCAo
MCwwKSB3aWR0aD0xMDAgaGVpZ2h0PTEwMCkKLSAgICAgICAgICAgICAgKQotICAgICAgICAgICAg
ICAodG91Y2gtYWN0aW9uIHJlZ2lvbgotICAgICAgICAgICAgICAgIChub25lICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgKHJlY3QgKDAsMCkgd2lkdGg9MTAwIGhlaWdodD0xMDAp
CisgICAgICAgICAgICAgICAgKHRvdWNoLWFjdGlvbgorICAgICAgICAgICAgICAgICAgKG5vbmUg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgKHJlY3QgKDAsMCkgd2lkdGg9
MTAwIGhlaWdodD0xMDApCisgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgKQog
ICAgICAgICAgICAgICApCiAgICAgICAgICAgICApCkluZGV4OiBMYXlvdXRUZXN0cy9wb2ludGVy
ZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tcmVnaW9uLXBhbi14LXktZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1yZWdp
b24tcGFuLXgteS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI0MzkzMSkKKysrIExheW91dFRlc3Rz
L3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1yZWdpb24tcGFuLXgteS1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTksMjMgKzksMjMgQEAKICAgICAgIChiYWNrZ3JvdW5kQ29s
b3IgI0ZGRkZGRikKICAgICAgIChldmVudCByZWdpb24KICAgICAgICAgKHJlY3QgKDAsMCkgd2lk
dGg9ODAwIGhlaWdodD0xMDIxKQotICAgICAgKQotICAgICAgKHRvdWNoLWFjdGlvbiByZWdpb24K
LSAgICAgICAgKG5vbmUgICAgICAgIAotICAgICAgICAgIChyZWN0ICg4LDgwOCkgd2lkdGg9MTAw
IGhlaWdodD0xMDApCi0gICAgICAgICkKLSAgICAgICAgKHBhbi14ICAgICAgICAKLSAgICAgICAg
ICAocmVjdCAoOCw4KSB3aWR0aD0xMDAgaGVpZ2h0PTEwMCkKLSAgICAgICAgICAocmVjdCAoOCwy
MDgpIHdpZHRoPTIwMCBoZWlnaHQ9MjUpCi0gICAgICAgICAgKHJlY3QgKDgsMjMzKSB3aWR0aD0x
MDAgaGVpZ2h0PTc1KQotICAgICAgICAgIChyZWN0ICgxMDgsNDA4KSB3aWR0aD0xMDAgaGVpZ2h0
PTI1KQotICAgICAgICAgIChyZWN0ICg4LDYwOCkgd2lkdGg9MjAwIGhlaWdodD0yNSkKLSAgICAg
ICAgICAocmVjdCAoOCw2MzMpIHdpZHRoPTEwMCBoZWlnaHQ9NzUpCi0gICAgICAgICAgKHJlY3Qg
KDEwOCw4MDgpIHdpZHRoPTEwMCBoZWlnaHQ9MjUpCi0gICAgICAgICkKLSAgICAgICAgKHBhbi15
ICAgICAgICAKLSAgICAgICAgICAocmVjdCAoOCw0MDgpIHdpZHRoPTIwMCBoZWlnaHQ9MjUpCi0g
ICAgICAgICAgKHJlY3QgKDgsNDMzKSB3aWR0aD0xMDAgaGVpZ2h0PTc1KQorICAgICAgICAodG91
Y2gtYWN0aW9uCisgICAgICAgICAgKG5vbmUgICAgICAgICAgCisgICAgICAgICAgICAocmVjdCAo
OCw4MDgpIHdpZHRoPTEwMCBoZWlnaHQ9MTAwKQorICAgICAgICAgICkKKyAgICAgICAgICAocGFu
LXggICAgICAgICAgCisgICAgICAgICAgICAocmVjdCAoOCw4KSB3aWR0aD0xMDAgaGVpZ2h0PTEw
MCkKKyAgICAgICAgICAgIChyZWN0ICg4LDIwOCkgd2lkdGg9MjAwIGhlaWdodD0yNSkKKyAgICAg
ICAgICAgIChyZWN0ICg4LDIzMykgd2lkdGg9MTAwIGhlaWdodD03NSkKKyAgICAgICAgICAgIChy
ZWN0ICgxMDgsNDA4KSB3aWR0aD0xMDAgaGVpZ2h0PTI1KQorICAgICAgICAgICAgKHJlY3QgKDgs
NjA4KSB3aWR0aD0yMDAgaGVpZ2h0PTI1KQorICAgICAgICAgICAgKHJlY3QgKDgsNjMzKSB3aWR0
aD0xMDAgaGVpZ2h0PTc1KQorICAgICAgICAgICAgKHJlY3QgKDEwOCw4MDgpIHdpZHRoPTEwMCBo
ZWlnaHQ9MjUpCisgICAgICAgICAgKQorICAgICAgICAgIChwYW4teSAgICAgICAgICAKKyAgICAg
ICAgICAgIChyZWN0ICg4LDQwOCkgd2lkdGg9MjAwIGhlaWdodD0yNSkKKyAgICAgICAgICAgIChy
ZWN0ICg4LDQzMykgd2lkdGg9MTAwIGhlaWdodD03NSkKKyAgICAgICAgICApCiAgICAgICAgICkK
ICAgICAgICkKICAgICApCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366816</attachid>
            <date>2019-04-05 08:51:33 -0700</date>
            <delta_ts>2019-04-06 07:24:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>event-region-class-2.patch</filename>
            <type>text/plain</type>
            <size>61979</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBACisyMDE5LTA0LTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDb21iaW5lIGV2ZW50IGFuZCB0
b3VjaCBhY3Rpb24gcmVnaW9ucyBpbnRvIGEgc2luZ2xlIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY2NDQKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ5NjQzNjE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggcmVwbGFjZXMgdGhlIGV4aXN0aW5nIFRvdWNoQWN0aW9uUmVn
aW9uIGNsYXNzIHdpdGggdGhlIG1vcmUgZ2VuZXJhbCBFdmVudFJlZ2lvbiBjbGFzcy4KKyAgICAg
ICAgSXQgY29sbGVjdHMgYm90aCB0aGUgb3ZlcmFsbCBldmVudCByZWdpb24gYW5kIHRoZSB0b3Vj
aCBhY3Rpb24gcmVnaW9ucy4gVGhpcyBhdm9pZHMgZHVwbGljYXRpb24KKyAgICAgICAgYW5kIHNp
bXBsaWZpZXMgdGhlIGNvZGUuCisKKyAgICAgICAgVGhlIHBhdGNoIGFsc28gYWRkcyBzZXJpYWxp
emF0aW9uIHN1cHBvcnQgZm9yIEV2ZW50UmVnaW9uLCBzbyB0b3VjaC1hY3Rpb24gcmVnaW9ucyBn
ZXRzIHBhc3NlZAorICAgICAgICB0byB0aGUgVUkgcHJvY2VzcyB0b28uCisKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpzZXRFdmVudFJlZ2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpkdW1wUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpzZXRUb3VjaEFjdGlvblJlZ2lvbik6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6ZXZlbnRSZWdpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllcjo6dG91Y2hBY3Rpb25SZWdpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRFdmVudFJlZ2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldFRvdWNoQWN0aW9uUmVnaW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2Nv
YS5oOgorICAgICAgICAqIHJlbmRlcmluZy9FdmVudFJlZ2lvbi5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Ub3VjaEFjdGlvblJlZ2lvbi5jcHAuCisgICAgICAgIChX
ZWJDb3JlOjpFdmVudFJlZ2lvbjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudFJlZ2lvbjo6dW5pdGUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246OnRy
YW5zbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFJlZ2lvbjo6dW5pdGVUb3VjaEFjdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246OnRvdWNoQWN0aW9uc0ZvclBvaW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViQ29y
ZTo6VG91Y2hBY3Rpb25SZWdpb246OnVuaXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlRvdWNoQWN0aW9uUmVnaW9uOjphY3Rpb25zRm9yUG9pbnQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VG91Y2hBY3Rpb25SZWdpb246OnRyYW5zbGF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9Ub3VjaEFjdGlvblJlZ2lvbi5oLgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRSZWdpb246OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246
OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UmVnaW9uOjpoYXNUb3Vj
aEFjdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFJlZ2lvbjo6ZGVjb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRvdWNoQWN0aW9uUmVnaW9uOjppc0VtcHR5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlRvdWNoQWN0aW9uUmVnaW9uOjpvcGVyYXRvcj09IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1BhaW50
SW5mby5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29sbGVjdEV2
ZW50UmVnaW9uRm9yRnJhZ21lbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlRXZlbnRSZWdpb24pOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9Ub3VjaEFj
dGlvblJlZ2lvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1RvdWNoQWN0aW9u
UmVnaW9uLmg6IFJlbW92ZWQuCisKIDIwMTktMDQtMDUgIERhdmlkIEtpbHplciAgPGRka2lsemVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNDM4ODcpOiBUcnkgdG8gZml4IFdp
bmRvd3MgYnVpbGRzIGJ5IGluY2x1ZGluZyA8d3RmL0lzb01hbGxvYy5oPgpJbmRleDogU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xOTUwLDYgKzE5NTAsNyBAQCByZW5kZXJpbmcvQ1NTRmlsdGVyLmNw
cAogcmVuZGVyaW5nL0NsaXBSZWN0LmNwcAogcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcAogcmVu
ZGVyaW5nL0VsbGlwc2lzQm94LmNwcAorcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmNwcAogcmVuZGVy
aW5nL0ZsZXhpYmxlQm94QWxnb3JpdGhtLmNwcAogcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQu
Y3BwCiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcApAQCAtMjA2OCw3ICsyMDY5LDYgQEAg
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdAogcmVuZGVyaW5nL1RleHRE
ZWNvcmF0aW9uUGFpbnRlci5jcHAKIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKIHJlbmRl
cmluZy9UZXh0UGFpbnRlci5jcHAKLXJlbmRlcmluZy9Ub3VjaEFjdGlvblJlZ2lvbi5jcHAKIHJl
bmRlcmluZy9UcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guY3BwCiAKIHJlbmRlcmluZy9saW5l
L0xpbmVCcmVha2VyLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQzOTMxKQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00
ODIyLDcgKzQ4MjIsNyBAQAogCQlFNEE4MTRENDFDNkRFQzQwMDBCRjg1QUMgLyogQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0QTgxNEQzMUM2REVDNDAwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlv
bi5oICovOyB9OwogCQlFNEE4MTREQTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdl
SW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEE4MTREOTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0
aW9uLmggKi87IH07CiAJCUU0QTgxNEUwMUM3MzM4RUIwMEJGODVBQyAvKiBJZENoYW5nZUludmFs
aWRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTRBODE0REYxQzczMzhFQjAwQkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi87IH07
Ci0JCUU0QThEMjEwMjI1MzhGRDIwMEE4NDYzQyAvKiBUb3VjaEFjdGlvblJlZ2lvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBOEQyMEYyMjUzOEZE
MTAwQTg0NjNDIC8qIFRvdWNoQWN0aW9uUmVnaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTRBOEQyMTYyMjU3OERCNzAwQTg0NjNDIC8qIEV2
ZW50UmVnaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNEE4RDIxNDIyNTc4REEwMDBBODQ2M0MgLyogRXZlbnRSZWdpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEFFN0MxNjE3RDFCQjk1MDAw
OUZCMzEgLyogRWxlbWVudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNEFFN0MxNTE3RDFCQjk1MDAwOUZCMzEgLyogRWxlbWVudEl0ZXJh
dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTRBRTdDMUExN0QyMzIzNTAwMDlGQjMxIC8qIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEFFN0MxOTE3RDIz
MjM1MDAwOUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEFGQ0ZBNTBEQUYyOUEzMDBGNUY1
NUMgLyogVW5pdEJlemllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTRBRkNGQTQwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCAqLzsgfTsK
QEAgLTE0ODg0LDggKzE0ODg0LDggQEAKIAkJRTRBODE0RDkxQzcwRTEwRDAwQkY4NUFDIC8qIEF0
dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTRBODE0REQxQzczMzhEMTAwQkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElkQ2hhbmdlSW52YWxp
ZGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBODE0REYxQzczMzhF
QjAwQkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IElkQ2hhbmdlSW52YWxpZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUU0QThEMjBDMjI1MzhGQzcwMEE4NDYzQyAvKiBUb3VjaEFjdGlvblJlZ2lvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUb3VjaEFjdGlvblJlZ2lv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUU0QThEMjBGMjI1MzhGRDEwMEE4
NDYzQyAvKiBUb3VjaEFjdGlvblJlZ2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUb3VjaEFjdGlvblJlZ2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
NEE4RDIxNDIyNTc4REEwMDBBODQ2M0MgLyogRXZlbnRSZWdpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRSZWdpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTRBOEQyMTUyMjU3OERBMDAwQTg0NjNDIC8qIEV2ZW50UmVnaW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50UmVnaW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBRTdDMTUxN0QxQkI5NTAwMDlGQjMxIC8qIEVsZW1lbnRJ
dGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50SXRlcmF0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBRTdDMTkxN0QyMzIzNTAwMDlG
QjMxIC8qIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0QUZDRkE0MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaXRCZXppZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTI2ODAxLDYgKzI2ODAxLDggQEAKIAkJCQkwRjUzRkI4MzIxM0IxQkI4
MDBDNDBEMzQgLyogQ1NTRmlsdGVyLmggKi8sCiAJCQkJQThDRkY2Q0EwQTE1NjFDRDAwMEE0MjM0
IC8qIEVsbGlwc2lzQm94LmNwcCAqLywKIAkJCQlBOENGRjZCRDBBMTU2MTE4MDAwQTQyMzQgLyog
RWxsaXBzaXNCb3guaCAqLywKKwkJCQlFNEE4RDIxNTIyNTc4REEwMDBBODQ2M0MgLyogRXZlbnRS
ZWdpb24uY3BwICovLAorCQkJCUU0QThEMjE0MjI1NzhEQTAwMEE4NDYzQyAvKiBFdmVudFJlZ2lv
bi5oICovLAogCQkJCUE4Q0ZGMDQ4MEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0
LmNwcCAqLywKIAkJCQlBOENGRjA0QTBBMTU0RjA5MDAwQTQyMzQgLyogRml4ZWRUYWJsZUxheW91
dC5oICovLAogCQkJCTk0REQ3OTcyMUU1NEUzQTIwMDU4RkI4MCAvKiBGbGV4aWJsZUJveEFsZ29y
aXRobS5jcHAgKi8sCkBAIC0yNzA1Nyw4ICsyNzA1OSw2IEBACiAJCQkJMUMxOERBNTcxODFBRjZB
NTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmggKi8sCiAJCQkJRTRDOTFBMEYxODAyMzQzOTAwQTE3
RjZEIC8qIFRleHRQYWludFN0eWxlLmNwcCAqLywKIAkJCQlFNEM5MUEwRDE4MDIzNDMxMDBBMTdG
NkQgLyogVGV4dFBhaW50U3R5bGUuaCAqLywKLQkJCQlFNEE4RDIwQzIyNTM4RkM3MDBBODQ2M0Mg
LyogVG91Y2hBY3Rpb25SZWdpb24uY3BwICovLAotCQkJCUU0QThEMjBGMjI1MzhGRDEwMEE4NDYz
QyAvKiBUb3VjaEFjdGlvblJlZ2lvbi5oICovLAogCQkJCTExMDBGQzZFMUZEQjNDNEQwMEREOTYx
QiAvKiBUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guY3BwICovLAogCQkJCTM3RkM5NkRBMTEw
NEVENzEwMDNFMUZBRCAvKiBUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaCAqLywKIAkJCQlC
Q0EyNTcxNDEyOTNDMDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggKi8sCkBA
IC0yOTUwMCw3ICsyOTUwMCw2IEBACiAJCQkJRkRBMTVFQTgxMkIwM0VFMTAwM0E1ODNBIC8qIEpT
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUFFMTJCMDNF
RTEwMDNBNTgzQSAvKiBKU0F1ZGlvTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1
RUIwMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvTm9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
RTRBOEQyMTAyMjUzOEZEMjAwQTg0NjNDIC8qIFRvdWNoQWN0aW9uUmVnaW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGREExNUVCNDEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1BhcmFtLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGREExNUVCNjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1Byb2Nl
c3NpbmdFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU4RUYwNDMxNzFDOEZGOTAwOUI0OEMz
IC8qIEpTQXVkaW9UcmFjay5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTc4Niw2ICsyOTc4NSw3IEBA
CiAJCQkJRTQ0NjE0M0EwQ0Q2ODlDODAwRkFEQTc1IC8qIEpTSFRNTE1lZGlhRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFFMkFFNUMwQTFEMjZGMjAwQjQyQjI1IC8qIEpTSFRNTE1lbnVF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFN0ExODBBMTlDM0Q2MDA3RkI4QzUgLyog
SlNIVE1MTWV0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0QThEMjE2MjI1NzhEQjcw
MEE4NDYzQyAvKiBFdmVudFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCQkUyNjcxMUFG
QjNGMjAwMDVFQTAzIC8qIEpTSFRNTE1ldGVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFFMkFCMkEwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTE1vZEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMzA1QzdBMEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCShyZXZpc2lvbiAyNDM5MzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDExLDE4ICs0MTEsMTEgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpzZXRTaGFwZUxheWVy
V2luZFJ1bAogI2VuZGlmCiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllcjo6c2V0RXZlbnRSZWdpb24o
UmVnaW9uJiYgZXZlbnRSZWdpb24pCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldEV2ZW50UmVnaW9u
KEV2ZW50UmVnaW9uJiYgZXZlbnRSZWdpb24pCiB7CiAgICAgbV9ldmVudFJlZ2lvbiA9IFdURk1v
dmUoZXZlbnRSZWdpb24pOwogfQogCi0jaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQotdm9pZCBH
cmFwaGljc0xheWVyOjpzZXRUb3VjaEFjdGlvblJlZ2lvbihUb3VjaEFjdGlvblJlZ2lvbiYmIHRv
dWNoQWN0aW9uUmVnaW9uKQotewotICAgIG1fdG91Y2hBY3Rpb25SZWdpb24gPSBXVEZNb3ZlKHRv
dWNoQWN0aW9uUmVnaW9uKTsKLX0KLSNlbmRpZgotCiB2b2lkIEdyYXBoaWNzTGF5ZXI6Om5vdGVE
ZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWRJbmNsdWRpbmdEZXNjZW5kYW50cygpCiB7CiAg
ICAgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CkBAIC05MzMsMTMgKzkyNiw5IEBA
IHZvaWQgR3JhcGhpY3NMYXllcjo6ZHVtcFByb3BlcnRpZXMoVGV4dFMKICAgICAgICAgdHMgPDwg
aW5kZW50IDw8ICIpXG4iOwogICAgIH0KIAotICAgIGlmIChiZWhhdmlvciAmIExheWVyVHJlZUFz
VGV4dEluY2x1ZGVFdmVudFJlZ2lvbikgewotICAgICAgICBpZiAoIW1fZXZlbnRSZWdpb24uaXNF
bXB0eSgpKQotICAgICAgICAgICAgdHMgPDwgaW5kZW50IDw8ICIoZXZlbnQgcmVnaW9uIiA8PCBt
X2V2ZW50UmVnaW9uIDw8ICIpXG4iOwotI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLSAgICAg
ICAgaWYgKCFtX3RvdWNoQWN0aW9uUmVnaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRzIDw8
IGluZGVudCA8PCAiKHRvdWNoLWFjdGlvbiByZWdpb24iIDw8IG1fdG91Y2hBY3Rpb25SZWdpb24g
PDwgIilcbiI7Ci0jZW5kaWYKKyAgICBpZiAoYmVoYXZpb3IgJiBMYXllclRyZWVBc1RleHRJbmNs
dWRlRXZlbnRSZWdpb24gJiYgIW1fZXZlbnRSZWdpb24uaXNFbXB0eSgpKSB7CisgICAgICAgIHRz
IDw8IGluZGVudCA8PCAiKGV2ZW50IHJlZ2lvbiIgPDwgbV9ldmVudFJlZ2lvbjsKKyAgICAgICAg
dHMgPDwgaW5kZW50IDw8ICIpXG4iOwogICAgIH0KIAogICAgIGlmIChiZWhhdmlvciAmIExheWVy
VHJlZUFzVGV4dEluY2x1ZGVQYWludGluZ1BoYXNlcyAmJiBwYWludGluZ1BoYXNlKCkpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
LmgJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5j
bHVkZSAiQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJFdmVudFJl
Z2lvbi5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJGbG9hdFBv
aW50LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCkBAIC0zNyw3ICszOCw2IEBACiAjaW5j
bHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlNj
cm9sbGFibGVBcmVhLmgiCi0jaW5jbHVkZSAiVG91Y2hBY3Rpb25SZWdpb24uaCIKICNpbmNsdWRl
ICJUcmFuc2Zvcm1PcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KQEAgLTQ1NCwxMiArNDU0LDkgQEAgcHVibGljOgogICAgIFdpbmRS
dWxlIHNoYXBlTGF5ZXJXaW5kUnVsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaGFw
ZUxheWVyV2luZFJ1bGUoV2luZFJ1bGUpOwogCi0gICAgY29uc3QgUmVnaW9uJiBldmVudFJlZ2lv
bigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRSZWdpb247IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
RXZlbnRSZWdpb24oUmVnaW9uJiYpOwotI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLSAgICBj
b25zdCBUb3VjaEFjdGlvblJlZ2lvbiYgdG91Y2hBY3Rpb25SZWdpb24oKSBjb25zdCB7IHJldHVy
biBtX3RvdWNoQWN0aW9uUmVnaW9uOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFRvdWNoQWN0aW9u
UmVnaW9uKFRvdWNoQWN0aW9uUmVnaW9uJiYpOwotI2VuZGlmCisgICAgY29uc3QgRXZlbnRSZWdp
b24mIGV2ZW50UmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFJlZ2lvbjsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXRFdmVudFJlZ2lvbihFdmVudFJlZ2lvbiYmKTsKKwogICAgIC8vIFRyYW5z
aXRpb25zIGFyZSBpZGVudGlmaWVkIGJ5IGEgc3BlY2lhbCBhbmltYXRpb24gbmFtZSB0aGF0IGNh
bm5vdCBjbGFzaCB3aXRoIGEga2V5ZnJhbWUgaWRlbnRpZmllci4KICAgICBzdGF0aWMgU3RyaW5n
IGFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlJRCk7CiAKQEAgLTcz
NCwxMCArNzMxLDcgQEAgcHJvdGVjdGVkOgogICAgIEZsb2F0Um91bmRlZFJlY3QgbV9iYWNrZHJv
cEZpbHRlcnNSZWN0OwogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbV9hbmltYXRpb25FeHRlbnQ7
CiAKLSAgICBSZWdpb24gbV9ldmVudFJlZ2lvbjsKLSNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMp
Ci0gICAgVG91Y2hBY3Rpb25SZWdpb24gbV90b3VjaEFjdGlvblJlZ2lvbjsKLSNlbmRpZgorICAg
IEV2ZW50UmVnaW9uIG1fZXZlbnRSZWdpb247CiAjaWYgVVNFKENBKQogICAgIFdpbmRSdWxlIG1f
c2hhcGVMYXllcldpbmRSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKICAgICBQYXRoIG1fc2hh
cGVMYXllclBhdGg7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
Z2lvbi5jcHAJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlZ2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1OSw3ICs2NTksNiBAQCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjCiAgICAgICAgIGZvciAoYXV0byYg
cmVjdCA6IHJlZ2lvbi5yZWN0cygpKQogICAgICAgICAgICAgdHMgPDwgaW5kZW50IDw8ICIocmVj
dCAiIDw8IHJlY3QgPDwgIilcbiI7CiAgICAgfQotICAgIHRzIDw8IGluZGVudDsKIAogICAgIHJl
dHVybiB0czsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkocmV2aXNpb24gMjQzOTMxKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTg0LDcgKzk4NCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRT
aGFwZUxheWVyV2luZFIKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoV2luZFJ1bGVDaGFu
Z2VkKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEV2ZW50UmVnaW9uKFJlZ2lvbiYm
IGV2ZW50UmVnaW9uKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEV2ZW50UmVnaW9uKEV2ZW50
UmVnaW9uJiYgZXZlbnRSZWdpb24pCiB7CiAgICAgaWYgKGV2ZW50UmVnaW9uID09IG1fZXZlbnRS
ZWdpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTk5MywxNyArOTkzLDYgQEAgdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnNldEV2ZW50UmVnaW9uKFJlZwogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdl
ZChFdmVudFJlZ2lvbkNoYW5nZWQsIG1faXNDb21taXR0aW5nQ2hhbmdlcyA/IERvbnRTY2hlZHVs
ZUZsdXNoIDogU2NoZWR1bGVGbHVzaCk7CiB9CiAKLSNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMp
Ci12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VG91Y2hBY3Rpb25SZWdpb24oVG91Y2hBY3Rpb25S
ZWdpb24mJiB0b3VjaEFjdGlvblJlZ2lvbikKLXsKLSAgICBpZiAodG91Y2hBY3Rpb25SZWdpb24g
PT0gbV90b3VjaEFjdGlvblJlZ2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NM
YXllcjo6c2V0VG91Y2hBY3Rpb25SZWdpb24oV1RGTW92ZSh0b3VjaEFjdGlvblJlZ2lvbikpOwot
ICAgIC8vIEZJWE1FOiBJbnZhbGlkYXRlIGFuZCBwYXNzIHRvIHBsYXRmb3JtIGxheWVyLgotfQot
I2VuZGlmCi0KIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzaG91bGRSZXBhaW50T25TaXplQ2hhbmdl
KCkgY29uc3QKIHsKICAgICByZXR1cm4gZHJhd3NDb250ZW50KCkgJiYgIXRpbGVkQmFja2luZygp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmgJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjQsMTAgKzEyNCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNoYXBl
TGF5ZXJQYXRoKGNvbnN0IFBhdGgmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFNoYXBlTGF5ZXJXaW5kUnVsZShXaW5kUnVsZSkgb3ZlcnJpZGU7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEV2ZW50UmVnaW9uKFJlZ2lvbiYmKSBvdmVycmlkZTsKLSNpZiBFTkFC
TEUoUE9JTlRFUl9FVkVOVFMpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUb3VjaEFjdGlv
blJlZ2lvbihUb3VjaEFjdGlvblJlZ2lvbiYmKSBvdmVycmlkZTsKLSNlbmRpZgorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0RXZlbnRSZWdpb24oRXZlbnRSZWdpb24mJikgb3ZlcnJpZGU7CisK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKE1vbm90b25pY1RpbWUp
IG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygpIG92
ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0
Zm9ybUNBTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAkocmV2aXNpb24gMjQzOTMxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzNCw3ICsyMzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXaW5kUnVsZSBzaGFw
ZVdpbmRSdWxlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaGFwZVdpbmRSdWxl
KFdpbmRSdWxlKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RXZlbnRSZWdpb24oY29uc3Qg
UmVnaW9uJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRFdmVudFJlZ2lvbihjb25zdCBFdmVu
dFJlZ2lvbiYpID0gMDsKICAgICAKICAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFw
cGVhcmFuY2UgY3VzdG9tQXBwZWFyYW5jZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQ3VzdG9tQXBwZWFyYW5jZShHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlKSA9
IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgJKHJldmlzaW9uIDI0Mzkz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBwdWJsaWM6
CiAgICAgR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBjdXN0b21BcHBlYXJhbmNlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jdXN0b21BcHBlYXJhbmNlOyB9CiAgICAgdm9pZCB1
cGRhdGVDdXN0b21BcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UpIG92
ZXJyaWRlOwogCi0gICAgdm9pZCBzZXRFdmVudFJlZ2lvbihjb25zdCBSZWdpb24mKSBvdmVycmlk
ZSB7IH0KKyAgICB2b2lkIHNldEV2ZW50UmVnaW9uKGNvbnN0IEV2ZW50UmVnaW9uJikgb3ZlcnJp
ZGUgeyB9CiAKICAgICBHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJ
RCgpIGNvbnN0IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oCShyZXZp
c2lvbiAyNDM5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUxheWVyV2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw3ICsxNTcsNyBAQCBw
dWJsaWM6CiAgICAgR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBjdXN0b21BcHBlYXJh
bmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jdXN0b21BcHBlYXJhbmNlOyB9CiAgICAg
dm9pZCB1cGRhdGVDdXN0b21BcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFu
Y2UgY3VzdG9tQXBwZWFyYW5jZSkgb3ZlcnJpZGUgeyBtX2N1c3RvbUFwcGVhcmFuY2UgPSBjdXN0
b21BcHBlYXJhbmNlOyB9CiAKLSAgICB2b2lkIHNldEV2ZW50UmVnaW9uKGNvbnN0IFJlZ2lvbiYp
IG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0RXZlbnRSZWdpb24oY29uc3QgRXZlbnRSZWdpb24m
KSBvdmVycmlkZSB7IH0KIAogICAgIEdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVk
ZGVkVmlld0lEKCkgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9FdmVudFJlZ2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0V2ZW50UmVnaW9uLmNwcAkocmV2aXNpb24gMjQzOTMxKQkoZnJvbSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVG91Y2hBY3Rpb25SZWdpb24uY3BwOjI0MzkzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVG91Y2hB
Y3Rpb25SZWdpb24uaCIKKworI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjb25zdGV4cHIgdW5zaWduZWQgdG9JbmRleChUb3VjaEFjdGlvbiB0b3Vj
aEFjdGlvbikKK3sKKyAgICBzd2l0Y2ggKHRvdWNoQWN0aW9uKSB7CisgICAgY2FzZSBUb3VjaEFj
dGlvbjo6Tm9uZToKKyAgICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBUb3VjaEFjdGlvbjo6TWFu
aXB1bGF0aW9uOgorICAgICAgICByZXR1cm4gMTsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpQYW5Y
OgorICAgICAgICByZXR1cm4gMjsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpQYW5ZOgorICAgICAg
ICByZXR1cm4gMzsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpQaW5jaFpvb206CisgICAgICAgIHJl
dHVybiA0OworICAgIGNhc2UgVG91Y2hBY3Rpb246OkF1dG86CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworY29uc3Rl
eHByIFRvdWNoQWN0aW9uIHRvVG91Y2hBY3Rpb24odW5zaWduZWQgaW5kZXgpCit7CisgICAgc3dp
dGNoIChpbmRleCkgeworICAgIGNhc2UgMDoKKyAgICAgICAgcmV0dXJuIFRvdWNoQWN0aW9uOjpO
b25lOworICAgIGNhc2UgMToKKyAgICAgICAgcmV0dXJuIFRvdWNoQWN0aW9uOjpNYW5pcHVsYXRp
b247CisgICAgY2FzZSAyOgorICAgICAgICByZXR1cm4gVG91Y2hBY3Rpb246OlBhblg7CisgICAg
Y2FzZSAzOgorICAgICAgICByZXR1cm4gVG91Y2hBY3Rpb246OlBhblk7CisgICAgY2FzZSA0Ogor
ICAgICAgICByZXR1cm4gVG91Y2hBY3Rpb246OlBpbmNoWm9vbTsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IFRvdWNoQWN0aW9uOjpBdXRvOworfQorCitUb3VjaEFjdGlvblJlZ2lvbjo6VG91Y2hBY3Rpb25S
ZWdpb24oKSA9IGRlZmF1bHQ7CisKK3ZvaWQgVG91Y2hBY3Rpb25SZWdpb246OnVuaXRlKGNvbnN0
IFJlZ2lvbiYgdG91Y2hSZWdpb24sIE9wdGlvblNldDxUb3VjaEFjdGlvbj4gdG91Y2hBY3Rpb25z
KQoreworICAgIGZvciAoYXV0byB0b3VjaEFjdGlvbiA6IHRvdWNoQWN0aW9ucykgeworICAgICAg
ICBpZiAodG91Y2hBY3Rpb24gPT0gVG91Y2hBY3Rpb246OkF1dG8pCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgYXV0byBpbmRleCA9IHRvSW5kZXgodG91Y2hBY3Rpb24pOworICAgICAgICBp
ZiAobV9yZWdpb25zLnNpemUoKSA8IGluZGV4ICsgMSkKKyAgICAgICAgICAgIG1fcmVnaW9ucy5n
cm93KGluZGV4ICsgMSk7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
cmVnaW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBhdXRvIHJlZ2lvblRvdWNoQWN0aW9uID0g
dG9Ub3VjaEFjdGlvbihpKTsKKyAgICAgICAgaWYgKHRvdWNoQWN0aW9ucy5jb250YWlucyhyZWdp
b25Ub3VjaEFjdGlvbikpCisgICAgICAgICAgICBtX3JlZ2lvbnNbaV0udW5pdGUodG91Y2hSZWdp
b24pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3JlZ2lvbnNbaV0uc3VidHJhY3QodG91
Y2hSZWdpb24pOworICAgIH0KK30KKworT3B0aW9uU2V0PFRvdWNoQWN0aW9uPiBUb3VjaEFjdGlv
blJlZ2lvbjo6YWN0aW9uc0ZvclBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK3sK
KyAgICBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+IGFjdGlvbnM7CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9yZWdpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX3JlZ2lv
bnNbaV0uY29udGFpbnMocG9pbnQpKSB7CisgICAgICAgICAgICBhdXRvIGFjdGlvbiA9IHRvVG91
Y2hBY3Rpb24oaSk7CisgICAgICAgICAgICBhY3Rpb25zLmFkZChhY3Rpb24pOworICAgICAgICAg
ICAgaWYgKGFjdGlvbiA9PSBUb3VjaEFjdGlvbjo6Tm9uZSB8fCBhY3Rpb24gPT0gVG91Y2hBY3Rp
b246Ok1hbmlwdWxhdGlvbikKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiBhY3Rpb25zOworfQorCit2b2lkIFRvdWNoQWN0aW9uUmVnaW9uOjp0
cmFuc2xhdGUoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIGZvciAoYXV0byYgcmVnaW9u
IDogbV9yZWdpb25zKQorICAgICAgICByZWdpb24udHJhbnNsYXRlKG9mZnNldCk7Cit9CisKK1Rl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFRvdWNoQWN0aW9uIHRvdWNoQWN0
aW9uKQoreworICAgIHN3aXRjaCAodG91Y2hBY3Rpb24pIHsKKyAgICBjYXNlIFRvdWNoQWN0aW9u
OjpOb25lOgorICAgICAgICByZXR1cm4gdHMgPDwgIm5vbmUiOworICAgIGNhc2UgVG91Y2hBY3Rp
b246Ok1hbmlwdWxhdGlvbjoKKyAgICAgICAgcmV0dXJuIHRzIDw8ICJtYW5pcHVsYXRpb24iOwor
ICAgIGNhc2UgVG91Y2hBY3Rpb246OlBhblg6CisgICAgICAgIHJldHVybiB0cyA8PCAicGFuLXgi
OworICAgIGNhc2UgVG91Y2hBY3Rpb246OlBhblk6CisgICAgICAgIHJldHVybiB0cyA8PCAicGFu
LXkiOworICAgIGNhc2UgVG91Y2hBY3Rpb246OlBpbmNoWm9vbToKKyAgICAgICAgcmV0dXJuIHRz
IDw8ICJwaW5jaC16b29tIjsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpBdXRvOgorICAgICAgICBy
ZXR1cm4gdHMgPDwgImF1dG8iOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFRvdWNoQWN0aW9uUmVnaW9uJiB0b3VjaEFjdGlvblJlZ2lvbikKK3sKKyAgICB0cyA8
PCAiXG4iOworICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdWNoQWN0
aW9uUmVnaW9uLm1fcmVnaW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKHRvdWNo
QWN0aW9uUmVnaW9uLm1fcmVnaW9uc1tpXS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBUZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBpbmRlbnRTY29wZSh0
cyk7CisgICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIigiIDw8IHRvVG91Y2hBY3Rpb24oaSk7
CisgICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgdG91Y2hBY3Rpb25SZWdpb24ubV9yZWdpb25z
W2ldIDw8ICIpXG4iOworICAgICAgICB9CisgICAgfQorICAgIHRzIDw8IGluZGVudDsKKworICAg
IHJldHVybiB0czsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9FdmVudFJlZ2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0V2ZW50UmVnaW9uLmNwcAkocmV2aXNpb24gMjQzOTMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0V2ZW50UmVnaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTIgKzI0LDQ0
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRvdWNoQWN0aW9uUmVn
aW9uLmgiCisjaW5jbHVkZSAiRXZlbnRSZWdpb24uaCIKIAotI2lmIEVOQUJMRShQT0lOVEVSX0VW
RU5UUykKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K0V2ZW50UmVnaW9uOjpFdmVudFJlZ2lvbigpID0gZGVmYXVsdDsKKworYm9vbCBFdmVudFJlZ2lv
bjo6b3BlcmF0b3I9PShjb25zdCBFdmVudFJlZ2lvbiYgb3RoZXIpIGNvbnN0Cit7CisjaWYgRU5B
QkxFKFBPSU5URVJfRVZFTlRTKQorICAgIGlmIChtX3RvdWNoQWN0aW9uUmVnaW9ucyAhPSBvdGhl
ci5tX3RvdWNoQWN0aW9uUmVnaW9ucykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisg
ICAgcmV0dXJuIG1fcmVnaW9uID09IG90aGVyLm1fcmVnaW9uOworfQorCit2b2lkIEV2ZW50UmVn
aW9uOjp1bml0ZShjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQoreworICAgIG1fcmVnaW9uLnVuaXRlKHJlZ2lvbik7CisKKyNpZiBFTkFCTEUoUE9JTlRFUl9F
VkVOVFMpCisgICAgdW5pdGVUb3VjaEFjdGlvbnMocmVnaW9uLCBzdHlsZS5lZmZlY3RpdmVUb3Vj
aEFjdGlvbnMoKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdHlsZSk7CisjZW5kaWYKK30K
Kwordm9pZCBFdmVudFJlZ2lvbjo6dHJhbnNsYXRlKGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sK
KyAgICBtX3JlZ2lvbi50cmFuc2xhdGUob2Zmc2V0KTsKKworICAgIGZvciAoYXV0byYgdG91Y2hB
Y3Rpb25SZWdpb24gOiBtX3RvdWNoQWN0aW9uUmVnaW9ucykKKyAgICAgICAgdG91Y2hBY3Rpb25S
ZWdpb24udHJhbnNsYXRlKG9mZnNldCk7Cit9CisKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMp
CisKIGNvbnN0ZXhwciB1bnNpZ25lZCB0b0luZGV4KFRvdWNoQWN0aW9uIHRvdWNoQWN0aW9uKQog
ewogICAgIHN3aXRjaCAodG91Y2hBY3Rpb24pIHsKQEAgLTcwLDMzICsxMDIsMzEgQEAgY29uc3Rl
eHByIFRvdWNoQWN0aW9uIHRvVG91Y2hBY3Rpb24odW5zaQogICAgIHJldHVybiBUb3VjaEFjdGlv
bjo6QXV0bzsKIH0KIAotVG91Y2hBY3Rpb25SZWdpb246OlRvdWNoQWN0aW9uUmVnaW9uKCkgPSBk
ZWZhdWx0OwotCi12b2lkIFRvdWNoQWN0aW9uUmVnaW9uOjp1bml0ZShjb25zdCBSZWdpb24mIHRv
dWNoUmVnaW9uLCBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+IHRvdWNoQWN0aW9ucykKK3ZvaWQgRXZl
bnRSZWdpb246OnVuaXRlVG91Y2hBY3Rpb25zKGNvbnN0IFJlZ2lvbiYgdG91Y2hSZWdpb24sIE9w
dGlvblNldDxUb3VjaEFjdGlvbj4gdG91Y2hBY3Rpb25zKQogewogICAgIGZvciAoYXV0byB0b3Vj
aEFjdGlvbiA6IHRvdWNoQWN0aW9ucykgewogICAgICAgICBpZiAodG91Y2hBY3Rpb24gPT0gVG91
Y2hBY3Rpb246OkF1dG8pCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgYXV0byBpbmRleCA9
IHRvSW5kZXgodG91Y2hBY3Rpb24pOwotICAgICAgICBpZiAobV9yZWdpb25zLnNpemUoKSA8IGlu
ZGV4ICsgMSkKLSAgICAgICAgICAgIG1fcmVnaW9ucy5ncm93KGluZGV4ICsgMSk7CisgICAgICAg
IGlmIChtX3RvdWNoQWN0aW9uUmVnaW9ucy5zaXplKCkgPCBpbmRleCArIDEpCisgICAgICAgICAg
ICBtX3RvdWNoQWN0aW9uUmVnaW9ucy5ncm93KGluZGV4ICsgMSk7CiAgICAgfQogCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcmVnaW9ucy5zaXplKCk7ICsraSkgeworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3RvdWNoQWN0aW9uUmVnaW9ucy5zaXplKCk7ICsraSkgewog
ICAgICAgICBhdXRvIHJlZ2lvblRvdWNoQWN0aW9uID0gdG9Ub3VjaEFjdGlvbihpKTsKICAgICAg
ICAgaWYgKHRvdWNoQWN0aW9ucy5jb250YWlucyhyZWdpb25Ub3VjaEFjdGlvbikpCi0gICAgICAg
ICAgICBtX3JlZ2lvbnNbaV0udW5pdGUodG91Y2hSZWdpb24pOworICAgICAgICAgICAgbV90b3Vj
aEFjdGlvblJlZ2lvbnNbaV0udW5pdGUodG91Y2hSZWdpb24pOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBtX3JlZ2lvbnNbaV0uc3VidHJhY3QodG91Y2hSZWdpb24pOworICAgICAgICAgICAg
bV90b3VjaEFjdGlvblJlZ2lvbnNbaV0uc3VidHJhY3QodG91Y2hSZWdpb24pOwogICAgIH0KIH0K
IAotT3B0aW9uU2V0PFRvdWNoQWN0aW9uPiBUb3VjaEFjdGlvblJlZ2lvbjo6YWN0aW9uc0ZvclBv
aW50KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK09wdGlvblNldDxUb3VjaEFjdGlvbj4g
RXZlbnRSZWdpb246OnRvdWNoQWN0aW9uc0ZvclBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCkg
Y29uc3QKIHsKICAgICBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+IGFjdGlvbnM7CiAKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9yZWdpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlm
IChtX3JlZ2lvbnNbaV0uY29udGFpbnMocG9pbnQpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fdG91Y2hBY3Rpb25SZWdpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICht
X3RvdWNoQWN0aW9uUmVnaW9uc1tpXS5jb250YWlucyhwb2ludCkpIHsKICAgICAgICAgICAgIGF1
dG8gYWN0aW9uID0gdG9Ub3VjaEFjdGlvbihpKTsKICAgICAgICAgICAgIGFjdGlvbnMuYWRkKGFj
dGlvbik7CiAgICAgICAgICAgICBpZiAoYWN0aW9uID09IFRvdWNoQWN0aW9uOjpOb25lIHx8IGFj
dGlvbiA9PSBUb3VjaEFjdGlvbjo6TWFuaXB1bGF0aW9uKQpAQCAtMTA3LDEyICsxMzcsNiBAQCBP
cHRpb25TZXQ8VG91Y2hBY3Rpb24+IFRvdWNoQWN0aW9uUmVnaW9uCiAgICAgcmV0dXJuIGFjdGlv
bnM7CiB9CiAKLXZvaWQgVG91Y2hBY3Rpb25SZWdpb246OnRyYW5zbGF0ZShjb25zdCBJbnRTaXpl
JiBvZmZzZXQpCi17Ci0gICAgZm9yIChhdXRvJiByZWdpb24gOiBtX3JlZ2lvbnMpCi0gICAgICAg
IHJlZ2lvbi50cmFuc2xhdGUob2Zmc2V0KTsKLX0KLQogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgVG91Y2hBY3Rpb24gdG91Y2hBY3Rpb24pCiB7CiAgICAgc3dpdGNoICh0
b3VjaEFjdGlvbikgewpAQCAtMTMzLDIzICsxNTcsMjkgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgVAogICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVG91Y2hBY3Rpb25SZWdpb24mIHRvdWNoQWN0
aW9uUmVnaW9uKQorI2VuZGlmCisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IEV2ZW50UmVnaW9uJiBldmVudFJlZ2lvbikKIHsKLSAgICB0cyA8PCAiXG4iOwot
ICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdWNoQWN0aW9uUmVnaW9u
Lm1fcmVnaW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKHRvdWNoQWN0aW9uUmVn
aW9uLm1fcmVnaW9uc1tpXS5pc0VtcHR5KCkpCisgICAgdHMgPDwgZXZlbnRSZWdpb24ubV9yZWdp
b247CisKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCisgICAgaWYgKCFldmVudFJlZ2lvbi5t
X3RvdWNoQWN0aW9uUmVnaW9ucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgVGV4dFN0cmVhbTo6SW5k
ZW50U2NvcGUgaW5kZW50U2NvcGUodHMpOworICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIih0b3Vj
aC1hY3Rpb25cbiI7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBldmVudFJlZ2lv
bi5tX3RvdWNoQWN0aW9uUmVnaW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGV2
ZW50UmVnaW9uLm1fdG91Y2hBY3Rpb25SZWdpb25zW2ldLmlzRW1wdHkoKSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVu
dFNjb3BlKHRzKTsKICAgICAgICAgICAgIHRzIDw8IGluZGVudCA8PCAiKCIgPDwgdG9Ub3VjaEFj
dGlvbihpKTsKLSAgICAgICAgICAgIHRzIDw8IGluZGVudCA8PCB0b3VjaEFjdGlvblJlZ2lvbi5t
X3JlZ2lvbnNbaV0gPDwgIilcbiI7CisgICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgZXZlbnRS
ZWdpb24ubV90b3VjaEFjdGlvblJlZ2lvbnNbaV07CisgICAgICAgICAgICB0cyA8PCBpbmRlbnQg
PDwgIilcbiI7CiAgICAgICAgIH0KKyAgICAgICAgdHMgPDwgaW5kZW50IDw8ICIpXG4iOwogICAg
IH0KLSAgICB0cyA8PCBpbmRlbnQ7CisjZW5kaWYKIAogICAgIHJldHVybiB0czsKIH0KIAogfQot
Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCShyZXZp
c2lvbiAyNDM5MzEpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Ub3VjaEFjdGlvblJl
Z2lvbi5oOjI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKKworI2luY2x1ZGUgIlJlZ2lvbi5oIgor
I2luY2x1ZGUgIlRvdWNoQWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUb3Vj
aEFjdGlvblJlZ2lvbiB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgVG91Y2hBY3Rpb25S
ZWdpb24oKTsKKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9ucy5p
c0VtcHR5KCk7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUb3VjaEFjdGlvblJlZ2lv
biYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9ucyA9PSBvdGhlci5tX3JlZ2lvbnM7IH0K
KworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5pdGUoY29uc3QgUmVnaW9uJiwgT3B0aW9uU2V0
PFRvdWNoQWN0aW9uPik7CisgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uU2V0PFRvdWNoQWN0aW9u
PiBhY3Rpb25zRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHRyYW5zbGF0ZShjb25zdCBJbnRTaXplJik7CisKK3ByaXZhdGU6CisgICAgZnJp
ZW5kIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFRvdWNoQWN0aW9u
UmVnaW9uJik7CisKKyAgICBWZWN0b3I8UmVnaW9uPiBtX3JlZ2lvbnM7Cit9OworCitUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBUb3VjaEFjdGlvblJlZ2lvbiYpOwor
Cit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmgJ
KHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQotCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVk
ZSAiVG91Y2hBY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CkBAIC0zNCwyNiAr
MzIsODcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUb3VjaEFjdGlvblJlZ2lv
biB7CitjbGFzcyBSZW5kZXJTdHlsZTsKKworY2xhc3MgRXZlbnRSZWdpb24gewogcHVibGljOgot
ICAgIFdFQkNPUkVfRVhQT1JUIFRvdWNoQWN0aW9uUmVnaW9uKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgRXZlbnRSZWdpb24oKTsKIAotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVnaW9ucy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X3JlZ2lvbi5pc0VtcHR5KCk7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUb3VjaEFj
dGlvblJlZ2lvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9ucyA9PSBvdGhlci5tX3Jl
Z2lvbnM7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRS
ZWdpb24mKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5pdGUoY29uc3QgUmVn
aW9uJiwgT3B0aW9uU2V0PFRvdWNoQWN0aW9uPik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9u
U2V0PFRvdWNoQWN0aW9uPiBhY3Rpb25zRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVuaXRlKGNvbnN0IFJlZ2lvbiYsIGNvbnN0IFJlbmRl
clN0eWxlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cmFuc2xhdGUoY29uc3QgSW50U2l6
ZSYpOwogCisgICAgYm9vbCBjb250YWlucyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0IHsg
cmV0dXJuIG1fcmVnaW9uLmNvbnRhaW5zKHBvaW50KTsgfQorICAgIGJvb2wgY29udGFpbnMoY29u
c3QgSW50UmVjdCYgcmVjdCkgY29uc3QgeyByZXR1cm4gbV9yZWdpb24uY29udGFpbnMocmVjdCk7
IH0KKworI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKKyAgICBib29sIGhhc1RvdWNoQWN0aW9u
cygpIGNvbnN0IHsgcmV0dXJuICFtX3RvdWNoQWN0aW9uUmVnaW9ucy5pc0VtcHR5KCk7IH0KKyAg
ICBXRUJDT1JFX0VYUE9SVCBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+IHRvdWNoQWN0aW9uc0ZvclBv
aW50KGNvbnN0IEludFBvaW50JikgY29uc3Q7CisjZW5kaWYKKworICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RXZlbnRSZWdpb24+IGRlY29kZShEZWNvZGVyJik7
CisgICAgLy8gRklYTUU6IFJlbW92ZSBsZWdhY3kgZGVjb2RlLgorICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgRXZlbnRSZWdpb24mKTsKKwog
cHJpdmF0ZToKLSAgICBmcmllbmQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Y29uc3QgVG91Y2hBY3Rpb25SZWdpb24mKTsKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCisg
ICAgdm9pZCB1bml0ZVRvdWNoQWN0aW9ucyhjb25zdCBSZWdpb24mLCBPcHRpb25TZXQ8VG91Y2hB
Y3Rpb24+KTsKKyNlbmRpZgorICAgIGZyaWVuZCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBjb25zdCBFdmVudFJlZ2lvbiYpOwogCi0gICAgVmVjdG9yPFJlZ2lvbj4gbV9yZWdp
b25zOworICAgIFJlZ2lvbiBtX3JlZ2lvbjsKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCisg
ICAgVmVjdG9yPFJlZ2lvbj4gbV90b3VjaEFjdGlvblJlZ2lvbnM7CisjZW5kaWYKIH07CiAKLVRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFRvdWNoQWN0aW9uUmVnaW9u
Jik7CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBFdmVudFJlZ2lv
biYpOwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBFdmVudFJlZ2lvbjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3JlZ2lvbjsKKyNp
ZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCisgICAgZW5jb2RlciA8PCBtX3RvdWNoQWN0aW9uUmVn
aW9uczsKKyNlbmRpZgogfQogCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8RXZl
bnRSZWdpb24+IEV2ZW50UmVnaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBP
cHRpb25hbDxSZWdpb24+IHJlZ2lvbjsKKyAgICBkZWNvZGVyID4+IHJlZ2lvbjsKKyAgICBpZiAo
IXJlZ2lvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIEV2ZW50UmVnaW9u
IGV2ZW50UmVnaW9uOworICAgIGV2ZW50UmVnaW9uLm1fcmVnaW9uID0gV1RGTW92ZSgqcmVnaW9u
KTsKKworI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKKyAgICBPcHRpb25hbDxWZWN0b3I8UmVn
aW9uPj4gdG91Y2hBY3Rpb25SZWdpb25zOworICAgIGRlY29kZXIgPj4gdG91Y2hBY3Rpb25SZWdp
b25zOworICAgIGlmICghdG91Y2hBY3Rpb25SZWdpb25zKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgZXZlbnRSZWdpb24ubV90b3VjaEFjdGlvblJlZ2lvbnMgPSBXVEZNb3Zl
KCp0b3VjaEFjdGlvblJlZ2lvbnMpOwogI2VuZGlmCisKKyAgICByZXR1cm4gZXZlbnRSZWdpb247
Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIEV2ZW50UmVnaW9uOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgRXZlbnRSZWdpb24mIGV2ZW50UmVnaW9uKQoreworICAgIE9wdGlv
bmFsPEV2ZW50UmVnaW9uPiBkZWNvZGVkRXZlbnRSZWdpb247CisgICAgZGVjb2RlciA+PiBkZWNv
ZGVkRXZlbnRSZWdpb247CisgICAgaWYgKCFkZWNvZGVkRXZlbnRSZWdpb24pCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBldmVudFJlZ2lvbiA9IFdURk1vdmUoKmRlY29kZWRFdmVudFJlZ2lv
bik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IkVkaXRvci5oIgogI2luY2x1ZGUgIkVsbGlwc2lzQm94LmgiCisjaW5jbHVkZSAiRXZlbnRSZWdp
b24uaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKQEAgLTUwNCw3ICs1MDUsNyBAQCB2b2lkIElubGlu
ZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNl
ID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uKSB7CiAgICAgICAgIGlmICh2aXNpYmxlVG9IaXRU
ZXN0aW5nKCkpCi0gICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb24tPnVuaXRlKGVuY2xv
c2luZ0ludFJlY3QoYm94UmVjdCkpOworICAgICAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9u
LT51bml0ZShlbmNsb3NpbmdJbnRSZWN0KGJveFJlY3QpLCByZW5kZXJlcigpLnN0eWxlKCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UGFpbnRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50
SW5mby5oCShyZXZpc2lvbiAyNDM5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFp
bnRJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE3ICszNywxMyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIEV2ZW50UmVnaW9uOwogY2xhc3MgT3ZlcmxhcFRlc3RSZXF1ZXN0
Q2xpZW50OwotY2xhc3MgUmVnaW9uOwogY2xhc3MgUmVuZGVySW5saW5lOwogY2xhc3MgUmVuZGVy
TGF5ZXI7CiBjbGFzcyBSZW5kZXJMYXllck1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyT2JqZWN0
OwogCi0jaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQotY2xhc3MgVG91Y2hBY3Rpb25SZWdpb247
Ci0jZW5kaWYKLSAgICAKIHR5cGVkZWYgSGFzaE1hcDxPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQq
LCBJbnRSZWN0PiBPdmVybGFwVGVzdFJlcXVlc3RNYXA7CiAKIC8qCkBAIC0xMzQsMTAgKzEzMCw3
IEBAIHN0cnVjdCBQYWludEluZm8gewogICAgIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IHBhaW50Q29udGFpbmVyOyAvLyB0aGUgbGF5ZXIgb2JqZWN0IHRoYXQgb3JpZ2luYXRlcyB0aGUg
Y3VycmVudCBwYWludGluZwogICAgIGJvb2wgcmVxdWlyZVNlY3VyaXR5T3JpZ2luQWNjZXNzRm9y
V2lkZ2V0cyB7IGZhbHNlIH07CiAgICAgY29uc3QgUmVuZGVyTGF5ZXIqIG1fZW5jbG9zaW5nU2Vs
ZlBhaW50aW5nTGF5ZXIgeyBudWxscHRyIH07Ci0gICAgUmVnaW9uKiBldmVudFJlZ2lvbiB7IG51
bGxwdHIgfTsgLy8gRm9yIFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uLgotI2lmIEVOQUJMRShQT0lO
VEVSX0VWRU5UUykKLSAgICBUb3VjaEFjdGlvblJlZ2lvbiogdG91Y2hBY3Rpb25SZWdpb24geyBu
dWxscHRyIH07Ci0jZW5kaWYKKyAgICBFdmVudFJlZ2lvbiogZXZlbnRSZWdpb24geyBudWxscHRy
IH07IC8vIEZvciBQYWludFBoYXNlOjpFdmVudFJlZ2lvbi4KIHByaXZhdGU6CiAgICAgR3JhcGhp
Y3NDb250ZXh0KiBtX2NvbnRleHQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiAyNDM5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFbGVt
ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRSZWdpb24uaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCkBAIC03MCw3
ICs3MSw2IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290Lmgi
CiAjaW5jbHVkZSAiU2hhcGVPdXRzaWRlSW5mby5oIgotI2luY2x1ZGUgIlRvdWNoQWN0aW9uUmVn
aW9uLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFs
bG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMTI0Niwx
NyArMTI0NiwxMyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8mCiAK
ICAgICAgICAgaWYgKHZpc2libGVUb0hpdFRlc3RpbmcoKSkgewogICAgICAgICAgICAgYXV0byBi
b3JkZXJSZWdpb24gPSBhcHByb3hpbWF0ZUFzUmVnaW9uKHN0eWxlKCkuZ2V0Um91bmRlZEJvcmRl
ckZvcihib3JkZXJSZWN0KSk7Ci0gICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb24tPnVu
aXRlKGJvcmRlclJlZ2lvbik7Ci0jaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQotICAgICAgICAg
ICAgaWYgKHBhaW50SW5mby50b3VjaEFjdGlvblJlZ2lvbikKLSAgICAgICAgICAgICAgICBwYWlu
dEluZm8udG91Y2hBY3Rpb25SZWdpb24tPnVuaXRlKGJvcmRlclJlZ2lvbiwgc3R5bGUoKS5lZmZl
Y3RpdmVUb3VjaEFjdGlvbnMoKSk7Ci0jZW5kaWYKKyAgICAgICAgICAgIHBhaW50SW5mby5ldmVu
dFJlZ2lvbi0+dW5pdGUoYm9yZGVyUmVnaW9uLCBzdHlsZSgpKTsKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIE5vIG5lZWQgdG8gY2hlY2sgZGVzY2VuZGFudHMgaWYgd2UgZG9uJ3QgaGF2ZSBvdmVy
ZmxvdyBhbmQgdGhlIGFyZWEgaXMgYWxyZWFkeSBjb3ZlcmVkLgogICAgICAgICBib29sIG5lZWRz
VHJhdmVyc2VEZXNjZW5kYW50cyA9IGhhc1Zpc3VhbE92ZXJmbG93KCkgfHwgIXBhaW50SW5mby5l
dmVudFJlZ2lvbi0+Y29udGFpbnMoZW5jbG9zaW5nSW50UmVjdChib3JkZXJSZWN0KSk7Ci0jaWYg
RU5BQkxFKFBPSU5URVJfRVZFTlRTKQotICAgICAgICBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMg
PSBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgfHwgcGFpbnRJbmZvLnRvdWNoQWN0aW9uUmVnaW9u
OworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKKyAg
ICAgICAgbmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzID0gbmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRz
IHx8IGRvY3VtZW50KCkudG91Y2hBY3Rpb25FbGVtZW50cygpOwogI2VuZGlmCiAgICAgICAgIGlm
ICghbmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzKQogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAyNDM5MzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00ODkxLDkgKzQ4OTEsNiBAQCB2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0RXZlbnRS
ZWdpb25Gb3JGCiAgICAgZm9yIChjb25zdCBhdXRvJiBmcmFnbWVudCA6IGxheWVyRnJhZ21lbnRz
KSB7CiAgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwgZnJhZ21lbnQuZm9yZWdy
b3VuZFJlY3QucmVjdCgpLCBQYWludFBoYXNlOjpFdmVudFJlZ2lvbiwgeyB9KTsKICAgICAgICAg
cGFpbnRJbmZvLmV2ZW50UmVnaW9uID0gbG9jYWxQYWludGluZ0luZm8uZXZlbnRSZWdpb247Ci0j
aWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQotICAgICAgICBwYWludEluZm8udG91Y2hBY3Rpb25S
ZWdpb24gPSBsb2NhbFBhaW50aW5nSW5mby50b3VjaEFjdGlvblJlZ2lvbjsKLSNlbmRpZgogICAg
ICAgICByZW5kZXJlcigpLnBhaW50KHBhaW50SW5mbywgdG9MYXlvdXRQb2ludChmcmFnbWVudC5s
YXllckJvdW5kcy5sb2NhdGlvbigpIC0gcmVuZGVyQm94TG9jYXRpb24oKSArIGxvY2FsUGFpbnRp
bmdJbmZvLnN1YnBpeGVsT2Zmc2V0KSk7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU0ZpbHRlcjsKIGNsYXNzIENsaXBSZWN0czsK
IGNsYXNzIENsaXBSZWN0c0NhY2hlOworY2xhc3MgRXZlbnRSZWdpb247CiBjbGFzcyBIaXRUZXN0
UmVxdWVzdDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBIaXRUZXN0aW5nVHJhbnNmb3Jt
U3RhdGU7CkBAIC04MCwxMCArODEsNiBAQCBjbGFzcyBSZW5kZXJWaWV3OwogY2xhc3MgU2Nyb2xs
YmFyOwogY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKLSNpZiBFTkFCTEUoUE9JTlRFUl9F
VkVOVFMpCi1jbGFzcyBUb3VjaEFjdGlvblJlZ2lvbjsKLSNlbmRpZgotCiBlbnVtIEJvcmRlclJh
ZGl1c0NsaXBwaW5nUnVsZSB7IEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzLCBEb05vdEluY2x1
ZGVTZWxmRm9yQm9yZGVyUmFkaXVzIH07CiBlbnVtIEluY2x1ZGVTZWxmT3JOb3QgeyBJbmNsdWRl
U2VsZiwgRXhjbHVkZVNlbGYgfTsKIApAQCAtOTE2LDEwICs5MTMsNyBAQCBwcml2YXRlOgogICAg
ICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvcjsKICAgICAgICAgYm9v
bCByZXF1aXJlU2VjdXJpdHlPcmlnaW5BY2Nlc3NGb3JXaWRnZXRzOwogICAgICAgICBib29sIGNs
aXBUb0RpcnR5UmVjdCB7IHRydWUgfTsKLSAgICAgICAgUmVnaW9uKiBldmVudFJlZ2lvbiB7IG51
bGxwdHIgfTsKLSNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCi0gICAgICAgIFRvdWNoQWN0aW9u
UmVnaW9uKiB0b3VjaEFjdGlvblJlZ2lvbiB7IG51bGxwdHIgfTsKLSNlbmRpZgorICAgICAgICBF
dmVudFJlZ2lvbiogZXZlbnRSZWdpb24geyBudWxscHRyIH07CiAgICAgfTsKIAogICAgIC8vIENv
bXB1dGUsIGNhY2hlIGFuZCByZXR1cm4gY2xpcCByZWN0cyBjb21wdXRlZCB3aXRoIHRoZSBnaXZl
biBsYXllciBhcyB0aGUgcm9vdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAyNDM5MzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21l
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaW1lbGluZS5oIgorI2luY2x1ZGUgIkV2ZW50UmVnaW9u
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKQEAgLTUxLDcgKzUyLDYgQEAKICNpbmNsdWRlICJQZXJmb3Jt
YW5jZUxvZ2dpbmdDbGllbnQuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3QmFzZS5oIgogI2luY2x1
ZGUgIlByb2dyZXNzVHJhY2tlci5oIgotI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlJl
bmRlckZyYWdtZW50Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyRnJhZ21lbnRlZEZsb3cu
aCIKICNpbmNsdWRlICJSZW5kZXJIVE1MQ2FudmFzLmgiCkBAIC0xNDQ5LDE1ICsxNDQ5LDkgQEAg
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVnaQogICAgIEdyYXBoaWNzQ29u
dGV4dCBudWxsQ29udGV4dChudWxscHRyKTsKICAgICBSZW5kZXJMYXllcjo6TGF5ZXJQYWludGlu
Z0luZm8gcGFpbnRpbmdJbmZvKCZtX293bmluZ0xheWVyLCBjb21wb3NpdGVkQm91bmRzKCksIHsg
fSwgTGF5b3V0U2l6ZSgpKTsKIAotICAgIFJlZ2lvbiBldmVudFJlZ2lvbjsKKyAgICBFdmVudFJl
Z2lvbiBldmVudFJlZ2lvbjsKICAgICBwYWludGluZ0luZm8uZXZlbnRSZWdpb24gPSAmZXZlbnRS
ZWdpb247CiAKLSNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCi0gICAgVG91Y2hBY3Rpb25SZWdp
b24gdG91Y2hBY3Rpb25SZWdpb247Ci0gICAgaWYgKGhhc1RvdWNoQWN0aW9uRWxlbWVudHMpCi0g
ICAgICAgIHBhaW50aW5nSW5mby50b3VjaEFjdGlvblJlZ2lvbiA9ICZ0b3VjaEFjdGlvblJlZ2lv
bjsKLSNlbmRpZgotCiAgICAgYXV0byBwYWludEZsYWdzID0gUmVuZGVyTGF5ZXI6OnBhaW50TGF5
ZXJQYWludGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzRmxhZ3MoKSB8IFJlbmRlckxheWVyOjpQYWlu
dExheWVyQ29sbGVjdGluZ0V2ZW50UmVnaW9uOwogICAgIG1fb3duaW5nTGF5ZXIucGFpbnRMYXll
ckNvbnRlbnRzKG51bGxDb250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwogCkBAIC0x
NDY1LDEwICsxNDU5LDYgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVn
aQogICAgIGV2ZW50UmVnaW9uLnRyYW5zbGF0ZShjb250ZW50T2Zmc2V0KTsKICAgICBtX2dyYXBo
aWNzTGF5ZXItPnNldEV2ZW50UmVnaW9uKFdURk1vdmUoZXZlbnRSZWdpb24pKTsKIAotI2lmIEVO
QUJMRShQT0lOVEVSX0VWRU5UUykKLSAgICB0b3VjaEFjdGlvblJlZ2lvbi50cmFuc2xhdGUoY29u
dGVudE9mZnNldCk7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRUb3VjaEFjdGlvblJlZ2lvbihX
VEZNb3ZlKHRvdWNoQWN0aW9uUmVnaW9uKSk7Ci0jZW5kaWYKICNlbmRpZgogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3Qu
Y3BwCShyZXZpc2lvbiAyNDM5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJSZW5kZXJMYXllck1vZGVsT2JqZWN0LmgiCiAKICNpbmNsdWRlICJSZW5kZXJMYXll
ci5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgogI2luY2x1ZGUgIlJlbmRlckxh
eWVyQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRG
dW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMjQzOTMxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJCaWRpUnVuLmgiCiAjaW5jbHVkZSAi
QmlkaVJ1bkxpc3QuaCIKKyNpbmNsdWRlICJFdmVudFJlZ2lvbi5oIgogI2luY2x1ZGUgIkZvbnRD
YWNoZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CkBAIC04Myw3ICs4NCw3IEBAIHZvaWQgcGFpbnRGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYg
ZmwKICAgICAgICAgcGFpbnRSZWN0Lm1vdmVCeSgtcGFpbnRPZmZzZXQpOwogICAgICAgICBmb3Ig
KGF1dG8gcnVuIDogbGF5b3V0LnJ1blJlc29sdmVyKCkucmFuZ2VGb3JSZWN0KHBhaW50UmVjdCkp
IHsKICAgICAgICAgICAgIEZsb2F0UmVjdCB2aXN1YWxPdmVyZmxvd1JlY3QgPSBjb21wdXRlT3Zl
cmZsb3coZmxvdywgcnVuLnJlY3QoKSk7Ci0gICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdp
b24tPnVuaXRlKGVuY2xvc2luZ0ludFJlY3QodmlzdWFsT3ZlcmZsb3dSZWN0KSk7CisgICAgICAg
ICAgICBwYWludEluZm8uZXZlbnRSZWdpb24tPnVuaXRlKGVuY2xvc2luZ0ludFJlY3QodmlzdWFs
T3ZlcmZsb3dSZWN0KSwgZmxvdy5zdHlsZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RvdWNoQWN0aW9uUmVnaW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVG91Y2hBY3Rpb25S
ZWdpb24uY3BwCShyZXZpc2lvbiAyNDM5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VG91Y2hBY3Rpb25SZWdpb24uY3BwCShub25leGlzdGVudCkKQEAgLTEsMTU1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVG91Y2hBY3Rpb25SZWdp
b24uaCIKLQotI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jb25zdGV4cHIgdW5zaWduZWQgdG9JbmRleChUb3VjaEFjdGlvbiB0b3VjaEFjdGlvbikK
LXsKLSAgICBzd2l0Y2ggKHRvdWNoQWN0aW9uKSB7Ci0gICAgY2FzZSBUb3VjaEFjdGlvbjo6Tm9u
ZToKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBUb3VjaEFjdGlvbjo6TWFuaXB1bGF0aW9u
OgotICAgICAgICByZXR1cm4gMTsKLSAgICBjYXNlIFRvdWNoQWN0aW9uOjpQYW5YOgotICAgICAg
ICByZXR1cm4gMjsKLSAgICBjYXNlIFRvdWNoQWN0aW9uOjpQYW5ZOgotICAgICAgICByZXR1cm4g
MzsKLSAgICBjYXNlIFRvdWNoQWN0aW9uOjpQaW5jaFpvb206Ci0gICAgICAgIHJldHVybiA0Owot
ICAgIGNhc2UgVG91Y2hBY3Rpb246OkF1dG86Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotY29uc3RleHByIFRvdWNo
QWN0aW9uIHRvVG91Y2hBY3Rpb24odW5zaWduZWQgaW5kZXgpCi17Ci0gICAgc3dpdGNoIChpbmRl
eCkgewotICAgIGNhc2UgMDoKLSAgICAgICAgcmV0dXJuIFRvdWNoQWN0aW9uOjpOb25lOwotICAg
IGNhc2UgMToKLSAgICAgICAgcmV0dXJuIFRvdWNoQWN0aW9uOjpNYW5pcHVsYXRpb247Ci0gICAg
Y2FzZSAyOgotICAgICAgICByZXR1cm4gVG91Y2hBY3Rpb246OlBhblg7Ci0gICAgY2FzZSAzOgot
ICAgICAgICByZXR1cm4gVG91Y2hBY3Rpb246OlBhblk7Ci0gICAgY2FzZSA0OgotICAgICAgICBy
ZXR1cm4gVG91Y2hBY3Rpb246OlBpbmNoWm9vbTsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRvdWNoQWN0
aW9uOjpBdXRvOwotfQotCi1Ub3VjaEFjdGlvblJlZ2lvbjo6VG91Y2hBY3Rpb25SZWdpb24oKSA9
IGRlZmF1bHQ7Ci0KLXZvaWQgVG91Y2hBY3Rpb25SZWdpb246OnVuaXRlKGNvbnN0IFJlZ2lvbiYg
dG91Y2hSZWdpb24sIE9wdGlvblNldDxUb3VjaEFjdGlvbj4gdG91Y2hBY3Rpb25zKQotewotICAg
IGZvciAoYXV0byB0b3VjaEFjdGlvbiA6IHRvdWNoQWN0aW9ucykgewotICAgICAgICBpZiAodG91
Y2hBY3Rpb24gPT0gVG91Y2hBY3Rpb246OkF1dG8pCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgYXV0byBpbmRleCA9IHRvSW5kZXgodG91Y2hBY3Rpb24pOwotICAgICAgICBpZiAobV9yZWdp
b25zLnNpemUoKSA8IGluZGV4ICsgMSkKLSAgICAgICAgICAgIG1fcmVnaW9ucy5ncm93KGluZGV4
ICsgMSk7Ci0gICAgfQotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcmVnaW9ucy5z
aXplKCk7ICsraSkgewotICAgICAgICBhdXRvIHJlZ2lvblRvdWNoQWN0aW9uID0gdG9Ub3VjaEFj
dGlvbihpKTsKLSAgICAgICAgaWYgKHRvdWNoQWN0aW9ucy5jb250YWlucyhyZWdpb25Ub3VjaEFj
dGlvbikpCi0gICAgICAgICAgICBtX3JlZ2lvbnNbaV0udW5pdGUodG91Y2hSZWdpb24pOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX3JlZ2lvbnNbaV0uc3VidHJhY3QodG91Y2hSZWdpb24p
OwotICAgIH0KLX0KLQotT3B0aW9uU2V0PFRvdWNoQWN0aW9uPiBUb3VjaEFjdGlvblJlZ2lvbjo6
YWN0aW9uc0ZvclBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKLXsKLSAgICBPcHRp
b25TZXQ8VG91Y2hBY3Rpb24+IGFjdGlvbnM7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9yZWdpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX3JlZ2lvbnNbaV0uY29u
dGFpbnMocG9pbnQpKSB7Ci0gICAgICAgICAgICBhdXRvIGFjdGlvbiA9IHRvVG91Y2hBY3Rpb24o
aSk7Ci0gICAgICAgICAgICBhY3Rpb25zLmFkZChhY3Rpb24pOwotICAgICAgICAgICAgaWYgKGFj
dGlvbiA9PSBUb3VjaEFjdGlvbjo6Tm9uZSB8fCBhY3Rpb24gPT0gVG91Y2hBY3Rpb246Ok1hbmlw
dWxhdGlvbikKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHJldHVybiBhY3Rpb25zOwotfQotCi12b2lkIFRvdWNoQWN0aW9uUmVnaW9uOjp0cmFuc2xhdGUo
Y29uc3QgSW50U2l6ZSYgb2Zmc2V0KQotewotICAgIGZvciAoYXV0byYgcmVnaW9uIDogbV9yZWdp
b25zKQotICAgICAgICByZWdpb24udHJhbnNsYXRlKG9mZnNldCk7Ci19Ci0KLVRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFRvdWNoQWN0aW9uIHRvdWNoQWN0aW9uKQotewot
ICAgIHN3aXRjaCAodG91Y2hBY3Rpb24pIHsKLSAgICBjYXNlIFRvdWNoQWN0aW9uOjpOb25lOgot
ICAgICAgICByZXR1cm4gdHMgPDwgIm5vbmUiOwotICAgIGNhc2UgVG91Y2hBY3Rpb246Ok1hbmlw
dWxhdGlvbjoKLSAgICAgICAgcmV0dXJuIHRzIDw8ICJtYW5pcHVsYXRpb24iOwotICAgIGNhc2Ug
VG91Y2hBY3Rpb246OlBhblg6Ci0gICAgICAgIHJldHVybiB0cyA8PCAicGFuLXgiOwotICAgIGNh
c2UgVG91Y2hBY3Rpb246OlBhblk6Ci0gICAgICAgIHJldHVybiB0cyA8PCAicGFuLXkiOwotICAg
IGNhc2UgVG91Y2hBY3Rpb246OlBpbmNoWm9vbToKLSAgICAgICAgcmV0dXJuIHRzIDw8ICJwaW5j
aC16b29tIjsKLSAgICBjYXNlIFRvdWNoQWN0aW9uOjpBdXRvOgotICAgICAgICByZXR1cm4gdHMg
PDwgImF1dG8iOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
dHM7Ci19Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFRv
dWNoQWN0aW9uUmVnaW9uJiB0b3VjaEFjdGlvblJlZ2lvbikKLXsKLSAgICB0cyA8PCAiXG4iOwot
ICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdWNoQWN0aW9uUmVnaW9u
Lm1fcmVnaW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKHRvdWNoQWN0aW9uUmVn
aW9uLm1fcmVnaW9uc1tpXS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICBUZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBpbmRlbnRTY29wZSh0cyk7Ci0gICAg
ICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIigiIDw8IHRvVG91Y2hBY3Rpb24oaSk7Ci0gICAgICAg
ICAgICB0cyA8PCBpbmRlbnQgPDwgdG91Y2hBY3Rpb25SZWdpb24ubV9yZWdpb25zW2ldIDw8ICIp
XG4iOwotICAgICAgICB9Ci0gICAgfQotICAgIHRzIDw8IGluZGVudDsKLQotICAgIHJldHVybiB0
czsKLX0KLQotfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Ub3Vj
aEFjdGlvblJlZ2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
b3VjaEFjdGlvblJlZ2lvbi5oCShyZXZpc2lvbiAyNDM5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVG91Y2hBY3Rpb25SZWdpb24uaAkobm9uZXhpc3RlbnQpCkBAIC0xLDU5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5U
UykKLQotI2luY2x1ZGUgIlJlZ2lvbi5oIgotI2luY2x1ZGUgIlRvdWNoQWN0aW9uLmgiCi0jaW5j
bHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBUb3VjaEFjdGlvblJlZ2lvbiB7Ci1wdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgVG91Y2hBY3Rpb25SZWdpb24oKTsKLQotICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9ucy5pc0VtcHR5KCk7IH0KLQotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBUb3VjaEFjdGlvblJlZ2lvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcmVn
aW9ucyA9PSBvdGhlci5tX3JlZ2lvbnM7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5p
dGUoY29uc3QgUmVnaW9uJiwgT3B0aW9uU2V0PFRvdWNoQWN0aW9uPik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgT3B0aW9uU2V0PFRvdWNoQWN0aW9uPiBhY3Rpb25zRm9yUG9pbnQoY29uc3QgSW50UG9p
bnQmKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyYW5zbGF0ZShjb25zdCBJbnRT
aXplJik7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IFRvdWNoQWN0aW9uUmVnaW9uJik7Ci0KLSAgICBWZWN0b3I8UmVnaW9u
PiBtX3JlZ2lvbnM7Ci19OwotCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBUb3VjaEFjdGlvblJlZ2lvbiYpOwotCi19Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0MzkzMykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjIgQEAKKzIwMTktMDQtMDUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgorCisgICAgICAgIENvbWJpbmUgZXZlbnQgYW5kIHRvdWNoIGFjdGlvbiByZWdpb25z
IGludG8gYSBzaW5nbGUgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NjY0NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDk2NDM2MTQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICog
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGll
czo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZU5vZGUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlTm9kZTo6ZXZl
bnRSZWdpb24gY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlTm9kZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlTm9k
ZTo6c2V0RXZlbnRSZWdpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1DQUxheWVyUmVtb3RlOjpzZXRFdmVudFJlZ2lvbik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKwogMjAx
OS0wNC0wNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJF
R1JFU1NJT04ocjI0MDY4NSk6IFJlbW92ZSBkdXBsaWNhdGUgSGVhZGVycyBlbnRyeSBmb3IgX1dL
SW5zcGVjdG9yV2luZG93LmggaW4gWGNvZGUgcHJvamVjdApJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgcHVibGljOgogICAgICAgICBib29sIG9wYXF1ZTsK
ICAgICAgICAgYm9vbCBjb250ZW50c0hpZGRlbjsKICAgICAgICAgYm9vbCB1c2VySW50ZXJhY3Rp
b25FbmFibGVkOwotICAgICAgICBXZWJDb3JlOjpSZWdpb24gZXZlbnRSZWdpb247CisgICAgICAg
IFdlYkNvcmU6OkV2ZW50UmVnaW9uIGV2ZW50UmVnaW9uOwogICAgIH07CiAKICAgICBleHBsaWNp
dCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbigpOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbi5tbQkocmV2aXNpb24gMjQzOTMxKQorKysgU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiAjaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
aCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCA8UXVhcnR6Q29y
ZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0V2ZW50UmVnaW9uLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0xlbmd0aEZ1bmN0aW9ucy5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZWdpb24uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGltaW5nRnVuY3Rpb24uaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTUwOCw3ICs1MDgs
NyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByCiAgICAgfQogCiAg
ICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIEV2ZW50UmVnaW9uQ2hhbmdlZCkgewot
ICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpb24+IGV2ZW50UmVnaW9uOworICAgICAgICBP
cHRpb25hbDxXZWJDb3JlOjpFdmVudFJlZ2lvbj4gZXZlbnRSZWdpb247CiAgICAgICAgIGRlY29k
ZXIgPj4gZXZlbnRSZWdpb247CiAgICAgICAgIGlmICghZXZlbnRSZWdpb24pCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLmgJKHJldmlzaW9u
IDI0MzkzMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDggKzU2LDggQEAgcHVibGlj
OgogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQo
KSBjb25zdCB7IHJldHVybiBtX2xheWVySUQ7IH0KIAotICAgIGNvbnN0IFdlYkNvcmU6OlJlZ2lv
biYgZXZlbnRSZWdpb24oKSBjb25zdCB7IHJldHVybiBtX2V2ZW50UmVnaW9uOyB9Ci0gICAgdm9p
ZCBzZXRFdmVudFJlZ2lvbihjb25zdCBXZWJDb3JlOjpSZWdpb24mKTsKKyAgICBjb25zdCBXZWJD
b3JlOjpFdmVudFJlZ2lvbiYgZXZlbnRSZWdpb24oKSBjb25zdCB7IHJldHVybiBtX2V2ZW50UmVn
aW9uOyB9CisgICAgdm9pZCBzZXRFdmVudFJlZ2lvbihjb25zdCBXZWJDb3JlOjpFdmVudFJlZ2lv
biYpOwogCiAgICAgLy8gSWYgZW1wdHkgdGhlIGxheWVyIGlzIHNjcm9sbGVkIG5vcm1hbGx5IGJ5
IGFuIGFuY2VzdG9yIHNjcm9sbGVyLgogICAgIGNvbnN0IGF1dG8mIHJlbGF0ZWRTY3JvbGxDb250
YWluZXJJRHMoKSBjb25zdCB7IHJldHVybiBtX3JlbGF0ZWRTY3JvbGxDb250YWluZXJJRHM7IH0K
QEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8VUlWaWV3PiBtX3VpVmll
dzsKICNlbmRpZgogCi0gICAgV2ViQ29yZTo6UmVnaW9uIG1fZXZlbnRSZWdpb247CisgICAgV2Vi
Q29yZTo6RXZlbnRSZWdpb24gbV9ldmVudFJlZ2lvbjsKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+IG1fcmVsYXRlZFNjcm9sbENvbnRhaW5lcklE
czsKICAgICBXZWJDb3JlOjpTY3JvbGxQb3NpdGlvbmluZ0JlaGF2aW9yIG1fcmVsYXRlZFNjcm9s
bENvbnRhaW5lclBvc2l0aW9uaW5nQmVoYXZpb3IgeyBXZWJDb3JlOjpTY3JvbGxQb3NpdGlvbmlu
Z0JlaGF2aW9yOjpOb25lIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbQkocmV2
aXNpb24gMjQzOTMxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZU5vZGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAg
dm9pZCBSZW1vdGVMYXllclRyZWVOb2RlOjpkZXRhY2hGcm9tUGFyZQogICAgIFtsYXllcigpIHJl
bW92ZUZyb21TdXBlcmxheWVyXTsKIH0KIAotdm9pZCBSZW1vdGVMYXllclRyZWVOb2RlOjpzZXRF
dmVudFJlZ2lvbihjb25zdCBXZWJDb3JlOjpSZWdpb24mIGV2ZW50UmVnaW9uKQordm9pZCBSZW1v
dGVMYXllclRyZWVOb2RlOjpzZXRFdmVudFJlZ2lvbihjb25zdCBXZWJDb3JlOjpFdmVudFJlZ2lv
biYgZXZlbnRSZWdpb24pCiB7CiAgICAgbV9ldmVudFJlZ2lvbiA9IGV2ZW50UmVnaW9uOwogfQpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAJ
KHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVDb250ZXh0LmgiCiAjaW1w
b3J0ICJSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaCIKICNpbXBvcnQgPFdlYkNvcmUv
QW5pbWF0aW9uVXRpbGl0aWVzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0V2ZW50UmVnaW9uLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFw
aGljc0xheWVyQ0EuaD4KICNpbXBvcnQgPFdlYkNvcmUvTGVuZ3RoRnVuY3Rpb25zLmg+CkBAIC04
NzEsNyArODcyLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnVwZGF0ZUN1c3RvbQog
ICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkN1c3RvbUFwcGVhcmFuY2VDaGFuZ2VkKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnNldEV2ZW50UmVnaW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgZXZlbnRS
ZWdpb24pCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0RXZlbnRSZWdpb24oY29uc3Qg
V2ViQ29yZTo6RXZlbnRSZWdpb24mIGV2ZW50UmVnaW9uKQogewogICAgIGlmIChtX3Byb3BlcnRp
ZXMuZXZlbnRSZWdpb24gPT0gZXZlbnRSZWdpb24pCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgJKHJldmlzaW9uIDI0
MzkzMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDcgKzE3NCw3
IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNl
IGN1c3RvbUFwcGVhcmFuY2UoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUN1c3Rv
bUFwcGVhcmFuY2UoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSkgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIHNldEV2ZW50UmVnaW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0RXZlbnRSZWdpb24oY29uc3QgV2ViQ29yZTo6RXZlbnRS
ZWdpb24mKSBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVk
Vmlld0lEIGVtYmVkZGVkVmlld0lEKCkgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI0MzkzMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE1IEBACisyMDE5LTA0LTA1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBDb21iaW5lIGV2ZW50IGFuZCB0b3VjaCBhY3Rpb24gcmVnaW9ucyBpbnRv
IGEgc2luZ2xlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTY2NDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ5NjQzNjE0PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcG9pbnRlcmV2ZW50
cy9pb3MvdG91Y2gtYWN0aW9uLXJlZ2lvbi1iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
cG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLXJlZ2lvbi1sYXllcnMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHBvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1yZWdpb24tcGFuLXgt
eS1leHBlY3RlZC50eHQ6CisKIDIwMTktMDQtMDUgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9A
aWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBVbnJldmlld2VkIGdhcmRlbmluZywgdXBkYXRl
IHVuZXhwZWN0ZWQgcGFzc2VzCkluZGV4OiBMYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90
b3VjaC1hY3Rpb24tcmVnaW9uLWJhc2ljLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tcmVnaW9uLWJhc2ljLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMjQzOTMxKQorKysgTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9p
b3MvdG91Y2gtYWN0aW9uLXJlZ2lvbi1iYXNpYy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTksMTQgKzksMTQgQEAKICAgICAgIChiYWNrZ3JvdW5kQ29sb3IgI0ZGRkZGRikKICAgICAg
IChldmVudCByZWdpb24KICAgICAgICAgKHJlY3QgKDAsMCkgd2lkdGg9ODAwIGhlaWdodD02MjEp
Ci0gICAgICApCi0gICAgICAodG91Y2gtYWN0aW9uIHJlZ2lvbgotICAgICAgICAobm9uZSAgICAg
ICAgCi0gICAgICAgICAgKHJlY3QgKDgsOCkgd2lkdGg9MTAwIGhlaWdodD0xMDApCi0gICAgICAg
ICAgKHJlY3QgKDgsMjA4KSB3aWR0aD0yMDAgaGVpZ2h0PTI1KQotICAgICAgICAgIChyZWN0ICg4
LDIzMykgd2lkdGg9MTAwIGhlaWdodD03NSkKLSAgICAgICAgICAocmVjdCAoOCw0MDgpIHdpZHRo
PTEwMCBoZWlnaHQ9NTApCi0gICAgICAgICAgKHJlY3QgKDgsNDU4KSB3aWR0aD01MCBoZWlnaHQ9
NTApCisgICAgICAgICh0b3VjaC1hY3Rpb24KKyAgICAgICAgICAobm9uZSAgICAgICAgICAKKyAg
ICAgICAgICAgIChyZWN0ICg4LDgpIHdpZHRoPTEwMCBoZWlnaHQ9MTAwKQorICAgICAgICAgICAg
KHJlY3QgKDgsMjA4KSB3aWR0aD0yMDAgaGVpZ2h0PTI1KQorICAgICAgICAgICAgKHJlY3QgKDgs
MjMzKSB3aWR0aD0xMDAgaGVpZ2h0PTc1KQorICAgICAgICAgICAgKHJlY3QgKDgsNDA4KSB3aWR0
aD0xMDAgaGVpZ2h0PTUwKQorICAgICAgICAgICAgKHJlY3QgKDgsNDU4KSB3aWR0aD01MCBoZWln
aHQ9NTApCisgICAgICAgICAgKQogICAgICAgICApCiAgICAgICApCiAgICAgKQpJbmRleDogTGF5
b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLXJlZ2lvbi1sYXllcnMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Rv
dWNoLWFjdGlvbi1yZWdpb24tbGF5ZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjQzOTMxKQor
KysgTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLXJlZ2lvbi1sYXll
cnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNywxMCArMTcsMTAgQEAKICAgICAg
ICAgICAoY29udGVudHNPcGFxdWUgMSkKICAgICAgICAgICAoZXZlbnQgcmVnaW9uCiAgICAgICAg
ICAgICAocmVjdCAoMCwwKSB3aWR0aD0xMDAgaGVpZ2h0PTEwMCkKLSAgICAgICAgICApCi0gICAg
ICAgICAgKHRvdWNoLWFjdGlvbiByZWdpb24KLSAgICAgICAgICAgIChub25lICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTEwMCBoZWlnaHQ9MTAwKQorICAgICAg
ICAgICAgKHRvdWNoLWFjdGlvbgorICAgICAgICAgICAgICAobm9uZSAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgKHJlY3QgKDAsMCkgd2lkdGg9MTAwIGhlaWdodD0xMDApCisgICAgICAg
ICAgICAgICkKICAgICAgICAgICAgICkKICAgICAgICAgICApCiAgICAgICAgICkKQEAgLTMxLDEx
ICszMSwxMSBAQAogICAgICAgICAgIChldmVudCByZWdpb24KICAgICAgICAgICAgIChyZWN0ICgw
LDApIHdpZHRoPTIwMCBoZWlnaHQ9MjUpCiAgICAgICAgICAgICAocmVjdCAoMCwyNSkgd2lkdGg9
MTAwIGhlaWdodD03NSkKLSAgICAgICAgICApCi0gICAgICAgICAgKHRvdWNoLWFjdGlvbiByZWdp
b24KLSAgICAgICAgICAgIChub25lICAgICAgICAgICAgCi0gICAgICAgICAgICAgIChyZWN0ICgw
LDApIHdpZHRoPTIwMCBoZWlnaHQ9MjUpCi0gICAgICAgICAgICAgIChyZWN0ICgwLDI1KSB3aWR0
aD0xMDAgaGVpZ2h0PTc1KQorICAgICAgICAgICAgKHRvdWNoLWFjdGlvbgorICAgICAgICAgICAg
ICAobm9uZSAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgKHJlY3QgKDAsMCkgd2lkdGg9
MjAwIGhlaWdodD0yNSkKKyAgICAgICAgICAgICAgICAocmVjdCAoMCwyNSkgd2lkdGg9MTAwIGhl
aWdodD03NSkKKyAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKQogICAgICAgICAgICkKICAg
ICAgICAgKQpAQCAtNDUsMTAgKzQ1LDEwIEBACiAgICAgICAgICAgKGNvbnRlbnRzT3BhcXVlIDEp
CiAgICAgICAgICAgKGV2ZW50IHJlZ2lvbgogICAgICAgICAgICAgKHJlY3QgKDAsMCkgd2lkdGg9
MTAwIGhlaWdodD0xMDApCi0gICAgICAgICAgKQotICAgICAgICAgICh0b3VjaC1hY3Rpb24gcmVn
aW9uCi0gICAgICAgICAgICAobm9uZSAgICAgICAgICAgIAotICAgICAgICAgICAgICAocmVjdCAo
MCwwKSB3aWR0aD0xMDAgaGVpZ2h0PTEwMCkKKyAgICAgICAgICAgICh0b3VjaC1hY3Rpb24KKyAg
ICAgICAgICAgICAgKG5vbmUgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIChyZWN0ICgw
LDApIHdpZHRoPTEwMCBoZWlnaHQ9MTAwKQorICAgICAgICAgICAgICApCiAgICAgICAgICAgICAp
CiAgICAgICAgICAgKQogICAgICAgICApCkBAIC02OSwxMiArNjksMTIgQEAKICAgICAgICAgICAg
IChyZWN0ICgwLDApIHdpZHRoPTEwMCBoZWlnaHQ9NTApCiAgICAgICAgICAgICAocmVjdCAoMCw1
MCkgd2lkdGg9MTUwIGhlaWdodD01MCkKICAgICAgICAgICAgIChyZWN0ICg1MCwxMDApIHdpZHRo
PTEwMCBoZWlnaHQ9NTApCi0gICAgICAgICAgKQotICAgICAgICAgICh0b3VjaC1hY3Rpb24gcmVn
aW9uCi0gICAgICAgICAgICAobm9uZSAgICAgICAgICAgIAotICAgICAgICAgICAgICAocmVjdCAo
MCwwKSB3aWR0aD0xMDAgaGVpZ2h0PTUwKQotICAgICAgICAgICAgICAocmVjdCAoMCw1MCkgd2lk
dGg9MTUwIGhlaWdodD01MCkKLSAgICAgICAgICAgICAgKHJlY3QgKDUwLDEwMCkgd2lkdGg9MTAw
IGhlaWdodD01MCkKKyAgICAgICAgICAgICh0b3VjaC1hY3Rpb24KKyAgICAgICAgICAgICAgKG5v
bmUgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTEwMCBo
ZWlnaHQ9NTApCisgICAgICAgICAgICAgICAgKHJlY3QgKDAsNTApIHdpZHRoPTE1MCBoZWlnaHQ9
NTApCisgICAgICAgICAgICAgICAgKHJlY3QgKDUwLDEwMCkgd2lkdGg9MTAwIGhlaWdodD01MCkK
KyAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKQogICAgICAgICAgICkKICAgICAgICAgICAo
Y2hpbGRyZW4gMgpAQCAtODgsMTAgKzg4LDEwIEBACiAgICAgICAgICAgICAgIChjb250ZW50c09w
YXF1ZSAxKQogICAgICAgICAgICAgICAoZXZlbnQgcmVnaW9uCiAgICAgICAgICAgICAgICAgKHJl
Y3QgKDAsMCkgd2lkdGg9MTAwIGhlaWdodD0xMDApCi0gICAgICAgICAgICAgICkKLSAgICAgICAg
ICAgICAgKHRvdWNoLWFjdGlvbiByZWdpb24KLSAgICAgICAgICAgICAgICAobm9uZSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTEwMCBoZWlnaHQ9
MTAwKQorICAgICAgICAgICAgICAgICh0b3VjaC1hY3Rpb24KKyAgICAgICAgICAgICAgICAgIChu
b25lICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIChyZWN0ICgwLDApIHdp
ZHRoPTEwMCBoZWlnaHQ9MTAwKQorICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAg
ICkKICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKQpJbmRleDogTGF5b3V0VGVzdHMvcG9p
bnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLXJlZ2lvbi1wYW4teC15LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24t
cmVnaW9uLXBhbi14LXktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNDM5MzEpCisrKyBMYXlvdXRU
ZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tcmVnaW9uLXBhbi14LXktZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05LDIzICs5LDIzIEBACiAgICAgICAoYmFja2dyb3Vu
ZENvbG9yICNGRkZGRkYpCiAgICAgICAoZXZlbnQgcmVnaW9uCiAgICAgICAgIChyZWN0ICgwLDAp
IHdpZHRoPTgwMCBoZWlnaHQ9MTAyMSkKLSAgICAgICkKLSAgICAgICh0b3VjaC1hY3Rpb24gcmVn
aW9uCi0gICAgICAgIChub25lICAgICAgICAKLSAgICAgICAgICAocmVjdCAoOCw4MDgpIHdpZHRo
PTEwMCBoZWlnaHQ9MTAwKQotICAgICAgICApCi0gICAgICAgIChwYW4teCAgICAgICAgCi0gICAg
ICAgICAgKHJlY3QgKDgsOCkgd2lkdGg9MTAwIGhlaWdodD0xMDApCi0gICAgICAgICAgKHJlY3Qg
KDgsMjA4KSB3aWR0aD0yMDAgaGVpZ2h0PTI1KQotICAgICAgICAgIChyZWN0ICg4LDIzMykgd2lk
dGg9MTAwIGhlaWdodD03NSkKLSAgICAgICAgICAocmVjdCAoMTA4LDQwOCkgd2lkdGg9MTAwIGhl
aWdodD0yNSkKLSAgICAgICAgICAocmVjdCAoOCw2MDgpIHdpZHRoPTIwMCBoZWlnaHQ9MjUpCi0g
ICAgICAgICAgKHJlY3QgKDgsNjMzKSB3aWR0aD0xMDAgaGVpZ2h0PTc1KQotICAgICAgICAgIChy
ZWN0ICgxMDgsODA4KSB3aWR0aD0xMDAgaGVpZ2h0PTI1KQotICAgICAgICApCi0gICAgICAgIChw
YW4teSAgICAgICAgCi0gICAgICAgICAgKHJlY3QgKDgsNDA4KSB3aWR0aD0yMDAgaGVpZ2h0PTI1
KQotICAgICAgICAgIChyZWN0ICg4LDQzMykgd2lkdGg9MTAwIGhlaWdodD03NSkKKyAgICAgICAg
KHRvdWNoLWFjdGlvbgorICAgICAgICAgIChub25lICAgICAgICAgIAorICAgICAgICAgICAgKHJl
Y3QgKDgsODA4KSB3aWR0aD0xMDAgaGVpZ2h0PTEwMCkKKyAgICAgICAgICApCisgICAgICAgICAg
KHBhbi14ICAgICAgICAgIAorICAgICAgICAgICAgKHJlY3QgKDgsOCkgd2lkdGg9MTAwIGhlaWdo
dD0xMDApCisgICAgICAgICAgICAocmVjdCAoOCwyMDgpIHdpZHRoPTIwMCBoZWlnaHQ9MjUpCisg
ICAgICAgICAgICAocmVjdCAoOCwyMzMpIHdpZHRoPTEwMCBoZWlnaHQ9NzUpCisgICAgICAgICAg
ICAocmVjdCAoMTA4LDQwOCkgd2lkdGg9MTAwIGhlaWdodD0yNSkKKyAgICAgICAgICAgIChyZWN0
ICg4LDYwOCkgd2lkdGg9MjAwIGhlaWdodD0yNSkKKyAgICAgICAgICAgIChyZWN0ICg4LDYzMykg
d2lkdGg9MTAwIGhlaWdodD03NSkKKyAgICAgICAgICAgIChyZWN0ICgxMDgsODA4KSB3aWR0aD0x
MDAgaGVpZ2h0PTI1KQorICAgICAgICAgICkKKyAgICAgICAgICAocGFuLXkgICAgICAgICAgCisg
ICAgICAgICAgICAocmVjdCAoOCw0MDgpIHdpZHRoPTIwMCBoZWlnaHQ9MjUpCisgICAgICAgICAg
ICAocmVjdCAoOCw0MzMpIHdpZHRoPTEwMCBoZWlnaHQ9NzUpCisgICAgICAgICAgKQogICAgICAg
ICApCiAgICAgICApCiAgICAgKQo=
</data>
<flag name="review"
          id="383183"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366887</attachid>
            <date>2019-04-06 07:24:40 -0700</date>
            <delta_ts>2019-04-06 09:49:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>event-region-class-3.patch</filename>
            <type>text/plain</type>
            <size>62006</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBACisyMDE5LTA0LTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDb21iaW5lIGV2ZW50IGFuZCB0
b3VjaCBhY3Rpb24gcmVnaW9ucyBpbnRvIGEgc2luZ2xlIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY2NDQKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ5NjQzNjE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggcmVwbGFjZXMgdGhlIGV4aXN0aW5nIFRvdWNoQWN0aW9uUmVnaW9u
IGNsYXNzIHdpdGggdGhlIG1vcmUgZ2VuZXJhbCBFdmVudFJlZ2lvbiBjbGFzcy4KKyAgICAgICAg
SXQgY29sbGVjdHMgYm90aCB0aGUgb3ZlcmFsbCBldmVudCByZWdpb24gYW5kIHRoZSB0b3VjaCBh
Y3Rpb24gcmVnaW9ucy4gVGhpcyBhdm9pZHMgZHVwbGljYXRpb24KKyAgICAgICAgYW5kIHNpbXBs
aWZpZXMgdGhlIGNvZGUuCisKKyAgICAgICAgVGhlIHBhdGNoIGFsc28gYWRkcyBzZXJpYWxpemF0
aW9uIHN1cHBvcnQgZm9yIEV2ZW50UmVnaW9uLCBzbyB0b3VjaC1hY3Rpb24gcmVnaW9ucyBnZXRz
IHBhc3NlZAorICAgICAgICB0byB0aGUgVUkgcHJvY2VzcyB0b28uCisKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyOjpzZXRFdmVudFJlZ2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpkdW1wUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpzZXRUb3VjaEFjdGlvblJlZ2lvbik6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllcjo6ZXZlbnRSZWdpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllcjo6dG91Y2hBY3Rpb25SZWdpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
cjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRFdmVudFJlZ2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldFRvdWNoQWN0aW9uUmVnaW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5o
OgorICAgICAgICAqIHJlbmRlcmluZy9FdmVudFJlZ2lvbi5jcHA6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9Ub3VjaEFjdGlvblJlZ2lvbi5jcHAuCisgICAgICAgIChXZWJD
b3JlOjpFdmVudFJlZ2lvbjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFJlZ2lvbjo6dW5pdGUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246OnRyYW5z
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFJlZ2lvbjo6dW5pdGVUb3VjaEFjdGlvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246OnRvdWNoQWN0aW9uc0ZvclBvaW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViQ29yZTo6
VG91Y2hBY3Rpb25SZWdpb246OnVuaXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRv
dWNoQWN0aW9uUmVnaW9uOjphY3Rpb25zRm9yUG9pbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6VG91Y2hBY3Rpb25SZWdpb246OnRyYW5zbGF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Ub3VjaEFjdGlvblJlZ2lvbi5oLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRS
ZWdpb246OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246OmNv
bnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UmVnaW9uOjpoYXNUb3VjaEFj
dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFJlZ2lvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRvdWNoQWN0aW9uUmVnaW9uOjppc0VtcHR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlRvdWNoQWN0aW9uUmVnaW9uOjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1BhaW50SW5m
by5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29sbGVjdEV2ZW50
UmVnaW9uRm9yRnJhZ21lbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlRXZlbnRSZWdpb24pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKiByZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9Ub3VjaEFjdGlv
blJlZ2lvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1RvdWNoQWN0aW9uUmVn
aW9uLmg6IFJlbW92ZWQuCisKIDIwMTktMDQtMDUgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNDM4ODcpOiBUcnkgdG8gZml4IFdpbmRv
d3MgYnVpbGRzIGJ5IGluY2x1ZGluZyA8d3RmL0lzb01hbGxvYy5oPgpJbmRleDogU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTUwLDYgKzE5NTAsNyBAQCByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAog
cmVuZGVyaW5nL0NsaXBSZWN0LmNwcAogcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcAogcmVuZGVy
aW5nL0VsbGlwc2lzQm94LmNwcAorcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmNwcAogcmVuZGVyaW5n
L0ZsZXhpYmxlQm94QWxnb3JpdGhtLmNwcAogcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3Bw
CiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcApAQCAtMjA2OCw3ICsyMDY5LDYgQEAgcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdAogcmVuZGVyaW5nL1RleHREZWNv
cmF0aW9uUGFpbnRlci5jcHAKIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKIHJlbmRlcmlu
Zy9UZXh0UGFpbnRlci5jcHAKLXJlbmRlcmluZy9Ub3VjaEFjdGlvblJlZ2lvbi5jcHAKIHJlbmRl
cmluZy9UcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guY3BwCiAKIHJlbmRlcmluZy9saW5lL0xp
bmVCcmVha2VyLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQzOTMxKQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00ODIy
LDcgKzQ4MjIsNyBAQAogCQlFNEE4MTRENDFDNkRFQzQwMDBCRjg1QUMgLyogQ2xhc3NDaGFuZ2VJ
bnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0QTgxNEQzMUM2REVDNDAwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5o
ICovOyB9OwogCQlFNEE4MTREQTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52
YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNEE4MTREOTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9u
LmggKi87IH07CiAJCUU0QTgxNEUwMUM3MzM4RUIwMEJGODVBQyAvKiBJZENoYW5nZUludmFsaWRh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRB
ODE0REYxQzczMzhFQjAwQkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi87IH07Ci0J
CUU0QThEMjEwMjI1MzhGRDIwMEE4NDYzQyAvKiBUb3VjaEFjdGlvblJlZ2lvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBOEQyMEYyMjUzOEZEMTAw
QTg0NjNDIC8qIFRvdWNoQWN0aW9uUmVnaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTRBOEQyMTYyMjU3OERCNzAwQTg0NjNDIC8qIEV2ZW50
UmVnaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NEE4RDIxNDIyNTc4REEwMDBBODQ2M0MgLyogRXZlbnRSZWdpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEFFN0MxNjE3RDFCQjk1MDAwOUZC
MzEgLyogRWxlbWVudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNEFFN0MxNTE3RDFCQjk1MDAwOUZCMzEgLyogRWxlbWVudEl0ZXJhdG9y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTRB
RTdDMUExN0QyMzIzNTAwMDlGQjMxIC8qIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEFFN0MxOTE3RDIzMjM1
MDAwOUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEFGQ0ZBNTBEQUYyOUEzMDBGNUY1NUMg
LyogVW5pdEJlemllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTRBRkNGQTQwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCAqLzsgfTsKQEAg
LTE0ODg0LDggKzE0ODg0LDggQEAKIAkJRTRBODE0RDkxQzcwRTEwRDAwQkY4NUFDIC8qIEF0dHJp
YnV0ZUNoYW5nZUludmFsaWRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTRBODE0REQxQzczMzhEMTAwQkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElkQ2hhbmdlSW52YWxpZGF0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBODE0REYxQzczMzhFQjAw
QkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElkQ2hhbmdlSW52YWxpZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUU0QThEMjBDMjI1MzhGQzcwMEE4NDYzQyAvKiBUb3VjaEFjdGlvblJlZ2lvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUb3VjaEFjdGlvblJlZ2lvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUU0QThEMjBGMjI1MzhGRDEwMEE4NDYz
QyAvKiBUb3VjaEFjdGlvblJlZ2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUb3VjaEFjdGlvblJlZ2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEE4
RDIxNDIyNTc4REEwMDBBODQ2M0MgLyogRXZlbnRSZWdpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRXZlbnRSZWdpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTRBOEQyMTUyMjU3OERBMDAwQTg0NjNDIC8qIEV2ZW50UmVnaW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50UmVnaW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTRBRTdDMTUxN0QxQkI5NTAwMDlGQjMxIC8qIEVsZW1lbnRJdGVy
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50SXRlcmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBRTdDMTkxN0QyMzIzNTAwMDlGQjMx
IC8qIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUU0QUZDRkE0MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaXRCZXppZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI2ODAxLDYgKzI2ODAxLDggQEAKIAkJCQkwRjUzRkI4MzIxM0IxQkI4MDBD
NDBEMzQgLyogQ1NTRmlsdGVyLmggKi8sCiAJCQkJQThDRkY2Q0EwQTE1NjFDRDAwMEE0MjM0IC8q
IEVsbGlwc2lzQm94LmNwcCAqLywKIAkJCQlBOENGRjZCRDBBMTU2MTE4MDAwQTQyMzQgLyogRWxs
aXBzaXNCb3guaCAqLywKKwkJCQlFNEE4RDIxNTIyNTc4REEwMDBBODQ2M0MgLyogRXZlbnRSZWdp
b24uY3BwICovLAorCQkJCUU0QThEMjE0MjI1NzhEQTAwMEE4NDYzQyAvKiBFdmVudFJlZ2lvbi5o
ICovLAogCQkJCUE4Q0ZGMDQ4MEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0LmNw
cCAqLywKIAkJCQlBOENGRjA0QTBBMTU0RjA5MDAwQTQyMzQgLyogRml4ZWRUYWJsZUxheW91dC5o
ICovLAogCQkJCTk0REQ3OTcyMUU1NEUzQTIwMDU4RkI4MCAvKiBGbGV4aWJsZUJveEFsZ29yaXRo
bS5jcHAgKi8sCkBAIC0yNzA1Nyw4ICsyNzA1OSw2IEBACiAJCQkJMUMxOERBNTcxODFBRjZBNTAw
QzRFRjIyIC8qIFRleHRQYWludGVyLmggKi8sCiAJCQkJRTRDOTFBMEYxODAyMzQzOTAwQTE3RjZE
IC8qIFRleHRQYWludFN0eWxlLmNwcCAqLywKIAkJCQlFNEM5MUEwRDE4MDIzNDMxMDBBMTdGNkQg
LyogVGV4dFBhaW50U3R5bGUuaCAqLywKLQkJCQlFNEE4RDIwQzIyNTM4RkM3MDBBODQ2M0MgLyog
VG91Y2hBY3Rpb25SZWdpb24uY3BwICovLAotCQkJCUU0QThEMjBGMjI1MzhGRDEwMEE4NDYzQyAv
KiBUb3VjaEFjdGlvblJlZ2lvbi5oICovLAogCQkJCTExMDBGQzZFMUZEQjNDNEQwMEREOTYxQiAv
KiBUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guY3BwICovLAogCQkJCTM3RkM5NkRBMTEwNEVE
NzEwMDNFMUZBRCAvKiBUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaCAqLywKIAkJCQlCQ0Ey
NTcxNDEyOTNDMDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggKi8sCkBAIC0y
OTUwMCw3ICsyOTUwMCw2IEBACiAJCQkJRkRBMTVFQTgxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVk
aW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUFFMTJCMDNFRTEw
MDNBNTgzQSAvKiBKU0F1ZGlvTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUIw
MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvTm9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTRB
OEQyMTAyMjUzOEZEMjAwQTg0NjNDIC8qIFRvdWNoQWN0aW9uUmVnaW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGREExNUVCNDEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1BhcmFtLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGREExNUVCNjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1Byb2Nlc3Np
bmdFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU4RUYwNDMxNzFDOEZGOTAwOUI0OEMzIC8q
IEpTQXVkaW9UcmFjay5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTc4Niw2ICsyOTc4NSw3IEBACiAJ
CQkJRTQ0NjE0M0EwQ0Q2ODlDODAwRkFEQTc1IC8qIEpTSFRNTE1lZGlhRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFFMkFFNUMwQTFEMjZGMjAwQjQyQjI1IC8qIEpTSFRNTE1lbnVFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFN0ExODBBMTlDM0Q2MDA3RkI4QzUgLyogSlNI
VE1MTWV0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0QThEMjE2MjI1NzhEQjcwMEE4
NDYzQyAvKiBFdmVudFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCQkUyNjcxMUFGQjNG
MjAwMDVFQTAzIC8qIEpTSFRNTE1ldGVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFF
MkFCMkEwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTE1vZEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMzA1QzdBMEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCShyZXZpc2lvbiAyNDM5MzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDExLDE4ICs0MTEsMTEgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpzZXRTaGFwZUxheWVyV2lu
ZFJ1bAogI2VuZGlmCiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllcjo6c2V0RXZlbnRSZWdpb24oUmVn
aW9uJiYgZXZlbnRSZWdpb24pCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldEV2ZW50UmVnaW9uKEV2
ZW50UmVnaW9uJiYgZXZlbnRSZWdpb24pCiB7CiAgICAgbV9ldmVudFJlZ2lvbiA9IFdURk1vdmUo
ZXZlbnRSZWdpb24pOwogfQogCi0jaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQotdm9pZCBHcmFw
aGljc0xheWVyOjpzZXRUb3VjaEFjdGlvblJlZ2lvbihUb3VjaEFjdGlvblJlZ2lvbiYmIHRvdWNo
QWN0aW9uUmVnaW9uKQotewotICAgIG1fdG91Y2hBY3Rpb25SZWdpb24gPSBXVEZNb3ZlKHRvdWNo
QWN0aW9uUmVnaW9uKTsKLX0KLSNlbmRpZgotCiB2b2lkIEdyYXBoaWNzTGF5ZXI6Om5vdGVEZXZp
Y2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWRJbmNsdWRpbmdEZXNjZW5kYW50cygpCiB7CiAgICAg
ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CkBAIC05MzMsMTMgKzkyNiw5IEBAIHZv
aWQgR3JhcGhpY3NMYXllcjo6ZHVtcFByb3BlcnRpZXMoVGV4dFMKICAgICAgICAgdHMgPDwgaW5k
ZW50IDw8ICIpXG4iOwogICAgIH0KIAotICAgIGlmIChiZWhhdmlvciAmIExheWVyVHJlZUFzVGV4
dEluY2x1ZGVFdmVudFJlZ2lvbikgewotICAgICAgICBpZiAoIW1fZXZlbnRSZWdpb24uaXNFbXB0
eSgpKQotICAgICAgICAgICAgdHMgPDwgaW5kZW50IDw8ICIoZXZlbnQgcmVnaW9uIiA8PCBtX2V2
ZW50UmVnaW9uIDw8ICIpXG4iOwotI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLSAgICAgICAg
aWYgKCFtX3RvdWNoQWN0aW9uUmVnaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRzIDw8IGlu
ZGVudCA8PCAiKHRvdWNoLWFjdGlvbiByZWdpb24iIDw8IG1fdG91Y2hBY3Rpb25SZWdpb24gPDwg
IilcbiI7Ci0jZW5kaWYKKyAgICBpZiAoYmVoYXZpb3IgJiBMYXllclRyZWVBc1RleHRJbmNsdWRl
RXZlbnRSZWdpb24gJiYgIW1fZXZlbnRSZWdpb24uaXNFbXB0eSgpKSB7CisgICAgICAgIHRzIDw8
IGluZGVudCA8PCAiKGV2ZW50IHJlZ2lvbiIgPDwgbV9ldmVudFJlZ2lvbjsKKyAgICAgICAgdHMg
PDwgaW5kZW50IDw8ICIpXG4iOwogICAgIH0KIAogICAgIGlmIChiZWhhdmlvciAmIExheWVyVHJl
ZUFzVGV4dEluY2x1ZGVQYWludGluZ1BoYXNlcyAmJiBwYWludGluZ1BoYXNlKCkpIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJ
KHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVk
ZSAiQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJFdmVudFJlZ2lv
bi5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50
LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCkBAIC0zNyw3ICszOCw2IEBACiAjaW5jbHVk
ZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlNjcm9s
bGFibGVBcmVhLmgiCi0jaW5jbHVkZSAiVG91Y2hBY3Rpb25SZWdpb24uaCIKICNpbmNsdWRlICJU
cmFuc2Zvcm1PcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KQEAgLTQ1NCwxMiArNDU0LDkgQEAgcHVibGljOgogICAgIFdpbmRSdWxl
IHNoYXBlTGF5ZXJXaW5kUnVsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaGFwZUxh
eWVyV2luZFJ1bGUoV2luZFJ1bGUpOwogCi0gICAgY29uc3QgUmVnaW9uJiBldmVudFJlZ2lvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRSZWdpb247IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RXZl
bnRSZWdpb24oUmVnaW9uJiYpOwotI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLSAgICBjb25z
dCBUb3VjaEFjdGlvblJlZ2lvbiYgdG91Y2hBY3Rpb25SZWdpb24oKSBjb25zdCB7IHJldHVybiBt
X3RvdWNoQWN0aW9uUmVnaW9uOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFRvdWNoQWN0aW9uUmVn
aW9uKFRvdWNoQWN0aW9uUmVnaW9uJiYpOwotI2VuZGlmCisgICAgY29uc3QgRXZlbnRSZWdpb24m
IGV2ZW50UmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFJlZ2lvbjsgfQorICAgIHZpcnR1
YWwgdm9pZCBzZXRFdmVudFJlZ2lvbihFdmVudFJlZ2lvbiYmKTsKKwogICAgIC8vIFRyYW5zaXRp
b25zIGFyZSBpZGVudGlmaWVkIGJ5IGEgc3BlY2lhbCBhbmltYXRpb24gbmFtZSB0aGF0IGNhbm5v
dCBjbGFzaCB3aXRoIGEga2V5ZnJhbWUgaWRlbnRpZmllci4KICAgICBzdGF0aWMgU3RyaW5nIGFu
aW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlJRCk7CiAKQEAgLTczNCwx
MCArNzMxLDcgQEAgcHJvdGVjdGVkOgogICAgIEZsb2F0Um91bmRlZFJlY3QgbV9iYWNrZHJvcEZp
bHRlcnNSZWN0OwogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbV9hbmltYXRpb25FeHRlbnQ7CiAK
LSAgICBSZWdpb24gbV9ldmVudFJlZ2lvbjsKLSNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCi0g
ICAgVG91Y2hBY3Rpb25SZWdpb24gbV90b3VjaEFjdGlvblJlZ2lvbjsKLSNlbmRpZgorICAgIEV2
ZW50UmVnaW9uIG1fZXZlbnRSZWdpb247CiAjaWYgVVNFKENBKQogICAgIFdpbmRSdWxlIG1fc2hh
cGVMYXllcldpbmRSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKICAgICBQYXRoIG1fc2hhcGVM
YXllclBhdGg7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lv
bi5jcHAJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlZ2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1OSw3ICs2NTksNiBAQCBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjCiAgICAgICAgIGZvciAoYXV0byYgcmVj
dCA6IHJlZ2lvbi5yZWN0cygpKQogICAgICAgICAgICAgdHMgPDwgaW5kZW50IDw8ICIocmVjdCAi
IDw8IHJlY3QgPDwgIilcbiI7CiAgICAgfQotICAgIHRzIDw8IGluZGVudDsKIAogICAgIHJldHVy
biB0czsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkocmV2aXNpb24gMjQzOTMxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTg0LDcgKzk4NCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRTaGFw
ZUxheWVyV2luZFIKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoV2luZFJ1bGVDaGFuZ2Vk
KTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEV2ZW50UmVnaW9uKFJlZ2lvbiYmIGV2
ZW50UmVnaW9uKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEV2ZW50UmVnaW9uKEV2ZW50UmVn
aW9uJiYgZXZlbnRSZWdpb24pCiB7CiAgICAgaWYgKGV2ZW50UmVnaW9uID09IG1fZXZlbnRSZWdp
b24pCiAgICAgICAgIHJldHVybjsKQEAgLTk5MywxNyArOTkzLDYgQEAgdm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnNldEV2ZW50UmVnaW9uKFJlZwogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChF
dmVudFJlZ2lvbkNoYW5nZWQsIG1faXNDb21taXR0aW5nQ2hhbmdlcyA/IERvbnRTY2hlZHVsZUZs
dXNoIDogU2NoZWR1bGVGbHVzaCk7CiB9CiAKLSNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCi12
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VG91Y2hBY3Rpb25SZWdpb24oVG91Y2hBY3Rpb25SZWdp
b24mJiB0b3VjaEFjdGlvblJlZ2lvbikKLXsKLSAgICBpZiAodG91Y2hBY3Rpb25SZWdpb24gPT0g
bV90b3VjaEFjdGlvblJlZ2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXll
cjo6c2V0VG91Y2hBY3Rpb25SZWdpb24oV1RGTW92ZSh0b3VjaEFjdGlvblJlZ2lvbikpOwotICAg
IC8vIEZJWE1FOiBJbnZhbGlkYXRlIGFuZCBwYXNzIHRvIHBsYXRmb3JtIGxheWVyLgotfQotI2Vu
ZGlmCi0KIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzaG91bGRSZXBhaW50T25TaXplQ2hhbmdlKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gZHJhd3NDb250ZW50KCkgJiYgIXRpbGVkQmFja2luZygpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmgJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQs
MTAgKzEyNCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNoYXBlTGF5
ZXJQYXRoKGNvbnN0IFBhdGgmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFNoYXBlTGF5ZXJXaW5kUnVsZShXaW5kUnVsZSkgb3ZlcnJpZGU7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldEV2ZW50UmVnaW9uKFJlZ2lvbiYmKSBvdmVycmlkZTsKLSNpZiBFTkFCTEUo
UE9JTlRFUl9FVkVOVFMpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUb3VjaEFjdGlvblJl
Z2lvbihUb3VjaEFjdGlvblJlZ2lvbiYmKSBvdmVycmlkZTsKLSNlbmRpZgorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0RXZlbnRSZWdpb24oRXZlbnRSZWdpb24mJikgb3ZlcnJpZGU7CisKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKE1vbm90b25pY1RpbWUpIG92
ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygpIG92ZXJy
aWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9y
bUNBTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAkocmV2aXNpb24gMjQzOTMxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIzNCw3ICsyMzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXaW5kUnVsZSBzaGFwZVdp
bmRSdWxlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaGFwZVdpbmRSdWxlKFdp
bmRSdWxlKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RXZlbnRSZWdpb24oY29uc3QgUmVn
aW9uJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRFdmVudFJlZ2lvbihjb25zdCBFdmVudFJl
Z2lvbiYpID0gMDsKICAgICAKICAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVh
cmFuY2UgY3VzdG9tQXBwZWFyYW5jZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ3VzdG9tQXBwZWFyYW5jZShHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlKSA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgJKHJldmlzaW9uIDI0MzkzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBwdWJsaWM6CiAg
ICAgR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBjdXN0b21BcHBlYXJhbmNlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jdXN0b21BcHBlYXJhbmNlOyB9CiAgICAgdm9pZCB1cGRh
dGVDdXN0b21BcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBzZXRFdmVudFJlZ2lvbihjb25zdCBSZWdpb24mKSBvdmVycmlkZSB7
IH0KKyAgICB2b2lkIHNldEV2ZW50UmVnaW9uKGNvbnN0IEV2ZW50UmVnaW9uJikgb3ZlcnJpZGUg
eyB9CiAKICAgICBHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCgp
IGNvbnN0IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oCShyZXZpc2lv
biAyNDM5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUxheWVyV2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwdWJs
aWM6CiAgICAgR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBjdXN0b21BcHBlYXJhbmNl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jdXN0b21BcHBlYXJhbmNlOyB9CiAgICAgdm9p
ZCB1cGRhdGVDdXN0b21BcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2Ug
Y3VzdG9tQXBwZWFyYW5jZSkgb3ZlcnJpZGUgeyBtX2N1c3RvbUFwcGVhcmFuY2UgPSBjdXN0b21B
cHBlYXJhbmNlOyB9CiAKLSAgICB2b2lkIHNldEV2ZW50UmVnaW9uKGNvbnN0IFJlZ2lvbiYpIG92
ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0RXZlbnRSZWdpb24oY29uc3QgRXZlbnRSZWdpb24mKSBv
dmVycmlkZSB7IH0KIAogICAgIEdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVk
Vmlld0lEKCkgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FdmVudFJlZ2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0V2ZW50UmVnaW9uLmNwcAkocmV2aXNpb24gMjQzOTMxKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVG91Y2hBY3Rpb25SZWdpb24uY3BwOjI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9FdmVudFJlZ2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVG91Y2hBY3Rp
b25SZWdpb24uaCIKKworI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjb25zdGV4cHIgdW5zaWduZWQgdG9JbmRleChUb3VjaEFjdGlvbiB0b3VjaEFj
dGlvbikKK3sKKyAgICBzd2l0Y2ggKHRvdWNoQWN0aW9uKSB7CisgICAgY2FzZSBUb3VjaEFjdGlv
bjo6Tm9uZToKKyAgICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBUb3VjaEFjdGlvbjo6TWFuaXB1
bGF0aW9uOgorICAgICAgICByZXR1cm4gMTsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpQYW5YOgor
ICAgICAgICByZXR1cm4gMjsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpQYW5ZOgorICAgICAgICBy
ZXR1cm4gMzsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpQaW5jaFpvb206CisgICAgICAgIHJldHVy
biA0OworICAgIGNhc2UgVG91Y2hBY3Rpb246OkF1dG86CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworY29uc3RleHBy
IFRvdWNoQWN0aW9uIHRvVG91Y2hBY3Rpb24odW5zaWduZWQgaW5kZXgpCit7CisgICAgc3dpdGNo
IChpbmRleCkgeworICAgIGNhc2UgMDoKKyAgICAgICAgcmV0dXJuIFRvdWNoQWN0aW9uOjpOb25l
OworICAgIGNhc2UgMToKKyAgICAgICAgcmV0dXJuIFRvdWNoQWN0aW9uOjpNYW5pcHVsYXRpb247
CisgICAgY2FzZSAyOgorICAgICAgICByZXR1cm4gVG91Y2hBY3Rpb246OlBhblg7CisgICAgY2Fz
ZSAzOgorICAgICAgICByZXR1cm4gVG91Y2hBY3Rpb246OlBhblk7CisgICAgY2FzZSA0OgorICAg
ICAgICByZXR1cm4gVG91Y2hBY3Rpb246OlBpbmNoWm9vbTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFRv
dWNoQWN0aW9uOjpBdXRvOworfQorCitUb3VjaEFjdGlvblJlZ2lvbjo6VG91Y2hBY3Rpb25SZWdp
b24oKSA9IGRlZmF1bHQ7CisKK3ZvaWQgVG91Y2hBY3Rpb25SZWdpb246OnVuaXRlKGNvbnN0IFJl
Z2lvbiYgdG91Y2hSZWdpb24sIE9wdGlvblNldDxUb3VjaEFjdGlvbj4gdG91Y2hBY3Rpb25zKQor
eworICAgIGZvciAoYXV0byB0b3VjaEFjdGlvbiA6IHRvdWNoQWN0aW9ucykgeworICAgICAgICBp
ZiAodG91Y2hBY3Rpb24gPT0gVG91Y2hBY3Rpb246OkF1dG8pCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgYXV0byBpbmRleCA9IHRvSW5kZXgodG91Y2hBY3Rpb24pOworICAgICAgICBpZiAo
bV9yZWdpb25zLnNpemUoKSA8IGluZGV4ICsgMSkKKyAgICAgICAgICAgIG1fcmVnaW9ucy5ncm93
KGluZGV4ICsgMSk7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcmVn
aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBhdXRvIHJlZ2lvblRvdWNoQWN0aW9uID0gdG9U
b3VjaEFjdGlvbihpKTsKKyAgICAgICAgaWYgKHRvdWNoQWN0aW9ucy5jb250YWlucyhyZWdpb25U
b3VjaEFjdGlvbikpCisgICAgICAgICAgICBtX3JlZ2lvbnNbaV0udW5pdGUodG91Y2hSZWdpb24p
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3JlZ2lvbnNbaV0uc3VidHJhY3QodG91Y2hS
ZWdpb24pOworICAgIH0KK30KKworT3B0aW9uU2V0PFRvdWNoQWN0aW9uPiBUb3VjaEFjdGlvblJl
Z2lvbjo6YWN0aW9uc0ZvclBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK3sKKyAg
ICBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+IGFjdGlvbnM7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9yZWdpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX3JlZ2lvbnNb
aV0uY29udGFpbnMocG9pbnQpKSB7CisgICAgICAgICAgICBhdXRvIGFjdGlvbiA9IHRvVG91Y2hB
Y3Rpb24oaSk7CisgICAgICAgICAgICBhY3Rpb25zLmFkZChhY3Rpb24pOworICAgICAgICAgICAg
aWYgKGFjdGlvbiA9PSBUb3VjaEFjdGlvbjo6Tm9uZSB8fCBhY3Rpb24gPT0gVG91Y2hBY3Rpb246
Ok1hbmlwdWxhdGlvbikKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBhY3Rpb25zOworfQorCit2b2lkIFRvdWNoQWN0aW9uUmVnaW9uOjp0cmFu
c2xhdGUoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIGZvciAoYXV0byYgcmVnaW9uIDog
bV9yZWdpb25zKQorICAgICAgICByZWdpb24udHJhbnNsYXRlKG9mZnNldCk7Cit9CisKK1RleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFRvdWNoQWN0aW9uIHRvdWNoQWN0aW9u
KQoreworICAgIHN3aXRjaCAodG91Y2hBY3Rpb24pIHsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpO
b25lOgorICAgICAgICByZXR1cm4gdHMgPDwgIm5vbmUiOworICAgIGNhc2UgVG91Y2hBY3Rpb246
Ok1hbmlwdWxhdGlvbjoKKyAgICAgICAgcmV0dXJuIHRzIDw8ICJtYW5pcHVsYXRpb24iOworICAg
IGNhc2UgVG91Y2hBY3Rpb246OlBhblg6CisgICAgICAgIHJldHVybiB0cyA8PCAicGFuLXgiOwor
ICAgIGNhc2UgVG91Y2hBY3Rpb246OlBhblk6CisgICAgICAgIHJldHVybiB0cyA8PCAicGFuLXki
OworICAgIGNhc2UgVG91Y2hBY3Rpb246OlBpbmNoWm9vbToKKyAgICAgICAgcmV0dXJuIHRzIDw8
ICJwaW5jaC16b29tIjsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpBdXRvOgorICAgICAgICByZXR1
cm4gdHMgPDwgImF1dG8iOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IFRvdWNoQWN0aW9uUmVnaW9uJiB0b3VjaEFjdGlvblJlZ2lvbikKK3sKKyAgICB0cyA8PCAi
XG4iOworICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdWNoQWN0aW9u
UmVnaW9uLm1fcmVnaW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKHRvdWNoQWN0
aW9uUmVnaW9uLm1fcmVnaW9uc1tpXS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBUZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBpbmRlbnRTY29wZSh0cyk7
CisgICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIigiIDw8IHRvVG91Y2hBY3Rpb24oaSk7Cisg
ICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgdG91Y2hBY3Rpb25SZWdpb24ubV9yZWdpb25zW2ld
IDw8ICIpXG4iOworICAgICAgICB9CisgICAgfQorICAgIHRzIDw8IGluZGVudDsKKworICAgIHJl
dHVybiB0czsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FdmVudFJlZ2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0V2ZW50UmVnaW9uLmNwcAkocmV2aXNpb24gMjQzOTMxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0V2ZW50UmVnaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTIgKzI0LDQ2IEBA
CiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRvdWNoQWN0aW9uUmVnaW9u
LmgiCisjaW5jbHVkZSAiRXZlbnRSZWdpb24uaCIKIAotI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5U
UykKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0V2
ZW50UmVnaW9uOjpFdmVudFJlZ2lvbigpID0gZGVmYXVsdDsKKworYm9vbCBFdmVudFJlZ2lvbjo6
b3BlcmF0b3I9PShjb25zdCBFdmVudFJlZ2lvbiYgb3RoZXIpIGNvbnN0Cit7CisjaWYgRU5BQkxF
KFBPSU5URVJfRVZFTlRTKQorICAgIGlmIChtX3RvdWNoQWN0aW9uUmVnaW9ucyAhPSBvdGhlci5t
X3RvdWNoQWN0aW9uUmVnaW9ucykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAg
cmV0dXJuIG1fcmVnaW9uID09IG90aGVyLm1fcmVnaW9uOworfQorCit2b2lkIEV2ZW50UmVnaW9u
Ojp1bml0ZShjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQor
eworICAgIG1fcmVnaW9uLnVuaXRlKHJlZ2lvbik7CisKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVO
VFMpCisgICAgdW5pdGVUb3VjaEFjdGlvbnMocmVnaW9uLCBzdHlsZS5lZmZlY3RpdmVUb3VjaEFj
dGlvbnMoKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdHlsZSk7CisjZW5kaWYKK30KKwor
dm9pZCBFdmVudFJlZ2lvbjo6dHJhbnNsYXRlKGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAg
ICBtX3JlZ2lvbi50cmFuc2xhdGUob2Zmc2V0KTsKKworI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5U
UykKKyAgICBmb3IgKGF1dG8mIHRvdWNoQWN0aW9uUmVnaW9uIDogbV90b3VjaEFjdGlvblJlZ2lv
bnMpCisgICAgICAgIHRvdWNoQWN0aW9uUmVnaW9uLnRyYW5zbGF0ZShvZmZzZXQpOworI2VuZGlm
Cit9CisKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCisKIGNvbnN0ZXhwciB1bnNpZ25lZCB0
b0luZGV4KFRvdWNoQWN0aW9uIHRvdWNoQWN0aW9uKQogewogICAgIHN3aXRjaCAodG91Y2hBY3Rp
b24pIHsKQEAgLTcwLDMzICsxMDQsMzEgQEAgY29uc3RleHByIFRvdWNoQWN0aW9uIHRvVG91Y2hB
Y3Rpb24odW5zaQogICAgIHJldHVybiBUb3VjaEFjdGlvbjo6QXV0bzsKIH0KIAotVG91Y2hBY3Rp
b25SZWdpb246OlRvdWNoQWN0aW9uUmVnaW9uKCkgPSBkZWZhdWx0OwotCi12b2lkIFRvdWNoQWN0
aW9uUmVnaW9uOjp1bml0ZShjb25zdCBSZWdpb24mIHRvdWNoUmVnaW9uLCBPcHRpb25TZXQ8VG91
Y2hBY3Rpb24+IHRvdWNoQWN0aW9ucykKK3ZvaWQgRXZlbnRSZWdpb246OnVuaXRlVG91Y2hBY3Rp
b25zKGNvbnN0IFJlZ2lvbiYgdG91Y2hSZWdpb24sIE9wdGlvblNldDxUb3VjaEFjdGlvbj4gdG91
Y2hBY3Rpb25zKQogewogICAgIGZvciAoYXV0byB0b3VjaEFjdGlvbiA6IHRvdWNoQWN0aW9ucykg
ewogICAgICAgICBpZiAodG91Y2hBY3Rpb24gPT0gVG91Y2hBY3Rpb246OkF1dG8pCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgYXV0byBpbmRleCA9IHRvSW5kZXgodG91Y2hBY3Rpb24pOwot
ICAgICAgICBpZiAobV9yZWdpb25zLnNpemUoKSA8IGluZGV4ICsgMSkKLSAgICAgICAgICAgIG1f
cmVnaW9ucy5ncm93KGluZGV4ICsgMSk7CisgICAgICAgIGlmIChtX3RvdWNoQWN0aW9uUmVnaW9u
cy5zaXplKCkgPCBpbmRleCArIDEpCisgICAgICAgICAgICBtX3RvdWNoQWN0aW9uUmVnaW9ucy5n
cm93KGluZGV4ICsgMSk7CiAgICAgfQogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
cmVnaW9ucy5zaXplKCk7ICsraSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Rv
dWNoQWN0aW9uUmVnaW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvIHJlZ2lvblRvdWNo
QWN0aW9uID0gdG9Ub3VjaEFjdGlvbihpKTsKICAgICAgICAgaWYgKHRvdWNoQWN0aW9ucy5jb250
YWlucyhyZWdpb25Ub3VjaEFjdGlvbikpCi0gICAgICAgICAgICBtX3JlZ2lvbnNbaV0udW5pdGUo
dG91Y2hSZWdpb24pOworICAgICAgICAgICAgbV90b3VjaEFjdGlvblJlZ2lvbnNbaV0udW5pdGUo
dG91Y2hSZWdpb24pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3JlZ2lvbnNbaV0uc3Vi
dHJhY3QodG91Y2hSZWdpb24pOworICAgICAgICAgICAgbV90b3VjaEFjdGlvblJlZ2lvbnNbaV0u
c3VidHJhY3QodG91Y2hSZWdpb24pOwogICAgIH0KIH0KIAotT3B0aW9uU2V0PFRvdWNoQWN0aW9u
PiBUb3VjaEFjdGlvblJlZ2lvbjo6YWN0aW9uc0ZvclBvaW50KGNvbnN0IEludFBvaW50JiBwb2lu
dCkgY29uc3QKK09wdGlvblNldDxUb3VjaEFjdGlvbj4gRXZlbnRSZWdpb246OnRvdWNoQWN0aW9u
c0ZvclBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBPcHRpb25TZXQ8
VG91Y2hBY3Rpb24+IGFjdGlvbnM7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9y
ZWdpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX3JlZ2lvbnNbaV0uY29udGFpbnMo
cG9pbnQpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdG91Y2hBY3Rpb25SZWdp
b25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX3RvdWNoQWN0aW9uUmVnaW9uc1tpXS5j
b250YWlucyhwb2ludCkpIHsKICAgICAgICAgICAgIGF1dG8gYWN0aW9uID0gdG9Ub3VjaEFjdGlv
bihpKTsKICAgICAgICAgICAgIGFjdGlvbnMuYWRkKGFjdGlvbik7CiAgICAgICAgICAgICBpZiAo
YWN0aW9uID09IFRvdWNoQWN0aW9uOjpOb25lIHx8IGFjdGlvbiA9PSBUb3VjaEFjdGlvbjo6TWFu
aXB1bGF0aW9uKQpAQCAtMTA3LDEyICsxMzksNiBAQCBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+IFRv
dWNoQWN0aW9uUmVnaW9uCiAgICAgcmV0dXJuIGFjdGlvbnM7CiB9CiAKLXZvaWQgVG91Y2hBY3Rp
b25SZWdpb246OnRyYW5zbGF0ZShjb25zdCBJbnRTaXplJiBvZmZzZXQpCi17Ci0gICAgZm9yIChh
dXRvJiByZWdpb24gOiBtX3JlZ2lvbnMpCi0gICAgICAgIHJlZ2lvbi50cmFuc2xhdGUob2Zmc2V0
KTsKLX0KLQogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVG91Y2hBY3Rp
b24gdG91Y2hBY3Rpb24pCiB7CiAgICAgc3dpdGNoICh0b3VjaEFjdGlvbikgewpAQCAtMTMzLDIz
ICsxNTksMjkgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVAogICAg
IHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgVG91Y2hBY3Rpb25SZWdpb24mIHRvdWNoQWN0aW9uUmVnaW9uKQorI2VuZGlmCisKK1Rl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEV2ZW50UmVnaW9uJiBl
dmVudFJlZ2lvbikKIHsKLSAgICB0cyA8PCAiXG4iOwotICAgIHsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHRvdWNoQWN0aW9uUmVnaW9uLm1fcmVnaW9ucy5zaXplKCk7ICsraSkg
ewotICAgICAgICAgICAgaWYgKHRvdWNoQWN0aW9uUmVnaW9uLm1fcmVnaW9uc1tpXS5pc0VtcHR5
KCkpCisgICAgdHMgPDwgZXZlbnRSZWdpb24ubV9yZWdpb247CisKKyNpZiBFTkFCTEUoUE9JTlRF
Ul9FVkVOVFMpCisgICAgaWYgKCFldmVudFJlZ2lvbi5tX3RvdWNoQWN0aW9uUmVnaW9ucy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgVGV4dFN0cmVhbTo6SW5kZW50U2NvcGUgaW5kZW50U2NvcGUodHMp
OworICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIih0b3VjaC1hY3Rpb25cbiI7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBldmVudFJlZ2lvbi5tX3RvdWNoQWN0aW9uUmVnaW9ucy5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGV2ZW50UmVnaW9uLm1fdG91Y2hBY3Rpb25S
ZWdpb25zW2ldLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudFNjb3BlKHRzKTsKICAgICAgICAgICAg
IHRzIDw8IGluZGVudCA8PCAiKCIgPDwgdG9Ub3VjaEFjdGlvbihpKTsKLSAgICAgICAgICAgIHRz
IDw8IGluZGVudCA8PCB0b3VjaEFjdGlvblJlZ2lvbi5tX3JlZ2lvbnNbaV0gPDwgIilcbiI7Cisg
ICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgZXZlbnRSZWdpb24ubV90b3VjaEFjdGlvblJlZ2lv
bnNbaV07CisgICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIilcbiI7CiAgICAgICAgIH0KKyAg
ICAgICAgdHMgPDwgaW5kZW50IDw8ICIpXG4iOwogICAgIH0KLSAgICB0cyA8PCBpbmRlbnQ7Cisj
ZW5kaWYKIAogICAgIHJldHVybiB0czsKIH0KIAogfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCShyZXZpc2lvbiAyNDM5MzEpCShmcm9tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9Ub3VjaEFjdGlvblJlZ2lvbi5oOjI0MzkzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShQT0lOVEVS
X0VWRU5UUykKKworI2luY2x1ZGUgIlJlZ2lvbi5oIgorI2luY2x1ZGUgIlRvdWNoQWN0aW9uLmgi
CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUb3VjaEFjdGlvblJlZ2lvbiB7CitwdWJsaWM6
CisgICAgV0VCQ09SRV9FWFBPUlQgVG91Y2hBY3Rpb25SZWdpb24oKTsKKworICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9ucy5pc0VtcHR5KCk7IH0KKworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBUb3VjaEFjdGlvblJlZ2lvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1fcmVnaW9ucyA9PSBvdGhlci5tX3JlZ2lvbnM7IH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdW5pdGUoY29uc3QgUmVnaW9uJiwgT3B0aW9uU2V0PFRvdWNoQWN0aW9uPik7CisgICAgV0VC
Q09SRV9FWFBPUlQgT3B0aW9uU2V0PFRvdWNoQWN0aW9uPiBhY3Rpb25zRm9yUG9pbnQoY29uc3Qg
SW50UG9pbnQmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyYW5zbGF0ZShjb25z
dCBJbnRTaXplJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYsIGNvbnN0IFRvdWNoQWN0aW9uUmVnaW9uJik7CisKKyAgICBWZWN0b3I8
UmVnaW9uPiBtX3JlZ2lvbnM7Cit9OworCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBjb25zdCBUb3VjaEFjdGlvblJlZ2lvbiYpOworCit9CisKKyNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmgJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRT
KQotCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVG91Y2hBY3Rpb24uaCIKICNpbmNs
dWRlIDx3dGYvT3B0aW9uU2V0Lmg+CkBAIC0zNCwyNiArMzIsODcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBUb3VjaEFjdGlvblJlZ2lvbiB7CitjbGFzcyBSZW5kZXJTdHlsZTsK
KworY2xhc3MgRXZlbnRSZWdpb24gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFRvdWNo
QWN0aW9uUmVnaW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXZlbnRSZWdpb24oKTsKIAotICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9ucy5pc0VtcHR5KCk7IH0KKyAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lvbi5pc0VtcHR5KCk7IH0KIAot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUb3VjaEFjdGlvblJlZ2lvbiYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIG1fcmVnaW9ucyA9PSBvdGhlci5tX3JlZ2lvbnM7IH0KKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRSZWdpb24mKSBjb25zdDsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdW5pdGUoY29uc3QgUmVnaW9uJiwgT3B0aW9uU2V0PFRvdWNoQWN0
aW9uPik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uU2V0PFRvdWNoQWN0aW9uPiBhY3Rpb25z
Rm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHVuaXRlKGNvbnN0IFJlZ2lvbiYsIGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB0cmFuc2xhdGUoY29uc3QgSW50U2l6ZSYpOwogCisgICAgYm9vbCBjb250YWlu
cyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9uLmNvbnRhaW5z
KHBvaW50KTsgfQorICAgIGJvb2wgY29udGFpbnMoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3Qg
eyByZXR1cm4gbV9yZWdpb24uY29udGFpbnMocmVjdCk7IH0KKworI2lmIEVOQUJMRShQT0lOVEVS
X0VWRU5UUykKKyAgICBib29sIGhhc1RvdWNoQWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuICFtX3Rv
dWNoQWN0aW9uUmVnaW9ucy5pc0VtcHR5KCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25T
ZXQ8VG91Y2hBY3Rpb24+IHRvdWNoQWN0aW9uc0ZvclBvaW50KGNvbnN0IEludFBvaW50JikgY29u
c3Q7CisjZW5kaWYKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8RXZlbnRSZWdpb24+IGRlY29kZShEZWNvZGVyJik7CisgICAgLy8gRklYTUU6IFJlbW92ZSBs
ZWdhY3kgZGVjb2RlLgorICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRl
Y29kZShEZWNvZGVyJiwgRXZlbnRSZWdpb24mKTsKKwogcHJpdmF0ZToKLSAgICBmcmllbmQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgVG91Y2hBY3Rpb25SZWdpb24m
KTsKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCisgICAgdm9pZCB1bml0ZVRvdWNoQWN0aW9u
cyhjb25zdCBSZWdpb24mLCBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+KTsKKyNlbmRpZgorICAgIGZy
aWVuZCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBFdmVudFJlZ2lv
biYpOwogCi0gICAgVmVjdG9yPFJlZ2lvbj4gbV9yZWdpb25zOworICAgIFJlZ2lvbiBtX3JlZ2lv
bjsKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCisgICAgVmVjdG9yPFJlZ2lvbj4gbV90b3Vj
aEFjdGlvblJlZ2lvbnM7CisjZW5kaWYKIH07CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IFRvdWNoQWN0aW9uUmVnaW9uJik7CitUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mLCBjb25zdCBFdmVudFJlZ2lvbiYpOwogCit0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgordm9pZCBFdmVudFJlZ2lvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCBtX3JlZ2lvbjsKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMp
CisgICAgZW5jb2RlciA8PCBtX3RvdWNoQWN0aW9uUmVnaW9uczsKKyNlbmRpZgogfQogCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8RXZlbnRSZWdpb24+IEV2ZW50UmVnaW9uOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxSZWdpb24+IHJlZ2lvbjsK
KyAgICBkZWNvZGVyID4+IHJlZ2lvbjsKKyAgICBpZiAoIXJlZ2lvbikKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIEV2ZW50UmVnaW9uIGV2ZW50UmVnaW9uOworICAgIGV2ZW50
UmVnaW9uLm1fcmVnaW9uID0gV1RGTW92ZSgqcmVnaW9uKTsKKworI2lmIEVOQUJMRShQT0lOVEVS
X0VWRU5UUykKKyAgICBPcHRpb25hbDxWZWN0b3I8UmVnaW9uPj4gdG91Y2hBY3Rpb25SZWdpb25z
OworICAgIGRlY29kZXIgPj4gdG91Y2hBY3Rpb25SZWdpb25zOworICAgIGlmICghdG91Y2hBY3Rp
b25SZWdpb25zKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgZXZlbnRSZWdp
b24ubV90b3VjaEFjdGlvblJlZ2lvbnMgPSBXVEZNb3ZlKCp0b3VjaEFjdGlvblJlZ2lvbnMpOwog
I2VuZGlmCisKKyAgICByZXR1cm4gZXZlbnRSZWdpb247Cit9CisKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+Citib29sIEV2ZW50UmVnaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRXZlbnRS
ZWdpb24mIGV2ZW50UmVnaW9uKQoreworICAgIE9wdGlvbmFsPEV2ZW50UmVnaW9uPiBkZWNvZGVk
RXZlbnRSZWdpb247CisgICAgZGVjb2RlciA+PiBkZWNvZGVkRXZlbnRSZWdpb247CisgICAgaWYg
KCFkZWNvZGVkRXZlbnRSZWdpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBldmVudFJl
Z2lvbiA9IFdURk1vdmUoKmRlY29kZWRFdmVudFJlZ2lvbik7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJ
KHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkVs
bGlwc2lzQm94LmgiCisjaW5jbHVkZSAiRXZlbnRSZWdpb24uaCIKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQu
aCIKQEAgLTUwNCw3ICs1MDUsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5m
byYgcGFpCiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkV2ZW50UmVn
aW9uKSB7CiAgICAgICAgIGlmICh2aXNpYmxlVG9IaXRUZXN0aW5nKCkpCi0gICAgICAgICAgICBw
YWludEluZm8uZXZlbnRSZWdpb24tPnVuaXRlKGVuY2xvc2luZ0ludFJlY3QoYm94UmVjdCkpOwor
ICAgICAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uLT51bml0ZShlbmNsb3NpbmdJbnRSZWN0
KGJveFJlY3QpLCByZW5kZXJlcigpLnN0eWxlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCShyZXZpc2lvbiAyNDM5MzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDE3ICszNywxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEV2ZW50
UmVnaW9uOwogY2xhc3MgT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50OwotY2xhc3MgUmVnaW9uOwog
Y2xhc3MgUmVuZGVySW5saW5lOwogY2xhc3MgUmVuZGVyTGF5ZXI7CiBjbGFzcyBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyT2JqZWN0OwogCi0jaWYgRU5BQkxFKFBPSU5URVJf
RVZFTlRTKQotY2xhc3MgVG91Y2hBY3Rpb25SZWdpb247Ci0jZW5kaWYKLSAgICAKIHR5cGVkZWYg
SGFzaE1hcDxPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQqLCBJbnRSZWN0PiBPdmVybGFwVGVzdFJl
cXVlc3RNYXA7CiAKIC8qCkBAIC0xMzQsMTAgKzEzMCw3IEBAIHN0cnVjdCBQYWludEluZm8gewog
ICAgIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyOyAvLyB0aGUg
bGF5ZXIgb2JqZWN0IHRoYXQgb3JpZ2luYXRlcyB0aGUgY3VycmVudCBwYWludGluZwogICAgIGJv
b2wgcmVxdWlyZVNlY3VyaXR5T3JpZ2luQWNjZXNzRm9yV2lkZ2V0cyB7IGZhbHNlIH07CiAgICAg
Y29uc3QgUmVuZGVyTGF5ZXIqIG1fZW5jbG9zaW5nU2VsZlBhaW50aW5nTGF5ZXIgeyBudWxscHRy
IH07Ci0gICAgUmVnaW9uKiBldmVudFJlZ2lvbiB7IG51bGxwdHIgfTsgLy8gRm9yIFBhaW50UGhh
c2U6OkV2ZW50UmVnaW9uLgotI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLSAgICBUb3VjaEFj
dGlvblJlZ2lvbiogdG91Y2hBY3Rpb25SZWdpb24geyBudWxscHRyIH07Ci0jZW5kaWYKKyAgICBF
dmVudFJlZ2lvbiogZXZlbnRSZWdpb24geyBudWxscHRyIH07IC8vIEZvciBQYWludFBoYXNlOjpF
dmVudFJlZ2lvbi4KIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0KiBtX2NvbnRleHQ7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lv
biAyNDM5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRXZlbnRS
ZWdpb24uaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCkBAIC03MCw3ICs3MSw2IEBACiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU2hhcGVPdXRzaWRl
SW5mby5oIgotI2luY2x1ZGUgIlRvdWNoQWN0aW9uUmVnaW9uLmgiCiAjaW5jbHVkZSAiVHJhbnNm
b3JtU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMTI0NiwxNyArMTI0NiwxMyBAQCB2b2lkIFJlbmRl
ckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8mCiAKICAgICAgICAgaWYgKHZpc2libGVUb0hp
dFRlc3RpbmcoKSkgewogICAgICAgICAgICAgYXV0byBib3JkZXJSZWdpb24gPSBhcHByb3hpbWF0
ZUFzUmVnaW9uKHN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihib3JkZXJSZWN0KSk7Ci0gICAg
ICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb24tPnVuaXRlKGJvcmRlclJlZ2lvbik7Ci0jaWYg
RU5BQkxFKFBPSU5URVJfRVZFTlRTKQotICAgICAgICAgICAgaWYgKHBhaW50SW5mby50b3VjaEFj
dGlvblJlZ2lvbikKLSAgICAgICAgICAgICAgICBwYWludEluZm8udG91Y2hBY3Rpb25SZWdpb24t
PnVuaXRlKGJvcmRlclJlZ2lvbiwgc3R5bGUoKS5lZmZlY3RpdmVUb3VjaEFjdGlvbnMoKSk7Ci0j
ZW5kaWYKKyAgICAgICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lvbi0+dW5pdGUoYm9yZGVyUmVn
aW9uLCBzdHlsZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE5vIG5lZWQgdG8gY2hlY2sg
ZGVzY2VuZGFudHMgaWYgd2UgZG9uJ3QgaGF2ZSBvdmVyZmxvdyBhbmQgdGhlIGFyZWEgaXMgYWxy
ZWFkeSBjb3ZlcmVkLgogICAgICAgICBib29sIG5lZWRzVHJhdmVyc2VEZXNjZW5kYW50cyA9IGhh
c1Zpc3VhbE92ZXJmbG93KCkgfHwgIXBhaW50SW5mby5ldmVudFJlZ2lvbi0+Y29udGFpbnMoZW5j
bG9zaW5nSW50UmVjdChib3JkZXJSZWN0KSk7Ci0jaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQot
ICAgICAgICBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgPSBuZWVkc1RyYXZlcnNlRGVzY2VuZGFu
dHMgfHwgcGFpbnRJbmZvLnRvdWNoQWN0aW9uUmVnaW9uOworI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKKyAgICAgICAgbmVlZHNUcmF2ZXJzZURlc2Nl
bmRhbnRzID0gbmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzIHx8IGRvY3VtZW50KCkudG91Y2hBY3Rp
b25FbGVtZW50cygpOwogI2VuZGlmCiAgICAgICAgIGlmICghbmVlZHNUcmF2ZXJzZURlc2NlbmRh
bnRzKQogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAyNDM5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODkxLDkgKzQ4OTEsNiBA
QCB2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0RXZlbnRSZWdpb25Gb3JGCiAgICAgZm9yIChjb25z
dCBhdXRvJiBmcmFnbWVudCA6IGxheWVyRnJhZ21lbnRzKSB7CiAgICAgICAgIFBhaW50SW5mbyBw
YWludEluZm8oY29udGV4dCwgZnJhZ21lbnQuZm9yZWdyb3VuZFJlY3QucmVjdCgpLCBQYWludFBo
YXNlOjpFdmVudFJlZ2lvbiwgeyB9KTsKICAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uID0g
bG9jYWxQYWludGluZ0luZm8uZXZlbnRSZWdpb247Ci0jaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRT
KQotICAgICAgICBwYWludEluZm8udG91Y2hBY3Rpb25SZWdpb24gPSBsb2NhbFBhaW50aW5nSW5m
by50b3VjaEFjdGlvblJlZ2lvbjsKLSNlbmRpZgogICAgICAgICByZW5kZXJlcigpLnBhaW50KHBh
aW50SW5mbywgdG9MYXlvdXRQb2ludChmcmFnbWVudC5sYXllckJvdW5kcy5sb2NhdGlvbigpIC0g
cmVuZGVyQm94TG9jYXRpb24oKSArIGxvY2FsUGFpbnRpbmdJbmZvLnN1YnBpeGVsT2Zmc2V0KSk7
CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHJl
dmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIENTU0ZpbHRlcjsKIGNsYXNzIENsaXBSZWN0czsKIGNsYXNzIENsaXBSZWN0c0NhY2hlOwor
Y2xhc3MgRXZlbnRSZWdpb247CiBjbGFzcyBIaXRUZXN0UmVxdWVzdDsKIGNsYXNzIEhpdFRlc3RS
ZXN1bHQ7CiBjbGFzcyBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGU7CkBAIC04MCwxMCArODEsNiBA
QCBjbGFzcyBSZW5kZXJWaWV3OwogY2xhc3MgU2Nyb2xsYmFyOwogY2xhc3MgVHJhbnNmb3JtYXRp
b25NYXRyaXg7CiAKLSNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCi1jbGFzcyBUb3VjaEFjdGlv
blJlZ2lvbjsKLSNlbmRpZgotCiBlbnVtIEJvcmRlclJhZGl1c0NsaXBwaW5nUnVsZSB7IEluY2x1
ZGVTZWxmRm9yQm9yZGVyUmFkaXVzLCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzIH07
CiBlbnVtIEluY2x1ZGVTZWxmT3JOb3QgeyBJbmNsdWRlU2VsZiwgRXhjbHVkZVNlbGYgfTsKIApA
QCAtOTE2LDEwICs5MTMsNyBAQCBwcml2YXRlOgogICAgICAgICBPcHRpb25TZXQ8UGFpbnRCZWhh
dmlvcj4gcGFpbnRCZWhhdmlvcjsKICAgICAgICAgYm9vbCByZXF1aXJlU2VjdXJpdHlPcmlnaW5B
Y2Nlc3NGb3JXaWRnZXRzOwogICAgICAgICBib29sIGNsaXBUb0RpcnR5UmVjdCB7IHRydWUgfTsK
LSAgICAgICAgUmVnaW9uKiBldmVudFJlZ2lvbiB7IG51bGxwdHIgfTsKLSNpZiBFTkFCTEUoUE9J
TlRFUl9FVkVOVFMpCi0gICAgICAgIFRvdWNoQWN0aW9uUmVnaW9uKiB0b3VjaEFjdGlvblJlZ2lv
biB7IG51bGxwdHIgfTsKLSNlbmRpZgorICAgICAgICBFdmVudFJlZ2lvbiogZXZlbnRSZWdpb24g
eyBudWxscHRyIH07CiAgICAgfTsKIAogICAgIC8vIENvbXB1dGUsIGNhY2hlIGFuZCByZXR1cm4g
Y2xpcCByZWN0cyBjb21wdXRlZCB3aXRoIHRoZSBnaXZlbiBsYXllciBhcyB0aGUgcm9vdC4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CShyZXZpc2lvbiAyNDM5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRU
aW1lbGluZS5oIgorI2luY2x1ZGUgIkV2ZW50UmVnaW9uLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKQEAg
LTUxLDcgKzUyLDYgQEAKICNpbmNsdWRlICJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaCIKICNp
bmNsdWRlICJQbHVnaW5WaWV3QmFzZS5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgot
I2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlckZyYWdtZW50Q29udGFpbmVyLmgi
CiAjaW5jbHVkZSAiUmVuZGVyRnJhZ21lbnRlZEZsb3cuaCIKICNpbmNsdWRlICJSZW5kZXJIVE1M
Q2FudmFzLmgiCkBAIC0xNDQ5LDE1ICsxNDQ5LDkgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6
OnVwZGF0ZUV2ZW50UmVnaQogICAgIEdyYXBoaWNzQ29udGV4dCBudWxsQ29udGV4dChudWxscHRy
KTsKICAgICBSZW5kZXJMYXllcjo6TGF5ZXJQYWludGluZ0luZm8gcGFpbnRpbmdJbmZvKCZtX293
bmluZ0xheWVyLCBjb21wb3NpdGVkQm91bmRzKCksIHsgfSwgTGF5b3V0U2l6ZSgpKTsKIAotICAg
IFJlZ2lvbiBldmVudFJlZ2lvbjsKKyAgICBFdmVudFJlZ2lvbiBldmVudFJlZ2lvbjsKICAgICBw
YWludGluZ0luZm8uZXZlbnRSZWdpb24gPSAmZXZlbnRSZWdpb247CiAKLSNpZiBFTkFCTEUoUE9J
TlRFUl9FVkVOVFMpCi0gICAgVG91Y2hBY3Rpb25SZWdpb24gdG91Y2hBY3Rpb25SZWdpb247Ci0g
ICAgaWYgKGhhc1RvdWNoQWN0aW9uRWxlbWVudHMpCi0gICAgICAgIHBhaW50aW5nSW5mby50b3Vj
aEFjdGlvblJlZ2lvbiA9ICZ0b3VjaEFjdGlvblJlZ2lvbjsKLSNlbmRpZgotCiAgICAgYXV0byBw
YWludEZsYWdzID0gUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQWxs
UGhhc2VzRmxhZ3MoKSB8IFJlbmRlckxheWVyOjpQYWludExheWVyQ29sbGVjdGluZ0V2ZW50UmVn
aW9uOwogICAgIG1fb3duaW5nTGF5ZXIucGFpbnRMYXllckNvbnRlbnRzKG51bGxDb250ZXh0LCBw
YWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwogCkBAIC0xNDY1LDEwICsxNDU5LDYgQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVnaQogICAgIGV2ZW50UmVnaW9uLnRyYW5z
bGF0ZShjb250ZW50T2Zmc2V0KTsKICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldEV2ZW50UmVnaW9u
KFdURk1vdmUoZXZlbnRSZWdpb24pKTsKIAotI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLSAg
ICB0b3VjaEFjdGlvblJlZ2lvbi50cmFuc2xhdGUoY29udGVudE9mZnNldCk7Ci0gICAgbV9ncmFw
aGljc0xheWVyLT5zZXRUb3VjaEFjdGlvblJlZ2lvbihXVEZNb3ZlKHRvdWNoQWN0aW9uUmVnaW9u
KSk7Ci0jZW5kaWYKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNDM5MzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllck1vZGVs
T2JqZWN0LmgiCiAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlckxh
eWVyQmFja2luZy5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgogI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNw
cAkocmV2aXNpb24gMjQzOTMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXRGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJCaWRpUnVuLmgiCiAjaW5jbHVkZSAiQmlkaVJ1bkxpc3QuaCIKKyNpbmNsdWRl
ICJFdmVudFJlZ2lvbi5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC04Myw3ICs4NCw3IEBAIHZvaWQg
cGFpbnRGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmwKICAgICAgICAgcGFpbnRSZWN0Lm1v
dmVCeSgtcGFpbnRPZmZzZXQpOwogICAgICAgICBmb3IgKGF1dG8gcnVuIDogbGF5b3V0LnJ1blJl
c29sdmVyKCkucmFuZ2VGb3JSZWN0KHBhaW50UmVjdCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVj
dCB2aXN1YWxPdmVyZmxvd1JlY3QgPSBjb21wdXRlT3ZlcmZsb3coZmxvdywgcnVuLnJlY3QoKSk7
Ci0gICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb24tPnVuaXRlKGVuY2xvc2luZ0ludFJl
Y3QodmlzdWFsT3ZlcmZsb3dSZWN0KSk7CisgICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdp
b24tPnVuaXRlKGVuY2xvc2luZ0ludFJlY3QodmlzdWFsT3ZlcmZsb3dSZWN0KSwgZmxvdy5zdHls
ZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RvdWNoQWN0aW9uUmVnaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVG91Y2hBY3Rpb25SZWdpb24uY3BwCShyZXZpc2lvbiAyNDM5
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVG91Y2hBY3Rpb25SZWdpb24uY3BwCShu
b25leGlzdGVudCkKQEAgLTEsMTU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiVG91Y2hBY3Rpb25SZWdpb24uaCIKLQotI2lmIEVOQUJMRShQT0lO
VEVSX0VWRU5UUykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdGV4cHIgdW5zaWduZWQg
dG9JbmRleChUb3VjaEFjdGlvbiB0b3VjaEFjdGlvbikKLXsKLSAgICBzd2l0Y2ggKHRvdWNoQWN0
aW9uKSB7Ci0gICAgY2FzZSBUb3VjaEFjdGlvbjo6Tm9uZToKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgY2FzZSBUb3VjaEFjdGlvbjo6TWFuaXB1bGF0aW9uOgotICAgICAgICByZXR1cm4gMTsKLSAg
ICBjYXNlIFRvdWNoQWN0aW9uOjpQYW5YOgotICAgICAgICByZXR1cm4gMjsKLSAgICBjYXNlIFRv
dWNoQWN0aW9uOjpQYW5ZOgotICAgICAgICByZXR1cm4gMzsKLSAgICBjYXNlIFRvdWNoQWN0aW9u
OjpQaW5jaFpvb206Ci0gICAgICAgIHJldHVybiA0OwotICAgIGNhc2UgVG91Y2hBY3Rpb246OkF1
dG86Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gMDsKLX0KLQotY29uc3RleHByIFRvdWNoQWN0aW9uIHRvVG91Y2hBY3Rpb24odW5z
aWduZWQgaW5kZXgpCi17Ci0gICAgc3dpdGNoIChpbmRleCkgewotICAgIGNhc2UgMDoKLSAgICAg
ICAgcmV0dXJuIFRvdWNoQWN0aW9uOjpOb25lOwotICAgIGNhc2UgMToKLSAgICAgICAgcmV0dXJu
IFRvdWNoQWN0aW9uOjpNYW5pcHVsYXRpb247Ci0gICAgY2FzZSAyOgotICAgICAgICByZXR1cm4g
VG91Y2hBY3Rpb246OlBhblg7Ci0gICAgY2FzZSAzOgotICAgICAgICByZXR1cm4gVG91Y2hBY3Rp
b246OlBhblk7Ci0gICAgY2FzZSA0OgotICAgICAgICByZXR1cm4gVG91Y2hBY3Rpb246OlBpbmNo
Wm9vbTsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRvdWNoQWN0aW9uOjpBdXRvOwotfQotCi1Ub3VjaEFj
dGlvblJlZ2lvbjo6VG91Y2hBY3Rpb25SZWdpb24oKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgVG91Y2hB
Y3Rpb25SZWdpb246OnVuaXRlKGNvbnN0IFJlZ2lvbiYgdG91Y2hSZWdpb24sIE9wdGlvblNldDxU
b3VjaEFjdGlvbj4gdG91Y2hBY3Rpb25zKQotewotICAgIGZvciAoYXV0byB0b3VjaEFjdGlvbiA6
IHRvdWNoQWN0aW9ucykgewotICAgICAgICBpZiAodG91Y2hBY3Rpb24gPT0gVG91Y2hBY3Rpb246
OkF1dG8pCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgYXV0byBpbmRleCA9IHRvSW5kZXgo
dG91Y2hBY3Rpb24pOwotICAgICAgICBpZiAobV9yZWdpb25zLnNpemUoKSA8IGluZGV4ICsgMSkK
LSAgICAgICAgICAgIG1fcmVnaW9ucy5ncm93KGluZGV4ICsgMSk7Ci0gICAgfQotCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcmVnaW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBh
dXRvIHJlZ2lvblRvdWNoQWN0aW9uID0gdG9Ub3VjaEFjdGlvbihpKTsKLSAgICAgICAgaWYgKHRv
dWNoQWN0aW9ucy5jb250YWlucyhyZWdpb25Ub3VjaEFjdGlvbikpCi0gICAgICAgICAgICBtX3Jl
Z2lvbnNbaV0udW5pdGUodG91Y2hSZWdpb24pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X3JlZ2lvbnNbaV0uc3VidHJhY3QodG91Y2hSZWdpb24pOwotICAgIH0KLX0KLQotT3B0aW9uU2V0
PFRvdWNoQWN0aW9uPiBUb3VjaEFjdGlvblJlZ2lvbjo6YWN0aW9uc0ZvclBvaW50KGNvbnN0IElu
dFBvaW50JiBwb2ludCkgY29uc3QKLXsKLSAgICBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+IGFjdGlv
bnM7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9yZWdpb25zLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIGlmIChtX3JlZ2lvbnNbaV0uY29udGFpbnMocG9pbnQpKSB7Ci0gICAgICAg
ICAgICBhdXRvIGFjdGlvbiA9IHRvVG91Y2hBY3Rpb24oaSk7Ci0gICAgICAgICAgICBhY3Rpb25z
LmFkZChhY3Rpb24pOwotICAgICAgICAgICAgaWYgKGFjdGlvbiA9PSBUb3VjaEFjdGlvbjo6Tm9u
ZSB8fCBhY3Rpb24gPT0gVG91Y2hBY3Rpb246Ok1hbmlwdWxhdGlvbikKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBhY3Rpb25zOwotfQotCi12
b2lkIFRvdWNoQWN0aW9uUmVnaW9uOjp0cmFuc2xhdGUoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQot
ewotICAgIGZvciAoYXV0byYgcmVnaW9uIDogbV9yZWdpb25zKQotICAgICAgICByZWdpb24udHJh
bnNsYXRlKG9mZnNldCk7Ci19Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIFRvdWNoQWN0aW9uIHRvdWNoQWN0aW9uKQotewotICAgIHN3aXRjaCAodG91Y2hBY3Rpb24p
IHsKLSAgICBjYXNlIFRvdWNoQWN0aW9uOjpOb25lOgotICAgICAgICByZXR1cm4gdHMgPDwgIm5v
bmUiOwotICAgIGNhc2UgVG91Y2hBY3Rpb246Ok1hbmlwdWxhdGlvbjoKLSAgICAgICAgcmV0dXJu
IHRzIDw8ICJtYW5pcHVsYXRpb24iOwotICAgIGNhc2UgVG91Y2hBY3Rpb246OlBhblg6Ci0gICAg
ICAgIHJldHVybiB0cyA8PCAicGFuLXgiOwotICAgIGNhc2UgVG91Y2hBY3Rpb246OlBhblk6Ci0g
ICAgICAgIHJldHVybiB0cyA8PCAicGFuLXkiOwotICAgIGNhc2UgVG91Y2hBY3Rpb246OlBpbmNo
Wm9vbToKLSAgICAgICAgcmV0dXJuIHRzIDw8ICJwaW5jaC16b29tIjsKLSAgICBjYXNlIFRvdWNo
QWN0aW9uOjpBdXRvOgotICAgICAgICByZXR1cm4gdHMgPDwgImF1dG8iOwotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KLVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFRvdWNoQWN0aW9uUmVnaW9uJiB0b3VjaEFj
dGlvblJlZ2lvbikKLXsKLSAgICB0cyA8PCAiXG4iOwotICAgIHsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHRvdWNoQWN0aW9uUmVnaW9uLm1fcmVnaW9ucy5zaXplKCk7ICsraSkg
ewotICAgICAgICAgICAgaWYgKHRvdWNoQWN0aW9uUmVnaW9uLm1fcmVnaW9uc1tpXS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBUZXh0U3RyZWFtOjpJ
bmRlbnRTY29wZSBpbmRlbnRTY29wZSh0cyk7Ci0gICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwg
IigiIDw8IHRvVG91Y2hBY3Rpb24oaSk7Ci0gICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgdG91
Y2hBY3Rpb25SZWdpb24ubV9yZWdpb25zW2ldIDw8ICIpXG4iOwotICAgICAgICB9Ci0gICAgfQot
ICAgIHRzIDw8IGluZGVudDsKLQotICAgIHJldHVybiB0czsKLX0KLQotfQotCi0jZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Ub3VjaEFjdGlvblJlZ2lvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Ub3VjaEFjdGlvblJlZ2lvbi5oCShyZXZp
c2lvbiAyNDM5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVG91Y2hBY3Rpb25SZWdp
b24uaAkobm9uZXhpc3RlbnQpCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLQotI2luY2x1ZGUgIlJlZ2lvbi5o
IgotI2luY2x1ZGUgIlRvdWNoQWN0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBU
b3VjaEFjdGlvblJlZ2lvbiB7Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgVG91Y2hBY3Rp
b25SZWdpb24oKTsKLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9u
cy5pc0VtcHR5KCk7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUb3VjaEFjdGlvblJl
Z2lvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9ucyA9PSBvdGhlci5tX3JlZ2lvbnM7
IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5pdGUoY29uc3QgUmVnaW9uJiwgT3B0aW9u
U2V0PFRvdWNoQWN0aW9uPik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uU2V0PFRvdWNoQWN0
aW9uPiBhY3Rpb25zRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHRyYW5zbGF0ZShjb25zdCBJbnRTaXplJik7Ci0KLXByaXZhdGU6Ci0gICAg
ZnJpZW5kIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFRvdWNoQWN0
aW9uUmVnaW9uJik7Ci0KLSAgICBWZWN0b3I8UmVnaW9uPiBtX3JlZ2lvbnM7Ci19OwotCi1UZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBUb3VjaEFjdGlvblJlZ2lvbiYp
OwotCi19Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzkzMykKKysrIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTkt
MDQtMDUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIENvbWJp
bmUgZXZlbnQgYW5kIHRvdWNoIGFjdGlvbiByZWdpb25zIGludG8gYSBzaW5nbGUgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjY0NAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDk2NDM2MTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUuaDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlTm9kZTo6ZXZlbnRSZWdpb24gY29uc3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlTm9kZTo6c2V0RXZlbnRSZWdpb24pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVt
b3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRFdmVu
dFJlZ2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKwogMjAxOS0wNC0wNSAgRGF2aWQgS2lsemVyICA8ZGRr
aWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI0MDY4NSk6IFJlbW92ZSBk
dXBsaWNhdGUgSGVhZGVycyBlbnRyeSBmb3IgX1dLSW5zcGVjdG9yV2luZG93LmggaW4gWGNvZGUg
cHJvamVjdApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgJKHJldmlzaW9u
IDI0MzkzMSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAg
cHVibGljOgogICAgICAgICBib29sIG9wYXF1ZTsKICAgICAgICAgYm9vbCBjb250ZW50c0hpZGRl
bjsKICAgICAgICAgYm9vbCB1c2VySW50ZXJhY3Rpb25FbmFibGVkOwotICAgICAgICBXZWJDb3Jl
OjpSZWdpb24gZXZlbnRSZWdpb247CisgICAgICAgIFdlYkNvcmU6OkV2ZW50UmVnaW9uIGV2ZW50
UmVnaW9uOwogICAgIH07CiAKICAgICBleHBsaWNpdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bigpOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQkocmV2aXNpb24g
MjQzOTMxKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiAj
aW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0V2ZW50UmVnaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xlbmd0aEZ1bmN0aW9ucy5o
PgotI2ltcG9ydCA8V2ViQ29yZS9SZWdpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvVGltaW5nRnVu
Y3Rpb24uaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L1RleHRTdHJlYW0uaD4KQEAgLTUwOCw3ICs1MDgsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpMYXllclByCiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVy
dGllcyAmIEV2ZW50UmVnaW9uQ2hhbmdlZCkgewotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpS
ZWdpb24+IGV2ZW50UmVnaW9uOworICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpFdmVudFJlZ2lv
bj4gZXZlbnRSZWdpb247CiAgICAgICAgIGRlY29kZXIgPj4gZXZlbnRSZWdpb247CiAgICAgICAg
IGlmICghZXZlbnRSZWdpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVOb2RlLmgJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NM
YXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQoKSBjb25zdCB7IHJldHVybiBtX2xheWVySUQ7
IH0KIAotICAgIGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgZXZlbnRSZWdpb24oKSBjb25zdCB7IHJl
dHVybiBtX2V2ZW50UmVnaW9uOyB9Ci0gICAgdm9pZCBzZXRFdmVudFJlZ2lvbihjb25zdCBXZWJD
b3JlOjpSZWdpb24mKTsKKyAgICBjb25zdCBXZWJDb3JlOjpFdmVudFJlZ2lvbiYgZXZlbnRSZWdp
b24oKSBjb25zdCB7IHJldHVybiBtX2V2ZW50UmVnaW9uOyB9CisgICAgdm9pZCBzZXRFdmVudFJl
Z2lvbihjb25zdCBXZWJDb3JlOjpFdmVudFJlZ2lvbiYpOwogCiAgICAgLy8gSWYgZW1wdHkgdGhl
IGxheWVyIGlzIHNjcm9sbGVkIG5vcm1hbGx5IGJ5IGFuIGFuY2VzdG9yIHNjcm9sbGVyLgogICAg
IGNvbnN0IGF1dG8mIHJlbGF0ZWRTY3JvbGxDb250YWluZXJJRHMoKSBjb25zdCB7IHJldHVybiBt
X3JlbGF0ZWRTY3JvbGxDb250YWluZXJJRHM7IH0KQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8VUlWaWV3PiBtX3VpVmlldzsKICNlbmRpZgogCi0gICAgV2ViQ29yZTo6
UmVnaW9uIG1fZXZlbnRSZWdpb247CisgICAgV2ViQ29yZTo6RXZlbnRSZWdpb24gbV9ldmVudFJl
Z2lvbjsKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVy
SUQ+IG1fcmVsYXRlZFNjcm9sbENvbnRhaW5lcklEczsKICAgICBXZWJDb3JlOjpTY3JvbGxQb3Np
dGlvbmluZ0JlaGF2aW9yIG1fcmVsYXRlZFNjcm9sbENvbnRhaW5lclBvc2l0aW9uaW5nQmVoYXZp
b3IgeyBXZWJDb3JlOjpTY3JvbGxQb3NpdGlvbmluZ0JlaGF2aW9yOjpOb25lIH07CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9k
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbQkocmV2aXNpb24gMjQzOTMxKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0JKHdv
cmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVOb2RlOjpk
ZXRhY2hGcm9tUGFyZQogICAgIFtsYXllcigpIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKIH0KIAot
dm9pZCBSZW1vdGVMYXllclRyZWVOb2RlOjpzZXRFdmVudFJlZ2lvbihjb25zdCBXZWJDb3JlOjpS
ZWdpb24mIGV2ZW50UmVnaW9uKQordm9pZCBSZW1vdGVMYXllclRyZWVOb2RlOjpzZXRFdmVudFJl
Z2lvbihjb25zdCBXZWJDb3JlOjpFdmVudFJlZ2lvbiYgZXZlbnRSZWdpb24pCiB7CiAgICAgbV9l
dmVudFJlZ2lvbiA9IGV2ZW50UmVnaW9uOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5
ZXJSZW1vdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJS
ZW1vdGVMYXllclRyZWVDb250ZXh0LmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVQcm9wZXJ0
eUFwcGxpZXIuaCIKICNpbXBvcnQgPFdlYkNvcmUvQW5pbWF0aW9uVXRpbGl0aWVzLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0V2ZW50UmVnaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ0EuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTGVuZ3RoRnVuY3Rpb25zLmg+CkBAIC04NzEsNyArODcyLDcgQEAgdm9pZCBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OnVwZGF0ZUN1c3RvbQogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVy
dGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkN1c3RvbUFwcGVhcmFuY2VD
aGFuZ2VkKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldEV2ZW50UmVnaW9u
KGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgZXZlbnRSZWdpb24pCit2b2lkIFBsYXRmb3JtQ0FMYXll
clJlbW90ZTo6c2V0RXZlbnRSZWdpb24oY29uc3QgV2ViQ29yZTo6RXZlbnRSZWdpb24mIGV2ZW50
UmVnaW9uKQogewogICAgIGlmIChtX3Byb3BlcnRpZXMuZXZlbnRSZWdpb24gPT0gZXZlbnRSZWdp
b24pCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlLmgJKHJldmlzaW9uIDI0MzkzMSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTc0LDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlIGN1c3RvbUFwcGVhcmFuY2UoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUN1c3RvbUFwcGVhcmFuY2UoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNldEV2ZW50
UmVnaW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0RXZl
bnRSZWdpb24oY29uc3QgV2ViQ29yZTo6RXZlbnRSZWdpb24mKSBvdmVycmlkZTsKIAogICAgIFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzkzMSkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA0LTA1ICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDb21iaW5lIGV2ZW50
IGFuZCB0b3VjaCBhY3Rpb24gcmVnaW9ucyBpbnRvIGEgc2luZ2xlIGNsYXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY2NDQKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzQ5NjQzNjE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLXJlZ2lvbi1iYXNp
Yy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9u
LXJlZ2lvbi1sYXllcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBvaW50ZXJldmVudHMvaW9z
L3RvdWNoLWFjdGlvbi1yZWdpb24tcGFuLXgteS1leHBlY3RlZC50eHQ6CisKIDIwMTktMDQtMDUg
IERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBV
bnJldmlld2VkIGdhcmRlbmluZywgdXBkYXRlIHVuZXhwZWN0ZWQgcGFzc2VzCkluZGV4OiBMYXlv
dXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tcmVnaW9uLWJhc2ljLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3Vj
aC1hY3Rpb24tcmVnaW9uLWJhc2ljLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjQzOTMxKQorKysg
TGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLXJlZ2lvbi1iYXNpYy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTksMTQgKzksMTQgQEAKICAgICAgIChiYWNr
Z3JvdW5kQ29sb3IgI0ZGRkZGRikKICAgICAgIChldmVudCByZWdpb24KICAgICAgICAgKHJlY3Qg
KDAsMCkgd2lkdGg9ODAwIGhlaWdodD02MjEpCi0gICAgICApCi0gICAgICAodG91Y2gtYWN0aW9u
IHJlZ2lvbgotICAgICAgICAobm9uZSAgICAgICAgCi0gICAgICAgICAgKHJlY3QgKDgsOCkgd2lk
dGg9MTAwIGhlaWdodD0xMDApCi0gICAgICAgICAgKHJlY3QgKDgsMjA4KSB3aWR0aD0yMDAgaGVp
Z2h0PTI1KQotICAgICAgICAgIChyZWN0ICg4LDIzMykgd2lkdGg9MTAwIGhlaWdodD03NSkKLSAg
ICAgICAgICAocmVjdCAoOCw0MDgpIHdpZHRoPTEwMCBoZWlnaHQ9NTApCi0gICAgICAgICAgKHJl
Y3QgKDgsNDU4KSB3aWR0aD01MCBoZWlnaHQ9NTApCisgICAgICAgICh0b3VjaC1hY3Rpb24KKyAg
ICAgICAgICAobm9uZSAgICAgICAgICAKKyAgICAgICAgICAgIChyZWN0ICg4LDgpIHdpZHRoPTEw
MCBoZWlnaHQ9MTAwKQorICAgICAgICAgICAgKHJlY3QgKDgsMjA4KSB3aWR0aD0yMDAgaGVpZ2h0
PTI1KQorICAgICAgICAgICAgKHJlY3QgKDgsMjMzKSB3aWR0aD0xMDAgaGVpZ2h0PTc1KQorICAg
ICAgICAgICAgKHJlY3QgKDgsNDA4KSB3aWR0aD0xMDAgaGVpZ2h0PTUwKQorICAgICAgICAgICAg
KHJlY3QgKDgsNDU4KSB3aWR0aD01MCBoZWlnaHQ9NTApCisgICAgICAgICAgKQogICAgICAgICAp
CiAgICAgICApCiAgICAgKQpJbmRleDogTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91
Y2gtYWN0aW9uLXJlZ2lvbi1sYXllcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1yZWdpb24tbGF5ZXJzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMjQzOTMxKQorKysgTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9p
b3MvdG91Y2gtYWN0aW9uLXJlZ2lvbi1sYXllcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xNywxMCArMTcsMTAgQEAKICAgICAgICAgICAoY29udGVudHNPcGFxdWUgMSkKICAgICAg
ICAgICAoZXZlbnQgcmVnaW9uCiAgICAgICAgICAgICAocmVjdCAoMCwwKSB3aWR0aD0xMDAgaGVp
Z2h0PTEwMCkKLSAgICAgICAgICApCi0gICAgICAgICAgKHRvdWNoLWFjdGlvbiByZWdpb24KLSAg
ICAgICAgICAgIChub25lICAgICAgICAgICAgCi0gICAgICAgICAgICAgIChyZWN0ICgwLDApIHdp
ZHRoPTEwMCBoZWlnaHQ9MTAwKQorICAgICAgICAgICAgKHRvdWNoLWFjdGlvbgorICAgICAgICAg
ICAgICAobm9uZSAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgKHJlY3QgKDAsMCkgd2lk
dGg9MTAwIGhlaWdodD0xMDApCisgICAgICAgICAgICAgICkKICAgICAgICAgICAgICkKICAgICAg
ICAgICApCiAgICAgICAgICkKQEAgLTMxLDExICszMSwxMSBAQAogICAgICAgICAgIChldmVudCBy
ZWdpb24KICAgICAgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTIwMCBoZWlnaHQ9MjUpCiAgICAg
ICAgICAgICAocmVjdCAoMCwyNSkgd2lkdGg9MTAwIGhlaWdodD03NSkKLSAgICAgICAgICApCi0g
ICAgICAgICAgKHRvdWNoLWFjdGlvbiByZWdpb24KLSAgICAgICAgICAgIChub25lICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTIwMCBoZWlnaHQ9MjUpCi0gICAg
ICAgICAgICAgIChyZWN0ICgwLDI1KSB3aWR0aD0xMDAgaGVpZ2h0PTc1KQorICAgICAgICAgICAg
KHRvdWNoLWFjdGlvbgorICAgICAgICAgICAgICAobm9uZSAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgKHJlY3QgKDAsMCkgd2lkdGg9MjAwIGhlaWdodD0yNSkKKyAgICAgICAgICAgICAg
ICAocmVjdCAoMCwyNSkgd2lkdGg9MTAwIGhlaWdodD03NSkKKyAgICAgICAgICAgICAgKQogICAg
ICAgICAgICAgKQogICAgICAgICAgICkKICAgICAgICAgKQpAQCAtNDUsMTAgKzQ1LDEwIEBACiAg
ICAgICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCiAgICAgICAgICAgKGV2ZW50IHJlZ2lvbgogICAg
ICAgICAgICAgKHJlY3QgKDAsMCkgd2lkdGg9MTAwIGhlaWdodD0xMDApCi0gICAgICAgICAgKQot
ICAgICAgICAgICh0b3VjaC1hY3Rpb24gcmVnaW9uCi0gICAgICAgICAgICAobm9uZSAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAocmVjdCAoMCwwKSB3aWR0aD0xMDAgaGVpZ2h0PTEwMCkKKyAg
ICAgICAgICAgICh0b3VjaC1hY3Rpb24KKyAgICAgICAgICAgICAgKG5vbmUgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTEwMCBoZWlnaHQ9MTAwKQorICAg
ICAgICAgICAgICApCiAgICAgICAgICAgICApCiAgICAgICAgICAgKQogICAgICAgICApCkBAIC02
OSwxMiArNjksMTIgQEAKICAgICAgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTEwMCBoZWlnaHQ9
NTApCiAgICAgICAgICAgICAocmVjdCAoMCw1MCkgd2lkdGg9MTUwIGhlaWdodD01MCkKICAgICAg
ICAgICAgIChyZWN0ICg1MCwxMDApIHdpZHRoPTEwMCBoZWlnaHQ9NTApCi0gICAgICAgICAgKQot
ICAgICAgICAgICh0b3VjaC1hY3Rpb24gcmVnaW9uCi0gICAgICAgICAgICAobm9uZSAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAocmVjdCAoMCwwKSB3aWR0aD0xMDAgaGVpZ2h0PTUwKQotICAg
ICAgICAgICAgICAocmVjdCAoMCw1MCkgd2lkdGg9MTUwIGhlaWdodD01MCkKLSAgICAgICAgICAg
ICAgKHJlY3QgKDUwLDEwMCkgd2lkdGg9MTAwIGhlaWdodD01MCkKKyAgICAgICAgICAgICh0b3Vj
aC1hY3Rpb24KKyAgICAgICAgICAgICAgKG5vbmUgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIChyZWN0ICgwLDApIHdpZHRoPTEwMCBoZWlnaHQ9NTApCisgICAgICAgICAgICAgICAgKHJl
Y3QgKDAsNTApIHdpZHRoPTE1MCBoZWlnaHQ9NTApCisgICAgICAgICAgICAgICAgKHJlY3QgKDUw
LDEwMCkgd2lkdGg9MTAwIGhlaWdodD01MCkKKyAgICAgICAgICAgICAgKQogICAgICAgICAgICAg
KQogICAgICAgICAgICkKICAgICAgICAgICAoY2hpbGRyZW4gMgpAQCAtODgsMTAgKzg4LDEwIEBA
CiAgICAgICAgICAgICAgIChjb250ZW50c09wYXF1ZSAxKQogICAgICAgICAgICAgICAoZXZlbnQg
cmVnaW9uCiAgICAgICAgICAgICAgICAgKHJlY3QgKDAsMCkgd2lkdGg9MTAwIGhlaWdodD0xMDAp
Ci0gICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgKHRvdWNoLWFjdGlvbiByZWdpb24KLSAg
ICAgICAgICAgICAgICAobm9uZSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgIChy
ZWN0ICgwLDApIHdpZHRoPTEwMCBoZWlnaHQ9MTAwKQorICAgICAgICAgICAgICAgICh0b3VjaC1h
Y3Rpb24KKyAgICAgICAgICAgICAgICAgIChub25lICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTEwMCBoZWlnaHQ9MTAwKQorICAgICAgICAg
ICAgICAgICAgKQogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgKQogICAgICAgICAg
ICAgKQpJbmRleDogTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLXJl
Z2lvbi1wYW4teC15LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wb2lu
dGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tcmVnaW9uLXBhbi14LXktZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAyNDM5MzEpCisrKyBMYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1h
Y3Rpb24tcmVnaW9uLXBhbi14LXktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05LDIz
ICs5LDIzIEBACiAgICAgICAoYmFja2dyb3VuZENvbG9yICNGRkZGRkYpCiAgICAgICAoZXZlbnQg
cmVnaW9uCiAgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTgwMCBoZWlnaHQ9MTAyMSkKLSAgICAg
ICkKLSAgICAgICh0b3VjaC1hY3Rpb24gcmVnaW9uCi0gICAgICAgIChub25lICAgICAgICAKLSAg
ICAgICAgICAocmVjdCAoOCw4MDgpIHdpZHRoPTEwMCBoZWlnaHQ9MTAwKQotICAgICAgICApCi0g
ICAgICAgIChwYW4teCAgICAgICAgCi0gICAgICAgICAgKHJlY3QgKDgsOCkgd2lkdGg9MTAwIGhl
aWdodD0xMDApCi0gICAgICAgICAgKHJlY3QgKDgsMjA4KSB3aWR0aD0yMDAgaGVpZ2h0PTI1KQot
ICAgICAgICAgIChyZWN0ICg4LDIzMykgd2lkdGg9MTAwIGhlaWdodD03NSkKLSAgICAgICAgICAo
cmVjdCAoMTA4LDQwOCkgd2lkdGg9MTAwIGhlaWdodD0yNSkKLSAgICAgICAgICAocmVjdCAoOCw2
MDgpIHdpZHRoPTIwMCBoZWlnaHQ9MjUpCi0gICAgICAgICAgKHJlY3QgKDgsNjMzKSB3aWR0aD0x
MDAgaGVpZ2h0PTc1KQotICAgICAgICAgIChyZWN0ICgxMDgsODA4KSB3aWR0aD0xMDAgaGVpZ2h0
PTI1KQotICAgICAgICApCi0gICAgICAgIChwYW4teSAgICAgICAgCi0gICAgICAgICAgKHJlY3Qg
KDgsNDA4KSB3aWR0aD0yMDAgaGVpZ2h0PTI1KQotICAgICAgICAgIChyZWN0ICg4LDQzMykgd2lk
dGg9MTAwIGhlaWdodD03NSkKKyAgICAgICAgKHRvdWNoLWFjdGlvbgorICAgICAgICAgIChub25l
ICAgICAgICAgIAorICAgICAgICAgICAgKHJlY3QgKDgsODA4KSB3aWR0aD0xMDAgaGVpZ2h0PTEw
MCkKKyAgICAgICAgICApCisgICAgICAgICAgKHBhbi14ICAgICAgICAgIAorICAgICAgICAgICAg
KHJlY3QgKDgsOCkgd2lkdGg9MTAwIGhlaWdodD0xMDApCisgICAgICAgICAgICAocmVjdCAoOCwy
MDgpIHdpZHRoPTIwMCBoZWlnaHQ9MjUpCisgICAgICAgICAgICAocmVjdCAoOCwyMzMpIHdpZHRo
PTEwMCBoZWlnaHQ9NzUpCisgICAgICAgICAgICAocmVjdCAoMTA4LDQwOCkgd2lkdGg9MTAwIGhl
aWdodD0yNSkKKyAgICAgICAgICAgIChyZWN0ICg4LDYwOCkgd2lkdGg9MjAwIGhlaWdodD0yNSkK
KyAgICAgICAgICAgIChyZWN0ICg4LDYzMykgd2lkdGg9MTAwIGhlaWdodD03NSkKKyAgICAgICAg
ICAgIChyZWN0ICgxMDgsODA4KSB3aWR0aD0xMDAgaGVpZ2h0PTI1KQorICAgICAgICAgICkKKyAg
ICAgICAgICAocGFuLXkgICAgICAgICAgCisgICAgICAgICAgICAocmVjdCAoOCw0MDgpIHdpZHRo
PTIwMCBoZWlnaHQ9MjUpCisgICAgICAgICAgICAocmVjdCAoOCw0MzMpIHdpZHRoPTEwMCBoZWln
aHQ9NzUpCisgICAgICAgICAgKQogICAgICAgICApCiAgICAgICApCiAgICAgKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>