<?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>82624</bug_id>
          
          <creation_ts>2012-03-29 09:41:46 -0700</creation_ts>
          <short_desc>Rename CSSPropertyLonghand class to StylePropertyShorthand.</short_desc>
          <delta_ts>2012-04-02 07:20:11 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexis Menard (darktears)">menard</reporter>
          <assigned_to name="Alexis Menard (darktears)">menard</assigned_to>
          <cc>benjamin</cc>
    
    <cc>eric</cc>
    
    <cc>inferno</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>591255</commentid>
    <comment_count>0</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-29 09:41:46 -0700</bug_when>
    <thetext>Remove CSSPropertyLonghand object to simplify CSS shorthand handling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591258</commentid>
    <comment_count>1</comment_count>
      <attachid>134602</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-29 09:46:11 -0700</bug_when>
    <thetext>Created attachment 134602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591261</commentid>
    <comment_count>2</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-29 09:49:45 -0700</bug_when>
    <thetext>Antti I implemented what we talked yesterday. What do you think?

Do you think it is better or should we go back to the old approach and just rename the CSSPropertyLonghand class to ShorthandProperties?

I find this approach more error prone.

Let&apos;s see what EWS says also :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591265</commentid>
    <comment_count>3</comment_count>
      <attachid>134604</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-29 09:56:58 -0700</bug_when>
    <thetext>Created attachment 134604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591275</commentid>
    <comment_count>4</comment_count>
      <attachid>134609</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-29 10:07:16 -0700</bug_when>
    <thetext>Created attachment 134609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591431</commentid>
    <comment_count>5</comment_count>
      <attachid>134641</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-29 12:24:05 -0700</bug_when>
    <thetext>Created attachment 134641
Patch

This should fix the regressions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591481</commentid>
    <comment_count>6</comment_count>
      <attachid>134641</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-29 13:15:56 -0700</bug_when>
    <thetext>Comment on attachment 134641
Patch

I&apos;m confused why a CSSPropertyID* which points to an array of unspecified length, is better/safer than a class.  This seems backwards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591483</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-29 13:16:26 -0700</bug_when>
    <thetext>I think this change, as written would be asking for crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591529</commentid>
    <comment_count>8</comment_count>
      <attachid>134660</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-29 13:56:09 -0700</bug_when>
    <thetext>Created attachment 134660
Patch

Alternative patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591537</commentid>
    <comment_count>9</comment_count>
      <attachid>134660</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-29 14:07:23 -0700</bug_when>
    <thetext>Comment on attachment 134660
Patch

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

&gt; Source/WebCore/css/CSSPropertyLonghand.h:61
&gt; +const ShorthandProperties&amp; backgroundLonghand();

I think the class name should be singular here since this class represents a list of longhand properties for a signle shorthand property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591538</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-29 14:08:18 -0700</bug_when>
    <thetext>Also we should probably keep CSS prefix since shorthand is a quite generic name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591654</commentid>
    <comment_count>11</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-29 15:40:07 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 134660 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134660&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSPropertyLonghand.h:61
&gt; &gt; +const ShorthandProperties&amp; backgroundLonghand();
&gt; 
&gt; I think the class name should be singular here since this class represents a list of longhand properties for a signle shorthand property.

so you would do const ShorthandProperty&amp; backgroundShorthand()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591656</commentid>
    <comment_count>12</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-29 15:40:48 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Also we should probably keep CSS prefix since shorthand is a quite generic name.

Well it seems we start using CSS prefix only for CSSOM classes. This one is implementation detail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591667</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-29 15:53:11 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #10)
&gt; &gt; Also we should probably keep CSS prefix since shorthand is a quite generic name.
&gt; 
&gt; Well it seems we start using CSS prefix only for CSSOM classes. This one is implementation detail.

Okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593386</commentid>
    <comment_count>14</comment_count>
      <attachid>135072</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-02 05:21:10 -0700</bug_when>
    <thetext>Created attachment 135072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593409</commentid>
    <comment_count>15</comment_count>
      <attachid>135082</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-02 06:14:34 -0700</bug_when>
    <thetext>Created attachment 135082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593411</commentid>
    <comment_count>16</comment_count>
      <attachid>135082</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-04-02 06:16:27 -0700</bug_when>
    <thetext>Comment on attachment 135082
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593438</commentid>
    <comment_count>17</comment_count>
      <attachid>135082</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-02 07:20:05 -0700</bug_when>
    <thetext>Comment on attachment 135082
Patch

Clearing flags on attachment: 135082

Committed r112880: &lt;http://trac.webkit.org/changeset/112880&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593439</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-02 07:20:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134602</attachid>
            <date>2012-03-29 09:46:11 -0700</date>
            <delta_ts>2012-03-29 09:56:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82624-20120329134552.patch</filename>
            <type>text/plain</type>
            <size>85186</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVlMmRjODVkOTY0ZWUw
ODcxNTQ1MTlmOTA4YTc4MjQ5MDkyZTFhYS4uYjM3ZTY3OWFjODY3YzA3MDkzZWU3ZjE0MTdiOTg1
ZTgxZTQ4NmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxMi0wMy0yOSAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZW1v
dmUgQ1NTUHJvcGVydHlMb25naGFuZCBjbGFzcyB0byBzaW1wbGlmeSBDU1Mgc2hvcnRoYW5kIHBy
b3BlcnR5IGhhbmRsaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODI2MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgQ1NTUHJvcGVydHlMb25naGFuZCBjbGFzcyB0byBzaW1wbGlmeSBDU1Mg
c2hvcnRoYW5kIHByb3BlcnR5IGhhbmRsaW5nLgorICAgICAgICBXZSBqdXN0IHVzZSBjbGFzc2lj
IGFycmF5cyB0ZXJtaW5hdGVkIGJ5IENTU1Byb3BlcnR5SW52YWxpZC4gSSBhbHNvIHN3aXRjaCBh
bGwKKyAgICAgICAgZGVjbGFyYXRpb25zIHRvIHVzZSBDU1NQcm9wZXJ0eUlEIHJhdGhlciB0aGFu
IGFuIGludCB3aGljaCBpcyBtb3JlIGV4cGxpY2l0IG9uCisgICAgICAgIHRoZSBjb250ZW50Lgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyA6IFRoaXMgaXMgYSByZWZhY3RvcmluZywgbm8gYmVoYXZp
b3VyIGNoYW5nZSBpbnRlbmRlZC4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y29weVByb3Bl
cnRpZXNJblNldCk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24pOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VB
bmltYXRpb25TaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRy
YW5zaXRpb25TaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNo
b3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyk6Cisg
ICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChD
U1NQYXJzZXIpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRl
ckRpcmVjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHk6OnJlc29sdmVEaXJl
Y3Rpb25Bd2FyZVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kTG9uZ2hhbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6YmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6YmFj
a2dyb3VuZFJlcGVhdExvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlckxvbmdoYW5k
RXhwYW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyTG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Ym9yZGVyTG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Ym9yZGVyQm90dG9tTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpib3JkZXJDb2xvckxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRl
ckltYWdlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyTGVmdExvbmdoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclJhZGl1c0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OmJvcmRlclJpZ2h0TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyU3BhY2lu
Z0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclN0eWxlTG9uZ2hhbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6Ym9yZGVyVG9wTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9y
ZGVyV2lkdGhMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpsaXN0U3R5bGVMb25naGFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpmb250TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6bWFy
Z2luTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6b3V0bGluZUxvbmdoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Om92ZXJmbG93TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6cGFkZGlu
Z0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6d2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6
d2Via2l0Qm9yZGVyRW5kTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0Qm9yZGVy
U3RhcnRMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRDb2x1bW5zTG9uZ2hhbmQp
OgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0Q29sdW1uUnVsZUxvbmdoYW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OndlYmtpdEZsZXhGbG93TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Vi
a2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXJx
dWVlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0TWFza0xvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OndlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OndlYmtpdE1hc2tSZXBlYXRMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJr
aXRUZXh0RW1waGFzaXNMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRUZXh0U3Ry
b2tlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0VHJhbnNpdGlvbkxvbmdoYW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdFRyYW5zZm9ybU9yaWdpbkxvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OndlYmtpdFdyYXBMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjps
b25naGFuZHNGb3JQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3BlcnR5VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Ym9yZGVyU3BhY2luZ1ZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldDRWYWx1ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldFNob3J0aGFuZFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldENvbW1vblZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZVNob3J0aGFuZFByb3Bl
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnByb3BlcnR5SXNJbXBv
cnRhbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6YXNUZXh0KToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlQmxv
Y2tQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnJlbW92
ZVByb3BlcnRpZXNJblNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpj
b3B5UHJvcGVydGllc0luU2V0KToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTdHlsZVByb3BlcnR5U2V0KToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6dHJpU3RhdGVPZlN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OnJlbW92ZVByb3BlcnRpZXNJblN0eWxlKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNob3J0aGFuZFByb3BlcnR5V3Jh
cHBlcjo6U2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFNo
b3J0aGFuZFByb3BlcnRpZXMpOgorCiAyMDEyLTAzLTI4ICBUb21teSBXaWRlbmZseWNodCAgPHRv
bW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWVkaWFTdHJlYW0gQVBJIChK
U0VQKTogSW50cm9kdWNpbmcgV2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYjk4
OWMxZDVhNmVhYzcwODg5NDM0ZjUxYzkwNzY2M2ZhNzM3MjJlNC4uNjAxZjRjNDBlMmQ5NGM4ZmI0
M2UxNWE5MmUyM2Y1OWJlNTQwMTkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTc0LDcgKzc0LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogLy8gTGlzdCBvZiBhbGwgcHJvcGVydGllcyB3ZSBrbm93IGhvdyB0byBj
b21wdXRlLCBvbWl0dGluZyBzaG9ydGhhbmRzLgotc3RhdGljIGNvbnN0IGludCBjb21wdXRlZFBy
b3BlcnRpZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGNvbXB1dGVkUHJvcGVy
dGllc1tdID0gewogICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsCiAgICAgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwKICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwK
QEAgLTIzMzcsMTAgKzIzMzcsMTAgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXIKICAgICAgICAg
ICAgIHJldHVybiB2YWx1ZUZvckZpbHRlcihzdHlsZS5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6IHsKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9w
ZXJ0aWVzWzVdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kSW1hZ2UsCisgICAgICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNb
XSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIENTU1Byb3BlcnR5QmFja2dyb3VuZElt
YWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5
QmFja2dyb3VuZFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQ
b3NpdGlvbiB9OwotICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hv
cnRoYW5kUHJvcGVydGllcyhDU1NQcm9wZXJ0eUxvbmdoYW5kKHByb3BlcnRpZXMsIFdURl9BUlJB
WV9MRU5HVEgocHJvcGVydGllcykpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiwgQ1NTUHJvcGVydHlJbnZhbGlk
IH07CisgICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQ
cm9wZXJ0aWVzKHByb3BlcnRpZXMpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXI6IHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBEb05vdFVwZGF0ZUxheW91dCk7CkBA
IC0yNTc0LDI0ICsyNTc0LDI0IEBAIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uOjptYWtlTXV0YWJsZSgpCiAgICAgcmV0dXJuIGNvcHkoKTsK
IH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IENTU1By
b3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25zdAorUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9y
dGhhbmRQcm9wZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcykgY29uc3QKIHsK
ICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbG9uZ2hhbmQubGVuZ3Ro
KCk7ICsraSkgewotICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlD
U1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbaV0sIERvTm90VXBkYXRlTGF5b3V0KTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgbG9uZ2hhbmRzW2ldICE9IENTU1Byb3BlcnR5SW52YWxpZDsg
KytpKSB7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1Zh
bHVlKGxvbmdoYW5kc1tpXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwogICAgICAgICBsaXN0LT5hcHBl
bmQodmFsdWUpOwogICAgIH0KICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NS
ZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldENTU1By
b3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
bG9uZ2hhbmQpIGNvbnN0CitQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0
IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcykgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTVmFsdWVM
aXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIC8v
IEFzc3VtZSB0aGUgcHJvcGVydGllcyBhcmUgaW4gdGhlIHVzdWFsIG9yZGVyIHRvcCwgcmlnaHQs
IGJvdHRvbSwgbGVmdC4KLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gZ2V0UHJvcGVy
dHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbMF0sIERvTm90VXBkYXRlTGF5b3V0KTsK
LSAgICBSZWZQdHI8Q1NTVmFsdWU+IHJpZ2h0VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxv
bmdoYW5kLnByb3BlcnRpZXMoKVsxXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0cjxD
U1NWYWx1ZT4gYm90dG9tVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3Bl
cnRpZXMoKVsyXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gbGVm
dFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbM10sIERv
Tm90VXBkYXRlTGF5b3V0KTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gZ2V0UHJv
cGVydHlDU1NWYWx1ZShsb25naGFuZHNbMF0sIERvTm90VXBkYXRlTGF5b3V0KTsKKyAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHJpZ2h0VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1sx
XSwgRG9Ob3RVcGRhdGVMYXlvdXQpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gYm90dG9tVmFsdWUg
PSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1syXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwor
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gbGVmdFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25n
aGFuZHNbM10sIERvTm90VXBkYXRlTGF5b3V0KTsKIAogICAgIC8vIEFsbCA0IHByb3BlcnRpZXMg
bXVzdCBiZSBzcGVjaWZpZWQuCiAgICAgaWYgKCF0b3BWYWx1ZSB8fCAhcmlnaHRWYWx1ZSB8fCAh
Ym90dG9tVmFsdWUgfHwgIWxlZnRWYWx1ZSkKQEAgLTI2MTIsNyArMjYxMiw3IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldENTU1Byb3Bl
cnR5VmFsdWVzRm9yU2lkCiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCi1QYXNzUmVm
UHRyPFN0eWxlUHJvcGVydHlTZXQ+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y29weVBy
b3BlcnRpZXNJblNldChjb25zdCBpbnQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAorUGFz
c1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNv
cHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5n
dGgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPENTU1Byb3BlcnR5PiBsaXN0OwogICAgIGxpc3QucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4IGU4OTM4ZDBlNTU5NTk0ZTViZjI2ZmFk
MGY2MzEyMGE5MDVmOGZhOTguLjc3N2Q4MjYzMWFiMzUzMWZhNjgzMmViZDBhMzllNzk4NmJlNTMz
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmgKQEAgLTI5LDcgKzI5LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NT
UHJpbWl0aXZlVmFsdWU7Ci1jbGFzcyBDU1NQcm9wZXJ0eUxvbmdoYW5kOwogY2xhc3MgQ1NTVmFs
dWVMaXN0OwogY2xhc3MgQ1NTVmFsdWVQb29sOwogY2xhc3MgQ29sb3I7CkBAIC03MSw3ICs3MCw3
IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRTVkdQcm9wZXJ0eUNTU1Zh
bHVlKGludCBwcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0KSBjb25zdDsKICNlbmRpZgogCi0gICAg
UGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IGlu
dCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8U3R5bGVQcm9w
ZXJ0eVNldD4gY29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVu
c2lnbmVkIGxlbmd0aCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uKFBhc3NSZWZQdHI8Tm9kZT4sIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUsIGNvbnN0
IFN0cmluZyYpOwpAQCAtMTEwLDggKzEwOSw4IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gdmFsdWVGb3JGaWx0ZXIoUmVuZGVyU3R5bGUqKSBjb25zdDsKICNlbmRpZgogCi0g
ICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRo
YW5kUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7Ci0gICAgUGFz
c1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhh
bmQoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoY29u
c3QgQ1NTUHJvcGVydHlJRCopIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBn
ZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0IENTU1Byb3BlcnR5SUQq
KSBjb25zdDsKIAogICAgIFJlZlB0cjxOb2RlPiBtX25vZGU7CiAgICAgUHNldWRvSWQgbV9wc2V1
ZG9FbGVtZW50U3BlY2lmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAzMTdlZTA4
ZDlmMzQ4NmJjYjNlY2Q5NzMyNjM0ZDRkN2VmYWQzOWQxLi42YmQ1YTU5OTE3NDIyMjAwYjNmNTg5
YTNmMTZhODVmYWQ3MGE4ZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtNDksNyAr
NDksNiBAQAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJv
cGVydHkuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eUxvbmdoYW5kLmgiCi0jaW5jbHVkZSAiQ1NT
UHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5U291cmNlRGF0YS5oIgogI2lu
Y2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCkBAIC0y
MTc3LDE1ICsyMTc2LDE1IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBz
ZTogewogICAgICAgICBpZiAobnVtID09IDEpIHsKICAgICAgICAgICAgIFNob3J0aGFuZFNjb3Bl
IHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpOwotICAgICAgICAg
ICAgaWYgKCFwYXJzZVZhbHVlKHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKS5wcm9wZXJ0
aWVzKClbMF0sIGltcG9ydGFudCkpCisgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUoQ1NTUHJv
cGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgaW1wb3J0YW50KSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNl
ZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eSh3ZWJr
aXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCkucHJvcGVydGllcygpWzFdLCB2YWx1ZSwgaW1wb3J0
YW50KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0
ZXJDb2xsYXBzZSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChudW0gPT0gMikgewogICAgICAgICAgICAgU2hv
cnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSk7
Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUod2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFu
ZCgpLnByb3BlcnRpZXMoKVswXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZSh3ZWJraXRNYXJn
aW5Db2xsYXBzZUxvbmdoYW5kKCkucHJvcGVydGllcygpWzFdLCBpbXBvcnRhbnQpKQorICAgICAg
ICAgICAgaWYgKCFwYXJzZVZhbHVlKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFw
c2UsIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRl
ckNvbGxhcHNlLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yMzE5LDcgKzIzMTgsOCBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOgogICAgICAgICAvLyBbICdib3JkZXItd2lkdGgnIHx8
ICdib3JkZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKICAgICB7Ci0gICAgICAgIGlm
IChwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJvcmRlckFicmlkZ2VkTG9uZ2hhbmQoKSwgaW1wb3J0
YW50KSkgeworICAgICAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJQcm9wZXJ0
aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIENTU1Byb3BlcnR5SW52YWxpZCB9OworICAgICAgICBp
ZiAocGFyc2VTaG9ydGhhbmQocHJvcElkLCBib3JkZXJQcm9wZXJ0aWVzLCBpbXBvcnRhbnQpKSB7
CiAgICAgICAgICAgICAvLyBUaGUgQ1NTMyBCb3JkZXJzIGFuZCBCYWNrZ3JvdW5kcyBzcGVjaWZp
Y2F0aW9uIHNheXMgdGhhdCBib3JkZXIgYWxzbyByZXNldHMgYm9yZGVyLWltYWdlLiBJdCdzIGFz
CiAgICAgICAgICAgICAvLyB0aG91Z2ggYSB2YWx1ZSBvZiBub25lIHdhcyBzcGVjaWZpZWQgZm9y
IHRoZSBpbWFnZS4KICAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2UsIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRh
bnQpOwpAQCAtMjM1MiwxOSArMjM1MiwxOSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShp
bnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5k
KHByb3BJZCwgb3V0bGluZUxvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckNvbG9yOgogICAgICAgICAvLyA8Y29sb3I+ezEsNH0gfCBpbmhlcml0Ci0gICAg
ICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3JkZXJDb2xvckxvbmdoYW5kKCkucHJv
cGVydGllcygpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJ
ZCwgYm9yZGVyQ29sb3JMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJXaWR0aDoKICAgICAgICAgLy8gPGJvcmRlci13aWR0aD57MSw0fSB8IGluaGVyaXQK
LSAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIGJvcmRlcldpZHRoTG9uZ2hhbmQo
KS5wcm9wZXJ0aWVzKCksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMo
cHJvcElkLCBib3JkZXJXaWR0aExvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlclN0eWxlOgogICAgICAgICAvLyA8Ym9yZGVyLXN0eWxlPnsxLDR9IHwgaW5o
ZXJpdAotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgYm9yZGVyU3R5bGVMb25n
aGFuZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlNFZh
bHVlcyhwcm9wSWQsIGJvcmRlclN0eWxlTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKICAgICBjYXNl
IENTU1Byb3BlcnR5TWFyZ2luOgogICAgICAgICAvLyA8bWFyZ2luLXdpZHRoPnsxLDR9IHwgaW5o
ZXJpdAotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgbWFyZ2luTG9uZ2hhbmQo
KS5wcm9wZXJ0aWVzKCksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMo
cHJvcElkLCBtYXJnaW5Mb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlQYWRkaW5nOgogICAgICAgICAvLyA8cGFkZGluZy13aWR0aD57MSw0fSB8IGluaGVyaXQKLSAg
ICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIHBhZGRpbmdMb25naGFuZCgpLnByb3Bl
cnRpZXMoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQs
IHBhZGRpbmdMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRGbGV4RmxvdzoKICAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0
RmxleEZsb3dMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250
OgpAQCAtMjcyNiw3ICsyNzI2LDYgQEAgdm9pZCBDU1NQYXJzZXI6OmFkZEFuaW1hdGlvblZhbHVl
KFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHIKIAogYm9vbCBD
U1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KQogewotICAg
IGNvbnN0IHVuc2lnbmVkIG51bVByb3BlcnRpZXMgPSB3ZWJraXRBbmltYXRpb25Mb25naGFuZCgp
Lmxlbmd0aCgpOwogICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uKTsKIAogICAgIGJvb2wgcGFyc2VkUHJvcGVydHlbXSA9IHsgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UgfTsKQEAgLTI3NDAsNyArMjcz
OSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblNob3J0aGFuZChib29sIGltcG9y
dGFudCkKICAgICAgICAgICAgIC8vIFdlIGhpdCB0aGUgZW5kLiAgRmlsbCBpbiBhbGwgcmVtYWlu
aW5nIHZhbHVlcyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgogICAgICAgICAgICAgaW5pdGlhbFBh
cnNlZFByb3BlcnR5SW5kZXggPSAwOwogICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsK
LSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKKyAgICAg
ICAgICAgIGZvciAoaSA9IDA7IHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKClbaV0gIT0gQ1NTUHJv
cGVydHlJbnZhbGlkOyArK2kpIHsKICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlZFByb3BlcnR5
W2ldKQogICAgICAgICAgICAgICAgICAgICBhZGRBbmltYXRpb25WYWx1ZSh2YWx1ZXNbaV0sIGNz
c1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsKICAgICAgICAgICAg
ICAgICBwYXJzZWRQcm9wZXJ0eVtpXSA9IGZhbHNlOwpAQCAtMjc1MCwxMCArMjc0OSwxMCBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiAg
ICAgICAgIH0KIAogICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAoaSA9
IGluaXRpYWxQYXJzZWRQcm9wZXJ0eUluZGV4OyAhZm91bmQgJiYgaSA8IG51bVByb3BlcnRpZXM7
ICsraSkgeworICAgICAgICBmb3IgKGkgPSBpbml0aWFsUGFyc2VkUHJvcGVydHlJbmRleDsgIWZv
dW5kICYmIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKClbaV0gIT0gQ1NTUHJvcGVydHlJbnZhbGlk
OyArK2kpIHsKICAgICAgICAgICAgIGlmICghcGFyc2VkUHJvcGVydHlbaV0pIHsKICAgICAgICAg
ICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDsKLSAgICAgICAgICAgICAgICBpZiAocGFyc2VB
bmltYXRpb25Qcm9wZXJ0eSh3ZWJraXRBbmltYXRpb25Mb25naGFuZCgpLnByb3BlcnRpZXMoKVtp
XSwgdmFsKSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZUFuaW1hdGlvblByb3BlcnR5KHdl
YmtpdEFuaW1hdGlvbkxvbmdoYW5kKClbaV0sIHZhbCkpIHsKICAgICAgICAgICAgICAgICAgICAg
cGFyc2VkUHJvcGVydHlbaV0gPSBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGlu
aXRpYWxQYXJzZWRQcm9wZXJ0eUluZGV4ID0gMTsKICAgICAgICAgICAgICAgICAgICAgYWRkQW5p
bWF0aW9uVmFsdWUodmFsdWVzW2ldLCB2YWwucmVsZWFzZSgpKTsKQEAgLTI3NjgsMjIgKzI3Njcs
MjAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKGJvb2wgaW1wb3J0
YW50KQogICAgIH0KIAogICAgIC8vIEZpbGwgaW4gYW55IHJlbWFpbmluZyBwcm9wZXJ0aWVzIHdp
dGggdGhlIGluaXRpYWwgdmFsdWUuCi0gICAgZm9yIChpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7
ICsraSkgeworICAgIGZvciAoaSA9IDA7IHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKClbaV0gIT0g
Q1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKICAgICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtp
XSkKICAgICAgICAgICAgIGFkZEFuaW1hdGlvblZhbHVlKHZhbHVlc1tpXSwgY3NzVmFsdWVQb29s
KCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOwogICAgIH0KIAogICAgIC8vIE5vdyBh
ZGQgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHdlIGZvdW5kLgotICAgIGZvciAoaSA9IDA7IGkgPCBu
dW1Qcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGFkZFByb3BlcnR5KHdlYmtpdEFuaW1hdGlvbkxv
bmdoYW5kKCkucHJvcGVydGllcygpW2ldLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQp
OworICAgIGZvciAoaSA9IDA7IHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKClbaV0gIT0gQ1NTUHJv
cGVydHlJbnZhbGlkOyArK2kpCisgICAgICAgIGFkZFByb3BlcnR5KHdlYmtpdEFuaW1hdGlvbkxv
bmdoYW5kKClbaV0sIHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9ydGFudCk7CiAKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNpdGlvblNob3J0aGFuZChi
b29sIGltcG9ydGFudCkKIHsKLSAgICBjb25zdCB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzID0gd2Vi
a2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkubGVuZ3RoKCk7Ci0KICAgICBTaG9ydGhhbmRTY29wZSBz
Y29wZSh0aGlzLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb24pOwogCiAgICAgYm9vbCBwYXJz
ZWRQcm9wZXJ0eVtdID0geyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSB9OwpAQCAtMjc5NSw3
ICsyNzkyLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNpdGlvblNob3J0aGFuZChib29s
IGltcG9ydGFudCkKICAgICAgICAgaWYgKHZhbC0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6T3Bl
cmF0b3IgJiYgdmFsLT5pVmFsdWUgPT0gJywnKSB7CiAgICAgICAgICAgICAvLyBXZSBoaXQgdGhl
IGVuZC4gIEZpbGwgaW4gYWxsIHJlbWFpbmluZyB2YWx1ZXMgd2l0aCB0aGUgaW5pdGlhbCB2YWx1
ZS4KICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7Ci0gICAgICAgICAgICBmb3IgKGkg
PSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyB3
ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKVtpXSAhPSBDU1NQcm9wZXJ0eUludmFsaWQ7ICsraSkg
ewogICAgICAgICAgICAgICAgIGlmICghcGFyc2VkUHJvcGVydHlbaV0pCiAgICAgICAgICAgICAg
ICAgICAgIGFkZEFuaW1hdGlvblZhbHVlKHZhbHVlc1tpXSwgY3NzVmFsdWVQb29sKCktPmNyZWF0
ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOwogICAgICAgICAgICAgICAgIHBhcnNlZFByb3BlcnR5
W2ldID0gZmFsc2U7CkBAIC0yODA1LDEwICsyODAyLDEwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZVRyYW5zaXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIH0KIAogICAgICAg
ICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAoaSA9IDA7ICFmb3VuZCAmJiBpIDwg
bnVtUHJvcGVydGllczsgKytpKSB7CisgICAgICAgIGZvciAoaSA9IDA7ICFmb3VuZCAmJiB3ZWJr
aXRUcmFuc2l0aW9uTG9uZ2hhbmQoKVtpXSAhPSBDU1NQcm9wZXJ0eUludmFsaWQ7ICsraSkgewog
ICAgICAgICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtpXSkgewogICAgICAgICAgICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gdmFsOwotICAgICAgICAgICAgICAgIGlmIChwYXJzZUFuaW1hdGlvblBy
b3BlcnR5KHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpLnByb3BlcnRpZXMoKVtpXSwgdmFsKSkg
eworICAgICAgICAgICAgICAgIGlmIChwYXJzZUFuaW1hdGlvblByb3BlcnR5KHdlYmtpdFRyYW5z
aXRpb25Mb25naGFuZCgpW2ldLCB2YWwpKSB7CiAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFBy
b3BlcnR5W2ldID0gZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBhZGRBbmltYXRp
b25WYWx1ZSh2YWx1ZXNbaV0sIHZhbC5yZWxlYXNlKCkpOwogICAgICAgICAgICAgICAgIH0KQEAg
LTI4MjIsMTkgKzI4MTksMTkgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNpdGlvblNob3J0
aGFuZChib29sIGltcG9ydGFudCkKICAgICB9CiAKICAgICAvLyBGaWxsIGluIGFueSByZW1haW5p
bmcgcHJvcGVydGllcyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgotICAgIGZvciAoaSA9IDA7IGkg
PCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKKyAgICBmb3IgKGkgPSAwOyB3ZWJraXRUcmFuc2l0aW9u
TG9uZ2hhbmQoKVtpXSAhPSBDU1NQcm9wZXJ0eUludmFsaWQ7ICsraSkgewogICAgICAgICBpZiAo
IXBhcnNlZFByb3BlcnR5W2ldKQogICAgICAgICAgICAgYWRkQW5pbWF0aW9uVmFsdWUodmFsdWVz
W2ldLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7CiAgICAg
fQogCiAgICAgLy8gTm93IGFkZCBhbGwgb2YgdGhlIHByb3BlcnRpZXMgd2UgZm91bmQuCi0gICAg
Zm9yIChpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykKLSAgICAgICAgYWRkUHJvcGVydHko
d2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkucHJvcGVydGllcygpW2ldLCB2YWx1ZXNbaV0ucmVs
ZWFzZSgpLCBpbXBvcnRhbnQpOworICAgIGZvciAoaSA9IDA7IHdlYmtpdFRyYW5zaXRpb25Mb25n
aGFuZCgpW2ldICE9IENTU1Byb3BlcnR5SW52YWxpZDsgaSsrKQorICAgICAgICBhZGRQcm9wZXJ0
eSh3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKVtpXSwgdmFsdWVzW2ldLnJlbGVhc2UoKSwgaW1w
b3J0YW50KTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VT
aG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQs
IGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlU2hvcnRoYW5kKGludCBwcm9w
SWQsIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcywgYm9vbCBpbXBvcnRhbnQpCiB7CiAg
ICAgLy8gV2UgdHJ5IHRvIG1hdGNoIGFzIG1hbnkgcHJvcGVydGllcyBhcyBwb3NzaWJsZQogICAg
IC8vIFdlIHNldCB1cCBhbiBhcnJheSBvZiBib29sZWFucyB0byBtYXJrIHdoaWNoIHByb3BlcnR5
IGhhcyBiZWVuIGZvdW5kLApAQCAtMjg0MiwxNiArMjgzOSwxMyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9u
Z2hhbmQsCiAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgcHJvcElkKTsKIAogICAgIGJv
b2wgZm91bmQgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBwcm9wZXJ0aWVzUGFyc2VkID0gMDsKICAg
ICBib29sIHByb3BlcnR5Rm91bmRbNl09IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSB9OyAvLyA2IGlzIGVub3VnaCBzaXplLgogCiAgICAgd2hpbGUgKG1fdmFsdWVM
aXN0LT5jdXJyZW50KCkpIHsKICAgICAgICAgZm91bmQgPSBmYWxzZTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBwcm9wSW5kZXggPSAwOyAhZm91bmQgJiYgcHJvcEluZGV4IDwgbG9uZ2hhbmQubGVu
Z3RoKCk7ICsrcHJvcEluZGV4KSB7Ci0gICAgICAgICAgICBpZiAoIXByb3BlcnR5Rm91bmRbcHJv
cEluZGV4XSAmJiBwYXJzZVZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVtwcm9wSW5kZXhdLCBp
bXBvcnRhbnQpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgcHJvcEluZGV4ID0gMDsgIWZvdW5k
ICYmIGxvbmdoYW5kc1twcm9wSW5kZXhdICE9IENTU1Byb3BlcnR5SW52YWxpZDsgKytwcm9wSW5k
ZXgpIHsKKyAgICAgICAgICAgIGlmICghcHJvcGVydHlGb3VuZFtwcm9wSW5kZXhdICYmIHBhcnNl
VmFsdWUobG9uZ2hhbmRzW3Byb3BJbmRleF0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAg
ICAgIHByb3BlcnR5Rm91bmRbcHJvcEluZGV4XSA9IGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICAgICAgcHJvcGVydGllc1BhcnNlZCsrOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAK
ICAgICAgICAgLy8gaWYgd2UgZGlkbid0IGZpbmQgYXQgbGVhc3Qgb25lIG1hdGNoLCB0aGlzIGlz
IGFuCkBAIC0yODYwLDI4ICsyODU0LDI0IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNob3J0aGFu
ZChpbnQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZCwKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAocHJvcGVydGllc1BhcnNlZCA9
PSBsb25naGFuZC5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICAvLyBGaWxs
IGluIGFueSByZW1haW5pbmcgcHJvcGVydGllcyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgogICAg
IEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKLSAg
ICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kKiBjb25zdCogY29uc3QgbG9uZ2hhbmRzRm9ySW5p
dGlhbGl6YXRpb24gPSBsb25naGFuZC5sb25naGFuZHNGb3JJbml0aWFsaXphdGlvbigpOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsb25naGFuZC5sZW5ndGgoKTsgKytpKSB7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgbG9uZ2hhbmRzW2ldICE9IENTU1Byb3BlcnR5SW52YWxpZDsg
KytpKSB7CiAgICAgICAgIGlmIChwcm9wZXJ0eUZvdW5kW2ldKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgaWYgKGxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uKSB7Ci0gICAgICAg
ICAgICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBpbml0TG9uZ2hhbmQgPSAqKGxvbmdoYW5k
c0ZvckluaXRpYWxpemF0aW9uW2ldKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgcHJvcElu
ZGV4ID0gMDsgcHJvcEluZGV4IDwgaW5pdExvbmdoYW5kLmxlbmd0aCgpOyArK3Byb3BJbmRleCkK
LSAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eShpbml0TG9uZ2hhbmQucHJvcGVydGllcygpW3By
b3BJbmRleF0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBp
bXBvcnRhbnQpOworICAgICAgICBpZiAocHJvcElkID09IENTU1Byb3BlcnR5Qm9yZGVyKSB7Cisg
ICAgICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEKiBpbml0TG9uZ2hhbmRzID0gYm9yZGVyTG9u
Z2hhbmRzRm9ySW5pdGlhbGl6YXRpb24oKVtpXTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
cHJvcEluZGV4ID0gMDsgaW5pdExvbmdoYW5kcyAmJiBpbml0TG9uZ2hhbmRzW3Byb3BJbmRleF0g
IT0gQ1NTUHJvcGVydHlJbnZhbGlkOyArK3Byb3BJbmRleCkKKyAgICAgICAgICAgICAgICBhZGRQ
cm9wZXJ0eShpbml0TG9uZ2hhbmRzW3Byb3BJbmRleF0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJ
bXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwogICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIGFkZFByb3BlcnR5KGxvbmdoYW5kLnByb3BlcnRpZXMoKVtpXSwgY3NzVmFsdWVQb29s
KCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCksIGltcG9ydGFudCk7CisgICAgICAgICAg
ICBhZGRQcm9wZXJ0eShsb25naGFuZHNbaV0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNp
dEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0IGludCAq
cHJvcGVydGllcywgIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlNFZhbHVl
cyhpbnQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUlEICpwcm9wZXJ0aWVzLCAgYm9vbCBpbXBv
cnRhbnQpCiB7CiAgICAgLyogRnJvbSB0aGUgQ1NTIDIgc3BlY3MsIDguMwogICAgICAqIElmIHRo
ZXJlIGlzIG9ubHkgb25lIHZhbHVlLCBpdCBhcHBsaWVzIHRvIGFsbCBzaWRlcy4gSWYgdGhlcmUg
YXJlIHR3byB2YWx1ZXMsIHRoZSB0b3AgYW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggMWFl
NjcwMzRiNDU0OTM4ZWQyMmEzMzUzOGNhZDFkNjgwYThhNTkzNC4uYWFjM2RjNWU2MGVhMWI3MjM4
ZDAxMzk2ZGU3ZjU1N2JmZDQ2MTU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXJW
YWx1ZXMuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5
TmFtZXMuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCIKICNpbmNsdWRlICJD
U1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCkBAIC00Niw3ICs0Nyw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOwogY2xhc3Mg
Q1NTUHJpbWl0aXZlVmFsdWU7Ci1jbGFzcyBDU1NQcm9wZXJ0eUxvbmdoYW5kOwogY2xhc3MgQ1NT
VmFsdWVQb29sOwogY2xhc3MgQ1NTUHJvcGVydHk7CiBjbGFzcyBDU1NSdWxlOwpAQCAtOTIsOCAr
OTIsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4g
IW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5KCk7IH0KIAogICAgIGJvb2wgcGFyc2VWYWx1ZShp
bnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7Ci0gICAgYm9vbCBwYXJzZVNob3J0aGFuZChpbnQs
IGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmLCBib29sKTsKLSAgICBib29sIHBhcnNlNFZhbHVl
cyhpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KTsKKyAg
ICBib29sIHBhcnNlU2hvcnRoYW5kKGludCwgY29uc3QgQ1NTUHJvcGVydHlJRCosIGJvb2wpOwor
ICAgIGJvb2wgcGFyc2U0VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0IENTU1Byb3BlcnR5SUQqIHBy
b3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlQ29udGVudChpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZVF1b3RlcyhpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCmluZGV4IGFiMTA0
MzkxOTJmOGFmY2RkNGQ0YTgzNzE3ZGIyMjMyZGQzY2E0NmEuLmVkZDUwZGE5NzBmNjg5Nzk2ZDFm
MGI1NzA3NjI3ZmQ2NTEzZGVkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcApAQCAt
MzYsMjYgKzM2LDI2IEBAIFN0cmluZyBDU1NQcm9wZXJ0eTo6Y3NzVGV4dCgpIGNvbnN0CiBlbnVt
IExvZ2ljYWxCb3hTaWRlIHsgQmVmb3JlU2lkZSwgRW5kU2lkZSwgQWZ0ZXJTaWRlLCBTdGFydFNp
ZGUgfTsKIGVudW0gUGh5c2ljYWxCb3hTaWRlIHsgVG9wU2lkZSwgUmlnaHRTaWRlLCBCb3R0b21T
aWRlLCBMZWZ0U2lkZSB9OwogCi1zdGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHko
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2Fs
Qm94U2lkZSBsb2dpY2FsU2lkZSwgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQp
CitzdGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZSBsb2dpY2FsU2lk
ZSwgY29uc3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzKQogewogICAgIGlmIChkaXJlY3Rpb24g
PT0gTFRSKSB7CiAgICAgICAgIGlmICh3cml0aW5nTW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdN
b2RlKSB7CiAgICAgICAgICAgICAvLyBUaGUgY29tbW9uIGNhc2UuIFRoZSBsb2dpY2FsIGFuZCBw
aHlzaWNhbCBib3ggc2lkZXMgbWF0Y2guCiAgICAgICAgICAgICAvLyBMZWZ0ID0gU3RhcnQsIFJp
Z2h0ID0gRW5kLCBCZWZvcmUgPSBUb3AsIEFmdGVyID0gQm90dG9tCi0gICAgICAgICAgICByZXR1
cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW2xvZ2ljYWxTaWRlXTsKKyAgICAgICAgICAgIHJldHVy
biBsb25naGFuZHNbbG9naWNhbFNpZGVdOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHdyaXRp
bmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUpIHsKICAgICAgICAgICAgIC8vIFN0YXJ0
ID0gTGVmdCwgRW5kID0gUmlnaHQsIEJlZm9yZSA9IEJvdHRvbSwgQWZ0ZXIgPSBUb3AuCiAgICAg
ICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7CiAgICAgICAgICAgICBjYXNlIFN0YXJ0U2lk
ZToKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0xlZnRTaWRl
XTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW0xlZnRTaWRlXTsKICAgICAgICAg
ICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVy
dGllcygpW1JpZ2h0U2lkZV07CisgICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tSaWdo
dFNpZGVdOwogICAgICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgICAgIHJl
dHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07CisgICAgICAgICAgICAgICAg
cmV0dXJuIGxvbmdoYW5kc1tCb3R0b21TaWRlXTsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW1RvcFNpZGVdOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKQEAgLTYzLDI2ICs2MywyNiBAQCBzdGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2Fs
UHJvcGVydHkoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbgogICAg
ICAgICAgICAgLy8gU3RhcnQgPSBUb3AsIEVuZCA9IEJvdHRvbSwgQmVmb3JlID0gTGVmdCwgQWZ0
ZXIgPSBSaWdodC4KICAgICAgICAgICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKICAgICAgICAg
ICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9w
ZXJ0aWVzKClbVG9wU2lkZV07CisgICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tUb3BT
aWRlXTsKICAgICAgICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4g
bG9uZ2hhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOworICAgICAgICAgICAgICAgIHJldHVy
biBsb25naGFuZHNbQm90dG9tU2lkZV07CiAgICAgICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtMZWZ0U2lkZV07Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tMZWZ0U2lkZV07CiAgICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbUmln
aHRTaWRlXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW1JpZ2h0U2lkZV07CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLyBTdGFydCA9IFRvcCwgRW5kID0g
Qm90dG9tLCBCZWZvcmUgPSBSaWdodCwgQWZ0ZXIgPSBMZWZ0CiAgICAgICAgIHN3aXRjaCAobG9n
aWNhbFNpZGUpIHsKICAgICAgICAgY2FzZSBTdGFydFNpZGU6Ci0gICAgICAgICAgICByZXR1cm4g
bG9uZ2hhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIGxvbmdo
YW5kc1tUb3BTaWRlXTsKICAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAgICAgcmV0dXJu
IGxvbmdoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBs
b25naGFuZHNbQm90dG9tU2lkZV07CiAgICAgICAgIGNhc2UgQmVmb3JlU2lkZToKLSAgICAgICAg
ICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKKyAgICAgICAgICAg
IHJldHVybiBsb25naGFuZHNbUmlnaHRTaWRlXTsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOworICAgICAgICAgICAg
cmV0dXJuIGxvbmdoYW5kc1tMZWZ0U2lkZV07CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTkwLDEz
ICs5MCwxMyBAQCBzdGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbgogICAgICAgICAvLyBTdGFydCA9IFJp
Z2h0LCBFbmQgPSBMZWZ0LCBCZWZvcmUgPSBUb3AsIEFmdGVyID0gQm90dG9tCiAgICAgICAgIHN3
aXRjaCAobG9naWNhbFNpZGUpIHsKICAgICAgICAgY2FzZSBTdGFydFNpZGU6Ci0gICAgICAgICAg
ICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07CisgICAgICAgICAgICBy
ZXR1cm4gbG9uZ2hhbmRzW1JpZ2h0U2lkZV07CiAgICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAg
ICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOworICAgICAgICAg
ICAgcmV0dXJuIGxvbmdoYW5kc1tMZWZ0U2lkZV07CiAgICAgICAgIGNhc2UgQmVmb3JlU2lkZToK
LSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CisgICAg
ICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW1RvcFNpZGVdOwogICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKKyAgICAg
ICAgICAgIHJldHVybiBsb25naGFuZHNbQm90dG9tU2lkZV07CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTEwNCwxMyArMTA0LDEzIEBAIHN0YXRpYyBpbnQgcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0
eShUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgV3JpdGluZ01vZGUgd3JpdGluCiAgICAgICAgIC8v
IFN0YXJ0ID0gUmlnaHQsIEVuZCA9IExlZnQsIEJlZm9yZSA9IEJvdHRvbSwgQWZ0ZXIgPSBUb3AK
ICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewogICAgICAgICBjYXNlIFN0YXJ0U2lkZToK
LSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKKyAg
ICAgICAgICAgIHJldHVybiBsb25naGFuZHNbUmlnaHRTaWRlXTsKICAgICAgICAgY2FzZSBFbmRT
aWRlOgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtMZWZ0U2lkZV07
CisgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW0xlZnRTaWRlXTsKICAgICAgICAgY2FzZSBC
ZWZvcmVTaWRlOgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtCb3R0
b21TaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNbQm90dG9tU2lkZV07CiAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1Rv
cFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tUb3BTaWRlXTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMTE4LDQyICsxMTgsNDEgQEAgc3RhdGljIGludCByZXNvbHZlVG9QaHlz
aWNhbFByb3BlcnR5KFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBXcml0aW5nTW9kZSB3cml0aW4K
ICAgICAgICAgLy8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwgQmVmb3JlID0gTGVmdCwgQWZ0
ZXIgPSBSaWdodAogICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7CiAgICAgICAgIGNhc2Ug
U3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtCb3R0
b21TaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNbQm90dG9tU2lkZV07CiAgICAg
ICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVz
KClbVG9wU2lkZV07CisgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW1RvcFNpZGVdOwogICAg
ICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVy
dGllcygpW0xlZnRTaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNbTGVmdFNpZGVd
OwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRp
ZXMoKVtSaWdodFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tSaWdodFNpZGVd
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwg
QmVmb3JlID0gUmlnaHQsIEFmdGVyID0gTGVmdAogICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsK
ICAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMo
KVtCb3R0b21TaWRlXTsKKyAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tCb3R0b21TaWRlXTsKICAg
ICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbVG9w
U2lkZV07CisgICAgICAgIHJldHVybiBsb25naGFuZHNbVG9wU2lkZV07CiAgICAgY2FzZSBCZWZv
cmVTaWRlOgotICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07
CisgICAgICAgIHJldHVybiBsb25naGFuZHNbUmlnaHRTaWRlXTsKICAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKKyAgICAgICAgcmV0
dXJuIGxvbmdoYW5kc1tMZWZ0U2lkZV07CiAgICAgfQogfQogCiBlbnVtIExvZ2ljYWxFeHRlbnQg
eyBMb2dpY2FsV2lkdGgsIExvZ2ljYWxIZWlnaHQgfTsKIAotc3RhdGljIGludCByZXNvbHZlVG9Q
aHlzaWNhbFByb3BlcnR5KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2FsRXh0ZW50IGxv
Z2ljYWxTaWRlLCBjb25zdCBpbnQqIHByb3BlcnRpZXMpCitzdGF0aWMgaW50IHJlc29sdmVUb1Bo
eXNpY2FsUHJvcGVydHkoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIExvZ2ljYWxFeHRlbnQgbG9n
aWNhbFNpZGUsIGNvbnN0IENTU1Byb3BlcnR5SUQqIHByb3BlcnRpZXMpCiB7CiAgICAgaWYgKHdy
aXRpbmdNb2RlID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUgfHwgd3JpdGluZ01vZGUgPT0gQm90
dG9tVG9Ub3BXcml0aW5nTW9kZSkKICAgICAgICAgcmV0dXJuIHByb3BlcnRpZXNbbG9naWNhbFNp
ZGVdOwogICAgIHJldHVybiBsb2dpY2FsU2lkZSA9PSBMb2dpY2FsV2lkdGggPyBwcm9wZXJ0aWVz
WzFdIDogcHJvcGVydGllc1swXTsKIH0KIAotc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hh
bmQmIGJvcmRlckRpcmVjdGlvbnMoKQorc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRl
ckRpcmVjdGlvbnMoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsg
Q1NTUHJvcGVydHlCb3JkZXJUb3AsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQsIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnQgfTsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlckRpcmVjdGlvbnMsIChwcm9wZXJ0aWVz
LCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpKSk7CisgICAgc3RhdGljIGNvbnN0IENTU1By
b3BlcnR5SUQgYm9yZGVyRGlyZWN0aW9uc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcCwgQ1NT
UHJvcGVydHlCb3JkZXJSaWdodCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20sIENTU1Byb3BlcnR5
Qm9yZGVyTGVmdCB9OwogICAgIHJldHVybiBib3JkZXJEaXJlY3Rpb25zOwogfQogCkBAIC0yMDks
MjcgKzIwOCwyNyBAQCBpbnQgQ1NTUHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3Bl
cnR5KGludCBwcm9wZXJ0eUlELCBUZXh0RGlyZWN0aW9uIGRpcgogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJBZnRlcldpZHRoOgogICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2lj
YWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBBZnRlclNpZGUsIGJvcmRlcldpZHRo
TG9uZ2hhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aDogewot
ICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXaWR0aCwgQ1NT
UHJvcGVydHlIZWlnaHQgfTsKKyAgICAgICAgY29uc3QgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0aWVz
WzJdID0geyBDU1NQcm9wZXJ0eVdpZHRoLCBDU1NQcm9wZXJ0eUhlaWdodCB9OwogICAgICAgICBy
ZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eSh3cml0aW5nTW9kZSwgTG9naWNhbFdpZHRo
LCBwcm9wZXJ0aWVzKTsKICAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxI
ZWlnaHQ6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5
V2lkdGgsIENTU1Byb3BlcnR5SGVpZ2h0IH07CisgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5SUQg
cHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXaWR0aCwgQ1NTUHJvcGVydHlIZWlnaHQgfTsK
ICAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkod3JpdGluZ01vZGUsIExv
Z2ljYWxIZWlnaHQsIHByb3BlcnRpZXMpOwogICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWluTG9naWNhbFdpZHRoOiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0g
eyBDU1NQcm9wZXJ0eU1pbldpZHRoLCBDU1NQcm9wZXJ0eU1pbkhlaWdodCB9OworICAgICAgICBj
b25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5TWluV2lkdGgs
IENTU1Byb3BlcnR5TWluSGVpZ2h0IH07CiAgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNh
bFByb3BlcnR5KHdyaXRpbmdNb2RlLCBMb2dpY2FsV2lkdGgsIHByb3BlcnRpZXMpOwogICAgIH0K
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhlaWdodDogewotICAgICAgICBj
b25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlNaW5XaWR0aCwgQ1NTUHJvcGVy
dHlNaW5IZWlnaHQgfTsKKyAgICAgICAgY29uc3QgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0aWVzWzJd
ID0geyBDU1NQcm9wZXJ0eU1pbldpZHRoLCBDU1NQcm9wZXJ0eU1pbkhlaWdodCB9OwogICAgICAg
ICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eSh3cml0aW5nTW9kZSwgTG9naWNhbEhl
aWdodCwgcHJvcGVydGllcyk7CiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhM
b2dpY2FsV2lkdGg6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1By
b3BlcnR5TWF4V2lkdGgsIENTU1Byb3BlcnR5TWF4SGVpZ2h0IH07CisgICAgICAgIGNvbnN0IENT
U1Byb3BlcnR5SUQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlNYXhXaWR0aCwgQ1NTUHJv
cGVydHlNYXhIZWlnaHQgfTsKICAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVy
dHkod3JpdGluZ01vZGUsIExvZ2ljYWxXaWR0aCwgcHJvcGVydGllcyk7CiAgICAgfQogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0OiB7Ci0gICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eU1heFdpZHRoLCBDU1NQcm9wZXJ0eU1heEhl
aWdodCB9OworICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNbMl0gPSB7IENT
U1Byb3BlcnR5TWF4V2lkdGgsIENTU1Byb3BlcnR5TWF4SGVpZ2h0IH07CiAgICAgICAgIHJldHVy
biByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KHdyaXRpbmdNb2RlLCBMb2dpY2FsSGVpZ2h0LCBw
cm9wZXJ0aWVzKTsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eUxvbmdoYW5kLmNwcAppbmRleCA3YzEyZDljM2I1OTk2ZThhZjQ0MDgwOGExYjUzZDRi
MzgyZWVkZjBhLi4zNTFjMjhkN2Q3NTUwYzFmNGM3OGQ0ZDMwZTFhZWQ2OWQ0NTE1NWVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwCkBAIC0yMSwxNSArMjEs
MTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eUxvbmdoYW5k
LmgiCiAKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBBZGQgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kU2l6ZSB0byB0aGUgc2hvcnRoYW5kLgotY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgYmFja2dyb3VuZExvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJhY2tn
cm91bmRMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBiYWNrZ3JvdW5kUHJvcGVy
dGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJhY2tncm91bmRQcm9w
ZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLAogICAgICAg
ICBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwKICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUmVwZWF0WCwKQEAgLTM4LDMwNiArMzcsMjkyIEBAIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hh
bmQmIGJhY2tncm91bmRMb25naGFuZCgpCiAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFBv
c2l0aW9uWCwKICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLAogICAgICAg
ICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLAotICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91
bmRPcmlnaW4KKyAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLAorICAgICAgICBD
U1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJv
cGVydHlMb25naGFuZCwgYmFja2dyb3VuZExvbmdoYW5kLCAoYmFja2dyb3VuZFByb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgoYmFja2dyb3VuZFByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJh
Y2tncm91bmRMb25naGFuZDsKKyAgICByZXR1cm4gYmFja2dyb3VuZFByb3BlcnRpZXM7CiB9CiAK
LWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kKCkK
K2NvbnN0IENTU1Byb3BlcnR5SUQqIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kKCkKIHsKLSAg
ICBzdGF0aWMgY29uc3QgaW50IGJhY2tncm91bmRQb3NpdGlvblByb3BlcnRpZXNbXSA9IHsgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlv
blkgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJhY2tn
cm91bmRQb3NpdGlvbkxvbmdoYW5kLCAoYmFja2dyb3VuZFBvc2l0aW9uUHJvcGVydGllcywgV1RG
X0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzKSkpOwotICAgIHJldHVy
biBiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVy
dHlJRCBiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5QmFja2dy
b3VuZFBvc2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBDU1NQcm9wZXJ0
eUludmFsaWQgfTsKKyAgICByZXR1cm4gYmFja2dyb3VuZFBvc2l0aW9uUHJvcGVydGllczsKIH0K
IAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3VuZFJlcGVhdExvbmdoYW5kKCkK
K2NvbnN0IENTU1Byb3BlcnR5SUQqIGJhY2tncm91bmRSZXBlYXRMb25naGFuZCgpCiB7Ci0gICAg
c3RhdGljIGNvbnN0IGludCBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllc1tdID0geyBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZIH07Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBiYWNrZ3JvdW5kUmVw
ZWF0TG9uZ2hhbmQsIChiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdU
SChiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYmFja2dyb3VuZFJl
cGVhdExvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJhY2tncm91bmRS
ZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdFksIENTU1Byb3BlcnR5SW52YWxpZCB9OworICAgIHJldHVy
biBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgYm9yZGVyTG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVyTG9uZ2hh
bmRFeHBhbmRlZCgpCiB7CiAgICAgLy8gRG8gbm90IGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlIGZv
bGxvd2luZyBmb3VyIHNob3J0aGFuZHMsIGFuZCBrZWVwIHRoZW0gdG9nZXRoZXIuCi0gICAgc3Rh
dGljIGNvbnN0IGludCBib3JkZXJQcm9wZXJ0aWVzWzRdWzNdID0gewotICAgICAgICB7IENTU1By
b3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3Bl
cnR5Qm9yZGVyVG9wV2lkdGggfSwKLSAgICAgICAgeyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29s
b3IsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdp
ZHRoIH0sCi0gICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCB9LAotICAg
ICAgICB7IENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRT
dHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGggfQotICAgIH07Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJMb25naGFuZCwgKGJvcmRlclBy
b3BlcnRpZXNbMF0sIHNpemVvZihib3JkZXJQcm9wZXJ0aWVzKSAvIHNpemVvZihib3JkZXJQcm9w
ZXJ0aWVzWzBdWzBdKSkpOwotICAgIHJldHVybiBib3JkZXJMb25naGFuZDsKKyAgICBzdGF0aWMg
Y29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9y
ZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVy
VG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21TdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciwgQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBDU1NQcm9wZXJ0eUlu
dmFsaWQgfTsKKyAgICByZXR1cm4gYm9yZGVyUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgYm9yZGVyQWJyaWRnZWRMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0
eUlEKiBib3JkZXJMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJBYnJp
ZGdlZFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgQ1NTUHJvcGVydHlC
b3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciB9OwotICAgIHN0YXRpYyBjb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kKiBwcm9wZXJ0aWVzRm9ySW5pdGlhbGl6YXRpb25bXSA9IHsKLSAg
ICAgICAgJmJvcmRlcldpZHRoTG9uZ2hhbmQoKSwKLSAgICAgICAgJmJvcmRlclN0eWxlTG9uZ2hh
bmQoKSwKLSAgICAgICAgJmJvcmRlckNvbG9yTG9uZ2hhbmQoKSwKLSAgICB9OwotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyQWJyaWRnZWRMb25naGFu
ZCwKLSAgICAgICAgKGJvcmRlckFicmlkZ2VkUHJvcGVydGllcywgcHJvcGVydGllc0ZvckluaXRp
YWxpemF0aW9uLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckFicmlkZ2VkUHJvcGVydGllcykpKTsK
LSAgICByZXR1cm4gYm9yZGVyQWJyaWRnZWRMb25naGFuZDsKKyAgICAvLyBEbyBub3QgY2hhbmdl
IHRoZSBvcmRlciBvZiB0aGUgZm9sbG93aW5nIGZvdXIgc2hvcnRoYW5kcywgYW5kIGtlZXAgdGhl
bSB0b2dldGhlci4KKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJQcm9wZXJ0
aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIENTU1Byb3BlcnR5SW52YWxpZCB9OworICAgIHJldHVy
biBib3JkZXJQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3Jk
ZXJCb3R0b21Mb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiogYm9yZGVyTG9uZ2hhbmRz
Rm9ySW5pdGlhbGl6YXRpb24oKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyQm90dG9t
UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJCb3R0b21Mb25n
aGFuZCwgKGJvcmRlckJvdHRvbVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyQm90
dG9tUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyQm90dG9tTG9uZ2hhbmQ7CisgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlckxvbmdoYW5kc0ZvckluaXRpYWxpemF0
aW9uW10gPSB7CisgICAgICAgICAgICBib3JkZXJXaWR0aExvbmdoYW5kKCksCisgICAgICAgICAg
ICBib3JkZXJTdHlsZUxvbmdoYW5kKCksCisgICAgICAgICAgICBib3JkZXJDb2xvckxvbmdoYW5k
KCksCisgICAgICAgICAgICAwCisgICAgICAgIH07CisgICAgcmV0dXJuIGJvcmRlckxvbmdoYW5k
c0ZvckluaXRpYWxpemF0aW9uOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3Jk
ZXJDb2xvckxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlckJvdHRvbUxvbmdo
YW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckNvbG9yUHJvcGVydGllc1tdID0g
eworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckJvdHRvbVByb3BlcnRpZXNb
XSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgQ1NTUHJvcGVydHlJbnZhbGlk
IH07CisgICAgcmV0dXJuIGJvcmRlckJvdHRvbVByb3BlcnRpZXM7Cit9CisKK2NvbnN0IENTU1By
b3BlcnR5SUQqIGJvcmRlckNvbG9yTG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBDU1NQ
cm9wZXJ0eUlEIGJvcmRlckNvbG9yUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0
eUJvcmRlclRvcENvbG9yLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsCiAg
ICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsCi0gICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVyTGVmdENvbG9yCisgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yLAorICAg
ICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Q1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyQ29sb3JMb25naGFuZCwgKGJvcmRlckNvbG9yUHJv
cGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJDb2xvclByb3BlcnRpZXMpKSk7Ci0gICAg
cmV0dXJuIGJvcmRlckNvbG9yTG9uZ2hhbmQ7CisgICAgcmV0dXJuIGJvcmRlckNvbG9yUHJvcGVy
dGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVySW1hZ2VMb25naGFu
ZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJJbWFnZUxvbmdoYW5kKCkKIHsKLSAgICBz
dGF0aWMgY29uc3QgaW50IGJvcmRlckltYWdlUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBj
b25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckltYWdlUHJvcGVydGllc1tdID0gewogICAgICAgICBD
U1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlcklt
YWdlU2xpY2UsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VXaWR0aCwKICAgICAgICAg
Q1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNldCwKLSAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJJ
bWFnZVJlcGVhdAorICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckltYWdlUmVwZWF0LAorICAgICAg
ICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NT
UHJvcGVydHlMb25naGFuZCwgYm9yZGVySW1hZ2VMb25naGFuZCwgKGJvcmRlckltYWdlUHJvcGVy
dGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJJbWFnZVByb3BlcnRpZXMpKSk7Ci0gICAgcmV0
dXJuIGJvcmRlckltYWdlTG9uZ2hhbmQ7CisgICAgcmV0dXJuIGJvcmRlckltYWdlUHJvcGVydGll
czsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyTGVmdExvbmdoYW5kKCkK
K2NvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlckxlZnRMb25naGFuZCgpCiB7Ci0gICAgc3RhdGlj
IGNvbnN0IGludCBib3JkZXJMZWZ0UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVm
dENvbG9yIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBi
b3JkZXJMZWZ0TG9uZ2hhbmQsIChib3JkZXJMZWZ0UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdU
SChib3JkZXJMZWZ0UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyTGVmdExvbmdoYW5k
OworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckxlZnRQcm9wZXJ0aWVzW10g
PSB7IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHls
ZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IsIENTU1Byb3BlcnR5SW52YWxpZCB9OworICAg
IHJldHVybiBib3JkZXJMZWZ0UHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgYm9yZGVyUmFkaXVzTG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVy
UmFkaXVzTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyUmFkaXVzUHJv
cGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlclJhZGl1
c1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1
cywKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzLAogICAgICAgICBDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsCi0gICAgICAgIENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tUmlnaHRSYWRpdXMKKyAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJh
ZGl1cywKKyAgICAgICAgQ1NTUHJvcGVydHlJbnZhbGlkCiAgICAgfTsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlclJhZGl1c0xvbmdoYW5kLCAoYm9y
ZGVyUmFkaXVzUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJSYWRpdXNQcm9wZXJ0
aWVzKSkpOwotICAgIHJldHVybiBib3JkZXJSYWRpdXNMb25naGFuZDsKKyAgICByZXR1cm4gYm9y
ZGVyUmFkaXVzUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9y
ZGVyUmlnaHRMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJSaWdodExvbmdo
YW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclJpZ2h0UHJvcGVydGllc1tdID0g
eyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHls
ZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJSaWdodExvbmdoYW5kLCAoYm9yZGVyUmlnaHRQ
cm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclJpZ2h0UHJvcGVydGllcykpKTsKLSAg
ICByZXR1cm4gYm9yZGVyUmlnaHRMb25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVy
dHlJRCBib3JkZXJSaWdodFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdp
ZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRD
b2xvciwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIGJvcmRlclJpZ2h0UHJvcGVy
dGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyU3BhY2luZ0xvbmdo
YW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlclNwYWNpbmdMb25naGFuZCgpCiB7Ci0g
ICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJTcGFjaW5nUHJvcGVydGllc1tdID0geyBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
clZlcnRpY2FsU3BhY2luZyB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlM
b25naGFuZCwgYm9yZGVyU3BhY2luZ0xvbmdoYW5kLCAoYm9yZGVyU3BhY2luZ1Byb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyU3BhY2luZ1Byb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJu
IGJvcmRlclNwYWNpbmdMb25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBi
b3JkZXJTcGFjaW5nUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6
b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZywgQ1NT
UHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzOwog
fQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJTdHlsZUxvbmdoYW5kKCkKK2Nv
bnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlclN0eWxlTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBj
b25zdCBpbnQgYm9yZGVyU3R5bGVQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENT
U1Byb3BlcnR5SUQgYm9yZGVyU3R5bGVQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3Bl
cnR5Qm9yZGVyVG9wU3R5bGUsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwK
ICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwKLSAgICAgICAgQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0U3R5bGUKKyAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsCisg
ICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJTdHlsZUxvbmdoYW5kLCAoYm9yZGVyU3R5bGVQ
cm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclN0eWxlUHJvcGVydGllcykpKTsKLSAg
ICByZXR1cm4gYm9yZGVyU3R5bGVMb25naGFuZDsKKyAgICByZXR1cm4gYm9yZGVyU3R5bGVQcm9w
ZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJUb3BMb25naGFu
ZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJUb3BMb25naGFuZCgpCiB7Ci0gICAgc3Rh
dGljIGNvbnN0IGludCBib3JkZXJUb3BQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVy
VG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9w
Q29sb3IgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJv
cmRlclRvcExvbmdoYW5kLCAoYm9yZGVyVG9wUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChi
b3JkZXJUb3BQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBib3JkZXJUb3BMb25naGFuZDsKKyAg
ICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJUb3BQcm9wZXJ0aWVzW10gPSB7IENT
U1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1By
b3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5SW52YWxpZCB9OworICAgIHJldHVybiBi
b3JkZXJUb3BQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3Jk
ZXJXaWR0aExvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlcldpZHRoTG9uZ2hh
bmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyV2lkdGhQcm9wZXJ0aWVzW10gPSB7
CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyV2lkdGhQcm9wZXJ0aWVzW10g
PSB7CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsCiAgICAgICAgIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0
aCwKLSAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgKKyAgICAgICAgQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0V2lkdGgsCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJXaWR0aExv
bmdoYW5kLCAoYm9yZGVyV2lkdGhQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlcldp
ZHRoUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyV2lkdGhMb25naGFuZDsKKyAgICBy
ZXR1cm4gYm9yZGVyV2lkdGhQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiBsaXN0U3R5bGVMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiBsaXN0U3R5bGVM
b25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBsaXN0U3R5bGVQcm9wZXJ0aWVzW10g
PSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgbGlzdFN0eWxlUHJvcGVydGllc1td
ID0gewogICAgICAgICBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsCiAgICAgICAgIENTU1Byb3Bl
cnR5TGlzdFN0eWxlUG9zaXRpb24sCi0gICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UK
KyAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwKKyAgICAgICAgQ1NTUHJvcGVydHlJ
bnZhbGlkCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hh
bmQsIGxpc3RTdHlsZUxvbmdoYW5kLCAobGlzdFN0eWxlUHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSChsaXN0U3R5bGVQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBsaXN0U3R5bGVMb25naGFu
ZDsKKyAgICByZXR1cm4gbGlzdFN0eWxlUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVy
dHlMb25naGFuZCYgZm9udExvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGZvbnRMb25n
aGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBmb250UHJvcGVydGllc1tdID0geworICAg
IHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGZvbnRQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAg
IENTU1Byb3BlcnR5Rm9udEZhbWlseSwKICAgICAgICAgQ1NTUHJvcGVydHlGb250U2l6ZSwKICAg
ICAgICAgQ1NTUHJvcGVydHlGb250U3R5bGUsCiAgICAgICAgIENTU1Byb3BlcnR5Rm9udFZhcmlh
bnQsCiAgICAgICAgIENTU1Byb3BlcnR5Rm9udFdlaWdodCwKLSAgICAgICAgQ1NTUHJvcGVydHlM
aW5lSGVpZ2h0CisgICAgICAgIENTU1Byb3BlcnR5TGluZUhlaWdodCwKKyAgICAgICAgQ1NTUHJv
cGVydHlJbnZhbGlkCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5
TG9uZ2hhbmQsIGZvbnRMb25naGFuZCwgKGZvbnRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RI
KGZvbnRQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBmb250TG9uZ2hhbmQ7CisgICAgcmV0dXJu
IGZvbnRQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBtYXJnaW5M
b25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiBtYXJnaW5Mb25naGFuZCgpCiB7Ci0gICAg
c3RhdGljIGNvbnN0IGludCBtYXJnaW5Qcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0
IENTU1Byb3BlcnR5SUQgbWFyZ2luUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0
eU1hcmdpblRvcCwKICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwKICAgICAgICAgQ1NT
UHJvcGVydHlNYXJnaW5Cb3R0b20sCi0gICAgICAgIENTU1Byb3BlcnR5TWFyZ2luTGVmdAorICAg
ICAgICBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAog
ICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBtYXJn
aW5Mb25naGFuZCwgKG1hcmdpblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFyZ2luUHJv
cGVydGllcykpKTsKLSAgICByZXR1cm4gbWFyZ2luTG9uZ2hhbmQ7CisgICAgcmV0dXJuIG1hcmdp
blByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIG91dGxpbmVMb25n
aGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiBvdXRsaW5lTG9uZ2hhbmQoKQogewotICAgIHN0
YXRpYyBjb25zdCBpbnQgb3V0bGluZVByb3BlcnRpZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3Qg
Q1NTUHJvcGVydHlJRCBvdXRsaW5lUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0
eU91dGxpbmVDb2xvciwKICAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGUsCi0gICAgICAg
IENTU1Byb3BlcnR5T3V0bGluZVdpZHRoCisgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZVdpZHRo
LAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgb3V0bGluZUxvbmdoYW5kLCAob3V0bGluZVByb3Bl
cnRpZXMsIFdURl9BUlJBWV9MRU5HVEgob3V0bGluZVByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJu
IG91dGxpbmVMb25naGFuZDsKKyAgICByZXR1cm4gb3V0bGluZVByb3BlcnRpZXM7CiB9CiAKLWNv
bnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIG92ZXJmbG93TG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJv
cGVydHlJRCogb3ZlcmZsb3dMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBvdmVy
Zmxvd1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlPdmVyZmxvd1gsIENTU1Byb3BlcnR5T3Zl
cmZsb3dZIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBv
dmVyZmxvd0xvbmdoYW5kLCAob3ZlcmZsb3dQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG92
ZXJmbG93UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gb3ZlcmZsb3dMb25naGFuZDsKKyAgICBz
dGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBvdmVyZmxvd1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJv
cGVydHlPdmVyZmxvd1gsIENTU1Byb3BlcnR5T3ZlcmZsb3dZLCBDU1NQcm9wZXJ0eUludmFsaWQg
fTsKKyAgICByZXR1cm4gb3ZlcmZsb3dQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiBwYWRkaW5nTG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogcGFkZGlu
Z0xvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IHBhZGRpbmdQcm9wZXJ0aWVzW10g
PSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgcGFkZGluZ1Byb3BlcnRpZXNbXSA9
IHsKICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nVG9wLAogICAgICAgICBDU1NQcm9wZXJ0eVBh
ZGRpbmdSaWdodCwKICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLAotICAgICAgICBD
U1NQcm9wZXJ0eVBhZGRpbmdMZWZ0CisgICAgICAgIENTU1Byb3BlcnR5UGFkZGluZ0xlZnQsCisg
ICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBwYWRkaW5nTG9uZ2hhbmQsIChwYWRkaW5nUHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChwYWRkaW5nUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gcGFk
ZGluZ0xvbmdoYW5kOworICAgIHJldHVybiBwYWRkaW5nUHJvcGVydGllczsKIH0KIAotY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQoKQorY29uc3QgQ1NT
UHJvcGVydHlJRCogd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25z
dCBpbnQgYW5pbWF0aW9uUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9w
ZXJ0eUlEIGFuaW1hdGlvblByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25OYW1lLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0
aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLAog
ICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5LAogICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LAogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25GaWxsTW9kZQorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlLAor
ICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQsIChhbmltYXRp
b25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGFuaW1hdGlvblByb3BlcnRpZXMpKSk7Ci0g
ICAgcmV0dXJuIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kOworICAgIHJldHVybiBhbmltYXRpb25Q
cm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRCb3JkZXJB
ZnRlckxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdEJvcmRlckFmdGVyTG9u
Z2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyQWZ0ZXJQcm9wZXJ0aWVzW10g
PSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJBZnRlclN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IgIH07Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRCb3JkZXJB
ZnRlckxvbmdoYW5kLCAoYm9yZGVyQWZ0ZXJQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJv
cmRlckFmdGVyUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0Qm9yZGVyQWZ0ZXJMb25n
aGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJBZnRlclByb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoLCBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckFmdGVyU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvciwg
Q1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIGJvcmRlckFmdGVyUHJvcGVydGllczsK
IH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hh
bmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKQog
ewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyQmVmb3JlUHJvcGVydGllc1tdID0geyBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJl
Zm9yZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yICB9OwotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Qm9yZGVyQmVmb3Jl
TG9uZ2hhbmQsIChib3JkZXJCZWZvcmVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRl
ckJlZm9yZVByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdEJvcmRlckJlZm9yZUxvbmdo
YW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckJlZm9yZVByb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0aCwgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJCZWZvcmVTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xv
ciwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIGJvcmRlckJlZm9yZVByb3BlcnRp
ZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEJvcmRlckVuZExvbmdo
YW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdEJvcmRlckVuZExvbmdoYW5kKCkKIHsK
LSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckVuZFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZSwg
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvciB9OwotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Qm9yZGVyRW5kTG9uZ2hhbmQsIChib3JkZXJF
bmRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckVuZFByb3BlcnRpZXMpKSk7Ci0g
ICAgcmV0dXJuIHdlYmtpdEJvcmRlckVuZExvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQ
cm9wZXJ0eUlEIGJvcmRlckVuZFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZSwgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJFbmRDb2xvciwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIGJv
cmRlckVuZFByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtp
dEJvcmRlclN0YXJ0TG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0Qm9yZGVy
U3RhcnRMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJTdGFydFByb3Bl
cnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRoLCBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xv
ciB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0
Qm9yZGVyU3RhcnRMb25naGFuZCwgKGJvcmRlclN0YXJ0UHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSChib3JkZXJTdGFydFByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdEJvcmRlclN0
YXJ0TG9uZ2hhbmQ7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyU3RhcnRQ
cm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRXaWR0aCwgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0
Q29sb3IsIENTU1Byb3BlcnR5SW52YWxpZCB9OworICAgIHJldHVybiBib3JkZXJTdGFydFByb3Bl
cnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENvbHVtbnNMb25n
aGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmQoKQogewot
ICAgIHN0YXRpYyBjb25zdCBpbnQgY29sdW1uc1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5XaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5Db3VudCB9OwotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Q29sdW1uc0xvbmdo
YW5kLCAoY29sdW1uc1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoY29sdW1uc1Byb3BlcnRp
ZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdENvbHVtbnNMb25naGFuZDsKKyAgICBzdGF0aWMgY29u
c3QgQ1NTUHJvcGVydHlJRCBjb2x1bW5zUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbldpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50LCBDU1NQcm9wZXJ0eUlu
dmFsaWQgfTsKKyAgICByZXR1cm4gY29sdW1uc1Byb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1By
b3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZCgpCitjb25zdCBDU1NQcm9w
ZXJ0eUlEKiB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBp
bnQgY29sdW1uUnVsZVByb3BlcnRpZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVy
dHlJRCBjb2x1bW5SdWxlUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtblJ1bGVXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5
bGUsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yLAorICAgICAgICBD
U1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJv
cGVydHlMb25naGFuZCwgd2Via2l0Q29sdW1uUnVsZUxvbmdoYW5kLCAoY29sdW1uUnVsZVByb3Bl
cnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoY29sdW1uUnVsZVByb3BlcnRpZXMpKSk7Ci0gICAgcmV0
dXJuIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZDsKKyAgICByZXR1cm4gY29sdW1uUnVsZVByb3Bl
cnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEZsZXhGbG93TG9u
Z2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0RmxleEZsb3dMb25naGFuZCgpCiB7
Ci0gICAgc3RhdGljIGNvbnN0IGludCBmbGV4Rmxvd1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVy
dHlXZWJraXRGbGV4RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRGbGV4Rmxvd0xv
bmdoYW5kLCAoZmxleEZsb3dQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGZsZXhGbG93UHJv
cGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0RmxleEZsb3dMb25naGFuZDsKKyAgICBzdGF0
aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBmbGV4Rmxvd1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVy
dHlXZWJraXRGbGV4RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwLCBDU1NQcm9w
ZXJ0eUludmFsaWQgfTsKKyAgICByZXR1cm4gZmxleEZsb3dQcm9wZXJ0aWVzOwogfQogCi1jb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCkKK2Nv
bnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKQogewotICAg
IHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0
ZXJDb2xsYXBzZSB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFu
ZCwgd2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCwgKG1hcmdpbkNvbGxhcHNlUHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChtYXJnaW5Db2xsYXBzZVByb3BlcnRpZXMpKSk7Ci0gICAgcmV0
dXJuIHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQ7CisgICAgc3RhdGljIGNvbnN0IENTU1By
b3BlcnR5SUQgbWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQmVmb3JlQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBz
ZSwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIG1hcmdpbkNvbGxhcHNlUHJvcGVy
dGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFycXVlZUxvbmdo
YW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdE1hcnF1ZWVMb25naGFuZCgpCiB7Ci0g
ICAgc3RhdGljIGNvbnN0IGludCBtYXJxdWVlUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBj
b25zdCBDU1NQcm9wZXJ0eUlEIG1hcnF1ZWVQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1By
b3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRN
YXJxdWVlSW5jcmVtZW50LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0
aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwKLSAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJx
dWVlU3BlZWQsCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQs
IChtYXJxdWVlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJxdWVlUHJvcGVydGllcykp
KTsKLSAgICByZXR1cm4gd2Via2l0TWFycXVlZUxvbmdoYW5kOworICAgIHJldHVybiBtYXJxdWVl
UHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFza0xv
bmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdE1hc2tMb25naGFuZCgpCiB7Ci0g
ICAgc3RhdGljIGNvbnN0IGludCBtYXNrUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25z
dCBDU1NQcm9wZXJ0eUlEIG1hc2tQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5
V2Via2l0TWFza0ltYWdlLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLAog
ICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLApAQCAtMzQ1LDc5ICszMzAsNzYg
QEAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFza0xvbmdoYW5kKCkKICAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLAogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tQb3NpdGlvblksCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXAsCi0g
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbgorICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tPcmlnaW4sCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRNYXNrTG9uZ2hh
bmQsIChtYXNrUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXNrUHJvcGVydGllcykpKTsK
LSAgICByZXR1cm4gd2Via2l0TWFza0xvbmdoYW5kOworICAgIHJldHVybiBtYXNrUHJvcGVydGll
czsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFza1Bvc2l0aW9uTG9u
Z2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQo
KQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFza1Bvc2l0aW9uUHJvcGVydGllc1tdID0geyBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0
aW9uWSB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Vi
a2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQsIChtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKG1hc2tQb3NpdGlvblByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdE1h
c2tQb3NpdGlvbkxvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIG1hc2tQ
b3NpdGlvblByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIENTU1Byb3BlcnR5SW52YWxpZCB9OworICAg
IHJldHVybiBtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxv
bmdoYW5kJiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCog
d2Via2l0TWFza1JlcGVhdExvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IG1hc2tS
ZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIENTU1By
b3BlcnR5V2Via2l0TWFza1JlcGVhdFkgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1By
b3BlcnR5TG9uZ2hhbmQsIHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZCwgKG1hc2tSZXBlYXRQcm9w
ZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hc2tSZXBlYXRQcm9wZXJ0aWVzKSkpOwotICAgIHJl
dHVybiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQ7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3Bl
cnR5SUQgbWFza1JlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVw
ZWF0WCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgQ1NTUHJvcGVydHlJbnZhbGlkIH07
CisgICAgcmV0dXJuIG1hc2tSZXBlYXRQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0
eUlEKiB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGlu
dCB0ZXh0RW1waGFzaXNQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3Bl
cnR5SUQgdGV4dEVtcGhhc2lzUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpc1N0eWxlLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBo
YXNpc0NvbG9yCisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsCisg
ICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZCwgKHRleHRF
bXBoYXNpc1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodGV4dEVtcGhhc2lzUHJvcGVydGll
cykpKTsKLSAgICByZXR1cm4gd2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmQ7CisgICAgcmV0dXJu
IHRleHRFbXBoYXNpc1Byb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IHdlYmtpdFRleHRTdHJva2VMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRU
ZXh0U3Ryb2tlTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgdGV4dFN0cm9rZVBy
b3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgsIENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQ
cm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmQsICh0ZXh0U3Ryb2tlUHJv
cGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0ZXh0U3Ryb2tlUHJvcGVydGllcykpKTsKLSAgICBy
ZXR1cm4gd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9w
ZXJ0eUlEIHRleHRTdHJva2VQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciwgQ1NTUHJvcGVydHlJ
bnZhbGlkIH07CisgICAgcmV0dXJuIHRleHRTdHJva2VQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKQorY29uc3QgQ1NT
UHJvcGVydHlJRCogd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29u
c3QgaW50IHRyYW5zaXRpb25Qcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1By
b3BlcnR5SUQgdHJhbnNpdGlvblByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2l0aW9uUHJvcGVydHksCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNp
dGlvbkR1cmF0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdG
dW5jdGlvbiwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXkKKyAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXksCisgICAgICAgIENTU1Byb3BlcnR5
SW52YWxpZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdo
YW5kLCB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQsICh0cmFuc2l0aW9uUHJvcGVydGllcywgV1RG
X0FSUkFZX0xFTkdUSCh0cmFuc2l0aW9uUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0
VHJhbnNpdGlvbkxvbmdoYW5kOworICAgIHJldHVybiB0cmFuc2l0aW9uUHJvcGVydGllczsKIH0K
IAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hh
bmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQo
KQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgdHJhbnNmb3JtT3JpZ2luUHJvcGVydGllc1tdID0g
eworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHRyYW5zZm9ybU9yaWdpblByb3BlcnRp
ZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YLAogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblksCi0gICAgICAgIENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWgorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybU9yaWdpblosCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUcmFuc2Zvcm1Pcmln
aW5Mb25naGFuZCwgKHRyYW5zZm9ybU9yaWdpblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgo
dHJhbnNmb3JtT3JpZ2luUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0VHJhbnNmb3Jt
T3JpZ2luTG9uZ2hhbmQ7CisgICAgcmV0dXJuIHRyYW5zZm9ybU9yaWdpblByb3BlcnRpZXM7CiB9
CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFdyYXBMb25naGFuZCgpCitjb25z
dCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRXcmFwTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25z
dCBpbnQgd2Via2l0V3JhcFByb3BlcnRpZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJv
cGVydHlJRCB3ZWJraXRXcmFwUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdFdyYXBGbG93LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW4sCi0gICAg
ICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcFBhZGRpbmcKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRXcmFwUGFkZGluZywKKyAgICAgICAgQ1NTUHJvcGVydHlJbnZhbGlkCiAgICAgfTsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdFdyYXBMb25naGFu
ZCwgKHdlYmtpdFdyYXBQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHdlYmtpdFdyYXBQcm9w
ZXJ0aWVzKSkpOwotICAgIHJldHVybiB3ZWJraXRXcmFwTG9uZ2hhbmQ7CisgICAgcmV0dXJuIHdl
YmtpdFdyYXBQcm9wZXJ0aWVzOwogfQogCiAvLyBSZXR1cm5zIGFuIGVtcHR5IGxpc3QgaWYgdGhl
IHByb3BlcnR5IGlzIG5vdCBhIHNob3J0aGFuZAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
bG9uZ2hhbmRGb3JQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkKK2NvbnN0IENTU1Byb3BlcnR5SUQq
IGxvbmdoYW5kc0ZvclByb3BlcnR5KGludCBwcm9wZXJ0eUlEKQogewogICAgIHN3aXRjaCAocHJv
cGVydHlJRCkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kOgpAQCAtNDI3LDcgKzQw
OSw3IEBAIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kRm9yUHJvcGVydHkoaW50
IHByb3BlcnR5SUQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQ6CiAgICAg
ICAgIHJldHVybiBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQoKTsKICAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyOgotICAgICAgICByZXR1cm4gYm9yZGVyTG9uZ2hhbmQoKTsKKyAgICAgICAgcmV0
dXJuIGJvcmRlckxvbmdoYW5kRXhwYW5kZWQoKTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tOgogICAgICAgICByZXR1cm4gYm9yZGVyQm90dG9tTG9uZ2hhbmQoKTsKICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6CkBAIC00OTgsMTAgKzQ4MCw4IEBAIGNvbnN0IENTU1By
b3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kRm9yUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCiAgICAg
ICAgIHJldHVybiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZCgpOwogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRXcmFwOgogICAgICAgICByZXR1cm4gd2Via2l0V3JhcExvbmdoYW5kKCk7
Ci0gICAgZGVmYXVsdDogewotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5
TG9uZ2hhbmQsIGRlZmF1bHRMb25naGFuZCwgKCkpOwotICAgICAgICByZXR1cm4gZGVmYXVsdExv
bmdoYW5kOwotICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oCmluZGV4IDkxNzBmZjYy
NTg3ZDFlNTE3YzdmZTYzNDgyMWI0NmIxMTEzYThiMDguLjEwYmRhM2JmMDY0NjRlYzI1N2E2MTAw
MTE2ZDZmNmU5NDE5NjcyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eUxvbmdoYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hh
bmQuaApAQCAtMjEsODMgKzIxLDUyIEBACiAjaWZuZGVmIENTU1Byb3BlcnR5TG9uZ2hhbmRfaAog
I2RlZmluZSBDU1NQcm9wZXJ0eUxvbmdoYW5kX2gKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBDU1NQcm9wZXJ0eUxvbmdoYW5kIHsKLXB1YmxpYzoKLSAgICBDU1NQcm9wZXJ0eUxvbmdo
YW5kKCkKLSAgICAgICAgOiBtX3Byb3BlcnRpZXMoMCkKLSAgICAgICAgLCBtX2xvbmdoYW5kc0Zv
ckluaXRpYWxpemF0aW9uKDApCi0gICAgICAgICwgbV9sZW5ndGgoMCkKLSAgICB7Ci0gICAgfQot
Ci0gICAgQ1NTUHJvcGVydHlMb25naGFuZChjb25zdCBpbnQqIHByb3BlcnRpZXMsIHVuc2lnbmVk
IG51bVByb3BlcnRpZXMpCi0gICAgICAgIDogbV9wcm9wZXJ0aWVzKHByb3BlcnRpZXMpCi0gICAg
ICAgICwgbV9sb25naGFuZHNGb3JJbml0aWFsaXphdGlvbigwKQotICAgICAgICAsIG1fbGVuZ3Ro
KG51bVByb3BlcnRpZXMpCi0gICAgewotICAgIH0KKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVz
LmgiCiAKLSAgICBDU1NQcm9wZXJ0eUxvbmdoYW5kKGNvbnN0IGludCogcHJvcGVydGllcywgY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCoqIGxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uLCB1bnNp
Z25lZCBudW1Qcm9wZXJ0aWVzKQotICAgICAgICA6IG1fcHJvcGVydGllcyhwcm9wZXJ0aWVzKQot
ICAgICAgICAsIG1fbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24obG9uZ2hhbmRzRm9ySW5pdGlh
bGl6YXRpb24pCi0gICAgICAgICwgbV9sZW5ndGgobnVtUHJvcGVydGllcykKLSAgICB7Ci0gICAg
fQotCi0gICAgY29uc3QgaW50KiBwcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0
aWVzOyB9Ci0gICAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCoqIGxvbmdoYW5kc0ZvckluaXRp
YWxpemF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb25naGFuZHNGb3JJbml0aWFsaXphdGlvbjsg
fQotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgY29uc3QgaW50KiBtX3Byb3BlcnRpZXM7Ci0gICAgY29uc3QgQ1NTUHJvcGVy
dHlMb25naGFuZCoqIG1fbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb247Ci0gICAgdW5zaWduZWQg
bV9sZW5ndGg7Ci19OworbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBDU1NQcm9wZXJ0eUxv
bmdoYW5kJiBiYWNrZ3JvdW5kTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IGJvcmRlckxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJBYnJp
ZGdlZExvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJCb3R0b21M
b25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyQ29sb3JMb25naGFu
ZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVySW1hZ2VMb25naGFuZCgpOwot
Y29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyTGVmdExvbmdoYW5kKCk7Ci1jb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJSYWRpdXNMb25naGFuZCgpOwotY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgYm9yZGVyUmlnaHRMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgYm9yZGVyU3BhY2luZ0xvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiBib3JkZXJTdHlsZUxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBi
b3JkZXJUb3BMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyV2lk
dGhMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbGlzdFN0eWxlTG9uZ2hh
bmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGZvbnRMb25naGFuZCgpOwotY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgbWFyZ2luTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5
TG9uZ2hhbmQmIG91dGxpbmVMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
b3ZlcmZsb3dMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgcGFkZGluZ0xv
bmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRBbmltYXRpb25Mb25n
aGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Qm9yZGVyQWZ0ZXJMb25n
aGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Qm9yZGVyQmVmb3JlTG9u
Z2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEJvcmRlckVuZExvbmdo
YW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRCb3JkZXJTdGFydExvbmdo
YW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmQo
KTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZCgp
OwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0RmxleEZsb3dMb25naGFuZCgpOwot
Y29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgp
OwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFycXVlZUxvbmdoYW5kKCk7Ci1j
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrTG9uZ2hhbmQoKTsKLWNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kKCk7Ci1jb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQoKTsKLWNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kKCk7Ci1jb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmQoKTsKLWNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpOwotY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQoKTsKLWNvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFdyYXBMb25naGFuZCgpOworY29uc3QgQ1NTUHJv
cGVydHlJRCogYmFja2dyb3VuZExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiBiYWNr
Z3JvdW5kUG9zaXRpb25Mb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogYmFja2dyb3Vu
ZFJlcGVhdExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJMb25naGFuZCgp
OworY29uc3QgQ1NTUHJvcGVydHlJRCoqIGJvcmRlckxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9u
KCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJCb3R0b21Mb25naGFuZCgpOworY29uc3Qg
Q1NTUHJvcGVydHlJRCogYm9yZGVyQ29sb3JMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJ
RCogYm9yZGVySW1hZ2VMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVyTGVm
dExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJSYWRpdXNMb25naGFuZCgp
OworY29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVyUmlnaHRMb25naGFuZCgpOworY29uc3QgQ1NT
UHJvcGVydHlJRCogYm9yZGVyU3BhY2luZ0xvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlE
KiBib3JkZXJTdHlsZUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJUb3BM
b25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVyV2lkdGhMb25naGFuZCgpOwor
Y29uc3QgQ1NTUHJvcGVydHlJRCogbGlzdFN0eWxlTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3Bl
cnR5SUQqIGZvbnRMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogbWFyZ2luTG9uZ2hh
bmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5SUQqIG91dGxpbmVMb25naGFuZCgpOworY29uc3QgQ1NT
UHJvcGVydHlJRCogb3ZlcmZsb3dMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogcGFk
ZGluZ0xvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRBbmltYXRpb25Mb25n
aGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0Qm9yZGVyQWZ0ZXJMb25naGFuZCgp
OworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKTsKK2Nv
bnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdEJvcmRlckVuZExvbmdoYW5kKCk7Citjb25zdCBDU1NQ
cm9wZXJ0eUlEKiB3ZWJraXRCb3JkZXJTdGFydExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0
eUlEKiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtp
dENvbHVtblJ1bGVMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0RmxleEZs
b3dMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0TWFyZ2luQ29sbGFwc2VM
b25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0TWFycXVlZUxvbmdoYW5kKCk7
Citjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRNYXNrTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1By
b3BlcnR5SUQqIHdlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0
eUlEKiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdl
YmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRU
ZXh0U3Ryb2tlTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdFRyYW5zaXRp
b25Mb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0VHJhbnNmb3JtT3JpZ2lu
TG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdFdyYXBMb25naGFuZCgpOwog
CiAvLyBSZXR1cm5zIGFuIGVtcHR5IGxpc3QgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCBhIHNob3J0
aGFuZAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmRGb3JQcm9wZXJ0eShpbnQp
OworY29uc3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzRm9yUHJvcGVydHkoaW50KTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5j
cHAKaW5kZXggZjUwMjZlMDA4M2Y4MzQ2NzQ0ZjZjY2JjYjM5MTFjODMxYzhkMGM0Yi4uMWIyMzVk
NDkxYzFiZTU0MTc1MDA0MTgxOTkyYWZhMDM5YzgxNzFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVByb3BlcnR5U2V0LmNwcApAQCAtMjQsNyArMjQsNiBAQAogCiAjaW5jbHVkZSAiQ1NTUGFy
c2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlMb25naGFuZC5oIgotI2luY2x1ZGUgIkNTU1By
b3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAi
Q1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCkBAIC0xMTEsNyArMTEw
LDcgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3BlcnR5VmFsdWUoaW50IHByb3Bl
cnR5SUQpIGNvbnN0CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6CiAgICAgICAgIHJl
dHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoYmFja2dyb3VuZExvbmdoYW5kKCkpOwogICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6IHsKLSAgICAgICAgY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCBwcm9wZXJ0aWVzWzNdID0geyBib3JkZXJXaWR0aExvbmdoYW5kKCksIGJvcmRlclN0eWxl
TG9uZ2hhbmQoKSwgYm9yZGVyQ29sb3JMb25naGFuZCgpIH07CisgICAgICAgIGNvbnN0IENTU1By
b3BlcnR5SUQqIHByb3BlcnRpZXNbM10gPSB7IGJvcmRlcldpZHRoTG9uZ2hhbmQoKSwgYm9yZGVy
U3R5bGVMb25naGFuZCgpLCBib3JkZXJDb2xvckxvbmdoYW5kKCkgfTsKICAgICAgICAgU3RyaW5n
IHJlczsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHBy
b3BlcnRpZXMpOyArK2kpIHsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IGdldENvbW1vblZh
bHVlKHByb3BlcnRpZXNbaV0pOwpAQCAtMTc2LDEwICsxNzUsMTAgQEAgU3RyaW5nIFN0eWxlUHJv
cGVydHlTZXQ6OmdldFByb3BlcnR5VmFsdWUoaW50IHByb3BlcnR5SUQpIGNvbnN0CiAgICAgcmV0
dXJuIFN0cmluZygpOwogfQogCi1TdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Ym9yZGVyU3BhY2lu
Z1ZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25zdAorU3RyaW5n
IFN0eWxlUHJvcGVydHlTZXQ6OmJvcmRlclNwYWNpbmdWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUlE
KiBsb25naGFuZHMpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBob3Jpem9udGFsVmFs
dWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVswXSk7Ci0gICAg
UmVmUHRyPENTU1ZhbHVlPiB2ZXJ0aWNhbFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25n
aGFuZC5wcm9wZXJ0aWVzKClbMV0pOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gaG9yaXpvbnRhbFZh
bHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZHNbMF0pOworICAgIFJlZlB0cjxDU1NW
YWx1ZT4gdmVydGljYWxWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmRzWzFdKTsK
IAogICAgIGlmICghaG9yaXpvbnRhbFZhbHVlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBA
IC0yNDgsMTMgKzI0NywxMyBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Zm9udFZhbHVlKCkg
Y29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBTdHlsZVBy
b3BlcnR5U2V0OjpnZXQ0VmFsdWVzKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5k
KSBjb25zdAorU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldDRWYWx1ZXMoY29uc3QgQ1NTUHJv
cGVydHlJRCogbG9uZ2hhbmRzKSBjb25zdAogewogICAgIC8vIEFzc3VtZSB0aGUgcHJvcGVydGll
cyBhcmUgaW4gdGhlIHVzdWFsIG9yZGVyIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdC4KLSAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5w
cm9wZXJ0aWVzKClbMF0pOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmlnaHRWYWx1ZSA9IGdldFBy
b3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpWzFdKTsKLSAgICBSZWZQdHI8Q1NT
VmFsdWU+IGJvdHRvbVZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0
aWVzKClbMl0pOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gbGVmdFZhbHVlID0gZ2V0UHJvcGVydHlD
U1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbM10pOworICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dG9wVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1swXSk7CisgICAgUmVmUHRy
PENTU1ZhbHVlPiByaWdodFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZHNbMV0p
OworICAgIFJlZlB0cjxDU1NWYWx1ZT4gYm90dG9tVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVl
KGxvbmdoYW5kc1syXSk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBsZWZ0VmFsdWUgPSBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1szXSk7CiAKICAgICAvLyBBbGwgNCBwcm9wZXJ0aWVzIG11
c3QgYmUgc3BlY2lmaWVkLgogICAgIGlmICghdG9wVmFsdWUgfHwgIXJpZ2h0VmFsdWUgfHwgIWJv
dHRvbVZhbHVlIHx8ICFsZWZ0VmFsdWUpCkBAIC0yNzUsMTcgKzI3NCwxNSBAQCBTdHJpbmcgU3R5
bGVQcm9wZXJ0eVNldDo6Z2V0NFZhbHVlcyhjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25n
aGFuZCkgY29uc3QKICAgICByZXR1cm4gcmVzOwogfQogCi1TdHJpbmcgU3R5bGVQcm9wZXJ0eVNl
dDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxv
bmdoYW5kKSBjb25zdAorU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhh
bmRWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUlEKiBsb25naGFuZHMpIGNvbnN0CiB7CiAgICAgU3Ry
aW5nIHJlczsKLQotICAgIGNvbnN0IHVuc2lnbmVkIHNpemUgPSBsb25naGFuZC5sZW5ndGgoKTsK
ICAgICAvLyBCZWdpbiBieSBjb2xsZWN0aW5nIHRoZSBwcm9wZXJ0aWVzIGludG8gYW4gYXJyYXku
Ci0gICAgVmVjdG9yPCBSZWZQdHI8Q1NTVmFsdWU+ID4gdmFsdWVzKHNpemUpOworICAgIFZlY3Rv
cjwgUmVmUHRyPENTU1ZhbHVlPiA+IHZhbHVlczsKICAgICBzaXplX3QgbnVtTGF5ZXJzID0gMDsK
LQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgdmFs
dWVzW2ldID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbaV0pOwor
ICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZvciAoOyBsb25naGFuZHNbaV0gIT0gQ1NTUHJvcGVy
dHlJbnZhbGlkOyArK2kpIHsKKyAgICAgICAgdmFsdWVzLmFwcGVuZChnZXRQcm9wZXJ0eUNTU1Zh
bHVlKGxvbmdoYW5kc1tpXSkpOwogICAgICAgICBpZiAodmFsdWVzW2ldKSB7CiAgICAgICAgICAg
ICBpZiAodmFsdWVzW2ldLT5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAgICAgICAgICAgQ1NTVmFs
dWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZXNbaV0u
Z2V0KCkpOwpAQCAtMjk0LDcgKzI5MSw3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRM
YXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uCiAgICAg
ICAgICAgICAgICAgbnVtTGF5ZXJzID0gbWF4PHNpemVfdD4oMVUsIG51bUxheWVycyk7CiAgICAg
ICAgIH0KICAgICB9Ci0KKyAgICBjb25zdCB1bnNpZ25lZCBzaXplID0gaTsKICAgICAvLyBOb3cg
c3RpdGNoIHRoZSBwcm9wZXJ0aWVzIHRvZ2V0aGVyLiAgSW1wbGljaXQgaW5pdGlhbCB2YWx1ZXMg
YXJlIGZsYWdnZWQgYXMgc3VjaCBhbmQKICAgICAvLyBjYW4gc2FmZWx5IGJlIG9taXR0ZWQuCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1MYXllcnM7IGkrKykgewpAQCAtMzExLDcgKzMw
OCw3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUo
Y29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uCiAgICAgICAgICAgICAgICAgICAgIHZhbHVl
ID0gdmFsdWVzW2pdOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIENvbG9yIG9ubHkgYmVsb25n
cyBpbiB0aGUgbGFzdCBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgaWYgKGxvbmdoYW5kLnBy
b3BlcnRpZXMoKVtqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikgeworICAgICAgICAg
ICAgICAgICAgICBpZiAobG9uZ2hhbmRzW2pdID09IENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPSBudW1MYXllcnMgLSAxKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChpICE9IDApIC8vIE90aGVyIHNpbmdsZXRvbnMgb25seSBiZWxvbmcgaW4gdGhl
IGZpcnN0IGxheWVyLgpAQCAtMzIyLDEwICszMTksMTAgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlT
ZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBs
b24KICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmVwb3J0IGJhY2tncm91bmQtcmVwZWF0IGFz
IGl0IHdhcyB3cml0dGVuIGluIHRoZSBDU1MuIElmIHRoZSBwcm9wZXJ0eSBpcyBpbXBsaWNpdCwK
ICAgICAgICAgICAgIC8vIHRoZW4gaXQgd2FzIHdyaXR0ZW4gd2l0aCBvbmx5IG9uZSB2YWx1ZS4g
SGVyZSB3ZSBmaWd1cmUgb3V0IHdoaWNoIHZhbHVlIHRoYXQgd2FzIHNvIHdlIGNhbgogICAgICAg
ICAgICAgLy8gcmVwb3J0IGJhY2sgY29ycmVjdGx5LgotICAgICAgICAgICAgaWYgKGxvbmdoYW5k
LnByb3BlcnRpZXMoKVtqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYICYmIGlzUHJv
cGVydHlJbXBsaWNpdChsb25naGFuZC5wcm9wZXJ0aWVzKClbal0pKSB7CisgICAgICAgICAgICBp
ZiAobG9uZ2hhbmRzW2pdID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFggJiYgaXNQcm9w
ZXJ0eUltcGxpY2l0KGxvbmdoYW5kc1tqXSkpIHsKIAogICAgICAgICAgICAgICAgIC8vIEJVRyA0
OTA1NTogbWFrZSBzdXJlIHRoZSB2YWx1ZSB3YXMgbm90IHJlc2V0IGluIHRoZSBsYXllciBjaGVj
ayBqdXN0IGFib3ZlLgotICAgICAgICAgICAgICAgIGlmIChqIDwgc2l6ZSAtIDEgJiYgbG9uZ2hh
bmQucHJvcGVydGllcygpW2ogKyAxXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZICYm
IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgKGogPCBzaXplIC0gMSAmJiBsb25naGFuZHNb
aiArIDFdID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkgJiYgdmFsdWUpIHsKICAgICAg
ICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB5VmFsdWU7CiAgICAgICAgICAgICAgICAg
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gbmV4dFZhbHVlID0gdmFsdWVzW2ogKyAxXTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKG5leHRWYWx1ZS0+aXNWYWx1ZUxpc3QoKSkKQEAgLTM3NiwxMiArMzcz
LDEyIEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUo
Y29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uCiAgICAgcmV0dXJuIHJlczsKIH0KIAotU3Ry
aW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldFNob3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3BlcnR5
TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25zdAorU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldFNo
b3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcykgY29uc3QKIHsKICAg
ICBTdHJpbmcgcmVzOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsb25naGFuZC5sZW5n
dGgoKTsgKytpKSB7Ci0gICAgICAgIGlmICghaXNQcm9wZXJ0eUltcGxpY2l0KGxvbmdoYW5kLnBy
b3BlcnRpZXMoKVtpXSkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVtpXSk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgbG9uZ2hhbmRzW2ldICE9IENTU1Byb3BlcnR5SW52YWxpZDsgKytpKSB7
CisgICAgICAgIGlmICghaXNQcm9wZXJ0eUltcGxpY2l0KGxvbmdoYW5kc1tpXSkpIHsKKyAgICAg
ICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdo
YW5kc1tpXSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogcHJvdmlkZSBkZWZhdWx0IHZhbHVlIGlm
ICF2YWx1ZSBvciB2YWx1ZSBpcyBpbml0aWFsIHZhbHVlCiAgICAgICAgICAgICBpZiAodmFsdWUg
JiYgIXZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXMu
aXNOdWxsKCkpCkBAIC0zOTQsMTEgKzM5MSwxMSBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6
Z2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQpCiB9
CiAKIC8vIG9ubHkgcmV0dXJucyBhIG5vbi1udWxsIHZhbHVlIGlmIGFsbCBwcm9wZXJ0aWVzIGhh
dmUgdGhlIHNhbWUsIG5vbi1udWxsIHZhbHVlCi1TdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0
Q29tbW9uVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQpIGNvbnN0CitT
dHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0Q29tbW9uVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlJ
RCogbG9uZ2hhbmRzKSBjb25zdAogewogICAgIFN0cmluZyByZXM7Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygp
W2ldKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBsb25naGFuZHNbaV0gIT0gQ1NTUHJvcGVy
dHlJbnZhbGlkOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFBy
b3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmRzW2ldKTsKICAgICAgICAgLy8gRklYTUU6IENTU0luaXRp
YWxWYWx1ZTo6Y3NzVGV4dCBzaG91bGQgZ2VuZXJhdGUgdGhlIHJpZ2h0IHZhbHVlLgogICAgICAg
ICBpZiAoIXZhbHVlIHx8IHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKQogICAgICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwpAQCAtNDIxLDEwICs0MTgsMTAgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
U3R5bGVQcm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVydHlJRCkgY29u
c3QKIAogYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpyZW1vdmVTaG9ydGhhbmRQcm9wZXJ0eShpbnQg
cHJvcGVydHlJRCkKIHsKLSAgICBDU1NQcm9wZXJ0eUxvbmdoYW5kIGxvbmdoYW5kID0gbG9uZ2hh
bmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKLSAgICBpZiAoIWxvbmdoYW5kLmxlbmd0aCgpKQor
ICAgIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcyA9IGxvbmdoYW5kc0ZvclByb3BlcnR5
KHByb3BlcnR5SUQpOworICAgIGlmICghbG9uZ2hhbmRzKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIHJlbW92ZVByb3BlcnRpZXNJblNldChsb25naGFuZC5wcm9wZXJ0aWVzKCks
IGxvbmdoYW5kLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVydGllc0luU2V0KGxv
bmdoYW5kcyk7CiB9CiAKIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlUHJvcGVydHkoaW50
IHByb3BlcnR5SUQsIFN0cmluZyogcmV0dXJuVGV4dCkKQEAgLTQ1OSwxMiArNDU2LDEyIEBAIGJv
b2wgU3R5bGVQcm9wZXJ0eVNldDo6cHJvcGVydHlJc0ltcG9ydGFudChpbnQgcHJvcGVydHlJRCkg
Y29uc3QKICAgICBpZiAocHJvcGVydHkpCiAgICAgICAgIHJldHVybiBwcm9wZXJ0eS0+aXNJbXBv
cnRhbnQoKTsKIAotICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmRzID0gbG9uZ2hhbmRG
b3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKLSAgICBpZiAoIWxvbmdoYW5kcy5sZW5ndGgoKSkKKyAg
ICBjb25zdCBDU1NQcm9wZXJ0eUlEKiBsb25naGFuZHMgPSBsb25naGFuZHNGb3JQcm9wZXJ0eShw
cm9wZXJ0eUlEKTsKKyAgICBpZiAoIWxvbmdoYW5kcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5kcy5sZW5ndGgoKTsgKytpKSB7
Ci0gICAgICAgIGlmICghcHJvcGVydHlJc0ltcG9ydGFudChsb25naGFuZHMucHJvcGVydGllcygp
W2ldKSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBsb25naGFuZHNbaV0gIT0gQ1NTUHJvcGVy
dHlJbnZhbGlkOyArK2kpIHsKKyAgICAgICAgaWYgKCFwcm9wZXJ0eUlzSW1wb3J0YW50KGxvbmdo
YW5kc1tpXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0
cnVlOwpAQCAtNDk4LDE3ICs0OTUsMTcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9w
ZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXAKIAogdm9p
ZCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gcHJwVmFsdWUsIGJvb2wgaW1wb3J0YW50KQogewotICAgIENTU1Byb3BlcnR5
TG9uZ2hhbmQgbG9uZ2hhbmQgPSBsb25naGFuZEZvclByb3BlcnR5KHByb3BlcnR5SUQpOwotICAg
IGlmICghbG9uZ2hhbmQubGVuZ3RoKCkpIHsKKyAgICBjb25zdCBDU1NQcm9wZXJ0eUlEKiBsb25n
aGFuZHMgPSBsb25naGFuZHNGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKKyAgICBpZiAoIWxvbmdo
YW5kcykgewogICAgICAgICBzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eShwcm9wZXJ0eUlELCBwcnBW
YWx1ZSwgaW1wb3J0YW50KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZW1vdmVQ
cm9wZXJ0aWVzSW5TZXQobG9uZ2hhbmQucHJvcGVydGllcygpLCBsb25naGFuZC5sZW5ndGgoKSk7
CisgICAgcmVtb3ZlUHJvcGVydGllc0luU2V0KGxvbmdoYW5kcyk7CiAKICAgICBSZWZQdHI8Q1NT
VmFsdWU+IHZhbHVlID0gcHJwVmFsdWU7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxv
bmdoYW5kLmxlbmd0aCgpOyArK2kpCi0gICAgICAgIG1fcHJvcGVydGllcy5hcHBlbmQoQ1NTUHJv
cGVydHkobG9uZ2hhbmQucHJvcGVydGllcygpW2ldLCB2YWx1ZSwgaW1wb3J0YW50KSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgbG9uZ2hhbmRzW2ldICE9IENTU1Byb3BlcnR5SW52YWxpZDsg
KytpKQorICAgICAgICBtX3Byb3BlcnRpZXMuYXBwZW5kKENTU1Byb3BlcnR5KGxvbmdoYW5kc1tp
XSwgdmFsdWUsIGltcG9ydGFudCkpOwogfQogCiB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnNldFBy
b3BlcnR5KGNvbnN0IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHkqIHNsb3QpCkBA
IC02MDcsMTIgKzYwNCwxMiBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6YXNUZXh0KCkgY29u
c3QKICAgICAgICAgICAgIHNob3J0aGFuZFByb3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUJvcmRlcjsK
ICAgICAgICAgICAgIGlmIChzaG9ydGhhbmRQcm9wZXJ0eUFwcGVhcmVkLmdldChDU1NQcm9wZXJ0
eUJvcmRlciAtIGZpcnN0Q1NTUHJvcGVydHkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvcmRlckFicmlkZ2VkTG9uZ2hhbmQo
KS5sZW5ndGgoKSAmJiBzaG9ydGhhbmRQcm9wZXJ0eUlEOyBpKyspIHsKLSAgICAgICAgICAgICAg
ICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZCA9ICooYm9yZGVyQWJyaWRnZWRM
b25naGFuZCgpLmxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uKClbaV0pOworICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgYm9yZGVyTG9uZ2hhbmQoKVtpXSAhPSBDU1NQcm9wZXJ0eUlu
dmFsaWQgJiYgc2hvcnRoYW5kUHJvcGVydHlJRDsgaSsrKSB7CisgICAgICAgICAgICAgICAgY29u
c3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzID0gYm9yZGVyTG9uZ2hhbmRzRm9ySW5pdGlhbGl6
YXRpb24oKVtpXTsKICAgICAgICAgICAgICAgICBTdHJpbmcgY29tbW9uVmFsdWU7CiAgICAgICAg
ICAgICAgICAgYm9vbCBjb21tb25JbXBvcnRhbmNlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAg
Zm9yIChzaXplX3QgaiA9IDA7IGogPCBsb25naGFuZC5sZW5ndGgoKTsgKytqKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGludCBpZCA9IGxvbmdoYW5kLnByb3BlcnRpZXMoKVtqXTsKKyAgICAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgbG9uZ2hhbmRzW2pdICE9IENTU1Byb3BlcnR5SW52
YWxpZDsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBpZCA9IGxvbmdoYW5kc1tqXTsK
ICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5
Q1NTVmFsdWUoaWQpOwogICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY3VycmVudFZhbHVlID0g
dmFsdWUgPyB2YWx1ZS0+Y3NzVGV4dCgpIDogU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNJbXBvcnRhbnQgPSBwcm9wZXJ0eUlzSW1wb3J0YW50KGlkKTsKQEAgLTgwNCw3ICs4
MDEsNyBAQCB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExp
c3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBDU1NTdHlsZQogCiAvLyBUaGlzIGlzIHRoZSBsaXN0IG9m
IHByb3BlcnRpZXMgd2Ugd2FudCB0byBjb3B5IGluIHRoZSBjb3B5QmxvY2tQcm9wZXJ0aWVzKCkg
ZnVuY3Rpb24uCiAvLyBJdCBpcyB0aGUgbGlzdCBvZiBDU1MgcHJvcGVydGllcyB0aGF0IGFwcGx5
IHNwZWNpYWxseSB0byBibG9jay1sZXZlbCBlbGVtZW50cy4KLXN0YXRpYyBjb25zdCBpbnQgYmxv
Y2tQcm9wZXJ0aWVzW10gPSB7CitzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBibG9ja1Byb3Bl
cnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eU9ycGhhbnMsCiAgICAgQ1NTUHJvcGVydHlPdmVy
ZmxvdywgLy8gVGhpcyBjYW4gYmUgYWxzbyBiZSBhcHBsaWVkIHRvIHJlcGxhY2VkIGVsZW1lbnRz
CiAgICAgQ1NTUHJvcGVydHlXZWJraXRBc3BlY3RSYXRpbywKQEAgLTgyNSw3ICs4MjIsOCBAQCBz
dGF0aWMgY29uc3QgaW50IGJsb2NrUHJvcGVydGllc1tdID0gewogICAgIENTU1Byb3BlcnR5V2Vi
a2l0UmVnaW9uQnJlYWtJbnNpZGUsCiAgICAgQ1NTUHJvcGVydHlUZXh0QWxpZ24sCiAgICAgQ1NT
UHJvcGVydHlUZXh0SW5kZW50LAotICAgIENTU1Byb3BlcnR5V2lkb3dzCisgICAgQ1NTUHJvcGVy
dHlXaWRvd3MsCisgICAgQ1NTUHJvcGVydHlJbnZhbGlkCiB9OwogCiBjb25zdCB1bnNpZ25lZCBu
dW1CbG9ja1Byb3BlcnRpZXMgPSBXVEZfQVJSQVlfTEVOR1RIKGJsb2NrUHJvcGVydGllcyk7CkBA
IC04MzcsMTcgKzgzNSwxNyBAQCBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IFN0eWxlUHJv
cGVydHlTZXQ6OmNvcHlCbG9ja1Byb3BlcnRpZXMoKSBjb25zdAogCiB2b2lkIFN0eWxlUHJvcGVy
dHlTZXQ6OnJlbW92ZUJsb2NrUHJvcGVydGllcygpCiB7Ci0gICAgcmVtb3ZlUHJvcGVydGllc0lu
U2V0KGJsb2NrUHJvcGVydGllcywgbnVtQmxvY2tQcm9wZXJ0aWVzKTsKKyAgICByZW1vdmVQcm9w
ZXJ0aWVzSW5TZXQoYmxvY2tQcm9wZXJ0aWVzKTsKIH0KIAotYm9vbCBTdHlsZVByb3BlcnR5U2V0
OjpyZW1vdmVQcm9wZXJ0aWVzSW5TZXQoY29uc3QgaW50KiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkK
K2Jvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlUHJvcGVydGllc0luU2V0KGNvbnN0IENTU1By
b3BlcnR5SUQqIHNldCkKIHsKICAgICBpZiAobV9wcm9wZXJ0aWVzLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYWx3YXlzIHVzZWQgd2l0
aCBzdGF0aWMgc2V0cyBhbmQgaW4gdGhhdCBjYXNlIGNvbnN0cnVjdGluZyB0aGUgaGFzaCByZXBl
YXRlZGx5IGlzIHByZXR0eSBwb2ludGxlc3MuCiAgICAgSGFzaFNldDxpbnQ+IHRvUmVtb3ZlOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBzZXRbaV0gIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyArK2kpCiAgICAgICAgIHRv
UmVtb3ZlLmFkZChzZXRbaV0pOwogCiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCA0PiBuZXdQcm9w
ZXJ0aWVzOwpAQCAtOTI2LDcgKzkyNCw3IEBAIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4g
U3R5bGVQcm9wZXJ0eVNldDo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
dHlsZVByb3BlcnR5U2V0KG1fcHJvcGVydGllcykpOwogfQogCi1QYXNzUmVmUHRyPFN0eWxlUHJv
cGVydHlTZXQ+IFN0eWxlUHJvcGVydHlTZXQ6OmNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgaW50
KiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKK1Bhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNl
dD4gU3R5bGVQcm9wZXJ0eVNldDo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0
eUlEKiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIHsKICAgICBWZWN0b3I8Q1NTUHJvcGVy
dHk+IGxpc3Q7CiAgICAgbGlzdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCA5ODhjZTYyMjU0NGFiMWE0NjVmMGU3
ZTczODE2OWI2YjhjYjVkOWU1Li5hMTU0YjJjYzM0M2M3OGI2NDAzNWI5ODRlMTQ2YmUyOWFiNTU1
ZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKQEAgLTIzLDYgKzIzLDcg
QEAKIAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVy
dHkuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RI
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtMzAsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDU1NSdWxlOwotY2xhc3MgQ1NTUHJvcGVydHlMb25naGFuZDsKIGNsYXNzIENTU1N0eWxlRGVj
bGFyYXRpb247CiBjbGFzcyBLVVJMOwogY2xhc3MgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uOwpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPFN0eWxlUHJv
cGVydHlTZXQ+IGNvcHlCbG9ja1Byb3BlcnRpZXMoKSBjb25zdDsKICAgICB2b2lkIHJlbW92ZUJs
b2NrUHJvcGVydGllcygpOwotICAgIGJvb2wgcmVtb3ZlUHJvcGVydGllc0luU2V0KGNvbnN0IGlu
dCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIGJvb2wgcmVtb3ZlUHJvcGVydGllc0luU2V0
KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCk7CiAKICAgICB2b2lkIG1lcmdlKGNvbnN0IFN0eWxl
UHJvcGVydHlTZXQqLCBib29sIGFyZ092ZXJyaWRlc09uQ29uZmxpY3QgPSB0cnVlKTsKIApAQCAt
OTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVFcXVpdmFsZW50UHJvcGVydGll
cyhjb25zdCBTdHlsZVByb3BlcnR5U2V0Kik7CiAgICAgdm9pZCByZW1vdmVFcXVpdmFsZW50UHJv
cGVydGllcyhjb25zdCBDU1NTdHlsZURlY2xhcmF0aW9uKik7CiAKLSAgICBQYXNzUmVmUHRyPFN0
eWxlUHJvcGVydHlTZXQ+IGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgaW50KiBzZXQsIHVuc2ln
bmVkIGxlbmd0aCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjb3B5
UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3Ro
KSBjb25zdDsKICAgICAKICAgICBTdHJpbmcgYXNUZXh0KCkgY29uc3Q7CiAgICAgCkBAIC0xMTgs
MTEgKzExOCwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXROZWVkc1N0eWxlUmVjYWxjKCk7
CiAKLSAgICBTdHJpbmcgZ2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFu
ZCYpIGNvbnN0OwotICAgIFN0cmluZyBnZXRDb21tb25WYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxv
bmdoYW5kJikgY29uc3Q7Ci0gICAgU3RyaW5nIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7Ci0gICAgU3RyaW5nIGdldDRWYWx1ZXMoY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0OwotICAgIFN0cmluZyBib3JkZXJTcGFjaW5n
VmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0OworICAgIFN0cmluZyBnZXRT
aG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUlEKikgY29uc3Q7CisgICAgU3RyaW5nIGdl
dENvbW1vblZhbHVlKGNvbnN0IENTU1Byb3BlcnR5SUQqKSBjb25zdDsKKyAgICBTdHJpbmcgZ2V0
TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3BlcnR5SUQqKSBjb25zdDsKKyAgICBT
dHJpbmcgZ2V0NFZhbHVlcyhjb25zdCBDU1NQcm9wZXJ0eUlEKikgY29uc3Q7CisgICAgU3RyaW5n
IGJvcmRlclNwYWNpbmdWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUlEKikgY29uc3Q7CiAgICAgU3Ry
aW5nIGZvbnRWYWx1ZSgpIGNvbnN0OwogICAgIGJvb2wgYXBwZW5kRm9udExvbmdoYW5kVmFsdWVJ
ZkV4cGxpY2l0KGludCBwcm9wZXJ0eUlELCBTdHJpbmdCdWlsZGVyJiByZXN1bHQpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggZTY3Mzc3ZDBmMjZj
OTk3YjdjYWM4YmIyYTNmZWZiMGFlZTE3MTVhYy4uYmQ3NGZjN2MxYzc3ZDBlMDgwYTA4MjNjOGYw
MjU5NzIxNmNjMDNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcApA
QCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEVkaXRpbmcgc3R5bGUg
cHJvcGVydGllcyBtdXN0IGJlIHByZXNlcnZlZCBkdXJpbmcgZWRpdGluZyBvcGVyYXRpb24uCiAv
LyBlLmcuIHdoZW4gYSB1c2VyIGluc2VydHMgYSBuZXcgcGFyYWdyYXBoLCBhbGwgcHJvcGVydGll
cyBsaXN0ZWQgaGVyZSBtdXN0IGJlIGNvcGllZCB0byB0aGUgbmV3IHBhcmFncmFwaC4KLXN0YXRp
YyBjb25zdCBpbnQgZWRpdGluZ1Byb3BlcnRpZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBDU1NQcm9w
ZXJ0eUlEIGVkaXRpbmdQcm9wZXJ0aWVzW10gPSB7CiAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IsCiAgICAgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwKIApAQCAtNjAzLDEyICs2MDMs
MTMgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OmNvbGxhcHNlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVz
KCkKIH0KIAogLy8gQ1NTIHByb3BlcnRpZXMgdGhhdCBjcmVhdGUgYSB2aXN1YWwgZGlmZmVyZW5j
ZSBvbmx5IHdoZW4gYXBwbGllZCB0byB0ZXh0Lgotc3RhdGljIGNvbnN0IGludCB0ZXh0T25seVBy
b3BlcnRpZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHRleHRPbmx5UHJvcGVy
dGllc1tdID0gewogICAgIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sCiAgICAgQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwKICAgICBDU1NQcm9wZXJ0eUZvbnRTdHls
ZSwKICAgICBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsCiAgICAgQ1NTUHJvcGVydHlDb2xvciwKKyAg
ICBDU1NQcm9wZXJ0eUludmFsaWQKIH07CiAKIFRyaVN0YXRlIEVkaXRpbmdTdHlsZTo6dHJpU3Rh
dGVPZlN0eWxlKEVkaXRpbmdTdHlsZSogc3R5bGUpIGNvbnN0CkBAIC02MjMsNyArNjI0LDcgQEAg
VHJpU3RhdGUgRWRpdGluZ1N0eWxlOjp0cmlTdGF0ZU9mU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlv
biogc3R5bGVUb0NvbXBhcmUsIFNob3UKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gZGlm
ZmVyZW5jZSA9IGdldFByb3BlcnRpZXNOb3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgc3R5bGVU
b0NvbXBhcmUpOwogCiAgICAgaWYgKHNob3VsZElnbm9yZVRleHRPbmx5UHJvcGVydGllcyA9PSBJ
Z25vcmVUZXh0T25seVByb3BlcnRpZXMpCi0gICAgICAgIGRpZmZlcmVuY2UtPnJlbW92ZVByb3Bl
cnRpZXNJblNldCh0ZXh0T25seVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodGV4dE9ubHlQ
cm9wZXJ0aWVzKSk7CisgICAgICAgIGRpZmZlcmVuY2UtPnJlbW92ZVByb3BlcnRpZXNJblNldCh0
ZXh0T25seVByb3BlcnRpZXMpOwogCiAgICAgaWYgKGRpZmZlcmVuY2UtPmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKQEAgLTEwODQsMTEgKzEwODUsMTIgQEAgdm9pZCBF
ZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKFN0eWxlZEVs
ZW1lbnQqIGVsZW1lbnQpCiBzdGF0aWMgdm9pZCByZW1vdmVQcm9wZXJ0aWVzSW5TdHlsZShTdHls
ZVByb3BlcnR5U2V0KiBzdHlsZVRvUmVtb3ZlUHJvcGVydGllc0Zyb20sIFN0eWxlUHJvcGVydHlT
ZXQqIHN0eWxlKQogewogICAgIHVuc2lnbmVkIHByb3BlcnR5Q291bnQgPSBzdHlsZS0+cHJvcGVy
dHlDb3VudCgpOwotICAgIFZlY3RvcjxpbnQ+IHByb3BlcnRpZXNUb1JlbW92ZShwcm9wZXJ0eUNv
dW50KTsKKyAgICBWZWN0b3I8Q1NTUHJvcGVydHlJRD4gcHJvcGVydGllc1RvUmVtb3ZlKHByb3Bl
cnR5Q291bnQgKyAxKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlDb3Vu
dDsgKytpKQotICAgICAgICBwcm9wZXJ0aWVzVG9SZW1vdmVbaV0gPSBzdHlsZS0+cHJvcGVydHlB
dChpKS5pZCgpOworICAgICAgICBwcm9wZXJ0aWVzVG9SZW1vdmVbaV0gPSBzdGF0aWNfY2FzdDxD
U1NQcm9wZXJ0eUlEPihzdHlsZS0+cHJvcGVydHlBdChpKS5pZCgpKTsKKyAgICBwcm9wZXJ0aWVz
VG9SZW1vdmUuYXBwZW5kKENTU1Byb3BlcnR5SW52YWxpZCk7CiAKLSAgICBzdHlsZVRvUmVtb3Zl
UHJvcGVydGllc0Zyb20tPnJlbW92ZVByb3BlcnRpZXNJblNldChwcm9wZXJ0aWVzVG9SZW1vdmUu
ZGF0YSgpLCBwcm9wZXJ0aWVzVG9SZW1vdmUuc2l6ZSgpKTsKKyAgICBzdHlsZVRvUmVtb3ZlUHJv
cGVydGllc0Zyb20tPnJlbW92ZVByb3BlcnRpZXNJblNldChwcm9wZXJ0aWVzVG9SZW1vdmUuZGF0
YSgpKTsKIH0KIAogdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29u
dGV4dChTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBOb2RlKiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRleCBjNTljNTVkYmEx
ZWE0YmMyMzk1M2Q0YzZmOGUzYTJkMzRmNDA3ZGU2Li5kNTZhMmNiYjk5ZDRlM2I5ODQyMDBkN2I2
N2E0YmZiMDUzZTI1MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25CYXNlLmNwcApAQCAtODY2LDExICs4NjYsMTEgQEAgcHJpdmF0ZToKIAogY2xhc3Mg
U2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyIDogcHVibGljIFByb3BlcnR5V3JhcHBlckJhc2Ugewog
cHVibGljOgotICAgIFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcihpbnQgcHJvcGVydHksIGNvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKQorICAgIFNob3J0aGFuZFByb3BlcnR5V3Jh
cHBlcihpbnQgcHJvcGVydHksIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcykKICAgICAg
ICAgOiBQcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3BlcnR5KQogICAgIHsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgICAg
IFByb3BlcnR5V3JhcHBlckJhc2UqIHdyYXBwZXIgPSB3cmFwcGVyRm9yUHJvcGVydHkobG9uZ2hh
bmQucHJvcGVydGllcygpW2ldKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgbG9uZ2hh
bmRzW2ldICE9IENTU1Byb3BlcnR5SW52YWxpZDsgKytpKSB7CisgICAgICAgICAgICBQcm9wZXJ0
eVdyYXBwZXJCYXNlKiB3cmFwcGVyID0gd3JhcHBlckZvclByb3BlcnR5KGxvbmdoYW5kc1tpXSk7
CiAgICAgICAgICAgICBpZiAod3JhcHBlcikKICAgICAgICAgICAgICAgICBtX3Byb3BlcnR5V3Jh
cHBlcnMuYXBwZW5kKHdyYXBwZXIpOwogICAgICAgICB9CkBAIC0xMTY5LDkgKzExNjksOSBAQCBz
dGF0aWMgdm9pZCBhZGRTaG9ydGhhbmRQcm9wZXJ0aWVzKCkKIAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChhbmltYXRhYmxlU2hvcnRoYW5kUHJvcGVydGllcyk7
ICsraSkgewogICAgICAgICBpbnQgcHJvcGVydHlJRCA9IGFuaW1hdGFibGVTaG9ydGhhbmRQcm9w
ZXJ0aWVzW2ldOwotICAgICAgICBDU1NQcm9wZXJ0eUxvbmdoYW5kIGxvbmdoYW5kID0gbG9uZ2hh
bmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKLSAgICAgICAgaWYgKGxvbmdoYW5kLmxlbmd0aCgp
ID4gMCkKLSAgICAgICAgICAgIGFkZFByb3BlcnR5V3JhcHBlcihwcm9wZXJ0eUlELCBuZXcgU2hv
cnRoYW5kUHJvcGVydHlXcmFwcGVyKHByb3BlcnR5SUQsIGxvbmdoYW5kKSk7CisgICAgICAgIGNv
bnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcyA9IGxvbmdoYW5kc0ZvclByb3BlcnR5KHByb3Bl
cnR5SUQpOworICAgICAgICBpZiAobG9uZ2hhbmRzKQorICAgICAgICAgICAgYWRkUHJvcGVydHlX
cmFwcGVyKHByb3BlcnR5SUQsIG5ldyBTaG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXIocHJvcGVydHlJ
RCwgbG9uZ2hhbmRzKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134604</attachid>
            <date>2012-03-29 09:56:58 -0700</date>
            <delta_ts>2012-03-29 10:07:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82624-20120329135640.patch</filename>
            <type>text/plain</type>
            <size>85033</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVlMmRjODVkOTY0ZWUw
ODcxNTQ1MTlmOTA4YTc4MjQ5MDkyZTFhYS4uYjM3ZTY3OWFjODY3YzA3MDkzZWU3ZjE0MTdiOTg1
ZTgxZTQ4NmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxMi0wMy0yOSAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZW1v
dmUgQ1NTUHJvcGVydHlMb25naGFuZCBjbGFzcyB0byBzaW1wbGlmeSBDU1Mgc2hvcnRoYW5kIHBy
b3BlcnR5IGhhbmRsaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODI2MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgQ1NTUHJvcGVydHlMb25naGFuZCBjbGFzcyB0byBzaW1wbGlmeSBDU1Mg
c2hvcnRoYW5kIHByb3BlcnR5IGhhbmRsaW5nLgorICAgICAgICBXZSBqdXN0IHVzZSBjbGFzc2lj
IGFycmF5cyB0ZXJtaW5hdGVkIGJ5IENTU1Byb3BlcnR5SW52YWxpZC4gSSBhbHNvIHN3aXRjaCBh
bGwKKyAgICAgICAgZGVjbGFyYXRpb25zIHRvIHVzZSBDU1NQcm9wZXJ0eUlEIHJhdGhlciB0aGFu
IGFuIGludCB3aGljaCBpcyBtb3JlIGV4cGxpY2l0IG9uCisgICAgICAgIHRoZSBjb250ZW50Lgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyA6IFRoaXMgaXMgYSByZWZhY3RvcmluZywgbm8gYmVoYXZp
b3VyIGNoYW5nZSBpbnRlbmRlZC4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y29weVByb3Bl
cnRpZXNJblNldCk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24pOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VB
bmltYXRpb25TaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRy
YW5zaXRpb25TaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNo
b3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyk6Cisg
ICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChD
U1NQYXJzZXIpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRl
ckRpcmVjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHk6OnJlc29sdmVEaXJl
Y3Rpb25Bd2FyZVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kTG9uZ2hhbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6YmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6YmFj
a2dyb3VuZFJlcGVhdExvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlckxvbmdoYW5k
RXhwYW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyTG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Ym9yZGVyTG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Ym9yZGVyQm90dG9tTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpib3JkZXJDb2xvckxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRl
ckltYWdlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyTGVmdExvbmdoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclJhZGl1c0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OmJvcmRlclJpZ2h0TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyU3BhY2lu
Z0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclN0eWxlTG9uZ2hhbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6Ym9yZGVyVG9wTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9y
ZGVyV2lkdGhMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpsaXN0U3R5bGVMb25naGFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpmb250TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6bWFy
Z2luTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6b3V0bGluZUxvbmdoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Om92ZXJmbG93TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6cGFkZGlu
Z0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6d2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6
d2Via2l0Qm9yZGVyRW5kTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0Qm9yZGVy
U3RhcnRMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRDb2x1bW5zTG9uZ2hhbmQp
OgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0Q29sdW1uUnVsZUxvbmdoYW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OndlYmtpdEZsZXhGbG93TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Vi
a2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXJx
dWVlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0TWFza0xvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OndlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OndlYmtpdE1hc2tSZXBlYXRMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJr
aXRUZXh0RW1waGFzaXNMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRUZXh0U3Ry
b2tlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0VHJhbnNpdGlvbkxvbmdoYW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdFRyYW5zZm9ybU9yaWdpbkxvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OndlYmtpdFdyYXBMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjps
b25naGFuZHNGb3JQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3BlcnR5VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Ym9yZGVyU3BhY2luZ1ZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldDRWYWx1ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldFNob3J0aGFuZFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldENvbW1vblZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZVNob3J0aGFuZFByb3Bl
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnByb3BlcnR5SXNJbXBv
cnRhbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6YXNUZXh0KToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlQmxv
Y2tQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnJlbW92
ZVByb3BlcnRpZXNJblNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpj
b3B5UHJvcGVydGllc0luU2V0KToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTdHlsZVByb3BlcnR5U2V0KToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6dHJpU3RhdGVPZlN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OnJlbW92ZVByb3BlcnRpZXNJblN0eWxlKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNob3J0aGFuZFByb3BlcnR5V3Jh
cHBlcjo6U2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFNo
b3J0aGFuZFByb3BlcnRpZXMpOgorCiAyMDEyLTAzLTI4ICBUb21teSBXaWRlbmZseWNodCAgPHRv
bW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWVkaWFTdHJlYW0gQVBJIChK
U0VQKTogSW50cm9kdWNpbmcgV2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYjk4
OWMxZDVhNmVhYzcwODg5NDM0ZjUxYzkwNzY2M2ZhNzM3MjJlNC4uNjAxZjRjNDBlMmQ5NGM4ZmI0
M2UxNWE5MmUyM2Y1OWJlNTQwMTkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTc0LDcgKzc0LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogLy8gTGlzdCBvZiBhbGwgcHJvcGVydGllcyB3ZSBrbm93IGhvdyB0byBj
b21wdXRlLCBvbWl0dGluZyBzaG9ydGhhbmRzLgotc3RhdGljIGNvbnN0IGludCBjb21wdXRlZFBy
b3BlcnRpZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGNvbXB1dGVkUHJvcGVy
dGllc1tdID0gewogICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsCiAgICAgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwKICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwK
QEAgLTIzMzcsMTAgKzIzMzcsMTAgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXIKICAgICAgICAg
ICAgIHJldHVybiB2YWx1ZUZvckZpbHRlcihzdHlsZS5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6IHsKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9w
ZXJ0aWVzWzVdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kSW1hZ2UsCisgICAgICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNb
XSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIENTU1Byb3BlcnR5QmFja2dyb3VuZElt
YWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5
QmFja2dyb3VuZFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQ
b3NpdGlvbiB9OwotICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hv
cnRoYW5kUHJvcGVydGllcyhDU1NQcm9wZXJ0eUxvbmdoYW5kKHByb3BlcnRpZXMsIFdURl9BUlJB
WV9MRU5HVEgocHJvcGVydGllcykpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiwgQ1NTUHJvcGVydHlJbnZhbGlk
IH07CisgICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQ
cm9wZXJ0aWVzKHByb3BlcnRpZXMpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXI6IHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBEb05vdFVwZGF0ZUxheW91dCk7CkBA
IC0yNTc0LDI0ICsyNTc0LDI0IEBAIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uOjptYWtlTXV0YWJsZSgpCiAgICAgcmV0dXJuIGNvcHkoKTsK
IH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IENTU1By
b3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25zdAorUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9y
dGhhbmRQcm9wZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcykgY29uc3QKIHsK
ICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbG9uZ2hhbmQubGVuZ3Ro
KCk7ICsraSkgewotICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlD
U1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbaV0sIERvTm90VXBkYXRlTGF5b3V0KTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgbG9uZ2hhbmRzW2ldICE9IENTU1Byb3BlcnR5SW52YWxpZDsg
KytpKSB7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1Zh
bHVlKGxvbmdoYW5kc1tpXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwogICAgICAgICBsaXN0LT5hcHBl
bmQodmFsdWUpOwogICAgIH0KICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NS
ZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldENTU1By
b3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
bG9uZ2hhbmQpIGNvbnN0CitQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0
IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcykgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTVmFsdWVM
aXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIC8v
IEFzc3VtZSB0aGUgcHJvcGVydGllcyBhcmUgaW4gdGhlIHVzdWFsIG9yZGVyIHRvcCwgcmlnaHQs
IGJvdHRvbSwgbGVmdC4KLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gZ2V0UHJvcGVy
dHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbMF0sIERvTm90VXBkYXRlTGF5b3V0KTsK
LSAgICBSZWZQdHI8Q1NTVmFsdWU+IHJpZ2h0VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxv
bmdoYW5kLnByb3BlcnRpZXMoKVsxXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0cjxD
U1NWYWx1ZT4gYm90dG9tVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3Bl
cnRpZXMoKVsyXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gbGVm
dFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbM10sIERv
Tm90VXBkYXRlTGF5b3V0KTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gZ2V0UHJv
cGVydHlDU1NWYWx1ZShsb25naGFuZHNbMF0sIERvTm90VXBkYXRlTGF5b3V0KTsKKyAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHJpZ2h0VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1sx
XSwgRG9Ob3RVcGRhdGVMYXlvdXQpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gYm90dG9tVmFsdWUg
PSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1syXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwor
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gbGVmdFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25n
aGFuZHNbM10sIERvTm90VXBkYXRlTGF5b3V0KTsKIAogICAgIC8vIEFsbCA0IHByb3BlcnRpZXMg
bXVzdCBiZSBzcGVjaWZpZWQuCiAgICAgaWYgKCF0b3BWYWx1ZSB8fCAhcmlnaHRWYWx1ZSB8fCAh
Ym90dG9tVmFsdWUgfHwgIWxlZnRWYWx1ZSkKQEAgLTI2MTIsNyArMjYxMiw3IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldENTU1Byb3Bl
cnR5VmFsdWVzRm9yU2lkCiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCi1QYXNzUmVm
UHRyPFN0eWxlUHJvcGVydHlTZXQ+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y29weVBy
b3BlcnRpZXNJblNldChjb25zdCBpbnQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAorUGFz
c1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNv
cHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5n
dGgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPENTU1Byb3BlcnR5PiBsaXN0OwogICAgIGxpc3QucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4IGU4OTM4ZDBlNTU5NTk0ZTViZjI2ZmFk
MGY2MzEyMGE5MDVmOGZhOTguLjc3N2Q4MjYzMWFiMzUzMWZhNjgzMmViZDBhMzllNzk4NmJlNTMz
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmgKQEAgLTI5LDcgKzI5LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NT
UHJpbWl0aXZlVmFsdWU7Ci1jbGFzcyBDU1NQcm9wZXJ0eUxvbmdoYW5kOwogY2xhc3MgQ1NTVmFs
dWVMaXN0OwogY2xhc3MgQ1NTVmFsdWVQb29sOwogY2xhc3MgQ29sb3I7CkBAIC03MSw3ICs3MCw3
IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRTVkdQcm9wZXJ0eUNTU1Zh
bHVlKGludCBwcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0KSBjb25zdDsKICNlbmRpZgogCi0gICAg
UGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IGlu
dCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8U3R5bGVQcm9w
ZXJ0eVNldD4gY29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVu
c2lnbmVkIGxlbmd0aCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uKFBhc3NSZWZQdHI8Tm9kZT4sIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUsIGNvbnN0
IFN0cmluZyYpOwpAQCAtMTEwLDggKzEwOSw4IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gdmFsdWVGb3JGaWx0ZXIoUmVuZGVyU3R5bGUqKSBjb25zdDsKICNlbmRpZgogCi0g
ICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRo
YW5kUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7Ci0gICAgUGFz
c1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhh
bmQoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoY29u
c3QgQ1NTUHJvcGVydHlJRCopIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBn
ZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0IENTU1Byb3BlcnR5SUQq
KSBjb25zdDsKIAogICAgIFJlZlB0cjxOb2RlPiBtX25vZGU7CiAgICAgUHNldWRvSWQgbV9wc2V1
ZG9FbGVtZW50U3BlY2lmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAzMTdlZTA4
ZDlmMzQ4NmJjYjNlY2Q5NzMyNjM0ZDRkN2VmYWQzOWQxLi5kMjFiOTk0YmI5Y2VkNDhhNGYzMDI1
MzNmZDkyMTYwZDJlYTE3YjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtNDksNyAr
NDksNiBAQAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJv
cGVydHkuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eUxvbmdoYW5kLmgiCi0jaW5jbHVkZSAiQ1NT
UHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5U291cmNlRGF0YS5oIgogI2lu
Y2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCkBAIC0y
MTc3LDE1ICsyMTc2LDE1IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBz
ZTogewogICAgICAgICBpZiAobnVtID09IDEpIHsKICAgICAgICAgICAgIFNob3J0aGFuZFNjb3Bl
IHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpOwotICAgICAgICAg
ICAgaWYgKCFwYXJzZVZhbHVlKHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKS5wcm9wZXJ0
aWVzKClbMF0sIGltcG9ydGFudCkpCisgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUoQ1NTUHJv
cGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgaW1wb3J0YW50KSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNl
ZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eSh3ZWJr
aXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCkucHJvcGVydGllcygpWzFdLCB2YWx1ZSwgaW1wb3J0
YW50KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0
ZXJDb2xsYXBzZSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChudW0gPT0gMikgewogICAgICAgICAgICAgU2hv
cnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSk7
Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUod2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFu
ZCgpLnByb3BlcnRpZXMoKVswXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZSh3ZWJraXRNYXJn
aW5Db2xsYXBzZUxvbmdoYW5kKCkucHJvcGVydGllcygpWzFdLCBpbXBvcnRhbnQpKQorICAgICAg
ICAgICAgaWYgKCFwYXJzZVZhbHVlKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFw
c2UsIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRl
ckNvbGxhcHNlLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yMzE5LDcgKzIzMTgsNyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOgogICAgICAgICAvLyBbICdib3JkZXItd2lkdGgnIHx8
ICdib3JkZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKICAgICB7Ci0gICAgICAgIGlm
IChwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJvcmRlckFicmlkZ2VkTG9uZ2hhbmQoKSwgaW1wb3J0
YW50KSkgeworICAgICAgICBpZiAocGFyc2VTaG9ydGhhbmQocHJvcElkLCBib3JkZXJMb25naGFu
ZCgpLCBpbXBvcnRhbnQpKSB7CiAgICAgICAgICAgICAvLyBUaGUgQ1NTMyBCb3JkZXJzIGFuZCBC
YWNrZ3JvdW5kcyBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCBib3JkZXIgYWxzbyByZXNldHMgYm9y
ZGVyLWltYWdlLiBJdCdzIGFzCiAgICAgICAgICAgICAvLyB0aG91Z2ggYSB2YWx1ZSBvZiBub25l
IHdhcyBzcGVjaWZpZWQgZm9yIHRoZSBpbWFnZS4KICAgICAgICAgICAgIGFkZFByb3BlcnR5KENT
U1Byb3BlcnR5Qm9yZGVySW1hZ2UsIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRp
YWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwpAQCAtMjM1MiwxOSArMjM1MSwxOSBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgcmV0
dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgb3V0bGluZUxvbmdoYW5kKCksIGltcG9ydGFudCk7
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yOgogICAgICAgICAvLyA8Y29sb3I+ezEs
NH0gfCBpbmhlcml0Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3JkZXJD
b2xvckxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4g
cGFyc2U0VmFsdWVzKHByb3BJZCwgYm9yZGVyQ29sb3JMb25naGFuZCgpLCBpbXBvcnRhbnQpOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKICAgICAgICAgLy8gPGJvcmRlci13aWR0
aD57MSw0fSB8IGluaGVyaXQKLSAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIGJv
cmRlcldpZHRoTG9uZ2hhbmQoKS5wcm9wZXJ0aWVzKCksIGltcG9ydGFudCk7CisgICAgICAgIHJl
dHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3JkZXJXaWR0aExvbmdoYW5kKCksIGltcG9ydGFu
dCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlOgogICAgICAgICAvLyA8Ym9yZGVy
LXN0eWxlPnsxLDR9IHwgaW5oZXJpdAotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJ
ZCwgYm9yZGVyU3R5bGVMb25naGFuZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKKyAgICAg
ICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIGJvcmRlclN0eWxlTG9uZ2hhbmQoKSwgaW1w
b3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luOgogICAgICAgICAvLyA8bWFyZ2lu
LXdpZHRoPnsxLDR9IHwgaW5oZXJpdAotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJ
ZCwgbWFyZ2luTG9uZ2hhbmQoKS5wcm9wZXJ0aWVzKCksIGltcG9ydGFudCk7CisgICAgICAgIHJl
dHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBtYXJnaW5Mb25naGFuZCgpLCBpbXBvcnRhbnQpOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgogICAgICAgICAvLyA8cGFkZGluZy13aWR0aD57
MSw0fSB8IGluaGVyaXQKLSAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIHBhZGRp
bmdMb25naGFuZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHBh
cnNlNFZhbHVlcyhwcm9wSWQsIHBhZGRpbmdMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RmxvdzoKICAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRo
YW5kKHByb3BJZCwgd2Via2l0RmxleEZsb3dMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlGb250OgpAQCAtMjcyNiw3ICsyNzI1LDYgQEAgdm9pZCBDU1NQYXJzZXI6
OmFkZEFuaW1hdGlvblZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IHIKIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKGJvb2wg
aW1wb3J0YW50KQogewotICAgIGNvbnN0IHVuc2lnbmVkIG51bVByb3BlcnRpZXMgPSB3ZWJraXRB
bmltYXRpb25Mb25naGFuZCgpLmxlbmd0aCgpOwogICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRo
aXMsIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uKTsKIAogICAgIGJvb2wgcGFyc2VkUHJvcGVy
dHlbXSA9IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Ug
fTsKQEAgLTI3NDAsNyArMjczOCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblNo
b3J0aGFuZChib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIC8vIFdlIGhpdCB0aGUgZW5kLiAg
RmlsbCBpbiBhbGwgcmVtYWluaW5nIHZhbHVlcyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgogICAg
ICAgICAgICAgaW5pdGlhbFBhcnNlZFByb3BlcnR5SW5kZXggPSAwOwogICAgICAgICAgICAgbV92
YWx1ZUxpc3QtPm5leHQoKTsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0
aWVzOyArK2kpIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IHdlYmtpdEFuaW1hdGlvbkxvbmdo
YW5kKClbaV0gIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKICAgICAgICAgICAgICAgICBp
ZiAoIXBhcnNlZFByb3BlcnR5W2ldKQogICAgICAgICAgICAgICAgICAgICBhZGRBbmltYXRpb25W
YWx1ZSh2YWx1ZXNbaV0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1
ZSgpKTsKICAgICAgICAgICAgICAgICBwYXJzZWRQcm9wZXJ0eVtpXSA9IGZhbHNlOwpAQCAtMjc1
MCwxMCArMjc0OCwxMCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9ydGhhbmQo
Ym9vbCBpbXBvcnRhbnQpCiAgICAgICAgIH0KIAogICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7
Ci0gICAgICAgIGZvciAoaSA9IGluaXRpYWxQYXJzZWRQcm9wZXJ0eUluZGV4OyAhZm91bmQgJiYg
aSA8IG51bVByb3BlcnRpZXM7ICsraSkgeworICAgICAgICBmb3IgKGkgPSBpbml0aWFsUGFyc2Vk
UHJvcGVydHlJbmRleDsgIWZvdW5kICYmIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKClbaV0gIT0g
Q1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKICAgICAgICAgICAgIGlmICghcGFyc2VkUHJvcGVy
dHlbaV0pIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDsKLSAgICAgICAg
ICAgICAgICBpZiAocGFyc2VBbmltYXRpb25Qcm9wZXJ0eSh3ZWJraXRBbmltYXRpb25Mb25naGFu
ZCgpLnByb3BlcnRpZXMoKVtpXSwgdmFsKSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZUFu
aW1hdGlvblByb3BlcnR5KHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKClbaV0sIHZhbCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgcGFyc2VkUHJvcGVydHlbaV0gPSBmb3VuZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgICAgIGluaXRpYWxQYXJzZWRQcm9wZXJ0eUluZGV4ID0gMTsKICAgICAgICAg
ICAgICAgICAgICAgYWRkQW5pbWF0aW9uVmFsdWUodmFsdWVzW2ldLCB2YWwucmVsZWFzZSgpKTsK
QEAgLTI3NjgsMjIgKzI3NjYsMjAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uU2hv
cnRoYW5kKGJvb2wgaW1wb3J0YW50KQogICAgIH0KIAogICAgIC8vIEZpbGwgaW4gYW55IHJlbWFp
bmluZyBwcm9wZXJ0aWVzIHdpdGggdGhlIGluaXRpYWwgdmFsdWUuCi0gICAgZm9yIChpID0gMDsg
aSA8IG51bVByb3BlcnRpZXM7ICsraSkgeworICAgIGZvciAoaSA9IDA7IHdlYmtpdEFuaW1hdGlv
bkxvbmdoYW5kKClbaV0gIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKICAgICAgICAgaWYg
KCFwYXJzZWRQcm9wZXJ0eVtpXSkKICAgICAgICAgICAgIGFkZEFuaW1hdGlvblZhbHVlKHZhbHVl
c1tpXSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOwogICAg
IH0KIAogICAgIC8vIE5vdyBhZGQgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHdlIGZvdW5kLgotICAg
IGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGFkZFByb3BlcnR5
KHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCkucHJvcGVydGllcygpW2ldLCB2YWx1ZXNbaV0ucmVs
ZWFzZSgpLCBpbXBvcnRhbnQpOworICAgIGZvciAoaSA9IDA7IHdlYmtpdEFuaW1hdGlvbkxvbmdo
YW5kKClbaV0gIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyArK2kpCisgICAgICAgIGFkZFByb3BlcnR5
KHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKClbaV0sIHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9y
dGFudCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJh
bnNpdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKIHsKLSAgICBjb25zdCB1bnNpZ25lZCBu
dW1Qcm9wZXJ0aWVzID0gd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkubGVuZ3RoKCk7Ci0KICAg
ICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb24p
OwogCiAgICAgYm9vbCBwYXJzZWRQcm9wZXJ0eVtdID0geyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSB9OwpAQCAtMjc5NSw3ICsyNzkxLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNp
dGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKICAgICAgICAgaWYgKHZhbC0+dW5pdCA9PSBD
U1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgJiYgdmFsLT5pVmFsdWUgPT0gJywnKSB7CiAgICAgICAg
ICAgICAvLyBXZSBoaXQgdGhlIGVuZC4gIEZpbGwgaW4gYWxsIHJlbWFpbmluZyB2YWx1ZXMgd2l0
aCB0aGUgaW5pdGlhbCB2YWx1ZS4KICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7Ci0g
ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CisgICAgICAg
ICAgICBmb3IgKGkgPSAwOyB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKVtpXSAhPSBDU1NQcm9w
ZXJ0eUludmFsaWQ7ICsraSkgewogICAgICAgICAgICAgICAgIGlmICghcGFyc2VkUHJvcGVydHlb
aV0pCiAgICAgICAgICAgICAgICAgICAgIGFkZEFuaW1hdGlvblZhbHVlKHZhbHVlc1tpXSwgY3Nz
VmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOwogICAgICAgICAgICAg
ICAgIHBhcnNlZFByb3BlcnR5W2ldID0gZmFsc2U7CkBAIC0yODA1LDEwICsyODAxLDEwIEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiAg
ICAgICAgIH0KIAogICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAoaSA9
IDA7ICFmb3VuZCAmJiBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CisgICAgICAgIGZvciAoaSA9
IDA7ICFmb3VuZCAmJiB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKVtpXSAhPSBDU1NQcm9wZXJ0
eUludmFsaWQ7ICsraSkgewogICAgICAgICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtpXSkgewog
ICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsOwotICAgICAgICAgICAgICAgIGlm
IChwYXJzZUFuaW1hdGlvblByb3BlcnR5KHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpLnByb3Bl
cnRpZXMoKVtpXSwgdmFsKSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZUFuaW1hdGlvblBy
b3BlcnR5KHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpW2ldLCB2YWwpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHBhcnNlZFByb3BlcnR5W2ldID0gZm91bmQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICBhZGRBbmltYXRpb25WYWx1ZSh2YWx1ZXNbaV0sIHZhbC5yZWxlYXNlKCkpOwogICAg
ICAgICAgICAgICAgIH0KQEAgLTI4MjIsMTkgKzI4MTgsMTkgQEAgYm9vbCBDU1NQYXJzZXI6OnBh
cnNlVHJhbnNpdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKICAgICB9CiAKICAgICAvLyBG
aWxsIGluIGFueSByZW1haW5pbmcgcHJvcGVydGllcyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgot
ICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKKyAgICBmb3IgKGkgPSAw
OyB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKVtpXSAhPSBDU1NQcm9wZXJ0eUludmFsaWQ7ICsr
aSkgewogICAgICAgICBpZiAoIXBhcnNlZFByb3BlcnR5W2ldKQogICAgICAgICAgICAgYWRkQW5p
bWF0aW9uVmFsdWUodmFsdWVzW2ldLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0
aWFsVmFsdWUoKSk7CiAgICAgfQogCiAgICAgLy8gTm93IGFkZCBhbGwgb2YgdGhlIHByb3BlcnRp
ZXMgd2UgZm91bmQuCi0gICAgZm9yIChpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykKLSAg
ICAgICAgYWRkUHJvcGVydHkod2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkucHJvcGVydGllcygp
W2ldLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQpOworICAgIGZvciAoaSA9IDA7IHdl
YmtpdFRyYW5zaXRpb25Mb25naGFuZCgpW2ldICE9IENTU1Byb3BlcnR5SW52YWxpZDsgaSsrKQor
ICAgICAgICBhZGRQcm9wZXJ0eSh3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKVtpXSwgdmFsdWVz
W2ldLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgbG9uZ2hhbmQsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNl
U2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcywgYm9v
bCBpbXBvcnRhbnQpCiB7CiAgICAgLy8gV2UgdHJ5IHRvIG1hdGNoIGFzIG1hbnkgcHJvcGVydGll
cyBhcyBwb3NzaWJsZQogICAgIC8vIFdlIHNldCB1cCBhbiBhcnJheSBvZiBib29sZWFucyB0byBt
YXJrIHdoaWNoIHByb3BlcnR5IGhhcyBiZWVuIGZvdW5kLApAQCAtMjg0MiwxNiArMjgzOCwxMyBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgbG9uZ2hhbmQsCiAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywg
cHJvcElkKTsKIAogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBwcm9wZXJ0
aWVzUGFyc2VkID0gMDsKICAgICBib29sIHByb3BlcnR5Rm91bmRbNl09IHsgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSB9OyAvLyA2IGlzIGVub3VnaCBzaXplLgogCiAg
ICAgd2hpbGUgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpIHsKICAgICAgICAgZm91bmQgPSBmYWxz
ZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBwcm9wSW5kZXggPSAwOyAhZm91bmQgJiYgcHJvcElu
ZGV4IDwgbG9uZ2hhbmQubGVuZ3RoKCk7ICsrcHJvcEluZGV4KSB7Ci0gICAgICAgICAgICBpZiAo
IXByb3BlcnR5Rm91bmRbcHJvcEluZGV4XSAmJiBwYXJzZVZhbHVlKGxvbmdoYW5kLnByb3BlcnRp
ZXMoKVtwcm9wSW5kZXhdLCBpbXBvcnRhbnQpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgcHJv
cEluZGV4ID0gMDsgIWZvdW5kICYmIGxvbmdoYW5kc1twcm9wSW5kZXhdICE9IENTU1Byb3BlcnR5
SW52YWxpZDsgKytwcm9wSW5kZXgpIHsKKyAgICAgICAgICAgIGlmICghcHJvcGVydHlGb3VuZFtw
cm9wSW5kZXhdICYmIHBhcnNlVmFsdWUobG9uZ2hhbmRzW3Byb3BJbmRleF0sIGltcG9ydGFudCkp
CiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5Rm91bmRbcHJvcEluZGV4XSA9IGZvdW5kID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllc1BhcnNlZCsrOwotICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKICAgICAgICAgLy8gaWYgd2UgZGlkbid0IGZpbmQgYXQgbGVhc3Qg
b25lIG1hdGNoLCB0aGlzIGlzIGFuCkBAIC0yODYwLDI4ICsyODUzLDI0IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiBsb25naGFuZCwKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAo
cHJvcGVydGllc1BhcnNlZCA9PSBsb25naGFuZC5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KICAgICAvLyBGaWxsIGluIGFueSByZW1haW5pbmcgcHJvcGVydGllcyB3aXRoIHRoZSBp
bml0aWFsIHZhbHVlLgogICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9w
ZXJ0eUltcGxpY2l0KTsKLSAgICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kKiBjb25zdCogY29u
c3QgbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24gPSBsb25naGFuZC5sb25naGFuZHNGb3JJbml0
aWFsaXphdGlvbigpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsb25naGFuZC5sZW5n
dGgoKTsgKytpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgbG9uZ2hhbmRzW2ldICE9IENT
U1Byb3BlcnR5SW52YWxpZDsgKytpKSB7CiAgICAgICAgIGlmIChwcm9wZXJ0eUZvdW5kW2ldKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKGxvbmdoYW5kc0ZvckluaXRpYWxp
emF0aW9uKSB7Ci0gICAgICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBpbml0TG9u
Z2hhbmQgPSAqKGxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uW2ldKTsKLSAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgcHJvcEluZGV4ID0gMDsgcHJvcEluZGV4IDwgaW5pdExvbmdoYW5kLmxlbmd0
aCgpOyArK3Byb3BJbmRleCkKLSAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eShpbml0TG9uZ2hh
bmQucHJvcGVydGllcygpW3Byb3BJbmRleF0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNp
dEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOworICAgICAgICBpZiAocHJvcElkID09IENTU1By
b3BlcnR5Qm9yZGVyKSB7CisgICAgICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEKiBpbml0TG9u
Z2hhbmRzID0gYm9yZGVyTG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24oKVtpXTsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgcHJvcEluZGV4ID0gMDsgaW5pdExvbmdoYW5kcyAmJiBpbml0TG9u
Z2hhbmRzW3Byb3BJbmRleF0gIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyArK3Byb3BJbmRleCkKKyAg
ICAgICAgICAgICAgICBhZGRQcm9wZXJ0eShpbml0TG9uZ2hhbmRzW3Byb3BJbmRleF0sIGNzc1Zh
bHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwogICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KGxvbmdoYW5kLnByb3BlcnRpZXMo
KVtpXSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCksIGltcG9y
dGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShsb25naGFuZHNbaV0sIGNzc1ZhbHVlUG9v
bCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwogICAgIH0KIAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKGludCBw
cm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlNFZhbHVlcyhpbnQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUlEICpwcm9w
ZXJ0aWVzLCAgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgLyogRnJvbSB0aGUgQ1NTIDIgc3BlY3Ms
IDguMwogICAgICAqIElmIHRoZXJlIGlzIG9ubHkgb25lIHZhbHVlLCBpdCBhcHBsaWVzIHRvIGFs
bCBzaWRlcy4gSWYgdGhlcmUgYXJlIHR3byB2YWx1ZXMsIHRoZSB0b3AgYW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmgKaW5kZXggMWFlNjcwMzRiNDU0OTM4ZWQyMmEzMzUzOGNhZDFkNjgwYThhNTkzNC4u
YWFjM2RjNWU2MGVhMWI3MjM4ZDAxMzk2ZGU3ZjU1N2JmZDQ2MTU1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKICNp
bmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgorI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURh
dGEuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCkBAIC00
Niw3ICs0Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTQm9yZGVySW1hZ2VT
bGljZVZhbHVlOwogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7Ci1jbGFzcyBDU1NQcm9wZXJ0eUxv
bmdoYW5kOwogY2xhc3MgQ1NTVmFsdWVQb29sOwogY2xhc3MgQ1NTUHJvcGVydHk7CiBjbGFzcyBD
U1NSdWxlOwpAQCAtOTIsOCArOTIsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQcm9wZXJ0aWVz
KCkgY29uc3QgeyByZXR1cm4gIW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5KCk7IH0KIAogICAg
IGJvb2wgcGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7Ci0gICAgYm9vbCBw
YXJzZVNob3J0aGFuZChpbnQsIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmLCBib29sKTsKLSAg
ICBib29sIHBhcnNlNFZhbHVlcyhpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMsIGJv
b2wgaW1wb3J0YW50KTsKKyAgICBib29sIHBhcnNlU2hvcnRoYW5kKGludCwgY29uc3QgQ1NTUHJv
cGVydHlJRCosIGJvb2wpOworICAgIGJvb2wgcGFyc2U0VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0
IENTU1Byb3BlcnR5SUQqIHByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBh
cnNlQ29udGVudChpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZVF1
b3RlcyhpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHkuY3BwCmluZGV4IGFiMTA0MzkxOTJmOGFmY2RkNGQ0YTgzNzE3ZGIyMjMyZGQzY2E0NmEuLmVk
ZDUwZGE5NzBmNjg5Nzk2ZDFmMGI1NzA3NjI3ZmQ2NTEzZGVkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5LmNwcApAQCAtMzYsMjYgKzM2LDI2IEBAIFN0cmluZyBDU1NQcm9wZXJ0eTo6Y3Nz
VGV4dCgpIGNvbnN0CiBlbnVtIExvZ2ljYWxCb3hTaWRlIHsgQmVmb3JlU2lkZSwgRW5kU2lkZSwg
QWZ0ZXJTaWRlLCBTdGFydFNpZGUgfTsKIGVudW0gUGh5c2ljYWxCb3hTaWRlIHsgVG9wU2lkZSwg
UmlnaHRTaWRlLCBCb3R0b21TaWRlLCBMZWZ0U2lkZSB9OwogCi1zdGF0aWMgaW50IHJlc29sdmVU
b1BoeXNpY2FsUHJvcGVydHkoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdy
aXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZSBsb2dpY2FsU2lkZSwgY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgbG9uZ2hhbmQpCitzdGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHko
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2Fs
Qm94U2lkZSBsb2dpY2FsU2lkZSwgY29uc3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzKQogewog
ICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKSB7CiAgICAgICAgIGlmICh3cml0aW5nTW9kZSA9PSBU
b3BUb0JvdHRvbVdyaXRpbmdNb2RlKSB7CiAgICAgICAgICAgICAvLyBUaGUgY29tbW9uIGNhc2Uu
IFRoZSBsb2dpY2FsIGFuZCBwaHlzaWNhbCBib3ggc2lkZXMgbWF0Y2guCiAgICAgICAgICAgICAv
LyBMZWZ0ID0gU3RhcnQsIFJpZ2h0ID0gRW5kLCBCZWZvcmUgPSBUb3AsIEFmdGVyID0gQm90dG9t
Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW2xvZ2ljYWxTaWRlXTsK
KyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNbbG9naWNhbFNpZGVdOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUpIHsKICAg
ICAgICAgICAgIC8vIFN0YXJ0ID0gTGVmdCwgRW5kID0gUmlnaHQsIEJlZm9yZSA9IEJvdHRvbSwg
QWZ0ZXIgPSBUb3AuCiAgICAgICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7CiAgICAgICAg
ICAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJv
cGVydGllcygpW0xlZnRTaWRlXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW0xl
ZnRTaWRlXTsKICAgICAgICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgICAgICByZXR1
cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07CisgICAgICAgICAgICAgICAgcmV0
dXJuIGxvbmdoYW5kc1tSaWdodFNpZGVdOwogICAgICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgot
ICAgICAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07
CisgICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tCb3R0b21TaWRlXTsKICAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMo
KVtUb3BTaWRlXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW1RvcFNpZGVdOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTYzLDI2ICs2MywyNiBAQCBzdGF0aWMgaW50
IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRp
bmdNb2RlIHdyaXRpbgogICAgICAgICAgICAgLy8gU3RhcnQgPSBUb3AsIEVuZCA9IEJvdHRvbSwg
QmVmb3JlID0gTGVmdCwgQWZ0ZXIgPSBSaWdodC4KICAgICAgICAgICAgIHN3aXRjaCAobG9naWNh
bFNpZGUpIHsKICAgICAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgICAgIHJl
dHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CisgICAgICAgICAgICAgICAgcmV0
dXJuIGxvbmdoYW5kc1tUb3BTaWRlXTsKICAgICAgICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOworICAg
ICAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNbQm90dG9tU2lkZV07CiAgICAgICAgICAgICBj
YXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRp
ZXMoKVtMZWZ0U2lkZV07CisgICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tMZWZ0U2lk
ZV07CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBsb25naGFu
ZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hh
bmRzW1JpZ2h0U2lkZV07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLyBT
dGFydCA9IFRvcCwgRW5kID0gQm90dG9tLCBCZWZvcmUgPSBSaWdodCwgQWZ0ZXIgPSBMZWZ0CiAg
ICAgICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKICAgICAgICAgY2FzZSBTdGFydFNpZGU6Ci0g
ICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOworICAgICAg
ICAgICAgcmV0dXJuIGxvbmdoYW5kc1tUb3BTaWRlXTsKICAgICAgICAgY2FzZSBFbmRTaWRlOgot
ICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKKyAg
ICAgICAgICAgIHJldHVybiBsb25naGFuZHNbQm90dG9tU2lkZV07CiAgICAgICAgIGNhc2UgQmVm
b3JlU2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRT
aWRlXTsKKyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNbUmlnaHRTaWRlXTsKICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNp
ZGVdOworICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tMZWZ0U2lkZV07CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTkwLDEzICs5MCwxMyBAQCBzdGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2Fs
UHJvcGVydHkoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbgogICAg
ICAgICAvLyBTdGFydCA9IFJpZ2h0LCBFbmQgPSBMZWZ0LCBCZWZvcmUgPSBUb3AsIEFmdGVyID0g
Qm90dG9tCiAgICAgICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKICAgICAgICAgY2FzZSBTdGFy
dFNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1JpZ2h0U2lk
ZV07CisgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW1JpZ2h0U2lkZV07CiAgICAgICAgIGNh
c2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbTGVm
dFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tMZWZ0U2lkZV07CiAgICAgICAg
IGNhc2UgQmVmb3JlU2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVz
KClbVG9wU2lkZV07CisgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW1RvcFNpZGVdOwogICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtC
b3R0b21TaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNbQm90dG9tU2lkZV07CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTEwNCwxMyArMTA0LDEzIEBAIHN0YXRpYyBpbnQgcmVzb2x2
ZVRvUGh5c2ljYWxQcm9wZXJ0eShUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgV3JpdGluZ01vZGUg
d3JpdGluCiAgICAgICAgIC8vIFN0YXJ0ID0gUmlnaHQsIEVuZCA9IExlZnQsIEJlZm9yZSA9IEJv
dHRvbSwgQWZ0ZXIgPSBUb3AKICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewogICAgICAg
ICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVz
KClbUmlnaHRTaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNbUmlnaHRTaWRlXTsK
ICAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3Bl
cnRpZXMoKVtMZWZ0U2lkZV07CisgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW0xlZnRTaWRl
XTsKICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5k
LnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNb
Qm90dG9tU2lkZV07CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hh
bmQucHJvcGVydGllcygpW1RvcFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tU
b3BTaWRlXTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTE4LDQyICsxMTgsNDEgQEAgc3RhdGlj
IGludCByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBX
cml0aW5nTW9kZSB3cml0aW4KICAgICAgICAgLy8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwg
QmVmb3JlID0gTGVmdCwgQWZ0ZXIgPSBSaWdodAogICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRl
KSB7CiAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5k
LnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNb
Qm90dG9tU2lkZV07CiAgICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBs
b25naGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CisgICAgICAgICAgICByZXR1cm4gbG9uZ2hh
bmRzW1RvcFNpZGVdOwogICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1
cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBs
b25naGFuZHNbTGVmdFNpZGVdOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJu
IGxvbmdoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIGxv
bmdoYW5kc1tSaWdodFNpZGVdOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gU3RhcnQgPSBC
b3R0b20sIEVuZCA9IFRvcCwgQmVmb3JlID0gUmlnaHQsIEFmdGVyID0gTGVmdAogICAgIHN3aXRj
aCAobG9naWNhbFNpZGUpIHsKICAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgcmV0dXJuIGxv
bmdoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKKyAgICAgICAgcmV0dXJuIGxvbmdoYW5k
c1tCb3R0b21TaWRlXTsKICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgIHJldHVybiBsb25naGFu
ZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CisgICAgICAgIHJldHVybiBsb25naGFuZHNbVG9wU2lk
ZV07CiAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVy
dGllcygpW1JpZ2h0U2lkZV07CisgICAgICAgIHJldHVybiBsb25naGFuZHNbUmlnaHRTaWRlXTsK
ICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0xlZnRT
aWRlXTsKKyAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tMZWZ0U2lkZV07CiAgICAgfQogfQogCiBl
bnVtIExvZ2ljYWxFeHRlbnQgeyBMb2dpY2FsV2lkdGgsIExvZ2ljYWxIZWlnaHQgfTsKIAotc3Rh
dGljIGludCByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2Rl
LCBMb2dpY2FsRXh0ZW50IGxvZ2ljYWxTaWRlLCBjb25zdCBpbnQqIHByb3BlcnRpZXMpCitzdGF0
aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUs
IExvZ2ljYWxFeHRlbnQgbG9naWNhbFNpZGUsIGNvbnN0IENTU1Byb3BlcnR5SUQqIHByb3BlcnRp
ZXMpCiB7CiAgICAgaWYgKHdyaXRpbmdNb2RlID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUgfHwg
d3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0aW5nTW9kZSkKICAgICAgICAgcmV0dXJuIHBy
b3BlcnRpZXNbbG9naWNhbFNpZGVdOwogICAgIHJldHVybiBsb2dpY2FsU2lkZSA9PSBMb2dpY2Fs
V2lkdGggPyBwcm9wZXJ0aWVzWzFdIDogcHJvcGVydGllc1swXTsKIH0KIAotc3RhdGljIGNvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckRpcmVjdGlvbnMoKQorc3RhdGljIGNvbnN0IENT
U1Byb3BlcnR5SUQqIGJvcmRlckRpcmVjdGlvbnMoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQg
cHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3AsIENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHQsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnQgfTsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlckRpcmVj
dGlvbnMsIChwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpKSk7CisgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyRGlyZWN0aW9uc1tdID0geyBDU1NQcm9w
ZXJ0eUJvcmRlclRvcCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodCwgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b20sIENTU1Byb3BlcnR5Qm9yZGVyTGVmdCB9OwogICAgIHJldHVybiBib3JkZXJEaXJlY3Rp
b25zOwogfQogCkBAIC0yMDksMjcgKzIwOCwyNyBAQCBpbnQgQ1NTUHJvcGVydHk6OnJlc29sdmVE
aXJlY3Rpb25Bd2FyZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBUZXh0RGlyZWN0aW9uIGRpcgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoOgogICAgICAgICByZXR1
cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBBZnRl
clNpZGUsIGJvcmRlcldpZHRoTG9uZ2hhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dExvZ2ljYWxXaWR0aDogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NT
UHJvcGVydHlXaWR0aCwgQ1NTUHJvcGVydHlIZWlnaHQgfTsKKyAgICAgICAgY29uc3QgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdpZHRoLCBDU1NQcm9wZXJ0eUhl
aWdodCB9OwogICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eSh3cml0aW5n
TW9kZSwgTG9naWNhbFdpZHRoLCBwcm9wZXJ0aWVzKTsKICAgICB9CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQ6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNb
Ml0gPSB7IENTU1Byb3BlcnR5V2lkdGgsIENTU1Byb3BlcnR5SGVpZ2h0IH07CisgICAgICAgIGNv
bnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXaWR0aCwgQ1NT
UHJvcGVydHlIZWlnaHQgfTsKICAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVy
dHkod3JpdGluZ01vZGUsIExvZ2ljYWxIZWlnaHQsIHByb3BlcnRpZXMpOwogICAgIH0KICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoOiB7Ci0gICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eU1pbldpZHRoLCBDU1NQcm9wZXJ0eU1pbkhl
aWdodCB9OworICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNbMl0gPSB7IENT
U1Byb3BlcnR5TWluV2lkdGgsIENTU1Byb3BlcnR5TWluSGVpZ2h0IH07CiAgICAgICAgIHJldHVy
biByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KHdyaXRpbmdNb2RlLCBMb2dpY2FsV2lkdGgsIHBy
b3BlcnRpZXMpOwogICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhl
aWdodDogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlN
aW5XaWR0aCwgQ1NTUHJvcGVydHlNaW5IZWlnaHQgfTsKKyAgICAgICAgY29uc3QgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eU1pbldpZHRoLCBDU1NQcm9wZXJ0eU1p
bkhlaWdodCB9OwogICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eSh3cml0
aW5nTW9kZSwgTG9naWNhbEhlaWdodCwgcHJvcGVydGllcyk7CiAgICAgfQogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXhMb2dpY2FsV2lkdGg6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3Bl
cnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5TWF4V2lkdGgsIENTU1Byb3BlcnR5TWF4SGVpZ2h0IH07
CisgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVy
dHlNYXhXaWR0aCwgQ1NTUHJvcGVydHlNYXhIZWlnaHQgfTsKICAgICAgICAgcmV0dXJuIHJlc29s
dmVUb1BoeXNpY2FsUHJvcGVydHkod3JpdGluZ01vZGUsIExvZ2ljYWxXaWR0aCwgcHJvcGVydGll
cyk7CiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0OiB7
Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eU1heFdpZHRo
LCBDU1NQcm9wZXJ0eU1heEhlaWdodCB9OworICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5TWF4V2lkdGgsIENTU1Byb3BlcnR5TWF4SGVpZ2h0
IH07CiAgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KHdyaXRpbmdNb2Rl
LCBMb2dpY2FsSGVpZ2h0LCBwcm9wZXJ0aWVzKTsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAppbmRleCA3YzEyZDljM2I1OTk2
ZThhZjQ0MDgwOGExYjUzZDRiMzgyZWVkZjBhLi4zNTFjMjhkN2Q3NTUwYzFmNGM3OGQ0ZDMwZTFh
ZWQ2OWQ0NTE1NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlM
b25naGFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQu
Y3BwCkBAIC0yMSwxNSArMjEsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
U1NQcm9wZXJ0eUxvbmdoYW5kLmgiCiAKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8v
IEZJWE1FOiBBZGQgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSB0byB0aGUgc2hvcnRoYW5kLgot
Y29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3VuZExvbmdoYW5kKCkKK2NvbnN0IENT
U1Byb3BlcnR5SUQqIGJhY2tncm91bmRMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGlu
dCBiYWNrZ3JvdW5kUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0
eUlEIGJhY2tncm91bmRQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yLAogICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwKICAgICAgICAg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwKQEAgLTM4LDMwNiArMzcsMjkyIEBAIGNvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRMb25naGFuZCgpCiAgICAgICAgIENTU1By
b3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwKICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UG9zaXRpb25ZLAogICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLAotICAgICAgICBD
U1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4KKyAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
T3JpZ2luLAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYmFja2dyb3VuZExvbmdoYW5kLCAoYmFj
a2dyb3VuZFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYmFja2dyb3VuZFByb3BlcnRpZXMp
KSk7Ci0gICAgcmV0dXJuIGJhY2tncm91bmRMb25naGFuZDsKKyAgICByZXR1cm4gYmFja2dyb3Vu
ZFByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRQ
b3NpdGlvbkxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJhY2tncm91bmRQb3NpdGlv
bkxvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJhY2tncm91bmRQb3NpdGlvblBy
b3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblkgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3Bl
cnR5TG9uZ2hhbmQsIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kLCAoYmFja2dyb3VuZFBvc2l0
aW9uUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0
aWVzKSkpOwotICAgIHJldHVybiBiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZDsKKyAgICBzdGF0
aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzW10gPSB7
IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb25ZLCBDU1NQcm9wZXJ0eUludmFsaWQgfTsKKyAgICByZXR1cm4gYmFja2dyb3VuZFBvc2l0
aW9uUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3Vu
ZFJlcGVhdExvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJhY2tncm91bmRSZXBlYXRM
b25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXRZIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdo
YW5kLCBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQsIChiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllcykpKTsKLSAgICBy
ZXR1cm4gYmFja2dyb3VuZFJlcGVhdExvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9w
ZXJ0eUlEIGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5QmFja2dy
b3VuZFJlcGVhdFgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFksIENTU1Byb3BlcnR5SW52
YWxpZCB9OworICAgIHJldHVybiBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllczsKIH0KIAotY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyTG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVy
dHlJRCogYm9yZGVyTG9uZ2hhbmRFeHBhbmRlZCgpCiB7CiAgICAgLy8gRG8gbm90IGNoYW5nZSB0
aGUgb3JkZXIgb2YgdGhlIGZvbGxvd2luZyBmb3VyIHNob3J0aGFuZHMsIGFuZCBrZWVwIHRoZW0g
dG9nZXRoZXIuCi0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJQcm9wZXJ0aWVzWzRdWzNdID0g
ewotICAgICAgICB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVy
VG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGggfSwKLSAgICAgICAgeyBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodFdpZHRoIH0sCi0gICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21Db2xvciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21XaWR0aCB9LAotICAgICAgICB7IENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yLCBDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGggfQotICAg
IH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJM
b25naGFuZCwgKGJvcmRlclByb3BlcnRpZXNbMF0sIHNpemVvZihib3JkZXJQcm9wZXJ0aWVzKSAv
IHNpemVvZihib3JkZXJQcm9wZXJ0aWVzWzBdWzBdKSkpOwotICAgIHJldHVybiBib3JkZXJMb25n
aGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJQcm9wZXJ0aWVzW10g
PSB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xv
ciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRD
b2xvciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdp
ZHRoLCBDU1NQcm9wZXJ0eUludmFsaWQgfTsKKyAgICByZXR1cm4gYm9yZGVyUHJvcGVydGllczsK
IH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyQWJyaWRnZWRMb25naGFuZCgp
Citjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNv
bnN0IGludCBib3JkZXJBYnJpZGdlZFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJX
aWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciB9Owot
ICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kKiBwcm9wZXJ0aWVzRm9ySW5pdGlh
bGl6YXRpb25bXSA9IHsKLSAgICAgICAgJmJvcmRlcldpZHRoTG9uZ2hhbmQoKSwKLSAgICAgICAg
JmJvcmRlclN0eWxlTG9uZ2hhbmQoKSwKLSAgICAgICAgJmJvcmRlckNvbG9yTG9uZ2hhbmQoKSwK
LSAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9y
ZGVyQWJyaWRnZWRMb25naGFuZCwKLSAgICAgICAgKGJvcmRlckFicmlkZ2VkUHJvcGVydGllcywg
cHJvcGVydGllc0ZvckluaXRpYWxpemF0aW9uLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckFicmlk
Z2VkUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyQWJyaWRnZWRMb25naGFuZDsKKyAg
ICAvLyBEbyBub3QgY2hhbmdlIHRoZSBvcmRlciBvZiB0aGUgZm9sbG93aW5nIGZvdXIgc2hvcnRo
YW5kcywgYW5kIGtlZXAgdGhlbSB0b2dldGhlci4KKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVy
dHlJRCBib3JkZXJQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIENTU1By
b3BlcnR5Qm9yZGVyU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIENTU1Byb3BlcnR5SW52
YWxpZCB9OworICAgIHJldHVybiBib3JkZXJQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBib3JkZXJCb3R0b21Mb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlE
KiogYm9yZGVyTG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24oKQogewotICAgIHN0YXRpYyBjb25z
dCBpbnQgYm9yZGVyQm90dG9tUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbUNvbG9yIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCBib3JkZXJCb3R0b21Mb25naGFuZCwgKGJvcmRlckJvdHRvbVByb3BlcnRpZXMsIFdURl9BUlJB
WV9MRU5HVEgoYm9yZGVyQm90dG9tUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyQm90
dG9tTG9uZ2hhbmQ7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlckxvbmdo
YW5kc0ZvckluaXRpYWxpemF0aW9uW10gPSB7CisgICAgICAgICAgICBib3JkZXJXaWR0aExvbmdo
YW5kKCksCisgICAgICAgICAgICBib3JkZXJTdHlsZUxvbmdoYW5kKCksCisgICAgICAgICAgICBi
b3JkZXJDb2xvckxvbmdoYW5kKCksCisgICAgICAgICAgICAwCisgICAgICAgIH07CisgICAgcmV0
dXJuIGJvcmRlckxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uOwogfQogCi1jb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBib3JkZXJDb2xvckxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQq
IGJvcmRlckJvdHRvbUxvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckNv
bG9yUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRl
ckJvdHRvbVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwg
Q1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIGJvcmRlckJvdHRvbVByb3BlcnRpZXM7
Cit9CisKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlckNvbG9yTG9uZ2hhbmQoKQoreworICAg
IHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckNvbG9yUHJvcGVydGllc1tdID0gewog
ICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLAogICAgICAgICBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0Q29sb3IsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsCi0g
ICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yCisgICAgICAgIENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdENvbG9yLAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyQ29sb3JMb25naGFu
ZCwgKGJvcmRlckNvbG9yUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJDb2xvclBy
b3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlckNvbG9yTG9uZ2hhbmQ7CisgICAgcmV0dXJu
IGJvcmRlckNvbG9yUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
Ym9yZGVySW1hZ2VMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJJbWFnZUxv
bmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckltYWdlUHJvcGVydGllc1td
ID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckltYWdlUHJvcGVydGll
c1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlLAogICAgICAgICBD
U1NQcm9wZXJ0eUJvcmRlckltYWdlU2xpY2UsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2VXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNldCwKLSAgICAgICAg
Q1NTUHJvcGVydHlCb3JkZXJJbWFnZVJlcGVhdAorICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlcklt
YWdlUmVwZWF0LAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVySW1hZ2VMb25naGFuZCwg
KGJvcmRlckltYWdlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJJbWFnZVByb3Bl
cnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlckltYWdlTG9uZ2hhbmQ7CisgICAgcmV0dXJuIGJv
cmRlckltYWdlUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9y
ZGVyTGVmdExvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlckxlZnRMb25naGFu
ZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJMZWZ0UHJvcGVydGllc1tdID0geyBD
U1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENT
U1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQ
cm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJMZWZ0TG9uZ2hhbmQsIChib3JkZXJMZWZ0UHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJMZWZ0UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4g
Ym9yZGVyTGVmdExvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRl
ckxlZnRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBDU1NQcm9w
ZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IsIENTU1Byb3Bl
cnR5SW52YWxpZCB9OworICAgIHJldHVybiBib3JkZXJMZWZ0UHJvcGVydGllczsKIH0KIAotY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyUmFkaXVzTG9uZ2hhbmQoKQorY29uc3QgQ1NT
UHJvcGVydHlJRCogYm9yZGVyUmFkaXVzTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBp
bnQgYm9yZGVyUmFkaXVzUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9w
ZXJ0eUlEIGJvcmRlclJhZGl1c1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJUb3BSaWdodFJhZGl1cywKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFk
aXVzLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsCi0gICAgICAg
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMKKyAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21SaWdodFJhZGl1cywKKyAgICAgICAgQ1NTUHJvcGVydHlJbnZhbGlkCiAgICAg
fTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlclJh
ZGl1c0xvbmdoYW5kLCAoYm9yZGVyUmFkaXVzUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChi
b3JkZXJSYWRpdXNQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBib3JkZXJSYWRpdXNMb25naGFu
ZDsKKyAgICByZXR1cm4gYm9yZGVyUmFkaXVzUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgYm9yZGVyUmlnaHRMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlE
KiBib3JkZXJSaWdodExvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclJp
Z2h0UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJSaWdodExvbmdo
YW5kLCAoYm9yZGVyUmlnaHRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclJpZ2h0
UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyUmlnaHRMb25naGFuZDsKKyAgICBzdGF0
aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJSaWdodFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJu
IGJvcmRlclJpZ2h0UHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
Ym9yZGVyU3BhY2luZ0xvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlclNwYWNp
bmdMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJTcGFjaW5nUHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyB9OwotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyU3BhY2luZ0xvbmdoYW5kLCAoYm9yZGVy
U3BhY2luZ1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyU3BhY2luZ1Byb3BlcnRp
ZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlclNwYWNpbmdMb25naGFuZDsKKyAgICBzdGF0aWMgY29u
c3QgQ1NTUHJvcGVydHlJRCBib3JkZXJTcGFjaW5nUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZl
cnRpY2FsU3BhY2luZywgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIGJvcmRlclNw
YWNpbmdQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJT
dHlsZUxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlclN0eWxlTG9uZ2hhbmQo
KQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyU3R5bGVQcm9wZXJ0aWVzW10gPSB7Cisg
ICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyU3R5bGVQcm9wZXJ0aWVzW10gPSB7
CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsCiAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRTdHlsZSwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwK
LSAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUKKyAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0U3R5bGUsCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJTdHlsZUxvbmdo
YW5kLCAoYm9yZGVyU3R5bGVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclN0eWxl
UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyU3R5bGVMb25naGFuZDsKKyAgICByZXR1
cm4gYm9yZGVyU3R5bGVQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiBib3JkZXJUb3BMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJUb3BMb25n
aGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJUb3BQcm9wZXJ0aWVzW10gPSB7
IENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENT
U1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1By
b3BlcnR5TG9uZ2hhbmQsIGJvcmRlclRvcExvbmdoYW5kLCAoYm9yZGVyVG9wUHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSChib3JkZXJUb3BQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBib3Jk
ZXJUb3BMb25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJUb3BQ
cm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9y
ZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5SW52YWxp
ZCB9OworICAgIHJldHVybiBib3JkZXJUb3BQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBib3JkZXJXaWR0aExvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQq
IGJvcmRlcldpZHRoTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyV2lk
dGhQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVy
V2lkdGhQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgs
CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21XaWR0aCwKLSAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgK
KyAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsCisgICAgICAgIENTU1Byb3BlcnR5
SW52YWxpZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdo
YW5kLCBib3JkZXJXaWR0aExvbmdoYW5kLCAoYm9yZGVyV2lkdGhQcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKGJvcmRlcldpZHRoUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyV2lk
dGhMb25naGFuZDsKKyAgICByZXR1cm4gYm9yZGVyV2lkdGhQcm9wZXJ0aWVzOwogfQogCi1jb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsaXN0U3R5bGVMb25naGFuZCgpCitjb25zdCBDU1NQcm9w
ZXJ0eUlEKiBsaXN0U3R5bGVMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBsaXN0
U3R5bGVQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgbGlz
dFN0eWxlUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUs
CiAgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sCi0gICAgICAgIENTU1Byb3Bl
cnR5TGlzdFN0eWxlSW1hZ2UKKyAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwKKyAg
ICAgICAgQ1NTUHJvcGVydHlJbnZhbGlkCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KENTU1Byb3BlcnR5TG9uZ2hhbmQsIGxpc3RTdHlsZUxvbmdoYW5kLCAobGlzdFN0eWxlUHJvcGVy
dGllcywgV1RGX0FSUkFZX0xFTkdUSChsaXN0U3R5bGVQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVy
biBsaXN0U3R5bGVMb25naGFuZDsKKyAgICByZXR1cm4gbGlzdFN0eWxlUHJvcGVydGllczsKIH0K
IAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgZm9udExvbmdoYW5kKCkKK2NvbnN0IENTU1By
b3BlcnR5SUQqIGZvbnRMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBmb250UHJv
cGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGZvbnRQcm9wZXJ0
aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Rm9udEZhbWlseSwKICAgICAgICAgQ1NTUHJv
cGVydHlGb250U2l6ZSwKICAgICAgICAgQ1NTUHJvcGVydHlGb250U3R5bGUsCiAgICAgICAgIENT
U1Byb3BlcnR5Rm9udFZhcmlhbnQsCiAgICAgICAgIENTU1Byb3BlcnR5Rm9udFdlaWdodCwKLSAg
ICAgICAgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0CisgICAgICAgIENTU1Byb3BlcnR5TGluZUhlaWdo
dCwKKyAgICAgICAgQ1NTUHJvcGVydHlJbnZhbGlkCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGZvbnRMb25naGFuZCwgKGZvbnRQcm9wZXJ0aWVz
LCBXVEZfQVJSQVlfTEVOR1RIKGZvbnRQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBmb250TG9u
Z2hhbmQ7CisgICAgcmV0dXJuIGZvbnRQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiBtYXJnaW5Mb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiBtYXJnaW5M
b25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBtYXJnaW5Qcm9wZXJ0aWVzW10gPSB7
CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgbWFyZ2luUHJvcGVydGllc1tdID0gewog
ICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpblRvcCwKICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5S
aWdodCwKICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sCi0gICAgICAgIENTU1Byb3Bl
cnR5TWFyZ2luTGVmdAorICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsCisgICAgICAgIENT
U1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9w
ZXJ0eUxvbmdoYW5kLCBtYXJnaW5Mb25naGFuZCwgKG1hcmdpblByb3BlcnRpZXMsIFdURl9BUlJB
WV9MRU5HVEgobWFyZ2luUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gbWFyZ2luTG9uZ2hhbmQ7
CisgICAgcmV0dXJuIG1hcmdpblByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9u
Z2hhbmQmIG91dGxpbmVMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiBvdXRsaW5lTG9u
Z2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgb3V0bGluZVByb3BlcnRpZXNbXSA9IHsK
KyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBvdXRsaW5lUHJvcGVydGllc1tdID0gewog
ICAgICAgICBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwKICAgICAgICAgQ1NTUHJvcGVydHlPdXRs
aW5lU3R5bGUsCi0gICAgICAgIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoCisgICAgICAgIENTU1By
b3BlcnR5T3V0bGluZVdpZHRoLAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9Owot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgb3V0bGluZUxvbmdo
YW5kLCAob3V0bGluZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgob3V0bGluZVByb3BlcnRp
ZXMpKSk7Ci0gICAgcmV0dXJuIG91dGxpbmVMb25naGFuZDsKKyAgICByZXR1cm4gb3V0bGluZVBy
b3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIG92ZXJmbG93TG9uZ2hh
bmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogb3ZlcmZsb3dMb25naGFuZCgpCiB7Ci0gICAgc3Rh
dGljIGNvbnN0IGludCBvdmVyZmxvd1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlPdmVyZmxv
d1gsIENTU1Byb3BlcnR5T3ZlcmZsb3dZIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQ
cm9wZXJ0eUxvbmdoYW5kLCBvdmVyZmxvd0xvbmdoYW5kLCAob3ZlcmZsb3dQcm9wZXJ0aWVzLCBX
VEZfQVJSQVlfTEVOR1RIKG92ZXJmbG93UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gb3ZlcmZs
b3dMb25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBvdmVyZmxvd1Byb3Bl
cnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlPdmVyZmxvd1gsIENTU1Byb3BlcnR5T3ZlcmZsb3dZLCBD
U1NQcm9wZXJ0eUludmFsaWQgfTsKKyAgICByZXR1cm4gb3ZlcmZsb3dQcm9wZXJ0aWVzOwogfQog
Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBwYWRkaW5nTG9uZ2hhbmQoKQorY29uc3QgQ1NT
UHJvcGVydHlJRCogcGFkZGluZ0xvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IHBh
ZGRpbmdQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgcGFk
ZGluZ1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nVG9wLAogICAg
ICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwKICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5n
Qm90dG9tLAotICAgICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0CisgICAgICAgIENTU1Byb3Bl
cnR5UGFkZGluZ0xlZnQsCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBwYWRkaW5nTG9uZ2hhbmQs
IChwYWRkaW5nUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwYWRkaW5nUHJvcGVydGllcykp
KTsKLSAgICByZXR1cm4gcGFkZGluZ0xvbmdoYW5kOworICAgIHJldHVybiBwYWRkaW5nUHJvcGVy
dGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0QW5pbWF0aW9uTG9u
Z2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQoKQog
ewotICAgIHN0YXRpYyBjb25zdCBpbnQgYW5pbWF0aW9uUHJvcGVydGllc1tdID0geworICAgIHN0
YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGFuaW1hdGlvblByb3BlcnRpZXNbXSA9IHsKICAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lLAogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvbkR1cmF0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
blRpbWluZ0Z1bmN0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5
LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LAogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwKLSAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZQorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFu
aW1hdGlvbkZpbGxNb2RlLAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0QW5pbWF0aW9u
TG9uZ2hhbmQsIChhbmltYXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGFuaW1hdGlv
blByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kOworICAg
IHJldHVybiBhbmltYXRpb25Qcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiB3ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdl
YmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVy
QWZ0ZXJQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCwg
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckFmdGVyQ29sb3IgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdo
YW5kLCB3ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5kLCAoYm9yZGVyQWZ0ZXJQcm9wZXJ0aWVzLCBX
VEZfQVJSQVlfTEVOR1RIKGJvcmRlckFmdGVyUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Vi
a2l0Qm9yZGVyQWZ0ZXJMb25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBi
b3JkZXJBZnRlclByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldp
ZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQWZ0ZXJDb2xvciwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIGJvcmRl
ckFmdGVyUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0
Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0Qm9yZGVy
QmVmb3JlTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyQmVmb3JlUHJv
cGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9y
ZUNvbG9yICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwg
d2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQsIChib3JkZXJCZWZvcmVQcm9wZXJ0aWVzLCBXVEZf
QVJSQVlfTEVOR1RIKGJvcmRlckJlZm9yZVByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtp
dEJvcmRlckJlZm9yZUxvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJv
cmRlckJlZm9yZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVX
aWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZSwgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJCZWZvcmVDb2xvciwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIGJv
cmRlckJlZm9yZVByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdl
YmtpdEJvcmRlckVuZExvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdEJvcmRl
ckVuZExvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckVuZFByb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJFbmRTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvciB9OwotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Qm9yZGVyRW5k
TG9uZ2hhbmQsIChib3JkZXJFbmRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckVu
ZFByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdEJvcmRlckVuZExvbmdoYW5kOworICAg
IHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckVuZFByb3BlcnRpZXNbXSA9IHsgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRT
dHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvciwgQ1NTUHJvcGVydHlJbnZhbGlk
IH07CisgICAgcmV0dXJuIGJvcmRlckVuZFByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVy
dHlJRCogd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGlu
dCBib3JkZXJTdGFydFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFy
dFdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUsIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyU3RhcnRDb2xvciB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVy
dHlMb25naGFuZCwgd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCwgKGJvcmRlclN0YXJ0UHJvcGVy
dGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJTdGFydFByb3BlcnRpZXMpKSk7Ci0gICAgcmV0
dXJuIHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQ7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3Bl
cnR5SUQgYm9yZGVyU3RhcnRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
U3RhcnRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlLCBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3IsIENTU1Byb3BlcnR5SW52YWxpZCB9OworICAgIHJldHVy
biBib3JkZXJTdGFydFByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IHdlYmtpdENvbHVtbnNMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRDb2x1
bW5zTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgY29sdW1uc1Byb3BlcnRpZXNb
XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5Db3VudCB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwg
d2Via2l0Q29sdW1uc0xvbmdoYW5kLCAoY29sdW1uc1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5H
VEgoY29sdW1uc1Byb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdENvbHVtbnNMb25naGFu
ZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBjb2x1bW5zUHJvcGVydGllc1tdID0g
eyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNv
dW50LCBDU1NQcm9wZXJ0eUludmFsaWQgfTsKKyAgICByZXR1cm4gY29sdW1uc1Byb3BlcnRpZXM7
CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENvbHVtblJ1bGVMb25naGFu
ZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQoKQogewot
ICAgIHN0YXRpYyBjb25zdCBpbnQgY29sdW1uUnVsZVByb3BlcnRpZXNbXSA9IHsKKyAgICBzdGF0
aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBjb2x1bW5SdWxlUHJvcGVydGllc1tdID0gewogICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5SdWxlU3R5bGUsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVs
ZUNvbG9yLAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Q29sdW1uUnVsZUxvbmdoYW5k
LCAoY29sdW1uUnVsZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoY29sdW1uUnVsZVByb3Bl
cnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZDsKKyAgICByZXR1
cm4gY29sdW1uUnVsZVByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0Rmxl
eEZsb3dMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBmbGV4Rmxvd1Byb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtp
dEZsZXhXcmFwIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCB3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kLCAoZmxleEZsb3dQcm9wZXJ0aWVzLCBXVEZfQVJSQVlf
TEVOR1RIKGZsZXhGbG93UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0RmxleEZsb3dM
b25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBmbGV4Rmxvd1Byb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtp
dEZsZXhXcmFwLCBDU1NQcm9wZXJ0eUludmFsaWQgfTsKKyAgICByZXR1cm4gZmxleEZsb3dQcm9w
ZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXJnaW5Db2xs
YXBzZUxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdE1hcmdpbkNvbGxhcHNl
TG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luQ29sbGFwc2VQcm9wZXJ0
aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Q1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCwgKG1hcmdp
bkNvbGxhcHNlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJnaW5Db2xsYXBzZVByb3Bl
cnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQ7CisgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgbWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzW10gPSB7
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQWZ0ZXJDb2xsYXBzZSwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIG1h
cmdpbkNvbGxhcHNlUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
d2Via2l0TWFycXVlZUxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdE1hcnF1
ZWVMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBtYXJxdWVlUHJvcGVydGllc1td
ID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIG1hcnF1ZWVQcm9wZXJ0aWVzW10g
PSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwKICAgICAgICAg
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50LAogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWVSZXBldGl0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVT
dHlsZSwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQKKyAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQsCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAog
ICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJr
aXRNYXJxdWVlTG9uZ2hhbmQsIChtYXJxdWVlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCht
YXJxdWVlUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0TWFycXVlZUxvbmdoYW5kOwor
ICAgIHJldHVybiBtYXJxdWVlUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgd2Via2l0TWFza0xvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdE1h
c2tMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBtYXNrUHJvcGVydGllc1tdID0g
eworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIG1hc2tQcm9wZXJ0aWVzW10gPSB7CiAg
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLAogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXRYLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLApA
QCAtMzQ1LDc5ICszMzAsNzYgQEAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFz
a0xvbmdoYW5kKCkKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLAogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksCiAgICAgICAgIENTU1Byb3BlcnR5
V2Via2l0TWFza0NsaXAsCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbgorICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sCisgICAgICAgIENTU1Byb3BlcnR5SW52
YWxpZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCB3ZWJraXRNYXNrTG9uZ2hhbmQsIChtYXNrUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCht
YXNrUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0TWFza0xvbmdoYW5kOworICAgIHJl
dHVybiBtYXNrUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Vi
a2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0TWFz
a1Bvc2l0aW9uTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFza1Bvc2l0aW9u
UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIENTU1Byb3Bl
cnR5V2Via2l0TWFza1Bvc2l0aW9uWSB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJv
cGVydHlMb25naGFuZCwgd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQsIChtYXNrUG9zaXRpb25Q
cm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hc2tQb3NpdGlvblByb3BlcnRpZXMpKSk7Ci0g
ICAgcmV0dXJuIHdlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBD
U1NQcm9wZXJ0eUlEIG1hc2tQb3NpdGlvblByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb25YLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIENTU1Byb3Bl
cnR5SW52YWxpZCB9OworICAgIHJldHVybiBtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzOwogfQogCi1j
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQoKQorY29u
c3QgQ1NTUHJvcGVydHlJRCogd2Via2l0TWFza1JlcGVhdExvbmdoYW5kKCkKIHsKLSAgICBzdGF0
aWMgY29uc3QgaW50IG1hc2tSZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0
TWFza1JlcGVhdFgsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkgfTsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdE1hc2tSZXBlYXRMb25naGFu
ZCwgKG1hc2tSZXBlYXRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hc2tSZXBlYXRQcm9w
ZXJ0aWVzKSkpOwotICAgIHJldHVybiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQ7CisgICAgc3Rh
dGljIGNvbnN0IENTU1Byb3BlcnR5SUQgbWFza1JlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJv
cGVydHlXZWJraXRNYXNrUmVwZWF0WCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgQ1NT
UHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIG1hc2tSZXBlYXRQcm9wZXJ0aWVzOwogfQog
Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZCgp
Citjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZCgpCiB7Ci0g
ICAgc3RhdGljIGNvbnN0IGludCB0ZXh0RW1waGFzaXNQcm9wZXJ0aWVzW10gPSB7CisgICAgc3Rh
dGljIGNvbnN0IENTU1Byb3BlcnR5SUQgdGV4dEVtcGhhc2lzUHJvcGVydGllc1tdID0gewogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlLAotICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yCisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VGV4
dEVtcGhhc2lzQ29sb3IsCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUZXh0RW1waGFz
aXNMb25naGFuZCwgKHRleHRFbXBoYXNpc1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodGV4
dEVtcGhhc2lzUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0VGV4dEVtcGhhc2lzTG9u
Z2hhbmQ7CisgICAgcmV0dXJuIHRleHRFbXBoYXNpc1Byb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRleHRTdHJva2VMb25naGFuZCgpCitjb25zdCBDU1NQ
cm9wZXJ0eUlEKiB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25z
dCBpbnQgdGV4dFN0cm9rZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ry
b2tlV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yIH07Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hh
bmQsICh0ZXh0U3Ryb2tlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0ZXh0U3Ryb2tlUHJv
cGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kOworICAgIHN0
YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHRleHRTdHJva2VQcm9wZXJ0aWVzW10gPSB7IENTU1By
b3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VD
b2xvciwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIHRleHRTdHJva2VQcm9wZXJ0
aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUcmFuc2l0aW9uTG9u
Z2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkK
IHsKLSAgICBzdGF0aWMgY29uc3QgaW50IHRyYW5zaXRpb25Qcm9wZXJ0aWVzW10gPSB7CisgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgdHJhbnNpdGlvblByb3BlcnRpZXNbXSA9IHsKICAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHksCiAgICAgICAgIENTU1By
b3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2l0aW9uRGVsYXkKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXksCisg
ICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQsICh0cmFuc2l0
aW9uUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0cmFuc2l0aW9uUHJvcGVydGllcykpKTsK
LSAgICByZXR1cm4gd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kOworICAgIHJldHVybiB0cmFuc2l0
aW9uUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJh
bnNmb3JtT3JpZ2luTG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0VHJhbnNm
b3JtT3JpZ2luTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgdHJhbnNmb3JtT3Jp
Z2luUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHRyYW5z
Zm9ybU9yaWdpblByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1PcmlnaW5YLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblks
Ci0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWgorICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblosCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxp
ZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3
ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZCwgKHRyYW5zZm9ybU9yaWdpblByb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgodHJhbnNmb3JtT3JpZ2luUHJvcGVydGllcykpKTsKLSAgICByZXR1
cm4gd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQ7CisgICAgcmV0dXJuIHRyYW5zZm9ybU9y
aWdpblByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFdy
YXBMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRXcmFwTG9uZ2hhbmQoKQog
ewotICAgIHN0YXRpYyBjb25zdCBpbnQgd2Via2l0V3JhcFByb3BlcnRpZXNbXSA9IHsKKyAgICBz
dGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCB3ZWJraXRXcmFwUHJvcGVydGllc1tdID0gewogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtp
dFdyYXBNYXJnaW4sCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcFBhZGRpbmcKKyAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZywKKyAgICAgICAgQ1NTUHJvcGVydHlJbnZh
bGlkCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQs
IHdlYmtpdFdyYXBMb25naGFuZCwgKHdlYmtpdFdyYXBQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVO
R1RIKHdlYmtpdFdyYXBQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiB3ZWJraXRXcmFwTG9uZ2hh
bmQ7CisgICAgcmV0dXJuIHdlYmtpdFdyYXBQcm9wZXJ0aWVzOwogfQogCiAvLyBSZXR1cm5zIGFu
IGVtcHR5IGxpc3QgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCBhIHNob3J0aGFuZAotY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmRGb3JQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkKK2Nv
bnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kc0ZvclByb3BlcnR5KGludCBwcm9wZXJ0eUlEKQog
ewogICAgIHN3aXRjaCAocHJvcGVydHlJRCkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kOgpAQCAtNDI3LDcgKzQwOSw3IEBAIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdo
YW5kRm9yUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXQ6CiAgICAgICAgIHJldHVybiBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQoKTsK
ICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOgotICAgICAgICByZXR1cm4gYm9yZGVyTG9uZ2hh
bmQoKTsKKyAgICAgICAgcmV0dXJuIGJvcmRlckxvbmdoYW5kRXhwYW5kZWQoKTsKICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tOgogICAgICAgICByZXR1cm4gYm9yZGVyQm90dG9tTG9u
Z2hhbmQoKTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6CkBAIC00OTgsMTAgKzQ4
MCw4IEBAIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kRm9yUHJvcGVydHkoaW50
IHByb3BlcnR5SUQpCiAgICAgICAgIHJldHVybiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFu
ZCgpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwOgogICAgICAgICByZXR1cm4gd2Vi
a2l0V3JhcExvbmdoYW5kKCk7Ci0gICAgZGVmYXVsdDogewotICAgICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGRlZmF1bHRMb25naGFuZCwgKCkpOwotICAgICAg
ICByZXR1cm4gZGVmYXVsdExvbmdoYW5kOwotICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eUxvbmdoYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFu
ZC5oCmluZGV4IDkxNzBmZjYyNTg3ZDFlNTE3YzdmZTYzNDgyMWI0NmIxMTEzYThiMDguLjEwYmRh
M2JmMDY0NjRlYzI1N2E2MTAwMTE2ZDZmNmU5NDE5NjcyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TG9uZ2hhbmQuaApAQCAtMjEsODMgKzIxLDUyIEBACiAjaWZuZGVmIENTU1By
b3BlcnR5TG9uZ2hhbmRfaAogI2RlZmluZSBDU1NQcm9wZXJ0eUxvbmdoYW5kX2gKIAotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBDU1NQcm9wZXJ0eUxvbmdoYW5kIHsKLXB1YmxpYzoKLSAg
ICBDU1NQcm9wZXJ0eUxvbmdoYW5kKCkKLSAgICAgICAgOiBtX3Byb3BlcnRpZXMoMCkKLSAgICAg
ICAgLCBtX2xvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uKDApCi0gICAgICAgICwgbV9sZW5ndGgo
MCkKLSAgICB7Ci0gICAgfQotCi0gICAgQ1NTUHJvcGVydHlMb25naGFuZChjb25zdCBpbnQqIHBy
b3BlcnRpZXMsIHVuc2lnbmVkIG51bVByb3BlcnRpZXMpCi0gICAgICAgIDogbV9wcm9wZXJ0aWVz
KHByb3BlcnRpZXMpCi0gICAgICAgICwgbV9sb25naGFuZHNGb3JJbml0aWFsaXphdGlvbigwKQot
ICAgICAgICAsIG1fbGVuZ3RoKG51bVByb3BlcnRpZXMpCi0gICAgewotICAgIH0KKyNpbmNsdWRl
ICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAKLSAgICBDU1NQcm9wZXJ0eUxvbmdoYW5kKGNvbnN0IGlu
dCogcHJvcGVydGllcywgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCoqIGxvbmdoYW5kc0Zvcklu
aXRpYWxpemF0aW9uLCB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzKQotICAgICAgICA6IG1fcHJvcGVy
dGllcyhwcm9wZXJ0aWVzKQotICAgICAgICAsIG1fbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24o
bG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24pCi0gICAgICAgICwgbV9sZW5ndGgobnVtUHJvcGVy
dGllcykKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgaW50KiBwcm9wZXJ0aWVzKCkgY29uc3Qg
eyByZXR1cm4gbV9wcm9wZXJ0aWVzOyB9Ci0gICAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCoq
IGxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb25naGFuZHNG
b3JJbml0aWFsaXphdGlvbjsgfQotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGVuZ3RoOyB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgaW50KiBtX3Byb3BlcnRpZXM7Ci0g
ICAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCoqIG1fbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRp
b247Ci0gICAgdW5zaWduZWQgbV9sZW5ndGg7Ci19OworbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBiYWNrZ3JvdW5kTG9uZ2hhbmQoKTsKLWNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kKCk7Ci1jb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQoKTsKLWNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxv
bmdoYW5kJiBib3JkZXJBYnJpZGdlZExvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiBib3JkZXJCb3R0b21Mb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
Ym9yZGVyQ29sb3JMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVy
SW1hZ2VMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyTGVmdExv
bmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJSYWRpdXNMb25naGFu
ZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyUmlnaHRMb25naGFuZCgpOwot
Y29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyU3BhY2luZ0xvbmdoYW5kKCk7Ci1jb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJTdHlsZUxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJUb3BMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgYm9yZGVyV2lkdGhMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFu
ZCYgbGlzdFN0eWxlTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGZvbnRM
b25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbWFyZ2luTG9uZ2hhbmQoKTsK
LWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIG91dGxpbmVMb25naGFuZCgpOwotY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYgb3ZlcmZsb3dMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgcGFkZGluZ0xvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3
ZWJraXRBbmltYXRpb25Mb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Vi
a2l0Qm9yZGVyQWZ0ZXJMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Vi
a2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdl
YmtpdEJvcmRlckVuZExvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJr
aXRCb3JkZXJTdGFydExvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJr
aXRDb2x1bW5zTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENv
bHVtblJ1bGVMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Rmxl
eEZsb3dMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFyZ2lu
Q29sbGFwc2VMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFy
cXVlZUxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrTG9u
Z2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tQb3NpdGlvbkxv
bmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrUmVwZWF0TG9u
Z2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRleHRFbXBoYXNpc0xv
bmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUZXh0U3Ryb2tlTG9u
Z2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRyYW5zaXRpb25Mb25n
aGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJhbnNmb3JtT3JpZ2lu
TG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFdyYXBMb25naGFu
ZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogYmFja2dyb3VuZExvbmdoYW5kKCk7Citjb25zdCBD
U1NQcm9wZXJ0eUlEKiBiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZCgpOworY29uc3QgQ1NTUHJv
cGVydHlJRCogYmFja2dyb3VuZFJlcGVhdExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlE
KiBib3JkZXJMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCoqIGJvcmRlckxvbmdoYW5k
c0ZvckluaXRpYWxpemF0aW9uKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJCb3R0b21M
b25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVyQ29sb3JMb25naGFuZCgpOwor
Y29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVySW1hZ2VMb25naGFuZCgpOworY29uc3QgQ1NTUHJv
cGVydHlJRCogYm9yZGVyTGVmdExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3Jk
ZXJSYWRpdXNMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVyUmlnaHRMb25n
aGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVyU3BhY2luZ0xvbmdoYW5kKCk7Citj
b25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJTdHlsZUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9w
ZXJ0eUlEKiBib3JkZXJUb3BMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVy
V2lkdGhMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogbGlzdFN0eWxlTG9uZ2hhbmQo
KTsKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGZvbnRMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVy
dHlJRCogbWFyZ2luTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5SUQqIG91dGxpbmVMb25n
aGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogb3ZlcmZsb3dMb25naGFuZCgpOworY29uc3Qg
Q1NTUHJvcGVydHlJRCogcGFkZGluZ0xvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiB3
ZWJraXRBbmltYXRpb25Mb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0Qm9y
ZGVyQWZ0ZXJMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0Qm9yZGVyQmVm
b3JlTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdEJvcmRlckVuZExvbmdo
YW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRCb3JkZXJTdGFydExvbmdoYW5kKCk7
Citjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmQoKTsKK2NvbnN0IENT
U1Byb3BlcnR5SUQqIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVy
dHlJRCogd2Via2l0RmxleEZsb3dMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Vi
a2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0
TWFycXVlZUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRNYXNrTG9uZ2hh
bmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kKCk7
Citjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQoKTsKK2NvbnN0
IENTU1Byb3BlcnR5SUQqIHdlYmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kKCk7Citjb25zdCBDU1NQ
cm9wZXJ0eUlEKiB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5
SUQqIHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Vi
a2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtp
dFdyYXBMb25naGFuZCgpOwogCiAvLyBSZXR1cm5zIGFuIGVtcHR5IGxpc3QgaWYgdGhlIHByb3Bl
cnR5IGlzIG5vdCBhIHNob3J0aGFuZAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hh
bmRGb3JQcm9wZXJ0eShpbnQpOworY29uc3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzRm9yUHJv
cGVydHkoaW50KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggZjUwMjZlMDA4M2Y4MzQ2NzQ0ZjZjY2JjYjM5MTFj
ODMxYzhkMGM0Yi4uMWIyMzVkNDkxYzFiZTU0MTc1MDA0MTgxOTkyYWZhMDM5YzgxNzFhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAtMjQsNyArMjQsNiBAQAog
CiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlMb25naGFuZC5o
IgotI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdv
cmRzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29s
LmgiCkBAIC0xMTEsNyArMTEwLDcgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3Bl
cnR5VmFsdWUoaW50IHByb3BlcnR5SUQpIGNvbnN0CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmQ6CiAgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoYmFja2dyb3Vu
ZExvbmdoYW5kKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6IHsKLSAgICAgICAgY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCBwcm9wZXJ0aWVzWzNdID0geyBib3JkZXJXaWR0aExvbmdo
YW5kKCksIGJvcmRlclN0eWxlTG9uZ2hhbmQoKSwgYm9yZGVyQ29sb3JMb25naGFuZCgpIH07Cisg
ICAgICAgIGNvbnN0IENTU1Byb3BlcnR5SUQqIHByb3BlcnRpZXNbM10gPSB7IGJvcmRlcldpZHRo
TG9uZ2hhbmQoKSwgYm9yZGVyU3R5bGVMb25naGFuZCgpLCBib3JkZXJDb2xvckxvbmdoYW5kKCkg
fTsKICAgICAgICAgU3RyaW5nIHJlczsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBX
VEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpOyArK2kpIHsKICAgICAgICAgICAgIFN0cmluZyB2
YWx1ZSA9IGdldENvbW1vblZhbHVlKHByb3BlcnRpZXNbaV0pOwpAQCAtMTc2LDEwICsxNzUsMTAg
QEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3BlcnR5VmFsdWUoaW50IHByb3BlcnR5
SUQpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1TdHJpbmcgU3R5bGVQcm9wZXJ0
eVNldDo6Ym9yZGVyU3BhY2luZ1ZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdo
YW5kKSBjb25zdAorU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmJvcmRlclNwYWNpbmdWYWx1ZShj
b25zdCBDU1NQcm9wZXJ0eUlEKiBsb25naGFuZHMpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPENTU1Zh
bHVlPiBob3Jpem9udGFsVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3Bl
cnRpZXMoKVswXSk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiB2ZXJ0aWNhbFZhbHVlID0gZ2V0UHJv
cGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbMV0pOworICAgIFJlZlB0cjxDU1NW
YWx1ZT4gaG9yaXpvbnRhbFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZHNbMF0p
OworICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmVydGljYWxWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFs
dWUobG9uZ2hhbmRzWzFdKTsKIAogICAgIGlmICghaG9yaXpvbnRhbFZhbHVlKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CkBAIC0yNDgsMTMgKzI0NywxMyBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0
eVNldDo6Zm9udFZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9
CiAKLVN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXQ0VmFsdWVzKGNvbnN0IENTU1Byb3BlcnR5
TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25zdAorU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldDRW
YWx1ZXMoY29uc3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzKSBjb25zdAogewogICAgIC8vIEFz
c3VtZSB0aGUgcHJvcGVydGllcyBhcmUgaW4gdGhlIHVzdWFsIG9yZGVyIHRvcCwgcmlnaHQsIGJv
dHRvbSwgbGVmdC4KLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gZ2V0UHJvcGVydHlD
U1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbMF0pOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4g
cmlnaHRWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpWzFd
KTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGJvdHRvbVZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1
ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbMl0pOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gbGVmdFZh
bHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbM10pOworICAg
IFJlZlB0cjxDU1NWYWx1ZT4gdG9wVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5k
c1swXSk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiByaWdodFZhbHVlID0gZ2V0UHJvcGVydHlDU1NW
YWx1ZShsb25naGFuZHNbMV0pOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gYm90dG9tVmFsdWUgPSBn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1syXSk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBs
ZWZ0VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1szXSk7CiAKICAgICAvLyBB
bGwgNCBwcm9wZXJ0aWVzIG11c3QgYmUgc3BlY2lmaWVkLgogICAgIGlmICghdG9wVmFsdWUgfHwg
IXJpZ2h0VmFsdWUgfHwgIWJvdHRvbVZhbHVlIHx8ICFsZWZ0VmFsdWUpCkBAIC0yNzUsMTcgKzI3
NCwxNSBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0NFZhbHVlcyhjb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBsb25naGFuZCkgY29uc3QKICAgICByZXR1cm4gcmVzOwogfQogCi1TdHJp
bmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IENTU1By
b3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25zdAorU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6
OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUlEKiBsb25naGFuZHMp
IGNvbnN0CiB7CiAgICAgU3RyaW5nIHJlczsKLQotICAgIGNvbnN0IHVuc2lnbmVkIHNpemUgPSBs
b25naGFuZC5sZW5ndGgoKTsKICAgICAvLyBCZWdpbiBieSBjb2xsZWN0aW5nIHRoZSBwcm9wZXJ0
aWVzIGludG8gYW4gYXJyYXkuCi0gICAgVmVjdG9yPCBSZWZQdHI8Q1NTVmFsdWU+ID4gdmFsdWVz
KHNpemUpOworICAgIFZlY3RvcjwgUmVmUHRyPENTU1ZhbHVlPiA+IHZhbHVlczsKICAgICBzaXpl
X3QgbnVtTGF5ZXJzID0gMDsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKLSAgICAgICAgdmFsdWVzW2ldID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5w
cm9wZXJ0aWVzKClbaV0pOworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZvciAoOyBsb25naGFu
ZHNbaV0gIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKKyAgICAgICAgdmFsdWVzLmFwcGVu
ZChnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1tpXSkpOwogICAgICAgICBpZiAodmFsdWVz
W2ldKSB7CiAgICAgICAgICAgICBpZiAodmFsdWVzW2ldLT5pc1ZhbHVlTGlzdCgpKSB7CiAgICAg
ICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1
ZUxpc3QqPih2YWx1ZXNbaV0uZ2V0KCkpOwpAQCAtMjk0LDcgKzI5MSw3IEBAIFN0cmluZyBTdHls
ZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgbG9uCiAgICAgICAgICAgICAgICAgbnVtTGF5ZXJzID0gbWF4PHNpemVfdD4oMVUs
IG51bUxheWVycyk7CiAgICAgICAgIH0KICAgICB9Ci0KKyAgICBjb25zdCB1bnNpZ25lZCBzaXpl
ID0gaTsKICAgICAvLyBOb3cgc3RpdGNoIHRoZSBwcm9wZXJ0aWVzIHRvZ2V0aGVyLiAgSW1wbGlj
aXQgaW5pdGlhbCB2YWx1ZXMgYXJlIGZsYWdnZWQgYXMgc3VjaCBhbmQKICAgICAvLyBjYW4gc2Fm
ZWx5IGJlIG9taXR0ZWQuCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1MYXllcnM7IGkr
KykgewpAQCAtMzExLDcgKzMwOCw3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXll
cmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uCiAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVzW2pdOwogCiAgICAgICAgICAgICAgICAgICAgIC8v
IENvbG9yIG9ubHkgYmVsb25ncyBpbiB0aGUgbGFzdCBsYXllci4KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGxvbmdoYW5kLnByb3BlcnRpZXMoKVtqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcikgeworICAgICAgICAgICAgICAgICAgICBpZiAobG9uZ2hhbmRzW2pdID09IENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPSBu
dW1MYXllcnMgLSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpICE9IDApIC8vIE90aGVyIHNpbmdsZXRvbnMg
b25seSBiZWxvbmcgaW4gdGhlIGZpcnN0IGxheWVyLgpAQCAtMzIyLDEwICszMTksMTAgQEAgU3Ry
aW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiBsb24KICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmVwb3J0IGJh
Y2tncm91bmQtcmVwZWF0IGFzIGl0IHdhcyB3cml0dGVuIGluIHRoZSBDU1MuIElmIHRoZSBwcm9w
ZXJ0eSBpcyBpbXBsaWNpdCwKICAgICAgICAgICAgIC8vIHRoZW4gaXQgd2FzIHdyaXR0ZW4gd2l0
aCBvbmx5IG9uZSB2YWx1ZS4gSGVyZSB3ZSBmaWd1cmUgb3V0IHdoaWNoIHZhbHVlIHRoYXQgd2Fz
IHNvIHdlIGNhbgogICAgICAgICAgICAgLy8gcmVwb3J0IGJhY2sgY29ycmVjdGx5LgotICAgICAg
ICAgICAgaWYgKGxvbmdoYW5kLnByb3BlcnRpZXMoKVtqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRSZXBlYXRYICYmIGlzUHJvcGVydHlJbXBsaWNpdChsb25naGFuZC5wcm9wZXJ0aWVzKClbal0p
KSB7CisgICAgICAgICAgICBpZiAobG9uZ2hhbmRzW2pdID09IENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFJlcGVhdFggJiYgaXNQcm9wZXJ0eUltcGxpY2l0KGxvbmdoYW5kc1tqXSkpIHsKIAogICAgICAg
ICAgICAgICAgIC8vIEJVRyA0OTA1NTogbWFrZSBzdXJlIHRoZSB2YWx1ZSB3YXMgbm90IHJlc2V0
IGluIHRoZSBsYXllciBjaGVjayBqdXN0IGFib3ZlLgotICAgICAgICAgICAgICAgIGlmIChqIDwg
c2l6ZSAtIDEgJiYgbG9uZ2hhbmQucHJvcGVydGllcygpW2ogKyAxXSA9PSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRSZXBlYXRZICYmIHZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgKGogPCBzaXpl
IC0gMSAmJiBsb25naGFuZHNbaiArIDFdID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkg
JiYgdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB5VmFsdWU7
CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gbmV4dFZhbHVlID0gdmFsdWVz
W2ogKyAxXTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRWYWx1ZS0+aXNWYWx1ZUxpc3Qo
KSkKQEAgLTM3NiwxMiArMzczLDEyIEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXll
cmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uCiAgICAgcmV0
dXJuIHJlczsKIH0KIAotU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldFNob3J0aGFuZFZhbHVl
KGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25zdAorU3RyaW5nIFN0eWxl
UHJvcGVydHlTZXQ6OmdldFNob3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdo
YW5kcykgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsb25naGFuZC5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlmICghaXNQcm9wZXJ0eUlt
cGxpY2l0KGxvbmdoYW5kLnByb3BlcnRpZXMoKVtpXSkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxD
U1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMo
KVtpXSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgbG9uZ2hhbmRzW2ldICE9IENTU1Byb3Bl
cnR5SW52YWxpZDsgKytpKSB7CisgICAgICAgIGlmICghaXNQcm9wZXJ0eUltcGxpY2l0KGxvbmdo
YW5kc1tpXSkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1tpXSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogcHJvdmlk
ZSBkZWZhdWx0IHZhbHVlIGlmICF2YWx1ZSBvciB2YWx1ZSBpcyBpbml0aWFsIHZhbHVlCiAgICAg
ICAgICAgICBpZiAodmFsdWUgJiYgIXZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKCFyZXMuaXNOdWxsKCkpCkBAIC0zOTQsMTEgKzM5MSwxMSBAQCBTdHJpbmcg
U3R5bGVQcm9wZXJ0eVNldDo6Z2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgbG9uZ2hhbmQpCiB9CiAKIC8vIG9ubHkgcmV0dXJucyBhIG5vbi1udWxsIHZhbHVlIGlm
IGFsbCBwcm9wZXJ0aWVzIGhhdmUgdGhlIHNhbWUsIG5vbi1udWxsIHZhbHVlCi1TdHJpbmcgU3R5
bGVQcm9wZXJ0eVNldDo6Z2V0Q29tbW9uVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
bG9uZ2hhbmQpIGNvbnN0CitTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0Q29tbW9uVmFsdWUo
Y29uc3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzKSBjb25zdAogewogICAgIFN0cmluZyByZXM7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kpIHsK
LSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9u
Z2hhbmQucHJvcGVydGllcygpW2ldKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBsb25naGFu
ZHNbaV0gIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmRzW2ldKTsKICAgICAgICAg
Ly8gRklYTUU6IENTU0luaXRpYWxWYWx1ZTo6Y3NzVGV4dCBzaG91bGQgZ2VuZXJhdGUgdGhlIHJp
Z2h0IHZhbHVlLgogICAgICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgp
KQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtNDIxLDEwICs0MTgsMTAgQEAgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVQcm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlDU1NWYWx1ZShp
bnQgcHJvcGVydHlJRCkgY29uc3QKIAogYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpyZW1vdmVTaG9y
dGhhbmRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkKIHsKLSAgICBDU1NQcm9wZXJ0eUxvbmdoYW5k
IGxvbmdoYW5kID0gbG9uZ2hhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKLSAgICBpZiAoIWxv
bmdoYW5kLmxlbmd0aCgpKQorICAgIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcyA9IGxv
bmdoYW5kc0ZvclByb3BlcnR5KHByb3BlcnR5SUQpOworICAgIGlmICghbG9uZ2hhbmRzKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHJlbW92ZVByb3BlcnRpZXNJblNldChsb25n
aGFuZC5wcm9wZXJ0aWVzKCksIGxvbmdoYW5kLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gcmVtb3Zl
UHJvcGVydGllc0luU2V0KGxvbmdoYW5kcyk7CiB9CiAKIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6
cmVtb3ZlUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIFN0cmluZyogcmV0dXJuVGV4dCkKQEAgLTQ1
OSwxMiArNDU2LDEyIEBAIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cHJvcGVydHlJc0ltcG9ydGFu
dChpbnQgcHJvcGVydHlJRCkgY29uc3QKICAgICBpZiAocHJvcGVydHkpCiAgICAgICAgIHJldHVy
biBwcm9wZXJ0eS0+aXNJbXBvcnRhbnQoKTsKIAotICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9u
Z2hhbmRzID0gbG9uZ2hhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKLSAgICBpZiAoIWxvbmdo
YW5kcy5sZW5ndGgoKSkKKyAgICBjb25zdCBDU1NQcm9wZXJ0eUlEKiBsb25naGFuZHMgPSBsb25n
aGFuZHNGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKKyAgICBpZiAoIWxvbmdoYW5kcykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5k
cy5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlmICghcHJvcGVydHlJc0ltcG9ydGFudChsb25n
aGFuZHMucHJvcGVydGllcygpW2ldKSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBsb25naGFu
ZHNbaV0gIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKKyAgICAgICAgaWYgKCFwcm9wZXJ0
eUlzSW1wb3J0YW50KGxvbmdoYW5kc1tpXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtNDk4LDE3ICs0OTUsMTcgQEAgYm9vbCBTdHlsZVBy
b3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgYm9vbCBpbXAKIAogdm9pZCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJv
cGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcHJwVmFsdWUsIGJvb2wgaW1wb3J0YW50KQog
ewotICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmQgPSBsb25naGFuZEZvclByb3BlcnR5
KHByb3BlcnR5SUQpOwotICAgIGlmICghbG9uZ2hhbmQubGVuZ3RoKCkpIHsKKyAgICBjb25zdCBD
U1NQcm9wZXJ0eUlEKiBsb25naGFuZHMgPSBsb25naGFuZHNGb3JQcm9wZXJ0eShwcm9wZXJ0eUlE
KTsKKyAgICBpZiAoIWxvbmdoYW5kcykgewogICAgICAgICBzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eShwcm9wZXJ0eUlELCBwcnBWYWx1ZSwgaW1wb3J0YW50KSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICByZW1vdmVQcm9wZXJ0aWVzSW5TZXQobG9uZ2hhbmQucHJvcGVydGllcygpLCBs
b25naGFuZC5sZW5ndGgoKSk7CisgICAgcmVtb3ZlUHJvcGVydGllc0luU2V0KGxvbmdoYW5kcyk7
CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gcHJwVmFsdWU7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kpCi0gICAgICAgIG1fcHJvcGVy
dGllcy5hcHBlbmQoQ1NTUHJvcGVydHkobG9uZ2hhbmQucHJvcGVydGllcygpW2ldLCB2YWx1ZSwg
aW1wb3J0YW50KSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgbG9uZ2hhbmRzW2ldICE9IENT
U1Byb3BlcnR5SW52YWxpZDsgKytpKQorICAgICAgICBtX3Byb3BlcnRpZXMuYXBwZW5kKENTU1By
b3BlcnR5KGxvbmdoYW5kc1tpXSwgdmFsdWUsIGltcG9ydGFudCkpOwogfQogCiB2b2lkIFN0eWxl
UHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KGNvbnN0IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSwgQ1NT
UHJvcGVydHkqIHNsb3QpCkBAIC02MDcsMTIgKzYwNCwxMiBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0
eVNldDo6YXNUZXh0KCkgY29uc3QKICAgICAgICAgICAgIHNob3J0aGFuZFByb3BlcnR5SUQgPSBD
U1NQcm9wZXJ0eUJvcmRlcjsKICAgICAgICAgICAgIGlmIChzaG9ydGhhbmRQcm9wZXJ0eUFwcGVh
cmVkLmdldChDU1NQcm9wZXJ0eUJvcmRlciAtIGZpcnN0Q1NTUHJvcGVydHkpKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvcmRl
ckFicmlkZ2VkTG9uZ2hhbmQoKS5sZW5ndGgoKSAmJiBzaG9ydGhhbmRQcm9wZXJ0eUlEOyBpKysp
IHsKLSAgICAgICAgICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZCA9
ICooYm9yZGVyQWJyaWRnZWRMb25naGFuZCgpLmxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uKClb
aV0pOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgYm9yZGVyTG9uZ2hhbmQoKVtp
XSAhPSBDU1NQcm9wZXJ0eUludmFsaWQgJiYgc2hvcnRoYW5kUHJvcGVydHlJRDsgaSsrKSB7Cisg
ICAgICAgICAgICAgICAgY29uc3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzID0gYm9yZGVyTG9u
Z2hhbmRzRm9ySW5pdGlhbGl6YXRpb24oKVtpXTsKICAgICAgICAgICAgICAgICBTdHJpbmcgY29t
bW9uVmFsdWU7CiAgICAgICAgICAgICAgICAgYm9vbCBjb21tb25JbXBvcnRhbmNlID0gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBsb25naGFuZC5sZW5ndGgo
KTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBpZCA9IGxvbmdoYW5kLnByb3BlcnRp
ZXMoKVtqXTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgbG9uZ2hhbmRzW2pd
ICE9IENTU1Byb3BlcnR5SW52YWxpZDsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBp
ZCA9IGxvbmdoYW5kc1tqXTsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2
YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUoaWQpOwogICAgICAgICAgICAgICAgICAgICBTdHJp
bmcgY3VycmVudFZhbHVlID0gdmFsdWUgPyB2YWx1ZS0+Y3NzVGV4dCgpIDogU3RyaW5nKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNJbXBvcnRhbnQgPSBwcm9wZXJ0eUlzSW1wb3J0YW50
KGlkKTsKQEAgLTgwNCw3ICs4MDEsNyBAQCB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OmFkZFN1YnJl
c291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBDU1NTdHlsZQogCiAvLyBU
aGlzIGlzIHRoZSBsaXN0IG9mIHByb3BlcnRpZXMgd2Ugd2FudCB0byBjb3B5IGluIHRoZSBjb3B5
QmxvY2tQcm9wZXJ0aWVzKCkgZnVuY3Rpb24uCiAvLyBJdCBpcyB0aGUgbGlzdCBvZiBDU1MgcHJv
cGVydGllcyB0aGF0IGFwcGx5IHNwZWNpYWxseSB0byBibG9jay1sZXZlbCBlbGVtZW50cy4KLXN0
YXRpYyBjb25zdCBpbnQgYmxvY2tQcm9wZXJ0aWVzW10gPSB7CitzdGF0aWMgY29uc3QgQ1NTUHJv
cGVydHlJRCBibG9ja1Byb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eU9ycGhhbnMsCiAg
ICAgQ1NTUHJvcGVydHlPdmVyZmxvdywgLy8gVGhpcyBjYW4gYmUgYWxzbyBiZSBhcHBsaWVkIHRv
IHJlcGxhY2VkIGVsZW1lbnRzCiAgICAgQ1NTUHJvcGVydHlXZWJraXRBc3BlY3RSYXRpbywKQEAg
LTgyNSw3ICs4MjIsOCBAQCBzdGF0aWMgY29uc3QgaW50IGJsb2NrUHJvcGVydGllc1tdID0gewog
ICAgIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGUsCiAgICAgQ1NTUHJvcGVydHlU
ZXh0QWxpZ24sCiAgICAgQ1NTUHJvcGVydHlUZXh0SW5kZW50LAotICAgIENTU1Byb3BlcnR5V2lk
b3dzCisgICAgQ1NTUHJvcGVydHlXaWRvd3MsCisgICAgQ1NTUHJvcGVydHlJbnZhbGlkCiB9Owog
CiBjb25zdCB1bnNpZ25lZCBudW1CbG9ja1Byb3BlcnRpZXMgPSBXVEZfQVJSQVlfTEVOR1RIKGJs
b2NrUHJvcGVydGllcyk7CkBAIC04MzcsMTcgKzgzNSwxNyBAQCBQYXNzUmVmUHRyPFN0eWxlUHJv
cGVydHlTZXQ+IFN0eWxlUHJvcGVydHlTZXQ6OmNvcHlCbG9ja1Byb3BlcnRpZXMoKSBjb25zdAog
CiB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZUJsb2NrUHJvcGVydGllcygpCiB7Ci0gICAg
cmVtb3ZlUHJvcGVydGllc0luU2V0KGJsb2NrUHJvcGVydGllcywgbnVtQmxvY2tQcm9wZXJ0aWVz
KTsKKyAgICByZW1vdmVQcm9wZXJ0aWVzSW5TZXQoYmxvY2tQcm9wZXJ0aWVzKTsKIH0KIAotYm9v
bCBTdHlsZVByb3BlcnR5U2V0OjpyZW1vdmVQcm9wZXJ0aWVzSW5TZXQoY29uc3QgaW50KiBzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKK2Jvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlUHJvcGVydGll
c0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCkKIHsKICAgICBpZiAobV9wcm9wZXJ0aWVz
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRklYTUU6IFRoaXMg
aXMgYWx3YXlzIHVzZWQgd2l0aCBzdGF0aWMgc2V0cyBhbmQgaW4gdGhhdCBjYXNlIGNvbnN0cnVj
dGluZyB0aGUgaGFzaCByZXBlYXRlZGx5IGlzIHByZXR0eSBwb2ludGxlc3MuCiAgICAgSGFzaFNl
dDxpbnQ+IHRvUmVtb3ZlOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBzZXRbaV0gIT0gQ1NTUHJvcGVydHlJbnZhbGlk
OyArK2kpCiAgICAgICAgIHRvUmVtb3ZlLmFkZChzZXRbaV0pOwogCiAgICAgVmVjdG9yPENTU1By
b3BlcnR5LCA0PiBuZXdQcm9wZXJ0aWVzOwpAQCAtOTI2LDcgKzkyNCw3IEBAIFBhc3NSZWZQdHI8
U3R5bGVQcm9wZXJ0eVNldD4gU3R5bGVQcm9wZXJ0eVNldDo6Y29weSgpIGNvbnN0CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVByb3BlcnR5U2V0KG1fcHJvcGVydGllcykpOwogfQogCi1Q
YXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IFN0eWxlUHJvcGVydHlTZXQ6OmNvcHlQcm9wZXJ0
aWVzSW5TZXQoY29uc3QgaW50KiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKK1Bhc3NSZWZQ
dHI8U3R5bGVQcm9wZXJ0eVNldD4gU3R5bGVQcm9wZXJ0eVNldDo6Y29weVByb3BlcnRpZXNJblNl
dChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIHsKICAg
ICBWZWN0b3I8Q1NTUHJvcGVydHk+IGxpc3Q7CiAgICAgbGlzdC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
eVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCA5ODhj
ZTYyMjU0NGFiMWE0NjVmMGU3ZTczODE2OWI2YjhjYjVkOWU1Li5hMTU0YjJjYzM0M2M3OGI2NDAz
NWI5ODRlMTQ2YmUyOWFiNTU1ZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0eVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0
LmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAj
aW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAj
aW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzAsNyArMzEsNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDU1NSdWxlOwotY2xhc3MgQ1NTUHJvcGVydHlMb25naGFuZDsK
IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBLVVJMOwogY2xhc3MgUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uOwpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAKICAgICBQ
YXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNvcHlCbG9ja1Byb3BlcnRpZXMoKSBjb25zdDsK
ICAgICB2b2lkIHJlbW92ZUJsb2NrUHJvcGVydGllcygpOwotICAgIGJvb2wgcmVtb3ZlUHJvcGVy
dGllc0luU2V0KGNvbnN0IGludCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIGJvb2wgcmVt
b3ZlUHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCk7CiAKICAgICB2b2lk
IG1lcmdlKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqLCBib29sIGFyZ092ZXJyaWRlc09uQ29uZmxp
Y3QgPSB0cnVlKTsKIApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVF
cXVpdmFsZW50UHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0Kik7CiAgICAgdm9pZCBy
ZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhjb25zdCBDU1NTdHlsZURlY2xhcmF0aW9uKik7CiAK
LSAgICBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29u
c3QgaW50KiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxTdHls
ZVByb3BlcnR5U2V0PiBjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNl
dCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKICAgICAKICAgICBTdHJpbmcgYXNUZXh0KCkgY29u
c3Q7CiAgICAgCkBAIC0xMTgsMTEgKzExOCwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRO
ZWVkc1N0eWxlUmVjYWxjKCk7CiAKLSAgICBTdHJpbmcgZ2V0U2hvcnRoYW5kVmFsdWUoY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0OwotICAgIFN0cmluZyBnZXRDb21tb25WYWx1ZShj
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7Ci0gICAgU3RyaW5nIGdldExheWVyZWRT
aG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7Ci0gICAgU3Ry
aW5nIGdldDRWYWx1ZXMoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0OwotICAgIFN0
cmluZyBib3JkZXJTcGFjaW5nVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0
OworICAgIFN0cmluZyBnZXRTaG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUlEKikgY29u
c3Q7CisgICAgU3RyaW5nIGdldENvbW1vblZhbHVlKGNvbnN0IENTU1Byb3BlcnR5SUQqKSBjb25z
dDsKKyAgICBTdHJpbmcgZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3BlcnR5
SUQqKSBjb25zdDsKKyAgICBTdHJpbmcgZ2V0NFZhbHVlcyhjb25zdCBDU1NQcm9wZXJ0eUlEKikg
Y29uc3Q7CisgICAgU3RyaW5nIGJvcmRlclNwYWNpbmdWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUlE
KikgY29uc3Q7CiAgICAgU3RyaW5nIGZvbnRWYWx1ZSgpIGNvbnN0OwogICAgIGJvb2wgYXBwZW5k
Rm9udExvbmdoYW5kVmFsdWVJZkV4cGxpY2l0KGludCBwcm9wZXJ0eUlELCBTdHJpbmdCdWlsZGVy
JiByZXN1bHQpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAK
aW5kZXggZTY3Mzc3ZDBmMjZjOTk3YjdjYWM4YmIyYTNmZWZiMGFlZTE3MTVhYy4uYmQ3NGZjN2Mx
Yzc3ZDBlMDgwYTA4MjNjOGYwMjU5NzIxNmNjMDNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IC8vIEVkaXRpbmcgc3R5bGUgcHJvcGVydGllcyBtdXN0IGJlIHByZXNlcnZlZCBkdXJpbmcgZWRp
dGluZyBvcGVyYXRpb24uCiAvLyBlLmcuIHdoZW4gYSB1c2VyIGluc2VydHMgYSBuZXcgcGFyYWdy
YXBoLCBhbGwgcHJvcGVydGllcyBsaXN0ZWQgaGVyZSBtdXN0IGJlIGNvcGllZCB0byB0aGUgbmV3
IHBhcmFncmFwaC4KLXN0YXRpYyBjb25zdCBpbnQgZWRpdGluZ1Byb3BlcnRpZXNbXSA9IHsKK3N0
YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGVkaXRpbmdQcm9wZXJ0aWVzW10gPSB7CiAgICAgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsCiAgICAgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwK
IApAQCAtNjAzLDEyICs2MDMsMTMgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OmNvbGxhcHNlVGV4dERl
Y29yYXRpb25Qcm9wZXJ0aWVzKCkKIH0KIAogLy8gQ1NTIHByb3BlcnRpZXMgdGhhdCBjcmVhdGUg
YSB2aXN1YWwgZGlmZmVyZW5jZSBvbmx5IHdoZW4gYXBwbGllZCB0byB0ZXh0Lgotc3RhdGljIGNv
bnN0IGludCB0ZXh0T25seVByb3BlcnRpZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBDU1NQcm9wZXJ0
eUlEIHRleHRPbmx5UHJvcGVydGllc1tdID0gewogICAgIENTU1Byb3BlcnR5VGV4dERlY29yYXRp
b24sCiAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwKICAgICBD
U1NQcm9wZXJ0eUZvbnRTdHlsZSwKICAgICBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsCiAgICAgQ1NT
UHJvcGVydHlDb2xvciwKKyAgICBDU1NQcm9wZXJ0eUludmFsaWQKIH07CiAKIFRyaVN0YXRlIEVk
aXRpbmdTdHlsZTo6dHJpU3RhdGVPZlN0eWxlKEVkaXRpbmdTdHlsZSogc3R5bGUpIGNvbnN0CkBA
IC02MjMsNyArNjI0LDcgQEAgVHJpU3RhdGUgRWRpdGluZ1N0eWxlOjp0cmlTdGF0ZU9mU3R5bGUo
Q1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVUb0NvbXBhcmUsIFNob3UKICAgICBSZWZQdHI8U3R5
bGVQcm9wZXJ0eVNldD4gZGlmZmVyZW5jZSA9IGdldFByb3BlcnRpZXNOb3RJbihtX211dGFibGVT
dHlsZS5nZXQoKSwgc3R5bGVUb0NvbXBhcmUpOwogCiAgICAgaWYgKHNob3VsZElnbm9yZVRleHRP
bmx5UHJvcGVydGllcyA9PSBJZ25vcmVUZXh0T25seVByb3BlcnRpZXMpCi0gICAgICAgIGRpZmZl
cmVuY2UtPnJlbW92ZVByb3BlcnRpZXNJblNldCh0ZXh0T25seVByb3BlcnRpZXMsIFdURl9BUlJB
WV9MRU5HVEgodGV4dE9ubHlQcm9wZXJ0aWVzKSk7CisgICAgICAgIGRpZmZlcmVuY2UtPnJlbW92
ZVByb3BlcnRpZXNJblNldCh0ZXh0T25seVByb3BlcnRpZXMpOwogCiAgICAgaWYgKGRpZmZlcmVu
Y2UtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKQEAgLTEwODQsMTEg
KzEwODUsMTIgQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJp
YWxpemF0aW9uKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpCiBzdGF0aWMgdm9pZCByZW1vdmVQcm9w
ZXJ0aWVzSW5TdHlsZShTdHlsZVByb3BlcnR5U2V0KiBzdHlsZVRvUmVtb3ZlUHJvcGVydGllc0Zy
b20sIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQogewogICAgIHVuc2lnbmVkIHByb3BlcnR5Q291
bnQgPSBzdHlsZS0+cHJvcGVydHlDb3VudCgpOwotICAgIFZlY3RvcjxpbnQ+IHByb3BlcnRpZXNU
b1JlbW92ZShwcm9wZXJ0eUNvdW50KTsKKyAgICBWZWN0b3I8Q1NTUHJvcGVydHlJRD4gcHJvcGVy
dGllc1RvUmVtb3ZlKHByb3BlcnR5Q291bnQgKyAxKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcHJvcGVydHlDb3VudDsgKytpKQotICAgICAgICBwcm9wZXJ0aWVzVG9SZW1vdmVbaV0g
PSBzdHlsZS0+cHJvcGVydHlBdChpKS5pZCgpOworICAgICAgICBwcm9wZXJ0aWVzVG9SZW1vdmVb
aV0gPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihzdHlsZS0+cHJvcGVydHlBdChpKS5pZCgp
KTsKKyAgICBwcm9wZXJ0aWVzVG9SZW1vdmUuYXBwZW5kKENTU1Byb3BlcnR5SW52YWxpZCk7CiAK
LSAgICBzdHlsZVRvUmVtb3ZlUHJvcGVydGllc0Zyb20tPnJlbW92ZVByb3BlcnRpZXNJblNldChw
cm9wZXJ0aWVzVG9SZW1vdmUuZGF0YSgpLCBwcm9wZXJ0aWVzVG9SZW1vdmUuc2l6ZSgpKTsKKyAg
ICBzdHlsZVRvUmVtb3ZlUHJvcGVydGllc0Zyb20tPnJlbW92ZVByb3BlcnRpZXNJblNldChwcm9w
ZXJ0aWVzVG9SZW1vdmUuZGF0YSgpKTsKIH0KIAogdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0
eWxlRnJvbVJ1bGVzQW5kQ29udGV4dChTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBOb2RlKiBjb250
ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNw
cAppbmRleCBjNTljNTVkYmExZWE0YmMyMzk1M2Q0YzZmOGUzYTJkMzRmNDA3ZGU2Li5kNTZhMmNi
Yjk5ZDRlM2I5ODQyMDBkN2I2N2E0YmZiMDUzZTI1MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtODY2LDExICs4NjYsMTEgQEAg
cHJpdmF0ZToKIAogY2xhc3MgU2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyIDogcHVibGljIFByb3Bl
cnR5V3JhcHBlckJhc2UgewogcHVibGljOgotICAgIFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcihp
bnQgcHJvcGVydHksIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKQorICAgIFNo
b3J0aGFuZFByb3BlcnR5V3JhcHBlcihpbnQgcHJvcGVydHksIGNvbnN0IENTU1Byb3BlcnR5SUQq
IGxvbmdoYW5kcykKICAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3BlcnR5KQogICAg
IHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyAr
K2kpIHsKLSAgICAgICAgICAgIFByb3BlcnR5V3JhcHBlckJhc2UqIHdyYXBwZXIgPSB3cmFwcGVy
Rm9yUHJvcGVydHkobG9uZ2hhbmQucHJvcGVydGllcygpW2ldKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgbG9uZ2hhbmRzW2ldICE9IENTU1Byb3BlcnR5SW52YWxpZDsgKytpKSB7Cisg
ICAgICAgICAgICBQcm9wZXJ0eVdyYXBwZXJCYXNlKiB3cmFwcGVyID0gd3JhcHBlckZvclByb3Bl
cnR5KGxvbmdoYW5kc1tpXSk7CiAgICAgICAgICAgICBpZiAod3JhcHBlcikKICAgICAgICAgICAg
ICAgICBtX3Byb3BlcnR5V3JhcHBlcnMuYXBwZW5kKHdyYXBwZXIpOwogICAgICAgICB9CkBAIC0x
MTY5LDkgKzExNjksOSBAQCBzdGF0aWMgdm9pZCBhZGRTaG9ydGhhbmRQcm9wZXJ0aWVzKCkKIAog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChhbmltYXRhYmxlU2hv
cnRoYW5kUHJvcGVydGllcyk7ICsraSkgewogICAgICAgICBpbnQgcHJvcGVydHlJRCA9IGFuaW1h
dGFibGVTaG9ydGhhbmRQcm9wZXJ0aWVzW2ldOwotICAgICAgICBDU1NQcm9wZXJ0eUxvbmdoYW5k
IGxvbmdoYW5kID0gbG9uZ2hhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKLSAgICAgICAgaWYg
KGxvbmdoYW5kLmxlbmd0aCgpID4gMCkKLSAgICAgICAgICAgIGFkZFByb3BlcnR5V3JhcHBlcihw
cm9wZXJ0eUlELCBuZXcgU2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyKHByb3BlcnR5SUQsIGxvbmdo
YW5kKSk7CisgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcyA9IGxvbmdoYW5k
c0ZvclByb3BlcnR5KHByb3BlcnR5SUQpOworICAgICAgICBpZiAobG9uZ2hhbmRzKQorICAgICAg
ICAgICAgYWRkUHJvcGVydHlXcmFwcGVyKHByb3BlcnR5SUQsIG5ldyBTaG9ydGhhbmRQcm9wZXJ0
eVdyYXBwZXIocHJvcGVydHlJRCwgbG9uZ2hhbmRzKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134609</attachid>
            <date>2012-03-29 10:07:16 -0700</date>
            <delta_ts>2012-03-29 12:23:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82624-20120329140658.patch</filename>
            <type>text/plain</type>
            <size>85081</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVlMmRjODVkOTY0ZWUw
ODcxNTQ1MTlmOTA4YTc4MjQ5MDkyZTFhYS4uYjM3ZTY3OWFjODY3YzA3MDkzZWU3ZjE0MTdiOTg1
ZTgxZTQ4NmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxMi0wMy0yOSAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZW1v
dmUgQ1NTUHJvcGVydHlMb25naGFuZCBjbGFzcyB0byBzaW1wbGlmeSBDU1Mgc2hvcnRoYW5kIHBy
b3BlcnR5IGhhbmRsaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODI2MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgQ1NTUHJvcGVydHlMb25naGFuZCBjbGFzcyB0byBzaW1wbGlmeSBDU1Mg
c2hvcnRoYW5kIHByb3BlcnR5IGhhbmRsaW5nLgorICAgICAgICBXZSBqdXN0IHVzZSBjbGFzc2lj
IGFycmF5cyB0ZXJtaW5hdGVkIGJ5IENTU1Byb3BlcnR5SW52YWxpZC4gSSBhbHNvIHN3aXRjaCBh
bGwKKyAgICAgICAgZGVjbGFyYXRpb25zIHRvIHVzZSBDU1NQcm9wZXJ0eUlEIHJhdGhlciB0aGFu
IGFuIGludCB3aGljaCBpcyBtb3JlIGV4cGxpY2l0IG9uCisgICAgICAgIHRoZSBjb250ZW50Lgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyA6IFRoaXMgaXMgYSByZWZhY3RvcmluZywgbm8gYmVoYXZp
b3VyIGNoYW5nZSBpbnRlbmRlZC4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y29weVByb3Bl
cnRpZXNJblNldCk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24pOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VB
bmltYXRpb25TaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRy
YW5zaXRpb25TaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNo
b3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyk6Cisg
ICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChD
U1NQYXJzZXIpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRl
ckRpcmVjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHk6OnJlc29sdmVEaXJl
Y3Rpb25Bd2FyZVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kTG9uZ2hhbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6YmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6YmFj
a2dyb3VuZFJlcGVhdExvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlckxvbmdoYW5k
RXhwYW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyTG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Ym9yZGVyTG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Ym9yZGVyQm90dG9tTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpib3JkZXJDb2xvckxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRl
ckltYWdlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyTGVmdExvbmdoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclJhZGl1c0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OmJvcmRlclJpZ2h0TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyU3BhY2lu
Z0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclN0eWxlTG9uZ2hhbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6Ym9yZGVyVG9wTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9y
ZGVyV2lkdGhMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpsaXN0U3R5bGVMb25naGFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpmb250TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6bWFy
Z2luTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6b3V0bGluZUxvbmdoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Om92ZXJmbG93TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6cGFkZGlu
Z0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6d2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6
d2Via2l0Qm9yZGVyRW5kTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0Qm9yZGVy
U3RhcnRMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRDb2x1bW5zTG9uZ2hhbmQp
OgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0Q29sdW1uUnVsZUxvbmdoYW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OndlYmtpdEZsZXhGbG93TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Vi
a2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXJx
dWVlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0TWFza0xvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OndlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OndlYmtpdE1hc2tSZXBlYXRMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJr
aXRUZXh0RW1waGFzaXNMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRUZXh0U3Ry
b2tlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0VHJhbnNpdGlvbkxvbmdoYW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdFRyYW5zZm9ybU9yaWdpbkxvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OndlYmtpdFdyYXBMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjps
b25naGFuZHNGb3JQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3BlcnR5VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Ym9yZGVyU3BhY2luZ1ZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldDRWYWx1ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldFNob3J0aGFuZFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldENvbW1vblZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZVNob3J0aGFuZFByb3Bl
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnByb3BlcnR5SXNJbXBv
cnRhbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6YXNUZXh0KToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlQmxv
Y2tQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnJlbW92
ZVByb3BlcnRpZXNJblNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpj
b3B5UHJvcGVydGllc0luU2V0KToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTdHlsZVByb3BlcnR5U2V0KToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6dHJpU3RhdGVPZlN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OnJlbW92ZVByb3BlcnRpZXNJblN0eWxlKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNob3J0aGFuZFByb3BlcnR5V3Jh
cHBlcjo6U2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFNo
b3J0aGFuZFByb3BlcnRpZXMpOgorCiAyMDEyLTAzLTI4ICBUb21teSBXaWRlbmZseWNodCAgPHRv
bW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWVkaWFTdHJlYW0gQVBJIChK
U0VQKTogSW50cm9kdWNpbmcgV2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYjk4
OWMxZDVhNmVhYzcwODg5NDM0ZjUxYzkwNzY2M2ZhNzM3MjJlNC4uNjAxZjRjNDBlMmQ5NGM4ZmI0
M2UxNWE5MmUyM2Y1OWJlNTQwMTkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTc0LDcgKzc0LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogLy8gTGlzdCBvZiBhbGwgcHJvcGVydGllcyB3ZSBrbm93IGhvdyB0byBj
b21wdXRlLCBvbWl0dGluZyBzaG9ydGhhbmRzLgotc3RhdGljIGNvbnN0IGludCBjb21wdXRlZFBy
b3BlcnRpZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGNvbXB1dGVkUHJvcGVy
dGllc1tdID0gewogICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsCiAgICAgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwKICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwK
QEAgLTIzMzcsMTAgKzIzMzcsMTAgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXIKICAgICAgICAg
ICAgIHJldHVybiB2YWx1ZUZvckZpbHRlcihzdHlsZS5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6IHsKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9w
ZXJ0aWVzWzVdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kSW1hZ2UsCisgICAgICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNb
XSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIENTU1Byb3BlcnR5QmFja2dyb3VuZElt
YWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5
QmFja2dyb3VuZFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQ
b3NpdGlvbiB9OwotICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hv
cnRoYW5kUHJvcGVydGllcyhDU1NQcm9wZXJ0eUxvbmdoYW5kKHByb3BlcnRpZXMsIFdURl9BUlJB
WV9MRU5HVEgocHJvcGVydGllcykpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiwgQ1NTUHJvcGVydHlJbnZhbGlk
IH07CisgICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQ
cm9wZXJ0aWVzKHByb3BlcnRpZXMpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXI6IHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBEb05vdFVwZGF0ZUxheW91dCk7CkBA
IC0yNTc0LDI0ICsyNTc0LDI0IEBAIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uOjptYWtlTXV0YWJsZSgpCiAgICAgcmV0dXJuIGNvcHkoKTsK
IH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IENTU1By
b3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25zdAorUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9y
dGhhbmRQcm9wZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcykgY29uc3QKIHsK
ICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbG9uZ2hhbmQubGVuZ3Ro
KCk7ICsraSkgewotICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlD
U1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbaV0sIERvTm90VXBkYXRlTGF5b3V0KTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgbG9uZ2hhbmRzW2ldICE9IENTU1Byb3BlcnR5SW52YWxpZDsg
KytpKSB7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1Zh
bHVlKGxvbmdoYW5kc1tpXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwogICAgICAgICBsaXN0LT5hcHBl
bmQodmFsdWUpOwogICAgIH0KICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NS
ZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldENTU1By
b3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
bG9uZ2hhbmQpIGNvbnN0CitQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0
IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcykgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTVmFsdWVM
aXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIC8v
IEFzc3VtZSB0aGUgcHJvcGVydGllcyBhcmUgaW4gdGhlIHVzdWFsIG9yZGVyIHRvcCwgcmlnaHQs
IGJvdHRvbSwgbGVmdC4KLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gZ2V0UHJvcGVy
dHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbMF0sIERvTm90VXBkYXRlTGF5b3V0KTsK
LSAgICBSZWZQdHI8Q1NTVmFsdWU+IHJpZ2h0VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxv
bmdoYW5kLnByb3BlcnRpZXMoKVsxXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0cjxD
U1NWYWx1ZT4gYm90dG9tVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3Bl
cnRpZXMoKVsyXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gbGVm
dFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbM10sIERv
Tm90VXBkYXRlTGF5b3V0KTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gZ2V0UHJv
cGVydHlDU1NWYWx1ZShsb25naGFuZHNbMF0sIERvTm90VXBkYXRlTGF5b3V0KTsKKyAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHJpZ2h0VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1sx
XSwgRG9Ob3RVcGRhdGVMYXlvdXQpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gYm90dG9tVmFsdWUg
PSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1syXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwor
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gbGVmdFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25n
aGFuZHNbM10sIERvTm90VXBkYXRlTGF5b3V0KTsKIAogICAgIC8vIEFsbCA0IHByb3BlcnRpZXMg
bXVzdCBiZSBzcGVjaWZpZWQuCiAgICAgaWYgKCF0b3BWYWx1ZSB8fCAhcmlnaHRWYWx1ZSB8fCAh
Ym90dG9tVmFsdWUgfHwgIWxlZnRWYWx1ZSkKQEAgLTI2MTIsNyArMjYxMiw3IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldENTU1Byb3Bl
cnR5VmFsdWVzRm9yU2lkCiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCi1QYXNzUmVm
UHRyPFN0eWxlUHJvcGVydHlTZXQ+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y29weVBy
b3BlcnRpZXNJblNldChjb25zdCBpbnQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAorUGFz
c1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNv
cHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5n
dGgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPENTU1Byb3BlcnR5PiBsaXN0OwogICAgIGxpc3QucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4IGU4OTM4ZDBlNTU5NTk0ZTViZjI2ZmFk
MGY2MzEyMGE5MDVmOGZhOTguLjc3N2Q4MjYzMWFiMzUzMWZhNjgzMmViZDBhMzllNzk4NmJlNTMz
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmgKQEAgLTI5LDcgKzI5LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NT
UHJpbWl0aXZlVmFsdWU7Ci1jbGFzcyBDU1NQcm9wZXJ0eUxvbmdoYW5kOwogY2xhc3MgQ1NTVmFs
dWVMaXN0OwogY2xhc3MgQ1NTVmFsdWVQb29sOwogY2xhc3MgQ29sb3I7CkBAIC03MSw3ICs3MCw3
IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRTVkdQcm9wZXJ0eUNTU1Zh
bHVlKGludCBwcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0KSBjb25zdDsKICNlbmRpZgogCi0gICAg
UGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IGlu
dCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8U3R5bGVQcm9w
ZXJ0eVNldD4gY29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVu
c2lnbmVkIGxlbmd0aCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uKFBhc3NSZWZQdHI8Tm9kZT4sIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUsIGNvbnN0
IFN0cmluZyYpOwpAQCAtMTEwLDggKzEwOSw4IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gdmFsdWVGb3JGaWx0ZXIoUmVuZGVyU3R5bGUqKSBjb25zdDsKICNlbmRpZgogCi0g
ICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRo
YW5kUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7Ci0gICAgUGFz
c1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhh
bmQoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoY29u
c3QgQ1NTUHJvcGVydHlJRCopIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBn
ZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0IENTU1Byb3BlcnR5SUQq
KSBjb25zdDsKIAogICAgIFJlZlB0cjxOb2RlPiBtX25vZGU7CiAgICAgUHNldWRvSWQgbV9wc2V1
ZG9FbGVtZW50U3BlY2lmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAzMTdlZTA4
ZDlmMzQ4NmJjYjNlY2Q5NzMyNjM0ZDRkN2VmYWQzOWQxLi5kMjFiOTk0YmI5Y2VkNDhhNGYzMDI1
MzNmZDkyMTYwZDJlYTE3YjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtNDksNyAr
NDksNiBAQAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJv
cGVydHkuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eUxvbmdoYW5kLmgiCi0jaW5jbHVkZSAiQ1NT
UHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5U291cmNlRGF0YS5oIgogI2lu
Y2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCkBAIC0y
MTc3LDE1ICsyMTc2LDE1IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBz
ZTogewogICAgICAgICBpZiAobnVtID09IDEpIHsKICAgICAgICAgICAgIFNob3J0aGFuZFNjb3Bl
IHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpOwotICAgICAgICAg
ICAgaWYgKCFwYXJzZVZhbHVlKHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKS5wcm9wZXJ0
aWVzKClbMF0sIGltcG9ydGFudCkpCisgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUoQ1NTUHJv
cGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgaW1wb3J0YW50KSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNl
ZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eSh3ZWJr
aXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCkucHJvcGVydGllcygpWzFdLCB2YWx1ZSwgaW1wb3J0
YW50KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0
ZXJDb2xsYXBzZSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChudW0gPT0gMikgewogICAgICAgICAgICAgU2hv
cnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSk7
Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUod2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFu
ZCgpLnByb3BlcnRpZXMoKVswXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZSh3ZWJraXRNYXJn
aW5Db2xsYXBzZUxvbmdoYW5kKCkucHJvcGVydGllcygpWzFdLCBpbXBvcnRhbnQpKQorICAgICAg
ICAgICAgaWYgKCFwYXJzZVZhbHVlKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFw
c2UsIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRl
ckNvbGxhcHNlLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yMzE5LDcgKzIzMTgsNyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOgogICAgICAgICAvLyBbICdib3JkZXItd2lkdGgnIHx8
ICdib3JkZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKICAgICB7Ci0gICAgICAgIGlm
IChwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJvcmRlckFicmlkZ2VkTG9uZ2hhbmQoKSwgaW1wb3J0
YW50KSkgeworICAgICAgICBpZiAocGFyc2VTaG9ydGhhbmQocHJvcElkLCBib3JkZXJMb25naGFu
ZCgpLCBpbXBvcnRhbnQpKSB7CiAgICAgICAgICAgICAvLyBUaGUgQ1NTMyBCb3JkZXJzIGFuZCBC
YWNrZ3JvdW5kcyBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCBib3JkZXIgYWxzbyByZXNldHMgYm9y
ZGVyLWltYWdlLiBJdCdzIGFzCiAgICAgICAgICAgICAvLyB0aG91Z2ggYSB2YWx1ZSBvZiBub25l
IHdhcyBzcGVjaWZpZWQgZm9yIHRoZSBpbWFnZS4KICAgICAgICAgICAgIGFkZFByb3BlcnR5KENT
U1Byb3BlcnR5Qm9yZGVySW1hZ2UsIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRp
YWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwpAQCAtMjM1MiwxOSArMjM1MSwxOSBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgcmV0
dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgb3V0bGluZUxvbmdoYW5kKCksIGltcG9ydGFudCk7
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yOgogICAgICAgICAvLyA8Y29sb3I+ezEs
NH0gfCBpbmhlcml0Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3JkZXJD
b2xvckxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4g
cGFyc2U0VmFsdWVzKHByb3BJZCwgYm9yZGVyQ29sb3JMb25naGFuZCgpLCBpbXBvcnRhbnQpOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKICAgICAgICAgLy8gPGJvcmRlci13aWR0
aD57MSw0fSB8IGluaGVyaXQKLSAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIGJv
cmRlcldpZHRoTG9uZ2hhbmQoKS5wcm9wZXJ0aWVzKCksIGltcG9ydGFudCk7CisgICAgICAgIHJl
dHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3JkZXJXaWR0aExvbmdoYW5kKCksIGltcG9ydGFu
dCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlOgogICAgICAgICAvLyA8Ym9yZGVy
LXN0eWxlPnsxLDR9IHwgaW5oZXJpdAotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJ
ZCwgYm9yZGVyU3R5bGVMb25naGFuZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKKyAgICAg
ICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIGJvcmRlclN0eWxlTG9uZ2hhbmQoKSwgaW1w
b3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luOgogICAgICAgICAvLyA8bWFyZ2lu
LXdpZHRoPnsxLDR9IHwgaW5oZXJpdAotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJ
ZCwgbWFyZ2luTG9uZ2hhbmQoKS5wcm9wZXJ0aWVzKCksIGltcG9ydGFudCk7CisgICAgICAgIHJl
dHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBtYXJnaW5Mb25naGFuZCgpLCBpbXBvcnRhbnQpOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgogICAgICAgICAvLyA8cGFkZGluZy13aWR0aD57
MSw0fSB8IGluaGVyaXQKLSAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIHBhZGRp
bmdMb25naGFuZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHBh
cnNlNFZhbHVlcyhwcm9wSWQsIHBhZGRpbmdMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RmxvdzoKICAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRo
YW5kKHByb3BJZCwgd2Via2l0RmxleEZsb3dMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlGb250OgpAQCAtMjcyNiw3ICsyNzI1LDYgQEAgdm9pZCBDU1NQYXJzZXI6
OmFkZEFuaW1hdGlvblZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IHIKIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKGJvb2wg
aW1wb3J0YW50KQogewotICAgIGNvbnN0IHVuc2lnbmVkIG51bVByb3BlcnRpZXMgPSB3ZWJraXRB
bmltYXRpb25Mb25naGFuZCgpLmxlbmd0aCgpOwogICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRo
aXMsIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uKTsKIAogICAgIGJvb2wgcGFyc2VkUHJvcGVy
dHlbXSA9IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Ug
fTsKQEAgLTI3NDAsNyArMjczOCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblNo
b3J0aGFuZChib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIC8vIFdlIGhpdCB0aGUgZW5kLiAg
RmlsbCBpbiBhbGwgcmVtYWluaW5nIHZhbHVlcyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgogICAg
ICAgICAgICAgaW5pdGlhbFBhcnNlZFByb3BlcnR5SW5kZXggPSAwOwogICAgICAgICAgICAgbV92
YWx1ZUxpc3QtPm5leHQoKTsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0
aWVzOyArK2kpIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IHdlYmtpdEFuaW1hdGlvbkxvbmdo
YW5kKClbaV0gIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKICAgICAgICAgICAgICAgICBp
ZiAoIXBhcnNlZFByb3BlcnR5W2ldKQogICAgICAgICAgICAgICAgICAgICBhZGRBbmltYXRpb25W
YWx1ZSh2YWx1ZXNbaV0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1
ZSgpKTsKICAgICAgICAgICAgICAgICBwYXJzZWRQcm9wZXJ0eVtpXSA9IGZhbHNlOwpAQCAtMjc1
MCwxMCArMjc0OCwxMCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9ydGhhbmQo
Ym9vbCBpbXBvcnRhbnQpCiAgICAgICAgIH0KIAogICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7
Ci0gICAgICAgIGZvciAoaSA9IGluaXRpYWxQYXJzZWRQcm9wZXJ0eUluZGV4OyAhZm91bmQgJiYg
aSA8IG51bVByb3BlcnRpZXM7ICsraSkgeworICAgICAgICBmb3IgKGkgPSBpbml0aWFsUGFyc2Vk
UHJvcGVydHlJbmRleDsgIWZvdW5kICYmIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKClbaV0gIT0g
Q1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKICAgICAgICAgICAgIGlmICghcGFyc2VkUHJvcGVy
dHlbaV0pIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDsKLSAgICAgICAg
ICAgICAgICBpZiAocGFyc2VBbmltYXRpb25Qcm9wZXJ0eSh3ZWJraXRBbmltYXRpb25Mb25naGFu
ZCgpLnByb3BlcnRpZXMoKVtpXSwgdmFsKSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZUFu
aW1hdGlvblByb3BlcnR5KHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKClbaV0sIHZhbCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgcGFyc2VkUHJvcGVydHlbaV0gPSBmb3VuZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgICAgIGluaXRpYWxQYXJzZWRQcm9wZXJ0eUluZGV4ID0gMTsKICAgICAgICAg
ICAgICAgICAgICAgYWRkQW5pbWF0aW9uVmFsdWUodmFsdWVzW2ldLCB2YWwucmVsZWFzZSgpKTsK
QEAgLTI3NjgsMjIgKzI3NjYsMjAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uU2hv
cnRoYW5kKGJvb2wgaW1wb3J0YW50KQogICAgIH0KIAogICAgIC8vIEZpbGwgaW4gYW55IHJlbWFp
bmluZyBwcm9wZXJ0aWVzIHdpdGggdGhlIGluaXRpYWwgdmFsdWUuCi0gICAgZm9yIChpID0gMDsg
aSA8IG51bVByb3BlcnRpZXM7ICsraSkgeworICAgIGZvciAoaSA9IDA7IHdlYmtpdEFuaW1hdGlv
bkxvbmdoYW5kKClbaV0gIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKICAgICAgICAgaWYg
KCFwYXJzZWRQcm9wZXJ0eVtpXSkKICAgICAgICAgICAgIGFkZEFuaW1hdGlvblZhbHVlKHZhbHVl
c1tpXSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOwogICAg
IH0KIAogICAgIC8vIE5vdyBhZGQgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHdlIGZvdW5kLgotICAg
IGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGFkZFByb3BlcnR5
KHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCkucHJvcGVydGllcygpW2ldLCB2YWx1ZXNbaV0ucmVs
ZWFzZSgpLCBpbXBvcnRhbnQpOworICAgIGZvciAoaSA9IDA7IHdlYmtpdEFuaW1hdGlvbkxvbmdo
YW5kKClbaV0gIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyArK2kpCisgICAgICAgIGFkZFByb3BlcnR5
KHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKClbaV0sIHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9y
dGFudCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJh
bnNpdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKIHsKLSAgICBjb25zdCB1bnNpZ25lZCBu
dW1Qcm9wZXJ0aWVzID0gd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkubGVuZ3RoKCk7Ci0KICAg
ICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb24p
OwogCiAgICAgYm9vbCBwYXJzZWRQcm9wZXJ0eVtdID0geyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSB9OwpAQCAtMjc5NSw3ICsyNzkxLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNp
dGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKICAgICAgICAgaWYgKHZhbC0+dW5pdCA9PSBD
U1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgJiYgdmFsLT5pVmFsdWUgPT0gJywnKSB7CiAgICAgICAg
ICAgICAvLyBXZSBoaXQgdGhlIGVuZC4gIEZpbGwgaW4gYWxsIHJlbWFpbmluZyB2YWx1ZXMgd2l0
aCB0aGUgaW5pdGlhbCB2YWx1ZS4KICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7Ci0g
ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CisgICAgICAg
ICAgICBmb3IgKGkgPSAwOyB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKVtpXSAhPSBDU1NQcm9w
ZXJ0eUludmFsaWQ7ICsraSkgewogICAgICAgICAgICAgICAgIGlmICghcGFyc2VkUHJvcGVydHlb
aV0pCiAgICAgICAgICAgICAgICAgICAgIGFkZEFuaW1hdGlvblZhbHVlKHZhbHVlc1tpXSwgY3Nz
VmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOwogICAgICAgICAgICAg
ICAgIHBhcnNlZFByb3BlcnR5W2ldID0gZmFsc2U7CkBAIC0yODA1LDEwICsyODAxLDEwIEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiAg
ICAgICAgIH0KIAogICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAoaSA9
IDA7ICFmb3VuZCAmJiBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CisgICAgICAgIGZvciAoaSA9
IDA7ICFmb3VuZCAmJiB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKVtpXSAhPSBDU1NQcm9wZXJ0
eUludmFsaWQ7ICsraSkgewogICAgICAgICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtpXSkgewog
ICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsOwotICAgICAgICAgICAgICAgIGlm
IChwYXJzZUFuaW1hdGlvblByb3BlcnR5KHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpLnByb3Bl
cnRpZXMoKVtpXSwgdmFsKSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZUFuaW1hdGlvblBy
b3BlcnR5KHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpW2ldLCB2YWwpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHBhcnNlZFByb3BlcnR5W2ldID0gZm91bmQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICBhZGRBbmltYXRpb25WYWx1ZSh2YWx1ZXNbaV0sIHZhbC5yZWxlYXNlKCkpOwogICAg
ICAgICAgICAgICAgIH0KQEAgLTI4MjIsMTkgKzI4MTgsMTkgQEAgYm9vbCBDU1NQYXJzZXI6OnBh
cnNlVHJhbnNpdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKICAgICB9CiAKICAgICAvLyBG
aWxsIGluIGFueSByZW1haW5pbmcgcHJvcGVydGllcyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgot
ICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKKyAgICBmb3IgKGkgPSAw
OyB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKVtpXSAhPSBDU1NQcm9wZXJ0eUludmFsaWQ7ICsr
aSkgewogICAgICAgICBpZiAoIXBhcnNlZFByb3BlcnR5W2ldKQogICAgICAgICAgICAgYWRkQW5p
bWF0aW9uVmFsdWUodmFsdWVzW2ldLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0
aWFsVmFsdWUoKSk7CiAgICAgfQogCiAgICAgLy8gTm93IGFkZCBhbGwgb2YgdGhlIHByb3BlcnRp
ZXMgd2UgZm91bmQuCi0gICAgZm9yIChpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykKLSAg
ICAgICAgYWRkUHJvcGVydHkod2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkucHJvcGVydGllcygp
W2ldLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQpOworICAgIGZvciAoaSA9IDA7IHdl
YmtpdFRyYW5zaXRpb25Mb25naGFuZCgpW2ldICE9IENTU1Byb3BlcnR5SW52YWxpZDsgaSsrKQor
ICAgICAgICBhZGRQcm9wZXJ0eSh3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKVtpXSwgdmFsdWVz
W2ldLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgbG9uZ2hhbmQsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNl
U2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcywgYm9v
bCBpbXBvcnRhbnQpCiB7CiAgICAgLy8gV2UgdHJ5IHRvIG1hdGNoIGFzIG1hbnkgcHJvcGVydGll
cyBhcyBwb3NzaWJsZQogICAgIC8vIFdlIHNldCB1cCBhbiBhcnJheSBvZiBib29sZWFucyB0byBt
YXJrIHdoaWNoIHByb3BlcnR5IGhhcyBiZWVuIGZvdW5kLApAQCAtMjg0MiwxNiArMjgzOCwxMyBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgbG9uZ2hhbmQsCiAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywg
cHJvcElkKTsKIAogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBwcm9wZXJ0
aWVzUGFyc2VkID0gMDsKICAgICBib29sIHByb3BlcnR5Rm91bmRbNl09IHsgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSB9OyAvLyA2IGlzIGVub3VnaCBzaXplLgogCiAg
ICAgd2hpbGUgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpIHsKICAgICAgICAgZm91bmQgPSBmYWxz
ZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBwcm9wSW5kZXggPSAwOyAhZm91bmQgJiYgcHJvcElu
ZGV4IDwgbG9uZ2hhbmQubGVuZ3RoKCk7ICsrcHJvcEluZGV4KSB7Ci0gICAgICAgICAgICBpZiAo
IXByb3BlcnR5Rm91bmRbcHJvcEluZGV4XSAmJiBwYXJzZVZhbHVlKGxvbmdoYW5kLnByb3BlcnRp
ZXMoKVtwcm9wSW5kZXhdLCBpbXBvcnRhbnQpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgcHJv
cEluZGV4ID0gMDsgIWZvdW5kICYmIGxvbmdoYW5kc1twcm9wSW5kZXhdICE9IENTU1Byb3BlcnR5
SW52YWxpZDsgKytwcm9wSW5kZXgpIHsKKyAgICAgICAgICAgIGlmICghcHJvcGVydHlGb3VuZFtw
cm9wSW5kZXhdICYmIHBhcnNlVmFsdWUobG9uZ2hhbmRzW3Byb3BJbmRleF0sIGltcG9ydGFudCkp
CiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5Rm91bmRbcHJvcEluZGV4XSA9IGZvdW5kID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllc1BhcnNlZCsrOwotICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKICAgICAgICAgLy8gaWYgd2UgZGlkbid0IGZpbmQgYXQgbGVhc3Qg
b25lIG1hdGNoLCB0aGlzIGlzIGFuCkBAIC0yODYwLDI4ICsyODUzLDI0IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiBsb25naGFuZCwKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAo
cHJvcGVydGllc1BhcnNlZCA9PSBsb25naGFuZC5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KICAgICAvLyBGaWxsIGluIGFueSByZW1haW5pbmcgcHJvcGVydGllcyB3aXRoIHRoZSBp
bml0aWFsIHZhbHVlLgogICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9w
ZXJ0eUltcGxpY2l0KTsKLSAgICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kKiBjb25zdCogY29u
c3QgbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24gPSBsb25naGFuZC5sb25naGFuZHNGb3JJbml0
aWFsaXphdGlvbigpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsb25naGFuZC5sZW5n
dGgoKTsgKytpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgbG9uZ2hhbmRzW2ldICE9IENT
U1Byb3BlcnR5SW52YWxpZDsgKytpKSB7CiAgICAgICAgIGlmIChwcm9wZXJ0eUZvdW5kW2ldKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKGxvbmdoYW5kc0ZvckluaXRpYWxp
emF0aW9uKSB7Ci0gICAgICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBpbml0TG9u
Z2hhbmQgPSAqKGxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uW2ldKTsKLSAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgcHJvcEluZGV4ID0gMDsgcHJvcEluZGV4IDwgaW5pdExvbmdoYW5kLmxlbmd0
aCgpOyArK3Byb3BJbmRleCkKLSAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eShpbml0TG9uZ2hh
bmQucHJvcGVydGllcygpW3Byb3BJbmRleF0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNp
dEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOworICAgICAgICBpZiAocHJvcElkID09IENTU1By
b3BlcnR5Qm9yZGVyKSB7CisgICAgICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEKiBpbml0TG9u
Z2hhbmRzID0gYm9yZGVyTG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24oKVtpXTsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgcHJvcEluZGV4ID0gMDsgaW5pdExvbmdoYW5kcyAmJiBpbml0TG9u
Z2hhbmRzW3Byb3BJbmRleF0gIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyArK3Byb3BJbmRleCkKKyAg
ICAgICAgICAgICAgICBhZGRQcm9wZXJ0eShpbml0TG9uZ2hhbmRzW3Byb3BJbmRleF0sIGNzc1Zh
bHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwogICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KGxvbmdoYW5kLnByb3BlcnRpZXMo
KVtpXSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCksIGltcG9y
dGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShsb25naGFuZHNbaV0sIGNzc1ZhbHVlUG9v
bCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwogICAgIH0KIAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKGludCBw
cm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlNFZhbHVlcyhpbnQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUlEICpwcm9w
ZXJ0aWVzLCAgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgLyogRnJvbSB0aGUgQ1NTIDIgc3BlY3Ms
IDguMwogICAgICAqIElmIHRoZXJlIGlzIG9ubHkgb25lIHZhbHVlLCBpdCBhcHBsaWVzIHRvIGFs
bCBzaWRlcy4gSWYgdGhlcmUgYXJlIHR3byB2YWx1ZXMsIHRoZSB0b3AgYW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmgKaW5kZXggMWFlNjcwMzRiNDU0OTM4ZWQyMmEzMzUzOGNhZDFkNjgwYThhNTkzNC4u
YWFjM2RjNWU2MGVhMWI3MjM4ZDAxMzk2ZGU3ZjU1N2JmZDQ2MTU1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKICNp
bmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgorI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURh
dGEuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCkBAIC00
Niw3ICs0Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTQm9yZGVySW1hZ2VT
bGljZVZhbHVlOwogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7Ci1jbGFzcyBDU1NQcm9wZXJ0eUxv
bmdoYW5kOwogY2xhc3MgQ1NTVmFsdWVQb29sOwogY2xhc3MgQ1NTUHJvcGVydHk7CiBjbGFzcyBD
U1NSdWxlOwpAQCAtOTIsOCArOTIsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQcm9wZXJ0aWVz
KCkgY29uc3QgeyByZXR1cm4gIW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5KCk7IH0KIAogICAg
IGJvb2wgcGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7Ci0gICAgYm9vbCBw
YXJzZVNob3J0aGFuZChpbnQsIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmLCBib29sKTsKLSAg
ICBib29sIHBhcnNlNFZhbHVlcyhpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMsIGJv
b2wgaW1wb3J0YW50KTsKKyAgICBib29sIHBhcnNlU2hvcnRoYW5kKGludCwgY29uc3QgQ1NTUHJv
cGVydHlJRCosIGJvb2wpOworICAgIGJvb2wgcGFyc2U0VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0
IENTU1Byb3BlcnR5SUQqIHByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBh
cnNlQ29udGVudChpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZVF1
b3RlcyhpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHkuY3BwCmluZGV4IGFiMTA0MzkxOTJmOGFmY2RkNGQ0YTgzNzE3ZGIyMjMyZGQzY2E0NmEuLmVk
ZDUwZGE5NzBmNjg5Nzk2ZDFmMGI1NzA3NjI3ZmQ2NTEzZGVkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5LmNwcApAQCAtMzYsMjYgKzM2LDI2IEBAIFN0cmluZyBDU1NQcm9wZXJ0eTo6Y3Nz
VGV4dCgpIGNvbnN0CiBlbnVtIExvZ2ljYWxCb3hTaWRlIHsgQmVmb3JlU2lkZSwgRW5kU2lkZSwg
QWZ0ZXJTaWRlLCBTdGFydFNpZGUgfTsKIGVudW0gUGh5c2ljYWxCb3hTaWRlIHsgVG9wU2lkZSwg
UmlnaHRTaWRlLCBCb3R0b21TaWRlLCBMZWZ0U2lkZSB9OwogCi1zdGF0aWMgaW50IHJlc29sdmVU
b1BoeXNpY2FsUHJvcGVydHkoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdy
aXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZSBsb2dpY2FsU2lkZSwgY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgbG9uZ2hhbmQpCitzdGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHko
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2Fs
Qm94U2lkZSBsb2dpY2FsU2lkZSwgY29uc3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzKQogewog
ICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKSB7CiAgICAgICAgIGlmICh3cml0aW5nTW9kZSA9PSBU
b3BUb0JvdHRvbVdyaXRpbmdNb2RlKSB7CiAgICAgICAgICAgICAvLyBUaGUgY29tbW9uIGNhc2Uu
IFRoZSBsb2dpY2FsIGFuZCBwaHlzaWNhbCBib3ggc2lkZXMgbWF0Y2guCiAgICAgICAgICAgICAv
LyBMZWZ0ID0gU3RhcnQsIFJpZ2h0ID0gRW5kLCBCZWZvcmUgPSBUb3AsIEFmdGVyID0gQm90dG9t
Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW2xvZ2ljYWxTaWRlXTsK
KyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNbbG9naWNhbFNpZGVdOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUpIHsKICAg
ICAgICAgICAgIC8vIFN0YXJ0ID0gTGVmdCwgRW5kID0gUmlnaHQsIEJlZm9yZSA9IEJvdHRvbSwg
QWZ0ZXIgPSBUb3AuCiAgICAgICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7CiAgICAgICAg
ICAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJv
cGVydGllcygpW0xlZnRTaWRlXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW0xl
ZnRTaWRlXTsKICAgICAgICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgICAgICByZXR1
cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07CisgICAgICAgICAgICAgICAgcmV0
dXJuIGxvbmdoYW5kc1tSaWdodFNpZGVdOwogICAgICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgot
ICAgICAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07
CisgICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tCb3R0b21TaWRlXTsKICAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMo
KVtUb3BTaWRlXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW1RvcFNpZGVdOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTYzLDI2ICs2MywyNiBAQCBzdGF0aWMgaW50
IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRp
bmdNb2RlIHdyaXRpbgogICAgICAgICAgICAgLy8gU3RhcnQgPSBUb3AsIEVuZCA9IEJvdHRvbSwg
QmVmb3JlID0gTGVmdCwgQWZ0ZXIgPSBSaWdodC4KICAgICAgICAgICAgIHN3aXRjaCAobG9naWNh
bFNpZGUpIHsKICAgICAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgICAgIHJl
dHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CisgICAgICAgICAgICAgICAgcmV0
dXJuIGxvbmdoYW5kc1tUb3BTaWRlXTsKICAgICAgICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOworICAg
ICAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNbQm90dG9tU2lkZV07CiAgICAgICAgICAgICBj
YXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRp
ZXMoKVtMZWZ0U2lkZV07CisgICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tMZWZ0U2lk
ZV07CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBsb25naGFu
ZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hh
bmRzW1JpZ2h0U2lkZV07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLyBT
dGFydCA9IFRvcCwgRW5kID0gQm90dG9tLCBCZWZvcmUgPSBSaWdodCwgQWZ0ZXIgPSBMZWZ0CiAg
ICAgICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKICAgICAgICAgY2FzZSBTdGFydFNpZGU6Ci0g
ICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOworICAgICAg
ICAgICAgcmV0dXJuIGxvbmdoYW5kc1tUb3BTaWRlXTsKICAgICAgICAgY2FzZSBFbmRTaWRlOgot
ICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKKyAg
ICAgICAgICAgIHJldHVybiBsb25naGFuZHNbQm90dG9tU2lkZV07CiAgICAgICAgIGNhc2UgQmVm
b3JlU2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRT
aWRlXTsKKyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNbUmlnaHRTaWRlXTsKICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNp
ZGVdOworICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tMZWZ0U2lkZV07CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTkwLDEzICs5MCwxMyBAQCBzdGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2Fs
UHJvcGVydHkoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbgogICAg
ICAgICAvLyBTdGFydCA9IFJpZ2h0LCBFbmQgPSBMZWZ0LCBCZWZvcmUgPSBUb3AsIEFmdGVyID0g
Qm90dG9tCiAgICAgICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKICAgICAgICAgY2FzZSBTdGFy
dFNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1JpZ2h0U2lk
ZV07CisgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW1JpZ2h0U2lkZV07CiAgICAgICAgIGNh
c2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbTGVm
dFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tMZWZ0U2lkZV07CiAgICAgICAg
IGNhc2UgQmVmb3JlU2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVz
KClbVG9wU2lkZV07CisgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW1RvcFNpZGVdOwogICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtC
b3R0b21TaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNbQm90dG9tU2lkZV07CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTEwNCwxMyArMTA0LDEzIEBAIHN0YXRpYyBpbnQgcmVzb2x2
ZVRvUGh5c2ljYWxQcm9wZXJ0eShUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgV3JpdGluZ01vZGUg
d3JpdGluCiAgICAgICAgIC8vIFN0YXJ0ID0gUmlnaHQsIEVuZCA9IExlZnQsIEJlZm9yZSA9IEJv
dHRvbSwgQWZ0ZXIgPSBUb3AKICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewogICAgICAg
ICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVz
KClbUmlnaHRTaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNbUmlnaHRTaWRlXTsK
ICAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3Bl
cnRpZXMoKVtMZWZ0U2lkZV07CisgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW0xlZnRTaWRl
XTsKICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5k
LnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNb
Qm90dG9tU2lkZV07CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hh
bmQucHJvcGVydGllcygpW1RvcFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tU
b3BTaWRlXTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTE4LDQyICsxMTgsNDEgQEAgc3RhdGlj
IGludCByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBX
cml0aW5nTW9kZSB3cml0aW4KICAgICAgICAgLy8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwg
QmVmb3JlID0gTGVmdCwgQWZ0ZXIgPSBSaWdodAogICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRl
KSB7CiAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5k
LnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNb
Qm90dG9tU2lkZV07CiAgICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBs
b25naGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CisgICAgICAgICAgICByZXR1cm4gbG9uZ2hh
bmRzW1RvcFNpZGVdOwogICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1
cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBs
b25naGFuZHNbTGVmdFNpZGVdOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJu
IGxvbmdoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIGxv
bmdoYW5kc1tSaWdodFNpZGVdOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gU3RhcnQgPSBC
b3R0b20sIEVuZCA9IFRvcCwgQmVmb3JlID0gUmlnaHQsIEFmdGVyID0gTGVmdAogICAgIHN3aXRj
aCAobG9naWNhbFNpZGUpIHsKICAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgcmV0dXJuIGxv
bmdoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKKyAgICAgICAgcmV0dXJuIGxvbmdoYW5k
c1tCb3R0b21TaWRlXTsKICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgIHJldHVybiBsb25naGFu
ZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CisgICAgICAgIHJldHVybiBsb25naGFuZHNbVG9wU2lk
ZV07CiAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVy
dGllcygpW1JpZ2h0U2lkZV07CisgICAgICAgIHJldHVybiBsb25naGFuZHNbUmlnaHRTaWRlXTsK
ICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0xlZnRT
aWRlXTsKKyAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tMZWZ0U2lkZV07CiAgICAgfQogfQogCiBl
bnVtIExvZ2ljYWxFeHRlbnQgeyBMb2dpY2FsV2lkdGgsIExvZ2ljYWxIZWlnaHQgfTsKIAotc3Rh
dGljIGludCByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2Rl
LCBMb2dpY2FsRXh0ZW50IGxvZ2ljYWxTaWRlLCBjb25zdCBpbnQqIHByb3BlcnRpZXMpCitzdGF0
aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUs
IExvZ2ljYWxFeHRlbnQgbG9naWNhbFNpZGUsIGNvbnN0IENTU1Byb3BlcnR5SUQqIHByb3BlcnRp
ZXMpCiB7CiAgICAgaWYgKHdyaXRpbmdNb2RlID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUgfHwg
d3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0aW5nTW9kZSkKICAgICAgICAgcmV0dXJuIHBy
b3BlcnRpZXNbbG9naWNhbFNpZGVdOwogICAgIHJldHVybiBsb2dpY2FsU2lkZSA9PSBMb2dpY2Fs
V2lkdGggPyBwcm9wZXJ0aWVzWzFdIDogcHJvcGVydGllc1swXTsKIH0KIAotc3RhdGljIGNvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckRpcmVjdGlvbnMoKQorc3RhdGljIGNvbnN0IENT
U1Byb3BlcnR5SUQqIGJvcmRlckRpcmVjdGlvbnMoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQg
cHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3AsIENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHQsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnQgfTsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlckRpcmVj
dGlvbnMsIChwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpKSk7CisgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyRGlyZWN0aW9uc1tdID0geyBDU1NQcm9w
ZXJ0eUJvcmRlclRvcCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodCwgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b20sIENTU1Byb3BlcnR5Qm9yZGVyTGVmdCB9OwogICAgIHJldHVybiBib3JkZXJEaXJlY3Rp
b25zOwogfQogCkBAIC0yMDksMjcgKzIwOCwyNyBAQCBpbnQgQ1NTUHJvcGVydHk6OnJlc29sdmVE
aXJlY3Rpb25Bd2FyZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBUZXh0RGlyZWN0aW9uIGRpcgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoOgogICAgICAgICByZXR1
cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBBZnRl
clNpZGUsIGJvcmRlcldpZHRoTG9uZ2hhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dExvZ2ljYWxXaWR0aDogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NT
UHJvcGVydHlXaWR0aCwgQ1NTUHJvcGVydHlIZWlnaHQgfTsKKyAgICAgICAgY29uc3QgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdpZHRoLCBDU1NQcm9wZXJ0eUhl
aWdodCB9OwogICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eSh3cml0aW5n
TW9kZSwgTG9naWNhbFdpZHRoLCBwcm9wZXJ0aWVzKTsKICAgICB9CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQ6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNb
Ml0gPSB7IENTU1Byb3BlcnR5V2lkdGgsIENTU1Byb3BlcnR5SGVpZ2h0IH07CisgICAgICAgIGNv
bnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXaWR0aCwgQ1NT
UHJvcGVydHlIZWlnaHQgfTsKICAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVy
dHkod3JpdGluZ01vZGUsIExvZ2ljYWxIZWlnaHQsIHByb3BlcnRpZXMpOwogICAgIH0KICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoOiB7Ci0gICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eU1pbldpZHRoLCBDU1NQcm9wZXJ0eU1pbkhl
aWdodCB9OworICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNbMl0gPSB7IENT
U1Byb3BlcnR5TWluV2lkdGgsIENTU1Byb3BlcnR5TWluSGVpZ2h0IH07CiAgICAgICAgIHJldHVy
biByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KHdyaXRpbmdNb2RlLCBMb2dpY2FsV2lkdGgsIHBy
b3BlcnRpZXMpOwogICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhl
aWdodDogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlN
aW5XaWR0aCwgQ1NTUHJvcGVydHlNaW5IZWlnaHQgfTsKKyAgICAgICAgY29uc3QgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eU1pbldpZHRoLCBDU1NQcm9wZXJ0eU1p
bkhlaWdodCB9OwogICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eSh3cml0
aW5nTW9kZSwgTG9naWNhbEhlaWdodCwgcHJvcGVydGllcyk7CiAgICAgfQogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXhMb2dpY2FsV2lkdGg6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3Bl
cnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5TWF4V2lkdGgsIENTU1Byb3BlcnR5TWF4SGVpZ2h0IH07
CisgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVy
dHlNYXhXaWR0aCwgQ1NTUHJvcGVydHlNYXhIZWlnaHQgfTsKICAgICAgICAgcmV0dXJuIHJlc29s
dmVUb1BoeXNpY2FsUHJvcGVydHkod3JpdGluZ01vZGUsIExvZ2ljYWxXaWR0aCwgcHJvcGVydGll
cyk7CiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0OiB7
Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eU1heFdpZHRo
LCBDU1NQcm9wZXJ0eU1heEhlaWdodCB9OworICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5TWF4V2lkdGgsIENTU1Byb3BlcnR5TWF4SGVpZ2h0
IH07CiAgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KHdyaXRpbmdNb2Rl
LCBMb2dpY2FsSGVpZ2h0LCBwcm9wZXJ0aWVzKTsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAppbmRleCA3YzEyZDljM2I1OTk2
ZThhZjQ0MDgwOGExYjUzZDRiMzgyZWVkZjBhLi4zNTFjMjhkN2Q3NTUwYzFmNGM3OGQ0ZDMwZTFh
ZWQ2OWQ0NTE1NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlM
b25naGFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQu
Y3BwCkBAIC0yMSwxNSArMjEsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
U1NQcm9wZXJ0eUxvbmdoYW5kLmgiCiAKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8v
IEZJWE1FOiBBZGQgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSB0byB0aGUgc2hvcnRoYW5kLgot
Y29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3VuZExvbmdoYW5kKCkKK2NvbnN0IENT
U1Byb3BlcnR5SUQqIGJhY2tncm91bmRMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGlu
dCBiYWNrZ3JvdW5kUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0
eUlEIGJhY2tncm91bmRQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yLAogICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwKICAgICAgICAg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwKQEAgLTM4LDMwNiArMzcsMjkyIEBAIGNvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRMb25naGFuZCgpCiAgICAgICAgIENTU1By
b3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwKICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UG9zaXRpb25ZLAogICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLAotICAgICAgICBD
U1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4KKyAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
T3JpZ2luLAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYmFja2dyb3VuZExvbmdoYW5kLCAoYmFj
a2dyb3VuZFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYmFja2dyb3VuZFByb3BlcnRpZXMp
KSk7Ci0gICAgcmV0dXJuIGJhY2tncm91bmRMb25naGFuZDsKKyAgICByZXR1cm4gYmFja2dyb3Vu
ZFByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRQ
b3NpdGlvbkxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJhY2tncm91bmRQb3NpdGlv
bkxvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJhY2tncm91bmRQb3NpdGlvblBy
b3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblkgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3Bl
cnR5TG9uZ2hhbmQsIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kLCAoYmFja2dyb3VuZFBvc2l0
aW9uUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0
aWVzKSkpOwotICAgIHJldHVybiBiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZDsKKyAgICBzdGF0
aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzW10gPSB7
IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb25ZLCBDU1NQcm9wZXJ0eUludmFsaWQgfTsKKyAgICByZXR1cm4gYmFja2dyb3VuZFBvc2l0
aW9uUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3Vu
ZFJlcGVhdExvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJhY2tncm91bmRSZXBlYXRM
b25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXRZIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdo
YW5kLCBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQsIChiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllcykpKTsKLSAgICBy
ZXR1cm4gYmFja2dyb3VuZFJlcGVhdExvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9w
ZXJ0eUlEIGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5QmFja2dy
b3VuZFJlcGVhdFgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFksIENTU1Byb3BlcnR5SW52
YWxpZCB9OworICAgIHJldHVybiBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllczsKIH0KIAotY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyTG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVy
dHlJRCogYm9yZGVyTG9uZ2hhbmRFeHBhbmRlZCgpCiB7CiAgICAgLy8gRG8gbm90IGNoYW5nZSB0
aGUgb3JkZXIgb2YgdGhlIGZvbGxvd2luZyBmb3VyIHNob3J0aGFuZHMsIGFuZCBrZWVwIHRoZW0g
dG9nZXRoZXIuCi0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJQcm9wZXJ0aWVzWzRdWzNdID0g
ewotICAgICAgICB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVy
VG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGggfSwKLSAgICAgICAgeyBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodFdpZHRoIH0sCi0gICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21Db2xvciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21XaWR0aCB9LAotICAgICAgICB7IENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yLCBDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGggfQotICAg
IH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJM
b25naGFuZCwgKGJvcmRlclByb3BlcnRpZXNbMF0sIHNpemVvZihib3JkZXJQcm9wZXJ0aWVzKSAv
IHNpemVvZihib3JkZXJQcm9wZXJ0aWVzWzBdWzBdKSkpOwotICAgIHJldHVybiBib3JkZXJMb25n
aGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJQcm9wZXJ0aWVzW10g
PSB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xv
ciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRD
b2xvciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdp
ZHRoLCBDU1NQcm9wZXJ0eUludmFsaWQgfTsKKyAgICByZXR1cm4gYm9yZGVyUHJvcGVydGllczsK
IH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyQWJyaWRnZWRMb25naGFuZCgp
Citjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNv
bnN0IGludCBib3JkZXJBYnJpZGdlZFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJX
aWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciB9Owot
ICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kKiBwcm9wZXJ0aWVzRm9ySW5pdGlh
bGl6YXRpb25bXSA9IHsKLSAgICAgICAgJmJvcmRlcldpZHRoTG9uZ2hhbmQoKSwKLSAgICAgICAg
JmJvcmRlclN0eWxlTG9uZ2hhbmQoKSwKLSAgICAgICAgJmJvcmRlckNvbG9yTG9uZ2hhbmQoKSwK
LSAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9y
ZGVyQWJyaWRnZWRMb25naGFuZCwKLSAgICAgICAgKGJvcmRlckFicmlkZ2VkUHJvcGVydGllcywg
cHJvcGVydGllc0ZvckluaXRpYWxpemF0aW9uLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckFicmlk
Z2VkUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyQWJyaWRnZWRMb25naGFuZDsKKyAg
ICAvLyBEbyBub3QgY2hhbmdlIHRoZSBvcmRlciBvZiB0aGUgZm9sbG93aW5nIGZvdXIgc2hvcnRo
YW5kcywgYW5kIGtlZXAgdGhlbSB0b2dldGhlci4KKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVy
dHlJRCBib3JkZXJQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIENTU1By
b3BlcnR5Qm9yZGVyU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIENTU1Byb3BlcnR5SW52
YWxpZCB9OworICAgIHJldHVybiBib3JkZXJQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBib3JkZXJCb3R0b21Mb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlE
KiogYm9yZGVyTG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24oKQogewotICAgIHN0YXRpYyBjb25z
dCBpbnQgYm9yZGVyQm90dG9tUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbUNvbG9yIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCBib3JkZXJCb3R0b21Mb25naGFuZCwgKGJvcmRlckJvdHRvbVByb3BlcnRpZXMsIFdURl9BUlJB
WV9MRU5HVEgoYm9yZGVyQm90dG9tUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyQm90
dG9tTG9uZ2hhbmQ7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlckxvbmdo
YW5kc0ZvckluaXRpYWxpemF0aW9uW10gPSB7CisgICAgICAgICAgICBib3JkZXJXaWR0aExvbmdo
YW5kKCksCisgICAgICAgICAgICBib3JkZXJTdHlsZUxvbmdoYW5kKCksCisgICAgICAgICAgICBi
b3JkZXJDb2xvckxvbmdoYW5kKCksCisgICAgICAgICAgICAwCisgICAgICAgIH07CisgICAgcmV0
dXJuIGJvcmRlckxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uOwogfQogCi1jb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBib3JkZXJDb2xvckxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQq
IGJvcmRlckJvdHRvbUxvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckNv
bG9yUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRl
ckJvdHRvbVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwg
Q1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIGJvcmRlckJvdHRvbVByb3BlcnRpZXM7
Cit9CisKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlckNvbG9yTG9uZ2hhbmQoKQoreworICAg
IHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckNvbG9yUHJvcGVydGllc1tdID0gewog
ICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLAogICAgICAgICBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0Q29sb3IsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsCi0g
ICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yCisgICAgICAgIENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdENvbG9yLAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyQ29sb3JMb25naGFu
ZCwgKGJvcmRlckNvbG9yUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJDb2xvclBy
b3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlckNvbG9yTG9uZ2hhbmQ7CisgICAgcmV0dXJu
IGJvcmRlckNvbG9yUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
Ym9yZGVySW1hZ2VMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJJbWFnZUxv
bmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckltYWdlUHJvcGVydGllc1td
ID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckltYWdlUHJvcGVydGll
c1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlLAogICAgICAgICBD
U1NQcm9wZXJ0eUJvcmRlckltYWdlU2xpY2UsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2VXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNldCwKLSAgICAgICAg
Q1NTUHJvcGVydHlCb3JkZXJJbWFnZVJlcGVhdAorICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlcklt
YWdlUmVwZWF0LAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVySW1hZ2VMb25naGFuZCwg
KGJvcmRlckltYWdlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJJbWFnZVByb3Bl
cnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlckltYWdlTG9uZ2hhbmQ7CisgICAgcmV0dXJuIGJv
cmRlckltYWdlUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9y
ZGVyTGVmdExvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlckxlZnRMb25naGFu
ZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJMZWZ0UHJvcGVydGllc1tdID0geyBD
U1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENT
U1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQ
cm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJMZWZ0TG9uZ2hhbmQsIChib3JkZXJMZWZ0UHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJMZWZ0UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4g
Ym9yZGVyTGVmdExvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRl
ckxlZnRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBDU1NQcm9w
ZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IsIENTU1Byb3Bl
cnR5SW52YWxpZCB9OworICAgIHJldHVybiBib3JkZXJMZWZ0UHJvcGVydGllczsKIH0KIAotY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyUmFkaXVzTG9uZ2hhbmQoKQorY29uc3QgQ1NT
UHJvcGVydHlJRCogYm9yZGVyUmFkaXVzTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBp
bnQgYm9yZGVyUmFkaXVzUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9w
ZXJ0eUlEIGJvcmRlclJhZGl1c1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJUb3BSaWdodFJhZGl1cywKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFk
aXVzLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsCi0gICAgICAg
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMKKyAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21SaWdodFJhZGl1cywKKyAgICAgICAgQ1NTUHJvcGVydHlJbnZhbGlkCiAgICAg
fTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlclJh
ZGl1c0xvbmdoYW5kLCAoYm9yZGVyUmFkaXVzUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChi
b3JkZXJSYWRpdXNQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBib3JkZXJSYWRpdXNMb25naGFu
ZDsKKyAgICByZXR1cm4gYm9yZGVyUmFkaXVzUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgYm9yZGVyUmlnaHRMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlE
KiBib3JkZXJSaWdodExvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclJp
Z2h0UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJSaWdodExvbmdo
YW5kLCAoYm9yZGVyUmlnaHRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclJpZ2h0
UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyUmlnaHRMb25naGFuZDsKKyAgICBzdGF0
aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJSaWdodFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJu
IGJvcmRlclJpZ2h0UHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
Ym9yZGVyU3BhY2luZ0xvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlclNwYWNp
bmdMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJTcGFjaW5nUHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyB9OwotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyU3BhY2luZ0xvbmdoYW5kLCAoYm9yZGVy
U3BhY2luZ1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyU3BhY2luZ1Byb3BlcnRp
ZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlclNwYWNpbmdMb25naGFuZDsKKyAgICBzdGF0aWMgY29u
c3QgQ1NTUHJvcGVydHlJRCBib3JkZXJTcGFjaW5nUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZl
cnRpY2FsU3BhY2luZywgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIGJvcmRlclNw
YWNpbmdQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJT
dHlsZUxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlclN0eWxlTG9uZ2hhbmQo
KQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyU3R5bGVQcm9wZXJ0aWVzW10gPSB7Cisg
ICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyU3R5bGVQcm9wZXJ0aWVzW10gPSB7
CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsCiAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRTdHlsZSwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwK
LSAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUKKyAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0U3R5bGUsCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJTdHlsZUxvbmdo
YW5kLCAoYm9yZGVyU3R5bGVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclN0eWxl
UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyU3R5bGVMb25naGFuZDsKKyAgICByZXR1
cm4gYm9yZGVyU3R5bGVQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiBib3JkZXJUb3BMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJUb3BMb25n
aGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJUb3BQcm9wZXJ0aWVzW10gPSB7
IENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENT
U1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1By
b3BlcnR5TG9uZ2hhbmQsIGJvcmRlclRvcExvbmdoYW5kLCAoYm9yZGVyVG9wUHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSChib3JkZXJUb3BQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBib3Jk
ZXJUb3BMb25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJUb3BQ
cm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9y
ZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5SW52YWxp
ZCB9OworICAgIHJldHVybiBib3JkZXJUb3BQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBib3JkZXJXaWR0aExvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQq
IGJvcmRlcldpZHRoTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyV2lk
dGhQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVy
V2lkdGhQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgs
CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21XaWR0aCwKLSAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgK
KyAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsCisgICAgICAgIENTU1Byb3BlcnR5
SW52YWxpZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdo
YW5kLCBib3JkZXJXaWR0aExvbmdoYW5kLCAoYm9yZGVyV2lkdGhQcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKGJvcmRlcldpZHRoUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyV2lk
dGhMb25naGFuZDsKKyAgICByZXR1cm4gYm9yZGVyV2lkdGhQcm9wZXJ0aWVzOwogfQogCi1jb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsaXN0U3R5bGVMb25naGFuZCgpCitjb25zdCBDU1NQcm9w
ZXJ0eUlEKiBsaXN0U3R5bGVMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBsaXN0
U3R5bGVQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgbGlz
dFN0eWxlUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUs
CiAgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sCi0gICAgICAgIENTU1Byb3Bl
cnR5TGlzdFN0eWxlSW1hZ2UKKyAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwKKyAg
ICAgICAgQ1NTUHJvcGVydHlJbnZhbGlkCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KENTU1Byb3BlcnR5TG9uZ2hhbmQsIGxpc3RTdHlsZUxvbmdoYW5kLCAobGlzdFN0eWxlUHJvcGVy
dGllcywgV1RGX0FSUkFZX0xFTkdUSChsaXN0U3R5bGVQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVy
biBsaXN0U3R5bGVMb25naGFuZDsKKyAgICByZXR1cm4gbGlzdFN0eWxlUHJvcGVydGllczsKIH0K
IAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgZm9udExvbmdoYW5kKCkKK2NvbnN0IENTU1By
b3BlcnR5SUQqIGZvbnRMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBmb250UHJv
cGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGZvbnRQcm9wZXJ0
aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Rm9udEZhbWlseSwKICAgICAgICAgQ1NTUHJv
cGVydHlGb250U2l6ZSwKICAgICAgICAgQ1NTUHJvcGVydHlGb250U3R5bGUsCiAgICAgICAgIENT
U1Byb3BlcnR5Rm9udFZhcmlhbnQsCiAgICAgICAgIENTU1Byb3BlcnR5Rm9udFdlaWdodCwKLSAg
ICAgICAgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0CisgICAgICAgIENTU1Byb3BlcnR5TGluZUhlaWdo
dCwKKyAgICAgICAgQ1NTUHJvcGVydHlJbnZhbGlkCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGZvbnRMb25naGFuZCwgKGZvbnRQcm9wZXJ0aWVz
LCBXVEZfQVJSQVlfTEVOR1RIKGZvbnRQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBmb250TG9u
Z2hhbmQ7CisgICAgcmV0dXJuIGZvbnRQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiBtYXJnaW5Mb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiBtYXJnaW5M
b25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBtYXJnaW5Qcm9wZXJ0aWVzW10gPSB7
CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgbWFyZ2luUHJvcGVydGllc1tdID0gewog
ICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpblRvcCwKICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5S
aWdodCwKICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sCi0gICAgICAgIENTU1Byb3Bl
cnR5TWFyZ2luTGVmdAorICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsCisgICAgICAgIENT
U1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9w
ZXJ0eUxvbmdoYW5kLCBtYXJnaW5Mb25naGFuZCwgKG1hcmdpblByb3BlcnRpZXMsIFdURl9BUlJB
WV9MRU5HVEgobWFyZ2luUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gbWFyZ2luTG9uZ2hhbmQ7
CisgICAgcmV0dXJuIG1hcmdpblByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9u
Z2hhbmQmIG91dGxpbmVMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiBvdXRsaW5lTG9u
Z2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgb3V0bGluZVByb3BlcnRpZXNbXSA9IHsK
KyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBvdXRsaW5lUHJvcGVydGllc1tdID0gewog
ICAgICAgICBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwKICAgICAgICAgQ1NTUHJvcGVydHlPdXRs
aW5lU3R5bGUsCi0gICAgICAgIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoCisgICAgICAgIENTU1By
b3BlcnR5T3V0bGluZVdpZHRoLAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9Owot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgb3V0bGluZUxvbmdo
YW5kLCAob3V0bGluZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgob3V0bGluZVByb3BlcnRp
ZXMpKSk7Ci0gICAgcmV0dXJuIG91dGxpbmVMb25naGFuZDsKKyAgICByZXR1cm4gb3V0bGluZVBy
b3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIG92ZXJmbG93TG9uZ2hh
bmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogb3ZlcmZsb3dMb25naGFuZCgpCiB7Ci0gICAgc3Rh
dGljIGNvbnN0IGludCBvdmVyZmxvd1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlPdmVyZmxv
d1gsIENTU1Byb3BlcnR5T3ZlcmZsb3dZIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQ
cm9wZXJ0eUxvbmdoYW5kLCBvdmVyZmxvd0xvbmdoYW5kLCAob3ZlcmZsb3dQcm9wZXJ0aWVzLCBX
VEZfQVJSQVlfTEVOR1RIKG92ZXJmbG93UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gb3ZlcmZs
b3dMb25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBvdmVyZmxvd1Byb3Bl
cnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlPdmVyZmxvd1gsIENTU1Byb3BlcnR5T3ZlcmZsb3dZLCBD
U1NQcm9wZXJ0eUludmFsaWQgfTsKKyAgICByZXR1cm4gb3ZlcmZsb3dQcm9wZXJ0aWVzOwogfQog
Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBwYWRkaW5nTG9uZ2hhbmQoKQorY29uc3QgQ1NT
UHJvcGVydHlJRCogcGFkZGluZ0xvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IHBh
ZGRpbmdQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgcGFk
ZGluZ1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nVG9wLAogICAg
ICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwKICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5n
Qm90dG9tLAotICAgICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0CisgICAgICAgIENTU1Byb3Bl
cnR5UGFkZGluZ0xlZnQsCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBwYWRkaW5nTG9uZ2hhbmQs
IChwYWRkaW5nUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwYWRkaW5nUHJvcGVydGllcykp
KTsKLSAgICByZXR1cm4gcGFkZGluZ0xvbmdoYW5kOworICAgIHJldHVybiBwYWRkaW5nUHJvcGVy
dGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0QW5pbWF0aW9uTG9u
Z2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQoKQog
ewotICAgIHN0YXRpYyBjb25zdCBpbnQgYW5pbWF0aW9uUHJvcGVydGllc1tdID0geworICAgIHN0
YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGFuaW1hdGlvblByb3BlcnRpZXNbXSA9IHsKICAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lLAogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvbkR1cmF0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
blRpbWluZ0Z1bmN0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5
LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LAogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwKLSAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZQorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFu
aW1hdGlvbkZpbGxNb2RlLAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0QW5pbWF0aW9u
TG9uZ2hhbmQsIChhbmltYXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGFuaW1hdGlv
blByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kOworICAg
IHJldHVybiBhbmltYXRpb25Qcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiB3ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdl
YmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVy
QWZ0ZXJQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCwg
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckFmdGVyQ29sb3IgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdo
YW5kLCB3ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5kLCAoYm9yZGVyQWZ0ZXJQcm9wZXJ0aWVzLCBX
VEZfQVJSQVlfTEVOR1RIKGJvcmRlckFmdGVyUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Vi
a2l0Qm9yZGVyQWZ0ZXJMb25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBi
b3JkZXJBZnRlclByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldp
ZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQWZ0ZXJDb2xvciwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIGJvcmRl
ckFmdGVyUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0
Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0Qm9yZGVy
QmVmb3JlTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyQmVmb3JlUHJv
cGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9y
ZUNvbG9yICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwg
d2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQsIChib3JkZXJCZWZvcmVQcm9wZXJ0aWVzLCBXVEZf
QVJSQVlfTEVOR1RIKGJvcmRlckJlZm9yZVByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtp
dEJvcmRlckJlZm9yZUxvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJv
cmRlckJlZm9yZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVX
aWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZSwgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJCZWZvcmVDb2xvciwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIGJv
cmRlckJlZm9yZVByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdl
YmtpdEJvcmRlckVuZExvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdEJvcmRl
ckVuZExvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckVuZFByb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJFbmRTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvciB9OwotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Qm9yZGVyRW5k
TG9uZ2hhbmQsIChib3JkZXJFbmRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckVu
ZFByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdEJvcmRlckVuZExvbmdoYW5kOworICAg
IHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckVuZFByb3BlcnRpZXNbXSA9IHsgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRT
dHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvciwgQ1NTUHJvcGVydHlJbnZhbGlk
IH07CisgICAgcmV0dXJuIGJvcmRlckVuZFByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVy
dHlJRCogd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGlu
dCBib3JkZXJTdGFydFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFy
dFdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUsIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyU3RhcnRDb2xvciB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVy
dHlMb25naGFuZCwgd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCwgKGJvcmRlclN0YXJ0UHJvcGVy
dGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJTdGFydFByb3BlcnRpZXMpKSk7Ci0gICAgcmV0
dXJuIHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQ7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3Bl
cnR5SUQgYm9yZGVyU3RhcnRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
U3RhcnRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlLCBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3IsIENTU1Byb3BlcnR5SW52YWxpZCB9OworICAgIHJldHVy
biBib3JkZXJTdGFydFByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IHdlYmtpdENvbHVtbnNMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRDb2x1
bW5zTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgY29sdW1uc1Byb3BlcnRpZXNb
XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5Db3VudCB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwg
d2Via2l0Q29sdW1uc0xvbmdoYW5kLCAoY29sdW1uc1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5H
VEgoY29sdW1uc1Byb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdENvbHVtbnNMb25naGFu
ZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBjb2x1bW5zUHJvcGVydGllc1tdID0g
eyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNv
dW50LCBDU1NQcm9wZXJ0eUludmFsaWQgfTsKKyAgICByZXR1cm4gY29sdW1uc1Byb3BlcnRpZXM7
CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENvbHVtblJ1bGVMb25naGFu
ZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQoKQogewot
ICAgIHN0YXRpYyBjb25zdCBpbnQgY29sdW1uUnVsZVByb3BlcnRpZXNbXSA9IHsKKyAgICBzdGF0
aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBjb2x1bW5SdWxlUHJvcGVydGllc1tdID0gewogICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5SdWxlU3R5bGUsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVs
ZUNvbG9yLAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Q29sdW1uUnVsZUxvbmdoYW5k
LCAoY29sdW1uUnVsZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoY29sdW1uUnVsZVByb3Bl
cnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZDsKKyAgICByZXR1
cm4gY29sdW1uUnVsZVByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0Rmxl
eEZsb3dMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBmbGV4Rmxvd1Byb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtp
dEZsZXhXcmFwIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCB3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kLCAoZmxleEZsb3dQcm9wZXJ0aWVzLCBXVEZfQVJSQVlf
TEVOR1RIKGZsZXhGbG93UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0RmxleEZsb3dM
b25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBmbGV4Rmxvd1Byb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtp
dEZsZXhXcmFwLCBDU1NQcm9wZXJ0eUludmFsaWQgfTsKKyAgICByZXR1cm4gZmxleEZsb3dQcm9w
ZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXJnaW5Db2xs
YXBzZUxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdE1hcmdpbkNvbGxhcHNl
TG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luQ29sbGFwc2VQcm9wZXJ0
aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Q1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCwgKG1hcmdp
bkNvbGxhcHNlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJnaW5Db2xsYXBzZVByb3Bl
cnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQ7CisgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgbWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzW10gPSB7
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQWZ0ZXJDb2xsYXBzZSwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIG1h
cmdpbkNvbGxhcHNlUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
d2Via2l0TWFycXVlZUxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdE1hcnF1
ZWVMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBtYXJxdWVlUHJvcGVydGllc1td
ID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIG1hcnF1ZWVQcm9wZXJ0aWVzW10g
PSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwKICAgICAgICAg
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50LAogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWVSZXBldGl0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVT
dHlsZSwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQKKyAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQsCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAog
ICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJr
aXRNYXJxdWVlTG9uZ2hhbmQsIChtYXJxdWVlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCht
YXJxdWVlUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0TWFycXVlZUxvbmdoYW5kOwor
ICAgIHJldHVybiBtYXJxdWVlUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgd2Via2l0TWFza0xvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdE1h
c2tMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBtYXNrUHJvcGVydGllc1tdID0g
eworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIG1hc2tQcm9wZXJ0aWVzW10gPSB7CiAg
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLAogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXRYLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLApA
QCAtMzQ1LDc5ICszMzAsNzYgQEAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFz
a0xvbmdoYW5kKCkKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLAogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksCiAgICAgICAgIENTU1Byb3BlcnR5
V2Via2l0TWFza0NsaXAsCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbgorICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sCisgICAgICAgIENTU1Byb3BlcnR5SW52
YWxpZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCB3ZWJraXRNYXNrTG9uZ2hhbmQsIChtYXNrUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCht
YXNrUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0TWFza0xvbmdoYW5kOworICAgIHJl
dHVybiBtYXNrUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Vi
a2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0TWFz
a1Bvc2l0aW9uTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFza1Bvc2l0aW9u
UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIENTU1Byb3Bl
cnR5V2Via2l0TWFza1Bvc2l0aW9uWSB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJv
cGVydHlMb25naGFuZCwgd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQsIChtYXNrUG9zaXRpb25Q
cm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hc2tQb3NpdGlvblByb3BlcnRpZXMpKSk7Ci0g
ICAgcmV0dXJuIHdlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBD
U1NQcm9wZXJ0eUlEIG1hc2tQb3NpdGlvblByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb25YLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIENTU1Byb3Bl
cnR5SW52YWxpZCB9OworICAgIHJldHVybiBtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzOwogfQogCi1j
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQoKQorY29u
c3QgQ1NTUHJvcGVydHlJRCogd2Via2l0TWFza1JlcGVhdExvbmdoYW5kKCkKIHsKLSAgICBzdGF0
aWMgY29uc3QgaW50IG1hc2tSZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0
TWFza1JlcGVhdFgsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkgfTsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdE1hc2tSZXBlYXRMb25naGFu
ZCwgKG1hc2tSZXBlYXRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hc2tSZXBlYXRQcm9w
ZXJ0aWVzKSkpOwotICAgIHJldHVybiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQ7CisgICAgc3Rh
dGljIGNvbnN0IENTU1Byb3BlcnR5SUQgbWFza1JlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJv
cGVydHlXZWJraXRNYXNrUmVwZWF0WCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgQ1NT
UHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIG1hc2tSZXBlYXRQcm9wZXJ0aWVzOwogfQog
Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZCgp
Citjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZCgpCiB7Ci0g
ICAgc3RhdGljIGNvbnN0IGludCB0ZXh0RW1waGFzaXNQcm9wZXJ0aWVzW10gPSB7CisgICAgc3Rh
dGljIGNvbnN0IENTU1Byb3BlcnR5SUQgdGV4dEVtcGhhc2lzUHJvcGVydGllc1tdID0gewogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlLAotICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yCisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VGV4
dEVtcGhhc2lzQ29sb3IsCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUZXh0RW1waGFz
aXNMb25naGFuZCwgKHRleHRFbXBoYXNpc1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodGV4
dEVtcGhhc2lzUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0VGV4dEVtcGhhc2lzTG9u
Z2hhbmQ7CisgICAgcmV0dXJuIHRleHRFbXBoYXNpc1Byb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRleHRTdHJva2VMb25naGFuZCgpCitjb25zdCBDU1NQ
cm9wZXJ0eUlEKiB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25z
dCBpbnQgdGV4dFN0cm9rZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ry
b2tlV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yIH07Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hh
bmQsICh0ZXh0U3Ryb2tlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0ZXh0U3Ryb2tlUHJv
cGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kOworICAgIHN0
YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHRleHRTdHJva2VQcm9wZXJ0aWVzW10gPSB7IENTU1By
b3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VD
b2xvciwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIHRleHRTdHJva2VQcm9wZXJ0
aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUcmFuc2l0aW9uTG9u
Z2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkK
IHsKLSAgICBzdGF0aWMgY29uc3QgaW50IHRyYW5zaXRpb25Qcm9wZXJ0aWVzW10gPSB7CisgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgdHJhbnNpdGlvblByb3BlcnRpZXNbXSA9IHsKICAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHksCiAgICAgICAgIENTU1By
b3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2l0aW9uRGVsYXkKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXksCisg
ICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQsICh0cmFuc2l0
aW9uUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0cmFuc2l0aW9uUHJvcGVydGllcykpKTsK
LSAgICByZXR1cm4gd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kOworICAgIHJldHVybiB0cmFuc2l0
aW9uUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJh
bnNmb3JtT3JpZ2luTG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0VHJhbnNm
b3JtT3JpZ2luTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgdHJhbnNmb3JtT3Jp
Z2luUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHRyYW5z
Zm9ybU9yaWdpblByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1PcmlnaW5YLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblks
Ci0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWgorICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblosCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxp
ZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3
ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZCwgKHRyYW5zZm9ybU9yaWdpblByb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgodHJhbnNmb3JtT3JpZ2luUHJvcGVydGllcykpKTsKLSAgICByZXR1
cm4gd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQ7CisgICAgcmV0dXJuIHRyYW5zZm9ybU9y
aWdpblByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFdy
YXBMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRXcmFwTG9uZ2hhbmQoKQog
ewotICAgIHN0YXRpYyBjb25zdCBpbnQgd2Via2l0V3JhcFByb3BlcnRpZXNbXSA9IHsKKyAgICBz
dGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCB3ZWJraXRXcmFwUHJvcGVydGllc1tdID0gewogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtp
dFdyYXBNYXJnaW4sCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcFBhZGRpbmcKKyAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZywKKyAgICAgICAgQ1NTUHJvcGVydHlJbnZh
bGlkCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQs
IHdlYmtpdFdyYXBMb25naGFuZCwgKHdlYmtpdFdyYXBQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVO
R1RIKHdlYmtpdFdyYXBQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiB3ZWJraXRXcmFwTG9uZ2hh
bmQ7CisgICAgcmV0dXJuIHdlYmtpdFdyYXBQcm9wZXJ0aWVzOwogfQogCiAvLyBSZXR1cm5zIGFu
IGVtcHR5IGxpc3QgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCBhIHNob3J0aGFuZAotY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmRGb3JQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkKK2Nv
bnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kc0ZvclByb3BlcnR5KGludCBwcm9wZXJ0eUlEKQog
ewogICAgIHN3aXRjaCAocHJvcGVydHlJRCkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kOgpAQCAtNDI3LDcgKzQwOSw3IEBAIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdo
YW5kRm9yUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXQ6CiAgICAgICAgIHJldHVybiBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQoKTsK
ICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOgotICAgICAgICByZXR1cm4gYm9yZGVyTG9uZ2hh
bmQoKTsKKyAgICAgICAgcmV0dXJuIGJvcmRlckxvbmdoYW5kRXhwYW5kZWQoKTsKICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tOgogICAgICAgICByZXR1cm4gYm9yZGVyQm90dG9tTG9u
Z2hhbmQoKTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6CkBAIC00OTgsMTAgKzQ4
MCw4IEBAIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kRm9yUHJvcGVydHkoaW50
IHByb3BlcnR5SUQpCiAgICAgICAgIHJldHVybiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFu
ZCgpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwOgogICAgICAgICByZXR1cm4gd2Vi
a2l0V3JhcExvbmdoYW5kKCk7Ci0gICAgZGVmYXVsdDogewotICAgICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGRlZmF1bHRMb25naGFuZCwgKCkpOwotICAgICAg
ICByZXR1cm4gZGVmYXVsdExvbmdoYW5kOwotICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eUxvbmdoYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFu
ZC5oCmluZGV4IDkxNzBmZjYyNTg3ZDFlNTE3YzdmZTYzNDgyMWI0NmIxMTEzYThiMDguLjFjY2Jk
M2UzY2U3ODVjM2FhMWZiM2ZhNmI5MDRkNDBiN2Q3ZWUxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TG9uZ2hhbmQuaApAQCAtMjEsODMgKzIxLDUzIEBACiAjaWZuZGVmIENTU1By
b3BlcnR5TG9uZ2hhbmRfaAogI2RlZmluZSBDU1NQcm9wZXJ0eUxvbmdoYW5kX2gKIAotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBDU1NQcm9wZXJ0eUxvbmdoYW5kIHsKLXB1YmxpYzoKLSAg
ICBDU1NQcm9wZXJ0eUxvbmdoYW5kKCkKLSAgICAgICAgOiBtX3Byb3BlcnRpZXMoMCkKLSAgICAg
ICAgLCBtX2xvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uKDApCi0gICAgICAgICwgbV9sZW5ndGgo
MCkKLSAgICB7Ci0gICAgfQotCi0gICAgQ1NTUHJvcGVydHlMb25naGFuZChjb25zdCBpbnQqIHBy
b3BlcnRpZXMsIHVuc2lnbmVkIG51bVByb3BlcnRpZXMpCi0gICAgICAgIDogbV9wcm9wZXJ0aWVz
KHByb3BlcnRpZXMpCi0gICAgICAgICwgbV9sb25naGFuZHNGb3JJbml0aWFsaXphdGlvbigwKQot
ICAgICAgICAsIG1fbGVuZ3RoKG51bVByb3BlcnRpZXMpCi0gICAgewotICAgIH0KKyNpbmNsdWRl
ICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAKLSAgICBDU1NQcm9wZXJ0eUxvbmdoYW5kKGNvbnN0IGlu
dCogcHJvcGVydGllcywgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCoqIGxvbmdoYW5kc0Zvcklu
aXRpYWxpemF0aW9uLCB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzKQotICAgICAgICA6IG1fcHJvcGVy
dGllcyhwcm9wZXJ0aWVzKQotICAgICAgICAsIG1fbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24o
bG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24pCi0gICAgICAgICwgbV9sZW5ndGgobnVtUHJvcGVy
dGllcykKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgaW50KiBwcm9wZXJ0aWVzKCkgY29uc3Qg
eyByZXR1cm4gbV9wcm9wZXJ0aWVzOyB9Ci0gICAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCoq
IGxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb25naGFuZHNG
b3JJbml0aWFsaXphdGlvbjsgfQotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGVuZ3RoOyB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgaW50KiBtX3Byb3BlcnRpZXM7Ci0g
ICAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCoqIG1fbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRp
b247Ci0gICAgdW5zaWduZWQgbV9sZW5ndGg7Ci19OworbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBiYWNrZ3JvdW5kTG9uZ2hhbmQoKTsKLWNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kKCk7Ci1jb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQoKTsKLWNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxv
bmdoYW5kJiBib3JkZXJBYnJpZGdlZExvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiBib3JkZXJCb3R0b21Mb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
Ym9yZGVyQ29sb3JMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVy
SW1hZ2VMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyTGVmdExv
bmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJSYWRpdXNMb25naGFu
ZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyUmlnaHRMb25naGFuZCgpOwot
Y29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyU3BhY2luZ0xvbmdoYW5kKCk7Ci1jb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJTdHlsZUxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJUb3BMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgYm9yZGVyV2lkdGhMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFu
ZCYgbGlzdFN0eWxlTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGZvbnRM
b25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbWFyZ2luTG9uZ2hhbmQoKTsK
LWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIG91dGxpbmVMb25naGFuZCgpOwotY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYgb3ZlcmZsb3dMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgcGFkZGluZ0xvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3
ZWJraXRBbmltYXRpb25Mb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Vi
a2l0Qm9yZGVyQWZ0ZXJMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Vi
a2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdl
YmtpdEJvcmRlckVuZExvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJr
aXRCb3JkZXJTdGFydExvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJr
aXRDb2x1bW5zTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENv
bHVtblJ1bGVMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Rmxl
eEZsb3dMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFyZ2lu
Q29sbGFwc2VMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFy
cXVlZUxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrTG9u
Z2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tQb3NpdGlvbkxv
bmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrUmVwZWF0TG9u
Z2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRleHRFbXBoYXNpc0xv
bmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUZXh0U3Ryb2tlTG9u
Z2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRyYW5zaXRpb25Mb25n
aGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJhbnNmb3JtT3JpZ2lu
TG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFdyYXBMb25naGFu
ZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogYmFja2dyb3VuZExvbmdoYW5kKCk7Citjb25zdCBD
U1NQcm9wZXJ0eUlEKiBiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZCgpOworY29uc3QgQ1NTUHJv
cGVydHlJRCogYmFja2dyb3VuZFJlcGVhdExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlE
KiBib3JkZXJMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVyTG9uZ2hhbmRF
eHBhbmRlZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCoqIGJvcmRlckxvbmdoYW5kc0ZvckluaXRp
YWxpemF0aW9uKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJCb3R0b21Mb25naGFuZCgp
OworY29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVyQ29sb3JMb25naGFuZCgpOworY29uc3QgQ1NT
UHJvcGVydHlJRCogYm9yZGVySW1hZ2VMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCog
Ym9yZGVyTGVmdExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJSYWRpdXNM
b25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVyUmlnaHRMb25naGFuZCgpOwor
Y29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVyU3BhY2luZ0xvbmdoYW5kKCk7Citjb25zdCBDU1NQ
cm9wZXJ0eUlEKiBib3JkZXJTdHlsZUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiBi
b3JkZXJUb3BMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVyV2lkdGhMb25n
aGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogbGlzdFN0eWxlTG9uZ2hhbmQoKTsKK2NvbnN0
IENTU1Byb3BlcnR5SUQqIGZvbnRMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogbWFy
Z2luTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5SUQqIG91dGxpbmVMb25naGFuZCgpOwor
Y29uc3QgQ1NTUHJvcGVydHlJRCogb3ZlcmZsb3dMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVy
dHlJRCogcGFkZGluZ0xvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRBbmlt
YXRpb25Mb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0Qm9yZGVyQWZ0ZXJM
b25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hh
bmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdEJvcmRlckVuZExvbmdoYW5kKCk7Citj
b25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRCb3JkZXJTdGFydExvbmdoYW5kKCk7Citjb25zdCBD
U1NQcm9wZXJ0eUlEKiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5
SUQqIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Vi
a2l0RmxleEZsb3dMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0TWFyZ2lu
Q29sbGFwc2VMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0TWFycXVlZUxv
bmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRNYXNrTG9uZ2hhbmQoKTsKK2Nv
bnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kKCk7Citjb25zdCBD
U1NQcm9wZXJ0eUlEKiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3Bl
cnR5SUQqIHdlYmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlE
KiB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtp
dFRyYW5zaXRpb25Mb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0VHJhbnNm
b3JtT3JpZ2luTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdFdyYXBMb25n
aGFuZCgpOwogCiAvLyBSZXR1cm5zIGFuIGVtcHR5IGxpc3QgaWYgdGhlIHByb3BlcnR5IGlzIG5v
dCBhIHNob3J0aGFuZAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmRGb3JQcm9w
ZXJ0eShpbnQpOworY29uc3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzRm9yUHJvcGVydHkoaW50
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0eVNldC5jcHAKaW5kZXggZjUwMjZlMDA4M2Y4MzQ2NzQ0ZjZjY2JjYjM5MTFjODMxYzhkMGM0
Yi4uMWIyMzVkNDkxYzFiZTU0MTc1MDA0MTgxOTkyYWZhMDM5YzgxNzFhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAtMjQsNyArMjQsNiBAQAogCiAjaW5jbHVk
ZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlMb25naGFuZC5oIgotI2luY2x1
ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAj
aW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCkBAIC0x
MTEsNyArMTEwLDcgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3BlcnR5VmFsdWUo
aW50IHByb3BlcnR5SUQpIGNvbnN0CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6CiAg
ICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoYmFja2dyb3VuZExvbmdoYW5k
KCkpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6IHsKLSAgICAgICAgY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCBwcm9wZXJ0aWVzWzNdID0geyBib3JkZXJXaWR0aExvbmdoYW5kKCksIGJv
cmRlclN0eWxlTG9uZ2hhbmQoKSwgYm9yZGVyQ29sb3JMb25naGFuZCgpIH07CisgICAgICAgIGNv
bnN0IENTU1Byb3BlcnR5SUQqIHByb3BlcnRpZXNbM10gPSB7IGJvcmRlcldpZHRoTG9uZ2hhbmQo
KSwgYm9yZGVyU3R5bGVMb25naGFuZCgpLCBib3JkZXJDb2xvckxvbmdoYW5kKCkgfTsKICAgICAg
ICAgU3RyaW5nIHJlczsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlf
TEVOR1RIKHByb3BlcnRpZXMpOyArK2kpIHsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IGdl
dENvbW1vblZhbHVlKHByb3BlcnRpZXNbaV0pOwpAQCAtMTc2LDEwICsxNzUsMTAgQEAgU3RyaW5n
IFN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3BlcnR5VmFsdWUoaW50IHByb3BlcnR5SUQpIGNvbnN0
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1TdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Ym9y
ZGVyU3BhY2luZ1ZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25z
dAorU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmJvcmRlclNwYWNpbmdWYWx1ZShjb25zdCBDU1NQ
cm9wZXJ0eUlEKiBsb25naGFuZHMpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBob3Jp
em9udGFsVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVsw
XSk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiB2ZXJ0aWNhbFZhbHVlID0gZ2V0UHJvcGVydHlDU1NW
YWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbMV0pOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gaG9y
aXpvbnRhbFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZHNbMF0pOworICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gdmVydGljYWxWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hh
bmRzWzFdKTsKIAogICAgIGlmICghaG9yaXpvbnRhbFZhbHVlKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CkBAIC0yNDgsMTMgKzI0NywxMyBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Zm9u
dFZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLVN0cmlu
ZyBTdHlsZVByb3BlcnR5U2V0OjpnZXQ0VmFsdWVzKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IGxvbmdoYW5kKSBjb25zdAorU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldDRWYWx1ZXMoY29u
c3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzKSBjb25zdAogewogICAgIC8vIEFzc3VtZSB0aGUg
cHJvcGVydGllcyBhcmUgaW4gdGhlIHVzdWFsIG9yZGVyIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVm
dC4KLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShs
b25naGFuZC5wcm9wZXJ0aWVzKClbMF0pOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmlnaHRWYWx1
ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpWzFdKTsKLSAgICBS
ZWZQdHI8Q1NTVmFsdWU+IGJvdHRvbVZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFu
ZC5wcm9wZXJ0aWVzKClbMl0pOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gbGVmdFZhbHVlID0gZ2V0
UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbM10pOworICAgIFJlZlB0cjxD
U1NWYWx1ZT4gdG9wVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1swXSk7Cisg
ICAgUmVmUHRyPENTU1ZhbHVlPiByaWdodFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25n
aGFuZHNbMV0pOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gYm90dG9tVmFsdWUgPSBnZXRQcm9wZXJ0
eUNTU1ZhbHVlKGxvbmdoYW5kc1syXSk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBsZWZ0VmFsdWUg
PSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1szXSk7CiAKICAgICAvLyBBbGwgNCBwcm9w
ZXJ0aWVzIG11c3QgYmUgc3BlY2lmaWVkLgogICAgIGlmICghdG9wVmFsdWUgfHwgIXJpZ2h0VmFs
dWUgfHwgIWJvdHRvbVZhbHVlIHx8ICFsZWZ0VmFsdWUpCkBAIC0yNzUsMTcgKzI3NCwxNSBAQCBT
dHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0NFZhbHVlcyhjb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiBsb25naGFuZCkgY29uc3QKICAgICByZXR1cm4gcmVzOwogfQogCi1TdHJpbmcgU3R5bGVQ
cm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9u
Z2hhbmQmIGxvbmdoYW5kKSBjb25zdAorU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVy
ZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUlEKiBsb25naGFuZHMpIGNvbnN0CiB7
CiAgICAgU3RyaW5nIHJlczsKLQotICAgIGNvbnN0IHVuc2lnbmVkIHNpemUgPSBsb25naGFuZC5s
ZW5ndGgoKTsKICAgICAvLyBCZWdpbiBieSBjb2xsZWN0aW5nIHRoZSBwcm9wZXJ0aWVzIGludG8g
YW4gYXJyYXkuCi0gICAgVmVjdG9yPCBSZWZQdHI8Q1NTVmFsdWU+ID4gdmFsdWVzKHNpemUpOwor
ICAgIFZlY3RvcjwgUmVmUHRyPENTU1ZhbHVlPiA+IHZhbHVlczsKICAgICBzaXplX3QgbnVtTGF5
ZXJzID0gMDsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAg
ICAgICAgdmFsdWVzW2ldID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVz
KClbaV0pOworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZvciAoOyBsb25naGFuZHNbaV0gIT0g
Q1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKKyAgICAgICAgdmFsdWVzLmFwcGVuZChnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1tpXSkpOwogICAgICAgICBpZiAodmFsdWVzW2ldKSB7CiAg
ICAgICAgICAgICBpZiAodmFsdWVzW2ldLT5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAgICAgICAg
ICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2
YWx1ZXNbaV0uZ2V0KCkpOwpAQCAtMjk0LDcgKzI5MSw3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5
U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
bG9uCiAgICAgICAgICAgICAgICAgbnVtTGF5ZXJzID0gbWF4PHNpemVfdD4oMVUsIG51bUxheWVy
cyk7CiAgICAgICAgIH0KICAgICB9Ci0KKyAgICBjb25zdCB1bnNpZ25lZCBzaXplID0gaTsKICAg
ICAvLyBOb3cgc3RpdGNoIHRoZSBwcm9wZXJ0aWVzIHRvZ2V0aGVyLiAgSW1wbGljaXQgaW5pdGlh
bCB2YWx1ZXMgYXJlIGZsYWdnZWQgYXMgc3VjaCBhbmQKICAgICAvLyBjYW4gc2FmZWx5IGJlIG9t
aXR0ZWQuCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1MYXllcnM7IGkrKykgewpAQCAt
MzExLDcgKzMwOCw3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRo
YW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uCiAgICAgICAgICAgICAgICAg
ICAgIHZhbHVlID0gdmFsdWVzW2pdOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIENvbG9yIG9u
bHkgYmVsb25ncyBpbiB0aGUgbGFzdCBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgaWYgKGxv
bmdoYW5kLnByb3BlcnRpZXMoKVtqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikgewor
ICAgICAgICAgICAgICAgICAgICBpZiAobG9uZ2hhbmRzW2pdID09IENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPSBudW1MYXllcnMg
LSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChpICE9IDApIC8vIE90aGVyIHNpbmdsZXRvbnMgb25seSBiZWxv
bmcgaW4gdGhlIGZpcnN0IGxheWVyLgpAQCAtMzIyLDEwICszMTksMTAgQEAgU3RyaW5nIFN0eWxl
UHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxv
bmdoYW5kJiBsb24KICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmVwb3J0IGJhY2tncm91bmQt
cmVwZWF0IGFzIGl0IHdhcyB3cml0dGVuIGluIHRoZSBDU1MuIElmIHRoZSBwcm9wZXJ0eSBpcyBp
bXBsaWNpdCwKICAgICAgICAgICAgIC8vIHRoZW4gaXQgd2FzIHdyaXR0ZW4gd2l0aCBvbmx5IG9u
ZSB2YWx1ZS4gSGVyZSB3ZSBmaWd1cmUgb3V0IHdoaWNoIHZhbHVlIHRoYXQgd2FzIHNvIHdlIGNh
bgogICAgICAgICAgICAgLy8gcmVwb3J0IGJhY2sgY29ycmVjdGx5LgotICAgICAgICAgICAgaWYg
KGxvbmdoYW5kLnByb3BlcnRpZXMoKVtqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRY
ICYmIGlzUHJvcGVydHlJbXBsaWNpdChsb25naGFuZC5wcm9wZXJ0aWVzKClbal0pKSB7CisgICAg
ICAgICAgICBpZiAobG9uZ2hhbmRzW2pdID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgg
JiYgaXNQcm9wZXJ0eUltcGxpY2l0KGxvbmdoYW5kc1tqXSkpIHsKIAogICAgICAgICAgICAgICAg
IC8vIEJVRyA0OTA1NTogbWFrZSBzdXJlIHRoZSB2YWx1ZSB3YXMgbm90IHJlc2V0IGluIHRoZSBs
YXllciBjaGVjayBqdXN0IGFib3ZlLgotICAgICAgICAgICAgICAgIGlmIChqIDwgc2l6ZSAtIDEg
JiYgbG9uZ2hhbmQucHJvcGVydGllcygpW2ogKyAxXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRS
ZXBlYXRZICYmIHZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgKGogPCBzaXplIC0gMSAmJiBs
b25naGFuZHNbaiArIDFdID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkgJiYgdmFsdWUp
IHsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB5VmFsdWU7CiAgICAgICAg
ICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gbmV4dFZhbHVlID0gdmFsdWVzW2ogKyAxXTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRWYWx1ZS0+aXNWYWx1ZUxpc3QoKSkKQEAgLTM3
NiwxMiArMzczLDEyIEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRo
YW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uCiAgICAgcmV0dXJuIHJlczsK
IH0KIAotU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldFNob3J0aGFuZFZhbHVlKGNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25zdAorU3RyaW5nIFN0eWxlUHJvcGVydHlT
ZXQ6OmdldFNob3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcykgY29u
c3QKIHsKICAgICBTdHJpbmcgcmVzOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsb25n
aGFuZC5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlmICghaXNQcm9wZXJ0eUltcGxpY2l0KGxv
bmdoYW5kLnByb3BlcnRpZXMoKVtpXSkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVtpXSk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgbG9uZ2hhbmRzW2ldICE9IENTU1Byb3BlcnR5SW52YWxp
ZDsgKytpKSB7CisgICAgICAgIGlmICghaXNQcm9wZXJ0eUltcGxpY2l0KGxvbmdoYW5kc1tpXSkp
IHsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1Zh
bHVlKGxvbmdoYW5kc1tpXSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogcHJvdmlkZSBkZWZhdWx0
IHZhbHVlIGlmICF2YWx1ZSBvciB2YWx1ZSBpcyBpbml0aWFsIHZhbHVlCiAgICAgICAgICAgICBp
ZiAodmFsdWUgJiYgIXZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKCFyZXMuaXNOdWxsKCkpCkBAIC0zOTQsMTEgKzM5MSwxMSBAQCBTdHJpbmcgU3R5bGVQcm9w
ZXJ0eVNldDo6Z2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9u
Z2hhbmQpCiB9CiAKIC8vIG9ubHkgcmV0dXJucyBhIG5vbi1udWxsIHZhbHVlIGlmIGFsbCBwcm9w
ZXJ0aWVzIGhhdmUgdGhlIHNhbWUsIG5vbi1udWxsIHZhbHVlCi1TdHJpbmcgU3R5bGVQcm9wZXJ0
eVNldDo6Z2V0Q29tbW9uVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQp
IGNvbnN0CitTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0Q29tbW9uVmFsdWUoY29uc3QgQ1NT
UHJvcGVydHlJRCogbG9uZ2hhbmRzKSBjb25zdAogewogICAgIFN0cmluZyByZXM7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAg
UmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJv
cGVydGllcygpW2ldKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBsb25naGFuZHNbaV0gIT0g
Q1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1
ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmRzW2ldKTsKICAgICAgICAgLy8gRklYTUU6
IENTU0luaXRpYWxWYWx1ZTo6Y3NzVGV4dCBzaG91bGQgZ2VuZXJhdGUgdGhlIHJpZ2h0IHZhbHVl
LgogICAgICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKQogICAgICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtNDIxLDEwICs0MTgsMTAgQEAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gU3R5bGVQcm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVy
dHlJRCkgY29uc3QKIAogYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpyZW1vdmVTaG9ydGhhbmRQcm9w
ZXJ0eShpbnQgcHJvcGVydHlJRCkKIHsKLSAgICBDU1NQcm9wZXJ0eUxvbmdoYW5kIGxvbmdoYW5k
ID0gbG9uZ2hhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKLSAgICBpZiAoIWxvbmdoYW5kLmxl
bmd0aCgpKQorICAgIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcyA9IGxvbmdoYW5kc0Zv
clByb3BlcnR5KHByb3BlcnR5SUQpOworICAgIGlmICghbG9uZ2hhbmRzKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHJlbW92ZVByb3BlcnRpZXNJblNldChsb25naGFuZC5wcm9w
ZXJ0aWVzKCksIGxvbmdoYW5kLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVydGll
c0luU2V0KGxvbmdoYW5kcyk7CiB9CiAKIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlUHJv
cGVydHkoaW50IHByb3BlcnR5SUQsIFN0cmluZyogcmV0dXJuVGV4dCkKQEAgLTQ1OSwxMiArNDU2
LDEyIEBAIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cHJvcGVydHlJc0ltcG9ydGFudChpbnQgcHJv
cGVydHlJRCkgY29uc3QKICAgICBpZiAocHJvcGVydHkpCiAgICAgICAgIHJldHVybiBwcm9wZXJ0
eS0+aXNJbXBvcnRhbnQoKTsKIAotICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmRzID0g
bG9uZ2hhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKLSAgICBpZiAoIWxvbmdoYW5kcy5sZW5n
dGgoKSkKKyAgICBjb25zdCBDU1NQcm9wZXJ0eUlEKiBsb25naGFuZHMgPSBsb25naGFuZHNGb3JQ
cm9wZXJ0eShwcm9wZXJ0eUlEKTsKKyAgICBpZiAoIWxvbmdoYW5kcykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5kcy5sZW5ndGgo
KTsgKytpKSB7Ci0gICAgICAgIGlmICghcHJvcGVydHlJc0ltcG9ydGFudChsb25naGFuZHMucHJv
cGVydGllcygpW2ldKSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBsb25naGFuZHNbaV0gIT0g
Q1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKKyAgICAgICAgaWYgKCFwcm9wZXJ0eUlzSW1wb3J0
YW50KGxvbmdoYW5kc1tpXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IHJldHVybiB0cnVlOwpAQCAtNDk4LDE3ICs0OTUsMTcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0
OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBp
bXAKIAogdm9pZCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gcHJwVmFsdWUsIGJvb2wgaW1wb3J0YW50KQogewotICAgIENT
U1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmQgPSBsb25naGFuZEZvclByb3BlcnR5KHByb3BlcnR5
SUQpOwotICAgIGlmICghbG9uZ2hhbmQubGVuZ3RoKCkpIHsKKyAgICBjb25zdCBDU1NQcm9wZXJ0
eUlEKiBsb25naGFuZHMgPSBsb25naGFuZHNGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKKyAgICBp
ZiAoIWxvbmdoYW5kcykgewogICAgICAgICBzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eShwcm9wZXJ0
eUlELCBwcnBWYWx1ZSwgaW1wb3J0YW50KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICByZW1vdmVQcm9wZXJ0aWVzSW5TZXQobG9uZ2hhbmQucHJvcGVydGllcygpLCBsb25naGFuZC5s
ZW5ndGgoKSk7CisgICAgcmVtb3ZlUHJvcGVydGllc0luU2V0KGxvbmdoYW5kcyk7CiAKICAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gcHJwVmFsdWU7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kpCi0gICAgICAgIG1fcHJvcGVydGllcy5hcHBl
bmQoQ1NTUHJvcGVydHkobG9uZ2hhbmQucHJvcGVydGllcygpW2ldLCB2YWx1ZSwgaW1wb3J0YW50
KSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgbG9uZ2hhbmRzW2ldICE9IENTU1Byb3BlcnR5
SW52YWxpZDsgKytpKQorICAgICAgICBtX3Byb3BlcnRpZXMuYXBwZW5kKENTU1Byb3BlcnR5KGxv
bmdoYW5kc1tpXSwgdmFsdWUsIGltcG9ydGFudCkpOwogfQogCiB2b2lkIFN0eWxlUHJvcGVydHlT
ZXQ6OnNldFByb3BlcnR5KGNvbnN0IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHkq
IHNsb3QpCkBAIC02MDcsMTIgKzYwNCwxMiBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6YXNU
ZXh0KCkgY29uc3QKICAgICAgICAgICAgIHNob3J0aGFuZFByb3BlcnR5SUQgPSBDU1NQcm9wZXJ0
eUJvcmRlcjsKICAgICAgICAgICAgIGlmIChzaG9ydGhhbmRQcm9wZXJ0eUFwcGVhcmVkLmdldChD
U1NQcm9wZXJ0eUJvcmRlciAtIGZpcnN0Q1NTUHJvcGVydHkpKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvcmRlckFicmlkZ2Vk
TG9uZ2hhbmQoKS5sZW5ndGgoKSAmJiBzaG9ydGhhbmRQcm9wZXJ0eUlEOyBpKyspIHsKLSAgICAg
ICAgICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZCA9ICooYm9yZGVy
QWJyaWRnZWRMb25naGFuZCgpLmxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uKClbaV0pOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgYm9yZGVyTG9uZ2hhbmQoKVtpXSAhPSBDU1NQ
cm9wZXJ0eUludmFsaWQgJiYgc2hvcnRoYW5kUHJvcGVydHlJRDsgaSsrKSB7CisgICAgICAgICAg
ICAgICAgY29uc3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzID0gYm9yZGVyTG9uZ2hhbmRzRm9y
SW5pdGlhbGl6YXRpb24oKVtpXTsKICAgICAgICAgICAgICAgICBTdHJpbmcgY29tbW9uVmFsdWU7
CiAgICAgICAgICAgICAgICAgYm9vbCBjb21tb25JbXBvcnRhbmNlID0gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBsb25naGFuZC5sZW5ndGgoKTsgKytqKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGludCBpZCA9IGxvbmdoYW5kLnByb3BlcnRpZXMoKVtqXTsK
KyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgbG9uZ2hhbmRzW2pdICE9IENTU1By
b3BlcnR5SW52YWxpZDsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBpZCA9IGxvbmdo
YW5kc1tqXTsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdl
dFByb3BlcnR5Q1NTVmFsdWUoaWQpOwogICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY3VycmVu
dFZhbHVlID0gdmFsdWUgPyB2YWx1ZS0+Y3NzVGV4dCgpIDogU3RyaW5nKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNJbXBvcnRhbnQgPSBwcm9wZXJ0eUlzSW1wb3J0YW50KGlkKTsKQEAg
LTgwNCw3ICs4MDEsNyBAQCB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OmFkZFN1YnJlc291cmNlU3R5
bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBDU1NTdHlsZQogCiAvLyBUaGlzIGlzIHRo
ZSBsaXN0IG9mIHByb3BlcnRpZXMgd2Ugd2FudCB0byBjb3B5IGluIHRoZSBjb3B5QmxvY2tQcm9w
ZXJ0aWVzKCkgZnVuY3Rpb24uCiAvLyBJdCBpcyB0aGUgbGlzdCBvZiBDU1MgcHJvcGVydGllcyB0
aGF0IGFwcGx5IHNwZWNpYWxseSB0byBibG9jay1sZXZlbCBlbGVtZW50cy4KLXN0YXRpYyBjb25z
dCBpbnQgYmxvY2tQcm9wZXJ0aWVzW10gPSB7CitzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBi
bG9ja1Byb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eU9ycGhhbnMsCiAgICAgQ1NTUHJv
cGVydHlPdmVyZmxvdywgLy8gVGhpcyBjYW4gYmUgYWxzbyBiZSBhcHBsaWVkIHRvIHJlcGxhY2Vk
IGVsZW1lbnRzCiAgICAgQ1NTUHJvcGVydHlXZWJraXRBc3BlY3RSYXRpbywKQEAgLTgyNSw3ICs4
MjIsOCBAQCBzdGF0aWMgY29uc3QgaW50IGJsb2NrUHJvcGVydGllc1tdID0gewogICAgIENTU1By
b3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGUsCiAgICAgQ1NTUHJvcGVydHlUZXh0QWxpZ24s
CiAgICAgQ1NTUHJvcGVydHlUZXh0SW5kZW50LAotICAgIENTU1Byb3BlcnR5V2lkb3dzCisgICAg
Q1NTUHJvcGVydHlXaWRvd3MsCisgICAgQ1NTUHJvcGVydHlJbnZhbGlkCiB9OwogCiBjb25zdCB1
bnNpZ25lZCBudW1CbG9ja1Byb3BlcnRpZXMgPSBXVEZfQVJSQVlfTEVOR1RIKGJsb2NrUHJvcGVy
dGllcyk7CkBAIC04MzcsMTcgKzgzNSwxNyBAQCBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+
IFN0eWxlUHJvcGVydHlTZXQ6OmNvcHlCbG9ja1Byb3BlcnRpZXMoKSBjb25zdAogCiB2b2lkIFN0
eWxlUHJvcGVydHlTZXQ6OnJlbW92ZUJsb2NrUHJvcGVydGllcygpCiB7Ci0gICAgcmVtb3ZlUHJv
cGVydGllc0luU2V0KGJsb2NrUHJvcGVydGllcywgbnVtQmxvY2tQcm9wZXJ0aWVzKTsKKyAgICBy
ZW1vdmVQcm9wZXJ0aWVzSW5TZXQoYmxvY2tQcm9wZXJ0aWVzKTsKIH0KIAotYm9vbCBTdHlsZVBy
b3BlcnR5U2V0OjpyZW1vdmVQcm9wZXJ0aWVzSW5TZXQoY29uc3QgaW50KiBzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKK2Jvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlUHJvcGVydGllc0luU2V0KGNv
bnN0IENTU1Byb3BlcnR5SUQqIHNldCkKIHsKICAgICBpZiAobV9wcm9wZXJ0aWVzLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYWx3YXlz
IHVzZWQgd2l0aCBzdGF0aWMgc2V0cyBhbmQgaW4gdGhhdCBjYXNlIGNvbnN0cnVjdGluZyB0aGUg
aGFzaCByZXBlYXRlZGx5IGlzIHByZXR0eSBwb2ludGxlc3MuCiAgICAgSGFzaFNldDxpbnQ+IHRv
UmVtb3ZlOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBzZXRbaV0gIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyArK2kpCiAg
ICAgICAgIHRvUmVtb3ZlLmFkZChzZXRbaV0pOwogCiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCA0
PiBuZXdQcm9wZXJ0aWVzOwpAQCAtOTI2LDcgKzkyNCw3IEBAIFBhc3NSZWZQdHI8U3R5bGVQcm9w
ZXJ0eVNldD4gU3R5bGVQcm9wZXJ0eVNldDo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTdHlsZVByb3BlcnR5U2V0KG1fcHJvcGVydGllcykpOwogfQogCi1QYXNzUmVmUHRy
PFN0eWxlUHJvcGVydHlTZXQ+IFN0eWxlUHJvcGVydHlTZXQ6OmNvcHlQcm9wZXJ0aWVzSW5TZXQo
Y29uc3QgaW50KiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKK1Bhc3NSZWZQdHI8U3R5bGVQ
cm9wZXJ0eVNldD4gU3R5bGVQcm9wZXJ0eVNldDo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBD
U1NQcm9wZXJ0eUlEKiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIHsKICAgICBWZWN0b3I8
Q1NTUHJvcGVydHk+IGxpc3Q7CiAgICAgbGlzdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCA5ODhjZTYyMjU0NGFi
MWE0NjVmMGU3ZTczODE2OWI2YjhjYjVkOWU1Li5hMTU0YjJjYzM0M2M3OGI2NDAzNWI5ODRlMTQ2
YmUyOWFiNTU1ZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
eVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKQEAgLTIz
LDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTUHJvcGVydHkuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSA8
d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzAsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDU1NSdWxlOwotY2xhc3MgQ1NTUHJvcGVydHlMb25naGFuZDsKIGNsYXNzIENT
U1N0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBLVVJMOwogY2xhc3MgUHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uOwpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRy
PFN0eWxlUHJvcGVydHlTZXQ+IGNvcHlCbG9ja1Byb3BlcnRpZXMoKSBjb25zdDsKICAgICB2b2lk
IHJlbW92ZUJsb2NrUHJvcGVydGllcygpOwotICAgIGJvb2wgcmVtb3ZlUHJvcGVydGllc0luU2V0
KGNvbnN0IGludCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIGJvb2wgcmVtb3ZlUHJvcGVy
dGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCk7CiAKICAgICB2b2lkIG1lcmdlKGNv
bnN0IFN0eWxlUHJvcGVydHlTZXQqLCBib29sIGFyZ092ZXJyaWRlc09uQ29uZmxpY3QgPSB0cnVl
KTsKIApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVFcXVpdmFsZW50
UHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0Kik7CiAgICAgdm9pZCByZW1vdmVFcXVp
dmFsZW50UHJvcGVydGllcyhjb25zdCBDU1NTdHlsZURlY2xhcmF0aW9uKik7CiAKLSAgICBQYXNz
UmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgaW50KiBz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5
U2V0PiBjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWdu
ZWQgbGVuZ3RoKSBjb25zdDsKICAgICAKICAgICBTdHJpbmcgYXNUZXh0KCkgY29uc3Q7CiAgICAg
CkBAIC0xMTgsMTEgKzExOCwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXROZWVkc1N0eWxl
UmVjYWxjKCk7CiAKLSAgICBTdHJpbmcgZ2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVy
dHlMb25naGFuZCYpIGNvbnN0OwotICAgIFN0cmluZyBnZXRDb21tb25WYWx1ZShjb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7Ci0gICAgU3RyaW5nIGdldExheWVyZWRTaG9ydGhhbmRW
YWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7Ci0gICAgU3RyaW5nIGdldDRW
YWx1ZXMoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0OwotICAgIFN0cmluZyBib3Jk
ZXJTcGFjaW5nVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0OworICAgIFN0
cmluZyBnZXRTaG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUlEKikgY29uc3Q7CisgICAg
U3RyaW5nIGdldENvbW1vblZhbHVlKGNvbnN0IENTU1Byb3BlcnR5SUQqKSBjb25zdDsKKyAgICBT
dHJpbmcgZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3BlcnR5SUQqKSBjb25z
dDsKKyAgICBTdHJpbmcgZ2V0NFZhbHVlcyhjb25zdCBDU1NQcm9wZXJ0eUlEKikgY29uc3Q7Cisg
ICAgU3RyaW5nIGJvcmRlclNwYWNpbmdWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUlEKikgY29uc3Q7
CiAgICAgU3RyaW5nIGZvbnRWYWx1ZSgpIGNvbnN0OwogICAgIGJvb2wgYXBwZW5kRm9udExvbmdo
YW5kVmFsdWVJZkV4cGxpY2l0KGludCBwcm9wZXJ0eUlELCBTdHJpbmdCdWlsZGVyJiByZXN1bHQp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHls
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggZTY3
Mzc3ZDBmMjZjOTk3YjdjYWM4YmIyYTNmZWZiMGFlZTE3MTVhYy4uYmQ3NGZjN2MxYzc3ZDBlMDgw
YTA4MjNjOGYwMjU5NzIxNmNjMDNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0
eWxlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEVkaXRp
bmcgc3R5bGUgcHJvcGVydGllcyBtdXN0IGJlIHByZXNlcnZlZCBkdXJpbmcgZWRpdGluZyBvcGVy
YXRpb24uCiAvLyBlLmcuIHdoZW4gYSB1c2VyIGluc2VydHMgYSBuZXcgcGFyYWdyYXBoLCBhbGwg
cHJvcGVydGllcyBsaXN0ZWQgaGVyZSBtdXN0IGJlIGNvcGllZCB0byB0aGUgbmV3IHBhcmFncmFw
aC4KLXN0YXRpYyBjb25zdCBpbnQgZWRpdGluZ1Byb3BlcnRpZXNbXSA9IHsKK3N0YXRpYyBjb25z
dCBDU1NQcm9wZXJ0eUlEIGVkaXRpbmdQcm9wZXJ0aWVzW10gPSB7CiAgICAgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IsCiAgICAgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwKIApAQCAtNjAz
LDEyICs2MDMsMTMgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OmNvbGxhcHNlVGV4dERlY29yYXRpb25Q
cm9wZXJ0aWVzKCkKIH0KIAogLy8gQ1NTIHByb3BlcnRpZXMgdGhhdCBjcmVhdGUgYSB2aXN1YWwg
ZGlmZmVyZW5jZSBvbmx5IHdoZW4gYXBwbGllZCB0byB0ZXh0Lgotc3RhdGljIGNvbnN0IGludCB0
ZXh0T25seVByb3BlcnRpZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHRleHRP
bmx5UHJvcGVydGllc1tdID0gewogICAgIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sCiAgICAg
Q1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwKICAgICBDU1NQcm9wZXJ0
eUZvbnRTdHlsZSwKICAgICBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsCiAgICAgQ1NTUHJvcGVydHlD
b2xvciwKKyAgICBDU1NQcm9wZXJ0eUludmFsaWQKIH07CiAKIFRyaVN0YXRlIEVkaXRpbmdTdHls
ZTo6dHJpU3RhdGVPZlN0eWxlKEVkaXRpbmdTdHlsZSogc3R5bGUpIGNvbnN0CkBAIC02MjMsNyAr
NjI0LDcgQEAgVHJpU3RhdGUgRWRpdGluZ1N0eWxlOjp0cmlTdGF0ZU9mU3R5bGUoQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGVUb0NvbXBhcmUsIFNob3UKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0
eVNldD4gZGlmZmVyZW5jZSA9IGdldFByb3BlcnRpZXNOb3RJbihtX211dGFibGVTdHlsZS5nZXQo
KSwgc3R5bGVUb0NvbXBhcmUpOwogCiAgICAgaWYgKHNob3VsZElnbm9yZVRleHRPbmx5UHJvcGVy
dGllcyA9PSBJZ25vcmVUZXh0T25seVByb3BlcnRpZXMpCi0gICAgICAgIGRpZmZlcmVuY2UtPnJl
bW92ZVByb3BlcnRpZXNJblNldCh0ZXh0T25seVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgo
dGV4dE9ubHlQcm9wZXJ0aWVzKSk7CisgICAgICAgIGRpZmZlcmVuY2UtPnJlbW92ZVByb3BlcnRp
ZXNJblNldCh0ZXh0T25seVByb3BlcnRpZXMpOwogCiAgICAgaWYgKGRpZmZlcmVuY2UtPmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKQEAgLTEwODQsMTEgKzEwODUsMTIg
QEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9u
KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpCiBzdGF0aWMgdm9pZCByZW1vdmVQcm9wZXJ0aWVzSW5T
dHlsZShTdHlsZVByb3BlcnR5U2V0KiBzdHlsZVRvUmVtb3ZlUHJvcGVydGllc0Zyb20sIFN0eWxl
UHJvcGVydHlTZXQqIHN0eWxlKQogewogICAgIHVuc2lnbmVkIHByb3BlcnR5Q291bnQgPSBzdHls
ZS0+cHJvcGVydHlDb3VudCgpOwotICAgIFZlY3RvcjxpbnQ+IHByb3BlcnRpZXNUb1JlbW92ZShw
cm9wZXJ0eUNvdW50KTsKKyAgICBWZWN0b3I8Q1NTUHJvcGVydHlJRD4gcHJvcGVydGllc1RvUmVt
b3ZlKHByb3BlcnR5Q291bnQgKyAxKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJv
cGVydHlDb3VudDsgKytpKQotICAgICAgICBwcm9wZXJ0aWVzVG9SZW1vdmVbaV0gPSBzdHlsZS0+
cHJvcGVydHlBdChpKS5pZCgpOworICAgICAgICBwcm9wZXJ0aWVzVG9SZW1vdmVbaV0gPSBzdGF0
aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihzdHlsZS0+cHJvcGVydHlBdChpKS5pZCgpKTsKKyAgICBw
cm9wZXJ0aWVzVG9SZW1vdmUuYXBwZW5kKENTU1Byb3BlcnR5SW52YWxpZCk7CiAKLSAgICBzdHls
ZVRvUmVtb3ZlUHJvcGVydGllc0Zyb20tPnJlbW92ZVByb3BlcnRpZXNJblNldChwcm9wZXJ0aWVz
VG9SZW1vdmUuZGF0YSgpLCBwcm9wZXJ0aWVzVG9SZW1vdmUuc2l6ZSgpKTsKKyAgICBzdHlsZVRv
UmVtb3ZlUHJvcGVydGllc0Zyb20tPnJlbW92ZVByb3BlcnRpZXNJblNldChwcm9wZXJ0aWVzVG9S
ZW1vdmUuZGF0YSgpKTsKIH0KIAogdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1
bGVzQW5kQ29udGV4dChTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBOb2RlKiBjb250ZXh0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRleCBj
NTljNTVkYmExZWE0YmMyMzk1M2Q0YzZmOGUzYTJkMzRmNDA3ZGU2Li5kNTZhMmNiYjk5ZDRlM2I5
ODQyMDBkN2I2N2E0YmZiMDUzZTI1MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtODY2LDExICs4NjYsMTEgQEAgcHJpdmF0ZToK
IAogY2xhc3MgU2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyIDogcHVibGljIFByb3BlcnR5V3JhcHBl
ckJhc2UgewogcHVibGljOgotICAgIFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcihpbnQgcHJvcGVy
dHksIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKQorICAgIFNob3J0aGFuZFBy
b3BlcnR5V3JhcHBlcihpbnQgcHJvcGVydHksIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5k
cykKICAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3BlcnR5KQogICAgIHsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kpIHsKLSAg
ICAgICAgICAgIFByb3BlcnR5V3JhcHBlckJhc2UqIHdyYXBwZXIgPSB3cmFwcGVyRm9yUHJvcGVy
dHkobG9uZ2hhbmQucHJvcGVydGllcygpW2ldKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgbG9uZ2hhbmRzW2ldICE9IENTU1Byb3BlcnR5SW52YWxpZDsgKytpKSB7CisgICAgICAgICAg
ICBQcm9wZXJ0eVdyYXBwZXJCYXNlKiB3cmFwcGVyID0gd3JhcHBlckZvclByb3BlcnR5KGxvbmdo
YW5kc1tpXSk7CiAgICAgICAgICAgICBpZiAod3JhcHBlcikKICAgICAgICAgICAgICAgICBtX3By
b3BlcnR5V3JhcHBlcnMuYXBwZW5kKHdyYXBwZXIpOwogICAgICAgICB9CkBAIC0xMTY5LDkgKzEx
NjksOSBAQCBzdGF0aWMgdm9pZCBhZGRTaG9ydGhhbmRQcm9wZXJ0aWVzKCkKIAogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChhbmltYXRhYmxlU2hvcnRoYW5kUHJv
cGVydGllcyk7ICsraSkgewogICAgICAgICBpbnQgcHJvcGVydHlJRCA9IGFuaW1hdGFibGVTaG9y
dGhhbmRQcm9wZXJ0aWVzW2ldOwotICAgICAgICBDU1NQcm9wZXJ0eUxvbmdoYW5kIGxvbmdoYW5k
ID0gbG9uZ2hhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKLSAgICAgICAgaWYgKGxvbmdoYW5k
Lmxlbmd0aCgpID4gMCkKLSAgICAgICAgICAgIGFkZFByb3BlcnR5V3JhcHBlcihwcm9wZXJ0eUlE
LCBuZXcgU2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyKHByb3BlcnR5SUQsIGxvbmdoYW5kKSk7Cisg
ICAgICAgIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcyA9IGxvbmdoYW5kc0ZvclByb3Bl
cnR5KHByb3BlcnR5SUQpOworICAgICAgICBpZiAobG9uZ2hhbmRzKQorICAgICAgICAgICAgYWRk
UHJvcGVydHlXcmFwcGVyKHByb3BlcnR5SUQsIG5ldyBTaG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXIo
cHJvcGVydHlJRCwgbG9uZ2hhbmRzKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134641</attachid>
            <date>2012-03-29 12:24:05 -0700</date>
            <delta_ts>2012-03-29 13:56:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82624-20120329162346.patch</filename>
            <type>text/plain</type>
            <size>85258</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVlMmRjODVkOTY0ZWUw
ODcxNTQ1MTlmOTA4YTc4MjQ5MDkyZTFhYS4uYjM3ZTY3OWFjODY3YzA3MDkzZWU3ZjE0MTdiOTg1
ZTgxZTQ4NmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxMi0wMy0yOSAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZW1v
dmUgQ1NTUHJvcGVydHlMb25naGFuZCBjbGFzcyB0byBzaW1wbGlmeSBDU1Mgc2hvcnRoYW5kIHBy
b3BlcnR5IGhhbmRsaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODI2MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgQ1NTUHJvcGVydHlMb25naGFuZCBjbGFzcyB0byBzaW1wbGlmeSBDU1Mg
c2hvcnRoYW5kIHByb3BlcnR5IGhhbmRsaW5nLgorICAgICAgICBXZSBqdXN0IHVzZSBjbGFzc2lj
IGFycmF5cyB0ZXJtaW5hdGVkIGJ5IENTU1Byb3BlcnR5SW52YWxpZC4gSSBhbHNvIHN3aXRjaCBh
bGwKKyAgICAgICAgZGVjbGFyYXRpb25zIHRvIHVzZSBDU1NQcm9wZXJ0eUlEIHJhdGhlciB0aGFu
IGFuIGludCB3aGljaCBpcyBtb3JlIGV4cGxpY2l0IG9uCisgICAgICAgIHRoZSBjb250ZW50Lgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyA6IFRoaXMgaXMgYSByZWZhY3RvcmluZywgbm8gYmVoYXZp
b3VyIGNoYW5nZSBpbnRlbmRlZC4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y29weVByb3Bl
cnRpZXNJblNldCk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24pOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VB
bmltYXRpb25TaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRy
YW5zaXRpb25TaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNo
b3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyk6Cisg
ICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChD
U1NQYXJzZXIpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRl
ckRpcmVjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHk6OnJlc29sdmVEaXJl
Y3Rpb25Bd2FyZVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kTG9uZ2hhbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6YmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6YmFj
a2dyb3VuZFJlcGVhdExvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlckxvbmdoYW5k
RXhwYW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyTG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Ym9yZGVyTG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Ym9yZGVyQm90dG9tTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpib3JkZXJDb2xvckxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRl
ckltYWdlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyTGVmdExvbmdoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclJhZGl1c0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OmJvcmRlclJpZ2h0TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyU3BhY2lu
Z0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclN0eWxlTG9uZ2hhbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6Ym9yZGVyVG9wTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9y
ZGVyV2lkdGhMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpsaXN0U3R5bGVMb25naGFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpmb250TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6bWFy
Z2luTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6b3V0bGluZUxvbmdoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Om92ZXJmbG93TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6cGFkZGlu
Z0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6d2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6
d2Via2l0Qm9yZGVyRW5kTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0Qm9yZGVy
U3RhcnRMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRDb2x1bW5zTG9uZ2hhbmQp
OgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0Q29sdW1uUnVsZUxvbmdoYW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OndlYmtpdEZsZXhGbG93TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Vi
a2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXJx
dWVlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0TWFza0xvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OndlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OndlYmtpdE1hc2tSZXBlYXRMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJr
aXRUZXh0RW1waGFzaXNMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRUZXh0U3Ry
b2tlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0VHJhbnNpdGlvbkxvbmdoYW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdFRyYW5zZm9ybU9yaWdpbkxvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OndlYmtpdFdyYXBMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjps
b25naGFuZHNGb3JQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3BlcnR5VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Ym9yZGVyU3BhY2luZ1ZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldDRWYWx1ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldFNob3J0aGFuZFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldENvbW1vblZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZVNob3J0aGFuZFByb3Bl
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnByb3BlcnR5SXNJbXBv
cnRhbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6YXNUZXh0KToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlQmxv
Y2tQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnJlbW92
ZVByb3BlcnRpZXNJblNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpj
b3B5UHJvcGVydGllc0luU2V0KToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTdHlsZVByb3BlcnR5U2V0KToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6dHJpU3RhdGVPZlN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OnJlbW92ZVByb3BlcnRpZXNJblN0eWxlKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNob3J0aGFuZFByb3BlcnR5V3Jh
cHBlcjo6U2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFNo
b3J0aGFuZFByb3BlcnRpZXMpOgorCiAyMDEyLTAzLTI4ICBUb21teSBXaWRlbmZseWNodCAgPHRv
bW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWVkaWFTdHJlYW0gQVBJIChK
U0VQKTogSW50cm9kdWNpbmcgV2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYjk4
OWMxZDVhNmVhYzcwODg5NDM0ZjUxYzkwNzY2M2ZhNzM3MjJlNC4uNjAxZjRjNDBlMmQ5NGM4ZmI0
M2UxNWE5MmUyM2Y1OWJlNTQwMTkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTc0LDcgKzc0LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogLy8gTGlzdCBvZiBhbGwgcHJvcGVydGllcyB3ZSBrbm93IGhvdyB0byBj
b21wdXRlLCBvbWl0dGluZyBzaG9ydGhhbmRzLgotc3RhdGljIGNvbnN0IGludCBjb21wdXRlZFBy
b3BlcnRpZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGNvbXB1dGVkUHJvcGVy
dGllc1tdID0gewogICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsCiAgICAgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwKICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwK
QEAgLTIzMzcsMTAgKzIzMzcsMTAgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXIKICAgICAgICAg
ICAgIHJldHVybiB2YWx1ZUZvckZpbHRlcihzdHlsZS5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6IHsKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9w
ZXJ0aWVzWzVdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kSW1hZ2UsCisgICAgICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNb
XSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIENTU1Byb3BlcnR5QmFja2dyb3VuZElt
YWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5
QmFja2dyb3VuZFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQ
b3NpdGlvbiB9OwotICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hv
cnRoYW5kUHJvcGVydGllcyhDU1NQcm9wZXJ0eUxvbmdoYW5kKHByb3BlcnRpZXMsIFdURl9BUlJB
WV9MRU5HVEgocHJvcGVydGllcykpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiwgQ1NTUHJvcGVydHlJbnZhbGlk
IH07CisgICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQ
cm9wZXJ0aWVzKHByb3BlcnRpZXMpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXI6IHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBEb05vdFVwZGF0ZUxheW91dCk7CkBA
IC0yNTc0LDI0ICsyNTc0LDI0IEBAIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uOjptYWtlTXV0YWJsZSgpCiAgICAgcmV0dXJuIGNvcHkoKTsK
IH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IENTU1By
b3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25zdAorUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9y
dGhhbmRQcm9wZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcykgY29uc3QKIHsK
ICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbG9uZ2hhbmQubGVuZ3Ro
KCk7ICsraSkgewotICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlD
U1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbaV0sIERvTm90VXBkYXRlTGF5b3V0KTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgbG9uZ2hhbmRzW2ldICE9IENTU1Byb3BlcnR5SW52YWxpZDsg
KytpKSB7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1Zh
bHVlKGxvbmdoYW5kc1tpXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwogICAgICAgICBsaXN0LT5hcHBl
bmQodmFsdWUpOwogICAgIH0KICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NS
ZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldENTU1By
b3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
bG9uZ2hhbmQpIGNvbnN0CitQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0
IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcykgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTVmFsdWVM
aXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIC8v
IEFzc3VtZSB0aGUgcHJvcGVydGllcyBhcmUgaW4gdGhlIHVzdWFsIG9yZGVyIHRvcCwgcmlnaHQs
IGJvdHRvbSwgbGVmdC4KLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gZ2V0UHJvcGVy
dHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbMF0sIERvTm90VXBkYXRlTGF5b3V0KTsK
LSAgICBSZWZQdHI8Q1NTVmFsdWU+IHJpZ2h0VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxv
bmdoYW5kLnByb3BlcnRpZXMoKVsxXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0cjxD
U1NWYWx1ZT4gYm90dG9tVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3Bl
cnRpZXMoKVsyXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gbGVm
dFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbM10sIERv
Tm90VXBkYXRlTGF5b3V0KTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gZ2V0UHJv
cGVydHlDU1NWYWx1ZShsb25naGFuZHNbMF0sIERvTm90VXBkYXRlTGF5b3V0KTsKKyAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHJpZ2h0VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1sx
XSwgRG9Ob3RVcGRhdGVMYXlvdXQpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gYm90dG9tVmFsdWUg
PSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1syXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwor
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gbGVmdFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25n
aGFuZHNbM10sIERvTm90VXBkYXRlTGF5b3V0KTsKIAogICAgIC8vIEFsbCA0IHByb3BlcnRpZXMg
bXVzdCBiZSBzcGVjaWZpZWQuCiAgICAgaWYgKCF0b3BWYWx1ZSB8fCAhcmlnaHRWYWx1ZSB8fCAh
Ym90dG9tVmFsdWUgfHwgIWxlZnRWYWx1ZSkKQEAgLTI2MTIsNyArMjYxMiw3IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldENTU1Byb3Bl
cnR5VmFsdWVzRm9yU2lkCiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCi1QYXNzUmVm
UHRyPFN0eWxlUHJvcGVydHlTZXQ+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y29weVBy
b3BlcnRpZXNJblNldChjb25zdCBpbnQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAorUGFz
c1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNv
cHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5n
dGgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPENTU1Byb3BlcnR5PiBsaXN0OwogICAgIGxpc3QucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4IGU4OTM4ZDBlNTU5NTk0ZTViZjI2ZmFk
MGY2MzEyMGE5MDVmOGZhOTguLjc3N2Q4MjYzMWFiMzUzMWZhNjgzMmViZDBhMzllNzk4NmJlNTMz
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmgKQEAgLTI5LDcgKzI5LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NT
UHJpbWl0aXZlVmFsdWU7Ci1jbGFzcyBDU1NQcm9wZXJ0eUxvbmdoYW5kOwogY2xhc3MgQ1NTVmFs
dWVMaXN0OwogY2xhc3MgQ1NTVmFsdWVQb29sOwogY2xhc3MgQ29sb3I7CkBAIC03MSw3ICs3MCw3
IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRTVkdQcm9wZXJ0eUNTU1Zh
bHVlKGludCBwcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0KSBjb25zdDsKICNlbmRpZgogCi0gICAg
UGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IGlu
dCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8U3R5bGVQcm9w
ZXJ0eVNldD4gY29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVu
c2lnbmVkIGxlbmd0aCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uKFBhc3NSZWZQdHI8Tm9kZT4sIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUsIGNvbnN0
IFN0cmluZyYpOwpAQCAtMTEwLDggKzEwOSw4IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gdmFsdWVGb3JGaWx0ZXIoUmVuZGVyU3R5bGUqKSBjb25zdDsKICNlbmRpZgogCi0g
ICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRo
YW5kUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7Ci0gICAgUGFz
c1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhh
bmQoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoY29u
c3QgQ1NTUHJvcGVydHlJRCopIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBn
ZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0IENTU1Byb3BlcnR5SUQq
KSBjb25zdDsKIAogICAgIFJlZlB0cjxOb2RlPiBtX25vZGU7CiAgICAgUHNldWRvSWQgbV9wc2V1
ZG9FbGVtZW50U3BlY2lmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAzMTdlZTA4
ZDlmMzQ4NmJjYjNlY2Q5NzMyNjM0ZDRkN2VmYWQzOWQxLi5kMjFiOTk0YmI5Y2VkNDhhNGYzMDI1
MzNmZDkyMTYwZDJlYTE3YjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtNDksNyAr
NDksNiBAQAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJv
cGVydHkuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eUxvbmdoYW5kLmgiCi0jaW5jbHVkZSAiQ1NT
UHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5U291cmNlRGF0YS5oIgogI2lu
Y2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCkBAIC0y
MTc3LDE1ICsyMTc2LDE1IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBz
ZTogewogICAgICAgICBpZiAobnVtID09IDEpIHsKICAgICAgICAgICAgIFNob3J0aGFuZFNjb3Bl
IHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpOwotICAgICAgICAg
ICAgaWYgKCFwYXJzZVZhbHVlKHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKS5wcm9wZXJ0
aWVzKClbMF0sIGltcG9ydGFudCkpCisgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUoQ1NTUHJv
cGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgaW1wb3J0YW50KSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNl
ZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eSh3ZWJr
aXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCkucHJvcGVydGllcygpWzFdLCB2YWx1ZSwgaW1wb3J0
YW50KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0
ZXJDb2xsYXBzZSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChudW0gPT0gMikgewogICAgICAgICAgICAgU2hv
cnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSk7
Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUod2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFu
ZCgpLnByb3BlcnRpZXMoKVswXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZSh3ZWJraXRNYXJn
aW5Db2xsYXBzZUxvbmdoYW5kKCkucHJvcGVydGllcygpWzFdLCBpbXBvcnRhbnQpKQorICAgICAg
ICAgICAgaWYgKCFwYXJzZVZhbHVlKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFw
c2UsIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRl
ckNvbGxhcHNlLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yMzE5LDcgKzIzMTgsNyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOgogICAgICAgICAvLyBbICdib3JkZXItd2lkdGgnIHx8
ICdib3JkZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKICAgICB7Ci0gICAgICAgIGlm
IChwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJvcmRlckFicmlkZ2VkTG9uZ2hhbmQoKSwgaW1wb3J0
YW50KSkgeworICAgICAgICBpZiAocGFyc2VTaG9ydGhhbmQocHJvcElkLCBib3JkZXJMb25naGFu
ZCgpLCBpbXBvcnRhbnQpKSB7CiAgICAgICAgICAgICAvLyBUaGUgQ1NTMyBCb3JkZXJzIGFuZCBC
YWNrZ3JvdW5kcyBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCBib3JkZXIgYWxzbyByZXNldHMgYm9y
ZGVyLWltYWdlLiBJdCdzIGFzCiAgICAgICAgICAgICAvLyB0aG91Z2ggYSB2YWx1ZSBvZiBub25l
IHdhcyBzcGVjaWZpZWQgZm9yIHRoZSBpbWFnZS4KICAgICAgICAgICAgIGFkZFByb3BlcnR5KENT
U1Byb3BlcnR5Qm9yZGVySW1hZ2UsIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRp
YWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwpAQCAtMjM1MiwxOSArMjM1MSwxOSBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgcmV0
dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgb3V0bGluZUxvbmdoYW5kKCksIGltcG9ydGFudCk7
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yOgogICAgICAgICAvLyA8Y29sb3I+ezEs
NH0gfCBpbmhlcml0Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3JkZXJD
b2xvckxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4g
cGFyc2U0VmFsdWVzKHByb3BJZCwgYm9yZGVyQ29sb3JMb25naGFuZCgpLCBpbXBvcnRhbnQpOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKICAgICAgICAgLy8gPGJvcmRlci13aWR0
aD57MSw0fSB8IGluaGVyaXQKLSAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIGJv
cmRlcldpZHRoTG9uZ2hhbmQoKS5wcm9wZXJ0aWVzKCksIGltcG9ydGFudCk7CisgICAgICAgIHJl
dHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3JkZXJXaWR0aExvbmdoYW5kKCksIGltcG9ydGFu
dCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlOgogICAgICAgICAvLyA8Ym9yZGVy
LXN0eWxlPnsxLDR9IHwgaW5oZXJpdAotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJ
ZCwgYm9yZGVyU3R5bGVMb25naGFuZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKKyAgICAg
ICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIGJvcmRlclN0eWxlTG9uZ2hhbmQoKSwgaW1w
b3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luOgogICAgICAgICAvLyA8bWFyZ2lu
LXdpZHRoPnsxLDR9IHwgaW5oZXJpdAotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJ
ZCwgbWFyZ2luTG9uZ2hhbmQoKS5wcm9wZXJ0aWVzKCksIGltcG9ydGFudCk7CisgICAgICAgIHJl
dHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBtYXJnaW5Mb25naGFuZCgpLCBpbXBvcnRhbnQpOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgogICAgICAgICAvLyA8cGFkZGluZy13aWR0aD57
MSw0fSB8IGluaGVyaXQKLSAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIHBhZGRp
bmdMb25naGFuZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHBh
cnNlNFZhbHVlcyhwcm9wSWQsIHBhZGRpbmdMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RmxvdzoKICAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRo
YW5kKHByb3BJZCwgd2Via2l0RmxleEZsb3dMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlGb250OgpAQCAtMjcyNiw3ICsyNzI1LDYgQEAgdm9pZCBDU1NQYXJzZXI6
OmFkZEFuaW1hdGlvblZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IHIKIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKGJvb2wg
aW1wb3J0YW50KQogewotICAgIGNvbnN0IHVuc2lnbmVkIG51bVByb3BlcnRpZXMgPSB3ZWJraXRB
bmltYXRpb25Mb25naGFuZCgpLmxlbmd0aCgpOwogICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRo
aXMsIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uKTsKIAogICAgIGJvb2wgcGFyc2VkUHJvcGVy
dHlbXSA9IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Ug
fTsKQEAgLTI3NDAsNyArMjczOCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblNo
b3J0aGFuZChib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIC8vIFdlIGhpdCB0aGUgZW5kLiAg
RmlsbCBpbiBhbGwgcmVtYWluaW5nIHZhbHVlcyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgogICAg
ICAgICAgICAgaW5pdGlhbFBhcnNlZFByb3BlcnR5SW5kZXggPSAwOwogICAgICAgICAgICAgbV92
YWx1ZUxpc3QtPm5leHQoKTsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0
aWVzOyArK2kpIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IHdlYmtpdEFuaW1hdGlvbkxvbmdo
YW5kKClbaV0gIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKICAgICAgICAgICAgICAgICBp
ZiAoIXBhcnNlZFByb3BlcnR5W2ldKQogICAgICAgICAgICAgICAgICAgICBhZGRBbmltYXRpb25W
YWx1ZSh2YWx1ZXNbaV0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1
ZSgpKTsKICAgICAgICAgICAgICAgICBwYXJzZWRQcm9wZXJ0eVtpXSA9IGZhbHNlOwpAQCAtMjc1
MCwxMCArMjc0OCwxMCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9ydGhhbmQo
Ym9vbCBpbXBvcnRhbnQpCiAgICAgICAgIH0KIAogICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7
Ci0gICAgICAgIGZvciAoaSA9IGluaXRpYWxQYXJzZWRQcm9wZXJ0eUluZGV4OyAhZm91bmQgJiYg
aSA8IG51bVByb3BlcnRpZXM7ICsraSkgeworICAgICAgICBmb3IgKGkgPSBpbml0aWFsUGFyc2Vk
UHJvcGVydHlJbmRleDsgIWZvdW5kICYmIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKClbaV0gIT0g
Q1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKICAgICAgICAgICAgIGlmICghcGFyc2VkUHJvcGVy
dHlbaV0pIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDsKLSAgICAgICAg
ICAgICAgICBpZiAocGFyc2VBbmltYXRpb25Qcm9wZXJ0eSh3ZWJraXRBbmltYXRpb25Mb25naGFu
ZCgpLnByb3BlcnRpZXMoKVtpXSwgdmFsKSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZUFu
aW1hdGlvblByb3BlcnR5KHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKClbaV0sIHZhbCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgcGFyc2VkUHJvcGVydHlbaV0gPSBmb3VuZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgICAgIGluaXRpYWxQYXJzZWRQcm9wZXJ0eUluZGV4ID0gMTsKICAgICAgICAg
ICAgICAgICAgICAgYWRkQW5pbWF0aW9uVmFsdWUodmFsdWVzW2ldLCB2YWwucmVsZWFzZSgpKTsK
QEAgLTI3NjgsMjIgKzI3NjYsMjAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uU2hv
cnRoYW5kKGJvb2wgaW1wb3J0YW50KQogICAgIH0KIAogICAgIC8vIEZpbGwgaW4gYW55IHJlbWFp
bmluZyBwcm9wZXJ0aWVzIHdpdGggdGhlIGluaXRpYWwgdmFsdWUuCi0gICAgZm9yIChpID0gMDsg
aSA8IG51bVByb3BlcnRpZXM7ICsraSkgeworICAgIGZvciAoaSA9IDA7IHdlYmtpdEFuaW1hdGlv
bkxvbmdoYW5kKClbaV0gIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKICAgICAgICAgaWYg
KCFwYXJzZWRQcm9wZXJ0eVtpXSkKICAgICAgICAgICAgIGFkZEFuaW1hdGlvblZhbHVlKHZhbHVl
c1tpXSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOwogICAg
IH0KIAogICAgIC8vIE5vdyBhZGQgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHdlIGZvdW5kLgotICAg
IGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGFkZFByb3BlcnR5
KHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCkucHJvcGVydGllcygpW2ldLCB2YWx1ZXNbaV0ucmVs
ZWFzZSgpLCBpbXBvcnRhbnQpOworICAgIGZvciAoaSA9IDA7IHdlYmtpdEFuaW1hdGlvbkxvbmdo
YW5kKClbaV0gIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyArK2kpCisgICAgICAgIGFkZFByb3BlcnR5
KHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKClbaV0sIHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9y
dGFudCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJh
bnNpdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKIHsKLSAgICBjb25zdCB1bnNpZ25lZCBu
dW1Qcm9wZXJ0aWVzID0gd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkubGVuZ3RoKCk7Ci0KICAg
ICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb24p
OwogCiAgICAgYm9vbCBwYXJzZWRQcm9wZXJ0eVtdID0geyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSB9OwpAQCAtMjc5NSw3ICsyNzkxLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNp
dGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKICAgICAgICAgaWYgKHZhbC0+dW5pdCA9PSBD
U1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgJiYgdmFsLT5pVmFsdWUgPT0gJywnKSB7CiAgICAgICAg
ICAgICAvLyBXZSBoaXQgdGhlIGVuZC4gIEZpbGwgaW4gYWxsIHJlbWFpbmluZyB2YWx1ZXMgd2l0
aCB0aGUgaW5pdGlhbCB2YWx1ZS4KICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7Ci0g
ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CisgICAgICAg
ICAgICBmb3IgKGkgPSAwOyB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKVtpXSAhPSBDU1NQcm9w
ZXJ0eUludmFsaWQ7ICsraSkgewogICAgICAgICAgICAgICAgIGlmICghcGFyc2VkUHJvcGVydHlb
aV0pCiAgICAgICAgICAgICAgICAgICAgIGFkZEFuaW1hdGlvblZhbHVlKHZhbHVlc1tpXSwgY3Nz
VmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOwogICAgICAgICAgICAg
ICAgIHBhcnNlZFByb3BlcnR5W2ldID0gZmFsc2U7CkBAIC0yODA1LDEwICsyODAxLDEwIEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiAg
ICAgICAgIH0KIAogICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAoaSA9
IDA7ICFmb3VuZCAmJiBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CisgICAgICAgIGZvciAoaSA9
IDA7ICFmb3VuZCAmJiB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKVtpXSAhPSBDU1NQcm9wZXJ0
eUludmFsaWQ7ICsraSkgewogICAgICAgICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtpXSkgewog
ICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsOwotICAgICAgICAgICAgICAgIGlm
IChwYXJzZUFuaW1hdGlvblByb3BlcnR5KHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpLnByb3Bl
cnRpZXMoKVtpXSwgdmFsKSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZUFuaW1hdGlvblBy
b3BlcnR5KHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpW2ldLCB2YWwpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHBhcnNlZFByb3BlcnR5W2ldID0gZm91bmQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICBhZGRBbmltYXRpb25WYWx1ZSh2YWx1ZXNbaV0sIHZhbC5yZWxlYXNlKCkpOwogICAg
ICAgICAgICAgICAgIH0KQEAgLTI4MjIsMTkgKzI4MTgsMTkgQEAgYm9vbCBDU1NQYXJzZXI6OnBh
cnNlVHJhbnNpdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKICAgICB9CiAKICAgICAvLyBG
aWxsIGluIGFueSByZW1haW5pbmcgcHJvcGVydGllcyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgot
ICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKKyAgICBmb3IgKGkgPSAw
OyB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKVtpXSAhPSBDU1NQcm9wZXJ0eUludmFsaWQ7ICsr
aSkgewogICAgICAgICBpZiAoIXBhcnNlZFByb3BlcnR5W2ldKQogICAgICAgICAgICAgYWRkQW5p
bWF0aW9uVmFsdWUodmFsdWVzW2ldLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0
aWFsVmFsdWUoKSk7CiAgICAgfQogCiAgICAgLy8gTm93IGFkZCBhbGwgb2YgdGhlIHByb3BlcnRp
ZXMgd2UgZm91bmQuCi0gICAgZm9yIChpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykKLSAg
ICAgICAgYWRkUHJvcGVydHkod2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkucHJvcGVydGllcygp
W2ldLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQpOworICAgIGZvciAoaSA9IDA7IHdl
YmtpdFRyYW5zaXRpb25Mb25naGFuZCgpW2ldICE9IENTU1Byb3BlcnR5SW52YWxpZDsgaSsrKQor
ICAgICAgICBhZGRQcm9wZXJ0eSh3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKVtpXSwgdmFsdWVz
W2ldLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgbG9uZ2hhbmQsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNl
U2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcywgYm9v
bCBpbXBvcnRhbnQpCiB7CiAgICAgLy8gV2UgdHJ5IHRvIG1hdGNoIGFzIG1hbnkgcHJvcGVydGll
cyBhcyBwb3NzaWJsZQogICAgIC8vIFdlIHNldCB1cCBhbiBhcnJheSBvZiBib29sZWFucyB0byBt
YXJrIHdoaWNoIHByb3BlcnR5IGhhcyBiZWVuIGZvdW5kLApAQCAtMjg0MiwxNiArMjgzOCwxMyBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgbG9uZ2hhbmQsCiAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywg
cHJvcElkKTsKIAogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBwcm9wZXJ0
aWVzUGFyc2VkID0gMDsKICAgICBib29sIHByb3BlcnR5Rm91bmRbNl09IHsgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSB9OyAvLyA2IGlzIGVub3VnaCBzaXplLgogCiAg
ICAgd2hpbGUgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpIHsKICAgICAgICAgZm91bmQgPSBmYWxz
ZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBwcm9wSW5kZXggPSAwOyAhZm91bmQgJiYgcHJvcElu
ZGV4IDwgbG9uZ2hhbmQubGVuZ3RoKCk7ICsrcHJvcEluZGV4KSB7Ci0gICAgICAgICAgICBpZiAo
IXByb3BlcnR5Rm91bmRbcHJvcEluZGV4XSAmJiBwYXJzZVZhbHVlKGxvbmdoYW5kLnByb3BlcnRp
ZXMoKVtwcm9wSW5kZXhdLCBpbXBvcnRhbnQpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgcHJv
cEluZGV4ID0gMDsgIWZvdW5kICYmIGxvbmdoYW5kc1twcm9wSW5kZXhdICE9IENTU1Byb3BlcnR5
SW52YWxpZDsgKytwcm9wSW5kZXgpIHsKKyAgICAgICAgICAgIGlmICghcHJvcGVydHlGb3VuZFtw
cm9wSW5kZXhdICYmIHBhcnNlVmFsdWUobG9uZ2hhbmRzW3Byb3BJbmRleF0sIGltcG9ydGFudCkp
CiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5Rm91bmRbcHJvcEluZGV4XSA9IGZvdW5kID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllc1BhcnNlZCsrOwotICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKICAgICAgICAgLy8gaWYgd2UgZGlkbid0IGZpbmQgYXQgbGVhc3Qg
b25lIG1hdGNoLCB0aGlzIGlzIGFuCkBAIC0yODYwLDI4ICsyODUzLDI0IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiBsb25naGFuZCwKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAo
cHJvcGVydGllc1BhcnNlZCA9PSBsb25naGFuZC5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KICAgICAvLyBGaWxsIGluIGFueSByZW1haW5pbmcgcHJvcGVydGllcyB3aXRoIHRoZSBp
bml0aWFsIHZhbHVlLgogICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9w
ZXJ0eUltcGxpY2l0KTsKLSAgICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kKiBjb25zdCogY29u
c3QgbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24gPSBsb25naGFuZC5sb25naGFuZHNGb3JJbml0
aWFsaXphdGlvbigpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsb25naGFuZC5sZW5n
dGgoKTsgKytpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgbG9uZ2hhbmRzW2ldICE9IENT
U1Byb3BlcnR5SW52YWxpZDsgKytpKSB7CiAgICAgICAgIGlmIChwcm9wZXJ0eUZvdW5kW2ldKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKGxvbmdoYW5kc0ZvckluaXRpYWxp
emF0aW9uKSB7Ci0gICAgICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBpbml0TG9u
Z2hhbmQgPSAqKGxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uW2ldKTsKLSAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgcHJvcEluZGV4ID0gMDsgcHJvcEluZGV4IDwgaW5pdExvbmdoYW5kLmxlbmd0
aCgpOyArK3Byb3BJbmRleCkKLSAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eShpbml0TG9uZ2hh
bmQucHJvcGVydGllcygpW3Byb3BJbmRleF0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNp
dEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOworICAgICAgICBpZiAocHJvcElkID09IENTU1By
b3BlcnR5Qm9yZGVyKSB7CisgICAgICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEKiBpbml0TG9u
Z2hhbmRzID0gYm9yZGVyTG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24oKVtpXTsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgcHJvcEluZGV4ID0gMDsgaW5pdExvbmdoYW5kcyAmJiBpbml0TG9u
Z2hhbmRzW3Byb3BJbmRleF0gIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyArK3Byb3BJbmRleCkKKyAg
ICAgICAgICAgICAgICBhZGRQcm9wZXJ0eShpbml0TG9uZ2hhbmRzW3Byb3BJbmRleF0sIGNzc1Zh
bHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwogICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KGxvbmdoYW5kLnByb3BlcnRpZXMo
KVtpXSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCksIGltcG9y
dGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShsb25naGFuZHNbaV0sIGNzc1ZhbHVlUG9v
bCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwogICAgIH0KIAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKGludCBw
cm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlNFZhbHVlcyhpbnQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUlEICpwcm9w
ZXJ0aWVzLCAgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgLyogRnJvbSB0aGUgQ1NTIDIgc3BlY3Ms
IDguMwogICAgICAqIElmIHRoZXJlIGlzIG9ubHkgb25lIHZhbHVlLCBpdCBhcHBsaWVzIHRvIGFs
bCBzaWRlcy4gSWYgdGhlcmUgYXJlIHR3byB2YWx1ZXMsIHRoZSB0b3AgYW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmgKaW5kZXggMWFlNjcwMzRiNDU0OTM4ZWQyMmEzMzUzOGNhZDFkNjgwYThhNTkzNC4u
YWFjM2RjNWU2MGVhMWI3MjM4ZDAxMzk2ZGU3ZjU1N2JmZDQ2MTU1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKICNp
bmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgorI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURh
dGEuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCkBAIC00
Niw3ICs0Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTQm9yZGVySW1hZ2VT
bGljZVZhbHVlOwogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7Ci1jbGFzcyBDU1NQcm9wZXJ0eUxv
bmdoYW5kOwogY2xhc3MgQ1NTVmFsdWVQb29sOwogY2xhc3MgQ1NTUHJvcGVydHk7CiBjbGFzcyBD
U1NSdWxlOwpAQCAtOTIsOCArOTIsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQcm9wZXJ0aWVz
KCkgY29uc3QgeyByZXR1cm4gIW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5KCk7IH0KIAogICAg
IGJvb2wgcGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7Ci0gICAgYm9vbCBw
YXJzZVNob3J0aGFuZChpbnQsIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmLCBib29sKTsKLSAg
ICBib29sIHBhcnNlNFZhbHVlcyhpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMsIGJv
b2wgaW1wb3J0YW50KTsKKyAgICBib29sIHBhcnNlU2hvcnRoYW5kKGludCwgY29uc3QgQ1NTUHJv
cGVydHlJRCosIGJvb2wpOworICAgIGJvb2wgcGFyc2U0VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0
IENTU1Byb3BlcnR5SUQqIHByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBh
cnNlQ29udGVudChpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZVF1
b3RlcyhpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHkuY3BwCmluZGV4IGFiMTA0MzkxOTJmOGFmY2RkNGQ0YTgzNzE3ZGIyMjMyZGQzY2E0NmEuLmVk
ZDUwZGE5NzBmNjg5Nzk2ZDFmMGI1NzA3NjI3ZmQ2NTEzZGVkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5LmNwcApAQCAtMzYsMjYgKzM2LDI2IEBAIFN0cmluZyBDU1NQcm9wZXJ0eTo6Y3Nz
VGV4dCgpIGNvbnN0CiBlbnVtIExvZ2ljYWxCb3hTaWRlIHsgQmVmb3JlU2lkZSwgRW5kU2lkZSwg
QWZ0ZXJTaWRlLCBTdGFydFNpZGUgfTsKIGVudW0gUGh5c2ljYWxCb3hTaWRlIHsgVG9wU2lkZSwg
UmlnaHRTaWRlLCBCb3R0b21TaWRlLCBMZWZ0U2lkZSB9OwogCi1zdGF0aWMgaW50IHJlc29sdmVU
b1BoeXNpY2FsUHJvcGVydHkoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdy
aXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZSBsb2dpY2FsU2lkZSwgY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgbG9uZ2hhbmQpCitzdGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHko
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2Fs
Qm94U2lkZSBsb2dpY2FsU2lkZSwgY29uc3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzKQogewog
ICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKSB7CiAgICAgICAgIGlmICh3cml0aW5nTW9kZSA9PSBU
b3BUb0JvdHRvbVdyaXRpbmdNb2RlKSB7CiAgICAgICAgICAgICAvLyBUaGUgY29tbW9uIGNhc2Uu
IFRoZSBsb2dpY2FsIGFuZCBwaHlzaWNhbCBib3ggc2lkZXMgbWF0Y2guCiAgICAgICAgICAgICAv
LyBMZWZ0ID0gU3RhcnQsIFJpZ2h0ID0gRW5kLCBCZWZvcmUgPSBUb3AsIEFmdGVyID0gQm90dG9t
Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW2xvZ2ljYWxTaWRlXTsK
KyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNbbG9naWNhbFNpZGVdOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUpIHsKICAg
ICAgICAgICAgIC8vIFN0YXJ0ID0gTGVmdCwgRW5kID0gUmlnaHQsIEJlZm9yZSA9IEJvdHRvbSwg
QWZ0ZXIgPSBUb3AuCiAgICAgICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7CiAgICAgICAg
ICAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJv
cGVydGllcygpW0xlZnRTaWRlXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW0xl
ZnRTaWRlXTsKICAgICAgICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgICAgICByZXR1
cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07CisgICAgICAgICAgICAgICAgcmV0
dXJuIGxvbmdoYW5kc1tSaWdodFNpZGVdOwogICAgICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgot
ICAgICAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07
CisgICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tCb3R0b21TaWRlXTsKICAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMo
KVtUb3BTaWRlXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW1RvcFNpZGVdOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTYzLDI2ICs2MywyNiBAQCBzdGF0aWMgaW50
IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRp
bmdNb2RlIHdyaXRpbgogICAgICAgICAgICAgLy8gU3RhcnQgPSBUb3AsIEVuZCA9IEJvdHRvbSwg
QmVmb3JlID0gTGVmdCwgQWZ0ZXIgPSBSaWdodC4KICAgICAgICAgICAgIHN3aXRjaCAobG9naWNh
bFNpZGUpIHsKICAgICAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgICAgIHJl
dHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CisgICAgICAgICAgICAgICAgcmV0
dXJuIGxvbmdoYW5kc1tUb3BTaWRlXTsKICAgICAgICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOworICAg
ICAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNbQm90dG9tU2lkZV07CiAgICAgICAgICAgICBj
YXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRp
ZXMoKVtMZWZ0U2lkZV07CisgICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tMZWZ0U2lk
ZV07CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBsb25naGFu
ZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hh
bmRzW1JpZ2h0U2lkZV07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLyBT
dGFydCA9IFRvcCwgRW5kID0gQm90dG9tLCBCZWZvcmUgPSBSaWdodCwgQWZ0ZXIgPSBMZWZ0CiAg
ICAgICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKICAgICAgICAgY2FzZSBTdGFydFNpZGU6Ci0g
ICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOworICAgICAg
ICAgICAgcmV0dXJuIGxvbmdoYW5kc1tUb3BTaWRlXTsKICAgICAgICAgY2FzZSBFbmRTaWRlOgot
ICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKKyAg
ICAgICAgICAgIHJldHVybiBsb25naGFuZHNbQm90dG9tU2lkZV07CiAgICAgICAgIGNhc2UgQmVm
b3JlU2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRT
aWRlXTsKKyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNbUmlnaHRTaWRlXTsKICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNp
ZGVdOworICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tMZWZ0U2lkZV07CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTkwLDEzICs5MCwxMyBAQCBzdGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2Fs
UHJvcGVydHkoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbgogICAg
ICAgICAvLyBTdGFydCA9IFJpZ2h0LCBFbmQgPSBMZWZ0LCBCZWZvcmUgPSBUb3AsIEFmdGVyID0g
Qm90dG9tCiAgICAgICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKICAgICAgICAgY2FzZSBTdGFy
dFNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1JpZ2h0U2lk
ZV07CisgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW1JpZ2h0U2lkZV07CiAgICAgICAgIGNh
c2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbTGVm
dFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tMZWZ0U2lkZV07CiAgICAgICAg
IGNhc2UgQmVmb3JlU2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVz
KClbVG9wU2lkZV07CisgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW1RvcFNpZGVdOwogICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtC
b3R0b21TaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNbQm90dG9tU2lkZV07CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTEwNCwxMyArMTA0LDEzIEBAIHN0YXRpYyBpbnQgcmVzb2x2
ZVRvUGh5c2ljYWxQcm9wZXJ0eShUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgV3JpdGluZ01vZGUg
d3JpdGluCiAgICAgICAgIC8vIFN0YXJ0ID0gUmlnaHQsIEVuZCA9IExlZnQsIEJlZm9yZSA9IEJv
dHRvbSwgQWZ0ZXIgPSBUb3AKICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewogICAgICAg
ICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVz
KClbUmlnaHRTaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNbUmlnaHRTaWRlXTsK
ICAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3Bl
cnRpZXMoKVtMZWZ0U2lkZV07CisgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmRzW0xlZnRTaWRl
XTsKICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5k
LnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNb
Qm90dG9tU2lkZV07CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hh
bmQucHJvcGVydGllcygpW1RvcFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tU
b3BTaWRlXTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTE4LDQyICsxMTgsNDEgQEAgc3RhdGlj
IGludCByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBX
cml0aW5nTW9kZSB3cml0aW4KICAgICAgICAgLy8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwg
QmVmb3JlID0gTGVmdCwgQWZ0ZXIgPSBSaWdodAogICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRl
KSB7CiAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5k
LnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBsb25naGFuZHNb
Qm90dG9tU2lkZV07CiAgICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBs
b25naGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CisgICAgICAgICAgICByZXR1cm4gbG9uZ2hh
bmRzW1RvcFNpZGVdOwogICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1
cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBs
b25naGFuZHNbTGVmdFNpZGVdOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJu
IGxvbmdoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIGxv
bmdoYW5kc1tSaWdodFNpZGVdOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gU3RhcnQgPSBC
b3R0b20sIEVuZCA9IFRvcCwgQmVmb3JlID0gUmlnaHQsIEFmdGVyID0gTGVmdAogICAgIHN3aXRj
aCAobG9naWNhbFNpZGUpIHsKICAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgcmV0dXJuIGxv
bmdoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKKyAgICAgICAgcmV0dXJuIGxvbmdoYW5k
c1tCb3R0b21TaWRlXTsKICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgIHJldHVybiBsb25naGFu
ZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CisgICAgICAgIHJldHVybiBsb25naGFuZHNbVG9wU2lk
ZV07CiAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVy
dGllcygpW1JpZ2h0U2lkZV07CisgICAgICAgIHJldHVybiBsb25naGFuZHNbUmlnaHRTaWRlXTsK
ICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0xlZnRT
aWRlXTsKKyAgICAgICAgcmV0dXJuIGxvbmdoYW5kc1tMZWZ0U2lkZV07CiAgICAgfQogfQogCiBl
bnVtIExvZ2ljYWxFeHRlbnQgeyBMb2dpY2FsV2lkdGgsIExvZ2ljYWxIZWlnaHQgfTsKIAotc3Rh
dGljIGludCByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2Rl
LCBMb2dpY2FsRXh0ZW50IGxvZ2ljYWxTaWRlLCBjb25zdCBpbnQqIHByb3BlcnRpZXMpCitzdGF0
aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUs
IExvZ2ljYWxFeHRlbnQgbG9naWNhbFNpZGUsIGNvbnN0IENTU1Byb3BlcnR5SUQqIHByb3BlcnRp
ZXMpCiB7CiAgICAgaWYgKHdyaXRpbmdNb2RlID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUgfHwg
d3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0aW5nTW9kZSkKICAgICAgICAgcmV0dXJuIHBy
b3BlcnRpZXNbbG9naWNhbFNpZGVdOwogICAgIHJldHVybiBsb2dpY2FsU2lkZSA9PSBMb2dpY2Fs
V2lkdGggPyBwcm9wZXJ0aWVzWzFdIDogcHJvcGVydGllc1swXTsKIH0KIAotc3RhdGljIGNvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckRpcmVjdGlvbnMoKQorc3RhdGljIGNvbnN0IENT
U1Byb3BlcnR5SUQqIGJvcmRlckRpcmVjdGlvbnMoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQg
cHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3AsIENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHQsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnQgfTsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlckRpcmVj
dGlvbnMsIChwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpKSk7CisgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyRGlyZWN0aW9uc1tdID0geyBDU1NQcm9w
ZXJ0eUJvcmRlclRvcCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodCwgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b20sIENTU1Byb3BlcnR5Qm9yZGVyTGVmdCB9OwogICAgIHJldHVybiBib3JkZXJEaXJlY3Rp
b25zOwogfQogCkBAIC0yMDksMjcgKzIwOCwyNyBAQCBpbnQgQ1NTUHJvcGVydHk6OnJlc29sdmVE
aXJlY3Rpb25Bd2FyZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBUZXh0RGlyZWN0aW9uIGRpcgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoOgogICAgICAgICByZXR1
cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBBZnRl
clNpZGUsIGJvcmRlcldpZHRoTG9uZ2hhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dExvZ2ljYWxXaWR0aDogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NT
UHJvcGVydHlXaWR0aCwgQ1NTUHJvcGVydHlIZWlnaHQgfTsKKyAgICAgICAgY29uc3QgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdpZHRoLCBDU1NQcm9wZXJ0eUhl
aWdodCB9OwogICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eSh3cml0aW5n
TW9kZSwgTG9naWNhbFdpZHRoLCBwcm9wZXJ0aWVzKTsKICAgICB9CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQ6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNb
Ml0gPSB7IENTU1Byb3BlcnR5V2lkdGgsIENTU1Byb3BlcnR5SGVpZ2h0IH07CisgICAgICAgIGNv
bnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXaWR0aCwgQ1NT
UHJvcGVydHlIZWlnaHQgfTsKICAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVy
dHkod3JpdGluZ01vZGUsIExvZ2ljYWxIZWlnaHQsIHByb3BlcnRpZXMpOwogICAgIH0KICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoOiB7Ci0gICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eU1pbldpZHRoLCBDU1NQcm9wZXJ0eU1pbkhl
aWdodCB9OworICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNbMl0gPSB7IENT
U1Byb3BlcnR5TWluV2lkdGgsIENTU1Byb3BlcnR5TWluSGVpZ2h0IH07CiAgICAgICAgIHJldHVy
biByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KHdyaXRpbmdNb2RlLCBMb2dpY2FsV2lkdGgsIHBy
b3BlcnRpZXMpOwogICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhl
aWdodDogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlN
aW5XaWR0aCwgQ1NTUHJvcGVydHlNaW5IZWlnaHQgfTsKKyAgICAgICAgY29uc3QgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eU1pbldpZHRoLCBDU1NQcm9wZXJ0eU1p
bkhlaWdodCB9OwogICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eSh3cml0
aW5nTW9kZSwgTG9naWNhbEhlaWdodCwgcHJvcGVydGllcyk7CiAgICAgfQogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXhMb2dpY2FsV2lkdGg6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3Bl
cnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5TWF4V2lkdGgsIENTU1Byb3BlcnR5TWF4SGVpZ2h0IH07
CisgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVy
dHlNYXhXaWR0aCwgQ1NTUHJvcGVydHlNYXhIZWlnaHQgfTsKICAgICAgICAgcmV0dXJuIHJlc29s
dmVUb1BoeXNpY2FsUHJvcGVydHkod3JpdGluZ01vZGUsIExvZ2ljYWxXaWR0aCwgcHJvcGVydGll
cyk7CiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0OiB7
Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eU1heFdpZHRo
LCBDU1NQcm9wZXJ0eU1heEhlaWdodCB9OworICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5TWF4V2lkdGgsIENTU1Byb3BlcnR5TWF4SGVpZ2h0
IH07CiAgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KHdyaXRpbmdNb2Rl
LCBMb2dpY2FsSGVpZ2h0LCBwcm9wZXJ0aWVzKTsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAppbmRleCA3YzEyZDljM2I1OTk2
ZThhZjQ0MDgwOGExYjUzZDRiMzgyZWVkZjBhLi4zNTFjMjhkN2Q3NTUwYzFmNGM3OGQ0ZDMwZTFh
ZWQ2OWQ0NTE1NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlM
b25naGFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQu
Y3BwCkBAIC0yMSwxNSArMjEsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
U1NQcm9wZXJ0eUxvbmdoYW5kLmgiCiAKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8v
IEZJWE1FOiBBZGQgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSB0byB0aGUgc2hvcnRoYW5kLgot
Y29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3VuZExvbmdoYW5kKCkKK2NvbnN0IENT
U1Byb3BlcnR5SUQqIGJhY2tncm91bmRMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGlu
dCBiYWNrZ3JvdW5kUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0
eUlEIGJhY2tncm91bmRQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yLAogICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwKICAgICAgICAg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwKQEAgLTM4LDMwNiArMzcsMjkyIEBAIGNvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRMb25naGFuZCgpCiAgICAgICAgIENTU1By
b3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwKICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UG9zaXRpb25ZLAogICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLAotICAgICAgICBD
U1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4KKyAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
T3JpZ2luLAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYmFja2dyb3VuZExvbmdoYW5kLCAoYmFj
a2dyb3VuZFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYmFja2dyb3VuZFByb3BlcnRpZXMp
KSk7Ci0gICAgcmV0dXJuIGJhY2tncm91bmRMb25naGFuZDsKKyAgICByZXR1cm4gYmFja2dyb3Vu
ZFByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRQ
b3NpdGlvbkxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJhY2tncm91bmRQb3NpdGlv
bkxvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJhY2tncm91bmRQb3NpdGlvblBy
b3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblkgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3Bl
cnR5TG9uZ2hhbmQsIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kLCAoYmFja2dyb3VuZFBvc2l0
aW9uUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0
aWVzKSkpOwotICAgIHJldHVybiBiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZDsKKyAgICBzdGF0
aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzW10gPSB7
IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb25ZLCBDU1NQcm9wZXJ0eUludmFsaWQgfTsKKyAgICByZXR1cm4gYmFja2dyb3VuZFBvc2l0
aW9uUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3Vu
ZFJlcGVhdExvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJhY2tncm91bmRSZXBlYXRM
b25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXRZIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdo
YW5kLCBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQsIChiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllcykpKTsKLSAgICBy
ZXR1cm4gYmFja2dyb3VuZFJlcGVhdExvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9w
ZXJ0eUlEIGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5QmFja2dy
b3VuZFJlcGVhdFgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFksIENTU1Byb3BlcnR5SW52
YWxpZCB9OworICAgIHJldHVybiBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllczsKIH0KIAotY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyTG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVy
dHlJRCogYm9yZGVyTG9uZ2hhbmRFeHBhbmRlZCgpCiB7CiAgICAgLy8gRG8gbm90IGNoYW5nZSB0
aGUgb3JkZXIgb2YgdGhlIGZvbGxvd2luZyBmb3VyIHNob3J0aGFuZHMsIGFuZCBrZWVwIHRoZW0g
dG9nZXRoZXIuCi0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJQcm9wZXJ0aWVzWzRdWzNdID0g
ewotICAgICAgICB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVy
VG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGggfSwKLSAgICAgICAgeyBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodFdpZHRoIH0sCi0gICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21Db2xvciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21XaWR0aCB9LAotICAgICAgICB7IENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yLCBDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGggfQotICAg
IH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJM
b25naGFuZCwgKGJvcmRlclByb3BlcnRpZXNbMF0sIHNpemVvZihib3JkZXJQcm9wZXJ0aWVzKSAv
IHNpemVvZihib3JkZXJQcm9wZXJ0aWVzWzBdWzBdKSkpOwotICAgIHJldHVybiBib3JkZXJMb25n
aGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJQcm9wZXJ0aWVzW10g
PSB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xv
ciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRD
b2xvciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdp
ZHRoLCBDU1NQcm9wZXJ0eUludmFsaWQgfTsKKyAgICByZXR1cm4gYm9yZGVyUHJvcGVydGllczsK
IH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyQWJyaWRnZWRMb25naGFuZCgp
Citjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNv
bnN0IGludCBib3JkZXJBYnJpZGdlZFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJX
aWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciB9Owot
ICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kKiBwcm9wZXJ0aWVzRm9ySW5pdGlh
bGl6YXRpb25bXSA9IHsKLSAgICAgICAgJmJvcmRlcldpZHRoTG9uZ2hhbmQoKSwKLSAgICAgICAg
JmJvcmRlclN0eWxlTG9uZ2hhbmQoKSwKLSAgICAgICAgJmJvcmRlckNvbG9yTG9uZ2hhbmQoKSwK
LSAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9y
ZGVyQWJyaWRnZWRMb25naGFuZCwKLSAgICAgICAgKGJvcmRlckFicmlkZ2VkUHJvcGVydGllcywg
cHJvcGVydGllc0ZvckluaXRpYWxpemF0aW9uLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckFicmlk
Z2VkUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyQWJyaWRnZWRMb25naGFuZDsKKyAg
ICAvLyBEbyBub3QgY2hhbmdlIHRoZSBvcmRlciBvZiB0aGUgZm9sbG93aW5nIGZvdXIgc2hvcnRo
YW5kcywgYW5kIGtlZXAgdGhlbSB0b2dldGhlci4KKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVy
dHlJRCBib3JkZXJQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIENTU1By
b3BlcnR5Qm9yZGVyU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIENTU1Byb3BlcnR5SW52
YWxpZCB9OworICAgIHJldHVybiBib3JkZXJQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBib3JkZXJCb3R0b21Mb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlE
KiogYm9yZGVyTG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24oKQogewotICAgIHN0YXRpYyBjb25z
dCBpbnQgYm9yZGVyQm90dG9tUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbUNvbG9yIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCBib3JkZXJCb3R0b21Mb25naGFuZCwgKGJvcmRlckJvdHRvbVByb3BlcnRpZXMsIFdURl9BUlJB
WV9MRU5HVEgoYm9yZGVyQm90dG9tUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyQm90
dG9tTG9uZ2hhbmQ7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlckxvbmdo
YW5kc0ZvckluaXRpYWxpemF0aW9uW10gPSB7CisgICAgICAgICAgICBib3JkZXJXaWR0aExvbmdo
YW5kKCksCisgICAgICAgICAgICBib3JkZXJTdHlsZUxvbmdoYW5kKCksCisgICAgICAgICAgICBi
b3JkZXJDb2xvckxvbmdoYW5kKCksCisgICAgICAgICAgICAwCisgICAgICAgIH07CisgICAgcmV0
dXJuIGJvcmRlckxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uOwogfQogCi1jb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBib3JkZXJDb2xvckxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQq
IGJvcmRlckJvdHRvbUxvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckNv
bG9yUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRl
ckJvdHRvbVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwg
Q1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIGJvcmRlckJvdHRvbVByb3BlcnRpZXM7
Cit9CisKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlckNvbG9yTG9uZ2hhbmQoKQoreworICAg
IHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckNvbG9yUHJvcGVydGllc1tdID0gewog
ICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLAogICAgICAgICBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0Q29sb3IsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsCi0g
ICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yCisgICAgICAgIENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdENvbG9yLAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyQ29sb3JMb25naGFu
ZCwgKGJvcmRlckNvbG9yUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJDb2xvclBy
b3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlckNvbG9yTG9uZ2hhbmQ7CisgICAgcmV0dXJu
IGJvcmRlckNvbG9yUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
Ym9yZGVySW1hZ2VMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJJbWFnZUxv
bmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckltYWdlUHJvcGVydGllc1td
ID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckltYWdlUHJvcGVydGll
c1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlLAogICAgICAgICBD
U1NQcm9wZXJ0eUJvcmRlckltYWdlU2xpY2UsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2VXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNldCwKLSAgICAgICAg
Q1NTUHJvcGVydHlCb3JkZXJJbWFnZVJlcGVhdAorICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlcklt
YWdlUmVwZWF0LAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVySW1hZ2VMb25naGFuZCwg
KGJvcmRlckltYWdlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJJbWFnZVByb3Bl
cnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlckltYWdlTG9uZ2hhbmQ7CisgICAgcmV0dXJuIGJv
cmRlckltYWdlUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9y
ZGVyTGVmdExvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlckxlZnRMb25naGFu
ZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJMZWZ0UHJvcGVydGllc1tdID0geyBD
U1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENT
U1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQ
cm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJMZWZ0TG9uZ2hhbmQsIChib3JkZXJMZWZ0UHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJMZWZ0UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4g
Ym9yZGVyTGVmdExvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRl
ckxlZnRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBDU1NQcm9w
ZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IsIENTU1Byb3Bl
cnR5SW52YWxpZCB9OworICAgIHJldHVybiBib3JkZXJMZWZ0UHJvcGVydGllczsKIH0KIAotY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyUmFkaXVzTG9uZ2hhbmQoKQorY29uc3QgQ1NT
UHJvcGVydHlJRCogYm9yZGVyUmFkaXVzTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBp
bnQgYm9yZGVyUmFkaXVzUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9w
ZXJ0eUlEIGJvcmRlclJhZGl1c1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJUb3BSaWdodFJhZGl1cywKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFk
aXVzLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsCi0gICAgICAg
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMKKyAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21SaWdodFJhZGl1cywKKyAgICAgICAgQ1NTUHJvcGVydHlJbnZhbGlkCiAgICAg
fTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlclJh
ZGl1c0xvbmdoYW5kLCAoYm9yZGVyUmFkaXVzUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChi
b3JkZXJSYWRpdXNQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBib3JkZXJSYWRpdXNMb25naGFu
ZDsKKyAgICByZXR1cm4gYm9yZGVyUmFkaXVzUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgYm9yZGVyUmlnaHRMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlE
KiBib3JkZXJSaWdodExvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclJp
Z2h0UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJSaWdodExvbmdo
YW5kLCAoYm9yZGVyUmlnaHRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclJpZ2h0
UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyUmlnaHRMb25naGFuZDsKKyAgICBzdGF0
aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJSaWdodFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJu
IGJvcmRlclJpZ2h0UHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
Ym9yZGVyU3BhY2luZ0xvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlclNwYWNp
bmdMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJTcGFjaW5nUHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyB9OwotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyU3BhY2luZ0xvbmdoYW5kLCAoYm9yZGVy
U3BhY2luZ1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyU3BhY2luZ1Byb3BlcnRp
ZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlclNwYWNpbmdMb25naGFuZDsKKyAgICBzdGF0aWMgY29u
c3QgQ1NTUHJvcGVydHlJRCBib3JkZXJTcGFjaW5nUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZl
cnRpY2FsU3BhY2luZywgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIGJvcmRlclNw
YWNpbmdQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJT
dHlsZUxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIGJvcmRlclN0eWxlTG9uZ2hhbmQo
KQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyU3R5bGVQcm9wZXJ0aWVzW10gPSB7Cisg
ICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyU3R5bGVQcm9wZXJ0aWVzW10gPSB7
CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsCiAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRTdHlsZSwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwK
LSAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUKKyAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0U3R5bGUsCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJTdHlsZUxvbmdo
YW5kLCAoYm9yZGVyU3R5bGVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclN0eWxl
UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyU3R5bGVMb25naGFuZDsKKyAgICByZXR1
cm4gYm9yZGVyU3R5bGVQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiBib3JkZXJUb3BMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJUb3BMb25n
aGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJUb3BQcm9wZXJ0aWVzW10gPSB7
IENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENT
U1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1By
b3BlcnR5TG9uZ2hhbmQsIGJvcmRlclRvcExvbmdoYW5kLCAoYm9yZGVyVG9wUHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSChib3JkZXJUb3BQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBib3Jk
ZXJUb3BMb25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJUb3BQ
cm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9y
ZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5SW52YWxp
ZCB9OworICAgIHJldHVybiBib3JkZXJUb3BQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBib3JkZXJXaWR0aExvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQq
IGJvcmRlcldpZHRoTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyV2lk
dGhQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVy
V2lkdGhQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgs
CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21XaWR0aCwKLSAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgK
KyAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsCisgICAgICAgIENTU1Byb3BlcnR5
SW52YWxpZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdo
YW5kLCBib3JkZXJXaWR0aExvbmdoYW5kLCAoYm9yZGVyV2lkdGhQcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKGJvcmRlcldpZHRoUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyV2lk
dGhMb25naGFuZDsKKyAgICByZXR1cm4gYm9yZGVyV2lkdGhQcm9wZXJ0aWVzOwogfQogCi1jb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsaXN0U3R5bGVMb25naGFuZCgpCitjb25zdCBDU1NQcm9w
ZXJ0eUlEKiBsaXN0U3R5bGVMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBsaXN0
U3R5bGVQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgbGlz
dFN0eWxlUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUs
CiAgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sCi0gICAgICAgIENTU1Byb3Bl
cnR5TGlzdFN0eWxlSW1hZ2UKKyAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwKKyAg
ICAgICAgQ1NTUHJvcGVydHlJbnZhbGlkCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KENTU1Byb3BlcnR5TG9uZ2hhbmQsIGxpc3RTdHlsZUxvbmdoYW5kLCAobGlzdFN0eWxlUHJvcGVy
dGllcywgV1RGX0FSUkFZX0xFTkdUSChsaXN0U3R5bGVQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVy
biBsaXN0U3R5bGVMb25naGFuZDsKKyAgICByZXR1cm4gbGlzdFN0eWxlUHJvcGVydGllczsKIH0K
IAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgZm9udExvbmdoYW5kKCkKK2NvbnN0IENTU1By
b3BlcnR5SUQqIGZvbnRMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBmb250UHJv
cGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGZvbnRQcm9wZXJ0
aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Rm9udEZhbWlseSwKICAgICAgICAgQ1NTUHJv
cGVydHlGb250U2l6ZSwKICAgICAgICAgQ1NTUHJvcGVydHlGb250U3R5bGUsCiAgICAgICAgIENT
U1Byb3BlcnR5Rm9udFZhcmlhbnQsCiAgICAgICAgIENTU1Byb3BlcnR5Rm9udFdlaWdodCwKLSAg
ICAgICAgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0CisgICAgICAgIENTU1Byb3BlcnR5TGluZUhlaWdo
dCwKKyAgICAgICAgQ1NTUHJvcGVydHlJbnZhbGlkCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGZvbnRMb25naGFuZCwgKGZvbnRQcm9wZXJ0aWVz
LCBXVEZfQVJSQVlfTEVOR1RIKGZvbnRQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBmb250TG9u
Z2hhbmQ7CisgICAgcmV0dXJuIGZvbnRQcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiBtYXJnaW5Mb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiBtYXJnaW5M
b25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBtYXJnaW5Qcm9wZXJ0aWVzW10gPSB7
CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgbWFyZ2luUHJvcGVydGllc1tdID0gewog
ICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpblRvcCwKICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5S
aWdodCwKICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sCi0gICAgICAgIENTU1Byb3Bl
cnR5TWFyZ2luTGVmdAorICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsCisgICAgICAgIENT
U1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9w
ZXJ0eUxvbmdoYW5kLCBtYXJnaW5Mb25naGFuZCwgKG1hcmdpblByb3BlcnRpZXMsIFdURl9BUlJB
WV9MRU5HVEgobWFyZ2luUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gbWFyZ2luTG9uZ2hhbmQ7
CisgICAgcmV0dXJuIG1hcmdpblByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9u
Z2hhbmQmIG91dGxpbmVMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiBvdXRsaW5lTG9u
Z2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgb3V0bGluZVByb3BlcnRpZXNbXSA9IHsK
KyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBvdXRsaW5lUHJvcGVydGllc1tdID0gewog
ICAgICAgICBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwKICAgICAgICAgQ1NTUHJvcGVydHlPdXRs
aW5lU3R5bGUsCi0gICAgICAgIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoCisgICAgICAgIENTU1By
b3BlcnR5T3V0bGluZVdpZHRoLAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9Owot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgb3V0bGluZUxvbmdo
YW5kLCAob3V0bGluZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgob3V0bGluZVByb3BlcnRp
ZXMpKSk7Ci0gICAgcmV0dXJuIG91dGxpbmVMb25naGFuZDsKKyAgICByZXR1cm4gb3V0bGluZVBy
b3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIG92ZXJmbG93TG9uZ2hh
bmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogb3ZlcmZsb3dMb25naGFuZCgpCiB7Ci0gICAgc3Rh
dGljIGNvbnN0IGludCBvdmVyZmxvd1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlPdmVyZmxv
d1gsIENTU1Byb3BlcnR5T3ZlcmZsb3dZIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQ
cm9wZXJ0eUxvbmdoYW5kLCBvdmVyZmxvd0xvbmdoYW5kLCAob3ZlcmZsb3dQcm9wZXJ0aWVzLCBX
VEZfQVJSQVlfTEVOR1RIKG92ZXJmbG93UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gb3ZlcmZs
b3dMb25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBvdmVyZmxvd1Byb3Bl
cnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlPdmVyZmxvd1gsIENTU1Byb3BlcnR5T3ZlcmZsb3dZLCBD
U1NQcm9wZXJ0eUludmFsaWQgfTsKKyAgICByZXR1cm4gb3ZlcmZsb3dQcm9wZXJ0aWVzOwogfQog
Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBwYWRkaW5nTG9uZ2hhbmQoKQorY29uc3QgQ1NT
UHJvcGVydHlJRCogcGFkZGluZ0xvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IHBh
ZGRpbmdQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgcGFk
ZGluZ1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nVG9wLAogICAg
ICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwKICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5n
Qm90dG9tLAotICAgICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0CisgICAgICAgIENTU1Byb3Bl
cnR5UGFkZGluZ0xlZnQsCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBwYWRkaW5nTG9uZ2hhbmQs
IChwYWRkaW5nUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwYWRkaW5nUHJvcGVydGllcykp
KTsKLSAgICByZXR1cm4gcGFkZGluZ0xvbmdoYW5kOworICAgIHJldHVybiBwYWRkaW5nUHJvcGVy
dGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0QW5pbWF0aW9uTG9u
Z2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQoKQog
ewotICAgIHN0YXRpYyBjb25zdCBpbnQgYW5pbWF0aW9uUHJvcGVydGllc1tdID0geworICAgIHN0
YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGFuaW1hdGlvblByb3BlcnRpZXNbXSA9IHsKICAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lLAogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvbkR1cmF0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
blRpbWluZ0Z1bmN0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5
LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LAogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwKLSAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZQorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFu
aW1hdGlvbkZpbGxNb2RlLAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0QW5pbWF0aW9u
TG9uZ2hhbmQsIChhbmltYXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGFuaW1hdGlv
blByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kOworICAg
IHJldHVybiBhbmltYXRpb25Qcm9wZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiB3ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdl
YmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVy
QWZ0ZXJQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCwg
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckFmdGVyQ29sb3IgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdo
YW5kLCB3ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5kLCAoYm9yZGVyQWZ0ZXJQcm9wZXJ0aWVzLCBX
VEZfQVJSQVlfTEVOR1RIKGJvcmRlckFmdGVyUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Vi
a2l0Qm9yZGVyQWZ0ZXJMb25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBi
b3JkZXJBZnRlclByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldp
ZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQWZ0ZXJDb2xvciwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIGJvcmRl
ckFmdGVyUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0
Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0Qm9yZGVy
QmVmb3JlTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyQmVmb3JlUHJv
cGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9y
ZUNvbG9yICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwg
d2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQsIChib3JkZXJCZWZvcmVQcm9wZXJ0aWVzLCBXVEZf
QVJSQVlfTEVOR1RIKGJvcmRlckJlZm9yZVByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtp
dEJvcmRlckJlZm9yZUxvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJv
cmRlckJlZm9yZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVX
aWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZSwgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJCZWZvcmVDb2xvciwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIGJv
cmRlckJlZm9yZVByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdl
YmtpdEJvcmRlckVuZExvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdEJvcmRl
ckVuZExvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckVuZFByb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJFbmRTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvciB9OwotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Qm9yZGVyRW5k
TG9uZ2hhbmQsIChib3JkZXJFbmRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckVu
ZFByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdEJvcmRlckVuZExvbmdoYW5kOworICAg
IHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckVuZFByb3BlcnRpZXNbXSA9IHsgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRT
dHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvciwgQ1NTUHJvcGVydHlJbnZhbGlk
IH07CisgICAgcmV0dXJuIGJvcmRlckVuZFByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVy
dHlJRCogd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGlu
dCBib3JkZXJTdGFydFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFy
dFdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUsIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyU3RhcnRDb2xvciB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVy
dHlMb25naGFuZCwgd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCwgKGJvcmRlclN0YXJ0UHJvcGVy
dGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJTdGFydFByb3BlcnRpZXMpKSk7Ci0gICAgcmV0
dXJuIHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQ7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3Bl
cnR5SUQgYm9yZGVyU3RhcnRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
U3RhcnRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlLCBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3IsIENTU1Byb3BlcnR5SW52YWxpZCB9OworICAgIHJldHVy
biBib3JkZXJTdGFydFByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IHdlYmtpdENvbHVtbnNMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRDb2x1
bW5zTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgY29sdW1uc1Byb3BlcnRpZXNb
XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5Db3VudCB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwg
d2Via2l0Q29sdW1uc0xvbmdoYW5kLCAoY29sdW1uc1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5H
VEgoY29sdW1uc1Byb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdENvbHVtbnNMb25naGFu
ZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBjb2x1bW5zUHJvcGVydGllc1tdID0g
eyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNv
dW50LCBDU1NQcm9wZXJ0eUludmFsaWQgfTsKKyAgICByZXR1cm4gY29sdW1uc1Byb3BlcnRpZXM7
CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENvbHVtblJ1bGVMb25naGFu
ZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQoKQogewot
ICAgIHN0YXRpYyBjb25zdCBpbnQgY29sdW1uUnVsZVByb3BlcnRpZXNbXSA9IHsKKyAgICBzdGF0
aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBjb2x1bW5SdWxlUHJvcGVydGllc1tdID0gewogICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5SdWxlU3R5bGUsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVs
ZUNvbG9yLAorICAgICAgICBDU1NQcm9wZXJ0eUludmFsaWQKICAgICB9OwotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Q29sdW1uUnVsZUxvbmdoYW5k
LCAoY29sdW1uUnVsZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoY29sdW1uUnVsZVByb3Bl
cnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZDsKKyAgICByZXR1
cm4gY29sdW1uUnVsZVByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0Rmxl
eEZsb3dMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBmbGV4Rmxvd1Byb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtp
dEZsZXhXcmFwIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCB3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kLCAoZmxleEZsb3dQcm9wZXJ0aWVzLCBXVEZfQVJSQVlf
TEVOR1RIKGZsZXhGbG93UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0RmxleEZsb3dM
b25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBmbGV4Rmxvd1Byb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtp
dEZsZXhXcmFwLCBDU1NQcm9wZXJ0eUludmFsaWQgfTsKKyAgICByZXR1cm4gZmxleEZsb3dQcm9w
ZXJ0aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXJnaW5Db2xs
YXBzZUxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdE1hcmdpbkNvbGxhcHNl
TG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luQ29sbGFwc2VQcm9wZXJ0
aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Q1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCwgKG1hcmdp
bkNvbGxhcHNlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJnaW5Db2xsYXBzZVByb3Bl
cnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQ7CisgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgbWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzW10gPSB7
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQWZ0ZXJDb2xsYXBzZSwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIG1h
cmdpbkNvbGxhcHNlUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
d2Via2l0TWFycXVlZUxvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdE1hcnF1
ZWVMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBtYXJxdWVlUHJvcGVydGllc1td
ID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIG1hcnF1ZWVQcm9wZXJ0aWVzW10g
PSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwKICAgICAgICAg
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50LAogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWVSZXBldGl0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVT
dHlsZSwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQKKyAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQsCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAog
ICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJr
aXRNYXJxdWVlTG9uZ2hhbmQsIChtYXJxdWVlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCht
YXJxdWVlUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0TWFycXVlZUxvbmdoYW5kOwor
ICAgIHJldHVybiBtYXJxdWVlUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgd2Via2l0TWFza0xvbmdoYW5kKCkKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdE1h
c2tMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBtYXNrUHJvcGVydGllc1tdID0g
eworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIG1hc2tQcm9wZXJ0aWVzW10gPSB7CiAg
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLAogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXRYLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLApA
QCAtMzQ1LDc5ICszMzAsNzYgQEAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFz
a0xvbmdoYW5kKCkKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLAogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksCiAgICAgICAgIENTU1Byb3BlcnR5
V2Via2l0TWFza0NsaXAsCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbgorICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sCisgICAgICAgIENTU1Byb3BlcnR5SW52
YWxpZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCB3ZWJraXRNYXNrTG9uZ2hhbmQsIChtYXNrUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCht
YXNrUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0TWFza0xvbmdoYW5kOworICAgIHJl
dHVybiBtYXNrUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Vi
a2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0TWFz
a1Bvc2l0aW9uTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFza1Bvc2l0aW9u
UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIENTU1Byb3Bl
cnR5V2Via2l0TWFza1Bvc2l0aW9uWSB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJv
cGVydHlMb25naGFuZCwgd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQsIChtYXNrUG9zaXRpb25Q
cm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hc2tQb3NpdGlvblByb3BlcnRpZXMpKSk7Ci0g
ICAgcmV0dXJuIHdlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBD
U1NQcm9wZXJ0eUlEIG1hc2tQb3NpdGlvblByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb25YLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIENTU1Byb3Bl
cnR5SW52YWxpZCB9OworICAgIHJldHVybiBtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzOwogfQogCi1j
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQoKQorY29u
c3QgQ1NTUHJvcGVydHlJRCogd2Via2l0TWFza1JlcGVhdExvbmdoYW5kKCkKIHsKLSAgICBzdGF0
aWMgY29uc3QgaW50IG1hc2tSZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0
TWFza1JlcGVhdFgsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkgfTsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdE1hc2tSZXBlYXRMb25naGFu
ZCwgKG1hc2tSZXBlYXRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hc2tSZXBlYXRQcm9w
ZXJ0aWVzKSkpOwotICAgIHJldHVybiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQ7CisgICAgc3Rh
dGljIGNvbnN0IENTU1Byb3BlcnR5SUQgbWFza1JlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJv
cGVydHlXZWJraXRNYXNrUmVwZWF0WCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgQ1NT
UHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIG1hc2tSZXBlYXRQcm9wZXJ0aWVzOwogfQog
Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZCgp
Citjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZCgpCiB7Ci0g
ICAgc3RhdGljIGNvbnN0IGludCB0ZXh0RW1waGFzaXNQcm9wZXJ0aWVzW10gPSB7CisgICAgc3Rh
dGljIGNvbnN0IENTU1Byb3BlcnR5SUQgdGV4dEVtcGhhc2lzUHJvcGVydGllc1tdID0gewogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlLAotICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yCisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VGV4
dEVtcGhhc2lzQ29sb3IsCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUZXh0RW1waGFz
aXNMb25naGFuZCwgKHRleHRFbXBoYXNpc1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodGV4
dEVtcGhhc2lzUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0VGV4dEVtcGhhc2lzTG9u
Z2hhbmQ7CisgICAgcmV0dXJuIHRleHRFbXBoYXNpc1Byb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRleHRTdHJva2VMb25naGFuZCgpCitjb25zdCBDU1NQ
cm9wZXJ0eUlEKiB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25z
dCBpbnQgdGV4dFN0cm9rZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ry
b2tlV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yIH07Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hh
bmQsICh0ZXh0U3Ryb2tlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0ZXh0U3Ryb2tlUHJv
cGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kOworICAgIHN0
YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHRleHRTdHJva2VQcm9wZXJ0aWVzW10gPSB7IENTU1By
b3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VD
b2xvciwgQ1NTUHJvcGVydHlJbnZhbGlkIH07CisgICAgcmV0dXJuIHRleHRTdHJva2VQcm9wZXJ0
aWVzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUcmFuc2l0aW9uTG9u
Z2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkK
IHsKLSAgICBzdGF0aWMgY29uc3QgaW50IHRyYW5zaXRpb25Qcm9wZXJ0aWVzW10gPSB7CisgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgdHJhbnNpdGlvblByb3BlcnRpZXNbXSA9IHsKICAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHksCiAgICAgICAgIENTU1By
b3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2l0aW9uRGVsYXkKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXksCisg
ICAgICAgIENTU1Byb3BlcnR5SW52YWxpZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQsICh0cmFuc2l0
aW9uUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0cmFuc2l0aW9uUHJvcGVydGllcykpKTsK
LSAgICByZXR1cm4gd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kOworICAgIHJldHVybiB0cmFuc2l0
aW9uUHJvcGVydGllczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJh
bnNmb3JtT3JpZ2luTG9uZ2hhbmQoKQorY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0VHJhbnNm
b3JtT3JpZ2luTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgdHJhbnNmb3JtT3Jp
Z2luUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHRyYW5z
Zm9ybU9yaWdpblByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1PcmlnaW5YLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblks
Ci0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWgorICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblosCisgICAgICAgIENTU1Byb3BlcnR5SW52YWxp
ZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3
ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZCwgKHRyYW5zZm9ybU9yaWdpblByb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgodHJhbnNmb3JtT3JpZ2luUHJvcGVydGllcykpKTsKLSAgICByZXR1
cm4gd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQ7CisgICAgcmV0dXJuIHRyYW5zZm9ybU9y
aWdpblByb3BlcnRpZXM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFdy
YXBMb25naGFuZCgpCitjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRXcmFwTG9uZ2hhbmQoKQog
ewotICAgIHN0YXRpYyBjb25zdCBpbnQgd2Via2l0V3JhcFByb3BlcnRpZXNbXSA9IHsKKyAgICBz
dGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCB3ZWJraXRXcmFwUHJvcGVydGllc1tdID0gewogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtp
dFdyYXBNYXJnaW4sCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcFBhZGRpbmcKKyAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZywKKyAgICAgICAgQ1NTUHJvcGVydHlJbnZh
bGlkCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQs
IHdlYmtpdFdyYXBMb25naGFuZCwgKHdlYmtpdFdyYXBQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVO
R1RIKHdlYmtpdFdyYXBQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiB3ZWJraXRXcmFwTG9uZ2hh
bmQ7CisgICAgcmV0dXJuIHdlYmtpdFdyYXBQcm9wZXJ0aWVzOwogfQogCiAvLyBSZXR1cm5zIGFu
IGVtcHR5IGxpc3QgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCBhIHNob3J0aGFuZAotY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmRGb3JQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkKK2Nv
bnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kc0ZvclByb3BlcnR5KGludCBwcm9wZXJ0eUlEKQog
ewogICAgIHN3aXRjaCAocHJvcGVydHlJRCkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kOgpAQCAtNDI3LDcgKzQwOSw3IEBAIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdo
YW5kRm9yUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXQ6CiAgICAgICAgIHJldHVybiBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQoKTsK
ICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOgotICAgICAgICByZXR1cm4gYm9yZGVyTG9uZ2hh
bmQoKTsKKyAgICAgICAgcmV0dXJuIGJvcmRlckxvbmdoYW5kRXhwYW5kZWQoKTsKICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tOgogICAgICAgICByZXR1cm4gYm9yZGVyQm90dG9tTG9u
Z2hhbmQoKTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6CkBAIC00OTgsMTAgKzQ4
MCw4IEBAIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kRm9yUHJvcGVydHkoaW50
IHByb3BlcnR5SUQpCiAgICAgICAgIHJldHVybiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFu
ZCgpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwOgogICAgICAgICByZXR1cm4gd2Vi
a2l0V3JhcExvbmdoYW5kKCk7Ci0gICAgZGVmYXVsdDogewotICAgICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGRlZmF1bHRMb25naGFuZCwgKCkpOwotICAgICAg
ICByZXR1cm4gZGVmYXVsdExvbmdoYW5kOwotICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eUxvbmdoYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFu
ZC5oCmluZGV4IDkxNzBmZjYyNTg3ZDFlNTE3YzdmZTYzNDgyMWI0NmIxMTEzYThiMDguLjFjY2Jk
M2UzY2U3ODVjM2FhMWZiM2ZhNmI5MDRkNDBiN2Q3ZWUxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TG9uZ2hhbmQuaApAQCAtMjEsODMgKzIxLDUzIEBACiAjaWZuZGVmIENTU1By
b3BlcnR5TG9uZ2hhbmRfaAogI2RlZmluZSBDU1NQcm9wZXJ0eUxvbmdoYW5kX2gKIAotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBDU1NQcm9wZXJ0eUxvbmdoYW5kIHsKLXB1YmxpYzoKLSAg
ICBDU1NQcm9wZXJ0eUxvbmdoYW5kKCkKLSAgICAgICAgOiBtX3Byb3BlcnRpZXMoMCkKLSAgICAg
ICAgLCBtX2xvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uKDApCi0gICAgICAgICwgbV9sZW5ndGgo
MCkKLSAgICB7Ci0gICAgfQotCi0gICAgQ1NTUHJvcGVydHlMb25naGFuZChjb25zdCBpbnQqIHBy
b3BlcnRpZXMsIHVuc2lnbmVkIG51bVByb3BlcnRpZXMpCi0gICAgICAgIDogbV9wcm9wZXJ0aWVz
KHByb3BlcnRpZXMpCi0gICAgICAgICwgbV9sb25naGFuZHNGb3JJbml0aWFsaXphdGlvbigwKQot
ICAgICAgICAsIG1fbGVuZ3RoKG51bVByb3BlcnRpZXMpCi0gICAgewotICAgIH0KKyNpbmNsdWRl
ICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAKLSAgICBDU1NQcm9wZXJ0eUxvbmdoYW5kKGNvbnN0IGlu
dCogcHJvcGVydGllcywgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCoqIGxvbmdoYW5kc0Zvcklu
aXRpYWxpemF0aW9uLCB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzKQotICAgICAgICA6IG1fcHJvcGVy
dGllcyhwcm9wZXJ0aWVzKQotICAgICAgICAsIG1fbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24o
bG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24pCi0gICAgICAgICwgbV9sZW5ndGgobnVtUHJvcGVy
dGllcykKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgaW50KiBwcm9wZXJ0aWVzKCkgY29uc3Qg
eyByZXR1cm4gbV9wcm9wZXJ0aWVzOyB9Ci0gICAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCoq
IGxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb25naGFuZHNG
b3JJbml0aWFsaXphdGlvbjsgfQotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGVuZ3RoOyB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgaW50KiBtX3Byb3BlcnRpZXM7Ci0g
ICAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCoqIG1fbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRp
b247Ci0gICAgdW5zaWduZWQgbV9sZW5ndGg7Ci19OworbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBiYWNrZ3JvdW5kTG9uZ2hhbmQoKTsKLWNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kKCk7Ci1jb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQoKTsKLWNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxv
bmdoYW5kJiBib3JkZXJBYnJpZGdlZExvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiBib3JkZXJCb3R0b21Mb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
Ym9yZGVyQ29sb3JMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVy
SW1hZ2VMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyTGVmdExv
bmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJSYWRpdXNMb25naGFu
ZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyUmlnaHRMb25naGFuZCgpOwot
Y29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyU3BhY2luZ0xvbmdoYW5kKCk7Ci1jb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJTdHlsZUxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJUb3BMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgYm9yZGVyV2lkdGhMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFu
ZCYgbGlzdFN0eWxlTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGZvbnRM
b25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbWFyZ2luTG9uZ2hhbmQoKTsK
LWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIG91dGxpbmVMb25naGFuZCgpOwotY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYgb3ZlcmZsb3dMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgcGFkZGluZ0xvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3
ZWJraXRBbmltYXRpb25Mb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Vi
a2l0Qm9yZGVyQWZ0ZXJMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Vi
a2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdl
YmtpdEJvcmRlckVuZExvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJr
aXRCb3JkZXJTdGFydExvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJr
aXRDb2x1bW5zTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENv
bHVtblJ1bGVMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Rmxl
eEZsb3dMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFyZ2lu
Q29sbGFwc2VMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFy
cXVlZUxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrTG9u
Z2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tQb3NpdGlvbkxv
bmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrUmVwZWF0TG9u
Z2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRleHRFbXBoYXNpc0xv
bmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUZXh0U3Ryb2tlTG9u
Z2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRyYW5zaXRpb25Mb25n
aGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJhbnNmb3JtT3JpZ2lu
TG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFdyYXBMb25naGFu
ZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogYmFja2dyb3VuZExvbmdoYW5kKCk7Citjb25zdCBD
U1NQcm9wZXJ0eUlEKiBiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZCgpOworY29uc3QgQ1NTUHJv
cGVydHlJRCogYmFja2dyb3VuZFJlcGVhdExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlE
KiBib3JkZXJMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVyTG9uZ2hhbmRF
eHBhbmRlZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCoqIGJvcmRlckxvbmdoYW5kc0ZvckluaXRp
YWxpemF0aW9uKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJCb3R0b21Mb25naGFuZCgp
OworY29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVyQ29sb3JMb25naGFuZCgpOworY29uc3QgQ1NT
UHJvcGVydHlJRCogYm9yZGVySW1hZ2VMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCog
Ym9yZGVyTGVmdExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiBib3JkZXJSYWRpdXNM
b25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVyUmlnaHRMb25naGFuZCgpOwor
Y29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVyU3BhY2luZ0xvbmdoYW5kKCk7Citjb25zdCBDU1NQ
cm9wZXJ0eUlEKiBib3JkZXJTdHlsZUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiBi
b3JkZXJUb3BMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogYm9yZGVyV2lkdGhMb25n
aGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogbGlzdFN0eWxlTG9uZ2hhbmQoKTsKK2NvbnN0
IENTU1Byb3BlcnR5SUQqIGZvbnRMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogbWFy
Z2luTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5SUQqIG91dGxpbmVMb25naGFuZCgpOwor
Y29uc3QgQ1NTUHJvcGVydHlJRCogb3ZlcmZsb3dMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVy
dHlJRCogcGFkZGluZ0xvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRBbmlt
YXRpb25Mb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0Qm9yZGVyQWZ0ZXJM
b25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hh
bmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdEJvcmRlckVuZExvbmdoYW5kKCk7Citj
b25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRCb3JkZXJTdGFydExvbmdoYW5kKCk7Citjb25zdCBD
U1NQcm9wZXJ0eUlEKiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5
SUQqIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Vi
a2l0RmxleEZsb3dMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0TWFyZ2lu
Q29sbGFwc2VMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0TWFycXVlZUxv
bmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlEKiB3ZWJraXRNYXNrTG9uZ2hhbmQoKTsKK2Nv
bnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kKCk7Citjb25zdCBD
U1NQcm9wZXJ0eUlEKiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3Bl
cnR5SUQqIHdlYmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUlE
KiB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtp
dFRyYW5zaXRpb25Mb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlJRCogd2Via2l0VHJhbnNm
b3JtT3JpZ2luTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5SUQqIHdlYmtpdFdyYXBMb25n
aGFuZCgpOwogCiAvLyBSZXR1cm5zIGFuIGVtcHR5IGxpc3QgaWYgdGhlIHByb3BlcnR5IGlzIG5v
dCBhIHNob3J0aGFuZAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmRGb3JQcm9w
ZXJ0eShpbnQpOworY29uc3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzRm9yUHJvcGVydHkoaW50
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0eVNldC5jcHAKaW5kZXggZjUwMjZlMDA4M2Y4MzQ2NzQ0ZjZjY2JjYjM5MTFjODMxYzhkMGM0
Yi4uMzllM2QxMWQ5OTJkNGYyNmNlYTY1OTVhMGE2NWNlZWFjOTBhZmUzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAtMjQsNyArMjQsNiBAQAogCiAjaW5jbHVk
ZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlMb25naGFuZC5oIgotI2luY2x1
ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAj
aW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCkBAIC0x
MTEsNyArMTEwLDcgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3BlcnR5VmFsdWUo
aW50IHByb3BlcnR5SUQpIGNvbnN0CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6CiAg
ICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoYmFja2dyb3VuZExvbmdoYW5k
KCkpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6IHsKLSAgICAgICAgY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCBwcm9wZXJ0aWVzWzNdID0geyBib3JkZXJXaWR0aExvbmdoYW5kKCksIGJv
cmRlclN0eWxlTG9uZ2hhbmQoKSwgYm9yZGVyQ29sb3JMb25naGFuZCgpIH07CisgICAgICAgIGNv
bnN0IENTU1Byb3BlcnR5SUQqIHByb3BlcnRpZXNbM10gPSB7IGJvcmRlcldpZHRoTG9uZ2hhbmQo
KSwgYm9yZGVyU3R5bGVMb25naGFuZCgpLCBib3JkZXJDb2xvckxvbmdoYW5kKCkgfTsKICAgICAg
ICAgU3RyaW5nIHJlczsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlf
TEVOR1RIKHByb3BlcnRpZXMpOyArK2kpIHsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IGdl
dENvbW1vblZhbHVlKHByb3BlcnRpZXNbaV0pOwpAQCAtMTc2LDEwICsxNzUsMTAgQEAgU3RyaW5n
IFN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3BlcnR5VmFsdWUoaW50IHByb3BlcnR5SUQpIGNvbnN0
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1TdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Ym9y
ZGVyU3BhY2luZ1ZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25z
dAorU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmJvcmRlclNwYWNpbmdWYWx1ZShjb25zdCBDU1NQ
cm9wZXJ0eUlEKiBsb25naGFuZHMpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBob3Jp
em9udGFsVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVsw
XSk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiB2ZXJ0aWNhbFZhbHVlID0gZ2V0UHJvcGVydHlDU1NW
YWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbMV0pOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gaG9y
aXpvbnRhbFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZHNbMF0pOworICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gdmVydGljYWxWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hh
bmRzWzFdKTsKIAogICAgIGlmICghaG9yaXpvbnRhbFZhbHVlKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CkBAIC0yNDgsMTMgKzI0NywxMyBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Zm9u
dFZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLVN0cmlu
ZyBTdHlsZVByb3BlcnR5U2V0OjpnZXQ0VmFsdWVzKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IGxvbmdoYW5kKSBjb25zdAorU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldDRWYWx1ZXMoY29u
c3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzKSBjb25zdAogewogICAgIC8vIEFzc3VtZSB0aGUg
cHJvcGVydGllcyBhcmUgaW4gdGhlIHVzdWFsIG9yZGVyIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVm
dC4KLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShs
b25naGFuZC5wcm9wZXJ0aWVzKClbMF0pOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmlnaHRWYWx1
ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpWzFdKTsKLSAgICBS
ZWZQdHI8Q1NTVmFsdWU+IGJvdHRvbVZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFu
ZC5wcm9wZXJ0aWVzKClbMl0pOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gbGVmdFZhbHVlID0gZ2V0
UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbM10pOworICAgIFJlZlB0cjxD
U1NWYWx1ZT4gdG9wVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1swXSk7Cisg
ICAgUmVmUHRyPENTU1ZhbHVlPiByaWdodFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25n
aGFuZHNbMV0pOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gYm90dG9tVmFsdWUgPSBnZXRQcm9wZXJ0
eUNTU1ZhbHVlKGxvbmdoYW5kc1syXSk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBsZWZ0VmFsdWUg
PSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1szXSk7CiAKICAgICAvLyBBbGwgNCBwcm9w
ZXJ0aWVzIG11c3QgYmUgc3BlY2lmaWVkLgogICAgIGlmICghdG9wVmFsdWUgfHwgIXJpZ2h0VmFs
dWUgfHwgIWJvdHRvbVZhbHVlIHx8ICFsZWZ0VmFsdWUpCkBAIC0yNzUsMTcgKzI3NCwxNSBAQCBT
dHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0NFZhbHVlcyhjb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiBsb25naGFuZCkgY29uc3QKICAgICByZXR1cm4gcmVzOwogfQogCi1TdHJpbmcgU3R5bGVQ
cm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9u
Z2hhbmQmIGxvbmdoYW5kKSBjb25zdAorU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVy
ZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUlEKiBsb25naGFuZHMpIGNvbnN0CiB7
CiAgICAgU3RyaW5nIHJlczsKLQotICAgIGNvbnN0IHVuc2lnbmVkIHNpemUgPSBsb25naGFuZC5s
ZW5ndGgoKTsKICAgICAvLyBCZWdpbiBieSBjb2xsZWN0aW5nIHRoZSBwcm9wZXJ0aWVzIGludG8g
YW4gYXJyYXkuCi0gICAgVmVjdG9yPCBSZWZQdHI8Q1NTVmFsdWU+ID4gdmFsdWVzKHNpemUpOwor
ICAgIFZlY3RvcjwgUmVmUHRyPENTU1ZhbHVlPiA+IHZhbHVlczsKICAgICBzaXplX3QgbnVtTGF5
ZXJzID0gMDsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAg
ICAgICAgdmFsdWVzW2ldID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVz
KClbaV0pOworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZvciAoOyBsb25naGFuZHNbaV0gIT0g
Q1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKKyAgICAgICAgdmFsdWVzLmFwcGVuZChnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kc1tpXSkpOwogICAgICAgICBpZiAodmFsdWVzW2ldKSB7CiAg
ICAgICAgICAgICBpZiAodmFsdWVzW2ldLT5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAgICAgICAg
ICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2
YWx1ZXNbaV0uZ2V0KCkpOwpAQCAtMjk0LDcgKzI5MSw3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5
U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
bG9uCiAgICAgICAgICAgICAgICAgbnVtTGF5ZXJzID0gbWF4PHNpemVfdD4oMVUsIG51bUxheWVy
cyk7CiAgICAgICAgIH0KICAgICB9Ci0KKyAgICBjb25zdCB1bnNpZ25lZCBzaXplID0gaTsKICAg
ICAvLyBOb3cgc3RpdGNoIHRoZSBwcm9wZXJ0aWVzIHRvZ2V0aGVyLiAgSW1wbGljaXQgaW5pdGlh
bCB2YWx1ZXMgYXJlIGZsYWdnZWQgYXMgc3VjaCBhbmQKICAgICAvLyBjYW4gc2FmZWx5IGJlIG9t
aXR0ZWQuCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1MYXllcnM7IGkrKykgewpAQCAt
MzExLDcgKzMwOCw3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRo
YW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uCiAgICAgICAgICAgICAgICAg
ICAgIHZhbHVlID0gdmFsdWVzW2pdOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIENvbG9yIG9u
bHkgYmVsb25ncyBpbiB0aGUgbGFzdCBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgaWYgKGxv
bmdoYW5kLnByb3BlcnRpZXMoKVtqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikgewor
ICAgICAgICAgICAgICAgICAgICBpZiAobG9uZ2hhbmRzW2pdID09IENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPSBudW1MYXllcnMg
LSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChpICE9IDApIC8vIE90aGVyIHNpbmdsZXRvbnMgb25seSBiZWxv
bmcgaW4gdGhlIGZpcnN0IGxheWVyLgpAQCAtMzIyLDEwICszMTksMTAgQEAgU3RyaW5nIFN0eWxl
UHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxv
bmdoYW5kJiBsb24KICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmVwb3J0IGJhY2tncm91bmQt
cmVwZWF0IGFzIGl0IHdhcyB3cml0dGVuIGluIHRoZSBDU1MuIElmIHRoZSBwcm9wZXJ0eSBpcyBp
bXBsaWNpdCwKICAgICAgICAgICAgIC8vIHRoZW4gaXQgd2FzIHdyaXR0ZW4gd2l0aCBvbmx5IG9u
ZSB2YWx1ZS4gSGVyZSB3ZSBmaWd1cmUgb3V0IHdoaWNoIHZhbHVlIHRoYXQgd2FzIHNvIHdlIGNh
bgogICAgICAgICAgICAgLy8gcmVwb3J0IGJhY2sgY29ycmVjdGx5LgotICAgICAgICAgICAgaWYg
KGxvbmdoYW5kLnByb3BlcnRpZXMoKVtqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRY
ICYmIGlzUHJvcGVydHlJbXBsaWNpdChsb25naGFuZC5wcm9wZXJ0aWVzKClbal0pKSB7CisgICAg
ICAgICAgICBpZiAobG9uZ2hhbmRzW2pdID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgg
JiYgaXNQcm9wZXJ0eUltcGxpY2l0KGxvbmdoYW5kc1tqXSkpIHsKIAogICAgICAgICAgICAgICAg
IC8vIEJVRyA0OTA1NTogbWFrZSBzdXJlIHRoZSB2YWx1ZSB3YXMgbm90IHJlc2V0IGluIHRoZSBs
YXllciBjaGVjayBqdXN0IGFib3ZlLgotICAgICAgICAgICAgICAgIGlmIChqIDwgc2l6ZSAtIDEg
JiYgbG9uZ2hhbmQucHJvcGVydGllcygpW2ogKyAxXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRS
ZXBlYXRZICYmIHZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgKGogPCBzaXplIC0gMSAmJiBs
b25naGFuZHNbaiArIDFdID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkgJiYgdmFsdWUp
IHsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB5VmFsdWU7CiAgICAgICAg
ICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gbmV4dFZhbHVlID0gdmFsdWVzW2ogKyAxXTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRWYWx1ZS0+aXNWYWx1ZUxpc3QoKSkKQEAgLTM3
NiwxMiArMzczLDEyIEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRo
YW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uCiAgICAgcmV0dXJuIHJlczsK
IH0KIAotU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldFNob3J0aGFuZFZhbHVlKGNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25zdAorU3RyaW5nIFN0eWxlUHJvcGVydHlT
ZXQ6OmdldFNob3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcykgY29u
c3QKIHsKICAgICBTdHJpbmcgcmVzOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsb25n
aGFuZC5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlmICghaXNQcm9wZXJ0eUltcGxpY2l0KGxv
bmdoYW5kLnByb3BlcnRpZXMoKVtpXSkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVtpXSk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgbG9uZ2hhbmRzW2ldICE9IENTU1Byb3BlcnR5SW52YWxp
ZDsgKytpKSB7CisgICAgICAgIGlmICghaXNQcm9wZXJ0eUltcGxpY2l0KGxvbmdoYW5kc1tpXSkp
IHsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1Zh
bHVlKGxvbmdoYW5kc1tpXSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogcHJvdmlkZSBkZWZhdWx0
IHZhbHVlIGlmICF2YWx1ZSBvciB2YWx1ZSBpcyBpbml0aWFsIHZhbHVlCiAgICAgICAgICAgICBp
ZiAodmFsdWUgJiYgIXZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKCFyZXMuaXNOdWxsKCkpCkBAIC0zOTQsMTEgKzM5MSwxMSBAQCBTdHJpbmcgU3R5bGVQcm9w
ZXJ0eVNldDo6Z2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9u
Z2hhbmQpCiB9CiAKIC8vIG9ubHkgcmV0dXJucyBhIG5vbi1udWxsIHZhbHVlIGlmIGFsbCBwcm9w
ZXJ0aWVzIGhhdmUgdGhlIHNhbWUsIG5vbi1udWxsIHZhbHVlCi1TdHJpbmcgU3R5bGVQcm9wZXJ0
eVNldDo6Z2V0Q29tbW9uVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQp
IGNvbnN0CitTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0Q29tbW9uVmFsdWUoY29uc3QgQ1NT
UHJvcGVydHlJRCogbG9uZ2hhbmRzKSBjb25zdAogewogICAgIFN0cmluZyByZXM7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAg
UmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJv
cGVydGllcygpW2ldKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBsb25naGFuZHNbaV0gIT0g
Q1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1
ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmRzW2ldKTsKICAgICAgICAgLy8gRklYTUU6
IENTU0luaXRpYWxWYWx1ZTo6Y3NzVGV4dCBzaG91bGQgZ2VuZXJhdGUgdGhlIHJpZ2h0IHZhbHVl
LgogICAgICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKQogICAgICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtNDIxLDEwICs0MTgsMTAgQEAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gU3R5bGVQcm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVy
dHlJRCkgY29uc3QKIAogYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpyZW1vdmVTaG9ydGhhbmRQcm9w
ZXJ0eShpbnQgcHJvcGVydHlJRCkKIHsKLSAgICBDU1NQcm9wZXJ0eUxvbmdoYW5kIGxvbmdoYW5k
ID0gbG9uZ2hhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKLSAgICBpZiAoIWxvbmdoYW5kLmxl
bmd0aCgpKQorICAgIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcyA9IGxvbmdoYW5kc0Zv
clByb3BlcnR5KHByb3BlcnR5SUQpOworICAgIGlmICghbG9uZ2hhbmRzKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHJlbW92ZVByb3BlcnRpZXNJblNldChsb25naGFuZC5wcm9w
ZXJ0aWVzKCksIGxvbmdoYW5kLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVydGll
c0luU2V0KGxvbmdoYW5kcyk7CiB9CiAKIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlUHJv
cGVydHkoaW50IHByb3BlcnR5SUQsIFN0cmluZyogcmV0dXJuVGV4dCkKQEAgLTQ1OSwxMiArNDU2
LDEyIEBAIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cHJvcGVydHlJc0ltcG9ydGFudChpbnQgcHJv
cGVydHlJRCkgY29uc3QKICAgICBpZiAocHJvcGVydHkpCiAgICAgICAgIHJldHVybiBwcm9wZXJ0
eS0+aXNJbXBvcnRhbnQoKTsKIAotICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmRzID0g
bG9uZ2hhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKLSAgICBpZiAoIWxvbmdoYW5kcy5sZW5n
dGgoKSkKKyAgICBjb25zdCBDU1NQcm9wZXJ0eUlEKiBsb25naGFuZHMgPSBsb25naGFuZHNGb3JQ
cm9wZXJ0eShwcm9wZXJ0eUlEKTsKKyAgICBpZiAoIWxvbmdoYW5kcykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5kcy5sZW5ndGgo
KTsgKytpKSB7Ci0gICAgICAgIGlmICghcHJvcGVydHlJc0ltcG9ydGFudChsb25naGFuZHMucHJv
cGVydGllcygpW2ldKSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBsb25naGFuZHNbaV0gIT0g
Q1NTUHJvcGVydHlJbnZhbGlkOyArK2kpIHsKKyAgICAgICAgaWYgKCFwcm9wZXJ0eUlzSW1wb3J0
YW50KGxvbmdoYW5kc1tpXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IHJldHVybiB0cnVlOwpAQCAtNDk4LDE3ICs0OTUsMTcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0
OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBp
bXAKIAogdm9pZCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gcHJwVmFsdWUsIGJvb2wgaW1wb3J0YW50KQogewotICAgIENT
U1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmQgPSBsb25naGFuZEZvclByb3BlcnR5KHByb3BlcnR5
SUQpOwotICAgIGlmICghbG9uZ2hhbmQubGVuZ3RoKCkpIHsKKyAgICBjb25zdCBDU1NQcm9wZXJ0
eUlEKiBsb25naGFuZHMgPSBsb25naGFuZHNGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKKyAgICBp
ZiAoIWxvbmdoYW5kcykgewogICAgICAgICBzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eShwcm9wZXJ0
eUlELCBwcnBWYWx1ZSwgaW1wb3J0YW50KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICByZW1vdmVQcm9wZXJ0aWVzSW5TZXQobG9uZ2hhbmQucHJvcGVydGllcygpLCBsb25naGFuZC5s
ZW5ndGgoKSk7CisgICAgcmVtb3ZlUHJvcGVydGllc0luU2V0KGxvbmdoYW5kcyk7CiAKICAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gcHJwVmFsdWU7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kpCi0gICAgICAgIG1fcHJvcGVydGllcy5hcHBl
bmQoQ1NTUHJvcGVydHkobG9uZ2hhbmQucHJvcGVydGllcygpW2ldLCB2YWx1ZSwgaW1wb3J0YW50
KSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgbG9uZ2hhbmRzW2ldICE9IENTU1Byb3BlcnR5
SW52YWxpZDsgKytpKQorICAgICAgICBtX3Byb3BlcnRpZXMuYXBwZW5kKENTU1Byb3BlcnR5KGxv
bmdoYW5kc1tpXSwgdmFsdWUsIGltcG9ydGFudCkpOwogfQogCiB2b2lkIFN0eWxlUHJvcGVydHlT
ZXQ6OnNldFByb3BlcnR5KGNvbnN0IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHkq
IHNsb3QpCkBAIC02MDcsMTIgKzYwNCwxMiBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6YXNU
ZXh0KCkgY29uc3QKICAgICAgICAgICAgIHNob3J0aGFuZFByb3BlcnR5SUQgPSBDU1NQcm9wZXJ0
eUJvcmRlcjsKICAgICAgICAgICAgIGlmIChzaG9ydGhhbmRQcm9wZXJ0eUFwcGVhcmVkLmdldChD
U1NQcm9wZXJ0eUJvcmRlciAtIGZpcnN0Q1NTUHJvcGVydHkpKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvcmRlckFicmlkZ2Vk
TG9uZ2hhbmQoKS5sZW5ndGgoKSAmJiBzaG9ydGhhbmRQcm9wZXJ0eUlEOyBpKyspIHsKLSAgICAg
ICAgICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZCA9ICooYm9yZGVy
QWJyaWRnZWRMb25naGFuZCgpLmxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uKClbaV0pOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgYm9yZGVyTG9uZ2hhbmQoKVtpXSAhPSBDU1NQ
cm9wZXJ0eUludmFsaWQgJiYgc2hvcnRoYW5kUHJvcGVydHlJRDsgaSsrKSB7CisgICAgICAgICAg
ICAgICAgY29uc3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzID0gYm9yZGVyTG9uZ2hhbmRzRm9y
SW5pdGlhbGl6YXRpb24oKVtpXTsKICAgICAgICAgICAgICAgICBTdHJpbmcgY29tbW9uVmFsdWU7
CiAgICAgICAgICAgICAgICAgYm9vbCBjb21tb25JbXBvcnRhbmNlID0gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBsb25naGFuZC5sZW5ndGgoKTsgKytqKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGludCBpZCA9IGxvbmdoYW5kLnByb3BlcnRpZXMoKVtqXTsK
KyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgbG9uZ2hhbmRzW2pdICE9IENTU1By
b3BlcnR5SW52YWxpZDsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBpZCA9IGxvbmdo
YW5kc1tqXTsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdl
dFByb3BlcnR5Q1NTVmFsdWUoaWQpOwogICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY3VycmVu
dFZhbHVlID0gdmFsdWUgPyB2YWx1ZS0+Y3NzVGV4dCgpIDogU3RyaW5nKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNJbXBvcnRhbnQgPSBwcm9wZXJ0eUlzSW1wb3J0YW50KGlkKTsKQEAg
LTgwNCw3ICs4MDEsNyBAQCB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OmFkZFN1YnJlc291cmNlU3R5
bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBDU1NTdHlsZQogCiAvLyBUaGlzIGlzIHRo
ZSBsaXN0IG9mIHByb3BlcnRpZXMgd2Ugd2FudCB0byBjb3B5IGluIHRoZSBjb3B5QmxvY2tQcm9w
ZXJ0aWVzKCkgZnVuY3Rpb24uCiAvLyBJdCBpcyB0aGUgbGlzdCBvZiBDU1MgcHJvcGVydGllcyB0
aGF0IGFwcGx5IHNwZWNpYWxseSB0byBibG9jay1sZXZlbCBlbGVtZW50cy4KLXN0YXRpYyBjb25z
dCBpbnQgYmxvY2tQcm9wZXJ0aWVzW10gPSB7CitzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBi
bG9ja1Byb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eU9ycGhhbnMsCiAgICAgQ1NTUHJv
cGVydHlPdmVyZmxvdywgLy8gVGhpcyBjYW4gYmUgYWxzbyBiZSBhcHBsaWVkIHRvIHJlcGxhY2Vk
IGVsZW1lbnRzCiAgICAgQ1NTUHJvcGVydHlXZWJraXRBc3BlY3RSYXRpbywKQEAgLTgyNSwyOSAr
ODIyLDMwIEBAIHN0YXRpYyBjb25zdCBpbnQgYmxvY2tQcm9wZXJ0aWVzW10gPSB7CiAgICAgQ1NT
UHJvcGVydHlXZWJraXRSZWdpb25CcmVha0luc2lkZSwKICAgICBDU1NQcm9wZXJ0eVRleHRBbGln
biwKICAgICBDU1NQcm9wZXJ0eVRleHRJbmRlbnQsCi0gICAgQ1NTUHJvcGVydHlXaWRvd3MKKyAg
ICBDU1NQcm9wZXJ0eVdpZG93cywKKyAgICBDU1NQcm9wZXJ0eUludmFsaWQKIH07CiAKIGNvbnN0
IHVuc2lnbmVkIG51bUJsb2NrUHJvcGVydGllcyA9IFdURl9BUlJBWV9MRU5HVEgoYmxvY2tQcm9w
ZXJ0aWVzKTsKIAogUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBTdHlsZVByb3BlcnR5U2V0
Ojpjb3B5QmxvY2tQcm9wZXJ0aWVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29weVByb3BlcnRp
ZXNJblNldChibG9ja1Byb3BlcnRpZXMsIG51bUJsb2NrUHJvcGVydGllcyk7CisgICAgcmV0dXJu
IGNvcHlQcm9wZXJ0aWVzSW5TZXQoYmxvY2tQcm9wZXJ0aWVzLCBudW1CbG9ja1Byb3BlcnRpZXMg
LSAxKTsKIH0KIAogdm9pZCBTdHlsZVByb3BlcnR5U2V0OjpyZW1vdmVCbG9ja1Byb3BlcnRpZXMo
KQogewotICAgIHJlbW92ZVByb3BlcnRpZXNJblNldChibG9ja1Byb3BlcnRpZXMsIG51bUJsb2Nr
UHJvcGVydGllcyk7CisgICAgcmVtb3ZlUHJvcGVydGllc0luU2V0KGJsb2NrUHJvcGVydGllcyk7
CiB9CiAKLWJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlUHJvcGVydGllc0luU2V0KGNvbnN0
IGludCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpCitib29sIFN0eWxlUHJvcGVydHlTZXQ6OnJlbW92
ZVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQpCiB7CiAgICAgaWYgKG1f
cHJvcGVydGllcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIGFsd2F5cyB1c2VkIHdpdGggc3RhdGljIHNldHMgYW5kIGluIHRoYXQgY2Fz
ZSBjb25zdHJ1Y3RpbmcgdGhlIGhhc2ggcmVwZWF0ZWRseSBpcyBwcmV0dHkgcG9pbnRsZXNzLgog
ICAgIEhhc2hTZXQ8aW50PiB0b1JlbW92ZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgc2V0W2ldICE9IENTU1Byb3Bl
cnR5SW52YWxpZDsgKytpKQogICAgICAgICB0b1JlbW92ZS5hZGQoc2V0W2ldKTsKIAogICAgIFZl
Y3RvcjxDU1NQcm9wZXJ0eSwgND4gbmV3UHJvcGVydGllczsKQEAgLTkyNiw3ICs5MjQsNyBAQCBQ
YXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IFN0eWxlUHJvcGVydHlTZXQ6OmNvcHkoKSBjb25z
dAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVQcm9wZXJ0eVNldChtX3Byb3BlcnRpZXMp
KTsKIH0KIAotUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBTdHlsZVByb3BlcnR5U2V0Ojpj
b3B5UHJvcGVydGllc0luU2V0KGNvbnN0IGludCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0
CitQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IFN0eWxlUHJvcGVydHlTZXQ6OmNvcHlQcm9w
ZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNv
bnN0CiB7CiAgICAgVmVjdG9yPENTU1Byb3BlcnR5PiBsaXN0OwogICAgIGxpc3QucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUHJvcGVydHlTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgK
aW5kZXggOTg4Y2U2MjI1NDRhYjFhNDY1ZjBlN2U3MzgxNjliNmI4Y2I1ZDllNS4uYTE1NGIyY2Mz
NDNjNzhiNjQwMzViOTg0ZTE0NmJlMjlhYjU1NWU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0eVNldC5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJDU1NQcmltaXRpdmVW
YWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlO
YW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTMwLDcgKzMxLDYgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTUnVsZTsKLWNsYXNzIENTU1Byb3BlcnR5
TG9uZ2hhbmQ7CiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwogY2xhc3MgS1VSTDsKIGNsYXNz
IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjsKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGlj
OgogCiAgICAgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjb3B5QmxvY2tQcm9wZXJ0aWVz
KCkgY29uc3Q7CiAgICAgdm9pZCByZW1vdmVCbG9ja1Byb3BlcnRpZXMoKTsKLSAgICBib29sIHJl
bW92ZVByb3BlcnRpZXNJblNldChjb25zdCBpbnQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAg
ICBib29sIHJlbW92ZVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQpOwog
CiAgICAgdm9pZCBtZXJnZShjb25zdCBTdHlsZVByb3BlcnR5U2V0KiwgYm9vbCBhcmdPdmVycmlk
ZXNPbkNvbmZsaWN0ID0gdHJ1ZSk7CiAKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVtb3ZlRXF1aXZhbGVudFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCopOwog
ICAgIHZvaWQgcmVtb3ZlRXF1aXZhbGVudFByb3BlcnRpZXMoY29uc3QgQ1NTU3R5bGVEZWNsYXJh
dGlvbiopOwogCi0gICAgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjb3B5UHJvcGVydGll
c0luU2V0KGNvbnN0IGludCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OworICAgIFBhc3NS
ZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gY29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9w
ZXJ0eUlEKiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CiAgICAgCiAgICAgU3RyaW5nIGFz
VGV4dCgpIGNvbnN0OwogICAgIApAQCAtMTE4LDExICsxMTgsMTEgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogCi0gICAgU3RyaW5nIGdldFNob3J0aGFuZFZh
bHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmKSBjb25zdDsKLSAgICBTdHJpbmcgZ2V0Q29t
bW9uVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0OwotICAgIFN0cmluZyBn
ZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0
OwotICAgIFN0cmluZyBnZXQ0VmFsdWVzKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmKSBjb25z
dDsKLSAgICBTdHJpbmcgYm9yZGVyU3BhY2luZ1ZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hh
bmQmKSBjb25zdDsKKyAgICBTdHJpbmcgZ2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVy
dHlJRCopIGNvbnN0OworICAgIFN0cmluZyBnZXRDb21tb25WYWx1ZShjb25zdCBDU1NQcm9wZXJ0
eUlEKikgY29uc3Q7CisgICAgU3RyaW5nIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBD
U1NQcm9wZXJ0eUlEKikgY29uc3Q7CisgICAgU3RyaW5nIGdldDRWYWx1ZXMoY29uc3QgQ1NTUHJv
cGVydHlJRCopIGNvbnN0OworICAgIFN0cmluZyBib3JkZXJTcGFjaW5nVmFsdWUoY29uc3QgQ1NT
UHJvcGVydHlJRCopIGNvbnN0OwogICAgIFN0cmluZyBmb250VmFsdWUoKSBjb25zdDsKICAgICBi
b29sIGFwcGVuZEZvbnRMb25naGFuZFZhbHVlSWZFeHBsaWNpdChpbnQgcHJvcGVydHlJRCwgU3Ry
aW5nQnVpbGRlciYgcmVzdWx0KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwCmluZGV4IGU2NzM3N2QwZjI2Yzk5N2I3Y2FjOGJiMmEzZmVmYjBhZWUxNzE1YWMu
LmVjYWQwMTU1ODFhNDI2ZDFjMGI2YmM2ZjM3MzY1YzM4ZjYzODFkZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAvLyBFZGl0aW5nIHN0eWxlIHByb3BlcnRpZXMgbXVzdCBiZSBwcmVzZXJ2ZWQg
ZHVyaW5nIGVkaXRpbmcgb3BlcmF0aW9uLgogLy8gZS5nLiB3aGVuIGEgdXNlciBpbnNlcnRzIGEg
bmV3IHBhcmFncmFwaCwgYWxsIHByb3BlcnRpZXMgbGlzdGVkIGhlcmUgbXVzdCBiZSBjb3BpZWQg
dG8gdGhlIG5ldyBwYXJhZ3JhcGguCi1zdGF0aWMgY29uc3QgaW50IGVkaXRpbmdQcm9wZXJ0aWVz
W10gPSB7CitzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBlZGl0aW5nUHJvcGVydGllc1tdID0g
ewogICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLAogICAgIENTU1Byb3BlcnR5VGV4dERl
Y29yYXRpb24sCiAKQEAgLTYwMywxMiArNjAzLDEzIEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpjb2xs
YXBzZVRleHREZWNvcmF0aW9uUHJvcGVydGllcygpCiB9CiAKIC8vIENTUyBwcm9wZXJ0aWVzIHRo
YXQgY3JlYXRlIGEgdmlzdWFsIGRpZmZlcmVuY2Ugb25seSB3aGVuIGFwcGxpZWQgdG8gdGV4dC4K
LXN0YXRpYyBjb25zdCBpbnQgdGV4dE9ubHlQcm9wZXJ0aWVzW10gPSB7CitzdGF0aWMgY29uc3Qg
Q1NTUHJvcGVydHlJRCB0ZXh0T25seVByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eVRl
eHREZWNvcmF0aW9uLAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZl
Y3QsCiAgICAgQ1NTUHJvcGVydHlGb250U3R5bGUsCiAgICAgQ1NTUHJvcGVydHlGb250V2VpZ2h0
LAogICAgIENTU1Byb3BlcnR5Q29sb3IsCisgICAgQ1NTUHJvcGVydHlJbnZhbGlkCiB9OwogCiBU
cmlTdGF0ZSBFZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZShFZGl0aW5nU3R5bGUqIHN0eWxl
KSBjb25zdApAQCAtNjIzLDcgKzYyNCw3IEBAIFRyaVN0YXRlIEVkaXRpbmdTdHlsZTo6dHJpU3Rh
dGVPZlN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlVG9Db21wYXJlLCBTaG91CiAgICAg
UmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGRpZmZlcmVuY2UgPSBnZXRQcm9wZXJ0aWVzTm90SW4o
bV9tdXRhYmxlU3R5bGUuZ2V0KCksIHN0eWxlVG9Db21wYXJlKTsKIAogICAgIGlmIChzaG91bGRJ
Z25vcmVUZXh0T25seVByb3BlcnRpZXMgPT0gSWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVzKQotICAg
ICAgICBkaWZmZXJlbmNlLT5yZW1vdmVQcm9wZXJ0aWVzSW5TZXQodGV4dE9ubHlQcm9wZXJ0aWVz
LCBXVEZfQVJSQVlfTEVOR1RIKHRleHRPbmx5UHJvcGVydGllcykpOworICAgICAgICBkaWZmZXJl
bmNlLT5yZW1vdmVQcm9wZXJ0aWVzSW5TZXQodGV4dE9ubHlQcm9wZXJ0aWVzKTsKIAogICAgIGlm
IChkaWZmZXJlbmNlLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CkBA
IC0xMDg0LDExICsxMDg1LDEzIEBAIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1
bGVzRm9yU2VyaWFsaXphdGlvbihTdHlsZWRFbGVtZW50KiBlbGVtZW50KQogc3RhdGljIHZvaWQg
cmVtb3ZlUHJvcGVydGllc0luU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCogc3R5bGVUb1JlbW92ZVBy
b3BlcnRpZXNGcm9tLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKIHsKICAgICB1bnNpZ25lZCBw
cm9wZXJ0eUNvdW50ID0gc3R5bGUtPnByb3BlcnR5Q291bnQoKTsKLSAgICBWZWN0b3I8aW50PiBw
cm9wZXJ0aWVzVG9SZW1vdmUocHJvcGVydHlDb3VudCk7CisgICAgVmVjdG9yPENTU1Byb3BlcnR5
SUQ+IHByb3BlcnRpZXNUb1JlbW92ZTsKKyAgICBwcm9wZXJ0aWVzVG9SZW1vdmUucmVzZXJ2ZUNh
cGFjaXR5KHByb3BlcnR5Q291bnQgKyAxKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
cHJvcGVydHlDb3VudDsgKytpKQotICAgICAgICBwcm9wZXJ0aWVzVG9SZW1vdmVbaV0gPSBzdHls
ZS0+cHJvcGVydHlBdChpKS5pZCgpOworICAgICAgICBwcm9wZXJ0aWVzVG9SZW1vdmUuYXBwZW5k
KHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHN0eWxlLT5wcm9wZXJ0eUF0KGkpLmlkKCkpKTsK
KyAgICBwcm9wZXJ0aWVzVG9SZW1vdmUuYXBwZW5kKENTU1Byb3BlcnR5SW52YWxpZCk7CiAKLSAg
ICBzdHlsZVRvUmVtb3ZlUHJvcGVydGllc0Zyb20tPnJlbW92ZVByb3BlcnRpZXNJblNldChwcm9w
ZXJ0aWVzVG9SZW1vdmUuZGF0YSgpLCBwcm9wZXJ0aWVzVG9SZW1vdmUuc2l6ZSgpKTsKKyAgICBz
dHlsZVRvUmVtb3ZlUHJvcGVydGllc0Zyb20tPnJlbW92ZVByb3BlcnRpZXNJblNldChwcm9wZXJ0
aWVzVG9SZW1vdmUuZGF0YSgpKTsKIH0KIAogdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxl
RnJvbVJ1bGVzQW5kQ29udGV4dChTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBOb2RlKiBjb250ZXh0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApp
bmRleCBjNTljNTVkYmExZWE0YmMyMzk1M2Q0YzZmOGUzYTJkMzRmNDA3ZGU2Li5kNTZhMmNiYjk5
ZDRlM2I5ODQyMDBkN2I2N2E0YmZiMDUzZTI1MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtODY2LDExICs4NjYsMTEgQEAgcHJp
dmF0ZToKIAogY2xhc3MgU2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyIDogcHVibGljIFByb3BlcnR5
V3JhcHBlckJhc2UgewogcHVibGljOgotICAgIFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcihpbnQg
cHJvcGVydHksIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKQorICAgIFNob3J0
aGFuZFByb3BlcnR5V3JhcHBlcihpbnQgcHJvcGVydHksIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxv
bmdoYW5kcykKICAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3BlcnR5KQogICAgIHsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kp
IHsKLSAgICAgICAgICAgIFByb3BlcnR5V3JhcHBlckJhc2UqIHdyYXBwZXIgPSB3cmFwcGVyRm9y
UHJvcGVydHkobG9uZ2hhbmQucHJvcGVydGllcygpW2ldKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgbG9uZ2hhbmRzW2ldICE9IENTU1Byb3BlcnR5SW52YWxpZDsgKytpKSB7CisgICAg
ICAgICAgICBQcm9wZXJ0eVdyYXBwZXJCYXNlKiB3cmFwcGVyID0gd3JhcHBlckZvclByb3BlcnR5
KGxvbmdoYW5kc1tpXSk7CiAgICAgICAgICAgICBpZiAod3JhcHBlcikKICAgICAgICAgICAgICAg
ICBtX3Byb3BlcnR5V3JhcHBlcnMuYXBwZW5kKHdyYXBwZXIpOwogICAgICAgICB9CkBAIC0xMTY5
LDkgKzExNjksOSBAQCBzdGF0aWMgdm9pZCBhZGRTaG9ydGhhbmRQcm9wZXJ0aWVzKCkKIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChhbmltYXRhYmxlU2hvcnRo
YW5kUHJvcGVydGllcyk7ICsraSkgewogICAgICAgICBpbnQgcHJvcGVydHlJRCA9IGFuaW1hdGFi
bGVTaG9ydGhhbmRQcm9wZXJ0aWVzW2ldOwotICAgICAgICBDU1NQcm9wZXJ0eUxvbmdoYW5kIGxv
bmdoYW5kID0gbG9uZ2hhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKLSAgICAgICAgaWYgKGxv
bmdoYW5kLmxlbmd0aCgpID4gMCkKLSAgICAgICAgICAgIGFkZFByb3BlcnR5V3JhcHBlcihwcm9w
ZXJ0eUlELCBuZXcgU2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyKHByb3BlcnR5SUQsIGxvbmdoYW5k
KSk7CisgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcyA9IGxvbmdoYW5kc0Zv
clByb3BlcnR5KHByb3BlcnR5SUQpOworICAgICAgICBpZiAobG9uZ2hhbmRzKQorICAgICAgICAg
ICAgYWRkUHJvcGVydHlXcmFwcGVyKHByb3BlcnR5SUQsIG5ldyBTaG9ydGhhbmRQcm9wZXJ0eVdy
YXBwZXIocHJvcGVydHlJRCwgbG9uZ2hhbmRzKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134660</attachid>
            <date>2012-03-29 13:56:09 -0700</date>
            <delta_ts>2012-04-02 05:21:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82624-20120329175550.patch</filename>
            <type>text/plain</type>
            <size>79535</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVlMmRjODVkOTY0ZWUw
ODcxNTQ1MTlmOTA4YTc4MjQ5MDkyZTFhYS4uMGFiODAwZjU0NWIzZjI1OTI2NTA1Y2Y1YzZiNzRm
MTZhNmQ2YjEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAxMi0wMy0yOSAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZW5h
bWUgQ1NTUHJvcGVydHlMb25naGFuZCBjbGFzcyB0byBTaG9ydGhhbmRQcm9wZXJ0aWVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI2MjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgQ1NTUHJv
cGVydHlMb25naGFuZCB0byBTaG9ydGhhbmRQcm9wZXJ0aWVzIGFzIHdoYXQgQ1NTUHJvcGVydHlM
b25naGFuZAorICAgICAgICBpcyByZXByZXNlbnRpbmcgaXMgbm90IGEgbG9uZ2hhbmQgYnV0IHRo
ZSBsaXN0IG9mIGxvbmdoYW5kcyBmb3IgYSBnaXZlbiBzaG9ydGhhbmQuCisgICAgICAgIEFsc28g
aW4gdGhlIHNhbWUgdGltZSBzd2l0Y2ggYWxsIHNob3J0aGFuZCBkZWNsYXJhdGlvbnMgdG8gdXNl
IENTU1Byb3BlcnR5SUQgZW51bQorICAgICAgICByYXRoZXIgdGhhbiBhIGludCBzbyBpdCBpcyBj
bGVhciBvbiB3aGF0IGtpbmQgb2YgZGF0YSB3ZSBhcmUgZGVhbGluZyB3aXRoLgorCisgICAgICAg
IEluIGEgZm9sbG93aW5nIHBhdGNoIEkgd2lsbCByZW5hbWUgQ1NTUHJvcGVydHlMb25naGFuZCBm
aWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyA6IFRoaXMgaXMgYSByZWZhY3RvcmluZywgbm8g
YmVoYXZpb3VyIGNoYW5nZSBpbnRlbmRlZC4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0
eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRo
YW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y29w
eVByb3BlcnRpZXNJblNldCk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24pOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VGaWxsU2hvcnRoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VT
aG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMpOgor
ICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
Q1NTUGFyc2VyKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpib3Jk
ZXJEaXJlY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5OjpyZXNvbHZlRGly
ZWN0aW9uQXdhcmVQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YmFja2dyb3VuZExvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OmJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJh
Y2tncm91bmRSZXBlYXRMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJMb25naGFu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJBYnJpZGdlZExvbmdoYW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OmJvcmRlckJvdHRvbUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRl
ckNvbG9yTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVySW1hZ2VMb25naGFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJMZWZ0TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6Ym9yZGVyUmFkaXVzTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyUmlnaHRM
b25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJTcGFjaW5nTG9uZ2hhbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6Ym9yZGVyU3R5bGVMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpi
b3JkZXJUb3BMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJXaWR0aExvbmdoYW5k
KToKKyAgICAgICAgKFdlYkNvcmU6Omxpc3RTdHlsZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OmZvbnRMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjptYXJnaW5Mb25naGFuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpvdXRsaW5lTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6b3Zl
cmZsb3dMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpwYWRkaW5nTG9uZ2hhbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6d2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6d2Via2l0Qm9yZGVyQWZ0ZXJMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRC
b3JkZXJCZWZvcmVMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRCb3JkZXJFbmRM
b25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRCb3JkZXJTdGFydExvbmdoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OndlYmtpdENvbHVtbnNMb25naGFuZCk6CisgICAgICAgIChXZWJD
b3JlOjp3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0
RmxleEZsb3dMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXJnaW5Db2xsYXBz
ZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdE1hcnF1ZWVMb25naGFuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXNrTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6
d2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0TWFz
a1JlcGVhdExvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdFRleHRFbXBoYXNpc0xv
bmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdFRleHRTdHJva2VMb25naGFuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjp3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6d2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6
d2Via2l0V3JhcExvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmxvbmdoYW5kc0ZvclByb3Bl
cnR5KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2hvcnRoYW5kUHJvcGVydGllczo6U2hvcnRoYW5kUHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpTaG9ydGhhbmRQcm9wZXJ0aWVzOjpwcm9wZXJ0aWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNob3J0aGFuZFByb3BlcnRpZXM6OmxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uKToK
KyAgICAgICAgKFNob3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQ
cm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVBy
b3BlcnR5U2V0Ojpib3JkZXJTcGFjaW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQ
cm9wZXJ0eVNldDo6Z2V0NFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5
U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQ
cm9wZXJ0eVNldDo6Z2V0U2hvcnRoYW5kVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQ
cm9wZXJ0eVNldDo6Z2V0Q29tbW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9w
ZXJ0eVNldDo6cmVtb3ZlU2hvcnRoYW5kUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVQcm9wZXJ0eVNldDo6cHJvcGVydHlJc0ltcG9ydGFudCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVBy
b3BlcnR5U2V0Ojphc1RleHQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVByb3BlcnR5U2V0OjpyZW1vdmVQcm9wZXJ0aWVzSW5TZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Y29weVByb3BlcnRpZXNJblNldCk6CisgICAgICAgICog
Y3NzL1N0eWxlUHJvcGVydHlTZXQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU3R5
bGVQcm9wZXJ0eVNldCk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVQcm9wZXJ0aWVzSW5TdHls
ZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXI6OlNob3J0aGFuZFByb3BlcnR5V3Jh
cHBlcik6CisgICAgICAgIChXZWJDb3JlOjphZGRTaG9ydGhhbmRQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKiBwYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwOgorCiAyMDEyLTAzLTI4
ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gTWVkaWFTdHJlYW0gQVBJIChKU0VQKTogSW50cm9kdWNpbmcgV2ViUGVlckNvbm5lY3Rp
b24wMEhhbmRsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKaW5kZXggYjk4OWMxZDVhNmVhYzcwODg5NDM0ZjUxYzkwNzY2M2ZhNzM3
MjJlNC4uOGYwNWY2ZDVlYjUwYjQyYWI0NTE3MzEzZjA5ZmZmNDIyNzQ1ZmI3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAg
LTc0LDcgKzc0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gTGlzdCBvZiBhbGwgcHJv
cGVydGllcyB3ZSBrbm93IGhvdyB0byBjb21wdXRlLCBvbWl0dGluZyBzaG9ydGhhbmRzLgotc3Rh
dGljIGNvbnN0IGludCBjb21wdXRlZFByb3BlcnRpZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBDU1NQ
cm9wZXJ0eUlEIGNvbXB1dGVkUHJvcGVydGllc1tdID0gewogICAgIENTU1Byb3BlcnR5QmFja2dy
b3VuZEF0dGFjaG1lbnQsCiAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwKICAgICBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvciwKQEAgLTIzMzcsMTAgKzIzMzcsMTAgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1Zh
bHVlKGludCBwcm9wZXIKICAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckZpbHRlcihzdHlsZS5n
ZXQoKSk7CiAjZW5kaWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6IHsKLSAg
ICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzVdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvciwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsCisgICAgICAgICAgICBjb25zdCBD
U1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNbNV0gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQsIENTU1Byb3BlcnR5QmFj
a2dyb3VuZEF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gfTsKLSAgICAgICAgICAgIHJldHVybiBn
ZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoQ1NTUHJvcGVydHlMb25n
aGFuZChwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpKSk7CisgICAgICAg
ICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKFNo
b3J0aGFuZFByb3BlcnRpZXMocHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVz
KSkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6IHsKICAgICAg
ICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1By
b3BlcnR5Qm9yZGVyVG9wLCBEb05vdFVwZGF0ZUxheW91dCk7CkBAIC0yNTc0LDcgKzI1NzQsNyBA
QCBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6bWFrZU11dGFibGUoKQogICAgIHJldHVybiBjb3B5KCk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldENTU1Byb3BlcnR5VmFs
dWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25n
aGFuZCkgY29uc3QKK1Bhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb246OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25z
dCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBsb25naGFuZCkgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbG9uZ2hhbmQubGVuZ3RoKCk7ICsraSkgewpAQCAt
MjU4NCw3ICsyNTg0LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG8KICAgICByZXR1cm4gbGlz
dC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb246OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQpIGNvbnN0CitQYXNzUmVmUHRyPENTU1Zh
bHVlTGlzdD4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIGxvbmdoYW5kKSBj
b25zdAogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNy
ZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgLy8gQXNzdW1lIHRoZSBwcm9wZXJ0aWVzIGFyZSBp
biB0aGUgdXN1YWwgb3JkZXIgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LgpAQCAtMjYxMiw3ICsy
NjEyLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWQKICAgICByZXR1cm4gbGlzdC5yZWxlYXNl
KCk7CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uOjpjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IGludCogc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpIGNvbnN0CitQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIHsKICAgICBWZWN0b3I8Q1NTUHJvcGVydHk+IGxp
c3Q7CiAgICAgbGlzdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggZTg5Mzhk
MGU1NTk1OTRlNWJmMjZmYWQwZjYzMTIwYTkwNWY4ZmE5OC4uZTE3Mzc5ZWNhNWE0ZDY5NDQ0NGQ2
ZGJkNGNiZjlmNWZiZGQ2ZjU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uaApAQCAtMjksNyArMjksNiBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKLWNsYXNzIENTU1Byb3BlcnR5TG9uZ2hh
bmQ7CiBjbGFzcyBDU1NWYWx1ZUxpc3Q7CiBjbGFzcyBDU1NWYWx1ZVBvb2w7CiBjbGFzcyBDb2xv
cjsKQEAgLTM3LDYgKzM2LDcgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xh
c3MgU1ZHUGFpbnQ7CiBjbGFzcyBTaGFkb3dEYXRhOworY2xhc3MgU2hvcnRoYW5kUHJvcGVydGll
czsKIGNsYXNzIFN0eWxlUHJvcGVydHlTZXQ7CiAKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCkBA
IC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRTVkdQ
cm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0KSBjb25zdDsKICNl
bmRpZgogCi0gICAgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjb3B5UHJvcGVydGllc0lu
U2V0KGNvbnN0IGludCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8U3R5bGVQcm9wZXJ0eVNldD4gY29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0
eUlEKiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uKFBhc3NSZWZQdHI8Tm9kZT4sIGJvb2wgYWxsb3dWaXNpdGVk
U3R5bGUsIGNvbnN0IFN0cmluZyYpOwpAQCAtMTEwLDggKzExMCw4IEBAIHByaXZhdGU6CiAgICAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JGaWx0ZXIoUmVuZGVyU3R5bGUqKSBjb25zdDsK
ICNlbmRpZgogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFs
dWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJikgY29u
c3Q7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9y
U2lkZXNTaG9ydGhhbmQoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0OworICAgIFBh
c3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFBy
b3BlcnRpZXMoY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNv
bnN0IFNob3J0aGFuZFByb3BlcnRpZXMmKSBjb25zdDsKIAogICAgIFJlZlB0cjxOb2RlPiBtX25v
ZGU7CiAgICAgUHNldWRvSWQgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcAppbmRleCAzMTdlZTA4ZDlmMzQ4NmJjYjNlY2Q5NzMyNjM0ZDRkN2VmYWQzOWQx
Li5kMTUxYjllMDhkZDk2MjA3NjJkN2M3NDAyMmRkZjI4ZTA0ZTY2Yzg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcApAQCAtNDksNyArNDksNiBAQAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZh
bHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eUxv
bmdoYW5kLmgiCi0jaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1By
b3BlcnR5U291cmNlRGF0YS5oIgogI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU1NlbGVjdG9yLmgiCkBAIC0yMzA1LDEzICsyMzA0LDEzIEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAvLyBQb3Np
dGlvbiBtdXN0IGNvbWUgYmVmb3JlIGNvbG9yIGluIHRoaXMgYXJyYXkgYmVjYXVzZSBhIHBsYWlu
IG9sZCAiMCIgaXMgYSBsZWdhbCBjb2xvcgogICAgICAgICAvLyBpbiBxdWlya3MgbW9kZSBidXQg
aXQncyB1c3VhbGx5IHRoZSBYIGNvb3JkaW5hdGUgb2YgYSBwb3NpdGlvbi4KICAgICAgICAgLy8g
RklYTUU6IEFkZCBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplIHRvIHRoZSBzaG9ydGhhbmQuCi0g
ICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZElt
YWdlLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQsCisgICAgICAgIGNvbnN0IENTU1Byb3Bl
cnR5SUQgcHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUmVwZWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQ
b3NpdGlvbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciB9OwogICAgICAgICByZXR1cm4gcGFyc2VGaWxsU2hvcnRoYW5kKHByb3BJ
ZCwgcHJvcGVydGllcywgNywgaW1wb3J0YW50KTsKICAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2s6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJv
cGVydHlXZWJraXRNYXNrSW1hZ2UsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCwKKyAgICAg
ICAgY29uc3QgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0
TWFza0ltYWdlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQsIENTU1By
b3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIENTU1Byb3BlcnR5V2Via2l0TWFza0Ns
aXAgfTsKICAgICAgICAgcmV0dXJuIHBhcnNlRmlsbFNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRp
ZXMsIDYsIGltcG9ydGFudCk7CkBAIC0yNTgxLDcgKzI1ODAsNyBAQCBzdGF0aWMgYm9vbCBwYXJz
ZUJhY2tncm91bmRDbGlwKENTU1BhcnNlclZhbHVlKiBwYXJzZXJWYWx1ZSwgUmVmUHRyPENTU1Zh
bHVlPiYgYwogCiBjb25zdCBpbnQgY01heEZpbGxQcm9wZXJ0aWVzID0gOTsKIAotYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlRmlsbFNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRp
ZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCkKK2Jvb2wgQ1NTUGFyc2VyOjpw
YXJzZUZpbGxTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlJRCogcHJvcGVy
dGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KQogewogICAgIEFTU0VSVChu
dW1Qcm9wZXJ0aWVzIDw9IGNNYXhGaWxsUHJvcGVydGllcyk7CiAgICAgaWYgKG51bVByb3BlcnRp
ZXMgPiBjTWF4RmlsbFByb3BlcnRpZXMpCkBAIC0yODM0LDcgKzI4MzMsNyBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VUcmFuc2l0aW9uU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwg
Y29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQsIGJvb2wgaW1wb3J0YW50KQorYm9v
bCBDU1NQYXJzZXI6OnBhcnNlU2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IFNob3J0aGFuZFBy
b3BlcnRpZXMmIHNob3J0aGFuZCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgLy8gV2UgdHJ5IHRv
IG1hdGNoIGFzIG1hbnkgcHJvcGVydGllcyBhcyBwb3NzaWJsZQogICAgIC8vIFdlIHNldCB1cCBh
biBhcnJheSBvZiBib29sZWFucyB0byBtYXJrIHdoaWNoIHByb3BlcnR5IGhhcyBiZWVuIGZvdW5k
LApAQCAtMjg0Nyw4ICsyODQ2LDggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU2hvcnRoYW5kKGlu
dCBwcm9wSWQsIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kLAogCiAgICAgd2hp
bGUgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpIHsKICAgICAgICAgZm91bmQgPSBmYWxzZTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBwcm9wSW5kZXggPSAwOyAhZm91bmQgJiYgcHJvcEluZGV4IDwg
bG9uZ2hhbmQubGVuZ3RoKCk7ICsrcHJvcEluZGV4KSB7Ci0gICAgICAgICAgICBpZiAoIXByb3Bl
cnR5Rm91bmRbcHJvcEluZGV4XSAmJiBwYXJzZVZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVtw
cm9wSW5kZXhdLCBpbXBvcnRhbnQpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgcHJvcEluZGV4
ID0gMDsgIWZvdW5kICYmIHByb3BJbmRleCA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytwcm9wSW5k
ZXgpIHsKKyAgICAgICAgICAgIGlmICghcHJvcGVydHlGb3VuZFtwcm9wSW5kZXhdICYmIHBhcnNl
VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtwcm9wSW5kZXhdLCBpbXBvcnRhbnQpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIHByb3BlcnR5Rm91bmRbcHJvcEluZGV4XSA9IGZvdW5kID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllc1BhcnNlZCsrOwogICAgICAgICAgICAg
fQpAQCAtMjg2MCwyOCArMjg1OSwyOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQo
aW50IHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQsCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHByb3BlcnRpZXNQYXJzZWQgPT0g
bG9uZ2hhbmQubGVuZ3RoKCkpCisgICAgaWYgKHByb3BlcnRpZXNQYXJzZWQgPT0gc2hvcnRoYW5k
Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZpbGwgaW4gYW55IHJl
bWFpbmluZyBwcm9wZXJ0aWVzIHdpdGggdGhlIGluaXRpYWwgdmFsdWUuCiAgICAgSW1wbGljaXRT
Y29wZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFByb3BlcnR5SW1wbGljaXQpOwotICAgIGNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQqIGNvbnN0KiBjb25zdCBsb25naGFuZHNGb3JJbml0aWFsaXphdGlv
biA9IGxvbmdoYW5kLmxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uKCk7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kpIHsKKyAgICBjb25zdCBTaG9y
dGhhbmRQcm9wZXJ0aWVzKiBjb25zdCogY29uc3QgbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24g
PSBzaG9ydGhhbmQubG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24oKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgaWYgKHBy
b3BlcnR5Rm91bmRbaV0pCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAobG9u
Z2hhbmRzRm9ySW5pdGlhbGl6YXRpb24pIHsKLSAgICAgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5
TG9uZ2hhbmQmIGluaXRMb25naGFuZCA9ICoobG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb25baV0p
OworICAgICAgICAgICAgY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgaW5pdExvbmdoYW5kID0g
Kihsb25naGFuZHNGb3JJbml0aWFsaXphdGlvbltpXSk7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIHByb3BJbmRleCA9IDA7IHByb3BJbmRleCA8IGluaXRMb25naGFuZC5sZW5ndGgoKTsgKytw
cm9wSW5kZXgpCiAgICAgICAgICAgICAgICAgYWRkUHJvcGVydHkoaW5pdExvbmdoYW5kLnByb3Bl
cnRpZXMoKVtwcm9wSW5kZXhdLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFs
VmFsdWUoKSwgaW1wb3J0YW50KTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBhZGRQcm9w
ZXJ0eShsb25naGFuZC5wcm9wZXJ0aWVzKClbaV0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBs
aWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVydHko
c2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0
SW5pdGlhbFZhbHVlKCksIGltcG9ydGFudCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50ICpw
cm9wZXJ0aWVzLCAgYm9vbCBpbXBvcnRhbnQpCitib29sIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVz
KGludCBwcm9wSWQsIGNvbnN0IENTU1Byb3BlcnR5SUQgKnByb3BlcnRpZXMsICBib29sIGltcG9y
dGFudCkKIHsKICAgICAvKiBGcm9tIHRoZSBDU1MgMiBzcGVjcywgOC4zCiAgICAgICogSWYgdGhl
cmUgaXMgb25seSBvbmUgdmFsdWUsIGl0IGFwcGxpZXMgdG8gYWxsIHNpZGVzLiBJZiB0aGVyZSBh
cmUgdHdvIHZhbHVlcywgdGhlIHRvcCBhbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCAxYWU2
NzAzNGI0NTQ5MzhlZDIyYTMzNTM4Y2FkMWQ2ODBhOGE1OTM0Li43OTU5NDRkNmY3YjVmMWVmMTUx
ZTdhNmYxNTgxYWI4Zjg5MjMxOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0yOCw2ICsy
OCw3IEBACiAjaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlclZh
bHVlcy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlO
YW1lcy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5U291cmNlRGF0YS5oIgogI2luY2x1ZGUgIkNT
U1NlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKQEAgLTQ2LDcgKzQ3LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU7CiBjbGFzcyBD
U1NQcmltaXRpdmVWYWx1ZTsKLWNsYXNzIENTU1Byb3BlcnR5TG9uZ2hhbmQ7CiBjbGFzcyBDU1NW
YWx1ZVBvb2w7CiBjbGFzcyBDU1NQcm9wZXJ0eTsKIGNsYXNzIENTU1J1bGU7CkBAIC01OCw2ICs1
OCw3IEBAIGNsYXNzIENTU1dyYXBTaGFwZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgTWVkaWFR
dWVyeUV4cDsKIGNsYXNzIE1lZGlhUXVlcnlTZXQ7CitjbGFzcyBTaG9ydGhhbmRQcm9wZXJ0aWVz
OwogY2xhc3MgU3R5bGVQcm9wZXJ0eVNldDsKIGNsYXNzIFN0eWxlZEVsZW1lbnQ7CiBjbGFzcyBX
ZWJLaXRDU1NLZXlmcmFtZVJ1bGU7CkBAIC05Miw4ICs5Myw4IEBAIHB1YmxpYzoKICAgICBib29s
IGhhc1Byb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiAhbV9wYXJzZWRQcm9wZXJ0aWVzLmlzRW1w
dHkoKTsgfQogCiAgICAgYm9vbCBwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KTsKLSAgICBib29sIHBhcnNlU2hvcnRoYW5kKGludCwgY29uc3QgQ1NTUHJvcGVydHlMb25naGFu
ZCYsIGJvb2wpOwotICAgIGJvb2wgcGFyc2U0VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0IGludCog
cHJvcGVydGllcywgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgcGFyc2VTaG9ydGhhbmQoaW50
LCBjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiwgYm9vbCk7CisgICAgYm9vbCBwYXJzZTRWYWx1
ZXMoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlJRCogcHJvcGVydGllcywgYm9vbCBpbXBv
cnRhbnQpOwogICAgIGJvb2wgcGFyc2VDb250ZW50KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KTsKICAgICBib29sIHBhcnNlUXVvdGVzKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKIApA
QCAtMTEzLDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJz
ZUZpbGxTaXplKGludCBwcm9wSWQsIGJvb2wgJmFsbG93Q29tbWEpOwogCiAgICAgYm9vbCBwYXJz
ZUZpbGxQcm9wZXJ0eShpbnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJvcElkMiwgUmVm
UHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKLSAgICBib29sIHBhcnNlRmlsbFNo
b3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0
aWVzLCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBwYXJzZUZpbGxTaG9ydGhhbmQoaW50IHBy
b3BJZCwgY29uc3QgQ1NTUHJvcGVydHlJRCogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMs
IGJvb2wgaW1wb3J0YW50KTsKIAogICAgIHZvaWQgYWRkRmlsbFZhbHVlKFJlZlB0cjxDU1NWYWx1
ZT4mIGx2YWwsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJ2YWwpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
b3BlcnR5LmNwcAppbmRleCBhYjEwNDM5MTkyZjhhZmNkZDRkNGE4MzcxN2RiMjIzMmRkM2NhNDZh
Li42YTU0Y2JlZjE0MzA0ZGUwOWU1N2ZjOWIyZmU1NjA4MjUzOTBiMWU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eS5jcHAKQEAgLTM2LDI2ICszNiwyNiBAQCBTdHJpbmcgQ1NTUHJvcGVydHk6
OmNzc1RleHQoKSBjb25zdAogZW51bSBMb2dpY2FsQm94U2lkZSB7IEJlZm9yZVNpZGUsIEVuZFNp
ZGUsIEFmdGVyU2lkZSwgU3RhcnRTaWRlIH07CiBlbnVtIFBoeXNpY2FsQm94U2lkZSB7IFRvcFNp
ZGUsIFJpZ2h0U2lkZSwgQm90dG9tU2lkZSwgTGVmdFNpZGUgfTsKIAotc3RhdGljIGludCByZXNv
bHZlVG9QaHlzaWNhbFByb3BlcnR5KFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGUgbG9naWNhbFNpZGUsIGNvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIGxvbmdoYW5kKQorc3RhdGljIGludCByZXNvbHZlVG9QaHlzaWNhbFByb3Bl
cnR5KFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgTG9n
aWNhbEJveFNpZGUgbG9naWNhbFNpZGUsIGNvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIHNob3J0
aGFuZCkKIHsKICAgICBpZiAoZGlyZWN0aW9uID09IExUUikgewogICAgICAgICBpZiAod3JpdGlu
Z01vZGUgPT0gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSkgewogICAgICAgICAgICAgLy8gVGhlIGNv
bW1vbiBjYXNlLiBUaGUgbG9naWNhbCBhbmQgcGh5c2ljYWwgYm94IHNpZGVzIG1hdGNoLgogICAg
ICAgICAgICAgLy8gTGVmdCA9IFN0YXJ0LCBSaWdodCA9IEVuZCwgQmVmb3JlID0gVG9wLCBBZnRl
ciA9IEJvdHRvbQotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtsb2dp
Y2FsU2lkZV07CisgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtsb2dp
Y2FsU2lkZV07CiAgICAgICAgIH0KIAogICAgICAgICBpZiAod3JpdGluZ01vZGUgPT0gQm90dG9t
VG9Ub3BXcml0aW5nTW9kZSkgewogICAgICAgICAgICAgLy8gU3RhcnQgPSBMZWZ0LCBFbmQgPSBS
aWdodCwgQmVmb3JlID0gQm90dG9tLCBBZnRlciA9IFRvcC4KICAgICAgICAgICAgIHN3aXRjaCAo
bG9naWNhbFNpZGUpIHsKICAgICAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICAgICAg
ICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOworICAgICAgICAgICAg
ICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKICAgICAgICAgICAg
IGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGll
cygpW1JpZ2h0U2lkZV07CisgICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0
aWVzKClbUmlnaHRTaWRlXTsKICAgICAgICAgICAgIGNhc2UgQmVmb3JlU2lkZToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOworICAgICAg
ICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwogICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVy
dGllcygpW1RvcFNpZGVdOworICAgICAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVy
dGllcygpW1RvcFNpZGVdOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTYzLDI2ICs2
MywyNiBAQCBzdGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4dERpcmVjdGlv
biBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbgogICAgICAgICAgICAgLy8gU3RhcnQgPSBU
b3AsIEVuZCA9IEJvdHRvbSwgQmVmb3JlID0gTGVmdCwgQWZ0ZXIgPSBSaWdodC4KICAgICAgICAg
ICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKICAgICAgICAgICAgIGNhc2UgU3RhcnRTaWRlOgot
ICAgICAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CiAg
ICAgICAgICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5k
LnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRo
YW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKICAgICAgICAgICAgIGNhc2UgQmVmb3JlU2lk
ZToKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0xlZnRTaWRl
XTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtMZWZ0U2lk
ZV07CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBsb25naGFu
ZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRo
YW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
ICAgICAgICAgLy8gU3RhcnQgPSBUb3AsIEVuZCA9IEJvdHRvbSwgQmVmb3JlID0gUmlnaHQsIEFm
dGVyID0gTGVmdAogICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7CiAgICAgICAgIGNhc2Ug
U3RhcnRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtUb3BT
aWRlXTsKKyAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVd
OwogICAgICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJv
cGVydGllcygpW0JvdHRvbVNpZGVdOworICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9w
ZXJ0aWVzKClbQm90dG9tU2lkZV07CiAgICAgICAgIGNhc2UgQmVmb3JlU2lkZToKLSAgICAgICAg
ICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKKyAgICAgICAgICAg
IHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07CiAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsK
KyAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtOTAsMTMgKzkwLDEzIEBAIHN0YXRpYyBpbnQgcmVzb2x2ZVRv
UGh5c2ljYWxQcm9wZXJ0eShUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgV3JpdGluZ01vZGUgd3Jp
dGluCiAgICAgICAgIC8vIFN0YXJ0ID0gUmlnaHQsIEVuZCA9IExlZnQsIEJlZm9yZSA9IFRvcCwg
QWZ0ZXIgPSBCb3R0b20KICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewogICAgICAgICBj
YXNlIFN0YXJ0U2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClb
UmlnaHRTaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1Jp
Z2h0U2lkZV07CiAgICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25n
aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFu
ZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwogICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAg
ICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOworICAgICAgICAg
ICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CiAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVd
OworICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEwNCwxMyArMTA0LDEzIEBAIHN0YXRpYyBpbnQgcmVz
b2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgV3JpdGluZ01v
ZGUgd3JpdGluCiAgICAgICAgIC8vIFN0YXJ0ID0gUmlnaHQsIEVuZCA9IExlZnQsIEJlZm9yZSA9
IEJvdHRvbSwgQWZ0ZXIgPSBUb3AKICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewogICAg
ICAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0
aWVzKClbUmlnaHRTaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGll
cygpW1JpZ2h0U2lkZV07CiAgICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVy
biBsb25naGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIHNo
b3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwogICAgICAgICBjYXNlIEJlZm9yZVNpZGU6
Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwor
ICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07CiAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygp
W1RvcFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9w
U2lkZV07CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExOCw0MiArMTE4LDQyIEBAIHN0YXRpYyBp
bnQgcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgV3Jp
dGluZ01vZGUgd3JpdGluCiAgICAgICAgIC8vIFN0YXJ0ID0gQm90dG9tLCBFbmQgPSBUb3AsIEJl
Zm9yZSA9IExlZnQsIEFmdGVyID0gUmlnaHQKICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkg
ewogICAgICAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5w
cm9wZXJ0aWVzKClbQm90dG9tU2lkZV07CisgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnBy
b3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKICAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAg
ICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKKyAgICAgICAgICAgIHJl
dHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwogICAgICAgICBjYXNlIEJlZm9y
ZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0xlZnRTaWRl
XTsKKyAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsK
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVz
KClbUmlnaHRTaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygp
W1JpZ2h0U2lkZV07CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBTdGFydCA9IEJvdHRvbSwg
RW5kID0gVG9wLCBCZWZvcmUgPSBSaWdodCwgQWZ0ZXIgPSBMZWZ0CiAgICAgc3dpdGNoIChsb2dp
Y2FsU2lkZSkgewogICAgIGNhc2UgU3RhcnRTaWRlOgotICAgICAgICByZXR1cm4gbG9uZ2hhbmQu
cHJvcGVydGllcygpW0JvdHRvbVNpZGVdOworICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3Bl
cnRpZXMoKVtCb3R0b21TaWRlXTsKICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgIHJldHVybiBs
b25naGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CisgICAgICAgIHJldHVybiBzaG9ydGhhbmQu
cHJvcGVydGllcygpW1RvcFNpZGVdOwogICAgIGNhc2UgQmVmb3JlU2lkZToKLSAgICAgICAgcmV0
dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOworICAgICAgICByZXR1cm4gc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJl
dHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOworICAgICAgICByZXR1cm4gc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVtMZWZ0U2lkZV07CiAgICAgfQogfQogCiBlbnVtIExvZ2ljYWxF
eHRlbnQgeyBMb2dpY2FsV2lkdGgsIExvZ2ljYWxIZWlnaHQgfTsKIAotc3RhdGljIGludCByZXNv
bHZlVG9QaHlzaWNhbFByb3BlcnR5KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2FsRXh0
ZW50IGxvZ2ljYWxTaWRlLCBjb25zdCBpbnQqIHByb3BlcnRpZXMpCitzdGF0aWMgaW50IHJlc29s
dmVUb1BoeXNpY2FsUHJvcGVydHkoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIExvZ2ljYWxFeHRl
bnQgbG9naWNhbFNpZGUsIGNvbnN0IENTU1Byb3BlcnR5SUQqIHByb3BlcnRpZXMpCiB7CiAgICAg
aWYgKHdyaXRpbmdNb2RlID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUgfHwgd3JpdGluZ01vZGUg
PT0gQm90dG9tVG9Ub3BXcml0aW5nTW9kZSkKICAgICAgICAgcmV0dXJuIHByb3BlcnRpZXNbbG9n
aWNhbFNpZGVdOwogICAgIHJldHVybiBsb2dpY2FsU2lkZSA9PSBMb2dpY2FsV2lkdGggPyBwcm9w
ZXJ0aWVzWzFdIDogcHJvcGVydGllc1swXTsKIH0KIAotc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5
TG9uZ2hhbmQmIGJvcmRlckRpcmVjdGlvbnMoKQorc3RhdGljIGNvbnN0IFNob3J0aGFuZFByb3Bl
cnRpZXMmIGJvcmRlckRpcmVjdGlvbnMoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgcHJvcGVy
dGllc1s0XSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3AsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQs
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnQgfTsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlckRpcmVjdGlvbnMs
IChwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpKSk7CisgICAgc3RhdGlj
IGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJU
b3AsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tLCBDU1NQ
cm9wZXJ0eUJvcmRlckxlZnQgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZFBy
b3BlcnRpZXMsIGJvcmRlckRpcmVjdGlvbnMsIChwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RI
KHByb3BlcnRpZXMpKSk7CiAgICAgcmV0dXJuIGJvcmRlckRpcmVjdGlvbnM7CiB9CiAKQEAgLTIw
OSwyNyArMjA5LDI3IEBAIGludCBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJv
cGVydHkoaW50IHByb3BlcnR5SUQsIFRleHREaXJlY3Rpb24gZGlyCiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGg6CiAgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlz
aWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEFmdGVyU2lkZSwgYm9yZGVyV2lk
dGhMb25naGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9naWNhbFdpZHRoOiB7
Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdpZHRoLCBD
U1NQcm9wZXJ0eUhlaWdodCB9OworICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRp
ZXNbMl0gPSB7IENTU1Byb3BlcnR5V2lkdGgsIENTU1Byb3BlcnR5SGVpZ2h0IH07CiAgICAgICAg
IHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KHdyaXRpbmdNb2RlLCBMb2dpY2FsV2lk
dGgsIHByb3BlcnRpZXMpOwogICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9naWNh
bEhlaWdodDogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVy
dHlXaWR0aCwgQ1NTUHJvcGVydHlIZWlnaHQgfTsKKyAgICAgICAgY29uc3QgQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdpZHRoLCBDU1NQcm9wZXJ0eUhlaWdodCB9
OwogICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eSh3cml0aW5nTW9kZSwg
TG9naWNhbEhlaWdodCwgcHJvcGVydGllcyk7CiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNaW5Mb2dpY2FsV2lkdGg6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0g
PSB7IENTU1Byb3BlcnR5TWluV2lkdGgsIENTU1Byb3BlcnR5TWluSGVpZ2h0IH07CisgICAgICAg
IGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlNaW5XaWR0
aCwgQ1NTUHJvcGVydHlNaW5IZWlnaHQgfTsKICAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNp
Y2FsUHJvcGVydHkod3JpdGluZ01vZGUsIExvZ2ljYWxXaWR0aCwgcHJvcGVydGllcyk7CiAgICAg
fQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0OiB7Ci0gICAgICAg
IGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eU1pbldpZHRoLCBDU1NQcm9w
ZXJ0eU1pbkhlaWdodCB9OworICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNb
Ml0gPSB7IENTU1Byb3BlcnR5TWluV2lkdGgsIENTU1Byb3BlcnR5TWluSGVpZ2h0IH07CiAgICAg
ICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KHdyaXRpbmdNb2RlLCBMb2dpY2Fs
SGVpZ2h0LCBwcm9wZXJ0aWVzKTsKICAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
eExvZ2ljYWxXaWR0aDogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NT
UHJvcGVydHlNYXhXaWR0aCwgQ1NTUHJvcGVydHlNYXhIZWlnaHQgfTsKKyAgICAgICAgY29uc3Qg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eU1heFdpZHRoLCBDU1NQ
cm9wZXJ0eU1heEhlaWdodCB9OwogICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9w
ZXJ0eSh3cml0aW5nTW9kZSwgTG9naWNhbFdpZHRoLCBwcm9wZXJ0aWVzKTsKICAgICB9CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQ6IHsKLSAgICAgICAgY29uc3Qg
aW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5TWF4V2lkdGgsIENTU1Byb3BlcnR5TWF4
SGVpZ2h0IH07CisgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1syXSA9IHsg
Q1NTUHJvcGVydHlNYXhXaWR0aCwgQ1NTUHJvcGVydHlNYXhIZWlnaHQgfTsKICAgICAgICAgcmV0
dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkod3JpdGluZ01vZGUsIExvZ2ljYWxIZWlnaHQs
IHByb3BlcnRpZXMpOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5TG9uZ2hhbmQuY3BwCmluZGV4IDdjMTJkOWMzYjU5OTZlOGFmNDQwODA4YTFiNTNk
NGIzODJlZWRmMGEuLjU5ZGRhYTgwNTJjZTE5MTBiMzIzODJlNDgzMDZiMzllYmQ1YmE4NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAKQEAgLTIxLDE1ICsy
MSwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TG9uZ2hh
bmQuaCIKIAotI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRklYTUU6IEFkZCBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRTaXplIHRvIHRoZSBzaG9ydGhhbmQuCi1jb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiBiYWNrZ3JvdW5kTG9uZ2hhbmQoKQorY29uc3QgU2hvcnRoYW5kUHJvcGVydGll
cyYgYmFja2dyb3VuZExvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJhY2tncm91
bmRQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYmFja2dy
b3VuZFByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Is
CiAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLAogICAgICAgICBDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXRYLApAQCAtNDAsMTYwICszOSwxNjAgQEAgY29uc3QgQ1NTUHJvcGVy
dHlMb25naGFuZCYgYmFja2dyb3VuZExvbmdoYW5kKCkKICAgICAgICAgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ2xpcCwKICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luCiAgICAgfTsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJhY2tncm91bmRM
b25naGFuZCwgKGJhY2tncm91bmRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJhY2tncm91
bmRQcm9wZXJ0aWVzKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJvcGVy
dGllcywgYmFja2dyb3VuZExvbmdoYW5kLCAoYmFja2dyb3VuZFByb3BlcnRpZXMsIFdURl9BUlJB
WV9MRU5HVEgoYmFja2dyb3VuZFByb3BlcnRpZXMpKSk7CiAgICAgcmV0dXJuIGJhY2tncm91bmRM
b25naGFuZDsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3VuZFBvc2l0
aW9uTG9uZ2hhbmQoKQorY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgYmFja2dyb3VuZFBvc2l0
aW9uTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFBvc2l0aW9u
UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFBvc2l0aW9uWSB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJv
cGVydHlMb25naGFuZCwgYmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQsIChiYWNrZ3JvdW5kUG9z
aXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJhY2tncm91bmRQb3NpdGlvblByb3Bl
cnRpZXMpKSk7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYmFja2dyb3VuZFBvc2l0
aW9uUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIENTU1By
b3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hv
cnRoYW5kUHJvcGVydGllcywgYmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQsIChiYWNrZ3JvdW5k
UG9zaXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJhY2tncm91bmRQb3NpdGlvblBy
b3BlcnRpZXMpKSk7CiAgICAgcmV0dXJuIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kOwogfQog
Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQoKQor
Y29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgYmFja2dyb3VuZFJlcGVhdExvbmdoYW5kKCkKIHsK
LSAgICBzdGF0aWMgY29uc3QgaW50IGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENT
U1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkg
fTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJhY2tncm91
bmRSZXBlYXRMb25naGFuZCwgKGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlf
TEVOR1RIKGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzKSkpOworICAgIHN0YXRpYyBjb25zdCBD
U1NQcm9wZXJ0eUlEIGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5
QmFja2dyb3VuZFJlcGVhdFgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkgfTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZFByb3BlcnRpZXMsIGJhY2tncm91bmRSZXBlYXRM
b25naGFuZCwgKGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJh
Y2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzKSkpOwogICAgIHJldHVybiBiYWNrZ3JvdW5kUmVwZWF0
TG9uZ2hhbmQ7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckxvbmdoYW5k
KCkKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIGJvcmRlckxvbmdoYW5kKCkKIHsKICAgICAv
LyBEbyBub3QgY2hhbmdlIHRoZSBvcmRlciBvZiB0aGUgZm9sbG93aW5nIGZvdXIgc2hvcnRoYW5k
cywgYW5kIGtlZXAgdGhlbSB0b2dldGhlci4KLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclBy
b3BlcnRpZXNbNF1bM10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVy
UHJvcGVydGllc1s0XVszXSA9IHsKICAgICAgICAgeyBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9y
LCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoIH0s
CiAgICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCB9LAogICAgICAgICB7IENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGggfSwKICAgICAgICAgeyBDU1NQcm9wZXJ0eUJv
cmRlckxlZnRDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFdpZHRoIH0KICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVy
dHlMb25naGFuZCwgYm9yZGVyTG9uZ2hhbmQsIChib3JkZXJQcm9wZXJ0aWVzWzBdLCBzaXplb2Yo
Ym9yZGVyUHJvcGVydGllcykgLyBzaXplb2YoYm9yZGVyUHJvcGVydGllc1swXVswXSkpKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZFByb3BlcnRpZXMsIGJvcmRlckxvbmdoYW5k
LCAoYm9yZGVyUHJvcGVydGllc1swXSwgc2l6ZW9mKGJvcmRlclByb3BlcnRpZXMpIC8gc2l6ZW9m
KGJvcmRlclByb3BlcnRpZXNbMF1bMF0pKSk7CiAgICAgcmV0dXJuIGJvcmRlckxvbmdoYW5kOwog
fQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJBYnJpZGdlZExvbmdoYW5kKCkK
K2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIGJvcmRlckFicmlkZ2VkTG9uZ2hhbmQoKQogewot
ICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyQWJyaWRnZWRQcm9wZXJ0aWVzW10gPSB7IENTU1By
b3BlcnR5Qm9yZGVyV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIENTU1Byb3BlcnR5Qm9y
ZGVyQ29sb3IgfTsKLSAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCogcHJvcGVy
dGllc0ZvckluaXRpYWxpemF0aW9uW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5
SUQgYm9yZGVyQWJyaWRnZWRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgs
IENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IgfTsKKyAgICBz
dGF0aWMgY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyogcHJvcGVydGllc0ZvckluaXRpYWxpemF0
aW9uW10gPSB7CiAgICAgICAgICZib3JkZXJXaWR0aExvbmdoYW5kKCksCiAgICAgICAgICZib3Jk
ZXJTdHlsZUxvbmdoYW5kKCksCiAgICAgICAgICZib3JkZXJDb2xvckxvbmdoYW5kKCksCiAgICAg
fTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlckFi
cmlkZ2VkTG9uZ2hhbmQsCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTaG9ydGhhbmRQcm9wZXJ0
aWVzLCBib3JkZXJBYnJpZGdlZExvbmdoYW5kLAogICAgICAgICAoYm9yZGVyQWJyaWRnZWRQcm9w
ZXJ0aWVzLCBwcm9wZXJ0aWVzRm9ySW5pdGlhbGl6YXRpb24sIFdURl9BUlJBWV9MRU5HVEgoYm9y
ZGVyQWJyaWRnZWRQcm9wZXJ0aWVzKSkpOwogICAgIHJldHVybiBib3JkZXJBYnJpZGdlZExvbmdo
YW5kOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJCb3R0b21Mb25naGFu
ZCgpCitjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBib3JkZXJCb3R0b21Mb25naGFuZCgpCiB7
Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJCb3R0b21Qcm9wZXJ0aWVzW10gPSB7IENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENT
U1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlckJvdHRvbUxvbmdoYW5kLCAoYm9yZGVyQm90dG9tUHJv
cGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJCb3R0b21Qcm9wZXJ0aWVzKSkpOworICAg
IHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckJvdHRvbVByb3BlcnRpZXNbXSA9IHsg
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHls
ZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciB9OworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU2hvcnRoYW5kUHJvcGVydGllcywgYm9yZGVyQm90dG9tTG9uZ2hhbmQsIChib3JkZXJCb3R0
b21Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckJvdHRvbVByb3BlcnRpZXMpKSk7
CiAgICAgcmV0dXJuIGJvcmRlckJvdHRvbUxvbmdoYW5kOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiBib3JkZXJDb2xvckxvbmdoYW5kKCkKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRp
ZXMmIGJvcmRlckNvbG9yTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVy
Q29sb3JQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9y
ZGVyQ29sb3JQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29s
b3IsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwKICAgICAgICAgQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21Db2xvciwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29s
b3IKICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwg
Ym9yZGVyQ29sb3JMb25naGFuZCwgKGJvcmRlckNvbG9yUHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSChib3JkZXJDb2xvclByb3BlcnRpZXMpKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
aG9ydGhhbmRQcm9wZXJ0aWVzLCBib3JkZXJDb2xvckxvbmdoYW5kLCAoYm9yZGVyQ29sb3JQcm9w
ZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckNvbG9yUHJvcGVydGllcykpKTsKICAgICBy
ZXR1cm4gYm9yZGVyQ29sb3JMb25naGFuZDsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFu
ZCYgYm9yZGVySW1hZ2VMb25naGFuZCgpCitjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBib3Jk
ZXJJbWFnZUxvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckltYWdlUHJv
cGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckltYWdl
UHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlLAog
ICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU2xpY2UsCiAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVySW1hZ2VXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNldCwK
ICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVJlcGVhdAogICAgIH07Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJJbWFnZUxvbmdoYW5kLCAo
Ym9yZGVySW1hZ2VQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckltYWdlUHJvcGVy
dGllcykpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZFByb3BlcnRpZXMsIGJv
cmRlckltYWdlTG9uZ2hhbmQsIChib3JkZXJJbWFnZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5H
VEgoYm9yZGVySW1hZ2VQcm9wZXJ0aWVzKSkpOwogICAgIHJldHVybiBib3JkZXJJbWFnZUxvbmdo
YW5kOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJMZWZ0TG9uZ2hhbmQo
KQorY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgYm9yZGVyTGVmdExvbmdoYW5kKCkKIHsKLSAg
ICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckxlZnRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5
Qm9yZGVyTGVmdFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0Q29sb3IgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9u
Z2hhbmQsIGJvcmRlckxlZnRMb25naGFuZCwgKGJvcmRlckxlZnRQcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKGJvcmRlckxlZnRQcm9wZXJ0aWVzKSkpOworICAgIHN0YXRpYyBjb25zdCBDU1NQ
cm9wZXJ0eUlEIGJvcmRlckxlZnRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyTGVm
dFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
Q29sb3IgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZFByb3BlcnRpZXMsIGJv
cmRlckxlZnRMb25naGFuZCwgKGJvcmRlckxlZnRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RI
KGJvcmRlckxlZnRQcm9wZXJ0aWVzKSkpOwogICAgIHJldHVybiBib3JkZXJMZWZ0TG9uZ2hhbmQ7
CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclJhZGl1c0xvbmdoYW5kKCkK
K2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIGJvcmRlclJhZGl1c0xvbmdoYW5kKCkKIHsKLSAg
ICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclJhZGl1c1Byb3BlcnRpZXNbXSA9IHsKKyAgICBzdGF0
aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJSYWRpdXNQcm9wZXJ0aWVzW10gPSB7CiAgICAg
ICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsCiAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVyVG9wTGVmdFJhZGl1cywKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0
UmFkaXVzLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzCiAgICAg
fTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlclJh
ZGl1c0xvbmdoYW5kLCAoYm9yZGVyUmFkaXVzUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChi
b3JkZXJSYWRpdXNQcm9wZXJ0aWVzKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRo
YW5kUHJvcGVydGllcywgYm9yZGVyUmFkaXVzTG9uZ2hhbmQsIChib3JkZXJSYWRpdXNQcm9wZXJ0
aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclJhZGl1c1Byb3BlcnRpZXMpKSk7CiAgICAgcmV0
dXJuIGJvcmRlclJhZGl1c0xvbmdoYW5kOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiBib3JkZXJSaWdodExvbmdoYW5kKCkKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIGJvcmRl
clJpZ2h0TG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyUmlnaHRQcm9w
ZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3Jk
ZXJSaWdodFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IgfTsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlclJpZ2h0TG9uZ2hhbmQsIChi
b3JkZXJSaWdodFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyUmlnaHRQcm9wZXJ0
aWVzKSkpOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlclJpZ2h0UHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yIH07CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTaG9ydGhhbmRQcm9wZXJ0aWVzLCBib3JkZXJSaWdodExvbmdoYW5kLCAoYm9y
ZGVyUmlnaHRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclJpZ2h0UHJvcGVydGll
cykpKTsKICAgICByZXR1cm4gYm9yZGVyUmlnaHRMb25naGFuZDsKIH0KIAotY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgYm9yZGVyU3BhY2luZ0xvbmdoYW5kKCkKK2NvbnN0IFNob3J0aGFuZFBy
b3BlcnRpZXMmIGJvcmRlclNwYWNpbmdMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGlu
dCBib3JkZXJTcGFjaW5nUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhv
cml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyB9
OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyU3Bh
Y2luZ0xvbmdoYW5kLCAoYm9yZGVyU3BhY2luZ1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgo
Ym9yZGVyU3BhY2luZ1Byb3BlcnRpZXMpKSk7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5
SUQgYm9yZGVyU3BhY2luZ1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJI
b3Jpem9udGFsU3BhY2luZywgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcg
fTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZFByb3BlcnRpZXMsIGJvcmRlclNw
YWNpbmdMb25naGFuZCwgKGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RI
KGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzKSkpOwogICAgIHJldHVybiBib3JkZXJTcGFjaW5nTG9u
Z2hhbmQ7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclN0eWxlTG9uZ2hh
bmQoKQorY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgYm9yZGVyU3R5bGVMb25naGFuZCgpCiB7
Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJTdHlsZVByb3BlcnRpZXNbXSA9IHsKKyAgICBz
dGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJTdHlsZVByb3BlcnRpZXNbXSA9IHsKICAg
ICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwKICAgICAgICAgQ1NTUHJvcGVydHlCb3Jk
ZXJSaWdodFN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLAogICAg
ICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZQogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJTdHlsZUxvbmdoYW5kLCAoYm9yZGVy
U3R5bGVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclN0eWxlUHJvcGVydGllcykp
KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZFByb3BlcnRpZXMsIGJvcmRlclN0
eWxlTG9uZ2hhbmQsIChib3JkZXJTdHlsZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9y
ZGVyU3R5bGVQcm9wZXJ0aWVzKSkpOwogICAgIHJldHVybiBib3JkZXJTdHlsZUxvbmdoYW5kOwog
fQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJUb3BMb25naGFuZCgpCitjb25z
dCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBib3JkZXJUb3BMb25naGFuZCgpCiB7Ci0gICAgc3RhdGlj
IGNvbnN0IGludCBib3JkZXJUb3BQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyVG9w
V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29s
b3IgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRl
clRvcExvbmdoYW5kLCAoYm9yZGVyVG9wUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3Jk
ZXJUb3BQcm9wZXJ0aWVzKSkpOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRl
clRvcFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgQ1NTUHJvcGVy
dHlCb3JkZXJUb3BTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciB9OworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJvcGVydGllcywgYm9yZGVyVG9wTG9uZ2hhbmQsIChi
b3JkZXJUb3BQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclRvcFByb3BlcnRpZXMp
KSk7CiAgICAgcmV0dXJuIGJvcmRlclRvcExvbmdoYW5kOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiBib3JkZXJXaWR0aExvbmdoYW5kKCkKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRp
ZXMmIGJvcmRlcldpZHRoTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVy
V2lkdGhQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9y
ZGVyV2lkdGhQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lk
dGgsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21XaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lk
dGgKICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwg
Ym9yZGVyV2lkdGhMb25naGFuZCwgKGJvcmRlcldpZHRoUHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSChib3JkZXJXaWR0aFByb3BlcnRpZXMpKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
aG9ydGhhbmRQcm9wZXJ0aWVzLCBib3JkZXJXaWR0aExvbmdoYW5kLCAoYm9yZGVyV2lkdGhQcm9w
ZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlcldpZHRoUHJvcGVydGllcykpKTsKICAgICBy
ZXR1cm4gYm9yZGVyV2lkdGhMb25naGFuZDsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFu
ZCYgbGlzdFN0eWxlTG9uZ2hhbmQoKQorY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgbGlzdFN0
eWxlTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgbGlzdFN0eWxlUHJvcGVydGll
c1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGxpc3RTdHlsZVByb3BlcnRp
ZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLAogICAgICAgICBDU1NQ
cm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eUxpc3RTdHlsZUlt
YWdlCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQs
IGxpc3RTdHlsZUxvbmdoYW5kLCAobGlzdFN0eWxlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdU
SChsaXN0U3R5bGVQcm9wZXJ0aWVzKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRo
YW5kUHJvcGVydGllcywgbGlzdFN0eWxlTG9uZ2hhbmQsIChsaXN0U3R5bGVQcm9wZXJ0aWVzLCBX
VEZfQVJSQVlfTEVOR1RIKGxpc3RTdHlsZVByb3BlcnRpZXMpKSk7CiAgICAgcmV0dXJuIGxpc3RT
dHlsZUxvbmdoYW5kOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBmb250TG9uZ2hh
bmQoKQorY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgZm9udExvbmdoYW5kKCkKIHsKLSAgICBz
dGF0aWMgY29uc3QgaW50IGZvbnRQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENT
U1Byb3BlcnR5SUQgZm9udFByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlGb250
RmFtaWx5LAogICAgICAgICBDU1NQcm9wZXJ0eUZvbnRTaXplLAogICAgICAgICBDU1NQcm9wZXJ0
eUZvbnRTdHlsZSwKQEAgLTIwMSw1NSArMjAwLDU1IEBAIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hh
bmQmIGZvbnRMb25naGFuZCgpCiAgICAgICAgIENTU1Byb3BlcnR5Rm9udFdlaWdodCwKICAgICAg
ICAgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0CiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KENTU1Byb3BlcnR5TG9uZ2hhbmQsIGZvbnRMb25naGFuZCwgKGZvbnRQcm9wZXJ0aWVzLCBXVEZf
QVJSQVlfTEVOR1RIKGZvbnRQcm9wZXJ0aWVzKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U2hvcnRoYW5kUHJvcGVydGllcywgZm9udExvbmdoYW5kLCAoZm9udFByb3BlcnRpZXMsIFdURl9B
UlJBWV9MRU5HVEgoZm9udFByb3BlcnRpZXMpKSk7CiAgICAgcmV0dXJuIGZvbnRMb25naGFuZDsK
IH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbWFyZ2luTG9uZ2hhbmQoKQorY29uc3Qg
U2hvcnRoYW5kUHJvcGVydGllcyYgbWFyZ2luTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25z
dCBpbnQgbWFyZ2luUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0
eUlEIG1hcmdpblByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5Ub3As
CiAgICAgICAgIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsCiAgICAgICAgIENTU1Byb3BlcnR5TWFy
Z2luQm90dG9tLAogICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQKICAgICB9OwotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgbWFyZ2luTG9uZ2hhbmQsICht
YXJnaW5Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hcmdpblByb3BlcnRpZXMpKSk7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTaG9ydGhhbmRQcm9wZXJ0aWVzLCBtYXJnaW5Mb25naGFu
ZCwgKG1hcmdpblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFyZ2luUHJvcGVydGllcykp
KTsKICAgICByZXR1cm4gbWFyZ2luTG9uZ2hhbmQ7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9u
Z2hhbmQmIG91dGxpbmVMb25naGFuZCgpCitjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBvdXRs
aW5lTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgb3V0bGluZVByb3BlcnRpZXNb
XSA9IHsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBvdXRsaW5lUHJvcGVydGllc1td
ID0gewogICAgICAgICBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwKICAgICAgICAgQ1NTUHJvcGVy
dHlPdXRsaW5lU3R5bGUsCiAgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoCiAgICAgfTsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIG91dGxpbmVMb25n
aGFuZCwgKG91dGxpbmVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG91dGxpbmVQcm9wZXJ0
aWVzKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJvcGVydGllcywgb3V0
bGluZUxvbmdoYW5kLCAob3V0bGluZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgob3V0bGlu
ZVByb3BlcnRpZXMpKSk7CiAgICAgcmV0dXJuIG91dGxpbmVMb25naGFuZDsKIH0KIAotY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgb3ZlcmZsb3dMb25naGFuZCgpCitjb25zdCBTaG9ydGhhbmRQ
cm9wZXJ0aWVzJiBvdmVyZmxvd0xvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IG92
ZXJmbG93UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eU92ZXJmbG93WCwgQ1NTUHJvcGVydHlP
dmVyZmxvd1kgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQs
IG92ZXJmbG93TG9uZ2hhbmQsIChvdmVyZmxvd1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgo
b3ZlcmZsb3dQcm9wZXJ0aWVzKSkpOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIG92
ZXJmbG93UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eU92ZXJmbG93WCwgQ1NTUHJvcGVydHlP
dmVyZmxvd1kgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZFByb3BlcnRpZXMs
IG92ZXJmbG93TG9uZ2hhbmQsIChvdmVyZmxvd1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgo
b3ZlcmZsb3dQcm9wZXJ0aWVzKSkpOwogICAgIHJldHVybiBvdmVyZmxvd0xvbmdoYW5kOwogfQog
Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBwYWRkaW5nTG9uZ2hhbmQoKQorY29uc3QgU2hv
cnRoYW5kUHJvcGVydGllcyYgcGFkZGluZ0xvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3Qg
aW50IHBhZGRpbmdQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5
SUQgcGFkZGluZ1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nVG9w
LAogICAgICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwKICAgICAgICAgQ1NTUHJvcGVydHlQ
YWRkaW5nQm90dG9tLAogICAgICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0CiAgICAgfTsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHBhZGRpbmdMb25naGFu
ZCwgKHBhZGRpbmdQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHBhZGRpbmdQcm9wZXJ0aWVz
KSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJvcGVydGllcywgcGFkZGlu
Z0xvbmdoYW5kLCAocGFkZGluZ1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgocGFkZGluZ1By
b3BlcnRpZXMpKSk7CiAgICAgcmV0dXJuIHBhZGRpbmdMb25naGFuZDsKIH0KIAotY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYgd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQoKQorY29uc3QgU2hvcnRo
YW5kUHJvcGVydGllcyYgd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBj
b25zdCBpbnQgYW5pbWF0aW9uUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQ
cm9wZXJ0eUlEIGFuaW1hdGlvblByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRBbmltYXRpb25OYW1lLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1
cmF0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9u
LApAQCAtMjU4LDg2ICsyNTcsODYgQEAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0
QW5pbWF0aW9uTG9uZ2hhbmQoKQogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRp
cmVjdGlvbiwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZQogICAg
IH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRB
bmltYXRpb25Mb25naGFuZCwgKGFuaW1hdGlvblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgo
YW5pbWF0aW9uUHJvcGVydGllcykpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFu
ZFByb3BlcnRpZXMsIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kLCAoYW5pbWF0aW9uUHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChhbmltYXRpb25Qcm9wZXJ0aWVzKSkpOwogICAgIHJldHVybiB3
ZWJraXRBbmltYXRpb25Mb25naGFuZDsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
d2Via2l0Qm9yZGVyQWZ0ZXJMb25naGFuZCgpCitjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiB3
ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRl
ckFmdGVyUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGgs
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJBZnRlckNvbG9yICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25n
aGFuZCwgd2Via2l0Qm9yZGVyQWZ0ZXJMb25naGFuZCwgKGJvcmRlckFmdGVyUHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSChib3JkZXJBZnRlclByb3BlcnRpZXMpKSk7CisgICAgc3RhdGljIGNv
bnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyQWZ0ZXJQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxl
LCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IgIH07CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTaG9ydGhhbmRQcm9wZXJ0aWVzLCB3ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5kLCAo
Ym9yZGVyQWZ0ZXJQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckFmdGVyUHJvcGVy
dGllcykpKTsKICAgICByZXR1cm4gd2Via2l0Qm9yZGVyQWZ0ZXJMb25naGFuZDsKIH0KIAotY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKQorY29u
c3QgU2hvcnRoYW5kUHJvcGVydGllcyYgd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKQogewot
ICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyQmVmb3JlUHJvcGVydGllc1tdID0geyBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9y
ZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yICB9OwotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Qm9yZGVyQmVmb3JlTG9u
Z2hhbmQsIChib3JkZXJCZWZvcmVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckJl
Zm9yZVByb3BlcnRpZXMpKSk7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVy
QmVmb3JlUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRo
LCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckJlZm9yZUNvbG9yICB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJv
cGVydGllcywgd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQsIChib3JkZXJCZWZvcmVQcm9wZXJ0
aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckJlZm9yZVByb3BlcnRpZXMpKSk7CiAgICAgcmV0
dXJuIHdlYmtpdEJvcmRlckJlZm9yZUxvbmdoYW5kOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxv
bmdoYW5kJiB3ZWJraXRCb3JkZXJFbmRMb25naGFuZCgpCitjb25zdCBTaG9ydGhhbmRQcm9wZXJ0
aWVzJiB3ZWJraXRCb3JkZXJFbmRMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBi
b3JkZXJFbmRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGgs
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
RW5kQ29sb3IgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQs
IHdlYmtpdEJvcmRlckVuZExvbmdoYW5kLCAoYm9yZGVyRW5kUHJvcGVydGllcywgV1RGX0FSUkFZ
X0xFTkdUSChib3JkZXJFbmRQcm9wZXJ0aWVzKSkpOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9w
ZXJ0eUlEIGJvcmRlckVuZFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZSwgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJFbmRDb2xvciB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJv
cGVydGllcywgd2Via2l0Qm9yZGVyRW5kTG9uZ2hhbmQsIChib3JkZXJFbmRQcm9wZXJ0aWVzLCBX
VEZfQVJSQVlfTEVOR1RIKGJvcmRlckVuZFByb3BlcnRpZXMpKSk7CiAgICAgcmV0dXJuIHdlYmtp
dEJvcmRlckVuZExvbmdoYW5kOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJr
aXRCb3JkZXJTdGFydExvbmdoYW5kKCkKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIHdlYmtp
dEJvcmRlclN0YXJ0TG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyU3Rh
cnRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRXaWR0aCwgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0
YXJ0Q29sb3IgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQs
IHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQsIChib3JkZXJTdGFydFByb3BlcnRpZXMsIFdURl9B
UlJBWV9MRU5HVEgoYm9yZGVyU3RhcnRQcm9wZXJ0aWVzKSkpOworICAgIHN0YXRpYyBjb25zdCBD
U1NQcm9wZXJ0eUlEIGJvcmRlclN0YXJ0UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlclN0YXJ0V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSwgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTaG9ydGhhbmRQcm9wZXJ0aWVzLCB3ZWJraXRCb3JkZXJTdGFydExvbmdoYW5kLCAoYm9yZGVy
U3RhcnRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclN0YXJ0UHJvcGVydGllcykp
KTsKICAgICByZXR1cm4gd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZDsKIH0KIAotY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYgd2Via2l0Q29sdW1uc0xvbmdoYW5kKCkKK2NvbnN0IFNob3J0aGFu
ZFByb3BlcnRpZXMmIHdlYmtpdENvbHVtbnNMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0
IGludCBjb2x1bW5zUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRo
LCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50IH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRDb2x1bW5zTG9uZ2hhbmQsIChjb2x1bW5zUHJv
cGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChjb2x1bW5zUHJvcGVydGllcykpKTsKKyAgICBzdGF0
aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBjb2x1bW5zUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtbldpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50IH07CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTaG9ydGhhbmRQcm9wZXJ0aWVzLCB3ZWJraXRDb2x1bW5zTG9u
Z2hhbmQsIChjb2x1bW5zUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChjb2x1bW5zUHJvcGVy
dGllcykpKTsKICAgICByZXR1cm4gd2Via2l0Q29sdW1uc0xvbmdoYW5kOwogfQogCi1jb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQoKQorY29uc3QgU2hv
cnRoYW5kUHJvcGVydGllcyYgd2Via2l0Q29sdW1uUnVsZUxvbmdoYW5kKCkKIHsKLSAgICBzdGF0
aWMgY29uc3QgaW50IGNvbHVtblJ1bGVQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0
IENTU1Byb3BlcnR5SUQgY29sdW1uUnVsZVByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uUnVsZVN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciwK
ICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Vi
a2l0Q29sdW1uUnVsZUxvbmdoYW5kLCAoY29sdW1uUnVsZVByb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgoY29sdW1uUnVsZVByb3BlcnRpZXMpKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
aG9ydGhhbmRQcm9wZXJ0aWVzLCB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQsIChjb2x1bW5SdWxl
UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChjb2x1bW5SdWxlUHJvcGVydGllcykpKTsKICAg
ICByZXR1cm4gd2Via2l0Q29sdW1uUnVsZUxvbmdoYW5kOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiB3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kKCkKK2NvbnN0IFNob3J0aGFuZFByb3Bl
cnRpZXMmIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQg
ZmxleEZsb3dQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbiwg
Q1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcCB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NT
UHJvcGVydHlMb25naGFuZCwgd2Via2l0RmxleEZsb3dMb25naGFuZCwgKGZsZXhGbG93UHJvcGVy
dGllcywgV1RGX0FSUkFZX0xFTkdUSChmbGV4Rmxvd1Byb3BlcnRpZXMpKSk7CisgICAgc3RhdGlj
IGNvbnN0IENTU1Byb3BlcnR5SUQgZmxleEZsb3dQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5
V2Via2l0RmxleERpcmVjdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcCB9OworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJvcGVydGllcywgd2Via2l0RmxleEZsb3dMb25n
aGFuZCwgKGZsZXhGbG93UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChmbGV4Rmxvd1Byb3Bl
cnRpZXMpKSk7CiAgICAgcmV0dXJuIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQ7CiB9CiAKLWNvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKQorY29u
c3QgU2hvcnRoYW5kUHJvcGVydGllcyYgd2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgpCiB7
Ci0gICAgc3RhdGljIGNvbnN0IGludCBtYXJnaW5Db2xsYXBzZVByb3BlcnRpZXNbXSA9IHsgQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5BZnRlckNvbGxhcHNlIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxv
bmdoYW5kLCB3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kLCAobWFyZ2luQ29sbGFwc2VQcm9w
ZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hcmdpbkNvbGxhcHNlUHJvcGVydGllcykpKTsKKyAg
ICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBtYXJnaW5Db2xsYXBzZVByb3BlcnRpZXNbXSA9
IHsgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJr
aXRNYXJnaW5BZnRlckNvbGxhcHNlIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTaG9ydGhh
bmRQcm9wZXJ0aWVzLCB3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kLCAobWFyZ2luQ29sbGFw
c2VQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hcmdpbkNvbGxhcHNlUHJvcGVydGllcykp
KTsKICAgICByZXR1cm4gd2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZDsKIH0KIAotY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFycXVlZUxvbmdoYW5kKCkKK2NvbnN0IFNob3J0
aGFuZFByb3BlcnRpZXMmIHdlYmtpdE1hcnF1ZWVMb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNv
bnN0IGludCBtYXJxdWVlUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9w
ZXJ0eUlEIG1hcnF1ZWVQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZURpcmVjdGlvbiwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVt
ZW50LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uLAogICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlU3BlZWQKICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVy
dHlMb25naGFuZCwgd2Via2l0TWFycXVlZUxvbmdoYW5kLCAobWFycXVlZVByb3BlcnRpZXMsIFdU
Rl9BUlJBWV9MRU5HVEgobWFycXVlZVByb3BlcnRpZXMpKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTaG9ydGhhbmRQcm9wZXJ0aWVzLCB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQsIChtYXJxdWVl
UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJxdWVlUHJvcGVydGllcykpKTsKICAgICBy
ZXR1cm4gd2Via2l0TWFycXVlZUxvbmdoYW5kOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiB3ZWJraXRNYXNrTG9uZ2hhbmQoKQorY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgd2Vi
a2l0TWFza0xvbmdoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IG1hc2tQcm9wZXJ0aWVz
W10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgbWFza1Byb3BlcnRpZXNbXSA9
IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsCiAgICAgICAgIENTU1Byb3Bl
cnR5V2Via2l0TWFza1JlcGVhdFgsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVh
dFksCkBAIC0zNDcsNzcgKzM0Niw3NyBAQCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJr
aXRNYXNrTG9uZ2hhbmQoKQogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwLAogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4KICAgICB9OwotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0TWFza0xvbmdoYW5kLCAobWFza1By
b3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFza1Byb3BlcnRpZXMpKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTaG9ydGhhbmRQcm9wZXJ0aWVzLCB3ZWJraXRNYXNrTG9uZ2hhbmQsICht
YXNrUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXNrUHJvcGVydGllcykpKTsKICAgICBy
ZXR1cm4gd2Via2l0TWFza0xvbmdoYW5kOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiB3ZWJraXRNYXNrUG9zaXRpb25Mb25naGFuZCgpCitjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVz
JiB3ZWJraXRNYXNrUG9zaXRpb25Mb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBt
YXNrUG9zaXRpb25Qcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
WCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZIH07Ci0gICAgREVGSU5FX1NUQVRJQ19M
T0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRNYXNrUG9zaXRpb25Mb25naGFuZCwgKG1h
c2tQb3NpdGlvblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFza1Bvc2l0aW9uUHJvcGVy
dGllcykpKTsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBtYXNrUG9zaXRpb25Qcm9w
ZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUG9zaXRpb25ZIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTaG9ydGhhbmRQ
cm9wZXJ0aWVzLCB3ZWJraXRNYXNrUG9zaXRpb25Mb25naGFuZCwgKG1hc2tQb3NpdGlvblByb3Bl
cnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFza1Bvc2l0aW9uUHJvcGVydGllcykpKTsKICAgICBy
ZXR1cm4gd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQ7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5
TG9uZ2hhbmQmIHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZCgpCitjb25zdCBTaG9ydGhhbmRQcm9w
ZXJ0aWVzJiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBp
bnQgbWFza1JlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0
WCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSB9OwotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0TWFza1JlcGVhdExvbmdoYW5kLCAobWFza1Jl
cGVhdFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFza1JlcGVhdFByb3BlcnRpZXMpKSk7
CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgbWFza1JlcGVhdFByb3BlcnRpZXNbXSA9
IHsgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVw
ZWF0WSB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJvcGVydGllcywgd2Vi
a2l0TWFza1JlcGVhdExvbmdoYW5kLCAobWFza1JlcGVhdFByb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgobWFza1JlcGVhdFByb3BlcnRpZXMpKSk7CiAgICAgcmV0dXJuIHdlYmtpdE1hc2tSZXBl
YXRMb25naGFuZDsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VGV4dEVt
cGhhc2lzTG9uZ2hhbmQoKQorY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgd2Via2l0VGV4dEVt
cGhhc2lzTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgdGV4dEVtcGhhc2lzUHJv
cGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHRleHRFbXBoYXNp
c1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNT
dHlsZSwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcgogICAgIH07
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUZXh0
RW1waGFzaXNMb25naGFuZCwgKHRleHRFbXBoYXNpc1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5H
VEgodGV4dEVtcGhhc2lzUHJvcGVydGllcykpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNo
b3J0aGFuZFByb3BlcnRpZXMsIHdlYmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kLCAodGV4dEVtcGhh
c2lzUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0ZXh0RW1waGFzaXNQcm9wZXJ0aWVzKSkp
OwogICAgIHJldHVybiB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZDsKIH0KIAotY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYgd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKCkKK2NvbnN0IFNob3J0
aGFuZFByb3BlcnRpZXMmIHdlYmtpdFRleHRTdHJva2VMb25naGFuZCgpCiB7Ci0gICAgc3RhdGlj
IGNvbnN0IGludCB0ZXh0U3Ryb2tlUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTdHJva2VXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IgfTsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdFRleHRTdHJva2VM
b25naGFuZCwgKHRleHRTdHJva2VQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRleHRTdHJv
a2VQcm9wZXJ0aWVzKSkpOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHRleHRTdHJv
a2VQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U2hvcnRoYW5kUHJvcGVydGllcywgd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kLCAodGV4dFN0cm9r
ZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodGV4dFN0cm9rZVByb3BlcnRpZXMpKSk7CiAg
ICAgcmV0dXJuIHdlYmtpdFRleHRTdHJva2VMb25naGFuZDsKIH0KIAotY29uc3QgQ1NTUHJvcGVy
dHlMb25naGFuZCYgd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkKK2NvbnN0IFNob3J0aGFuZFBy
b3BlcnRpZXMmIHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0
IGludCB0cmFuc2l0aW9uUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9w
ZXJ0eUlEIHRyYW5zaXRpb25Qcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNpdGlvblByb3BlcnR5LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRp
b25EdXJhdGlvbiwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVu
Y3Rpb24sCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5CiAgICAgfTsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdFRyYW5z
aXRpb25Mb25naGFuZCwgKHRyYW5zaXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRy
YW5zaXRpb25Qcm9wZXJ0aWVzKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5k
UHJvcGVydGllcywgd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kLCAodHJhbnNpdGlvblByb3BlcnRp
ZXMsIFdURl9BUlJBWV9MRU5HVEgodHJhbnNpdGlvblByb3BlcnRpZXMpKSk7CiAgICAgcmV0dXJu
IHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZDsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFu
ZCYgd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQoKQorY29uc3QgU2hvcnRoYW5kUHJvcGVy
dGllcyYgd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQoKQogewotICAgIHN0YXRpYyBjb25z
dCBpbnQgdHJhbnNmb3JtT3JpZ2luUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBD
U1NQcm9wZXJ0eUlEIHRyYW5zZm9ybU9yaWdpblByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybU9yaWdpblksCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3Jp
Z2luWgogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZCwgKHRyYW5zZm9ybU9yaWdpblByb3BlcnRp
ZXMsIFdURl9BUlJBWV9MRU5HVEgodHJhbnNmb3JtT3JpZ2luUHJvcGVydGllcykpKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZFByb3BlcnRpZXMsIHdlYmtpdFRyYW5zZm9ybU9y
aWdpbkxvbmdoYW5kLCAodHJhbnNmb3JtT3JpZ2luUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdU
SCh0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzKSkpOwogICAgIHJldHVybiB3ZWJraXRUcmFuc2Zv
cm1PcmlnaW5Mb25naGFuZDsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0
V3JhcExvbmdoYW5kKCkKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIHdlYmtpdFdyYXBMb25n
aGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCB3ZWJraXRXcmFwUHJvcGVydGllc1tdID0g
eworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHdlYmtpdFdyYXBQcm9wZXJ0aWVzW10g
PSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3csCiAgICAgICAgIENTU1Byb3Bl
cnR5V2Via2l0V3JhcE1hcmdpbiwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGlu
ZwogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3
ZWJraXRXcmFwTG9uZ2hhbmQsICh3ZWJraXRXcmFwUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdU
SCh3ZWJraXRXcmFwUHJvcGVydGllcykpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0
aGFuZFByb3BlcnRpZXMsIHdlYmtpdFdyYXBMb25naGFuZCwgKHdlYmtpdFdyYXBQcm9wZXJ0aWVz
LCBXVEZfQVJSQVlfTEVOR1RIKHdlYmtpdFdyYXBQcm9wZXJ0aWVzKSkpOwogICAgIHJldHVybiB3
ZWJraXRXcmFwTG9uZ2hhbmQ7CiB9CiAKIC8vIFJldHVybnMgYW4gZW1wdHkgbGlzdCBpZiB0aGUg
cHJvcGVydHkgaXMgbm90IGEgc2hvcnRoYW5kCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBs
b25naGFuZEZvclByb3BlcnR5KGludCBwcm9wZXJ0eUlEKQorY29uc3QgU2hvcnRoYW5kUHJvcGVy
dGllcyYgbG9uZ2hhbmRzRm9yUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCiB7CiAgICAgc3dpdGNo
IChwcm9wZXJ0eUlEKSB7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6CkBAIC00OTks
OCArNDk4LDggQEAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmRGb3JQcm9wZXJ0
eShpbnQgcHJvcGVydHlJRCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcDoKICAgICAg
ICAgcmV0dXJuIHdlYmtpdFdyYXBMb25naGFuZCgpOwogICAgIGRlZmF1bHQ6IHsKLSAgICAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBkZWZhdWx0TG9uZ2hhbmQs
ICgpKTsKLSAgICAgICAgcmV0dXJuIGRlZmF1bHRMb25naGFuZDsKKyAgICAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTaG9ydGhhbmRQcm9wZXJ0aWVzLCBlbXB0eVNob3J0aGFuZCwgKCkpOworICAg
ICAgICByZXR1cm4gZW1wdHlTaG9ydGhhbmQ7CiAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oCmluZGV4IDkxNzBmZjYyNTg3ZDFlNTE3YzdmZTYz
NDgyMWI0NmIxMTEzYThiMDguLjg5NzQ5YWUyYTZhMzY3YWZjYzM1MGI0NjM1YTZmMzlmMzgxYzc0
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaApAQCAtMjEsODMg
KzIxLDg1IEBACiAjaWZuZGVmIENTU1Byb3BlcnR5TG9uZ2hhbmRfaAogI2RlZmluZSBDU1NQcm9w
ZXJ0eUxvbmdoYW5kX2gKIAorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBDU1NQcm9wZXJ0eUxvbmdoYW5kIHsKK2NsYXNzIFNob3J0
aGFuZFByb3BlcnRpZXMgewogcHVibGljOgotICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQoKQorICAg
IFNob3J0aGFuZFByb3BlcnRpZXMoKQogICAgICAgICA6IG1fcHJvcGVydGllcygwKQogICAgICAg
ICAsIG1fbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24oMCkKICAgICAgICAgLCBtX2xlbmd0aCgw
KQogICAgIHsKICAgICB9CiAKLSAgICBDU1NQcm9wZXJ0eUxvbmdoYW5kKGNvbnN0IGludCogcHJv
cGVydGllcywgdW5zaWduZWQgbnVtUHJvcGVydGllcykKKyAgICBTaG9ydGhhbmRQcm9wZXJ0aWVz
KGNvbnN0IENTU1Byb3BlcnR5SUQqIHByb3BlcnRpZXMsIHVuc2lnbmVkIG51bVByb3BlcnRpZXMp
CiAgICAgICAgIDogbV9wcm9wZXJ0aWVzKHByb3BlcnRpZXMpCiAgICAgICAgICwgbV9sb25naGFu
ZHNGb3JJbml0aWFsaXphdGlvbigwKQogICAgICAgICAsIG1fbGVuZ3RoKG51bVByb3BlcnRpZXMp
CiAgICAgewogICAgIH0KIAotICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQoY29uc3QgaW50KiBwcm9w
ZXJ0aWVzLCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kKiogbG9uZ2hhbmRzRm9ySW5pdGlhbGl6
YXRpb24sIHVuc2lnbmVkIG51bVByb3BlcnRpZXMpCisgICAgU2hvcnRoYW5kUHJvcGVydGllcyhj
b25zdCBDU1NQcm9wZXJ0eUlEKiBwcm9wZXJ0aWVzLCBjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVz
KiogbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24sIHVuc2lnbmVkIG51bVByb3BlcnRpZXMpCiAg
ICAgICAgIDogbV9wcm9wZXJ0aWVzKHByb3BlcnRpZXMpCiAgICAgICAgICwgbV9sb25naGFuZHNG
b3JJbml0aWFsaXphdGlvbihsb25naGFuZHNGb3JJbml0aWFsaXphdGlvbikKICAgICAgICAgLCBt
X2xlbmd0aChudW1Qcm9wZXJ0aWVzKQogICAgIHsKICAgICB9CiAKLSAgICBjb25zdCBpbnQqIHBy
b3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnRpZXM7IH0KLSAgICBjb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kKiogbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2xvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uOyB9CisgICAgY29uc3QgQ1NTUHJvcGVy
dHlJRCogcHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllczsgfQorICAgIGNv
bnN0IFNob3J0aGFuZFByb3BlcnRpZXMqKiBsb25naGFuZHNGb3JJbml0aWFsaXphdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb247IH0KICAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogCiBwcml2YXRlOgotICAgIGNv
bnN0IGludCogbV9wcm9wZXJ0aWVzOwotICAgIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQqKiBt
X2xvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uOworICAgIGNvbnN0IENTU1Byb3BlcnR5SUQqIG1f
cHJvcGVydGllczsKKyAgICBjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzKiogbV9sb25naGFuZHNG
b3JJbml0aWFsaXphdGlvbjsKICAgICB1bnNpZ25lZCBtX2xlbmd0aDsKIH07CiAKLWNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVy
dHlMb25naGFuZCYgYmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIGJhY2tncm91bmRSZXBlYXRMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVy
dHlMb25naGFuZCYgYm9yZGVyTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IGJvcmRlckFicmlkZ2VkTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJv
cmRlckJvdHRvbUxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJD
b2xvckxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJJbWFnZUxv
bmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJMZWZ0TG9uZ2hhbmQo
KTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclJhZGl1c0xvbmdoYW5kKCk7Ci1j
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJSaWdodExvbmdoYW5kKCk7Ci1jb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJTcGFjaW5nTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1By
b3BlcnR5TG9uZ2hhbmQmIGJvcmRlclN0eWxlTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5
TG9uZ2hhbmQmIGJvcmRlclRvcExvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiBib3JkZXJXaWR0aExvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsaXN0
U3R5bGVMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgZm9udExvbmdoYW5k
KCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBtYXJnaW5Mb25naGFuZCgpOwotY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgb3V0bGluZUxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiBvdmVyZmxvd0xvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiBwYWRkaW5nTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEFu
aW1hdGlvbkxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRCb3Jk
ZXJBZnRlckxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRCb3Jk
ZXJCZWZvcmVMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Qm9y
ZGVyRW5kTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEJvcmRl
clN0YXJ0TG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENvbHVt
bnNMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Q29sdW1uUnVs
ZUxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRGbGV4Rmxvd0xv
bmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXJnaW5Db2xsYXBz
ZUxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXJxdWVlTG9u
Z2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tMb25naGFuZCgp
OwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQo
KTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZCgp
OwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmQo
KTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRleHRTdHJva2VMb25naGFuZCgp
OwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCk7
Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFu
ZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0V3JhcExvbmdoYW5kKCk7Citj
b25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBiYWNrZ3JvdW5kTG9uZ2hhbmQoKTsKK2NvbnN0IFNo
b3J0aGFuZFByb3BlcnRpZXMmIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kKCk7Citjb25zdCBT
aG9ydGhhbmRQcm9wZXJ0aWVzJiBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQoKTsKK2NvbnN0IFNo
b3J0aGFuZFByb3BlcnRpZXMmIGJvcmRlckxvbmdoYW5kKCk7Citjb25zdCBTaG9ydGhhbmRQcm9w
ZXJ0aWVzJiBib3JkZXJBYnJpZGdlZExvbmdoYW5kKCk7Citjb25zdCBTaG9ydGhhbmRQcm9wZXJ0
aWVzJiBib3JkZXJCb3R0b21Mb25naGFuZCgpOworY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYg
Ym9yZGVyQ29sb3JMb25naGFuZCgpOworY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgYm9yZGVy
SW1hZ2VMb25naGFuZCgpOworY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgYm9yZGVyTGVmdExv
bmdoYW5kKCk7Citjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBib3JkZXJSYWRpdXNMb25naGFu
ZCgpOworY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgYm9yZGVyUmlnaHRMb25naGFuZCgpOwor
Y29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgYm9yZGVyU3BhY2luZ0xvbmdoYW5kKCk7Citjb25z
dCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBib3JkZXJTdHlsZUxvbmdoYW5kKCk7Citjb25zdCBTaG9y
dGhhbmRQcm9wZXJ0aWVzJiBib3JkZXJUb3BMb25naGFuZCgpOworY29uc3QgU2hvcnRoYW5kUHJv
cGVydGllcyYgYm9yZGVyV2lkdGhMb25naGFuZCgpOworY29uc3QgU2hvcnRoYW5kUHJvcGVydGll
cyYgbGlzdFN0eWxlTG9uZ2hhbmQoKTsKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIGZvbnRM
b25naGFuZCgpOworY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgbWFyZ2luTG9uZ2hhbmQoKTsK
K2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIG91dGxpbmVMb25naGFuZCgpOworY29uc3QgU2hv
cnRoYW5kUHJvcGVydGllcyYgb3ZlcmZsb3dMb25naGFuZCgpOworY29uc3QgU2hvcnRoYW5kUHJv
cGVydGllcyYgcGFkZGluZ0xvbmdoYW5kKCk7Citjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiB3
ZWJraXRBbmltYXRpb25Mb25naGFuZCgpOworY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgd2Vi
a2l0Qm9yZGVyQWZ0ZXJMb25naGFuZCgpOworY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgd2Vi
a2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKTsKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIHdl
YmtpdEJvcmRlckVuZExvbmdoYW5kKCk7Citjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiB3ZWJr
aXRCb3JkZXJTdGFydExvbmdoYW5kKCk7Citjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiB3ZWJr
aXRDb2x1bW5zTG9uZ2hhbmQoKTsKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIHdlYmtpdENv
bHVtblJ1bGVMb25naGFuZCgpOworY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgd2Via2l0Rmxl
eEZsb3dMb25naGFuZCgpOworY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgd2Via2l0TWFyZ2lu
Q29sbGFwc2VMb25naGFuZCgpOworY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgd2Via2l0TWFy
cXVlZUxvbmdoYW5kKCk7Citjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiB3ZWJraXRNYXNrTG9u
Z2hhbmQoKTsKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIHdlYmtpdE1hc2tQb3NpdGlvbkxv
bmdoYW5kKCk7Citjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiB3ZWJraXRNYXNrUmVwZWF0TG9u
Z2hhbmQoKTsKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIHdlYmtpdFRleHRFbXBoYXNpc0xv
bmdoYW5kKCk7Citjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiB3ZWJraXRUZXh0U3Ryb2tlTG9u
Z2hhbmQoKTsKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIHdlYmtpdFRyYW5zaXRpb25Mb25n
aGFuZCgpOworY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgd2Via2l0VHJhbnNmb3JtT3JpZ2lu
TG9uZ2hhbmQoKTsKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIHdlYmtpdFdyYXBMb25naGFu
ZCgpOwogCiAvLyBSZXR1cm5zIGFuIGVtcHR5IGxpc3QgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCBh
IHNob3J0aGFuZAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmRGb3JQcm9wZXJ0
eShpbnQpOworY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgbG9uZ2hhbmRzRm9yUHJvcGVydHko
aW50KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0eVNldC5jcHAKaW5kZXggZjUwMjZlMDA4M2Y4MzQ2NzQ0ZjZjY2JjYjM5MTFjODMxYzhk
MGM0Yi4uNWJhOTZlNzg0MGJjYjg1ZTgwMjBjYjM4YWFkOTkxNGVjODkzNWY4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAtMjQsNyArMjQsNiBAQAogCiAjaW5j
bHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlMb25naGFuZC5oIgotI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgi
CiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCkBA
IC0xMTEsNyArMTEwLDcgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3BlcnR5VmFs
dWUoaW50IHByb3BlcnR5SUQpIGNvbnN0CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6
CiAgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoYmFja2dyb3VuZExvbmdo
YW5kKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6IHsKLSAgICAgICAgY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCBwcm9wZXJ0aWVzWzNdID0geyBib3JkZXJXaWR0aExvbmdoYW5kKCks
IGJvcmRlclN0eWxlTG9uZ2hhbmQoKSwgYm9yZGVyQ29sb3JMb25naGFuZCgpIH07CisgICAgICAg
IGNvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMgcHJvcGVydGllc1szXSA9IHsgYm9yZGVyV2lkdGhM
b25naGFuZCgpLCBib3JkZXJTdHlsZUxvbmdoYW5kKCksIGJvcmRlckNvbG9yTG9uZ2hhbmQoKSB9
OwogICAgICAgICBTdHJpbmcgcmVzOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdU
Rl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyk7ICsraSkgewogICAgICAgICAgICAgU3RyaW5nIHZh
bHVlID0gZ2V0Q29tbW9uVmFsdWUocHJvcGVydGllc1tpXSk7CkBAIC0xNzYsMTAgKzE3NSwxMCBA
QCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlWYWx1ZShpbnQgcHJvcGVydHlJ
RCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBTdHlsZVByb3BlcnR5
U2V0Ojpib3JkZXJTcGFjaW5nVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hh
bmQpIGNvbnN0CitTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Ym9yZGVyU3BhY2luZ1ZhbHVlKGNv
bnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIHNob3J0aGFuZCkgY29uc3QKIHsKLSAgICBSZWZQdHI8
Q1NTVmFsdWU+IGhvcml6b250YWxWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQu
cHJvcGVydGllcygpWzBdKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHZlcnRpY2FsVmFsdWUgPSBn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVsxXSk7CisgICAgUmVmUHRy
PENTU1ZhbHVlPiBob3Jpem9udGFsVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHNob3J0aGFu
ZC5wcm9wZXJ0aWVzKClbMF0pOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmVydGljYWxWYWx1ZSA9
IGdldFByb3BlcnR5Q1NTVmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVsxXSk7CiAKICAgICBp
ZiAoIWhvcml6b250YWxWYWx1ZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMjQ4LDEz
ICsyNDcsMTMgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmZvbnRWYWx1ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCi1TdHJpbmcgU3R5bGVQcm9wZXJ0eVNl
dDo6Z2V0NFZhbHVlcyhjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZCkgY29uc3QK
K1N0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXQ0VmFsdWVzKGNvbnN0IFNob3J0aGFuZFByb3Bl
cnRpZXMmIHNob3J0aGFuZCkgY29uc3QKIHsKICAgICAvLyBBc3N1bWUgdGhlIHByb3BlcnRpZXMg
YXJlIGluIHRoZSB1c3VhbCBvcmRlciB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQuCi0gICAgUmVm
UHRyPENTU1ZhbHVlPiB0b3BWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJv
cGVydGllcygpWzBdKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHJpZ2h0VmFsdWUgPSBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVsxXSk7Ci0gICAgUmVmUHRyPENTU1Zh
bHVlPiBib3R0b21WYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVydGll
cygpWzJdKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGxlZnRWYWx1ZSA9IGdldFByb3BlcnR5Q1NT
VmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpWzNdKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHRv
cFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpWzBdKTsK
KyAgICBSZWZQdHI8Q1NTVmFsdWU+IHJpZ2h0VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHNo
b3J0aGFuZC5wcm9wZXJ0aWVzKClbMV0pOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gYm90dG9tVmFs
dWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbMl0pOworICAg
IFJlZlB0cjxDU1NWYWx1ZT4gbGVmdFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShzaG9ydGhh
bmQucHJvcGVydGllcygpWzNdKTsKIAogICAgIC8vIEFsbCA0IHByb3BlcnRpZXMgbXVzdCBiZSBz
cGVjaWZpZWQuCiAgICAgaWYgKCF0b3BWYWx1ZSB8fCAhcmlnaHRWYWx1ZSB8fCAhYm90dG9tVmFs
dWUgfHwgIWxlZnRWYWx1ZSkKQEAgLTI3NSwxNyArMjc0LDE3IEBAIFN0cmluZyBTdHlsZVByb3Bl
cnR5U2V0OjpnZXQ0VmFsdWVzKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKSBj
b25zdAogICAgIHJldHVybiByZXM7CiB9CiAKLVN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRM
YXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQp
IGNvbnN0CitTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVl
KGNvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIHNob3J0aGFuZCkgY29uc3QKIHsKICAgICBTdHJp
bmcgcmVzOwogCi0gICAgY29uc3QgdW5zaWduZWQgc2l6ZSA9IGxvbmdoYW5kLmxlbmd0aCgpOwor
ICAgIGNvbnN0IHVuc2lnbmVkIHNpemUgPSBzaG9ydGhhbmQubGVuZ3RoKCk7CiAgICAgLy8gQmVn
aW4gYnkgY29sbGVjdGluZyB0aGUgcHJvcGVydGllcyBpbnRvIGFuIGFycmF5LgogICAgIFZlY3Rv
cjwgUmVmUHRyPENTU1ZhbHVlPiA+IHZhbHVlcyhzaXplKTsKICAgICBzaXplX3QgbnVtTGF5ZXJz
ID0gMDsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAg
ICAgdmFsdWVzW2ldID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClb
aV0pOworICAgICAgICB2YWx1ZXNbaV0gPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbaV0pOwogICAgICAgICBpZiAodmFsdWVzW2ldKSB7CiAgICAgICAgICAgICBp
ZiAodmFsdWVzW2ldLT5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAgICAgICAgICAgQ1NTVmFsdWVM
aXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZXNbaV0uZ2V0
KCkpOwpAQCAtMzExLDcgKzMxMCw3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXll
cmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uCiAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVzW2pdOwogCiAgICAgICAgICAgICAgICAgICAgIC8v
IENvbG9yIG9ubHkgYmVsb25ncyBpbiB0aGUgbGFzdCBsYXllci4KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGxvbmdoYW5kLnByb3BlcnRpZXMoKVtqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcikgeworICAgICAgICAgICAgICAgICAgICBpZiAoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtq
XSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikgewogICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGkgIT0gbnVtTGF5ZXJzIC0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YWx1ZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSAhPSAwKSAvLyBPdGhl
ciBzaW5nbGV0b25zIG9ubHkgYmVsb25nIGluIHRoZSBmaXJzdCBsYXllci4KQEAgLTMyMiwxMCAr
MzIxLDEwIEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFs
dWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uCiAgICAgICAgICAgICAvLyBXZSBuZWVk
IHRvIHJlcG9ydCBiYWNrZ3JvdW5kLXJlcGVhdCBhcyBpdCB3YXMgd3JpdHRlbiBpbiB0aGUgQ1NT
LiBJZiB0aGUgcHJvcGVydHkgaXMgaW1wbGljaXQsCiAgICAgICAgICAgICAvLyB0aGVuIGl0IHdh
cyB3cml0dGVuIHdpdGggb25seSBvbmUgdmFsdWUuIEhlcmUgd2UgZmlndXJlIG91dCB3aGljaCB2
YWx1ZSB0aGF0IHdhcyBzbyB3ZSBjYW4KICAgICAgICAgICAgIC8vIHJlcG9ydCBiYWNrIGNvcnJl
Y3RseS4KLSAgICAgICAgICAgIGlmIChsb25naGFuZC5wcm9wZXJ0aWVzKClbal0gPT0gQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUmVwZWF0WCAmJiBpc1Byb3BlcnR5SW1wbGljaXQobG9uZ2hhbmQucHJv
cGVydGllcygpW2pdKSkgeworICAgICAgICAgICAgaWYgKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClb
al0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCAmJiBpc1Byb3BlcnR5SW1wbGljaXQo
c2hvcnRoYW5kLnByb3BlcnRpZXMoKVtqXSkpIHsKIAogICAgICAgICAgICAgICAgIC8vIEJVRyA0
OTA1NTogbWFrZSBzdXJlIHRoZSB2YWx1ZSB3YXMgbm90IHJlc2V0IGluIHRoZSBsYXllciBjaGVj
ayBqdXN0IGFib3ZlLgotICAgICAgICAgICAgICAgIGlmIChqIDwgc2l6ZSAtIDEgJiYgbG9uZ2hh
bmQucHJvcGVydGllcygpW2ogKyAxXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZICYm
IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgKGogPCBzaXplIC0gMSAmJiBzaG9ydGhhbmQu
cHJvcGVydGllcygpW2ogKyAxXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZICYmIHZh
bHVlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4geVZhbHVlOwogICAg
ICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IG5leHRWYWx1ZSA9IHZhbHVlc1tqICsg
MV07CiAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0VmFsdWUtPmlzVmFsdWVMaXN0KCkpCkBA
IC0zNzYsMTIgKzM3NSwxMiBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNo
b3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbgogICAgIHJldHVybiBy
ZXM7CiB9CiAKLVN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRTaG9ydGhhbmRWYWx1ZShjb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZCkgY29uc3QKK1N0cmluZyBTdHlsZVByb3Bl
cnR5U2V0OjpnZXRTaG9ydGhhbmRWYWx1ZShjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBzaG9y
dGhhbmQpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHJlczsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbG9uZ2hhbmQubGVuZ3RoKCk7ICsraSkgewotICAgICAgICBpZiAoIWlzUHJvcGVydHlJ
bXBsaWNpdChsb25naGFuZC5wcm9wZXJ0aWVzKClbaV0pKSB7Ci0gICAgICAgICAgICBSZWZQdHI8
Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVz
KClbaV0pOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7
ICsraSkgeworICAgICAgICBpZiAoIWlzUHJvcGVydHlJbXBsaWNpdChzaG9ydGhhbmQucHJvcGVy
dGllcygpW2ldKSkgeworICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFBy
b3BlcnR5Q1NTVmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSk7CiAgICAgICAgICAgICAv
LyBGSVhNRTogcHJvdmlkZSBkZWZhdWx0IHZhbHVlIGlmICF2YWx1ZSBvciB2YWx1ZSBpcyBpbml0
aWFsIHZhbHVlCiAgICAgICAgICAgICBpZiAodmFsdWUgJiYgIXZhbHVlLT5pc0luaXRpYWxWYWx1
ZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXMuaXNOdWxsKCkpCkBAIC0zOTQsMTEgKzM5
MywxMSBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0U2hvcnRoYW5kVmFsdWUoY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQpCiB9CiAKIC8vIG9ubHkgcmV0dXJucyBhIG5v
bi1udWxsIHZhbHVlIGlmIGFsbCBwcm9wZXJ0aWVzIGhhdmUgdGhlIHNhbWUsIG5vbi1udWxsIHZh
bHVlCi1TdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0Q29tbW9uVmFsdWUoY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgbG9uZ2hhbmQpIGNvbnN0CitTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6
Z2V0Q29tbW9uVmFsdWUoY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgc2hvcnRoYW5kKSBjb25z
dAogewogICAgIFN0cmluZyByZXM7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdo
YW5kLmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdl
dFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpW2ldKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgUmVm
UHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUoc2hvcnRoYW5kLnByb3Bl
cnRpZXMoKVtpXSk7CiAgICAgICAgIC8vIEZJWE1FOiBDU1NJbml0aWFsVmFsdWU6OmNzc1RleHQg
c2hvdWxkIGdlbmVyYXRlIHRoZSByaWdodCB2YWx1ZS4KICAgICAgICAgaWYgKCF2YWx1ZSB8fCB2
YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAg
LTQyMSwxMCArNDIwLDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IFN0eWxlUHJvcGVydHlTZXQ6
OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcnR5SUQpIGNvbnN0CiAKIGJvb2wgU3R5bGVQ
cm9wZXJ0eVNldDo6cmVtb3ZlU2hvcnRoYW5kUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCiB7Ci0g
ICAgQ1NTUHJvcGVydHlMb25naGFuZCBsb25naGFuZCA9IGxvbmdoYW5kRm9yUHJvcGVydHkocHJv
cGVydHlJRCk7Ci0gICAgaWYgKCFsb25naGFuZC5sZW5ndGgoKSkKKyAgICBTaG9ydGhhbmRQcm9w
ZXJ0aWVzIHNob3J0aGFuZCA9IGxvbmdoYW5kc0ZvclByb3BlcnR5KHByb3BlcnR5SUQpOworICAg
IGlmICghc2hvcnRoYW5kLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIHJlbW92ZVByb3BlcnRpZXNJblNldChsb25naGFuZC5wcm9wZXJ0aWVzKCksIGxvbmdoYW5k
Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVydGllc0luU2V0KHNob3J0aGFuZC5w
cm9wZXJ0aWVzKCksIHNob3J0aGFuZC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgU3R5bGVQcm9wZXJ0
eVNldDo6cmVtb3ZlUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIFN0cmluZyogcmV0dXJuVGV4dCkK
QEAgLTQ1OSwxMiArNDU4LDEyIEBAIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cHJvcGVydHlJc0lt
cG9ydGFudChpbnQgcHJvcGVydHlJRCkgY29uc3QKICAgICBpZiAocHJvcGVydHkpCiAgICAgICAg
IHJldHVybiBwcm9wZXJ0eS0+aXNJbXBvcnRhbnQoKTsKIAotICAgIENTU1Byb3BlcnR5TG9uZ2hh
bmQgbG9uZ2hhbmRzID0gbG9uZ2hhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKLSAgICBpZiAo
IWxvbmdoYW5kcy5sZW5ndGgoKSkKKyAgICBTaG9ydGhhbmRQcm9wZXJ0aWVzIHNob3J0aGFuZCA9
IGxvbmdoYW5kc0ZvclByb3BlcnR5KHByb3BlcnR5SUQpOworICAgIGlmICghc2hvcnRoYW5kLmxl
bmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbG9uZ2hhbmRzLmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKCFwcm9wZXJ0eUlz
SW1wb3J0YW50KGxvbmdoYW5kcy5wcm9wZXJ0aWVzKClbaV0pKQorICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAoIXByb3Bl
cnR5SXNJbXBvcnRhbnQoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtNDk4LDE3ICs0OTcsMTcg
QEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXAKIAogdm9pZCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQ
cm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcHJwVmFsdWUsIGJv
b2wgaW1wb3J0YW50KQogewotICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmQgPSBsb25n
aGFuZEZvclByb3BlcnR5KHByb3BlcnR5SUQpOwotICAgIGlmICghbG9uZ2hhbmQubGVuZ3RoKCkp
IHsKKyAgICBTaG9ydGhhbmRQcm9wZXJ0aWVzIHNob3J0aGFuZCA9IGxvbmdoYW5kc0ZvclByb3Bl
cnR5KHByb3BlcnR5SUQpOworICAgIGlmICghc2hvcnRoYW5kLmxlbmd0aCgpKSB7CiAgICAgICAg
IHNldFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5SUQsIHBycFZhbHVlLCBpbXBvcnRhbnQp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlbW92ZVByb3BlcnRpZXNJblNldChs
b25naGFuZC5wcm9wZXJ0aWVzKCksIGxvbmdoYW5kLmxlbmd0aCgpKTsKKyAgICByZW1vdmVQcm9w
ZXJ0aWVzSW5TZXQoc2hvcnRoYW5kLnByb3BlcnRpZXMoKSwgc2hvcnRoYW5kLmxlbmd0aCgpKTsK
IAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBwcnBWYWx1ZTsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbG9uZ2hhbmQubGVuZ3RoKCk7ICsraSkKLSAgICAgICAgbV9wcm9wZXJ0
aWVzLmFwcGVuZChDU1NQcm9wZXJ0eShsb25naGFuZC5wcm9wZXJ0aWVzKClbaV0sIHZhbHVlLCBp
bXBvcnRhbnQpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0
aCgpOyArK2kpCisgICAgICAgIG1fcHJvcGVydGllcy5hcHBlbmQoQ1NTUHJvcGVydHkoc2hvcnRo
YW5kLnByb3BlcnRpZXMoKVtpXSwgdmFsdWUsIGltcG9ydGFudCkpOwogfQogCiB2b2lkIFN0eWxl
UHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KGNvbnN0IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSwgQ1NT
UHJvcGVydHkqIHNsb3QpCkBAIC02MDgsMTEgKzYwNywxMSBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0
eVNldDo6YXNUZXh0KCkgY29uc3QKICAgICAgICAgICAgIGlmIChzaG9ydGhhbmRQcm9wZXJ0eUFw
cGVhcmVkLmdldChDU1NQcm9wZXJ0eUJvcmRlciAtIGZpcnN0Q1NTUHJvcGVydHkpKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJv
cmRlckFicmlkZ2VkTG9uZ2hhbmQoKS5sZW5ndGgoKSAmJiBzaG9ydGhhbmRQcm9wZXJ0eUlEOyBp
KyspIHsKLSAgICAgICAgICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFu
ZCA9ICooYm9yZGVyQWJyaWRnZWRMb25naGFuZCgpLmxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9u
KClbaV0pOworICAgICAgICAgICAgICAgIGNvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIHNob3J0
aGFuZCA9ICooYm9yZGVyQWJyaWRnZWRMb25naGFuZCgpLmxvbmdoYW5kc0ZvckluaXRpYWxpemF0
aW9uKClbaV0pOwogICAgICAgICAgICAgICAgIFN0cmluZyBjb21tb25WYWx1ZTsKICAgICAgICAg
ICAgICAgICBib29sIGNvbW1vbkltcG9ydGFuY2UgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBm
b3IgKHNpemVfdCBqID0gMDsgaiA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2opIHsKLSAgICAgICAg
ICAgICAgICAgICAgaW50IGlkID0gbG9uZ2hhbmQucHJvcGVydGllcygpW2pdOworICAgICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2opIHsK
KyAgICAgICAgICAgICAgICAgICAgaW50IGlkID0gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtqXTsK
ICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5
Q1NTVmFsdWUoaWQpOwogICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY3VycmVudFZhbHVlID0g
dmFsdWUgPyB2YWx1ZS0+Y3NzVGV4dCgpIDogU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNJbXBvcnRhbnQgPSBwcm9wZXJ0eUlzSW1wb3J0YW50KGlkKTsKQEAgLTgwNCw3ICs4
MDMsNyBAQCB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExp
c3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBDU1NTdHlsZQogCiAvLyBUaGlzIGlzIHRoZSBsaXN0IG9m
IHByb3BlcnRpZXMgd2Ugd2FudCB0byBjb3B5IGluIHRoZSBjb3B5QmxvY2tQcm9wZXJ0aWVzKCkg
ZnVuY3Rpb24uCiAvLyBJdCBpcyB0aGUgbGlzdCBvZiBDU1MgcHJvcGVydGllcyB0aGF0IGFwcGx5
IHNwZWNpYWxseSB0byBibG9jay1sZXZlbCBlbGVtZW50cy4KLXN0YXRpYyBjb25zdCBpbnQgYmxv
Y2tQcm9wZXJ0aWVzW10gPSB7CitzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBibG9ja1Byb3Bl
cnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eU9ycGhhbnMsCiAgICAgQ1NTUHJvcGVydHlPdmVy
ZmxvdywgLy8gVGhpcyBjYW4gYmUgYWxzbyBiZSBhcHBsaWVkIHRvIHJlcGxhY2VkIGVsZW1lbnRz
CiAgICAgQ1NTUHJvcGVydHlXZWJraXRBc3BlY3RSYXRpbywKQEAgLTg0MCw3ICs4MzksNyBAQCB2
b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZUJsb2NrUHJvcGVydGllcygpCiAgICAgcmVtb3Zl
UHJvcGVydGllc0luU2V0KGJsb2NrUHJvcGVydGllcywgbnVtQmxvY2tQcm9wZXJ0aWVzKTsKIH0K
IAotYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpyZW1vdmVQcm9wZXJ0aWVzSW5TZXQoY29uc3QgaW50
KiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK2Jvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlUHJv
cGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKQog
ewogICAgIGlmIChtX3Byb3BlcnRpZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC05MjYsNyArOTI1LDcgQEAgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBTdHlsZVBy
b3BlcnR5U2V0Ojpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUHJv
cGVydHlTZXQobV9wcm9wZXJ0aWVzKSk7CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNl
dD4gU3R5bGVQcm9wZXJ0eVNldDo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBpbnQqIHNldCwg
dW5zaWduZWQgbGVuZ3RoKSBjb25zdAorUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBTdHls
ZVByb3BlcnR5U2V0Ojpjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNl
dCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAogewogICAgIFZlY3RvcjxDU1NQcm9wZXJ0eT4gbGlz
dDsKICAgICBsaXN0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVQcm9wZXJ0eVNldC5oCmluZGV4IDk4OGNlNjIyNTQ0YWIxYTQ2NWYwZTdlNzM4MTY5
YjZiOGNiNWQ5ZTUuLmQ0MDcwOGEwZGU0YjE5M2M0OTk3NTdjZDhiZWE0ZTdhNjkwZjIyNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaApAQCAtMjMsNiArMjMsNyBAQAogCiAj
aW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgor
I2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC0zMCwxMCArMzEsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NT
UnVsZTsKLWNsYXNzIENTU1Byb3BlcnR5TG9uZ2hhbmQ7CiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0
aW9uOwogY2xhc3MgS1VSTDsKIGNsYXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjsK
K2NsYXNzIFNob3J0aGFuZFByb3BlcnRpZXM7CiBjbGFzcyBTdHlsZWRFbGVtZW50OwogCiBjbGFz
cyBTdHlsZVByb3BlcnR5U2V0IDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVQcm9wZXJ0eVNldD4g
ewpAQCAtODIsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPFN0eWxlUHJvcGVy
dHlTZXQ+IGNvcHlCbG9ja1Byb3BlcnRpZXMoKSBjb25zdDsKICAgICB2b2lkIHJlbW92ZUJsb2Nr
UHJvcGVydGllcygpOwotICAgIGJvb2wgcmVtb3ZlUHJvcGVydGllc0luU2V0KGNvbnN0IGludCog
c2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIGJvb2wgcmVtb3ZlUHJvcGVydGllc0luU2V0KGNv
bnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIHZvaWQgbWVy
Z2UoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCosIGJvb2wgYXJnT3ZlcnJpZGVzT25Db25mbGljdCA9
IHRydWUpOwogCkBAIC05OCw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUVxdWl2
YWxlbnRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqKTsKICAgICB2b2lkIHJlbW92
ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKGNvbnN0IENTU1N0eWxlRGVjbGFyYXRpb24qKTsKIAotICAg
IFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gY29weVByb3BlcnRpZXNJblNldChjb25zdCBp
bnQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPFN0eWxlUHJv
cGVydHlTZXQ+IGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1
bnNpZ25lZCBsZW5ndGgpIGNvbnN0OwogICAgIAogICAgIFN0cmluZyBhc1RleHQoKSBjb25zdDsK
ICAgICAKQEAgLTExOCwxMSArMTE5LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldE5lZWRz
U3R5bGVSZWNhbGMoKTsKIAotICAgIFN0cmluZyBnZXRTaG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7Ci0gICAgU3RyaW5nIGdldENvbW1vblZhbHVlKGNvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmKSBjb25zdDsKLSAgICBTdHJpbmcgZ2V0TGF5ZXJlZFNob3J0
aGFuZFZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmKSBjb25zdDsKLSAgICBTdHJpbmcg
Z2V0NFZhbHVlcyhjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7Ci0gICAgU3RyaW5n
IGJvcmRlclNwYWNpbmdWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7Cisg
ICAgU3RyaW5nIGdldFNob3J0aGFuZFZhbHVlKGNvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmKSBj
b25zdDsKKyAgICBTdHJpbmcgZ2V0Q29tbW9uVmFsdWUoY29uc3QgU2hvcnRoYW5kUHJvcGVydGll
cyYpIGNvbnN0OworICAgIFN0cmluZyBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgU2hv
cnRoYW5kUHJvcGVydGllcyYpIGNvbnN0OworICAgIFN0cmluZyBnZXQ0VmFsdWVzKGNvbnN0IFNo
b3J0aGFuZFByb3BlcnRpZXMmKSBjb25zdDsKKyAgICBTdHJpbmcgYm9yZGVyU3BhY2luZ1ZhbHVl
KGNvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmKSBjb25zdDsKICAgICBTdHJpbmcgZm9udFZhbHVl
KCkgY29uc3Q7CiAgICAgYm9vbCBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGljaXQoaW50
IHByb3BlcnR5SUQsIFN0cmluZ0J1aWxkZXImIHJlc3VsdCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCBlNjczNzdkMGYyNmM5OTdiN2NhYzhiYjJh
M2ZlZmIwYWVlMTcxNWFjLi4xZjEwZDAyMjY4NzVlYjlkMzhjOWEzYWU0MWNiNzJhNjE1ODgzYWYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC01NSw3ICs1NSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRWRpdGluZyBzdHlsZSBwcm9wZXJ0aWVzIG11
c3QgYmUgcHJlc2VydmVkIGR1cmluZyBlZGl0aW5nIG9wZXJhdGlvbi4KIC8vIGUuZy4gd2hlbiBh
IHVzZXIgaW5zZXJ0cyBhIG5ldyBwYXJhZ3JhcGgsIGFsbCBwcm9wZXJ0aWVzIGxpc3RlZCBoZXJl
IG11c3QgYmUgY29waWVkIHRvIHRoZSBuZXcgcGFyYWdyYXBoLgotc3RhdGljIGNvbnN0IGludCBl
ZGl0aW5nUHJvcGVydGllc1tdID0geworc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgZWRpdGlu
Z1Byb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwKICAgICBD
U1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uLAogCkBAIC02MDMsNyArNjAzLDcgQEAgdm9pZCBFZGl0
aW5nU3R5bGU6OmNvbGxhcHNlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzKCkKIH0KIAogLy8gQ1NT
IHByb3BlcnRpZXMgdGhhdCBjcmVhdGUgYSB2aXN1YWwgZGlmZmVyZW5jZSBvbmx5IHdoZW4gYXBw
bGllZCB0byB0ZXh0Lgotc3RhdGljIGNvbnN0IGludCB0ZXh0T25seVByb3BlcnRpZXNbXSA9IHsK
K3N0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHRleHRPbmx5UHJvcGVydGllc1tdID0gewogICAg
IENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sCiAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdCwKICAgICBDU1NQcm9wZXJ0eUZvbnRTdHlsZSwKQEAgLTEwODQsOSAr
MTA4NCw5IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFs
aXphdGlvbihTdHlsZWRFbGVtZW50KiBlbGVtZW50KQogc3RhdGljIHZvaWQgcmVtb3ZlUHJvcGVy
dGllc0luU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCogc3R5bGVUb1JlbW92ZVByb3BlcnRpZXNGcm9t
LCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKIHsKICAgICB1bnNpZ25lZCBwcm9wZXJ0eUNvdW50
ID0gc3R5bGUtPnByb3BlcnR5Q291bnQoKTsKLSAgICBWZWN0b3I8aW50PiBwcm9wZXJ0aWVzVG9S
ZW1vdmUocHJvcGVydHlDb3VudCk7CisgICAgVmVjdG9yPENTU1Byb3BlcnR5SUQ+IHByb3BlcnRp
ZXNUb1JlbW92ZShwcm9wZXJ0eUNvdW50KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
cHJvcGVydHlDb3VudDsgKytpKQotICAgICAgICBwcm9wZXJ0aWVzVG9SZW1vdmVbaV0gPSBzdHls
ZS0+cHJvcGVydHlBdChpKS5pZCgpOworICAgICAgICBwcm9wZXJ0aWVzVG9SZW1vdmVbaV0gPSBz
dGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihzdHlsZS0+cHJvcGVydHlBdChpKS5pZCgpKTsKIAog
ICAgIHN0eWxlVG9SZW1vdmVQcm9wZXJ0aWVzRnJvbS0+cmVtb3ZlUHJvcGVydGllc0luU2V0KHBy
b3BlcnRpZXNUb1JlbW92ZS5kYXRhKCksIHByb3BlcnRpZXNUb1JlbW92ZS5zaXplKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRl
eCBjNTljNTVkYmExZWE0YmMyMzk1M2Q0YzZmOGUzYTJkMzRmNDA3ZGU2Li5jMzEwZTU1OGM3MzQ1
NWZiMWRjMTUyYTg0MWE5YmVkZTJkNzk5NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtODY2LDExICs4NjYsMTEgQEAgcHJpdmF0
ZToKIAogY2xhc3MgU2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyIDogcHVibGljIFByb3BlcnR5V3Jh
cHBlckJhc2UgewogcHVibGljOgotICAgIFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcihpbnQgcHJv
cGVydHksIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKQorICAgIFNob3J0aGFu
ZFByb3BlcnR5V3JhcHBlcihpbnQgcHJvcGVydHksIGNvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMm
IHNob3J0aGFuZCkKICAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3BlcnR5KQogICAg
IHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyAr
K2kpIHsKLSAgICAgICAgICAgIFByb3BlcnR5V3JhcHBlckJhc2UqIHdyYXBwZXIgPSB3cmFwcGVy
Rm9yUHJvcGVydHkobG9uZ2hhbmQucHJvcGVydGllcygpW2ldKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBQ
cm9wZXJ0eVdyYXBwZXJCYXNlKiB3cmFwcGVyID0gd3JhcHBlckZvclByb3BlcnR5KHNob3J0aGFu
ZC5wcm9wZXJ0aWVzKClbaV0pOwogICAgICAgICAgICAgaWYgKHdyYXBwZXIpCiAgICAgICAgICAg
ICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLmFwcGVuZCh3cmFwcGVyKTsKICAgICAgICAgfQpAQCAt
MTE2OSw3ICsxMTY5LDcgQEAgc3RhdGljIHZvaWQgYWRkU2hvcnRoYW5kUHJvcGVydGllcygpCiAK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoYW5pbWF0YWJsZVNo
b3J0aGFuZFByb3BlcnRpZXMpOyArK2kpIHsKICAgICAgICAgaW50IHByb3BlcnR5SUQgPSBhbmlt
YXRhYmxlU2hvcnRoYW5kUHJvcGVydGllc1tpXTsKLSAgICAgICAgQ1NTUHJvcGVydHlMb25naGFu
ZCBsb25naGFuZCA9IGxvbmdoYW5kRm9yUHJvcGVydHkocHJvcGVydHlJRCk7CisgICAgICAgIFNo
b3J0aGFuZFByb3BlcnRpZXMgbG9uZ2hhbmQgPSBsb25naGFuZHNGb3JQcm9wZXJ0eShwcm9wZXJ0
eUlEKTsKICAgICAgICAgaWYgKGxvbmdoYW5kLmxlbmd0aCgpID4gMCkKICAgICAgICAgICAgIGFk
ZFByb3BlcnR5V3JhcHBlcihwcm9wZXJ0eUlELCBuZXcgU2hvcnRoYW5kUHJvcGVydHlXcmFwcGVy
KHByb3BlcnR5SUQsIGxvbmdoYW5kKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKaW5kZXggNzBkNjE5YjdlNDdh
OTViZWUxMGQxZTU3MjQ4ODc5ZjNiMjkxYzEzOS4uMTJmOTM3OTQ4ZDc0ZjkyZjYzMWE1NGE5ZmM5
ZmIyMWVlYTgxYmU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
Q29tcG9zaXRlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9Db21wb3NpdGVBbmltYXRpb24uY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQ29t
cG9zaXRlQW5pbWF0aW9uLmgiCiAKICNpbmNsdWRlICJBbmltYXRpb25Db250cm9sbGVyUHJpdmF0
ZS5oIgotI2luY2x1ZGUgIkNTU1Byb3BlcnR5TG9uZ2hhbmQuaCIKICNpbmNsdWRlICJDU1NQcm9w
ZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiSW1wbGljaXRBbmltYXRpb24uaCIKICNpbmNsdWRlICJL
ZXlmcmFtZUFuaW1hdGlvbi5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135072</attachid>
            <date>2012-04-02 05:21:10 -0700</date>
            <delta_ts>2012-04-02 06:14:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82624-20120402092051.patch</filename>
            <type>text/plain</type>
            <size>111068</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGMxZGMyZjlkNjBmNzc1
YmFhMGJmMWI5MWNhZDQ2MjdhNThjMjdmZS4uN2NiYjYyMGNmMDI1MDg0ZTEwMTVmMTExYmEzYTk3
M2FmYjA4ZDlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAxMi0wNC0wMiAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZW5h
bWUgQ1NTUHJvcGVydHlMb25naGFuZCBjbGFzcyB0byBTaG9ydGhhbmRQcm9wZXJ0aWVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI2MjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgQ1NTUHJv
cGVydHlMb25naGFuZCB0byBTaG9ydGhhbmRQcm9wZXJ0aWVzIGFzIHdoYXQgQ1NTUHJvcGVydHlM
b25naGFuZAorICAgICAgICBpcyByZXByZXNlbnRpbmcgaXMgbm90IGEgbG9uZ2hhbmQgYnV0IHRo
ZSBsaXN0IG9mIGxvbmdoYW5kcyBmb3IgYSBnaXZlbiBzaG9ydGhhbmQuCisgICAgICAgIEFsc28g
aW4gdGhlIHNhbWUgdGltZSBzd2l0Y2ggYWxsIHNob3J0aGFuZCBkZWNsYXJhdGlvbnMgdG8gdXNl
IENTU1Byb3BlcnR5SUQgZW51bQorICAgICAgICByYXRoZXIgdGhhbiBhIGludCBzbyBpdCBpcyBj
bGVhciBvbiB3aGF0IGtpbmQgb2YgZGF0YSB3ZSBhcmUgZGVhbGluZyB3aXRoLgorCisgICAgICAg
IEluIGEgZm9sbG93aW5nIHBhdGNoIEkgd2lsbCByZW5hbWUgQ1NTUHJvcGVydHlMb25naGFuZCBm
aWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyA6IFRoaXMgaXMgYSByZWZhY3RvcmluZywgbm8g
YmVoYXZpb3VyIGNoYW5nZSBpbnRlbmRlZC4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0
eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRo
YW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y29w
eVByb3BlcnRpZXNJblNldCk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24pOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VGaWxsU2hvcnRoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VB
bmltYXRpb25TaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRy
YW5zaXRpb25TaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNo
b3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyk6Cisg
ICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChD
U1NQYXJzZXIpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRl
ckRpcmVjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHk6OnJlc29sdmVEaXJl
Y3Rpb25Bd2FyZVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kUHJvcGVydGllcyk6CisgICAgICAgIChX
ZWJDb3JlOjpiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OmJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclBy
b3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyQWJyaWRnZWRQcm9wZXJ0aWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OmJvcmRlckJvdHRvbVByb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Ym9yZGVyQ29sb3JQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlcklt
YWdlUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJMZWZ0UHJvcGVydGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJSYWRpdXNQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OmJvcmRlclJpZ2h0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJT
cGFjaW5nUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJTdHlsZVByb3BlcnRp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyVG9wUHJvcGVydGllcyk6CisgICAgICAgIChX
ZWJDb3JlOjpib3JkZXJXaWR0aFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6bGlzdFN0
eWxlUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpmb250UHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJDb3JlOjptYXJnaW5Qcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Om91dGxp
bmVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Om92ZXJmbG93UHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpwYWRkaW5nUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjp3
ZWJraXRBbmltYXRpb25Qcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRl
ckFmdGVyUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRCb3JkZXJCZWZvcmVQ
cm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckVuZFByb3BlcnRpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0Qm9yZGVyU3RhcnRQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OndlYmtpdENvbHVtbnNQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OndlYmtpdENvbHVtblJ1bGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEZs
ZXhGbG93UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXJnaW5Db2xsYXBz
ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0TWFycXVlZVByb3BlcnRpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0TWFza1Byb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6d2Via2l0TWFza1Bvc2l0aW9uUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjp3
ZWJraXRNYXNrUmVwZWF0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRUZXh0
RW1waGFzaXNQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdFRleHRTdHJva2VQ
cm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0aWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdFRyYW5zZm9ybU9yaWdpblByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6d2Via2l0V3JhcFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6bG9uZ2hhbmRzRm9yUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eUxvbmdo
YW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpTaG9ydGhhbmRQcm9wZXJ0aWVzOjpTaG9ydGhhbmRQ
cm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNob3J0aGFuZFByb3BlcnRpZXM6OnByb3Bl
cnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2hvcnRoYW5kUHJvcGVydGllczo6bG9uZ2hhbmRz
Rm9ySW5pdGlhbGl6YXRpb24pOgorICAgICAgICAoU2hvcnRoYW5kUHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpnZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmJvcmRlclNwYWNpbmdWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpnZXQ0VmFsdWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpnZXRTaG9ydGhhbmRWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpnZXRDb21tb25WYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpyZW1vdmVTaG9ydGhhbmRQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpwcm9wZXJ0eUlzSW1wb3J0YW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmFzVGV4dCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZVByb3BlcnRpZXNJ
blNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpjb3B5UHJvcGVydGll
c0luU2V0KToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChTdHlsZVByb3BlcnR5U2V0KToKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnJl
bW92ZVByb3BlcnRpZXNJblN0eWxlKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNob3J0aGFuZFByb3BlcnR5V3JhcHBlcjo6
U2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFNob3J0aGFu
ZFByb3BlcnRpZXMpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlv
bi5jcHA6CisKIDIwMTItMDQtMDIgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW1Y4XSBXZWIgSW5zcGVjdG9yOiBkb24ndCBjcmFzaCB3aGVuIHJlc29s
dmluZyBET00gd3JhcHBlciBoZWFwIHNuYXBzaG90IG5vZGUgdG8gSlMgb2JqZWN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4
IDk4Zjc4ZTk1NTg3MWYzNDNiZTE1ZDQzMzQwZjIxZDk3YWJhZTRmMDMuLmIwZjJlZDRmMzc2YTVm
NDJkYTg5ZGFjNmI0OWI0NzdjNDM4ZjVkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC03NCw3ICs3NCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIC8vIExpc3Qgb2YgYWxsIHByb3BlcnRpZXMgd2Uga25vdyBob3cg
dG8gY29tcHV0ZSwgb21pdHRpbmcgc2hvcnRoYW5kcy4KLXN0YXRpYyBjb25zdCBpbnQgY29tcHV0
ZWRQcm9wZXJ0aWVzW10gPSB7CitzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBjb21wdXRlZFBy
b3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LAogICAg
IENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAsCiAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsCkBAIC0yMzM5LDEwICsyMzM5LDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAg
ICAgICAgICByZXR1cm4gdmFsdWVGb3JGaWx0ZXIoc3R5bGUuZ2V0KCkpOwogI2VuZGlmCiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kOiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQg
cHJvcGVydGllc1s1XSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIENTU1Byb3BlcnR5
QmFja2dyb3VuZEltYWdlLAorICAgICAgICAgICAgY29uc3QgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
aWVzWzVdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kSW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUmVwZWF0LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5QmFja2dy
b3VuZFBvc2l0aW9uIH07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNG
b3JTaG9ydGhhbmRQcm9wZXJ0aWVzKENTU1Byb3BlcnR5TG9uZ2hhbmQocHJvcGVydGllcywgV1RG
X0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVzKSkpOworICAgICAgICAgICAgcmV0dXJuIGdldENTU1By
b3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhTaG9ydGhhbmRQcm9wZXJ0aWVzKHBy
b3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcykpKTsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOiB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFs
dWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUJvcmRlclRvcCwgRG9O
b3RVcGRhdGVMYXlvdXQpOwpAQCAtMjM1NSwzMSArMjM1NSwzMSBAQCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50
IHByb3BlcgogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnJlbGVhc2UoKTsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tOgotICAgICAgICAgICAgcmV0dXJu
IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhib3JkZXJCb3R0b21M
b25naGFuZCgpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNo
b3J0aGFuZFByb3BlcnRpZXMoYm9yZGVyQm90dG9tUHJvcGVydGllcygpKTsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yOgotICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3Bl
cnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoYm9yZGVyQ29sb3JMb25naGFuZCgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGJvcmRl
ckNvbG9yUHJvcGVydGllcygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnQ6
Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9w
ZXJ0aWVzKGJvcmRlckxlZnRMb25naGFuZCgpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRDU1NQ
cm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoYm9yZGVyTGVmdFByb3BlcnRpZXMo
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZToKICAgICAgICAgICAgIHJl
dHVybiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlKHN0eWxlLT5ib3JkZXJJbWFnZSgpLCBjc3NWYWx1
ZVBvb2wpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzOgogICAgICAgICAg
ICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c1Nob3J0aGFuZFZhbHVlKHN0eWxlLmdldCgpLCBjc3NW
YWx1ZVBvb2wsIG1fbm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKTsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0OgotICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3Bl
cnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhib3JkZXJSaWdodExvbmdoYW5kKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVy
dGllcyhib3JkZXJSaWdodFByb3BlcnRpZXMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJTdHlsZToKLSAgICAgICAgICAgIHJldHVybiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNp
ZGVzU2hvcnRoYW5kKGJvcmRlclN0eWxlTG9uZ2hhbmQoKSk7CisgICAgICAgICAgICByZXR1cm4g
Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChib3JkZXJTdHlsZVByb3BlcnRp
ZXMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3A6Ci0gICAgICAgICAgICBy
ZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGJvcmRlclRv
cExvbmdoYW5kKCkpOworICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9y
U2hvcnRoYW5kUHJvcGVydGllcyhib3JkZXJUb3BQcm9wZXJ0aWVzKCkpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyV2lkdGg6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVy
dHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChib3JkZXJXaWR0aExvbmdoYW5kKCkpOworICAgICAg
ICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoYm9yZGVy
V2lkdGhQcm9wZXJ0aWVzKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlOgot
ICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVy
dGllcyhsaXN0U3R5bGVMb25naGFuZCgpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRDU1NQcm9w
ZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMobGlzdFN0eWxlUHJvcGVydGllcygpKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbjoKLSAgICAgICAgICAgIHJldHVybiBnZXRD
U1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKG1hcmdpbkxvbmdoYW5kKCkpOworICAg
ICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQobWFy
Z2luUHJvcGVydGllcygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmU6Ci0gICAg
ICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVz
KG91dGxpbmVMb25naGFuZCgpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRDU1NQcm9wZXJ0eVZh
bHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMob3V0bGluZVByb3BlcnRpZXMoKSk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgotICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3Bl
cnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQocGFkZGluZ0xvbmdoYW5kKCkpOworICAgICAgICAg
ICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQocGFkZGluZ1By
b3BlcnRpZXMoKSk7CiAgICAgICAgIC8qIEluZGl2aWR1YWwgcHJvcGVydGllcyBub3QgcGFydCBv
ZiB0aGUgc3BlYyAqLwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFg6
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WToKQEAgLTI1NzYsMjQg
KzI1NzYsMjQgQEAgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246Om1ha2VNdXRhYmxlKCkKICAgICByZXR1cm4gY29weSgpOwogfQogCi1QYXNz
UmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQ
cm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgbG9uZ2hhbmQpIGNvbnN0CitQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3Bl
cnRpZXMoY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgbG9uZ2hhbmRzKSBjb25zdAogewogICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsb25naGFuZC5sZW5ndGgoKTsg
KytpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1Zh
bHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVtpXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbG9uZ2hhbmRzLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAg
UmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmRzLnBy
b3BlcnRpZXMoKVtpXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwogICAgICAgICBsaXN0LT5hcHBlbmQo
dmFsdWUpOwogICAgIH0KICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldENTU1Byb3Bl
cnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9u
Z2hhbmQpIGNvbnN0CitQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0IFNo
b3J0aGFuZFByb3BlcnRpZXMmIGxvbmdoYW5kcykgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAg
IC8vIEFzc3VtZSB0aGUgcHJvcGVydGllcyBhcmUgaW4gdGhlIHVzdWFsIG9yZGVyIHRvcCwgcmln
aHQsIGJvdHRvbSwgbGVmdC4KLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gZ2V0UHJv
cGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbMF0sIERvTm90VXBkYXRlTGF5b3V0
KTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHJpZ2h0VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVl
KGxvbmdoYW5kLnByb3BlcnRpZXMoKVsxXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0
cjxDU1NWYWx1ZT4gYm90dG9tVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnBy
b3BlcnRpZXMoKVsyXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4g
bGVmdFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbM10s
IERvTm90VXBkYXRlTGF5b3V0KTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gZ2V0
UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZHMucHJvcGVydGllcygpWzBdLCBEb05vdFVwZGF0ZUxh
eW91dCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiByaWdodFZhbHVlID0gZ2V0UHJvcGVydHlDU1NW
YWx1ZShsb25naGFuZHMucHJvcGVydGllcygpWzFdLCBEb05vdFVwZGF0ZUxheW91dCk7CisgICAg
UmVmUHRyPENTU1ZhbHVlPiBib3R0b21WYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hh
bmRzLnByb3BlcnRpZXMoKVsyXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOworICAgIFJlZlB0cjxDU1NW
YWx1ZT4gbGVmdFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZHMucHJvcGVydGll
cygpWzNdLCBEb05vdFVwZGF0ZUxheW91dCk7CiAKICAgICAvLyBBbGwgNCBwcm9wZXJ0aWVzIG11
c3QgYmUgc3BlY2lmaWVkLgogICAgIGlmICghdG9wVmFsdWUgfHwgIXJpZ2h0VmFsdWUgfHwgIWJv
dHRvbVZhbHVlIHx8ICFsZWZ0VmFsdWUpCkBAIC0yNjE0LDcgKzI2MTQsNyBAQCBQYXNzUmVmUHRy
PENTU1ZhbHVlTGlzdD4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0
eVZhbHVlc0ZvclNpZAogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0
cjxTdHlsZVByb3BlcnR5U2V0PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNvcHlQcm9w
ZXJ0aWVzSW5TZXQoY29uc3QgaW50KiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKK1Bhc3NS
ZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjb3B5
UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3Ro
KSBjb25zdAogewogICAgIFZlY3RvcjxDU1NQcm9wZXJ0eT4gbGlzdDsKICAgICBsaXN0LnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAppbmRleCBlODkzOGQwZTU1OTU5NGU1YmYyNmZhZDBm
NjMxMjBhOTA1ZjhmYTk4Li5lMTczNzllY2E1YTRkNjk0NDQ0ZDZkYmQ0Y2JmOWY1ZmJkZDZmNTkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5oCkBAIC0yOSw3ICsyOSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1By
aW1pdGl2ZVZhbHVlOwotY2xhc3MgQ1NTUHJvcGVydHlMb25naGFuZDsKIGNsYXNzIENTU1ZhbHVl
TGlzdDsKIGNsYXNzIENTU1ZhbHVlUG9vbDsKIGNsYXNzIENvbG9yOwpAQCAtMzcsNiArMzYsNyBA
QCBjbGFzcyBOb2RlOwogY2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBTVkdQYWludDsKIGNsYXNz
IFNoYWRvd0RhdGE7CitjbGFzcyBTaG9ydGhhbmRQcm9wZXJ0aWVzOwogY2xhc3MgU3R5bGVQcm9w
ZXJ0eVNldDsKIAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKQEAgLTcxLDcgKzcxLDcgQEAgcHVi
bGljOgogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFNWR1Byb3BlcnR5Q1NTVmFsdWUoaW50
IHByb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBQYXNzUmVm
UHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgaW50KiBzZXQs
IHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0
PiBjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQg
bGVuZ3RoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24oUGFzc1JlZlB0cjxOb2RlPiwgYm9vbCBhbGxvd1Zpc2l0ZWRTdHlsZSwgY29uc3QgU3RyaW5n
Jik7CkBAIC0xMTAsOCArMTEwLDggQEAgcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVl
PiB2YWx1ZUZvckZpbHRlcihSZW5kZXJTdHlsZSopIGNvbnN0OwogI2VuZGlmCiAKLSAgICBQYXNz
UmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9w
ZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmKSBjb25zdDsKLSAgICBQYXNzUmVmUHRy
PENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25zdCBTaG9y
dGhhbmRQcm9wZXJ0aWVzJikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdl
dENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoY29uc3QgU2hvcnRoYW5kUHJvcGVy
dGllcyYpIGNvbnN0OwogCiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKICAgICBQc2V1ZG9JZCBt
X3BzZXVkb0VsZW1lbnRTcGVjaWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IGFl
ZDQxMzNjNjhlMjczOGQxNzQ2OTZmYzRiYTkyODI3MDNlY2UyOGUuLjg0ZmNiZjI0ZTU4OWRhYWY0
YTVjNjAzYzU2YTAzMWNlNWU2MzBmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC00
OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJD
U1NQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TG9uZ2hhbmQuaCIKLSNpbmNsdWRl
ICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgi
CiAjaW5jbHVkZSAiQ1NTUmVmbGVjdFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIK
QEAgLTIwMjUsNyArMjAyNCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOgotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQo
cHJvcElkLCB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0
dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0TWFycXVlZVByb3BlcnRpZXMoKSwgaW1w
b3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudDoKICAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlU21hbGwgfHwgaWQgPT0gQ1NTVmFsdWVMYXJnZSB8fCBp
ZCA9PSBDU1NWYWx1ZU1lZGl1bSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
QEAgLTIxNDcsMTUgKzIxNDYsMTUgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHBy
b3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNv
bGxhcHNlOiB7CiAgICAgICAgIGlmIChudW0gPT0gMSkgewogICAgICAgICAgICAgU2hvcnRoYW5k
U2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSk7Ci0gICAg
ICAgICAgICBpZiAoIXBhcnNlVmFsdWUod2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgpLnBy
b3BlcnRpZXMoKVswXSwgaW1wb3J0YW50KSkKKyAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZSh3
ZWJraXRNYXJnaW5Db2xsYXBzZVByb3BlcnRpZXMoKS5wcm9wZXJ0aWVzKClbMF0sIGltcG9ydGFu
dCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgQ1NTVmFsdWUq
IHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOwotICAgICAgICAgICAg
YWRkUHJvcGVydHkod2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgpLnByb3BlcnRpZXMoKVsx
XSwgdmFsdWUsIGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eSh3ZWJraXRNYXJn
aW5Db2xsYXBzZVByb3BlcnRpZXMoKS5wcm9wZXJ0aWVzKClbMV0sIHZhbHVlLCBpbXBvcnRhbnQp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAo
bnVtID09IDIpIHsKICAgICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1By
b3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpOwotICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVl
KHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKS5wcm9wZXJ0aWVzKClbMF0sIGltcG9ydGFu
dCkgfHwgIXBhcnNlVmFsdWUod2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgpLnByb3BlcnRp
ZXMoKVsxXSwgaW1wb3J0YW50KSkKKyAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZSh3ZWJraXRN
YXJnaW5Db2xsYXBzZVByb3BlcnRpZXMoKS5wcm9wZXJ0aWVzKClbMF0sIGltcG9ydGFudCkgfHwg
IXBhcnNlVmFsdWUod2Via2l0TWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzKCkucHJvcGVydGllcygp
WzFdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yMjc1LDEzICsyMjc0LDEzIEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAg
ICAvLyBQb3NpdGlvbiBtdXN0IGNvbWUgYmVmb3JlIGNvbG9yIGluIHRoaXMgYXJyYXkgYmVjYXVz
ZSBhIHBsYWluIG9sZCAiMCIgaXMgYSBsZWdhbCBjb2xvcgogICAgICAgICAvLyBpbiBxdWlya3Mg
bW9kZSBidXQgaXQncyB1c3VhbGx5IHRoZSBYIGNvb3JkaW5hdGUgb2YgYSBwb3NpdGlvbi4KICAg
ICAgICAgLy8gRklYTUU6IEFkZCBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplIHRvIHRoZSBzaG9y
dGhhbmQuCi0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5QmFj
a2dyb3VuZEltYWdlLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQsCisgICAgICAgIGNvbnN0
IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFn
ZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvciB9OwogICAgICAgICByZXR1cm4gcGFyc2VGaWxsU2hvcnRo
YW5kKHByb3BJZCwgcHJvcGVydGllcywgNywgaW1wb3J0YW50KTsKICAgICB9CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2s6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9
IHsgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVh
dCwKKyAgICAgICAgY29uc3QgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3Bl
cnR5V2Via2l0TWFza0ltYWdlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1l
bnQsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIENTU1Byb3BlcnR5V2Vi
a2l0TWFza0NsaXAgfTsKICAgICAgICAgcmV0dXJuIHBhcnNlRmlsbFNob3J0aGFuZChwcm9wSWQs
IHByb3BlcnRpZXMsIDYsIGltcG9ydGFudCk7CkBAIC0yMjg5LDcgKzIyODgsNyBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyOgogICAgICAgICAvLyBbICdib3JkZXItd2lkdGgnIHx8ICdib3Jk
ZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKICAgICB7Ci0gICAgICAgIGlmIChwYXJz
ZVNob3J0aGFuZChwcm9wSWQsIGJvcmRlckFicmlkZ2VkTG9uZ2hhbmQoKSwgaW1wb3J0YW50KSkg
eworICAgICAgICBpZiAocGFyc2VTaG9ydGhhbmQocHJvcElkLCBib3JkZXJBYnJpZGdlZFByb3Bl
cnRpZXMoKSwgaW1wb3J0YW50KSkgewogICAgICAgICAgICAgLy8gVGhlIENTUzMgQm9yZGVycyBh
bmQgQmFja2dyb3VuZHMgc3BlY2lmaWNhdGlvbiBzYXlzIHRoYXQgYm9yZGVyIGFsc28gcmVzZXRz
IGJvcmRlci1pbWFnZS4gSXQncyBhcwogICAgICAgICAgICAgLy8gdGhvdWdoIGEgdmFsdWUgb2Yg
bm9uZSB3YXMgc3BlY2lmaWVkIGZvciB0aGUgaW1hZ2UuCiAgICAgICAgICAgICBhZGRQcm9wZXJ0
eShDU1NQcm9wZXJ0eUJvcmRlckltYWdlLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJ
bml0aWFsVmFsdWUoKSwgaW1wb3J0YW50KTsKQEAgLTIyOTksNDQgKzIyOTgsNDQgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgfQog
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3A6CiAgICAgICAgIC8vIFsgJ2JvcmRlci10b3At
d2lkdGgnIHx8ICdib3JkZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKLSAgICAgICAg
cmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgYm9yZGVyVG9wTG9uZ2hhbmQoKSwgaW1wb3J0
YW50KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgYm9yZGVyVG9wUHJv
cGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodDoK
ICAgICAgICAgLy8gWyAnYm9yZGVyLXJpZ2h0LXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8
Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQs
IGJvcmRlclJpZ2h0TG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHBhcnNl
U2hvcnRoYW5kKHByb3BJZCwgYm9yZGVyUmlnaHRQcm9wZXJ0aWVzKCksIGltcG9ydGFudCk7CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbToKICAgICAgICAgLy8gWyAnYm9yZGVyLWJv
dHRvbS13aWR0aCcgfHwgJ2JvcmRlci1zdHlsZScgfHwgPGNvbG9yPiBdIHwgaW5oZXJpdAotICAg
ICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBib3JkZXJCb3R0b21Mb25naGFuZCgp
LCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBib3Jk
ZXJCb3R0b21Qcm9wZXJ0aWVzKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlckxlZnQ6CiAgICAgICAgIC8vIFsgJ2JvcmRlci1sZWZ0LXdpZHRoJyB8fCAnYm9yZGVyLXN0
eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFu
ZChwcm9wSWQsIGJvcmRlckxlZnRMb25naGFuZCgpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1
cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBib3JkZXJMZWZ0UHJvcGVydGllcygpLCBpbXBvcnRh
bnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydDoKLSAgICAgICAgcmV0
dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCgpLCBp
bXBvcnRhbnQpOworICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRC
b3JkZXJTdGFydFByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyRW5kOgotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3
ZWJraXRCb3JkZXJFbmRMb25naGFuZCgpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gcGFy
c2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRCb3JkZXJFbmRQcm9wZXJ0aWVzKCksIGltcG9ydGFu
dCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZToKLSAgICAgICAgcmV0
dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKSwg
aW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0
Qm9yZGVyQmVmb3JlUHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJBZnRlcjoKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJ
ZCwgd2Via2l0Qm9yZGVyQWZ0ZXJMb25naGFuZCgpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1
cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRCb3JkZXJBZnRlclByb3BlcnRpZXMoKSwg
aW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZToKICAgICAgICAgLy8gWyAn
b3V0bGluZS1jb2xvcicgfHwgJ291dGxpbmUtc3R5bGUnIHx8ICdvdXRsaW5lLXdpZHRoJyBdIHwg
aW5oZXJpdAotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBvdXRsaW5lTG9u
Z2hhbmQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJ
ZCwgb3V0bGluZVByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyQ29sb3I6CiAgICAgICAgIC8vIDxjb2xvcj57MSw0fSB8IGluaGVyaXQKLSAgICAgICAg
cmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIGJvcmRlckNvbG9yTG9uZ2hhbmQoKS5wcm9wZXJ0
aWVzKCksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBi
b3JkZXJDb2xvclByb3BlcnRpZXMoKS5wcm9wZXJ0aWVzKCksIGltcG9ydGFudCk7CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoOgogICAgICAgICAvLyA8Ym9yZGVyLXdpZHRoPnsxLDR9
IHwgaW5oZXJpdAotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgYm9yZGVyV2lk
dGhMb25naGFuZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHBh
cnNlNFZhbHVlcyhwcm9wSWQsIGJvcmRlcldpZHRoUHJvcGVydGllcygpLnByb3BlcnRpZXMoKSwg
aW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGU6CiAgICAgICAgIC8v
IDxib3JkZXItc3R5bGU+ezEsNH0gfCBpbmhlcml0Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1
ZXMocHJvcElkLCBib3JkZXJTdHlsZUxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQp
OworICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgYm9yZGVyU3R5bGVQcm9wZXJ0
aWVzKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJn
aW46CiAgICAgICAgIC8vIDxtYXJnaW4td2lkdGg+ezEsNH0gfCBpbmhlcml0Ci0gICAgICAgIHJl
dHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBtYXJnaW5Mb25naGFuZCgpLnByb3BlcnRpZXMoKSwg
aW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIG1hcmdpblBy
b3BlcnRpZXMoKS5wcm9wZXJ0aWVzKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVBhZGRpbmc6CiAgICAgICAgIC8vIDxwYWRkaW5nLXdpZHRoPnsxLDR9IHwgaW5oZXJpdAotICAg
ICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgcGFkZGluZ0xvbmdoYW5kKCkucHJvcGVy
dGllcygpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwg
cGFkZGluZ1Byb3BlcnRpZXMoKS5wcm9wZXJ0aWVzKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEZsZXhGbG93OgotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQo
cHJvcElkLCB3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kKCksIGltcG9ydGFudCk7CisgICAgICAgIHJl
dHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdEZsZXhGbG93UHJvcGVydGllcygpLCBp
bXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OgogICAgICAgICAvLyBbIFsgJ2Zv
bnQtc3R5bGUnIHx8ICdmb250LXZhcmlhbnQnIHx8ICdmb250LXdlaWdodCcgXT8gJ2ZvbnQtc2l6
ZScgWyAvICdsaW5lLWhlaWdodCcgXT8KICAgICAgICAgLy8gJ2ZvbnQtZmFtaWx5JyBdIHwgY2Fw
dGlvbiB8IGljb24gfCBtZW51IHwgbWVzc2FnZS1ib3ggfCBzbWFsbC1jYXB0aW9uIHwgc3RhdHVz
LWJhciB8IGluaGVyaXQKQEAgLTIzNDYsMTMgKzIzNDUsMTMgQEAgYm9vbCBDU1NQYXJzZXI6OnBh
cnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICByZXR1cm4g
cGFyc2VGb250KGltcG9ydGFudCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlMaXN0U3R5bGU6Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGxpc3RT
dHlsZUxvbmdoYW5kKCksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFu
ZChwcm9wSWQsIGxpc3RTdHlsZVByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uczoKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHBy
b3BJZCwgd2Via2l0Q29sdW1uc0xvbmdoYW5kKCksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVy
biBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdENvbHVtbnNQcm9wZXJ0aWVzKCksIGltcG9y
dGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGU6Ci0gICAgICAgIHJl
dHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZCgpLCBp
bXBvcnRhbnQpOworICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRD
b2x1bW5SdWxlUHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0U3Ryb2tlOgotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3
ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHBh
cnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0VGV4dFN0cm9rZVByb3BlcnRpZXMoKSwgaW1wb3J0
YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uOgogICAgICAgICByZXR1
cm4gcGFyc2VBbmltYXRpb25TaG9ydGhhbmQoaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNpdGlvbjoKQEAgLTIzNjgsNyArMjM2Nyw3IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgLy8gQ1NTIFRleHQgTGF5b3V0IE1vZHVsZSBMZXZlbCAzOiBWZXJ0aWNhbCB3
cml0aW5nIHN1cHBvcnQKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzOgot
ICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRUZXh0RW1waGFzaXNM
b25naGFuZCgpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJv
cElkLCB3ZWJraXRUZXh0RW1waGFzaXNQcm9wZXJ0aWVzKCksIGltcG9ydGFudCk7CiAKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGU6CiAgICAgICAgIHJldHVybiBw
YXJzZVRleHRFbXBoYXNpc1N0eWxlKGltcG9ydGFudCk7CkBAIC0yNDExLDcgKzI0MTAsNyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8
IEZOb25OZWcpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdy
YXA6Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdFdyYXBMb25n
aGFuZCgpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElk
LCB3ZWJraXRXcmFwUHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21TdHlsZToKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZToKQEAgLTI1NTEsNyArMjU1MCw3
IEBAIHN0YXRpYyBib29sIHBhcnNlQmFja2dyb3VuZENsaXAoQ1NTUGFyc2VyVmFsdWUqIHBhcnNl
clZhbHVlLCBSZWZQdHI8Q1NTVmFsdWU+JiBjCiAKIGNvbnN0IGludCBjTWF4RmlsbFByb3BlcnRp
ZXMgPSA5OwogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VGaWxsU2hvcnRoYW5kKGludCBwcm9wSWQs
IGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50
KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlRmlsbFNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBD
U1NQcm9wZXJ0eUlEKiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCBpbXBvcnRh
bnQpCiB7CiAgICAgQVNTRVJUKG51bVByb3BlcnRpZXMgPD0gY01heEZpbGxQcm9wZXJ0aWVzKTsK
ICAgICBpZiAobnVtUHJvcGVydGllcyA+IGNNYXhGaWxsUHJvcGVydGllcykKQEAgLTI2OTYsNyAr
MjY5NSw3IEBAIHZvaWQgQ1NTUGFyc2VyOjphZGRBbmltYXRpb25WYWx1ZShSZWZQdHI8Q1NTVmFs
dWU+JiBsdmFsLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiByCiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZUFuaW1hdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKIHsKLSAgICBjb25zdCB1bnNpZ25l
ZCBudW1Qcm9wZXJ0aWVzID0gd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQoKS5sZW5ndGgoKTsKKyAg
ICBjb25zdCB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzID0gd2Via2l0QW5pbWF0aW9uUHJvcGVydGll
cygpLmxlbmd0aCgpOwogICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uKTsKIAogICAgIGJvb2wgcGFyc2VkUHJvcGVydHlbXSA9IHsgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UgfTsKQEAgLTI3MjMsNyAr
MjcyMiw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblNob3J0aGFuZChib29sIGlt
cG9ydGFudCkKICAgICAgICAgZm9yIChpID0gaW5pdGlhbFBhcnNlZFByb3BlcnR5SW5kZXg7ICFm
b3VuZCAmJiBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CiAgICAgICAgICAgICBpZiAoIXBhcnNl
ZFByb3BlcnR5W2ldKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWw7Ci0g
ICAgICAgICAgICAgICAgaWYgKHBhcnNlQW5pbWF0aW9uUHJvcGVydHkod2Via2l0QW5pbWF0aW9u
TG9uZ2hhbmQoKS5wcm9wZXJ0aWVzKClbaV0sIHZhbCkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
cGFyc2VBbmltYXRpb25Qcm9wZXJ0eSh3ZWJraXRBbmltYXRpb25Qcm9wZXJ0aWVzKCkucHJvcGVy
dGllcygpW2ldLCB2YWwpKSB7CiAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFByb3BlcnR5W2ld
ID0gZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBpbml0aWFsUGFyc2VkUHJvcGVy
dHlJbmRleCA9IDE7CiAgICAgICAgICAgICAgICAgICAgIGFkZEFuaW1hdGlvblZhbHVlKHZhbHVl
c1tpXSwgdmFsLnJlbGVhc2UoKSk7CkBAIC0yNzQ1LDE0ICsyNzQ0LDE0IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZUFuaW1hdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKIAogICAgIC8vIE5v
dyBhZGQgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHdlIGZvdW5kLgogICAgIGZvciAoaSA9IDA7IGkg
PCBudW1Qcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGFkZFByb3BlcnR5KHdlYmtpdEFuaW1hdGlv
bkxvbmdoYW5kKCkucHJvcGVydGllcygpW2ldLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRh
bnQpOworICAgICAgICBhZGRQcm9wZXJ0eSh3ZWJraXRBbmltYXRpb25Qcm9wZXJ0aWVzKCkucHJv
cGVydGllcygpW2ldLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQo
Ym9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgY29uc3QgdW5zaWduZWQgbnVtUHJvcGVydGllcyA9IHdl
YmtpdFRyYW5zaXRpb25Mb25naGFuZCgpLmxlbmd0aCgpOworICAgIGNvbnN0IHVuc2lnbmVkIG51
bVByb3BlcnRpZXMgPSB3ZWJraXRUcmFuc2l0aW9uUHJvcGVydGllcygpLmxlbmd0aCgpOwogCiAg
ICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9u
KTsKIApAQCAtMjc3OCw3ICsyNzc3LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNpdGlv
blNob3J0aGFuZChib29sIGltcG9ydGFudCkKICAgICAgICAgZm9yIChpID0gMDsgIWZvdW5kICYm
IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKICAgICAgICAgICAgIGlmICghcGFyc2VkUHJvcGVy
dHlbaV0pIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDsKLSAgICAgICAg
ICAgICAgICBpZiAocGFyc2VBbmltYXRpb25Qcm9wZXJ0eSh3ZWJraXRUcmFuc2l0aW9uTG9uZ2hh
bmQoKS5wcm9wZXJ0aWVzKClbaV0sIHZhbCkpIHsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VB
bmltYXRpb25Qcm9wZXJ0eSh3ZWJraXRUcmFuc2l0aW9uUHJvcGVydGllcygpLnByb3BlcnRpZXMo
KVtpXSwgdmFsKSkgewogICAgICAgICAgICAgICAgICAgICBwYXJzZWRQcm9wZXJ0eVtpXSA9IGZv
dW5kID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYWRkQW5pbWF0aW9uVmFsdWUodmFsdWVz
W2ldLCB2YWwucmVsZWFzZSgpKTsKICAgICAgICAgICAgICAgICB9CkBAIC0yNzk5LDEyICsyNzk4
LDEyIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQoYm9vbCBpbXBv
cnRhbnQpCiAKICAgICAvLyBOb3cgYWRkIGFsbCBvZiB0aGUgcHJvcGVydGllcyB3ZSBmb3VuZC4K
ICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKQotICAgICAgICBhZGRQcm9w
ZXJ0eSh3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKS5wcm9wZXJ0aWVzKClbaV0sIHZhbHVlc1tp
XS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KHdlYmtpdFRyYW5z
aXRpb25Qcm9wZXJ0aWVzKCkucHJvcGVydGllcygpW2ldLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBp
bXBvcnRhbnQpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFu
ZCwgYm9vbCBpbXBvcnRhbnQpCitib29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHBy
b3BJZCwgY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgbG9uZ2hhbmRzLCBib29sIGltcG9ydGFu
dCkKIHsKICAgICAvLyBXZSB0cnkgdG8gbWF0Y2ggYXMgbWFueSBwcm9wZXJ0aWVzIGFzIHBvc3Np
YmxlCiAgICAgLy8gV2Ugc2V0IHVwIGFuIGFycmF5IG9mIGJvb2xlYW5zIHRvIG1hcmsgd2hpY2gg
cHJvcGVydHkgaGFzIGJlZW4gZm91bmQsCkBAIC0yODE3LDggKzI4MTYsOCBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlMb25naGFu
ZCYgbG9uZ2hhbmQsCiAKICAgICB3aGlsZSAobV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkgewogICAg
ICAgICBmb3VuZCA9IGZhbHNlOwotICAgICAgICBmb3IgKHVuc2lnbmVkIHByb3BJbmRleCA9IDA7
ICFmb3VuZCAmJiBwcm9wSW5kZXggPCBsb25naGFuZC5sZW5ndGgoKTsgKytwcm9wSW5kZXgpIHsK
LSAgICAgICAgICAgIGlmICghcHJvcGVydHlGb3VuZFtwcm9wSW5kZXhdICYmIHBhcnNlVmFsdWUo
bG9uZ2hhbmQucHJvcGVydGllcygpW3Byb3BJbmRleF0sIGltcG9ydGFudCkpIHsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBwcm9wSW5kZXggPSAwOyAhZm91bmQgJiYgcHJvcEluZGV4IDwgbG9uZ2hh
bmRzLmxlbmd0aCgpOyArK3Byb3BJbmRleCkgeworICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eUZv
dW5kW3Byb3BJbmRleF0gJiYgcGFyc2VWYWx1ZShsb25naGFuZHMucHJvcGVydGllcygpW3Byb3BJ
bmRleF0sIGltcG9ydGFudCkpIHsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlGb3VuZFtw
cm9wSW5kZXhdID0gZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVz
UGFyc2VkKys7CiAgICAgICAgICAgICB9CkBAIC0yODMwLDI4ICsyODI5LDI4IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiBsb25naGFuZCwKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBp
ZiAocHJvcGVydGllc1BhcnNlZCA9PSBsb25naGFuZC5sZW5ndGgoKSkKKyAgICBpZiAocHJvcGVy
dGllc1BhcnNlZCA9PSBsb25naGFuZHMubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgLy8gRmlsbCBpbiBhbnkgcmVtYWluaW5nIHByb3BlcnRpZXMgd2l0aCB0aGUgaW5pdGlh
bCB2YWx1ZS4KICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVydHlJ
bXBsaWNpdCk7Ci0gICAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCogY29uc3QqIGNvbnN0IGxv
bmdoYW5kc0ZvckluaXRpYWxpemF0aW9uID0gbG9uZ2hhbmQubG9uZ2hhbmRzRm9ySW5pdGlhbGl6
YXRpb24oKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9uZ2hhbmQubGVuZ3RoKCk7
ICsraSkgeworICAgIGNvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMqIGNvbnN0KiBjb25zdCBsb25n
aGFuZHNGb3JJbml0aWFsaXphdGlvbiA9IGxvbmdoYW5kcy5sb25naGFuZHNGb3JJbml0aWFsaXph
dGlvbigpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsb25naGFuZHMubGVuZ3RoKCk7
ICsraSkgewogICAgICAgICBpZiAocHJvcGVydHlGb3VuZFtpXSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgIGlmIChsb25naGFuZHNGb3JJbml0aWFsaXphdGlvbikgewotICAgICAg
ICAgICAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgaW5pdExvbmdoYW5kID0gKihsb25naGFu
ZHNGb3JJbml0aWFsaXphdGlvbltpXSk7CisgICAgICAgICAgICBjb25zdCBTaG9ydGhhbmRQcm9w
ZXJ0aWVzJiBpbml0TG9uZ2hhbmQgPSAqKGxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uW2ldKTsK
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgcHJvcEluZGV4ID0gMDsgcHJvcEluZGV4IDwgaW5p
dExvbmdoYW5kLmxlbmd0aCgpOyArK3Byb3BJbmRleCkKICAgICAgICAgICAgICAgICBhZGRQcm9w
ZXJ0eShpbml0TG9uZ2hhbmQucHJvcGVydGllcygpW3Byb3BJbmRleF0sIGNzc1ZhbHVlUG9vbCgp
LT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwogICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KGxvbmdoYW5kLnByb3BlcnRpZXMoKVtpXSwgY3Nz
VmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCksIGltcG9ydGFudCk7Cisg
ICAgICAgICAgICBhZGRQcm9wZXJ0eShsb25naGFuZHMucHJvcGVydGllcygpW2ldLCBjc3NWYWx1
ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSwgaW1wb3J0YW50KTsKICAgICB9
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyhp
bnQgcHJvcElkLCBjb25zdCBpbnQgKnByb3BlcnRpZXMsICBib29sIGltcG9ydGFudCkKK2Jvb2wg
Q1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlJRCAq
cHJvcGVydGllcywgIGJvb2wgaW1wb3J0YW50KQogewogICAgIC8qIEZyb20gdGhlIENTUyAyIHNw
ZWNzLCA4LjMKICAgICAgKiBJZiB0aGVyZSBpcyBvbmx5IG9uZSB2YWx1ZSwgaXQgYXBwbGllcyB0
byBhbGwgc2lkZXMuIElmIHRoZXJlIGFyZSB0d28gdmFsdWVzLCB0aGUgdG9wIGFuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5oCmluZGV4IGMyNDlhODJhOWFkNzUzMGQ3YjUwYjk1NmM2NmZmMGVkNjlhYzVm
ZWMuLjg0N2ViZTU4ZTIxOTI1MTM5MGZlNTljNDM0ODZjYWI1OGI4MjNlM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgi
CiAjaW5jbHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIK
KyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlTb3Vy
Y2VEYXRhLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDb2xvci5oIgpA
QCAtNDYsNyArNDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0JvcmRlcklt
YWdlU2xpY2VWYWx1ZTsKIGNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOwotY2xhc3MgQ1NTUHJvcGVy
dHlMb25naGFuZDsKIGNsYXNzIENTU1ZhbHVlUG9vbDsKIGNsYXNzIENTU1Byb3BlcnR5OwogY2xh
c3MgQ1NTUnVsZTsKQEAgLTU4LDYgKzU4LDcgQEAgY2xhc3MgQ1NTV3JhcFNoYXBlOwogY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBNZWRpYVF1ZXJ5RXhwOwogY2xhc3MgTWVkaWFRdWVyeVNldDsKK2Ns
YXNzIFNob3J0aGFuZFByb3BlcnRpZXM7CiBjbGFzcyBTdHlsZVByb3BlcnR5U2V0OwogY2xhc3Mg
U3R5bGVLZXlmcmFtZTsKIGNsYXNzIFN0eWxlZEVsZW1lbnQ7CkBAIC04OSw4ICs5MCw4IEBAIHB1
YmxpYzoKICAgICBib29sIGhhc1Byb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiAhbV9wYXJzZWRQ
cm9wZXJ0aWVzLmlzRW1wdHkoKTsgfQogCiAgICAgYm9vbCBwYXJzZVZhbHVlKGludCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KTsKLSAgICBib29sIHBhcnNlU2hvcnRoYW5kKGludCwgY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYsIGJvb2wpOwotICAgIGJvb2wgcGFyc2U0VmFsdWVzKGludCBwcm9w
SWQsIGNvbnN0IGludCogcHJvcGVydGllcywgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgcGFy
c2VTaG9ydGhhbmQoaW50LCBjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiwgYm9vbCk7CisgICAg
Ym9vbCBwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlJRCogcHJvcGVy
dGllcywgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VDb250ZW50KGludCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlUXVvdGVzKGludCBwcm9wSWQsIGJvb2wg
aW1wb3J0YW50KTsKIApAQCAtMTEwLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBwYXJzZUZpbGxTaXplKGludCBwcm9wSWQsIGJvb2wgJmFsbG93Q29tbWEpOwog
CiAgICAgYm9vbCBwYXJzZUZpbGxQcm9wZXJ0eShpbnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGlu
dCYgcHJvcElkMiwgUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKLSAgICBi
b29sIHBhcnNlRmlsbFNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMs
IGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBwYXJzZUZpbGxT
aG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlJRCogcHJvcGVydGllcywgaW50
IG51bVByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KTsKIAogICAgIHZvaWQgYWRkRmlsbFZhbHVl
KFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJ2YWwpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAppbmRleCBhZGZhNmVjZDk0YzMxMjM1MTQxMzA2MzFl
Yjc3NmM1N2Q1NWFiMzMwLi4xMWUxZWQ2ODc4ZTFkMDcwY2FmODBhOTk5ZDQ1NjVkYTJhY2RjZTE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKQEAgLTUxLDI2ICs1MSwyNiBAQCB2b2lk
IENTU1Byb3BlcnR5Ojp3cmFwVmFsdWVJbkNvbW1hU2VwYXJhdGVkTGlzdCgpCiBlbnVtIExvZ2lj
YWxCb3hTaWRlIHsgQmVmb3JlU2lkZSwgRW5kU2lkZSwgQWZ0ZXJTaWRlLCBTdGFydFNpZGUgfTsK
IGVudW0gUGh5c2ljYWxCb3hTaWRlIHsgVG9wU2lkZSwgUmlnaHRTaWRlLCBCb3R0b21TaWRlLCBM
ZWZ0U2lkZSB9OwogCi1zdGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lk
ZSBsb2dpY2FsU2lkZSwgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQpCitzdGF0
aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24s
IFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZSBsb2dpY2FsU2lkZSwgY29u
c3QgU2hvcnRoYW5kUHJvcGVydGllcyYgc2hvcnRoYW5kKQogewogICAgIGlmIChkaXJlY3Rpb24g
PT0gTFRSKSB7CiAgICAgICAgIGlmICh3cml0aW5nTW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdN
b2RlKSB7CiAgICAgICAgICAgICAvLyBUaGUgY29tbW9uIGNhc2UuIFRoZSBsb2dpY2FsIGFuZCBw
aHlzaWNhbCBib3ggc2lkZXMgbWF0Y2guCiAgICAgICAgICAgICAvLyBMZWZ0ID0gU3RhcnQsIFJp
Z2h0ID0gRW5kLCBCZWZvcmUgPSBUb3AsIEFmdGVyID0gQm90dG9tCi0gICAgICAgICAgICByZXR1
cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW2xvZ2ljYWxTaWRlXTsKKyAgICAgICAgICAgIHJldHVy
biBzaG9ydGhhbmQucHJvcGVydGllcygpW2xvZ2ljYWxTaWRlXTsKICAgICAgICAgfQogCiAgICAg
ICAgIGlmICh3cml0aW5nTW9kZSA9PSBCb3R0b21Ub1RvcFdyaXRpbmdNb2RlKSB7CiAgICAgICAg
ICAgICAvLyBTdGFydCA9IExlZnQsIEVuZCA9IFJpZ2h0LCBCZWZvcmUgPSBCb3R0b20sIEFmdGVy
ID0gVG9wLgogICAgICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewogICAgICAgICAgICAg
Y2FzZSBTdGFydFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRp
ZXMoKVtMZWZ0U2lkZV07CisgICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0
aWVzKClbTGVmdFNpZGVdOwogICAgICAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAgICAg
ICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwogICAgICAgICAg
ICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9w
ZXJ0aWVzKClbQm90dG9tU2lkZV07CisgICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbQm90dG9tU2lkZV07CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIApAQCAtNzgsMjYgKzc4LDI2IEBAIHN0YXRpYyBpbnQgcmVzb2x2ZVRv
UGh5c2ljYWxQcm9wZXJ0eShUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgV3JpdGluZ01vZGUgd3Jp
dGluCiAgICAgICAgICAgICAvLyBTdGFydCA9IFRvcCwgRW5kID0gQm90dG9tLCBCZWZvcmUgPSBM
ZWZ0LCBBZnRlciA9IFJpZ2h0LgogICAgICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewog
ICAgICAgICAgICAgY2FzZSBTdGFydFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdo
YW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRo
YW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKICAgICAgICAgICAgIGNhc2UgRW5kU2lkZToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwor
ICAgICAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVd
OwogICAgICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgICAgIHJldHVybiBs
b25naGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOworICAgICAgICAgICAgICAgIHJldHVybiBz
aG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwor
ICAgICAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLyBTdGFydCA9IFRvcCwgRW5k
ID0gQm90dG9tLCBCZWZvcmUgPSBSaWdodCwgQWZ0ZXIgPSBMZWZ0CiAgICAgICAgIHN3aXRjaCAo
bG9naWNhbFNpZGUpIHsKICAgICAgICAgY2FzZSBTdGFydFNpZGU6Ci0gICAgICAgICAgICByZXR1
cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIHNo
b3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CiAgICAgICAgIGNhc2UgRW5kU2lkZToKLSAg
ICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07CisgICAg
ICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKICAgICAg
ICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRp
ZXMoKVtSaWdodFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVz
KClbUmlnaHRTaWRlXTsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBsb25n
aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFu
ZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDUsMTMg
KzEwNSwxMyBAQCBzdGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbgogICAgICAgICAvLyBTdGFydCA9IFJp
Z2h0LCBFbmQgPSBMZWZ0LCBCZWZvcmUgPSBUb3AsIEFmdGVyID0gQm90dG9tCiAgICAgICAgIHN3
aXRjaCAobG9naWNhbFNpZGUpIHsKICAgICAgICAgY2FzZSBTdGFydFNpZGU6Ci0gICAgICAgICAg
ICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07CisgICAgICAgICAgICBy
ZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwogICAgICAgICBjYXNlIEVu
ZFNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0xlZnRTaWRl
XTsKKyAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRTaWRlXTsK
ICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnBy
b3BlcnRpZXMoKVtUb3BTaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVy
dGllcygpW1RvcFNpZGVdOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGxv
bmdoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBzaG9y
dGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwogICAgICAgICB9CiAgICAgfQogCkBAIC0x
MTksMTMgKzExOSwxMyBAQCBzdGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbgogICAgICAgICAvLyBTdGFy
dCA9IFJpZ2h0LCBFbmQgPSBMZWZ0LCBCZWZvcmUgPSBCb3R0b20sIEFmdGVyID0gVG9wCiAgICAg
ICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKICAgICAgICAgY2FzZSBTdGFydFNpZGU6Ci0gICAg
ICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07CisgICAgICAg
ICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwogICAgICAgICBj
YXNlIEVuZFNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0xl
ZnRTaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0xlZnRT
aWRlXTsKICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgcmV0dXJuIGxvbmdo
YW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBzaG9ydGhh
bmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKKyAgICAgICAgICAgIHJl
dHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0xMzMsNDIgKzEzMyw0MiBAQCBzdGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVy
dHkoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbgogICAgICAgICAv
LyBTdGFydCA9IEJvdHRvbSwgRW5kID0gVG9wLCBCZWZvcmUgPSBMZWZ0LCBBZnRlciA9IFJpZ2h0
CiAgICAgICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKICAgICAgICAgY2FzZSBTdGFydFNpZGU6
Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwor
ICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07CiAg
ICAgICAgIGNhc2UgRW5kU2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0
aWVzKClbVG9wU2lkZV07CisgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMo
KVtUb3BTaWRlXTsKICAgICAgICAgY2FzZSBCZWZvcmVTaWRlOgotICAgICAgICAgICAgcmV0dXJu
IGxvbmdoYW5kLnByb3BlcnRpZXMoKVtMZWZ0U2lkZV07CisgICAgICAgICAgICByZXR1cm4gc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVtMZWZ0U2lkZV07CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07CisgICAgICAgICAg
ICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwogICAgICAgICB9CiAg
ICAgfQogCiAgICAgLy8gU3RhcnQgPSBCb3R0b20sIEVuZCA9IFRvcCwgQmVmb3JlID0gUmlnaHQs
IEFmdGVyID0gTGVmdAogICAgIHN3aXRjaCAobG9naWNhbFNpZGUpIHsKICAgICBjYXNlIFN0YXJ0
U2lkZToKLSAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsK
KyAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07CiAgICAg
Y2FzZSBFbmRTaWRlOgotICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1RvcFNp
ZGVdOworICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKICAg
ICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClb
UmlnaHRTaWRlXTsKKyAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRT
aWRlXTsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygp
W0xlZnRTaWRlXTsKKyAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNp
ZGVdOwogICAgIH0KIH0KIAogZW51bSBMb2dpY2FsRXh0ZW50IHsgTG9naWNhbFdpZHRoLCBMb2dp
Y2FsSGVpZ2h0IH07CiAKLXN0YXRpYyBpbnQgcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShXcml0
aW5nTW9kZSB3cml0aW5nTW9kZSwgTG9naWNhbEV4dGVudCBsb2dpY2FsU2lkZSwgY29uc3QgaW50
KiBwcm9wZXJ0aWVzKQorc3RhdGljIGludCByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KFdyaXRp
bmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2FsRXh0ZW50IGxvZ2ljYWxTaWRlLCBjb25zdCBDU1NQ
cm9wZXJ0eUlEKiBwcm9wZXJ0aWVzKQogewogICAgIGlmICh3cml0aW5nTW9kZSA9PSBUb3BUb0Jv
dHRvbVdyaXRpbmdNb2RlIHx8IHdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUp
CiAgICAgICAgIHJldHVybiBwcm9wZXJ0aWVzW2xvZ2ljYWxTaWRlXTsKICAgICByZXR1cm4gbG9n
aWNhbFNpZGUgPT0gTG9naWNhbFdpZHRoID8gcHJvcGVydGllc1sxXSA6IHByb3BlcnRpZXNbMF07
CiB9CiAKLXN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJEaXJlY3Rpb25z
KCkKK3N0YXRpYyBjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBib3JkZXJEaXJlY3Rpb25zKCkK
IHsKLSAgICBzdGF0aWMgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5Qm9y
ZGVyVG9wLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0LCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSwg
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0IH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9w
ZXJ0eUxvbmdoYW5kLCBib3JkZXJEaXJlY3Rpb25zLCAocHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSChwcm9wZXJ0aWVzKSkpOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3Bl
cnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0
LCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0IH07CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTaG9ydGhhbmRQcm9wZXJ0aWVzLCBib3JkZXJEaXJlY3Rpb25z
LCAocHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVzKSkpOwogICAgIHJldHVy
biBib3JkZXJEaXJlY3Rpb25zOwogfQogCkBAIC0xNzYsMjEgKzE3NiwyMSBAQCBpbnQgQ1NTUHJv
cGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBUZXh0
RGlyZWN0aW9uIGRpcgogewogICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4o
cHJvcGVydHlJRCkpIHsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kOgotICAg
ICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdN
b2RlLCBFbmRTaWRlLCBtYXJnaW5Mb25naGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVU
b1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgRW5kU2lkZSwgbWFyZ2lu
UHJvcGVydGllcygpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luU3RhcnQ6Ci0g
ICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGlu
Z01vZGUsIFN0YXJ0U2lkZSwgbWFyZ2luTG9uZ2hhbmQoKSk7CisgICAgICAgIHJldHVybiByZXNv
bHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIFN0YXJ0U2lkZSwg
bWFyZ2luUHJvcGVydGllcygpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVm
b3JlOgotICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24s
IHdyaXRpbmdNb2RlLCBCZWZvcmVTaWRlLCBtYXJnaW5Mb25naGFuZCgpKTsKKyAgICAgICAgcmV0
dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQmVm
b3JlU2lkZSwgbWFyZ2luUHJvcGVydGllcygpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQWZ0ZXI6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRp
cmVjdGlvbiwgd3JpdGluZ01vZGUsIEFmdGVyU2lkZSwgbWFyZ2luTG9uZ2hhbmQoKSk7CisgICAg
ICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01v
ZGUsIEFmdGVyU2lkZSwgbWFyZ2luUHJvcGVydGllcygpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0UGFkZGluZ0VuZDoKLSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVy
dHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgRW5kU2lkZSwgcGFkZGluZ0xvbmdoYW5kKCkpOwor
ICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRp
bmdNb2RlLCBFbmRTaWRlLCBwYWRkaW5nUHJvcGVydGllcygpKTsKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0UGFkZGluZ1N0YXJ0OgotICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQ
cm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBTdGFydFNpZGUsIHBhZGRpbmdMb25naGFu
ZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9u
LCB3cml0aW5nTW9kZSwgU3RhcnRTaWRlLCBwYWRkaW5nUHJvcGVydGllcygpKTsKICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0JlZm9yZToKLSAgICAgICAgcmV0dXJuIHJlc29sdmVU
b1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQmVmb3JlU2lkZSwgcGFk
ZGluZ0xvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0
eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBCZWZvcmVTaWRlLCBwYWRkaW5nUHJvcGVydGllcygp
KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0FmdGVyOgotICAgICAgICByZXR1
cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBBZnRl
clNpZGUsIHBhZGRpbmdMb25naGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNp
Y2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQWZ0ZXJTaWRlLCBwYWRkaW5nUHJv
cGVydGllcygpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kOgogICAgICAg
ICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2Rl
LCBFbmRTaWRlLCBib3JkZXJEaXJlY3Rpb25zKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJTdGFydDoKQEAgLTIwMCw1MSArMjAwLDUxIEBAIGludCBDU1NQcm9wZXJ0eTo6cmVz
b2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIFRleHREaXJlY3Rpb24g
ZGlyCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyOgogICAgICAgICByZXR1
cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBBZnRl
clNpZGUsIGJvcmRlckRpcmVjdGlvbnMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckVuZENvbG9yOgotICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShk
aXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBFbmRTaWRlLCBib3JkZXJDb2xvckxvbmdoYW5kKCkpOwor
ICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRp
bmdNb2RlLCBFbmRTaWRlLCBib3JkZXJDb2xvclByb3BlcnRpZXMoKSk7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3I6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9Q
aHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIFN0YXJ0U2lkZSwgYm9yZGVy
Q29sb3JMb25naGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVy
dHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgU3RhcnRTaWRlLCBib3JkZXJDb2xvclByb3BlcnRp
ZXMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yOgotICAg
ICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdN
b2RlLCBCZWZvcmVTaWRlLCBib3JkZXJDb2xvckxvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4g
cmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBCZWZvcmVT
aWRlLCBib3JkZXJDb2xvclByb3BlcnRpZXMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckFmdGVyQ29sb3I6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3Bl
cnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEFmdGVyU2lkZSwgYm9yZGVyQ29sb3JMb25naGFu
ZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9u
LCB3cml0aW5nTW9kZSwgQWZ0ZXJTaWRlLCBib3JkZXJDb2xvclByb3BlcnRpZXMoKSk7CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlOgotICAgICAgICByZXR1cm4gcmVz
b2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBFbmRTaWRlLCBi
b3JkZXJTdHlsZUxvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQ
cm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBFbmRTaWRlLCBib3JkZXJTdHlsZVByb3Bl
cnRpZXMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGU6Ci0g
ICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGlu
Z01vZGUsIFN0YXJ0U2lkZSwgYm9yZGVyU3R5bGVMb25naGFuZCgpKTsKKyAgICAgICAgcmV0dXJu
IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgU3RhcnRT
aWRlLCBib3JkZXJTdHlsZVByb3BlcnRpZXMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckJlZm9yZVN0eWxlOgotICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9w
ZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBCZWZvcmVTaWRlLCBib3JkZXJTdHlsZUxvbmdo
YW5kKCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rp
b24sIHdyaXRpbmdNb2RlLCBCZWZvcmVTaWRlLCBib3JkZXJTdHlsZVByb3BlcnRpZXMoKSk7CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6Ci0gICAgICAgIHJldHVy
biByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEFmdGVy
U2lkZSwgYm9yZGVyU3R5bGVMb25naGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1Bo
eXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQWZ0ZXJTaWRlLCBib3JkZXJT
dHlsZVByb3BlcnRpZXMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdp
ZHRoOgotICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24s
IHdyaXRpbmdNb2RlLCBFbmRTaWRlLCBib3JkZXJXaWR0aExvbmdoYW5kKCkpOworICAgICAgICBy
ZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBF
bmRTaWRlLCBib3JkZXJXaWR0aFByb3BlcnRpZXMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclN0YXJ0V2lkdGg6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFBy
b3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIFN0YXJ0U2lkZSwgYm9yZGVyV2lkdGhMb25n
aGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0
aW9uLCB3cml0aW5nTW9kZSwgU3RhcnRTaWRlLCBib3JkZXJXaWR0aFByb3BlcnRpZXMoKSk7CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoOgotICAgICAgICByZXR1
cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBCZWZv
cmVTaWRlLCBib3JkZXJXaWR0aExvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRv
UGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBCZWZvcmVTaWRlLCBib3Jk
ZXJXaWR0aFByb3BlcnRpZXMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFm
dGVyV2lkdGg6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVj
dGlvbiwgd3JpdGluZ01vZGUsIEFmdGVyU2lkZSwgYm9yZGVyV2lkdGhMb25naGFuZCgpKTsKKyAg
ICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5n
TW9kZSwgQWZ0ZXJTaWRlLCBib3JkZXJXaWR0aFByb3BlcnRpZXMoKSk7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aDogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGll
c1syXSA9IHsgQ1NTUHJvcGVydHlXaWR0aCwgQ1NTUHJvcGVydHlIZWlnaHQgfTsKKyAgICAgICAg
Y29uc3QgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdpZHRoLCBD
U1NQcm9wZXJ0eUhlaWdodCB9OwogICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9w
ZXJ0eSh3cml0aW5nTW9kZSwgTG9naWNhbFdpZHRoLCBwcm9wZXJ0aWVzKTsKICAgICB9CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQ6IHsKLSAgICAgICAgY29uc3QgaW50
IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2lkdGgsIENTU1Byb3BlcnR5SGVpZ2h0IH07
CisgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVy
dHlXaWR0aCwgQ1NTUHJvcGVydHlIZWlnaHQgfTsKICAgICAgICAgcmV0dXJuIHJlc29sdmVUb1Bo
eXNpY2FsUHJvcGVydHkod3JpdGluZ01vZGUsIExvZ2ljYWxIZWlnaHQsIHByb3BlcnRpZXMpOwog
ICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoOiB7Ci0gICAg
ICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eU1pbldpZHRoLCBDU1NQ
cm9wZXJ0eU1pbkhlaWdodCB9OworICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRp
ZXNbMl0gPSB7IENTU1Byb3BlcnR5TWluV2lkdGgsIENTU1Byb3BlcnR5TWluSGVpZ2h0IH07CiAg
ICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KHdyaXRpbmdNb2RlLCBMb2dp
Y2FsV2lkdGgsIHByb3BlcnRpZXMpOwogICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWluTG9naWNhbEhlaWdodDogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsg
Q1NTUHJvcGVydHlNaW5XaWR0aCwgQ1NTUHJvcGVydHlNaW5IZWlnaHQgfTsKKyAgICAgICAgY29u
c3QgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eU1pbldpZHRoLCBD
U1NQcm9wZXJ0eU1pbkhlaWdodCB9OwogICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQ
cm9wZXJ0eSh3cml0aW5nTW9kZSwgTG9naWNhbEhlaWdodCwgcHJvcGVydGllcyk7CiAgICAgfQog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsV2lkdGg6IHsKLSAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5TWF4V2lkdGgsIENTU1Byb3BlcnR5
TWF4SGVpZ2h0IH07CisgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1syXSA9
IHsgQ1NTUHJvcGVydHlNYXhXaWR0aCwgQ1NTUHJvcGVydHlNYXhIZWlnaHQgfTsKICAgICAgICAg
cmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkod3JpdGluZ01vZGUsIExvZ2ljYWxXaWR0
aCwgcHJvcGVydGllcyk7CiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dp
Y2FsSGVpZ2h0OiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9w
ZXJ0eU1heFdpZHRoLCBDU1NQcm9wZXJ0eU1heEhlaWdodCB9OworICAgICAgICBjb25zdCBDU1NQ
cm9wZXJ0eUlEIHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5TWF4V2lkdGgsIENTU1Byb3Bl
cnR5TWF4SGVpZ2h0IH07CiAgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5
KHdyaXRpbmdNb2RlLCBMb2dpY2FsSGVpZ2h0LCBwcm9wZXJ0aWVzKTsKICAgICB9CiAgICAgZGVm
YXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAppbmRleCA3
YzEyZDljM2I1OTk2ZThhZjQ0MDgwOGExYjUzZDRiMzgyZWVkZjBhLi4wYjkzNzM4ODlmMDM1OTI2
MTlmYjM2ZTk3NjMzOTgxOWZlMDk4YzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHlMb25naGFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5TG9uZ2hhbmQuY3BwCkBAIC0yMSwxNSArMjEsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJDU1NQcm9wZXJ0eUxvbmdoYW5kLmgiCiAKLSNpbmNsdWRlICJDU1NQcm9wZXJ0
eU5hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIC8vIEZJWE1FOiBBZGQgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSB0byB0aGUg
c2hvcnRoYW5kLgotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3VuZExvbmdoYW5k
KCkKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIGJhY2tncm91bmRQcm9wZXJ0aWVzKCkKIHsK
LSAgICBzdGF0aWMgY29uc3QgaW50IGJhY2tncm91bmRQcm9wZXJ0aWVzW10gPSB7CisgICAgc3Rh
dGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYmFja2dyb3VuZFByb3BlcnRpZXNbXSA9IHsKICAgICAg
ICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgIENTU1Byb3BlcnR5QmFja2dy
b3VuZEltYWdlLAogICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLApAQCAtNDAs
MTYwICszOSwxNjAgQEAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3VuZExvbmdo
YW5kKCkKICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwKICAgICAgICAgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kT3JpZ2luCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENT
U1Byb3BlcnR5TG9uZ2hhbmQsIGJhY2tncm91bmRMb25naGFuZCwgKGJhY2tncm91bmRQcm9wZXJ0
aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJhY2tncm91bmRQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVy
biBiYWNrZ3JvdW5kTG9uZ2hhbmQ7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTaG9ydGhhbmRQ
cm9wZXJ0aWVzLCBiYWNrZ3JvdW5kTG9uZ2hhbmRzLCAoYmFja2dyb3VuZFByb3BlcnRpZXMsIFdU
Rl9BUlJBWV9MRU5HVEgoYmFja2dyb3VuZFByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJhY2tn
cm91bmRMb25naGFuZHM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91
bmRQb3NpdGlvbkxvbmdoYW5kKCkKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIGJhY2tncm91
bmRQb3NpdGlvblByb3BlcnRpZXMoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYmFja2dyb3Vu
ZFBvc2l0aW9uUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgs
IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSB9OwotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQsIChiYWNr
Z3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJhY2tncm91bmRQb3Np
dGlvblByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5k
OworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJhY2tncm91bmRQb3NpdGlvblByb3Bl
cnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvblkgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZFBy
b3BlcnRpZXMsIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kcywgKGJhY2tncm91bmRQb3NpdGlv
blByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYmFja2dyb3VuZFBvc2l0aW9uUHJvcGVydGll
cykpKTsKKyAgICByZXR1cm4gYmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmRzOwogfQogCi1jb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQoKQorY29uc3Qg
U2hvcnRoYW5kUHJvcGVydGllcyYgYmFja2dyb3VuZFJlcGVhdFByb3BlcnRpZXMoKQogewotICAg
IHN0YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFJlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSB9Owot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYmFja2dyb3VuZFJl
cGVhdExvbmdoYW5kLCAoYmFja2dyb3VuZFJlcGVhdFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5H
VEgoYmFja2dyb3VuZFJlcGVhdFByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJhY2tncm91bmRS
ZXBlYXRMb25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBiYWNrZ3JvdW5k
UmVwZWF0UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTaG9y
dGhhbmRQcm9wZXJ0aWVzLCBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmRzLCAoYmFja2dyb3VuZFJl
cGVhdFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYmFja2dyb3VuZFJlcGVhdFByb3BlcnRp
ZXMpKSk7CisgICAgcmV0dXJuIGJhY2tncm91bmRSZXBlYXRMb25naGFuZHM7CiB9CiAKLWNvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckxvbmdoYW5kKCkKK2NvbnN0IFNob3J0aGFuZFBy
b3BlcnRpZXMmIGJvcmRlclByb3BlcnRpZXMoKQogewogICAgIC8vIERvIG5vdCBjaGFuZ2UgdGhl
IG9yZGVyIG9mIHRoZSBmb2xsb3dpbmcgZm91ciBzaG9ydGhhbmRzLCBhbmQga2VlcCB0aGVtIHRv
Z2V0aGVyLgotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyUHJvcGVydGllc1s0XVszXSA9IHsK
KyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJQcm9wZXJ0aWVzWzRdWzNdID0g
ewogICAgICAgICB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVy
VG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGggfSwKICAgICAgICAgeyBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodFdpZHRoIH0sCiAgICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21Db2xvciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21XaWR0aCB9LAogICAgICAgICB7IENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yLCBDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGggfQogICAg
IH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJM
b25naGFuZCwgKGJvcmRlclByb3BlcnRpZXNbMF0sIHNpemVvZihib3JkZXJQcm9wZXJ0aWVzKSAv
IHNpemVvZihib3JkZXJQcm9wZXJ0aWVzWzBdWzBdKSkpOwotICAgIHJldHVybiBib3JkZXJMb25n
aGFuZDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZFByb3BlcnRpZXMsIGJvcmRl
ckxvbmdoYW5kcywgKGJvcmRlclByb3BlcnRpZXNbMF0sIHNpemVvZihib3JkZXJQcm9wZXJ0aWVz
KSAvIHNpemVvZihib3JkZXJQcm9wZXJ0aWVzWzBdWzBdKSkpOworICAgIHJldHVybiBib3JkZXJM
b25naGFuZHM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckFicmlkZ2Vk
TG9uZ2hhbmQoKQorY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgYm9yZGVyQWJyaWRnZWRQcm9w
ZXJ0aWVzKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckFicmlkZ2VkUHJvcGVydGll
c1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBD
U1NQcm9wZXJ0eUJvcmRlckNvbG9yIH07Ci0gICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5TG9u
Z2hhbmQqIHByb3BlcnRpZXNGb3JJbml0aWFsaXphdGlvbltdID0gewotICAgICAgICAmYm9yZGVy
V2lkdGhMb25naGFuZCgpLAotICAgICAgICAmYm9yZGVyU3R5bGVMb25naGFuZCgpLAotICAgICAg
ICAmYm9yZGVyQ29sb3JMb25naGFuZCgpLAorICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlE
IGJvcmRlckFicmlkZ2VkUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBD
U1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yIH07CisgICAgc3Rh
dGljIGNvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMqIHByb3BlcnRpZXNGb3JJbml0aWFsaXphdGlv
bltdID0geworICAgICAgICAmYm9yZGVyV2lkdGhQcm9wZXJ0aWVzKCksCisgICAgICAgICZib3Jk
ZXJTdHlsZVByb3BlcnRpZXMoKSwKKyAgICAgICAgJmJvcmRlckNvbG9yUHJvcGVydGllcygpLAog
ICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3Jk
ZXJBYnJpZGdlZExvbmdoYW5kLAorICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJv
cGVydGllcywgYm9yZGVyQWJyaWRnZWRMb25naGFuZHMsCiAgICAgICAgIChib3JkZXJBYnJpZGdl
ZFByb3BlcnRpZXMsIHByb3BlcnRpZXNGb3JJbml0aWFsaXphdGlvbiwgV1RGX0FSUkFZX0xFTkdU
SChib3JkZXJBYnJpZGdlZFByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlckFicmlkZ2Vk
TG9uZ2hhbmQ7CisgICAgcmV0dXJuIGJvcmRlckFicmlkZ2VkTG9uZ2hhbmRzOwogfQogCi1jb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJCb3R0b21Mb25naGFuZCgpCitjb25zdCBTaG9y
dGhhbmRQcm9wZXJ0aWVzJiBib3JkZXJCb3R0b21Qcm9wZXJ0aWVzKCkKIHsKLSAgICBzdGF0aWMg
Y29uc3QgaW50IGJvcmRlckJvdHRvbVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21Db2xvciB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25n
aGFuZCwgYm9yZGVyQm90dG9tTG9uZ2hhbmQsIChib3JkZXJCb3R0b21Qcm9wZXJ0aWVzLCBXVEZf
QVJSQVlfTEVOR1RIKGJvcmRlckJvdHRvbVByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRl
ckJvdHRvbUxvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckJv
dHRvbVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciB9Owor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJvcGVydGllcywgYm9yZGVyQm90dG9t
TG9uZ2hhbmRzLCAoYm9yZGVyQm90dG9tUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3Jk
ZXJCb3R0b21Qcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJCb3R0b21Mb25naGFuZHM7
CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckNvbG9yTG9uZ2hhbmQoKQor
Y29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgYm9yZGVyQ29sb3JQcm9wZXJ0aWVzKCkKIHsKLSAg
ICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckNvbG9yUHJvcGVydGllc1tdID0geworICAgIHN0YXRp
YyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckNvbG9yUHJvcGVydGllc1tdID0gewogICAgICAg
ICBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0Q29sb3IsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsCiAgICAgICAg
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlckNvbG9yTG9uZ2hhbmQsIChib3JkZXJDb2xv
clByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyQ29sb3JQcm9wZXJ0aWVzKSkpOwot
ICAgIHJldHVybiBib3JkZXJDb2xvckxvbmdoYW5kOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U2hvcnRoYW5kUHJvcGVydGllcywgYm9yZGVyQ29sb3JMb25naGFuZHMsIChib3JkZXJDb2xvclBy
b3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyQ29sb3JQcm9wZXJ0aWVzKSkpOworICAg
IHJldHVybiBib3JkZXJDb2xvckxvbmdoYW5kczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgYm9yZGVySW1hZ2VMb25naGFuZCgpCitjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBi
b3JkZXJJbWFnZVByb3BlcnRpZXMoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVySW1h
Z2VQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVy
SW1hZ2VQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTb3Vy
Y2UsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTbGljZSwKICAgICAgICAgQ1NTUHJv
cGVydHlCb3JkZXJJbWFnZVdpZHRoLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckltYWdlT3V0
c2V0LAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckltYWdlUmVwZWF0CiAgICAgfTsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlckltYWdlTG9uZ2hh
bmQsIChib3JkZXJJbWFnZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVySW1hZ2VQ
cm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBib3JkZXJJbWFnZUxvbmdoYW5kOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJvcGVydGllcywgYm9yZGVySW1hZ2VMb25naGFuZHMs
IChib3JkZXJJbWFnZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVySW1hZ2VQcm9w
ZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJJbWFnZUxvbmdoYW5kczsKIH0KIAotY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyTGVmdExvbmdoYW5kKCkKK2NvbnN0IFNob3J0aGFu
ZFByb3BlcnRpZXMmIGJvcmRlckxlZnRQcm9wZXJ0aWVzKCkKIHsKLSAgICBzdGF0aWMgY29uc3Qg
aW50IGJvcmRlckxlZnRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRo
LCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3Ig
fTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlckxl
ZnRMb25naGFuZCwgKGJvcmRlckxlZnRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRl
ckxlZnRQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBib3JkZXJMZWZ0TG9uZ2hhbmQ7CisgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyTGVmdFByb3BlcnRpZXNbXSA9IHsgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRDb2xvciB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRo
YW5kUHJvcGVydGllcywgYm9yZGVyTGVmdExvbmdoYW5kcywgKGJvcmRlckxlZnRQcm9wZXJ0aWVz
LCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckxlZnRQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBi
b3JkZXJMZWZ0TG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3Jk
ZXJSYWRpdXNMb25naGFuZCgpCitjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBib3JkZXJSYWRp
dXNQcm9wZXJ0aWVzKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclJhZGl1c1Byb3Bl
cnRpZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJSYWRpdXNQ
cm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMs
CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywKICAgICAgICAgQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVJpZ2h0UmFkaXVzCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3Bl
cnR5TG9uZ2hhbmQsIGJvcmRlclJhZGl1c0xvbmdoYW5kLCAoYm9yZGVyUmFkaXVzUHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJSYWRpdXNQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVy
biBib3JkZXJSYWRpdXNMb25naGFuZDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFu
ZFByb3BlcnRpZXMsIGJvcmRlclJhZGl1c0xvbmdoYW5kcywgKGJvcmRlclJhZGl1c1Byb3BlcnRp
ZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyUmFkaXVzUHJvcGVydGllcykpKTsKKyAgICByZXR1
cm4gYm9yZGVyUmFkaXVzTG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiBib3JkZXJSaWdodExvbmdoYW5kKCkKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIGJvcmRl
clJpZ2h0UHJvcGVydGllcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJSaWdodFBy
b3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciB9OwotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyUmlnaHRMb25naGFuZCwg
KGJvcmRlclJpZ2h0UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJSaWdodFByb3Bl
cnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlclJpZ2h0TG9uZ2hhbmQ7CisgICAgc3RhdGljIGNv
bnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyUmlnaHRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0Q29sb3IgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZFBy
b3BlcnRpZXMsIGJvcmRlclJpZ2h0TG9uZ2hhbmRzLCAoYm9yZGVyUmlnaHRQcm9wZXJ0aWVzLCBX
VEZfQVJSQVlfTEVOR1RIKGJvcmRlclJpZ2h0UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9y
ZGVyUmlnaHRMb25naGFuZHM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRl
clNwYWNpbmdMb25naGFuZCgpCitjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBib3JkZXJTcGFj
aW5nUHJvcGVydGllcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJTcGFjaW5nUHJv
cGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyB9OwotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyU3BhY2luZ0xvbmdoYW5kLCAoYm9y
ZGVyU3BhY2luZ1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyU3BhY2luZ1Byb3Bl
cnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlclNwYWNpbmdMb25naGFuZDsKKyAgICBzdGF0aWMg
Y29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJTcGFjaW5nUHJvcGVydGllc1tdID0geyBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
clZlcnRpY2FsU3BhY2luZyB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJv
cGVydGllcywgYm9yZGVyU3BhY2luZ0xvbmdoYW5kcywgKGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVz
LCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzKSkpOworICAgIHJldHVy
biBib3JkZXJTcGFjaW5nTG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiBib3JkZXJTdHlsZUxvbmdoYW5kKCkKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIGJvcmRl
clN0eWxlUHJvcGVydGllcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJTdHlsZVBy
b3BlcnRpZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJTdHls
ZVByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwKICAg
ICAgICAgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZQogICAg
IH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJT
dHlsZUxvbmdoYW5kLCAoYm9yZGVyU3R5bGVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJv
cmRlclN0eWxlUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyU3R5bGVMb25naGFuZDsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZFByb3BlcnRpZXMsIGJvcmRlclN0eWxl
TG9uZ2hhbmRzLCAoYm9yZGVyU3R5bGVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRl
clN0eWxlUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVyU3R5bGVMb25naGFuZHM7CiB9
CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclRvcExvbmdoYW5kKCkKK2NvbnN0
IFNob3J0aGFuZFByb3BlcnRpZXMmIGJvcmRlclRvcFByb3BlcnRpZXMoKQogewotICAgIHN0YXRp
YyBjb25zdCBpbnQgYm9yZGVyVG9wUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRv
cFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcENv
bG9yIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3Jk
ZXJUb3BMb25naGFuZCwgKGJvcmRlclRvcFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9y
ZGVyVG9wUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVyVG9wTG9uZ2hhbmQ7CisgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyVG9wUHJvcGVydGllc1tdID0geyBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9w
ZXJ0eUJvcmRlclRvcENvbG9yIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTaG9ydGhhbmRQ
cm9wZXJ0aWVzLCBib3JkZXJUb3BMb25naGFuZHMsIChib3JkZXJUb3BQcm9wZXJ0aWVzLCBXVEZf
QVJSQVlfTEVOR1RIKGJvcmRlclRvcFByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlclRv
cExvbmdoYW5kczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyV2lkdGhM
b25naGFuZCgpCitjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBib3JkZXJXaWR0aFByb3BlcnRp
ZXMoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyV2lkdGhQcm9wZXJ0aWVzW10gPSB7
CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyV2lkdGhQcm9wZXJ0aWVzW10g
PSB7CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsCiAgICAgICAgIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0
aCwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgKICAgICB9OwotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyV2lkdGhMb25naGFuZCwg
KGJvcmRlcldpZHRoUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJXaWR0aFByb3Bl
cnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlcldpZHRoTG9uZ2hhbmQ7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTaG9ydGhhbmRQcm9wZXJ0aWVzLCBib3JkZXJXaWR0aExvbmdoYW5kcywgKGJv
cmRlcldpZHRoUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJXaWR0aFByb3BlcnRp
ZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlcldpZHRoTG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiBsaXN0U3R5bGVMb25naGFuZCgpCitjb25zdCBTaG9ydGhhbmRQcm9w
ZXJ0aWVzJiBsaXN0U3R5bGVQcm9wZXJ0aWVzKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGxp
c3RTdHlsZVByb3BlcnRpZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBs
aXN0U3R5bGVQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlw
ZSwKICAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwKICAgICAgICAgQ1NTUHJv
cGVydHlMaXN0U3R5bGVJbWFnZQogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQ
cm9wZXJ0eUxvbmdoYW5kLCBsaXN0U3R5bGVMb25naGFuZCwgKGxpc3RTdHlsZVByb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgobGlzdFN0eWxlUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gbGlz
dFN0eWxlTG9uZ2hhbmQ7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTaG9ydGhhbmRQcm9wZXJ0
aWVzLCBsaXN0U3R5bGVMb25naGFuZHMsIChsaXN0U3R5bGVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlf
TEVOR1RIKGxpc3RTdHlsZVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGxpc3RTdHlsZUxvbmdo
YW5kczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgZm9udExvbmdoYW5kKCkKK2Nv
bnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIGZvbnRQcm9wZXJ0aWVzKCkKIHsKLSAgICBzdGF0aWMg
Y29uc3QgaW50IGZvbnRQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3Bl
cnR5SUQgZm9udFByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlGb250RmFtaWx5
LAogICAgICAgICBDU1NQcm9wZXJ0eUZvbnRTaXplLAogICAgICAgICBDU1NQcm9wZXJ0eUZvbnRT
dHlsZSwKQEAgLTIwMSw1NSArMjAwLDU1IEBAIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGZv
bnRMb25naGFuZCgpCiAgICAgICAgIENTU1Byb3BlcnR5Rm9udFdlaWdodCwKICAgICAgICAgQ1NT
UHJvcGVydHlMaW5lSGVpZ2h0CiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1By
b3BlcnR5TG9uZ2hhbmQsIGZvbnRMb25naGFuZCwgKGZvbnRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlf
TEVOR1RIKGZvbnRQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBmb250TG9uZ2hhbmQ7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTaG9ydGhhbmRQcm9wZXJ0aWVzLCBmb250TG9uZ2hhbmRzLCAo
Zm9udFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoZm9udFByb3BlcnRpZXMpKSk7CisgICAg
cmV0dXJuIGZvbnRMb25naGFuZHM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIG1h
cmdpbkxvbmdoYW5kKCkKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIG1hcmdpblByb3BlcnRp
ZXMoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luUHJvcGVydGllc1tdID0geworICAg
IHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIG1hcmdpblByb3BlcnRpZXNbXSA9IHsKICAgICAg
ICAgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsCiAgICAgICAgIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQs
CiAgICAgICAgIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLAogICAgICAgICBDU1NQcm9wZXJ0eU1h
cmdpbkxlZnQKICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25n
aGFuZCwgbWFyZ2luTG9uZ2hhbmQsIChtYXJnaW5Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RI
KG1hcmdpblByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIG1hcmdpbkxvbmdoYW5kOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJvcGVydGllcywgbWFyZ2luTG9uZ2hhbmRzLCAo
bWFyZ2luUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJnaW5Qcm9wZXJ0aWVzKSkpOwor
ICAgIHJldHVybiBtYXJnaW5Mb25naGFuZHM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hh
bmQmIG91dGxpbmVMb25naGFuZCgpCitjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBvdXRsaW5l
UHJvcGVydGllcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBvdXRsaW5lUHJvcGVydGllc1td
ID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIG91dGxpbmVQcm9wZXJ0aWVzW10g
PSB7CiAgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLAogICAgICAgICBDU1NQcm9wZXJ0
eU91dGxpbmVTdHlsZSwKICAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgKICAgICB9Owot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgb3V0bGluZUxvbmdo
YW5kLCAob3V0bGluZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgob3V0bGluZVByb3BlcnRp
ZXMpKSk7Ci0gICAgcmV0dXJuIG91dGxpbmVMb25naGFuZDsKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFNob3J0aGFuZFByb3BlcnRpZXMsIG91dGxpbmVMb25naGFuZHMsIChvdXRsaW5lUHJvcGVy
dGllcywgV1RGX0FSUkFZX0xFTkdUSChvdXRsaW5lUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4g
b3V0bGluZUxvbmdoYW5kczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgb3ZlcmZs
b3dMb25naGFuZCgpCitjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBvdmVyZmxvd1Byb3BlcnRp
ZXMoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgb3ZlcmZsb3dQcm9wZXJ0aWVzW10gPSB7IENT
U1Byb3BlcnR5T3ZlcmZsb3dYLCBDU1NQcm9wZXJ0eU92ZXJmbG93WSB9OwotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgb3ZlcmZsb3dMb25naGFuZCwgKG92ZXJm
bG93UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChvdmVyZmxvd1Byb3BlcnRpZXMpKSk7Ci0g
ICAgcmV0dXJuIG92ZXJmbG93TG9uZ2hhbmQ7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5
SUQgb3ZlcmZsb3dQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBDU1NQcm9w
ZXJ0eU92ZXJmbG93WSB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJvcGVy
dGllcywgb3ZlcmZsb3dMb25naGFuZHMsIChvdmVyZmxvd1Byb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgob3ZlcmZsb3dQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBvdmVyZmxvd0xvbmdoYW5k
czsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgcGFkZGluZ0xvbmdoYW5kKCkKK2Nv
bnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIHBhZGRpbmdQcm9wZXJ0aWVzKCkKIHsKLSAgICBzdGF0
aWMgY29uc3QgaW50IHBhZGRpbmdQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENT
U1Byb3BlcnR5SUQgcGFkZGluZ1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlQ
YWRkaW5nVG9wLAogICAgICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwKICAgICAgICAgQ1NT
UHJvcGVydHlQYWRkaW5nQm90dG9tLAogICAgICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0CiAg
ICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHBhZGRp
bmdMb25naGFuZCwgKHBhZGRpbmdQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHBhZGRpbmdQ
cm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBwYWRkaW5nTG9uZ2hhbmQ7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTaG9ydGhhbmRQcm9wZXJ0aWVzLCBwYWRkaW5nTG9uZ2hhbmRzLCAocGFkZGlu
Z1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgocGFkZGluZ1Byb3BlcnRpZXMpKSk7CisgICAg
cmV0dXJuIHBhZGRpbmdMb25naGFuZHM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCkKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIHdl
YmtpdEFuaW1hdGlvblByb3BlcnRpZXMoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYW5pbWF0
aW9uUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGFuaW1h
dGlvblByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25O
YW1lLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uLAogICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLApAQCAtMjU4LDg2ICsy
NTcsODYgQEAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0QW5pbWF0aW9uTG9uZ2hh
bmQoKQogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwKICAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZQogICAgIH07Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRBbmltYXRpb25Mb25naGFu
ZCwgKGFuaW1hdGlvblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYW5pbWF0aW9uUHJvcGVy
dGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQ7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTaG9ydGhhbmRQcm9wZXJ0aWVzLCB3ZWJraXRBbmltYXRpb25Mb25naGFu
ZHMsIChhbmltYXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGFuaW1hdGlvblByb3Bl
cnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kczsKIH0KIAotY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Qm9yZGVyQWZ0ZXJMb25naGFuZCgpCitjb25z
dCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiB3ZWJraXRCb3JkZXJBZnRlclByb3BlcnRpZXMoKQogewot
ICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyQWZ0ZXJQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0
eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IgIH07Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5k
LCAoYm9yZGVyQWZ0ZXJQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckFmdGVyUHJv
cGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0Qm9yZGVyQWZ0ZXJMb25naGFuZDsKKyAgICBz
dGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJBZnRlclByb3BlcnRpZXNbXSA9IHsgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFm
dGVyU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvciAgfTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZFByb3BlcnRpZXMsIHdlYmtpdEJvcmRlckFmdGVyTG9u
Z2hhbmRzLCAoYm9yZGVyQWZ0ZXJQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckFm
dGVyUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0Qm9yZGVyQWZ0ZXJMb25naGFuZHM7
CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEJvcmRlckJlZm9yZUxvbmdo
YW5kKCkKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIHdlYmtpdEJvcmRlckJlZm9yZVByb3Bl
cnRpZXMoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyQmVmb3JlUHJvcGVydGllc1td
ID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckJlZm9yZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yICB9
OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Qm9y
ZGVyQmVmb3JlTG9uZ2hhbmQsIChib3JkZXJCZWZvcmVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVO
R1RIKGJvcmRlckJlZm9yZVByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdEJvcmRlckJl
Zm9yZUxvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckJlZm9y
ZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0aCwgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJC
ZWZvcmVDb2xvciAgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZFByb3BlcnRp
ZXMsIHdlYmtpdEJvcmRlckJlZm9yZUxvbmdoYW5kcywgKGJvcmRlckJlZm9yZVByb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyQmVmb3JlUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4g
d2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiB3ZWJraXRCb3JkZXJFbmRMb25naGFuZCgpCitjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVz
JiB3ZWJraXRCb3JkZXJFbmRQcm9wZXJ0aWVzKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJv
cmRlckVuZFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCwg
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmRDb2xvciB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwg
d2Via2l0Qm9yZGVyRW5kTG9uZ2hhbmQsIChib3JkZXJFbmRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlf
TEVOR1RIKGJvcmRlckVuZFByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdEJvcmRlckVu
ZExvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckVuZFByb3Bl
cnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJFbmRTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvciB9Owor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJvcGVydGllcywgd2Via2l0Qm9yZGVy
RW5kTG9uZ2hhbmRzLCAoYm9yZGVyRW5kUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3Jk
ZXJFbmRQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRCb3JkZXJFbmRMb25naGFuZHM7
CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hh
bmQoKQorY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgd2Via2l0Qm9yZGVyU3RhcnRQcm9wZXJ0
aWVzKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclN0YXJ0UHJvcGVydGllc1tdID0g
eyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyU3RhcnRTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRCb3JkZXJTdGFy
dExvbmdoYW5kLCAoYm9yZGVyU3RhcnRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRl
clN0YXJ0UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0Qm9yZGVyU3RhcnRMb25naGFu
ZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJTdGFydFByb3BlcnRpZXNb
XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlclN0YXJ0U3R5bGUsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvciB9Owor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJvcGVydGllcywgd2Via2l0Qm9yZGVy
U3RhcnRMb25naGFuZHMsIChib3JkZXJTdGFydFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgo
Ym9yZGVyU3RhcnRQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRCb3JkZXJTdGFydExv
bmdoYW5kczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Q29sdW1uc0xv
bmdoYW5kKCkKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIHdlYmtpdENvbHVtbnNQcm9wZXJ0
aWVzKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGNvbHVtbnNQcm9wZXJ0aWVzW10gPSB7IENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQg
fTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdENv
bHVtbnNMb25naGFuZCwgKGNvbHVtbnNQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGNvbHVt
bnNQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmQ7CisgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgY29sdW1uc1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5XaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5Db3VudCB9Owor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJvcGVydGllcywgd2Via2l0Q29sdW1u
c0xvbmdoYW5kcywgKGNvbHVtbnNQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGNvbHVtbnNQ
cm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmRzOwogfQogCi1j
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQoKQorY29u
c3QgU2hvcnRoYW5kUHJvcGVydGllcyYgd2Via2l0Q29sdW1uUnVsZVByb3BlcnRpZXMoKQogewot
ICAgIHN0YXRpYyBjb25zdCBpbnQgY29sdW1uUnVsZVByb3BlcnRpZXNbXSA9IHsKKyAgICBzdGF0
aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBjb2x1bW5SdWxlUHJvcGVydGllc1tdID0gewogICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5SdWxlU3R5bGUsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVs
ZUNvbG9yLAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdo
YW5kLCB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQsIChjb2x1bW5SdWxlUHJvcGVydGllcywgV1RG
X0FSUkFZX0xFTkdUSChjb2x1bW5SdWxlUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0
Q29sdW1uUnVsZUxvbmdoYW5kOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJv
cGVydGllcywgd2Via2l0Q29sdW1uUnVsZUxvbmdoYW5kcywgKGNvbHVtblJ1bGVQcm9wZXJ0aWVz
LCBXVEZfQVJSQVlfTEVOR1RIKGNvbHVtblJ1bGVQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3
ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiB3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kKCkKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIHdl
YmtpdEZsZXhGbG93UHJvcGVydGllcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBmbGV4Rmxv
d1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uLCBDU1NQcm9w
ZXJ0eVdlYmtpdEZsZXhXcmFwIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0
eUxvbmdoYW5kLCB3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kLCAoZmxleEZsb3dQcm9wZXJ0aWVzLCBX
VEZfQVJSQVlfTEVOR1RIKGZsZXhGbG93UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0
RmxleEZsb3dMb25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBmbGV4Rmxv
d1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uLCBDU1NQcm9w
ZXJ0eVdlYmtpdEZsZXhXcmFwIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTaG9ydGhhbmRQ
cm9wZXJ0aWVzLCB3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kcywgKGZsZXhGbG93UHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSChmbGV4Rmxvd1Byb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtp
dEZsZXhGbG93TG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJr
aXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCkKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIHdl
YmtpdE1hcmdpbkNvbGxhcHNlUHJvcGVydGllcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBt
YXJnaW5Db2xsYXBzZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZv
cmVDb2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRNYXJnaW5Db2xs
YXBzZUxvbmdoYW5kLCAobWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RI
KG1hcmdpbkNvbGxhcHNlUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0TWFyZ2luQ29s
bGFwc2VMb25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBtYXJnaW5Db2xs
YXBzZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBz
ZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIH07CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTaG9ydGhhbmRQcm9wZXJ0aWVzLCB3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdo
YW5kcywgKG1hcmdpbkNvbGxhcHNlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJnaW5D
b2xsYXBzZVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9u
Z2hhbmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXJxdWVlTG9u
Z2hhbmQoKQorY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgd2Via2l0TWFycXVlZVByb3BlcnRp
ZXMoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFycXVlZVByb3BlcnRpZXNbXSA9IHsKKyAg
ICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBtYXJxdWVlUHJvcGVydGllc1tdID0gewogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sCiAgICAgICAgIENTU1Byb3Bl
cnR5V2Via2l0TWFycXVlZUluY3JlbWVudCwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJx
dWVlUmVwZXRpdGlvbiwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGUsCiAg
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkCiAgICAgfTsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdE1hcnF1ZWVMb25naGFuZCwg
KG1hcnF1ZWVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hcnF1ZWVQcm9wZXJ0aWVzKSkp
OwotICAgIHJldHVybiB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQ7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTaG9ydGhhbmRQcm9wZXJ0aWVzLCB3ZWJraXRNYXJxdWVlTG9uZ2hhbmRzLCAobWFycXVl
ZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFycXVlZVByb3BlcnRpZXMpKSk7CisgICAg
cmV0dXJuIHdlYmtpdE1hcnF1ZWVMb25naGFuZHM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9u
Z2hhbmQmIHdlYmtpdE1hc2tMb25naGFuZCgpCitjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiB3
ZWJraXRNYXNrUHJvcGVydGllcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBtYXNrUHJvcGVy
dGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIG1hc2tQcm9wZXJ0aWVz
W10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLAogICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tS
ZXBlYXRZLApAQCAtMzQ3LDE2MCArMzQ2LDE2MCBAQCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiB3ZWJraXRNYXNrTG9uZ2hhbmQoKQogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlw
LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4KICAgICB9OwotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0TWFza0xvbmdoYW5kLCAo
bWFza1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFza1Byb3BlcnRpZXMpKSk7Ci0gICAg
cmV0dXJuIHdlYmtpdE1hc2tMb25naGFuZDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0
aGFuZFByb3BlcnRpZXMsIHdlYmtpdE1hc2tMb25naGFuZHMsIChtYXNrUHJvcGVydGllcywgV1RG
X0FSUkFZX0xFTkdUSChtYXNrUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0TWFza0xv
bmdoYW5kczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFza1Bvc2l0
aW9uTG9uZ2hhbmQoKQorY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgd2Via2l0TWFza1Bvc2l0
aW9uUHJvcGVydGllcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBtYXNrUG9zaXRpb25Qcm9w
ZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUG9zaXRpb25ZIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0
eUxvbmdoYW5kLCB3ZWJraXRNYXNrUG9zaXRpb25Mb25naGFuZCwgKG1hc2tQb3NpdGlvblByb3Bl
cnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFza1Bvc2l0aW9uUHJvcGVydGllcykpKTsKLSAgICBy
ZXR1cm4gd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQ7CisgICAgc3RhdGljIGNvbnN0IENTU1By
b3BlcnR5SUQgbWFza1Bvc2l0aW9uUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tQb3NpdGlvblgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSB9OworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJvcGVydGllcywgd2Via2l0TWFza1Bvc2l0aW9uTG9u
Z2hhbmRzLCAobWFza1Bvc2l0aW9uUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXNrUG9z
aXRpb25Qcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRNYXNrUG9zaXRpb25Mb25naGFu
ZHM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tSZXBlYXRMb25n
aGFuZCgpCitjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiB3ZWJraXRNYXNrUmVwZWF0UHJvcGVy
dGllcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBtYXNrUmVwZWF0UHJvcGVydGllc1tdID0g
eyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBl
YXRZIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJr
aXRNYXNrUmVwZWF0TG9uZ2hhbmQsIChtYXNrUmVwZWF0UHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSChtYXNrUmVwZWF0UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0TWFza1JlcGVh
dExvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIG1hc2tSZXBlYXRQcm9w
ZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1JlcGVhdFkgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZFByb3Bl
cnRpZXMsIHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZHMsIChtYXNrUmVwZWF0UHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSChtYXNrUmVwZWF0UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Vi
a2l0TWFza1JlcGVhdExvbmdoYW5kczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
d2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmQoKQorY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYg
d2Via2l0VGV4dEVtcGhhc2lzUHJvcGVydGllcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCB0
ZXh0RW1waGFzaXNQcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5
SUQgdGV4dEVtcGhhc2lzUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRFbXBoYXNpc1N0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNp
c0NvbG9yCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hh
bmQsIHdlYmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kLCAodGV4dEVtcGhhc2lzUHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSCh0ZXh0RW1waGFzaXNQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiB3
ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0
aGFuZFByb3BlcnRpZXMsIHdlYmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kcywgKHRleHRFbXBoYXNp
c1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodGV4dEVtcGhhc2lzUHJvcGVydGllcykpKTsK
KyAgICByZXR1cm4gd2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmQoKQorY29uc3QgU2hvcnRo
YW5kUHJvcGVydGllcyYgd2Via2l0VGV4dFN0cm9rZVByb3BlcnRpZXMoKQogewotICAgIHN0YXRp
YyBjb25zdCBpbnQgdGV4dFN0cm9rZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0U3Ryb2tlV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUZXh0U3Ryb2tl
TG9uZ2hhbmQsICh0ZXh0U3Ryb2tlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0ZXh0U3Ry
b2tlUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kOwor
ICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHRleHRTdHJva2VQcm9wZXJ0aWVzW10gPSB7
IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRT
dHJva2VDb2xvciB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJvcGVydGll
cywgd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kcywgKHRleHRTdHJva2VQcm9wZXJ0aWVzLCBXVEZf
QVJSQVlfTEVOR1RIKHRleHRTdHJva2VQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRU
ZXh0U3Ryb2tlTG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJr
aXRUcmFuc2l0aW9uTG9uZ2hhbmQoKQorY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgd2Via2l0
VHJhbnNpdGlvblByb3BlcnRpZXMoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgdHJhbnNpdGlv
blByb3BlcnRpZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCB0cmFuc2l0
aW9uUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Q
cm9wZXJ0eSwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sCiAg
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uLAogICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheQogICAgIH07Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQs
ICh0cmFuc2l0aW9uUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0cmFuc2l0aW9uUHJvcGVy
dGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJvcGVydGllcywgd2Via2l0VHJhbnNpdGlvbkxvbmdo
YW5kcywgKHRyYW5zaXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRyYW5zaXRpb25Q
cm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmRzOwogfQog
Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFu
ZCgpCitjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Qcm9w
ZXJ0aWVzKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IHRyYW5zZm9ybU9yaWdpblByb3BlcnRp
ZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCB0cmFuc2Zvcm1PcmlnaW5Q
cm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2lu
WCwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLAogICAgICAgICBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbloKICAgICB9OwotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hh
bmQsICh0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRyYW5zZm9y
bU9yaWdpblByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdFRyYW5zZm9ybU9yaWdpbkxv
bmdoYW5kOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJvcGVydGllcywgd2Vi
a2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmRzLCAodHJhbnNmb3JtT3JpZ2luUHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSCh0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzKSkpOworICAgIHJldHVy
biB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZHM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5
TG9uZ2hhbmQmIHdlYmtpdFdyYXBMb25naGFuZCgpCitjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVz
JiB3ZWJraXRXcmFwUHJvcGVydGllcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCB3ZWJraXRX
cmFwUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHdlYmtp
dFdyYXBQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3cs
CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcE1hcmdpbiwKICAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRXcmFwUGFkZGluZwogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQ
cm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRXcmFwTG9uZ2hhbmQsICh3ZWJraXRXcmFwUHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSCh3ZWJraXRXcmFwUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4g
d2Via2l0V3JhcExvbmdoYW5kOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kUHJv
cGVydGllcywgd2Via2l0V3JhcExvbmdoYW5kcywgKHdlYmtpdFdyYXBQcm9wZXJ0aWVzLCBXVEZf
QVJSQVlfTEVOR1RIKHdlYmtpdFdyYXBQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRX
cmFwTG9uZ2hhbmRzOwogfQogCiAvLyBSZXR1cm5zIGFuIGVtcHR5IGxpc3QgaWYgdGhlIHByb3Bl
cnR5IGlzIG5vdCBhIHNob3J0aGFuZAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hh
bmRGb3JQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMm
IGxvbmdoYW5kc0ZvclByb3BlcnR5KGludCBwcm9wZXJ0eUlEKQogewogICAgIHN3aXRjaCAocHJv
cGVydHlJRCkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kOgotICAgICAgICByZXR1
cm4gYmFja2dyb3VuZExvbmdoYW5kKCk7CisgICAgICAgIHJldHVybiBiYWNrZ3JvdW5kUHJvcGVy
dGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb246Ci0gICAgICAg
IHJldHVybiBiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZCgpOworICAgICAgICByZXR1cm4gYmFj
a2dyb3VuZFBvc2l0aW9uUHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUmVwZWF0OgotICAgICAgICByZXR1cm4gYmFja2dyb3VuZFJlcGVhdExvbmdoYW5kKCk7Cisg
ICAgICAgIHJldHVybiBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXI6Ci0gICAgICAgIHJldHVybiBib3JkZXJMb25naGFuZCgpOworICAgICAg
ICByZXR1cm4gYm9yZGVyUHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b206Ci0gICAgICAgIHJldHVybiBib3JkZXJCb3R0b21Mb25naGFuZCgpOworICAgICAgICBy
ZXR1cm4gYm9yZGVyQm90dG9tUHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJDb2xvcjoKLSAgICAgICAgcmV0dXJuIGJvcmRlckNvbG9yTG9uZ2hhbmQoKTsKKyAgICAgICAg
cmV0dXJuIGJvcmRlckNvbG9yUHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJJbWFnZToKLSAgICAgICAgcmV0dXJuIGJvcmRlckltYWdlTG9uZ2hhbmQoKTsKKyAgICAgICAg
cmV0dXJuIGJvcmRlckltYWdlUHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJMZWZ0OgotICAgICAgICByZXR1cm4gYm9yZGVyTGVmdExvbmdoYW5kKCk7CisgICAgICAgIHJl
dHVybiBib3JkZXJMZWZ0UHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJS
YWRpdXM6Ci0gICAgICAgIHJldHVybiBib3JkZXJSYWRpdXNMb25naGFuZCgpOworICAgICAgICBy
ZXR1cm4gYm9yZGVyUmFkaXVzUHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJSaWdodDoKLSAgICAgICAgcmV0dXJuIGJvcmRlclJpZ2h0TG9uZ2hhbmQoKTsKKyAgICAgICAg
cmV0dXJuIGJvcmRlclJpZ2h0UHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJTcGFjaW5nOgotICAgICAgICByZXR1cm4gYm9yZGVyU3BhY2luZ0xvbmdoYW5kKCk7CisgICAg
ICAgIHJldHVybiBib3JkZXJTcGFjaW5nUHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJTdHlsZToKLSAgICAgICAgcmV0dXJuIGJvcmRlclN0eWxlTG9uZ2hhbmQoKTsKKyAg
ICAgICAgcmV0dXJuIGJvcmRlclN0eWxlUHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJUb3A6Ci0gICAgICAgIHJldHVybiBib3JkZXJUb3BMb25naGFuZCgpOworICAgICAg
ICByZXR1cm4gYm9yZGVyVG9wUHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJXaWR0aDoKLSAgICAgICAgcmV0dXJuIGJvcmRlcldpZHRoTG9uZ2hhbmQoKTsKKyAgICAgICAg
cmV0dXJuIGJvcmRlcldpZHRoUHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0
U3R5bGU6Ci0gICAgICAgIHJldHVybiBsaXN0U3R5bGVMb25naGFuZCgpOworICAgICAgICByZXR1
cm4gbGlzdFN0eWxlUHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OgotICAg
ICAgICByZXR1cm4gZm9udExvbmdoYW5kKCk7CisgICAgICAgIHJldHVybiBmb250UHJvcGVydGll
cygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW46Ci0gICAgICAgIHJldHVybiBtYXJnaW5M
b25naGFuZCgpOworICAgICAgICByZXR1cm4gbWFyZ2luUHJvcGVydGllcygpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlPdXRsaW5lOgotICAgICAgICByZXR1cm4gb3V0bGluZUxvbmdoYW5kKCk7Cisg
ICAgICAgIHJldHVybiBvdXRsaW5lUHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlP
dmVyZmxvdzoKLSAgICAgICAgcmV0dXJuIG92ZXJmbG93TG9uZ2hhbmQoKTsKKyAgICAgICAgcmV0
dXJuIG92ZXJmbG93UHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgot
ICAgICAgICByZXR1cm4gcGFkZGluZ0xvbmdoYW5kKCk7CisgICAgICAgIHJldHVybiBwYWRkaW5n
UHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb246Ci0gICAg
ICAgIHJldHVybiB3ZWJraXRBbmltYXRpb25Mb25naGFuZCgpOworICAgICAgICByZXR1cm4gd2Vi
a2l0QW5pbWF0aW9uUHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJBZnRlcjoKLSAgICAgICAgcmV0dXJuIHdlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQoKTsKKyAg
ICAgICAgcmV0dXJuIHdlYmtpdEJvcmRlckFmdGVyUHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmU6Ci0gICAgICAgIHJldHVybiB3ZWJraXRCb3JkZXJC
ZWZvcmVMb25naGFuZCgpOworICAgICAgICByZXR1cm4gd2Via2l0Qm9yZGVyQmVmb3JlUHJvcGVy
dGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQ6Ci0gICAgICAgIHJl
dHVybiB3ZWJraXRCb3JkZXJFbmRMb25naGFuZCgpOworICAgICAgICByZXR1cm4gd2Via2l0Qm9y
ZGVyRW5kUHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFy
dDoKLSAgICAgICAgcmV0dXJuIHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQoKTsKKyAgICAgICAg
cmV0dXJuIHdlYmtpdEJvcmRlclN0YXJ0UHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJSYWRpdXM6Ci0gICAgICAgIHJldHVybiBib3JkZXJSYWRpdXNMb25naGFu
ZCgpOworICAgICAgICByZXR1cm4gYm9yZGVyUmFkaXVzUHJvcGVydGllcygpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5zOgotICAgICAgICByZXR1cm4gd2Via2l0Q29sdW1uc0xv
bmdoYW5kKCk7CisgICAgICAgIHJldHVybiB3ZWJraXRDb2x1bW5zUHJvcGVydGllcygpOwogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlOgotICAgICAgICByZXR1cm4gd2Via2l0
Q29sdW1uUnVsZUxvbmdoYW5kKCk7CisgICAgICAgIHJldHVybiB3ZWJraXRDb2x1bW5SdWxlUHJv
cGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RmxvdzoKLSAgICAgICAg
cmV0dXJuIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQoKTsKKyAgICAgICAgcmV0dXJuIHdlYmtpdEZs
ZXhGbG93UHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xs
YXBzZToKLSAgICAgICAgcmV0dXJuIHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKTsKKyAg
ICAgICAgcmV0dXJuIHdlYmtpdE1hcmdpbkNvbGxhcHNlUHJvcGVydGllcygpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOgotICAgICAgICByZXR1cm4gd2Via2l0TWFycXVlZUxv
bmdoYW5kKCk7CisgICAgICAgIHJldHVybiB3ZWJraXRNYXJxdWVlUHJvcGVydGllcygpOwogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrOgotICAgICAgICByZXR1cm4gd2Via2l0TWFza0xv
bmdoYW5kKCk7CisgICAgICAgIHJldHVybiB3ZWJraXRNYXNrUHJvcGVydGllcygpOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb246Ci0gICAgICAgIHJldHVybiB3ZWJraXRN
YXNrUG9zaXRpb25Mb25naGFuZCgpOworICAgICAgICByZXR1cm4gd2Via2l0TWFza1Bvc2l0aW9u
UHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0OgotICAg
ICAgICByZXR1cm4gd2Via2l0TWFza1JlcGVhdExvbmdoYW5kKCk7CisgICAgICAgIHJldHVybiB3
ZWJraXRNYXNrUmVwZWF0UHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RW1waGFzaXM6Ci0gICAgICAgIHJldHVybiB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZCgp
OworICAgICAgICByZXR1cm4gd2Via2l0VGV4dEVtcGhhc2lzUHJvcGVydGllcygpOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlOgotICAgICAgICByZXR1cm4gd2Via2l0VGV4
dFN0cm9rZUxvbmdoYW5kKCk7CisgICAgICAgIHJldHVybiB3ZWJraXRUZXh0U3Ryb2tlUHJvcGVy
dGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uOgotICAgICAgICBy
ZXR1cm4gd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCk7CisgICAgICAgIHJldHVybiB3ZWJraXRU
cmFuc2l0aW9uUHJvcGVydGllcygpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm1PcmlnaW46Ci0gICAgICAgIHJldHVybiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZCgp
OworICAgICAgICByZXR1cm4gd2Via2l0VHJhbnNmb3JtT3JpZ2luUHJvcGVydGllcygpOwogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwOgotICAgICAgICByZXR1cm4gd2Via2l0V3JhcExv
bmdoYW5kKCk7CisgICAgICAgIHJldHVybiB3ZWJraXRXcmFwUHJvcGVydGllcygpOwogICAgIGRl
ZmF1bHQ6IHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCBkZWZhdWx0TG9uZ2hhbmQsICgpKTsKLSAgICAgICAgcmV0dXJuIGRlZmF1bHRMb25naGFuZDsK
KyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTaG9ydGhhbmRQcm9wZXJ0aWVzLCBlbXB0eVNo
b3J0aGFuZCwgKCkpOworICAgICAgICByZXR1cm4gZW1wdHlTaG9ydGhhbmQ7CiAgICAgfQogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oCmluZGV4IDkxNzBm
ZjYyNTg3ZDFlNTE3YzdmZTYzNDgyMWI0NmIxMTEzYThiMDguLjA3MGUyYWI2OWRhYzAxZWM1ZDkz
ZjM1NjA2NDMyMDg0MTc3ZmQzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eUxvbmdoYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9u
Z2hhbmQuaApAQCAtMjEsODMgKzIxLDg1IEBACiAjaWZuZGVmIENTU1Byb3BlcnR5TG9uZ2hhbmRf
aAogI2RlZmluZSBDU1NQcm9wZXJ0eUxvbmdoYW5kX2gKIAorI2luY2x1ZGUgIkNTU1Byb3BlcnR5
TmFtZXMuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDU1NQcm9wZXJ0eUxvbmdo
YW5kIHsKK2NsYXNzIFNob3J0aGFuZFByb3BlcnRpZXMgewogcHVibGljOgotICAgIENTU1Byb3Bl
cnR5TG9uZ2hhbmQoKQorICAgIFNob3J0aGFuZFByb3BlcnRpZXMoKQogICAgICAgICA6IG1fcHJv
cGVydGllcygwKQogICAgICAgICAsIG1fbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24oMCkKICAg
ICAgICAgLCBtX2xlbmd0aCgwKQogICAgIHsKICAgICB9CiAKLSAgICBDU1NQcm9wZXJ0eUxvbmdo
YW5kKGNvbnN0IGludCogcHJvcGVydGllcywgdW5zaWduZWQgbnVtUHJvcGVydGllcykKKyAgICBT
aG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5SUQqIHByb3BlcnRpZXMsIHVuc2ln
bmVkIG51bVByb3BlcnRpZXMpCiAgICAgICAgIDogbV9wcm9wZXJ0aWVzKHByb3BlcnRpZXMpCiAg
ICAgICAgICwgbV9sb25naGFuZHNGb3JJbml0aWFsaXphdGlvbigwKQogICAgICAgICAsIG1fbGVu
Z3RoKG51bVByb3BlcnRpZXMpCiAgICAgewogICAgIH0KIAotICAgIENTU1Byb3BlcnR5TG9uZ2hh
bmQoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kKiogbG9u
Z2hhbmRzRm9ySW5pdGlhbGl6YXRpb24sIHVuc2lnbmVkIG51bVByb3BlcnRpZXMpCisgICAgU2hv
cnRoYW5kUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0eUlEKiBwcm9wZXJ0aWVzLCBjb25zdCBT
aG9ydGhhbmRQcm9wZXJ0aWVzKiogbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24sIHVuc2lnbmVk
IG51bVByb3BlcnRpZXMpCiAgICAgICAgIDogbV9wcm9wZXJ0aWVzKHByb3BlcnRpZXMpCiAgICAg
ICAgICwgbV9sb25naGFuZHNGb3JJbml0aWFsaXphdGlvbihsb25naGFuZHNGb3JJbml0aWFsaXph
dGlvbikKICAgICAgICAgLCBtX2xlbmd0aChudW1Qcm9wZXJ0aWVzKQogICAgIHsKICAgICB9CiAK
LSAgICBjb25zdCBpbnQqIHByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnRpZXM7
IH0KLSAgICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kKiogbG9uZ2hhbmRzRm9ySW5pdGlhbGl6
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uOyB9Cisg
ICAgY29uc3QgQ1NTUHJvcGVydHlJRCogcHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
cGVydGllczsgfQorICAgIGNvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMqKiBsb25naGFuZHNGb3JJ
bml0aWFsaXphdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRp
b247IH0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQog
CiBwcml2YXRlOgotICAgIGNvbnN0IGludCogbV9wcm9wZXJ0aWVzOwotICAgIGNvbnN0IENTU1By
b3BlcnR5TG9uZ2hhbmQqKiBtX2xvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uOworICAgIGNvbnN0
IENTU1Byb3BlcnR5SUQqIG1fcHJvcGVydGllczsKKyAgICBjb25zdCBTaG9ydGhhbmRQcm9wZXJ0
aWVzKiogbV9sb25naGFuZHNGb3JJbml0aWFsaXphdGlvbjsKICAgICB1bnNpZ25lZCBtX2xlbmd0
aDsKIH07CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRMb25naGFuZCgp
OwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQo
KTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRSZXBlYXRMb25naGFuZCgp
OwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyTG9uZ2hhbmQoKTsKLWNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckFicmlkZ2VkTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1By
b3BlcnR5TG9uZ2hhbmQmIGJvcmRlckJvdHRvbUxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiBib3JkZXJDb2xvckxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiBib3JkZXJJbWFnZUxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBi
b3JkZXJMZWZ0TG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclJh
ZGl1c0xvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJSaWdodExv
bmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJTcGFjaW5nTG9uZ2hh
bmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclN0eWxlTG9uZ2hhbmQoKTsK
LWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclRvcExvbmdoYW5kKCk7Ci1jb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJXaWR0aExvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBsaXN0U3R5bGVMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgZm9udExvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBtYXJnaW5M
b25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgb3V0bGluZUxvbmdoYW5kKCk7
Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBvdmVyZmxvd0xvbmdoYW5kKCk7Ci1jb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiBwYWRkaW5nTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5
TG9uZ2hhbmQmIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxv
bmdoYW5kJiB3ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxv
bmdoYW5kJiB3ZWJraXRCb3JkZXJCZWZvcmVMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgd2Via2l0Qm9yZGVyRW5kTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9u
Z2hhbmQmIHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9u
Z2hhbmQmIHdlYmtpdENvbHVtbnNMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFu
ZCYgd2Via2l0Q29sdW1uUnVsZUxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiB3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3
ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdl
YmtpdE1hc2tMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFz
a1Bvc2l0aW9uTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1h
c2tSZXBlYXRMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VGV4
dEVtcGhhc2lzTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRl
eHRTdHJva2VMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJh
bnNpdGlvbkxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUcmFu
c2Zvcm1PcmlnaW5Mb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0
V3JhcExvbmdoYW5kKCk7Citjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBiYWNrZ3JvdW5kUHJv
cGVydGllcygpOworY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgYmFja2dyb3VuZFBvc2l0aW9u
UHJvcGVydGllcygpOworY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgYmFja2dyb3VuZFJlcGVh
dFByb3BlcnRpZXMoKTsKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIGJvcmRlclByb3BlcnRp
ZXMoKTsKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIGJvcmRlckFicmlkZ2VkUHJvcGVydGll
cygpOworY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgYm9yZGVyQm90dG9tUHJvcGVydGllcygp
OworY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgYm9yZGVyQ29sb3JQcm9wZXJ0aWVzKCk7Citj
b25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBib3JkZXJJbWFnZVByb3BlcnRpZXMoKTsKK2NvbnN0
IFNob3J0aGFuZFByb3BlcnRpZXMmIGJvcmRlckxlZnRQcm9wZXJ0aWVzKCk7Citjb25zdCBTaG9y
dGhhbmRQcm9wZXJ0aWVzJiBib3JkZXJSYWRpdXNQcm9wZXJ0aWVzKCk7Citjb25zdCBTaG9ydGhh
bmRQcm9wZXJ0aWVzJiBib3JkZXJSaWdodFByb3BlcnRpZXMoKTsKK2NvbnN0IFNob3J0aGFuZFBy
b3BlcnRpZXMmIGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzKCk7Citjb25zdCBTaG9ydGhhbmRQcm9w
ZXJ0aWVzJiBib3JkZXJTdHlsZVByb3BlcnRpZXMoKTsKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRp
ZXMmIGJvcmRlclRvcFByb3BlcnRpZXMoKTsKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIGJv
cmRlcldpZHRoUHJvcGVydGllcygpOworY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgbGlzdFN0
eWxlUHJvcGVydGllcygpOworY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYgZm9udFByb3BlcnRp
ZXMoKTsKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIG1hcmdpblByb3BlcnRpZXMoKTsKK2Nv
bnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIG91dGxpbmVQcm9wZXJ0aWVzKCk7Citjb25zdCBTaG9y
dGhhbmRQcm9wZXJ0aWVzJiBvdmVyZmxvd1Byb3BlcnRpZXMoKTsKK2NvbnN0IFNob3J0aGFuZFBy
b3BlcnRpZXMmIHBhZGRpbmdQcm9wZXJ0aWVzKCk7Citjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVz
JiB3ZWJraXRBbmltYXRpb25Qcm9wZXJ0aWVzKCk7Citjb25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVz
JiB3ZWJraXRCb3JkZXJBZnRlclByb3BlcnRpZXMoKTsKK2NvbnN0IFNob3J0aGFuZFByb3BlcnRp
ZXMmIHdlYmtpdEJvcmRlckJlZm9yZVByb3BlcnRpZXMoKTsKK2NvbnN0IFNob3J0aGFuZFByb3Bl
cnRpZXMmIHdlYmtpdEJvcmRlckVuZFByb3BlcnRpZXMoKTsKK2NvbnN0IFNob3J0aGFuZFByb3Bl
cnRpZXMmIHdlYmtpdEJvcmRlclN0YXJ0UHJvcGVydGllcygpOworY29uc3QgU2hvcnRoYW5kUHJv
cGVydGllcyYgd2Via2l0Q29sdW1uc1Byb3BlcnRpZXMoKTsKK2NvbnN0IFNob3J0aGFuZFByb3Bl
cnRpZXMmIHdlYmtpdENvbHVtblJ1bGVQcm9wZXJ0aWVzKCk7Citjb25zdCBTaG9ydGhhbmRQcm9w
ZXJ0aWVzJiB3ZWJraXRGbGV4Rmxvd1Byb3BlcnRpZXMoKTsKK2NvbnN0IFNob3J0aGFuZFByb3Bl
cnRpZXMmIHdlYmtpdE1hcmdpbkNvbGxhcHNlUHJvcGVydGllcygpOworY29uc3QgU2hvcnRoYW5k
UHJvcGVydGllcyYgd2Via2l0TWFycXVlZVByb3BlcnRpZXMoKTsKK2NvbnN0IFNob3J0aGFuZFBy
b3BlcnRpZXMmIHdlYmtpdE1hc2tQcm9wZXJ0aWVzKCk7Citjb25zdCBTaG9ydGhhbmRQcm9wZXJ0
aWVzJiB3ZWJraXRNYXNrUG9zaXRpb25Qcm9wZXJ0aWVzKCk7Citjb25zdCBTaG9ydGhhbmRQcm9w
ZXJ0aWVzJiB3ZWJraXRNYXNrUmVwZWF0UHJvcGVydGllcygpOworY29uc3QgU2hvcnRoYW5kUHJv
cGVydGllcyYgd2Via2l0VGV4dEVtcGhhc2lzUHJvcGVydGllcygpOworY29uc3QgU2hvcnRoYW5k
UHJvcGVydGllcyYgd2Via2l0VGV4dFN0cm9rZVByb3BlcnRpZXMoKTsKK2NvbnN0IFNob3J0aGFu
ZFByb3BlcnRpZXMmIHdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0aWVzKCk7Citjb25zdCBTaG9ydGhh
bmRQcm9wZXJ0aWVzJiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzKCk7Citjb25zdCBT
aG9ydGhhbmRQcm9wZXJ0aWVzJiB3ZWJraXRXcmFwUHJvcGVydGllcygpOwogCiAvLyBSZXR1cm5z
IGFuIGVtcHR5IGxpc3QgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCBhIHNob3J0aGFuZAotY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmRGb3JQcm9wZXJ0eShpbnQpOworY29uc3QgU2hv
cnRoYW5kUHJvcGVydGllcyYgbG9uZ2hhbmRzRm9yUHJvcGVydHkoaW50KTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5k
ZXggN2YwMDg1ZTY5ZDliNmM0NTU4MzY5YmMyNjBlYmY0MDM2MWZiOTViMC4uOTMxMjNiNTM5ZWM5
YzU2OGRiNGExNDYxOGM5YWVhMjNiYWRjZjJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVBy
b3BlcnR5U2V0LmNwcApAQCAtMjQsNyArMjQsNiBAQAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgi
CiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlMb25naGFuZC5oIgotI2luY2x1ZGUgIkNTU1Byb3BlcnR5
TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ1NTVmFs
dWVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCkBAIC0xMDMsMTUgKzEwMiwxNSBA
QCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlWYWx1ZShpbnQgcHJvcGVydHlJ
RCkgY29uc3QKICAgICAvLyBTaG9ydGhhbmQgYW5kIDQtdmFsdWVzIHByb3BlcnRpZXMKICAgICBz
d2l0Y2ggKHByb3BlcnR5SUQpIHsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZzoK
LSAgICAgICAgcmV0dXJuIGJvcmRlclNwYWNpbmdWYWx1ZShib3JkZXJTcGFjaW5nTG9uZ2hhbmQo
KSk7CisgICAgICAgIHJldHVybiBib3JkZXJTcGFjaW5nVmFsdWUoYm9yZGVyU3BhY2luZ1Byb3Bl
cnRpZXMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbjoKLSAgICAg
ICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShiYWNrZ3JvdW5kUG9zaXRpb25Mb25n
aGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShiYWNrZ3Jv
dW5kUG9zaXRpb25Qcm9wZXJ0aWVzKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UmVwZWF0OgotICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGJhY2tncm91
bmRSZXBlYXRMb25naGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRW
YWx1ZShiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllcygpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZDoKLSAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShiYWNr
Z3JvdW5kTG9uZ2hhbmQoKSk7CisgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFs
dWUoYmFja2dyb3VuZFByb3BlcnRpZXMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjog
ewotICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kIHByb3BlcnRpZXNbM10gPSB7IGJv
cmRlcldpZHRoTG9uZ2hhbmQoKSwgYm9yZGVyU3R5bGVMb25naGFuZCgpLCBib3JkZXJDb2xvckxv
bmdoYW5kKCkgfTsKKyAgICAgICAgY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyBwcm9wZXJ0aWVz
WzNdID0geyBib3JkZXJXaWR0aFByb3BlcnRpZXMoKSwgYm9yZGVyU3R5bGVQcm9wZXJ0aWVzKCks
IGJvcmRlckNvbG9yUHJvcGVydGllcygpIH07CiAgICAgICAgIFN0cmluZyByZXM7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVzKTsgKytp
KSB7CiAgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBnZXRDb21tb25WYWx1ZShwcm9wZXJ0aWVz
W2ldKTsKQEAgLTEyNCw0NyArMTIzLDQ3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRQ
cm9wZXJ0eVZhbHVlKGludCBwcm9wZXJ0eUlEKSBjb25zdAogICAgICAgICByZXR1cm4gcmVzOwog
ICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wOgotICAgICAgICByZXR1cm4gZ2V0
U2hvcnRoYW5kVmFsdWUoYm9yZGVyVG9wTG9uZ2hhbmQoKSk7CisgICAgICAgIHJldHVybiBnZXRT
aG9ydGhhbmRWYWx1ZShib3JkZXJUb3BQcm9wZXJ0aWVzKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJSaWdodDoKLSAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKGJvcmRlclJp
Z2h0TG9uZ2hhbmQoKSk7CisgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShib3JkZXJS
aWdodFByb3BlcnRpZXMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbToKLSAg
ICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKGJvcmRlckJvdHRvbUxvbmdoYW5kKCkpOwor
ICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUoYm9yZGVyQm90dG9tUHJvcGVydGllcygp
KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdDoKLSAgICAgICAgcmV0dXJuIGdldFNo
b3J0aGFuZFZhbHVlKGJvcmRlckxlZnRMb25naGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIGdldFNo
b3J0aGFuZFZhbHVlKGJvcmRlckxlZnRQcm9wZXJ0aWVzKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlPdXRsaW5lOgotICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUob3V0bGluZUxvbmdo
YW5kKCkpOworICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUob3V0bGluZVByb3BlcnRp
ZXMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yOgotICAgICAgICByZXR1cm4g
Z2V0NFZhbHVlcyhib3JkZXJDb2xvckxvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4gZ2V0NFZh
bHVlcyhib3JkZXJDb2xvclByb3BlcnRpZXMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
cldpZHRoOgotICAgICAgICByZXR1cm4gZ2V0NFZhbHVlcyhib3JkZXJXaWR0aExvbmdoYW5kKCkp
OworICAgICAgICByZXR1cm4gZ2V0NFZhbHVlcyhib3JkZXJXaWR0aFByb3BlcnRpZXMoKSk7CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlOgotICAgICAgICByZXR1cm4gZ2V0NFZhbHVl
cyhib3JkZXJTdHlsZUxvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4gZ2V0NFZhbHVlcyhib3Jk
ZXJTdHlsZVByb3BlcnRpZXMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhGbG93
OgotICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUod2Via2l0RmxleEZsb3dMb25naGFu
ZCgpKTsKKyAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHdlYmtpdEZsZXhGbG93UHJv
cGVydGllcygpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udDoKICAgICAgICAgcmV0dXJuIGZv
bnRWYWx1ZSgpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW46Ci0gICAgICAgIHJldHVybiBn
ZXQ0VmFsdWVzKG1hcmdpbkxvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4gZ2V0NFZhbHVlcyht
YXJnaW5Qcm9wZXJ0aWVzKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzoKLSAgICAg
ICAgcmV0dXJuIGdldENvbW1vblZhbHVlKG92ZXJmbG93TG9uZ2hhbmQoKSk7CisgICAgICAgIHJl
dHVybiBnZXRDb21tb25WYWx1ZShvdmVyZmxvd1Byb3BlcnRpZXMoKSk7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVBhZGRpbmc6Ci0gICAgICAgIHJldHVybiBnZXQ0VmFsdWVzKHBhZGRpbmdMb25naGFu
ZCgpKTsKKyAgICAgICAgcmV0dXJuIGdldDRWYWx1ZXMocGFkZGluZ1Byb3BlcnRpZXMoKSk7CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZToKLSAgICAgICAgcmV0dXJuIGdldFNob3J0aGFu
ZFZhbHVlKGxpc3RTdHlsZUxvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5k
VmFsdWUobGlzdFN0eWxlUHJvcGVydGllcygpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFza1Bvc2l0aW9uOgotICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHdl
YmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNo
b3J0aGFuZFZhbHVlKHdlYmtpdE1hc2tQb3NpdGlvblByb3BlcnRpZXMoKSk7CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQ6Ci0gICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hv
cnRoYW5kVmFsdWUod2Via2l0TWFza1JlcGVhdExvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4g
Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHdlYmtpdE1hc2tSZXBlYXRQcm9wZXJ0aWVzKCkpOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrOgotICAgICAgICByZXR1cm4gZ2V0TGF5ZXJl
ZFNob3J0aGFuZFZhbHVlKHdlYmtpdE1hc2tMb25naGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIGdl
dExheWVyZWRTaG9ydGhhbmRWYWx1ZSh3ZWJraXRNYXNrUHJvcGVydGllcygpKTsKICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luOgotICAgICAgICByZXR1cm4gZ2V0U2hv
cnRoYW5kVmFsdWUod2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQoKSk7CisgICAgICAgIHJl
dHVybiBnZXRTaG9ydGhhbmRWYWx1ZSh3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzKCkp
OwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uOgotICAgICAgICByZXR1cm4g
Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpKTsKKyAg
ICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSh3ZWJraXRUcmFuc2l0aW9uUHJv
cGVydGllcygpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uOgotICAgICAg
ICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5k
KCkpOworICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHdlYmtpdEFuaW1h
dGlvblByb3BlcnRpZXMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXA6Ci0gICAg
ICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZSh3ZWJraXRXcmFwTG9uZ2hhbmQoKSk7CisgICAg
ICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZSh3ZWJraXRXcmFwUHJvcGVydGllcygpKTsKICNp
ZiBFTkFCTEUoU1ZHKQogICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXI6IHsKICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlNYXJr
ZXJTdGFydCk7CkBAIC0xNzYsMTAgKzE3NSwxMCBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6
Z2V0UHJvcGVydHlWYWx1ZShpbnQgcHJvcGVydHlJRCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKLVN0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojpib3JkZXJTcGFjaW5nVmFsdWUoY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQpIGNvbnN0CitTdHJpbmcgU3R5bGVQcm9w
ZXJ0eVNldDo6Ym9yZGVyU3BhY2luZ1ZhbHVlKGNvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIGxv
bmdoYW5kcykgY29uc3QKIHsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGhvcml6b250YWxWYWx1ZSA9
IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpWzBdKTsKLSAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHZlcnRpY2FsVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5k
LnByb3BlcnRpZXMoKVsxXSk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBob3Jpem9udGFsVmFsdWUg
PSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kcy5wcm9wZXJ0aWVzKClbMF0pOworICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gdmVydGljYWxWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hh
bmRzLnByb3BlcnRpZXMoKVsxXSk7CiAKICAgICBpZiAoIWhvcml6b250YWxWYWx1ZSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMjQ4LDEzICsyNDcsMTMgQEAgU3RyaW5nIFN0eWxlUHJv
cGVydHlTZXQ6OmZvbnRWYWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygp
OwogfQogCi1TdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0NFZhbHVlcyhjb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBsb25naGFuZCkgY29uc3QKK1N0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojpn
ZXQ0VmFsdWVzKGNvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmIGxvbmdoYW5kcykgY29uc3QKIHsK
ICAgICAvLyBBc3N1bWUgdGhlIHByb3BlcnRpZXMgYXJlIGluIHRoZSB1c3VhbCBvcmRlciB0b3As
IHJpZ2h0LCBib3R0b20sIGxlZnQuCi0gICAgUmVmUHRyPENTU1ZhbHVlPiB0b3BWYWx1ZSA9IGdl
dFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpWzBdKTsKLSAgICBSZWZQdHI8
Q1NTVmFsdWU+IHJpZ2h0VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3Bl
cnRpZXMoKVsxXSk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBib3R0b21WYWx1ZSA9IGdldFByb3Bl
cnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpWzJdKTsKLSAgICBSZWZQdHI8Q1NTVmFs
dWU+IGxlZnRWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygp
WzNdKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1
ZShsb25naGFuZHMucHJvcGVydGllcygpWzBdKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHJpZ2h0
VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kcy5wcm9wZXJ0aWVzKClbMV0pOwor
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gYm90dG9tVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxv
bmdoYW5kcy5wcm9wZXJ0aWVzKClbMl0pOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gbGVmdFZhbHVl
ID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZHMucHJvcGVydGllcygpWzNdKTsKIAogICAg
IC8vIEFsbCA0IHByb3BlcnRpZXMgbXVzdCBiZSBzcGVjaWZpZWQuCiAgICAgaWYgKCF0b3BWYWx1
ZSB8fCAhcmlnaHRWYWx1ZSB8fCAhYm90dG9tVmFsdWUgfHwgIWxlZnRWYWx1ZSkKQEAgLTI3NSwx
NyArMjc0LDE3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXQ0VmFsdWVzKGNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25zdAogICAgIHJldHVybiByZXM7CiB9CiAK
LVN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQpIGNvbnN0CitTdHJpbmcgU3R5bGVQcm9wZXJ0
eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMm
IGxvbmdoYW5kcykgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzOwogCi0gICAgY29uc3QgdW5zaWdu
ZWQgc2l6ZSA9IGxvbmdoYW5kLmxlbmd0aCgpOworICAgIGNvbnN0IHVuc2lnbmVkIHNpemUgPSBs
b25naGFuZHMubGVuZ3RoKCk7CiAgICAgLy8gQmVnaW4gYnkgY29sbGVjdGluZyB0aGUgcHJvcGVy
dGllcyBpbnRvIGFuIGFycmF5LgogICAgIFZlY3RvcjwgUmVmUHRyPENTU1ZhbHVlPiA+IHZhbHVl
cyhzaXplKTsKICAgICBzaXplX3QgbnVtTGF5ZXJzID0gMDsKIAogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgdmFsdWVzW2ldID0gZ2V0UHJvcGVydHlD
U1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbaV0pOworICAgICAgICB2YWx1ZXNbaV0gPSBn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kcy5wcm9wZXJ0aWVzKClbaV0pOwogICAgICAgICBp
ZiAodmFsdWVzW2ldKSB7CiAgICAgICAgICAgICBpZiAodmFsdWVzW2ldLT5pc1ZhbHVlTGlzdCgp
KSB7CiAgICAgICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2Fz
dDxDU1NWYWx1ZUxpc3QqPih2YWx1ZXNbaV0uZ2V0KCkpOwpAQCAtMzExLDcgKzMxMCw3IEBAIFN0
cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYgbG9uCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVz
W2pdOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIENvbG9yIG9ubHkgYmVsb25ncyBpbiB0aGUg
bGFzdCBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgaWYgKGxvbmdoYW5kLnByb3BlcnRpZXMo
KVtqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikgeworICAgICAgICAgICAgICAgICAg
ICBpZiAobG9uZ2hhbmRzLnByb3BlcnRpZXMoKVtqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT0gbnVtTGF5ZXJzIC0gMSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7CiAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoaSAhPSAwKSAvLyBPdGhlciBzaW5nbGV0b25zIG9ubHkgYmVsb25nIGlu
IHRoZSBmaXJzdCBsYXllci4KQEAgLTMyMiwxMCArMzIxLDEwIEBAIFN0cmluZyBTdHlsZVByb3Bl
cnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFu
ZCYgbG9uCiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHJlcG9ydCBiYWNrZ3JvdW5kLXJlcGVh
dCBhcyBpdCB3YXMgd3JpdHRlbiBpbiB0aGUgQ1NTLiBJZiB0aGUgcHJvcGVydHkgaXMgaW1wbGlj
aXQsCiAgICAgICAgICAgICAvLyB0aGVuIGl0IHdhcyB3cml0dGVuIHdpdGggb25seSBvbmUgdmFs
dWUuIEhlcmUgd2UgZmlndXJlIG91dCB3aGljaCB2YWx1ZSB0aGF0IHdhcyBzbyB3ZSBjYW4KICAg
ICAgICAgICAgIC8vIHJlcG9ydCBiYWNrIGNvcnJlY3RseS4KLSAgICAgICAgICAgIGlmIChsb25n
aGFuZC5wcm9wZXJ0aWVzKClbal0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCAmJiBp
c1Byb3BlcnR5SW1wbGljaXQobG9uZ2hhbmQucHJvcGVydGllcygpW2pdKSkgeworICAgICAgICAg
ICAgaWYgKGxvbmdoYW5kcy5wcm9wZXJ0aWVzKClbal0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UmVwZWF0WCAmJiBpc1Byb3BlcnR5SW1wbGljaXQobG9uZ2hhbmRzLnByb3BlcnRpZXMoKVtqXSkp
IHsKIAogICAgICAgICAgICAgICAgIC8vIEJVRyA0OTA1NTogbWFrZSBzdXJlIHRoZSB2YWx1ZSB3
YXMgbm90IHJlc2V0IGluIHRoZSBsYXllciBjaGVjayBqdXN0IGFib3ZlLgotICAgICAgICAgICAg
ICAgIGlmIChqIDwgc2l6ZSAtIDEgJiYgbG9uZ2hhbmQucHJvcGVydGllcygpW2ogKyAxXSA9PSBD
U1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZICYmIHZhbHVlKSB7CisgICAgICAgICAgICAgICAg
aWYgKGogPCBzaXplIC0gMSAmJiBsb25naGFuZHMucHJvcGVydGllcygpW2ogKyAxXSA9PSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZICYmIHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZT4geVZhbHVlOwogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NT
VmFsdWU+IG5leHRWYWx1ZSA9IHZhbHVlc1tqICsgMV07CiAgICAgICAgICAgICAgICAgICAgIGlm
IChuZXh0VmFsdWUtPmlzVmFsdWVMaXN0KCkpCkBAIC0zNzYsMTIgKzM3NSwxMiBAQCBTdHJpbmcg
U3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIGxvbgogICAgIHJldHVybiByZXM7CiB9CiAKLVN0cmluZyBTdHlsZVByb3Bl
cnR5U2V0OjpnZXRTaG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25n
aGFuZCkgY29uc3QKK1N0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRTaG9ydGhhbmRWYWx1ZShj
b25zdCBTaG9ydGhhbmRQcm9wZXJ0aWVzJiBsb25naGFuZHMpIGNvbnN0CiB7CiAgICAgU3RyaW5n
IHJlczsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9uZ2hhbmQubGVuZ3RoKCk7ICsr
aSkgewotICAgICAgICBpZiAoIWlzUHJvcGVydHlJbXBsaWNpdChsb25naGFuZC5wcm9wZXJ0aWVz
KClbaV0pKSB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVy
dHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbaV0pOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsb25naGFuZHMubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAoIWlzUHJv
cGVydHlJbXBsaWNpdChsb25naGFuZHMucHJvcGVydGllcygpW2ldKSkgeworICAgICAgICAgICAg
UmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmRzLnBy
b3BlcnRpZXMoKVtpXSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogcHJvdmlkZSBkZWZhdWx0IHZh
bHVlIGlmICF2YWx1ZSBvciB2YWx1ZSBpcyBpbml0aWFsIHZhbHVlCiAgICAgICAgICAgICBpZiAo
dmFsdWUgJiYgIXZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFyZXMuaXNOdWxsKCkpCkBAIC0zOTQsMTEgKzM5MywxMSBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0
eVNldDo6Z2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hh
bmQpCiB9CiAKIC8vIG9ubHkgcmV0dXJucyBhIG5vbi1udWxsIHZhbHVlIGlmIGFsbCBwcm9wZXJ0
aWVzIGhhdmUgdGhlIHNhbWUsIG5vbi1udWxsIHZhbHVlCi1TdHJpbmcgU3R5bGVQcm9wZXJ0eVNl
dDo6Z2V0Q29tbW9uVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQpIGNv
bnN0CitTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0Q29tbW9uVmFsdWUoY29uc3QgU2hvcnRo
YW5kUHJvcGVydGllcyYgbG9uZ2hhbmRzKSBjb25zdAogewogICAgIFN0cmluZyByZXM7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kpIHsKLSAgICAg
ICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQu
cHJvcGVydGllcygpW2ldKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9uZ2hhbmRz
Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFBy
b3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmRzLnByb3BlcnRpZXMoKVtpXSk7CiAgICAgICAgIC8vIEZJ
WE1FOiBDU1NJbml0aWFsVmFsdWU6OmNzc1RleHQgc2hvdWxkIGdlbmVyYXRlIHRoZSByaWdodCB2
YWx1ZS4KICAgICAgICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkKICAg
ICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTQyMSwxMCArNDIwLDEwIEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IFN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHBy
b3BlcnR5SUQpIGNvbnN0CiAKIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlU2hvcnRoYW5k
UHJvcGVydHkoaW50IHByb3BlcnR5SUQpCiB7Ci0gICAgQ1NTUHJvcGVydHlMb25naGFuZCBsb25n
aGFuZCA9IGxvbmdoYW5kRm9yUHJvcGVydHkocHJvcGVydHlJRCk7Ci0gICAgaWYgKCFsb25naGFu
ZC5sZW5ndGgoKSkKKyAgICBTaG9ydGhhbmRQcm9wZXJ0aWVzIHNob3J0aGFuZCA9IGxvbmdoYW5k
c0ZvclByb3BlcnR5KHByb3BlcnR5SUQpOworICAgIGlmICghc2hvcnRoYW5kLmxlbmd0aCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHJlbW92ZVByb3BlcnRpZXNJblNldChs
b25naGFuZC5wcm9wZXJ0aWVzKCksIGxvbmdoYW5kLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gcmVt
b3ZlUHJvcGVydGllc0luU2V0KHNob3J0aGFuZC5wcm9wZXJ0aWVzKCksIHNob3J0aGFuZC5sZW5n
dGgoKSk7CiB9CiAKIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlUHJvcGVydHkoaW50IHBy
b3BlcnR5SUQsIFN0cmluZyogcmV0dXJuVGV4dCkKQEAgLTQ1OSwxMiArNDU4LDEyIEBAIGJvb2wg
U3R5bGVQcm9wZXJ0eVNldDo6cHJvcGVydHlJc0ltcG9ydGFudChpbnQgcHJvcGVydHlJRCkgY29u
c3QKICAgICBpZiAocHJvcGVydHkpCiAgICAgICAgIHJldHVybiBwcm9wZXJ0eS0+aXNJbXBvcnRh
bnQoKTsKIAotICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmRzID0gbG9uZ2hhbmRGb3JQ
cm9wZXJ0eShwcm9wZXJ0eUlEKTsKLSAgICBpZiAoIWxvbmdoYW5kcy5sZW5ndGgoKSkKKyAgICBT
aG9ydGhhbmRQcm9wZXJ0aWVzIHNob3J0aGFuZCA9IGxvbmdoYW5kc0ZvclByb3BlcnR5KHByb3Bl
cnR5SUQpOworICAgIGlmICghc2hvcnRoYW5kLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9uZ2hhbmRzLmxlbmd0aCgpOyAr
K2kpIHsKLSAgICAgICAgaWYgKCFwcm9wZXJ0eUlzSW1wb3J0YW50KGxvbmdoYW5kcy5wcm9wZXJ0
aWVzKClbaV0pKQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3Ro
KCk7ICsraSkgeworICAgICAgICBpZiAoIXByb3BlcnR5SXNJbXBvcnRhbnQoc2hvcnRoYW5kLnBy
b3BlcnRpZXMoKVtpXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJl
dHVybiB0cnVlOwpAQCAtNDk4LDE3ICs0OTcsMTcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0Ojpz
ZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXAK
IAogdm9pZCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gcHJwVmFsdWUsIGJvb2wgaW1wb3J0YW50KQogewotICAgIENTU1By
b3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmQgPSBsb25naGFuZEZvclByb3BlcnR5KHByb3BlcnR5SUQp
OwotICAgIGlmICghbG9uZ2hhbmQubGVuZ3RoKCkpIHsKKyAgICBTaG9ydGhhbmRQcm9wZXJ0aWVz
IHNob3J0aGFuZCA9IGxvbmdoYW5kc0ZvclByb3BlcnR5KHByb3BlcnR5SUQpOworICAgIGlmICgh
c2hvcnRoYW5kLmxlbmd0aCgpKSB7CiAgICAgICAgIHNldFByb3BlcnR5KENTU1Byb3BlcnR5KHBy
b3BlcnR5SUQsIHBycFZhbHVlLCBpbXBvcnRhbnQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIHJlbW92ZVByb3BlcnRpZXNJblNldChsb25naGFuZC5wcm9wZXJ0aWVzKCksIGxvbmdo
YW5kLmxlbmd0aCgpKTsKKyAgICByZW1vdmVQcm9wZXJ0aWVzSW5TZXQoc2hvcnRoYW5kLnByb3Bl
cnRpZXMoKSwgc2hvcnRoYW5kLmxlbmd0aCgpKTsKIAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFs
dWUgPSBwcnBWYWx1ZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9uZ2hhbmQubGVu
Z3RoKCk7ICsraSkKLSAgICAgICAgbV9wcm9wZXJ0aWVzLmFwcGVuZChDU1NQcm9wZXJ0eShsb25n
aGFuZC5wcm9wZXJ0aWVzKClbaV0sIHZhbHVlLCBpbXBvcnRhbnQpKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2kpCisgICAgICAgIG1fcHJvcGVy
dGllcy5hcHBlbmQoQ1NTUHJvcGVydHkoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgdmFsdWUs
IGltcG9ydGFudCkpOwogfQogCiB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KGNv
bnN0IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHkqIHNsb3QpCkBAIC02MDcsMTIg
KzYwNiwxMiBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6YXNUZXh0KCkgY29uc3QKICAgICAg
ICAgICAgIHNob3J0aGFuZFByb3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUJvcmRlcjsKICAgICAgICAg
ICAgIGlmIChzaG9ydGhhbmRQcm9wZXJ0eUFwcGVhcmVkLmdldChDU1NQcm9wZXJ0eUJvcmRlciAt
IGZpcnN0Q1NTUHJvcGVydHkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvcmRlckFicmlkZ2VkTG9uZ2hhbmQoKS5sZW5ndGgo
KSAmJiBzaG9ydGhhbmRQcm9wZXJ0eUlEOyBpKyspIHsKLSAgICAgICAgICAgICAgICBjb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZCA9ICooYm9yZGVyQWJyaWRnZWRMb25naGFuZCgp
LmxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uKClbaV0pOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGJvcmRlckFicmlkZ2VkUHJvcGVydGllcygpLmxlbmd0aCgpICYmIHNo
b3J0aGFuZFByb3BlcnR5SUQ7IGkrKykgeworICAgICAgICAgICAgICAgIGNvbnN0IFNob3J0aGFu
ZFByb3BlcnRpZXMmIHNob3J0aGFuZCA9ICooYm9yZGVyQWJyaWRnZWRQcm9wZXJ0aWVzKCkubG9u
Z2hhbmRzRm9ySW5pdGlhbGl6YXRpb24oKVtpXSk7CiAgICAgICAgICAgICAgICAgU3RyaW5nIGNv
bW1vblZhbHVlOwogICAgICAgICAgICAgICAgIGJvb2wgY29tbW9uSW1wb3J0YW5jZSA9IGZhbHNl
OwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbG9uZ2hhbmQubGVuZ3Ro
KCk7ICsraikgewotICAgICAgICAgICAgICAgICAgICBpbnQgaWQgPSBsb25naGFuZC5wcm9wZXJ0
aWVzKClbal07CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBzaG9ydGhh
bmQubGVuZ3RoKCk7ICsraikgeworICAgICAgICAgICAgICAgICAgICBpbnQgaWQgPSBzaG9ydGhh
bmQucHJvcGVydGllcygpW2pdOwogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+
IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShpZCk7CiAgICAgICAgICAgICAgICAgICAgIFN0
cmluZyBjdXJyZW50VmFsdWUgPSB2YWx1ZSA/IHZhbHVlLT5jc3NUZXh0KCkgOiBTdHJpbmcoKTsK
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0ltcG9ydGFudCA9IHByb3BlcnR5SXNJbXBvcnRh
bnQoaWQpOwpAQCAtNzQxLDcgKzc0MCw3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojphc1Rl
eHQoKSBjb25zdAogICAgIGlmIChwb3NpdGlvblhQcm9wICYmIHBvc2l0aW9uWVByb3AgJiYgcG9z
aXRpb25YUHJvcC0+aXNJbXBvcnRhbnQoKSA9PSBwb3NpdGlvbllQcm9wLT5pc0ltcG9ydGFudCgp
KSB7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoImJhY2tncm91bmQtcG9zaXRpb246ICIpOwogICAg
ICAgICBpZiAocG9zaXRpb25YUHJvcC0+dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSB8fCBwb3NpdGlv
bllQcm9wLT52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoYmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQoKSkp
OworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoYmFj
a2dyb3VuZFBvc2l0aW9uUHJvcGVydGllcygpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChwb3NpdGlvblhQcm9wLT52YWx1ZSgpLT5jc3NUZXh0KCkpOwogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiICIpOwpAQCAtNzYxLDcgKzc2MCw3IEBAIFN0cmluZyBT
dHlsZVByb3BlcnR5U2V0Ojphc1RleHQoKSBjb25zdAogICAgIGlmIChyZXBlYXRYUHJvcCAmJiBy
ZXBlYXRZUHJvcCAmJiByZXBlYXRYUHJvcC0+aXNJbXBvcnRhbnQoKSA9PSByZXBlYXRZUHJvcC0+
aXNJbXBvcnRhbnQoKSkgewogICAgICAgICByZXN1bHQuYXBwZW5kKCJiYWNrZ3JvdW5kLXJlcGVh
dDogIik7CiAgICAgICAgIGlmIChyZXBlYXRYUHJvcC0+dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSB8
fCByZXBlYXRZUHJvcC0+dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSkKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGJhY2tncm91bmRSZXBlYXRMb25naGFu
ZCgpKSk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGdldExheWVyZWRTaG9ydGhhbmRWYWx1
ZShiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllcygpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChyZXBlYXRYUHJvcC0+dmFsdWUoKS0+Y3NzVGV4dCgpKTsKICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiAiKTsKQEAgLTgwNCw3ICs4MDMsNyBAQCB2b2lkIFN0
eWxlUHJvcGVydHlTZXQ6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+
JiB1cmxzLCBDU1NTdHlsZQogCiAvLyBUaGlzIGlzIHRoZSBsaXN0IG9mIHByb3BlcnRpZXMgd2Ug
d2FudCB0byBjb3B5IGluIHRoZSBjb3B5QmxvY2tQcm9wZXJ0aWVzKCkgZnVuY3Rpb24uCiAvLyBJ
dCBpcyB0aGUgbGlzdCBvZiBDU1MgcHJvcGVydGllcyB0aGF0IGFwcGx5IHNwZWNpYWxseSB0byBi
bG9jay1sZXZlbCBlbGVtZW50cy4KLXN0YXRpYyBjb25zdCBpbnQgYmxvY2tQcm9wZXJ0aWVzW10g
PSB7CitzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBibG9ja1Byb3BlcnRpZXNbXSA9IHsKICAg
ICBDU1NQcm9wZXJ0eU9ycGhhbnMsCiAgICAgQ1NTUHJvcGVydHlPdmVyZmxvdywgLy8gVGhpcyBj
YW4gYmUgYWxzbyBiZSBhcHBsaWVkIHRvIHJlcGxhY2VkIGVsZW1lbnRzCiAgICAgQ1NTUHJvcGVy
dHlXZWJraXRBc3BlY3RSYXRpbywKQEAgLTg0MCw3ICs4MzksNyBAQCB2b2lkIFN0eWxlUHJvcGVy
dHlTZXQ6OnJlbW92ZUJsb2NrUHJvcGVydGllcygpCiAgICAgcmVtb3ZlUHJvcGVydGllc0luU2V0
KGJsb2NrUHJvcGVydGllcywgbnVtQmxvY2tQcm9wZXJ0aWVzKTsKIH0KIAotYm9vbCBTdHlsZVBy
b3BlcnR5U2V0OjpyZW1vdmVQcm9wZXJ0aWVzSW5TZXQoY29uc3QgaW50KiBzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKK2Jvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlUHJvcGVydGllc0luU2V0KGNv
bnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmIChtX3By
b3BlcnRpZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MjYsNyArOTI1
LDcgQEAgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBTdHlsZVByb3BlcnR5U2V0Ojpjb3B5
KCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUHJvcGVydHlTZXQobV9wcm9w
ZXJ0aWVzKSk7CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gU3R5bGVQcm9wZXJ0
eVNldDo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBpbnQqIHNldCwgdW5zaWduZWQgbGVuZ3Ro
KSBjb25zdAorUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBTdHlsZVByb3BlcnR5U2V0Ojpj
b3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVu
Z3RoKSBjb25zdAogewogICAgIFZlY3RvcjxDU1NQcm9wZXJ0eT4gbGlzdDsKICAgICBsaXN0LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnR5U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
eVNldC5oCmluZGV4IDRiZmY1OWEzYjVhZWEzNTdhYjViNzJiYTAyZWNjM2FkZjMxNjg4NGEuLjg2
ZGM0NmQ0YjQ2YmQ5YmZhZWJlNmZiMzZiYjRjOTQxNmNmMzBjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydHlTZXQuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNTU1BhcnNl
ck1vZGUuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1By
b3BlcnR5LmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9M
aXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTMxLDEwICszMiwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDU1NSdWxlOwotY2xhc3MgQ1NTUHJvcGVydHlMb25naGFuZDsKIGNsYXNzIENTU1N0
eWxlRGVjbGFyYXRpb247CiBjbGFzcyBLVVJMOwogY2xhc3MgUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uOworY2xhc3MgU2hvcnRoYW5kUHJvcGVydGllczsKIGNsYXNzIFN0eWxlZEVsZW1l
bnQ7CiAKIGNsYXNzIFN0eWxlUHJvcGVydHlTZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVBy
b3BlcnR5U2V0PiB7CkBAIC04Myw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8
U3R5bGVQcm9wZXJ0eVNldD4gY29weUJsb2NrUHJvcGVydGllcygpIGNvbnN0OwogICAgIHZvaWQg
cmVtb3ZlQmxvY2tQcm9wZXJ0aWVzKCk7Ci0gICAgYm9vbCByZW1vdmVQcm9wZXJ0aWVzSW5TZXQo
Y29uc3QgaW50KiBzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgYm9vbCByZW1vdmVQcm9wZXJ0
aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogCiAg
ICAgdm9pZCBtZXJnZShjb25zdCBTdHlsZVByb3BlcnR5U2V0KiwgYm9vbCBhcmdPdmVycmlkZXNP
bkNvbmZsaWN0ID0gdHJ1ZSk7CiAKQEAgLTk5LDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqKTsKICAg
ICB2b2lkIHJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKGNvbnN0IENTU1N0eWxlRGVjbGFyYXRp
b24qKTsKIAotICAgIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gY29weVByb3BlcnRpZXNJ
blNldChjb25zdCBpbnQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKKyAgICBQYXNzUmVm
UHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVy
dHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OwogICAgIAogICAgIFN0cmluZyBhc1Rl
eHQoKSBjb25zdDsKICAgICAKQEAgLTExOSwxMSArMTIwLDExIEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIAotICAgIFN0cmluZyBnZXRTaG9ydGhhbmRWYWx1
ZShjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7Ci0gICAgU3RyaW5nIGdldENvbW1v
blZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmKSBjb25zdDsKLSAgICBTdHJpbmcgZ2V0
TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmKSBjb25zdDsK
LSAgICBTdHJpbmcgZ2V0NFZhbHVlcyhjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7
Ci0gICAgU3RyaW5nIGJvcmRlclNwYWNpbmdWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JikgY29uc3Q7CisgICAgU3RyaW5nIGdldFNob3J0aGFuZFZhbHVlKGNvbnN0IFNob3J0aGFuZFBy
b3BlcnRpZXMmKSBjb25zdDsKKyAgICBTdHJpbmcgZ2V0Q29tbW9uVmFsdWUoY29uc3QgU2hvcnRo
YW5kUHJvcGVydGllcyYpIGNvbnN0OworICAgIFN0cmluZyBnZXRMYXllcmVkU2hvcnRoYW5kVmFs
dWUoY29uc3QgU2hvcnRoYW5kUHJvcGVydGllcyYpIGNvbnN0OworICAgIFN0cmluZyBnZXQ0VmFs
dWVzKGNvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmKSBjb25zdDsKKyAgICBTdHJpbmcgYm9yZGVy
U3BhY2luZ1ZhbHVlKGNvbnN0IFNob3J0aGFuZFByb3BlcnRpZXMmKSBjb25zdDsKICAgICBTdHJp
bmcgZm9udFZhbHVlKCkgY29uc3Q7CiAgICAgYm9vbCBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlm
RXhwbGljaXQoaW50IHByb3BlcnR5SUQsIFN0cmluZ0J1aWxkZXImIHJlc3VsdCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCBlNjczNzdkMGYyNmM5
OTdiN2NhYzhiYjJhM2ZlZmIwYWVlMTcxNWFjLi4xZjEwZDAyMjY4NzVlYjlkMzhjOWEzYWU0MWNi
NzJhNjE1ODgzYWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdT
dHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBA
IC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRWRpdGluZyBzdHlsZSBw
cm9wZXJ0aWVzIG11c3QgYmUgcHJlc2VydmVkIGR1cmluZyBlZGl0aW5nIG9wZXJhdGlvbi4KIC8v
IGUuZy4gd2hlbiBhIHVzZXIgaW5zZXJ0cyBhIG5ldyBwYXJhZ3JhcGgsIGFsbCBwcm9wZXJ0aWVz
IGxpc3RlZCBoZXJlIG11c3QgYmUgY29waWVkIHRvIHRoZSBuZXcgcGFyYWdyYXBoLgotc3RhdGlj
IGNvbnN0IGludCBlZGl0aW5nUHJvcGVydGllc1tdID0geworc3RhdGljIGNvbnN0IENTU1Byb3Bl
cnR5SUQgZWRpdGluZ1Byb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvciwKICAgICBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uLAogCkBAIC02MDMsNyArNjAzLDcg
QEAgdm9pZCBFZGl0aW5nU3R5bGU6OmNvbGxhcHNlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzKCkK
IH0KIAogLy8gQ1NTIHByb3BlcnRpZXMgdGhhdCBjcmVhdGUgYSB2aXN1YWwgZGlmZmVyZW5jZSBv
bmx5IHdoZW4gYXBwbGllZCB0byB0ZXh0Lgotc3RhdGljIGNvbnN0IGludCB0ZXh0T25seVByb3Bl
cnRpZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHRleHRPbmx5UHJvcGVydGll
c1tdID0gewogICAgIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sCiAgICAgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwKICAgICBDU1NQcm9wZXJ0eUZvbnRTdHlsZSwK
QEAgLTEwODQsOSArMTA4NCw5IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1
bGVzRm9yU2VyaWFsaXphdGlvbihTdHlsZWRFbGVtZW50KiBlbGVtZW50KQogc3RhdGljIHZvaWQg
cmVtb3ZlUHJvcGVydGllc0luU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCogc3R5bGVUb1JlbW92ZVBy
b3BlcnRpZXNGcm9tLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKIHsKICAgICB1bnNpZ25lZCBw
cm9wZXJ0eUNvdW50ID0gc3R5bGUtPnByb3BlcnR5Q291bnQoKTsKLSAgICBWZWN0b3I8aW50PiBw
cm9wZXJ0aWVzVG9SZW1vdmUocHJvcGVydHlDb3VudCk7CisgICAgVmVjdG9yPENTU1Byb3BlcnR5
SUQ+IHByb3BlcnRpZXNUb1JlbW92ZShwcm9wZXJ0eUNvdW50KTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgcHJvcGVydHlDb3VudDsgKytpKQotICAgICAgICBwcm9wZXJ0aWVzVG9SZW1v
dmVbaV0gPSBzdHlsZS0+cHJvcGVydHlBdChpKS5pZCgpOworICAgICAgICBwcm9wZXJ0aWVzVG9S
ZW1vdmVbaV0gPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihzdHlsZS0+cHJvcGVydHlBdChp
KS5pZCgpKTsKIAogICAgIHN0eWxlVG9SZW1vdmVQcm9wZXJ0aWVzRnJvbS0+cmVtb3ZlUHJvcGVy
dGllc0luU2V0KHByb3BlcnRpZXNUb1JlbW92ZS5kYXRhKCksIHByb3BlcnRpZXNUb1JlbW92ZS5z
aXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25C
YXNlLmNwcAppbmRleCBjNTljNTVkYmExZWE0YmMyMzk1M2Q0YzZmOGUzYTJkMzRmNDA3ZGU2Li5j
MzEwZTU1OGM3MzQ1NWZiMWRjMTUyYTg0MWE5YmVkZTJkNzk5NGNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtODY2LDExICs4NjYs
MTEgQEAgcHJpdmF0ZToKIAogY2xhc3MgU2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyIDogcHVibGlj
IFByb3BlcnR5V3JhcHBlckJhc2UgewogcHVibGljOgotICAgIFNob3J0aGFuZFByb3BlcnR5V3Jh
cHBlcihpbnQgcHJvcGVydHksIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKQor
ICAgIFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcihpbnQgcHJvcGVydHksIGNvbnN0IFNob3J0aGFu
ZFByb3BlcnRpZXMmIHNob3J0aGFuZCkKICAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXJCYXNlKHBy
b3BlcnR5KQogICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5k
Lmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgICAgIFByb3BlcnR5V3JhcHBlckJhc2UqIHdyYXBw
ZXIgPSB3cmFwcGVyRm9yUHJvcGVydHkobG9uZ2hhbmQucHJvcGVydGllcygpW2ldKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytpKSB7Cisg
ICAgICAgICAgICBQcm9wZXJ0eVdyYXBwZXJCYXNlKiB3cmFwcGVyID0gd3JhcHBlckZvclByb3Bl
cnR5KHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0pOwogICAgICAgICAgICAgaWYgKHdyYXBwZXIp
CiAgICAgICAgICAgICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLmFwcGVuZCh3cmFwcGVyKTsKICAg
ICAgICAgfQpAQCAtMTE2OSw3ICsxMTY5LDcgQEAgc3RhdGljIHZvaWQgYWRkU2hvcnRoYW5kUHJv
cGVydGllcygpCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgo
YW5pbWF0YWJsZVNob3J0aGFuZFByb3BlcnRpZXMpOyArK2kpIHsKICAgICAgICAgaW50IHByb3Bl
cnR5SUQgPSBhbmltYXRhYmxlU2hvcnRoYW5kUHJvcGVydGllc1tpXTsKLSAgICAgICAgQ1NTUHJv
cGVydHlMb25naGFuZCBsb25naGFuZCA9IGxvbmdoYW5kRm9yUHJvcGVydHkocHJvcGVydHlJRCk7
CisgICAgICAgIFNob3J0aGFuZFByb3BlcnRpZXMgbG9uZ2hhbmQgPSBsb25naGFuZHNGb3JQcm9w
ZXJ0eShwcm9wZXJ0eUlEKTsKICAgICAgICAgaWYgKGxvbmdoYW5kLmxlbmd0aCgpID4gMCkKICAg
ICAgICAgICAgIGFkZFByb3BlcnR5V3JhcHBlcihwcm9wZXJ0eUlELCBuZXcgU2hvcnRoYW5kUHJv
cGVydHlXcmFwcGVyKHByb3BlcnR5SUQsIGxvbmdoYW5kKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKaW5kZXgg
NzBkNjE5YjdlNDdhOTViZWUxMGQxZTU3MjQ4ODc5ZjNiMjkxYzEzOS4uMTJmOTM3OTQ4ZDc0Zjky
ZjYzMWE1NGE5ZmM5ZmIyMWVlYTgxYmU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCkBAIC0zMCw3ICszMCw2IEBACiAj
aW5jbHVkZSAiQ29tcG9zaXRlQW5pbWF0aW9uLmgiCiAKICNpbmNsdWRlICJBbmltYXRpb25Db250
cm9sbGVyUHJpdmF0ZS5oIgotI2luY2x1ZGUgIkNTU1Byb3BlcnR5TG9uZ2hhbmQuaCIKICNpbmNs
dWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiSW1wbGljaXRBbmltYXRpb24uaCIK
ICNpbmNsdWRlICJLZXlmcmFtZUFuaW1hdGlvbi5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135082</attachid>
            <date>2012-04-02 06:14:34 -0700</date>
            <delta_ts>2012-04-02 07:20:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82624-20120402101415.patch</filename>
            <type>text/plain</type>
            <size>111929</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGMxZGMyZjlkNjBmNzc1
YmFhMGJmMWI5MWNhZDQ2MjdhNThjMjdmZS4uOWNhYjgzMzMwNjRjNmVkYjY3M2QxNDI3NDU4MTEz
Nzc2NDA1NTc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAxMi0wNC0wMiAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZW5h
bWUgQ1NTUHJvcGVydHlMb25naGFuZCBjbGFzcyB0byBTdHlsZVByb3BlcnR5U2hvcnRoYW5kLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI2MjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgQ1NT
UHJvcGVydHlMb25naGFuZCB0byBTdHlsZVByb3BlcnR5U2hvcnRoYW5kIGFzIHdoYXQgQ1NTUHJv
cGVydHlMb25naGFuZAorICAgICAgICBpcyByZXByZXNlbnRpbmcgaXMgbm90IGEgbG9uZ2hhbmQg
YnV0IHRoZSBsaXN0IG9mIGxvbmdoYW5kcyBmb3IgYSBnaXZlbiBzaG9ydGhhbmQuCisgICAgICAg
IEFsc28gaW4gdGhlIHNhbWUgdGltZSBzd2l0Y2ggYWxsIHNob3J0aGFuZCBkZWNsYXJhdGlvbnMg
dG8gdXNlIENTU1Byb3BlcnR5SUQgZW51bQorICAgICAgICByYXRoZXIgdGhhbiBhIGludCBzbyBp
dCBpcyBjbGVhciBvbiB3aGF0IGtpbmQgb2YgZGF0YSB3ZSBhcmUgZGVhbGluZyB3aXRoLgorCisg
ICAgICAgIEluIGEgZm9sbG93aW5nIHBhdGNoIEkgd2lsbCByZW5hbWUgQ1NTUHJvcGVydHlMb25n
aGFuZCBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyA6IFRoaXMgaXMgYSByZWZhY3Rvcmlu
Zywgbm8gYmVoYXZpb3VyIGNoYW5nZSBpbnRlbmRlZAorCisgICAgICAgICogY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldENTU1By
b3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNT
aG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
Ojpjb3B5UHJvcGVydGllc0luU2V0KToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbik6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZUZpbGxTaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZUFuaW1hdGlvblNob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBh
cnNlVHJhbnNpdGlvblNob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBh
cnNlU2hvcnRoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2U0VmFsdWVz
KToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKENTU1BhcnNlcik6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
Ym9yZGVyRGlyZWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eTo6cmVzb2x2
ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eUxvbmdo
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJhY2tncm91bmRTaG9ydGhhbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6YmFja2dyb3VuZFBvc2l0aW9uU2hvcnRoYW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OmJhY2tncm91bmRSZXBlYXRTaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVy
U2hvcnRoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlckFicmlkZ2VkU2hvcnRoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OmJvcmRlckJvdHRvbVNob3J0aGFuZCk6CisgICAgICAgIChXZWJD
b3JlOjpib3JkZXJDb2xvclNob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJJbWFn
ZVNob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJMZWZ0U2hvcnRoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OmJvcmRlclJhZGl1c1Nob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3Jl
Ojpib3JkZXJSaWdodFNob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJTcGFjaW5n
U2hvcnRoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclN0eWxlU2hvcnRoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OmJvcmRlclRvcFNob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpi
b3JkZXJXaWR0aFNob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpsaXN0U3R5bGVTaG9ydGhh
bmQpOgorICAgICAgICAoV2ViQ29yZTo6Zm9udFNob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3Jl
OjptYXJnaW5TaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6b3V0bGluZVNob3J0aGFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpvdmVyZmxvd1Nob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpwYWRkaW5nU2hvcnRoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEFuaW1hdGlvblNo
b3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRCb3JkZXJBZnRlclNob3J0aGFuZCk6
CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRCb3JkZXJCZWZvcmVTaG9ydGhhbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6d2Via2l0Qm9yZGVyRW5kU2hvcnRoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OndlYmtpdEJvcmRlclN0YXJ0U2hvcnRoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdENv
bHVtbnNTaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0Q29sdW1uUnVsZVNob3J0
aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRGbGV4Rmxvd1Nob3J0aGFuZCk6CisgICAg
ICAgIChXZWJDb3JlOjp3ZWJraXRNYXJnaW5Db2xsYXBzZVNob3J0aGFuZCk6CisgICAgICAgIChX
ZWJDb3JlOjp3ZWJraXRNYXJxdWVlU2hvcnRoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtp
dE1hc2tTaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0TWFza1Bvc2l0aW9uU2hv
cnRoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdE1hc2tSZXBlYXRTaG9ydGhhbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6d2Via2l0VGV4dEVtcGhhc2lzU2hvcnRoYW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OndlYmtpdFRleHRTdHJva2VTaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6
d2Via2l0VHJhbnNpdGlvblNob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRUcmFu
c2Zvcm1PcmlnaW5TaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0V3JhcFNob3J0
aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpzaG9ydGhhbmRGb3JQcm9wZXJ0eSk6CisgICAgICAg
ICogY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJv
cGVydHlTaG9ydGhhbmQ6OlN0eWxlUHJvcGVydHlTaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVQcm9wZXJ0eVNob3J0aGFuZDo6cHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVByb3BlcnR5U2hvcnRoYW5kOjpwcm9wZXJ0aWVzRm9ySW5pdGlhbGl6YXRpb24pOgor
ICAgICAgICAoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVByb3BlcnR5U2V0OjpnZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UHJvcGVydHlTZXQ6OmJvcmRlclNwYWNpbmdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVByb3BlcnR5U2V0OjpnZXQ0VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVy
dHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVByb3BlcnR5U2V0OjpnZXRTaG9ydGhhbmRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVByb3BlcnR5U2V0OjpnZXRDb21tb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVBy
b3BlcnR5U2V0OjpyZW1vdmVTaG9ydGhhbmRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVByb3BlcnR5U2V0Ojpwcm9wZXJ0eUlzSW1wb3J0YW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UHJvcGVydHlTZXQ6OmFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZVByb3BlcnRpZXNJblNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpjb3B5UHJvcGVydGllc0luU2V0KToKKyAgICAgICAg
KiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChT
dHlsZVByb3BlcnR5U2V0KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVByb3BlcnRpZXNJblN0
eWxlKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNob3J0aGFuZFByb3BlcnR5V3JhcHBlcjo6U2hvcnRoYW5kUHJvcGVydHlX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFNob3J0aGFuZFByb3BlcnRpZXMpOgorICAg
ICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHA6CisKIDIwMTItMDQt
MDIgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4
XSBXZWIgSW5zcGVjdG9yOiBkb24ndCBjcmFzaCB3aGVuIHJlc29sdmluZyBET00gd3JhcHBlciBo
ZWFwIHNuYXBzaG90IG5vZGUgdG8gSlMgb2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDk4Zjc4ZTk1NTg3MWYzNDNi
ZTE1ZDQzMzQwZjIxZDk3YWJhZTRmMDMuLmM1MGI1MmZjNGNlOGM5MjhmYjY0Njc0ZjIyM2ZjZGE5
ZmNkOTM5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCkBAIC03NCw3ICs3NCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IC8vIExpc3Qgb2YgYWxsIHByb3BlcnRpZXMgd2Uga25vdyBob3cgdG8gY29tcHV0ZSwgb21pdHRp
bmcgc2hvcnRoYW5kcy4KLXN0YXRpYyBjb25zdCBpbnQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSB7
CitzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBjb21wdXRlZFByb3BlcnRpZXNbXSA9IHsKICAg
ICBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LAogICAgIENTU1Byb3BlcnR5QmFja2dy
b3VuZENsaXAsCiAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsCkBAIC0yMzM5LDEwICsy
MzM5LDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgICAgICByZXR1cm4gdmFs
dWVGb3JGaWx0ZXIoc3R5bGUuZ2V0KCkpOwogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kOiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s1XSA9IHsg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLAor
ICAgICAgICAgICAgY29uc3QgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0aWVzWzVdID0geyBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvciwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVw
ZWF0LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uIH07Ci0g
ICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0
aWVzKENTU1Byb3BlcnR5TG9uZ2hhbmQocHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwcm9w
ZXJ0aWVzKSkpOworICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hv
cnRoYW5kUHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2hvcnRoYW5kKHByb3BlcnRpZXMsIFdURl9B
UlJBWV9MRU5HVEgocHJvcGVydGllcykpKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyOiB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUJvcmRlclRvcCwgRG9Ob3RVcGRhdGVMYXlvdXQp
OwpAQCAtMjM1NSwzMSArMjM1NSwzMSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlLnJlbGVhc2UoKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tOgotICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5
VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhib3JkZXJCb3R0b21Mb25naGFuZCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRp
ZXMoYm9yZGVyQm90dG9tU2hvcnRoYW5kKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyQ29sb3I6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRl
c1Nob3J0aGFuZChib3JkZXJDb2xvckxvbmdoYW5kKCkpOworICAgICAgICAgICAgcmV0dXJuIGdl
dENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoYm9yZGVyQ29sb3JTaG9ydGhhbmQo
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0OgotICAgICAgICAgICAgcmV0
dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhib3JkZXJMZWZ0
TG9uZ2hhbmQoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JT
aG9ydGhhbmRQcm9wZXJ0aWVzKGJvcmRlckxlZnRTaG9ydGhhbmQoKSk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJJbWFnZToKICAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvck5pbmVQ
aWVjZUltYWdlKHN0eWxlLT5ib3JkZXJJbWFnZSgpLCBjc3NWYWx1ZVBvb2wpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzOgogICAgICAgICAgICAgcmV0dXJuIGdldEJvcmRl
clJhZGl1c1Nob3J0aGFuZFZhbHVlKHN0eWxlLmdldCgpLCBjc3NWYWx1ZVBvb2wsIG1fbm9kZS0+
ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0OgotICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRo
YW5kUHJvcGVydGllcyhib3JkZXJSaWdodExvbmdoYW5kKCkpOworICAgICAgICAgICAgcmV0dXJu
IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhib3JkZXJSaWdodFNo
b3J0aGFuZCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlOgotICAgICAg
ICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoYm9yZGVy
U3R5bGVMb25naGFuZCgpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNpZGVzU2hvcnRoYW5kKGJvcmRlclN0eWxlU2hvcnRoYW5kKCkpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyVG9wOgotICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5
VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhib3JkZXJUb3BMb25naGFuZCgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMo
Ym9yZGVyVG9wU2hvcnRoYW5kKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyV2lk
dGg6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0
aGFuZChib3JkZXJXaWR0aExvbmdoYW5kKCkpOworICAgICAgICAgICAgcmV0dXJuIGdldENTU1By
b3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoYm9yZGVyV2lkdGhTaG9ydGhhbmQoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGU6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0
Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGxpc3RTdHlsZUxvbmdoYW5k
KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5k
UHJvcGVydGllcyhsaXN0U3R5bGVTaG9ydGhhbmQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlNYXJnaW46Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRl
c1Nob3J0aGFuZChtYXJnaW5Mb25naGFuZCgpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRDU1NQ
cm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKG1hcmdpblNob3J0aGFuZCgpKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmU6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJv
cGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKG91dGxpbmVMb25naGFuZCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRp
ZXMob3V0bGluZVNob3J0aGFuZCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmc6
Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFu
ZChwYWRkaW5nTG9uZ2hhbmQoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlW
YWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChwYWRkaW5nU2hvcnRoYW5kKCkpOwogICAgICAgICAvKiBJ
bmRpdmlkdWFsIHByb3BlcnRpZXMgbm90IHBhcnQgb2YgdGhlIHNwZWMgKi8KICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZFJlcGVhdFk6CkBAIC0yNTc2LDI0ICsyNTc2LDI0IEBAIFBhc3NSZWZQdHI8U3R5
bGVQcm9wZXJ0eVNldD4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjptYWtlTXV0YWJsZSgp
CiAgICAgcmV0dXJuIGNvcHkoKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQ
cm9wZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25zdAorUGFz
c1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0Q1NT
UHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlT
aG9ydGhhbmQmIHNob3J0aGFuZCkgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBs
aXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbG9uZ2hhbmQubGVuZ3RoKCk7ICsraSkgewotICAgICAgICBSZWZQdHI8
Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVz
KClbaV0sIERvTm90VXBkYXRlTGF5b3V0KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNo
b3J0aGFuZC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUg
PSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0sIERvTm90VXBk
YXRlTGF5b3V0KTsKICAgICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlKTsKICAgICB9CiAgICAgcmV0
dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRo
YW5kKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25zdAorUGFzc1JlZlB0
cjxDU1NWYWx1ZUxpc3Q+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0Q1NTUHJvcGVy
dHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBz
aG9ydGhhbmQpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAvLyBBc3N1bWUgdGhlIHByb3Bl
cnRpZXMgYXJlIGluIHRoZSB1c3VhbCBvcmRlciB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQuCi0g
ICAgUmVmUHRyPENTU1ZhbHVlPiB0b3BWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hh
bmQucHJvcGVydGllcygpWzBdLCBEb05vdFVwZGF0ZUxheW91dCk7Ci0gICAgUmVmUHRyPENTU1Zh
bHVlPiByaWdodFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVz
KClbMV0sIERvTm90VXBkYXRlTGF5b3V0KTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGJvdHRvbVZh
bHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbMl0sIERvTm90
VXBkYXRlTGF5b3V0KTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGxlZnRWYWx1ZSA9IGdldFByb3Bl
cnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpWzNdLCBEb05vdFVwZGF0ZUxheW91dCk7
CisgICAgUmVmUHRyPENTU1ZhbHVlPiB0b3BWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUoc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVswXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOworICAgIFJlZlB0cjxD
U1NWYWx1ZT4gcmlnaHRWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUoc2hvcnRoYW5kLnByb3Bl
cnRpZXMoKVsxXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gYm90
dG9tVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbMl0s
IERvTm90VXBkYXRlTGF5b3V0KTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IGxlZnRWYWx1ZSA9IGdl
dFByb3BlcnR5Q1NTVmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVszXSwgRG9Ob3RVcGRhdGVM
YXlvdXQpOwogCiAgICAgLy8gQWxsIDQgcHJvcGVydGllcyBtdXN0IGJlIHNwZWNpZmllZC4KICAg
ICBpZiAoIXRvcFZhbHVlIHx8ICFyaWdodFZhbHVlIHx8ICFib3R0b21WYWx1ZSB8fCAhbGVmdFZh
bHVlKQpAQCAtMjYxNCw3ICsyNjE0LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWQKICAgICBy
ZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4g
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IGlu
dCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CitQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlT
ZXQ+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y29weVByb3BlcnRpZXNJblNldChjb25z
dCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIHsKICAgICBWZWN0
b3I8Q1NTUHJvcGVydHk+IGxpc3Q7CiAgICAgbGlzdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxl
bmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmgKaW5kZXggZTg5MzhkMGU1NTk1OTRlNWJmMjZmYWQwZjYzMTIwYTkwNWY4ZmE5OC4uOGQx
YjM1OWQ0ZTYwNjA5MDNmYzhjNTBiMTJlMGU1NTkwOTkwYjFjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaApAQCAtMjksNyArMjksNiBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKLWNsYXNz
IENTU1Byb3BlcnR5TG9uZ2hhbmQ7CiBjbGFzcyBDU1NWYWx1ZUxpc3Q7CiBjbGFzcyBDU1NWYWx1
ZVBvb2w7CiBjbGFzcyBDb2xvcjsKQEAgLTM4LDYgKzM3LDcgQEAgY2xhc3MgUmVuZGVyU3R5bGU7
CiBjbGFzcyBTVkdQYWludDsKIGNsYXNzIFNoYWRvd0RhdGE7CiBjbGFzcyBTdHlsZVByb3BlcnR5
U2V0OworY2xhc3MgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZDsKIAogI2lmIEVOQUJMRShDU1NfU0hB
REVSUykKIGNsYXNzIEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlcjsKQEAgLTcxLDcgKzcxLDcg
QEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFNWR1Byb3BlcnR5Q1NTVmFs
dWUoaW50IHByb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBQ
YXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgaW50
KiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxTdHlsZVByb3Bl
cnR5U2V0PiBjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5z
aWduZWQgbGVuZ3RoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24oUGFzc1JlZlB0cjxOb2RlPiwgYm9vbCBhbGxvd1Zpc2l0ZWRTdHlsZSwgY29uc3Qg
U3RyaW5nJik7CkBAIC0xMTAsOCArMTEwLDggQEAgcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZUZvckZpbHRlcihSZW5kZXJTdHlsZSopIGNvbnN0OwogI2VuZGlmCiAKLSAg
ICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhh
bmRQcm9wZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmKSBjb25zdDsKLSAgICBQYXNz
UmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFu
ZChjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxDU1NW
YWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25z
dCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxDU1NWYWx1
ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoY29uc3QgU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZCYpIGNvbnN0OwogCiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKICAg
ICBQc2V1ZG9JZCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCmluZGV4IGFlZDQxMzNjNjhlMjczOGQxNzQ2OTZmYzRiYTkyODI3MDNlY2UyOGUuLjE0N2Ji
YmQ1MmI2MzhkODZiZTFkNzlkOTYwNjAxNDRhMjM0ZjdiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuY3BwCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TG9uZ2hhbmQu
aCIKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlT
b3VyY2VEYXRhLmgiCiAjaW5jbHVkZSAiQ1NTUmVmbGVjdFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
U2VsZWN0b3IuaCIKQEAgLTIwMjUsNyArMjAyNCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZh
bHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOgotICAgICAgICByZXR1cm4gcGFy
c2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsK
KyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0TWFycXVlZVNob3J0
aGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5j
cmVtZW50OgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTbWFsbCB8fCBpZCA9PSBDU1NWYWx1
ZUxhcmdlIHx8IGlkID09IENTU1ZhbHVlTWVkaXVtKQogICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwpAQCAtMjE0NywxNSArMjE0NiwxNSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VW
YWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luQ29sbGFwc2U6IHsKICAgICAgICAgaWYgKG51bSA9PSAxKSB7CiAgICAgICAgICAg
ICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxh
cHNlKTsKLSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZSh3ZWJraXRNYXJnaW5Db2xsYXBzZUxv
bmdoYW5kKCkucHJvcGVydGllcygpWzBdLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgaWYgKCFw
YXJzZVZhbHVlKHdlYmtpdE1hcmdpbkNvbGxhcHNlU2hvcnRoYW5kKCkucHJvcGVydGllcygpWzBd
LCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKLSAg
ICAgICAgICAgIGFkZFByb3BlcnR5KHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKS5wcm9w
ZXJ0aWVzKClbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVydHko
d2Via2l0TWFyZ2luQ29sbGFwc2VTaG9ydGhhbmQoKS5wcm9wZXJ0aWVzKClbMV0sIHZhbHVlLCBp
bXBvcnRhbnQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAg
ZWxzZSBpZiAobnVtID09IDIpIHsKICAgICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRo
aXMsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpOwotICAgICAgICAgICAgaWYgKCFw
YXJzZVZhbHVlKHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKS5wcm9wZXJ0aWVzKClbMF0s
IGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUod2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgp
LnByb3BlcnRpZXMoKVsxXSwgaW1wb3J0YW50KSkKKyAgICAgICAgICAgIGlmICghcGFyc2VWYWx1
ZSh3ZWJraXRNYXJnaW5Db2xsYXBzZVNob3J0aGFuZCgpLnByb3BlcnRpZXMoKVswXSwgaW1wb3J0
YW50KSB8fCAhcGFyc2VWYWx1ZSh3ZWJraXRNYXJnaW5Db2xsYXBzZVNob3J0aGFuZCgpLnByb3Bl
cnRpZXMoKVsxXSwgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjI3NSwxMyArMjI3NCwxMyBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkK
ICAgICAgICAgLy8gUG9zaXRpb24gbXVzdCBjb21lIGJlZm9yZSBjb2xvciBpbiB0aGlzIGFycmF5
IGJlY2F1c2UgYSBwbGFpbiBvbGQgIjAiIGlzIGEgbGVnYWwgY29sb3IKICAgICAgICAgLy8gaW4g
cXVpcmtzIG1vZGUgYnV0IGl0J3MgdXN1YWxseSB0aGUgWCBjb29yZGluYXRlIG9mIGEgcG9zaXRp
b24uCiAgICAgICAgIC8vIEZJWE1FOiBBZGQgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSB0byB0
aGUgc2hvcnRoYW5kLgotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1tdID0geyBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRJbWFnZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0LAorICAgICAg
ICBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kSW1hZ2UsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUG9zaXRpb24sIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xp
cCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IgfTsKICAgICAgICAgcmV0dXJuIHBhcnNlRmls
bFNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDcsIGltcG9ydGFudCk7CiAgICAgfQogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrOiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0
aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLCBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXQsCisgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1tdID0geyBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tB
dHRhY2htZW50LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luLCBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tDbGlwIH07CiAgICAgICAgIHJldHVybiBwYXJzZUZpbGxTaG9ydGhhbmQo
cHJvcElkLCBwcm9wZXJ0aWVzLCA2LCBpbXBvcnRhbnQpOwpAQCAtMjI4OSw3ICsyMjg4LDcgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjoKICAgICAgICAgLy8gWyAnYm9yZGVyLXdpZHRoJyB8
fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0CiAgICAgewotICAgICAgICBp
ZiAocGFyc2VTaG9ydGhhbmQocHJvcElkLCBib3JkZXJBYnJpZGdlZExvbmdoYW5kKCksIGltcG9y
dGFudCkpIHsKKyAgICAgICAgaWYgKHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgYm9yZGVyQWJyaWRn
ZWRTaG9ydGhhbmQoKSwgaW1wb3J0YW50KSkgewogICAgICAgICAgICAgLy8gVGhlIENTUzMgQm9y
ZGVycyBhbmQgQmFja2dyb3VuZHMgc3BlY2lmaWNhdGlvbiBzYXlzIHRoYXQgYm9yZGVyIGFsc28g
cmVzZXRzIGJvcmRlci1pbWFnZS4gSXQncyBhcwogICAgICAgICAgICAgLy8gdGhvdWdoIGEgdmFs
dWUgb2Ygbm9uZSB3YXMgc3BlY2lmaWVkIGZvciB0aGUgaW1hZ2UuCiAgICAgICAgICAgICBhZGRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckltYWdlLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1w
bGljaXRJbml0aWFsVmFsdWUoKSwgaW1wb3J0YW50KTsKQEAgLTIyOTksNDQgKzIyOTgsNDQgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3A6CiAgICAgICAgIC8vIFsgJ2JvcmRl
ci10b3Atd2lkdGgnIHx8ICdib3JkZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKLSAg
ICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgYm9yZGVyVG9wTG9uZ2hhbmQoKSwg
aW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgYm9yZGVy
VG9wU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0OgogICAgICAgICAvLyBbICdib3JkZXItcmlnaHQtd2lkdGgnIHx8ICdib3JkZXItc3R5bGUn
IHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHBy
b3BJZCwgYm9yZGVyUmlnaHRMb25naGFuZCgpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4g
cGFyc2VTaG9ydGhhbmQocHJvcElkLCBib3JkZXJSaWdodFNob3J0aGFuZCgpLCBpbXBvcnRhbnQp
OwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b206CiAgICAgICAgIC8vIFsgJ2JvcmRl
ci1ib3R0b20td2lkdGgnIHx8ICdib3JkZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8IGluaGVyaXQK
LSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgYm9yZGVyQm90dG9tTG9uZ2hh
bmQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwg
Ym9yZGVyQm90dG9tU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlckxlZnQ6CiAgICAgICAgIC8vIFsgJ2JvcmRlci1sZWZ0LXdpZHRoJyB8fCAnYm9yZGVy
LXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0
aGFuZChwcm9wSWQsIGJvcmRlckxlZnRMb25naGFuZCgpLCBpbXBvcnRhbnQpOworICAgICAgICBy
ZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBib3JkZXJMZWZ0U2hvcnRoYW5kKCksIGltcG9y
dGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0OgotICAgICAgICBy
ZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRCb3JkZXJTdGFydExvbmdoYW5kKCks
IGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtp
dEJvcmRlclN0YXJ0U2hvcnRoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckVuZDoKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwg
d2Via2l0Qm9yZGVyRW5kTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHBh
cnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0Qm9yZGVyRW5kU2hvcnRoYW5kKCksIGltcG9ydGFu
dCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZToKLSAgICAgICAgcmV0
dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKSwg
aW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0
Qm9yZGVyQmVmb3JlU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckFmdGVyOgotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElk
LCB3ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5kKCksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVy
biBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdEJvcmRlckFmdGVyU2hvcnRoYW5kKCksIGlt
cG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmU6CiAgICAgICAgIC8vIFsgJ291
dGxpbmUtY29sb3InIHx8ICdvdXRsaW5lLXN0eWxlJyB8fCAnb3V0bGluZS13aWR0aCcgXSB8IGlu
aGVyaXQKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgb3V0bGluZUxvbmdo
YW5kKCksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQs
IG91dGxpbmVTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyQ29sb3I6CiAgICAgICAgIC8vIDxjb2xvcj57MSw0fSB8IGluaGVyaXQKLSAgICAgICAgcmV0
dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIGJvcmRlckNvbG9yTG9uZ2hhbmQoKS5wcm9wZXJ0aWVz
KCksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3Jk
ZXJDb2xvclNob3J0aGFuZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyV2lkdGg6CiAgICAgICAgIC8vIDxib3JkZXItd2lkdGg+ezEsNH0gfCBp
bmhlcml0Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3JkZXJXaWR0aExv
bmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gcGFyc2U0
VmFsdWVzKHByb3BJZCwgYm9yZGVyV2lkdGhTaG9ydGhhbmQoKS5wcm9wZXJ0aWVzKCksIGltcG9y
dGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlOgogICAgICAgICAvLyA8Ym9y
ZGVyLXN0eWxlPnsxLDR9IHwgaW5oZXJpdAotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHBy
b3BJZCwgYm9yZGVyU3R5bGVMb25naGFuZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKKyAg
ICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIGJvcmRlclN0eWxlU2hvcnRoYW5kKCku
cHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW46CiAg
ICAgICAgIC8vIDxtYXJnaW4td2lkdGg+ezEsNH0gfCBpbmhlcml0Ci0gICAgICAgIHJldHVybiBw
YXJzZTRWYWx1ZXMocHJvcElkLCBtYXJnaW5Mb25naGFuZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0
YW50KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIG1hcmdpblNob3J0aGFu
ZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGlu
ZzoKICAgICAgICAgLy8gPHBhZGRpbmctd2lkdGg+ezEsNH0gfCBpbmhlcml0Ci0gICAgICAgIHJl
dHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBwYWRkaW5nTG9uZ2hhbmQoKS5wcm9wZXJ0aWVzKCks
IGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBwYWRkaW5n
U2hvcnRoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRGbGV4RmxvdzoKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwg
d2Via2l0RmxleEZsb3dMb25naGFuZCgpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gcGFy
c2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRGbGV4Rmxvd1Nob3J0aGFuZCgpLCBpbXBvcnRhbnQp
OwogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OgogICAgICAgICAvLyBbIFsgJ2ZvbnQtc3R5bGUn
IHx8ICdmb250LXZhcmlhbnQnIHx8ICdmb250LXdlaWdodCcgXT8gJ2ZvbnQtc2l6ZScgWyAvICds
aW5lLWhlaWdodCcgXT8KICAgICAgICAgLy8gJ2ZvbnQtZmFtaWx5JyBdIHwgY2FwdGlvbiB8IGlj
b24gfCBtZW51IHwgbWVzc2FnZS1ib3ggfCBzbWFsbC1jYXB0aW9uIHwgc3RhdHVzLWJhciB8IGlu
aGVyaXQKQEAgLTIzNDYsMTMgKzIzNDUsMTMgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VGb250
KGltcG9ydGFudCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5
bGU6Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGxpc3RTdHlsZUxvbmdo
YW5kKCksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQs
IGxpc3RTdHlsZVNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5zOgotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJr
aXRDb2x1bW5zTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgd2Via2l0Q29sdW1uc1Nob3J0aGFuZCgpLCBpbXBvcnRhbnQpOwogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlOgotICAgICAgICByZXR1cm4gcGFyc2VT
aG9ydGhhbmQocHJvcElkLCB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsK
KyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0Q29sdW1uUnVsZVNo
b3J0aGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ry
b2tlOgotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRUZXh0U3Ry
b2tlTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5k
KHByb3BJZCwgd2Via2l0VGV4dFN0cm9rZVNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb246CiAgICAgICAgIHJldHVybiBwYXJzZUFuaW1h
dGlvblNob3J0aGFuZChpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2l0aW9uOgpAQCAtMjM2OCw3ICsyMzY3LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAv
LyBDU1MgVGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9y
dAogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6Ci0gICAgICAgIHJldHVy
biBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kKCksIGlt
cG9ydGFudCk7CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdFRl
eHRFbXBoYXNpc1Nob3J0aGFuZCgpLCBpbXBvcnRhbnQpOwogCiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlOgogICAgICAgICByZXR1cm4gcGFyc2VUZXh0RW1waGFz
aXNTdHlsZShpbXBvcnRhbnQpOwpAQCAtMjQxMSw3ICsyNDEwLDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGTm9uTmVnKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwOgotICAgICAgICBy
ZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRXcmFwTG9uZ2hhbmQoKSwgaW1wb3J0
YW50KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0V3JhcFNo
b3J0aGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21T
dHlsZToKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRTdHlsZToKQEAgLTI1NTEsNyArMjU1MCw3IEBAIHN0YXRpYyBib29s
IHBhcnNlQmFja2dyb3VuZENsaXAoQ1NTUGFyc2VyVmFsdWUqIHBhcnNlclZhbHVlLCBSZWZQdHI8
Q1NTVmFsdWU+JiBjCiAKIGNvbnN0IGludCBjTWF4RmlsbFByb3BlcnRpZXMgPSA5OwogCi1ib29s
IENTU1BhcnNlcjo6cGFyc2VGaWxsU2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCogcHJv
cGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlRmlsbFNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUlEKiBw
cm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgQVNT
RVJUKG51bVByb3BlcnRpZXMgPD0gY01heEZpbGxQcm9wZXJ0aWVzKTsKICAgICBpZiAobnVtUHJv
cGVydGllcyA+IGNNYXhGaWxsUHJvcGVydGllcykKQEAgLTI2OTYsNyArMjY5NSw3IEBAIHZvaWQg
Q1NTUGFyc2VyOjphZGRBbmltYXRpb25WYWx1ZShSZWZQdHI8Q1NTVmFsdWU+JiBsdmFsLCBQYXNz
UmVmUHRyPENTU1ZhbHVlPiByCiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblNob3J0
aGFuZChib29sIGltcG9ydGFudCkKIHsKLSAgICBjb25zdCB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVz
ID0gd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQoKS5sZW5ndGgoKTsKKyAgICBjb25zdCB1bnNpZ25l
ZCBudW1Qcm9wZXJ0aWVzID0gd2Via2l0QW5pbWF0aW9uU2hvcnRoYW5kKCkubGVuZ3RoKCk7CiAg
ICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb24p
OwogCiAgICAgYm9vbCBwYXJzZWRQcm9wZXJ0eVtdID0geyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSB9OwpAQCAtMjcyMyw3ICsyNzIyLDcgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KQogICAgICAg
ICBmb3IgKGkgPSBpbml0aWFsUGFyc2VkUHJvcGVydHlJbmRleDsgIWZvdW5kICYmIGkgPCBudW1Q
cm9wZXJ0aWVzOyArK2kpIHsKICAgICAgICAgICAgIGlmICghcGFyc2VkUHJvcGVydHlbaV0pIHsK
ICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDsKLSAgICAgICAgICAgICAgICBp
ZiAocGFyc2VBbmltYXRpb25Qcm9wZXJ0eSh3ZWJraXRBbmltYXRpb25Mb25naGFuZCgpLnByb3Bl
cnRpZXMoKVtpXSwgdmFsKSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZUFuaW1hdGlvblBy
b3BlcnR5KHdlYmtpdEFuaW1hdGlvblNob3J0aGFuZCgpLnByb3BlcnRpZXMoKVtpXSwgdmFsKSkg
ewogICAgICAgICAgICAgICAgICAgICBwYXJzZWRQcm9wZXJ0eVtpXSA9IGZvdW5kID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFBhcnNlZFByb3BlcnR5SW5kZXggPSAxOwogICAg
ICAgICAgICAgICAgICAgICBhZGRBbmltYXRpb25WYWx1ZSh2YWx1ZXNbaV0sIHZhbC5yZWxlYXNl
KCkpOwpAQCAtMjc0NSwxNCArMjc0NCwxNCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VBbmltYXRp
b25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiAKICAgICAvLyBOb3cgYWRkIGFsbCBvZiB0aGUg
cHJvcGVydGllcyB3ZSBmb3VuZC4KICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsg
aSsrKQotICAgICAgICBhZGRQcm9wZXJ0eSh3ZWJraXRBbmltYXRpb25Mb25naGFuZCgpLnByb3Bl
cnRpZXMoKVtpXSwgdmFsdWVzW2ldLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRk
UHJvcGVydHkod2Via2l0QW5pbWF0aW9uU2hvcnRoYW5kKCkucHJvcGVydGllcygpW2ldLCB2YWx1
ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiB7
Ci0gICAgY29uc3QgdW5zaWduZWQgbnVtUHJvcGVydGllcyA9IHdlYmtpdFRyYW5zaXRpb25Mb25n
aGFuZCgpLmxlbmd0aCgpOworICAgIGNvbnN0IHVuc2lnbmVkIG51bVByb3BlcnRpZXMgPSB3ZWJr
aXRUcmFuc2l0aW9uU2hvcnRoYW5kKCkubGVuZ3RoKCk7CiAKICAgICBTaG9ydGhhbmRTY29wZSBz
Y29wZSh0aGlzLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb24pOwogCkBAIC0yNzc4LDcgKzI3
NzcsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VUcmFuc2l0aW9uU2hvcnRoYW5kKGJvb2wgaW1w
b3J0YW50KQogICAgICAgICBmb3IgKGkgPSAwOyAhZm91bmQgJiYgaSA8IG51bVByb3BlcnRpZXM7
ICsraSkgewogICAgICAgICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtpXSkgewogICAgICAgICAg
ICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsOwotICAgICAgICAgICAgICAgIGlmIChwYXJzZUFu
aW1hdGlvblByb3BlcnR5KHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpLnByb3BlcnRpZXMoKVtp
XSwgdmFsKSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZUFuaW1hdGlvblByb3BlcnR5KHdl
YmtpdFRyYW5zaXRpb25TaG9ydGhhbmQoKS5wcm9wZXJ0aWVzKClbaV0sIHZhbCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgcGFyc2VkUHJvcGVydHlbaV0gPSBmb3VuZCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgIGFkZEFuaW1hdGlvblZhbHVlKHZhbHVlc1tpXSwgdmFsLnJlbGVhc2UoKSk7
CiAgICAgICAgICAgICAgICAgfQpAQCAtMjc5OSwxMiArMjc5OCwxMiBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VUcmFuc2l0aW9uU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KQogCiAgICAgLy8gTm93
IGFkZCBhbGwgb2YgdGhlIHByb3BlcnRpZXMgd2UgZm91bmQuCiAgICAgZm9yIChpID0gMDsgaSA8
IG51bVByb3BlcnRpZXM7IGkrKykKLSAgICAgICAgYWRkUHJvcGVydHkod2Via2l0VHJhbnNpdGlv
bkxvbmdoYW5kKCkucHJvcGVydGllcygpW2ldLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRh
bnQpOworICAgICAgICBhZGRQcm9wZXJ0eSh3ZWJraXRUcmFuc2l0aW9uU2hvcnRoYW5kKCkucHJv
cGVydGllcygpW2ldLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNob3J0aGFuZChpbnQgcHJvcElk
LCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZCwgYm9vbCBpbXBvcnRhbnQpCiti
b29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kLCBib29sIGltcG9ydGFudCkKIHsKICAgICAvLyBXZSB0
cnkgdG8gbWF0Y2ggYXMgbWFueSBwcm9wZXJ0aWVzIGFzIHBvc3NpYmxlCiAgICAgLy8gV2Ugc2V0
IHVwIGFuIGFycmF5IG9mIGJvb2xlYW5zIHRvIG1hcmsgd2hpY2ggcHJvcGVydHkgaGFzIGJlZW4g
Zm91bmQsCkBAIC0yODE3LDggKzI4MTYsOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhh
bmQoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQsCiAKICAg
ICB3aGlsZSAobV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkgewogICAgICAgICBmb3VuZCA9IGZhbHNl
OwotICAgICAgICBmb3IgKHVuc2lnbmVkIHByb3BJbmRleCA9IDA7ICFmb3VuZCAmJiBwcm9wSW5k
ZXggPCBsb25naGFuZC5sZW5ndGgoKTsgKytwcm9wSW5kZXgpIHsKLSAgICAgICAgICAgIGlmICgh
cHJvcGVydHlGb3VuZFtwcm9wSW5kZXhdICYmIHBhcnNlVmFsdWUobG9uZ2hhbmQucHJvcGVydGll
cygpW3Byb3BJbmRleF0sIGltcG9ydGFudCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBwcm9w
SW5kZXggPSAwOyAhZm91bmQgJiYgcHJvcEluZGV4IDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK3By
b3BJbmRleCkgeworICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eUZvdW5kW3Byb3BJbmRleF0gJiYg
cGFyc2VWYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpW3Byb3BJbmRleF0sIGltcG9ydGFudCkp
IHsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlGb3VuZFtwcm9wSW5kZXhdID0gZm91bmQg
PSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzUGFyc2VkKys7CiAgICAgICAg
ICAgICB9CkBAIC0yODMwLDI4ICsyODI5LDI4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNob3J0
aGFuZChpbnQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZCwKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAocHJvcGVydGllc1BhcnNl
ZCA9PSBsb25naGFuZC5sZW5ndGgoKSkKKyAgICBpZiAocHJvcGVydGllc1BhcnNlZCA9PSBzaG9y
dGhhbmQubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gRmlsbCBpbiBh
bnkgcmVtYWluaW5nIHByb3BlcnRpZXMgd2l0aCB0aGUgaW5pdGlhbCB2YWx1ZS4KICAgICBJbXBs
aWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVydHlJbXBsaWNpdCk7Ci0gICAgY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCogY29uc3QqIGNvbnN0IGxvbmdoYW5kc0ZvckluaXRpYWxp
emF0aW9uID0gbG9uZ2hhbmQubG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24oKTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9uZ2hhbmQubGVuZ3RoKCk7ICsraSkgeworICAgIGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQqIGNvbnN0KiBjb25zdCBwcm9wZXJ0aWVzRm9ySW5pdGlh
bGl6YXRpb24gPSBzaG9ydGhhbmQucHJvcGVydGllc0ZvckluaXRpYWxpemF0aW9uKCk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytpKSB7CiAgICAg
ICAgIGlmIChwcm9wZXJ0eUZvdW5kW2ldKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgaWYgKGxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uKSB7Ci0gICAgICAgICAgICBjb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiBpbml0TG9uZ2hhbmQgPSAqKGxvbmdoYW5kc0ZvckluaXRpYWxp
emF0aW9uW2ldKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgcHJvcEluZGV4ID0gMDsgcHJv
cEluZGV4IDwgaW5pdExvbmdoYW5kLmxlbmd0aCgpOyArK3Byb3BJbmRleCkKLSAgICAgICAgICAg
ICAgICBhZGRQcm9wZXJ0eShpbml0TG9uZ2hhbmQucHJvcGVydGllcygpW3Byb3BJbmRleF0sIGNz
c1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwor
ICAgICAgICBpZiAocHJvcGVydGllc0ZvckluaXRpYWxpemF0aW9uKSB7CisgICAgICAgICAgICBj
b25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBpbml0UHJvcGVydGllcyA9ICoocHJvcGVydGll
c0ZvckluaXRpYWxpemF0aW9uW2ldKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgcHJvcElu
ZGV4ID0gMDsgcHJvcEluZGV4IDwgaW5pdFByb3BlcnRpZXMubGVuZ3RoKCk7ICsrcHJvcEluZGV4
KQorICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5KGluaXRQcm9wZXJ0aWVzLnByb3BlcnRpZXMo
KVtwcm9wSW5kZXhdLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUo
KSwgaW1wb3J0YW50KTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBhZGRQcm9wZXJ0eShs
b25naGFuZC5wcm9wZXJ0aWVzKClbaV0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdElu
aXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVydHkoc2hvcnRo
YW5kLnByb3BlcnRpZXMoKVtpXSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlh
bFZhbHVlKCksIGltcG9ydGFudCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0
aWVzLCAgYm9vbCBpbXBvcnRhbnQpCitib29sIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKGludCBw
cm9wSWQsIGNvbnN0IENTU1Byb3BlcnR5SUQgKnByb3BlcnRpZXMsICBib29sIGltcG9ydGFudCkK
IHsKICAgICAvKiBGcm9tIHRoZSBDU1MgMiBzcGVjcywgOC4zCiAgICAgICogSWYgdGhlcmUgaXMg
b25seSBvbmUgdmFsdWUsIGl0IGFwcGxpZXMgdG8gYWxsIHNpZGVzLiBJZiB0aGVyZSBhcmUgdHdv
IHZhbHVlcywgdGhlIHRvcCBhbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBjMjQ5YTgyYTlh
ZDc1MzBkN2I1MGI5NTZjNjZmZjBlZDY5YWM1ZmVjLi45NTlkYjkyM2NkODk4YmQwZDUyZGQ2MWFk
YTRiYWI0NzJmNzlhZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlclZhbHVlcy5o
IgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5o
IgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5U291cmNlRGF0YS5oIgogI2luY2x1ZGUgIkNTU1NlbGVj
dG9yLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKQEAgLTQ2LDcgKzQ3LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU7CiBjbGFzcyBDU1NQcmlt
aXRpdmVWYWx1ZTsKLWNsYXNzIENTU1Byb3BlcnR5TG9uZ2hhbmQ7CiBjbGFzcyBDU1NWYWx1ZVBv
b2w7CiBjbGFzcyBDU1NQcm9wZXJ0eTsKIGNsYXNzIENTU1J1bGU7CkBAIC01OSw2ICs1OSw3IEBA
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgTWVkaWFRdWVyeUV4cDsKIGNsYXNzIE1lZGlhUXVlcnlT
ZXQ7CiBjbGFzcyBTdHlsZVByb3BlcnR5U2V0OworY2xhc3MgU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZDsKIGNsYXNzIFN0eWxlS2V5ZnJhbWU7CiBjbGFzcyBTdHlsZWRFbGVtZW50OwogY2xhc3MgV2Vi
S2l0Q1NTS2V5ZnJhbWVzUnVsZTsKQEAgLTg5LDggKzkwLDggQEAgcHVibGljOgogICAgIGJvb2wg
aGFzUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuICFtX3BhcnNlZFByb3BlcnRpZXMuaXNFbXB0
eSgpOyB9CiAKICAgICBib29sIHBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
OwotICAgIGJvb2wgcGFyc2VTaG9ydGhhbmQoaW50LCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiwgYm9vbCk7Ci0gICAgYm9vbCBwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50KiBw
cm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBwYXJzZVNob3J0aGFuZChpbnQs
IGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmLCBib29sKTsKKyAgICBib29sIHBhcnNlNFZh
bHVlcyhpbnQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUlEKiBwcm9wZXJ0aWVzLCBib29sIGlt
cG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZUNvbnRlbnQoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpOwogICAgIGJvb2wgcGFyc2VRdW90ZXMoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwog
CkBAIC0xMTAsNyArMTExLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBh
cnNlRmlsbFNpemUoaW50IHByb3BJZCwgYm9vbCAmYWxsb3dDb21tYSk7CiAKICAgICBib29sIHBh
cnNlRmlsbFByb3BlcnR5KGludCBwcm9wSWQsIGludCYgcHJvcElkMSwgaW50JiBwcm9wSWQyLCBS
ZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOwotICAgIGJvb2wgcGFyc2VGaWxs
U2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVByb3Bl
cnRpZXMsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIHBhcnNlRmlsbFNob3J0aGFuZChpbnQg
cHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUlEKiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGll
cywgYm9vbCBpbXBvcnRhbnQpOwogCiAgICAgdm9pZCBhZGRGaWxsVmFsdWUoUmVmUHRyPENTU1Zh
bHVlPiYgbHZhbCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcnZhbCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydHkuY3BwCmluZGV4IGFkZmE2ZWNkOTRjMzEyMzUxNDEzMDYzMWViNzc2YzU3ZDU1YWIz
MzAuLjEzYmZjNjQ4NTg1NDJjYjI3MGI4ZGM0M2MzMTQ5YTcwNWI5MDA3YjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5LmNwcApAQCAtNTEsMjYgKzUxLDI2IEBAIHZvaWQgQ1NTUHJvcGVydHk6
OndyYXBWYWx1ZUluQ29tbWFTZXBhcmF0ZWRMaXN0KCkKIGVudW0gTG9naWNhbEJveFNpZGUgeyBC
ZWZvcmVTaWRlLCBFbmRTaWRlLCBBZnRlclNpZGUsIFN0YXJ0U2lkZSB9OwogZW51bSBQaHlzaWNh
bEJveFNpZGUgeyBUb3BTaWRlLCBSaWdodFNpZGUsIEJvdHRvbVNpZGUsIExlZnRTaWRlIH07CiAK
LXN0YXRpYyBpbnQgcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlIGxvZ2ljYWxTaWRl
LCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZCkKK3N0YXRpYyBpbnQgcmVzb2x2
ZVRvUGh5c2ljYWxQcm9wZXJ0eShUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgV3JpdGluZ01vZGUg
d3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlIGxvZ2ljYWxTaWRlLCBjb25zdCBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCiB7CiAgICAgaWYgKGRpcmVjdGlvbiA9PSBMVFIpIHsK
ICAgICAgICAgaWYgKHdyaXRpbmdNb2RlID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUpIHsKICAg
ICAgICAgICAgIC8vIFRoZSBjb21tb24gY2FzZS4gVGhlIGxvZ2ljYWwgYW5kIHBoeXNpY2FsIGJv
eCBzaWRlcyBtYXRjaC4KICAgICAgICAgICAgIC8vIExlZnQgPSBTdGFydCwgUmlnaHQgPSBFbmQs
IEJlZm9yZSA9IFRvcCwgQWZ0ZXIgPSBCb3R0b20KLSAgICAgICAgICAgIHJldHVybiBsb25naGFu
ZC5wcm9wZXJ0aWVzKClbbG9naWNhbFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFu
ZC5wcm9wZXJ0aWVzKClbbG9naWNhbFNpZGVdOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHdy
aXRpbmdNb2RlID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUpIHsKICAgICAgICAgICAgIC8vIFN0
YXJ0ID0gTGVmdCwgRW5kID0gUmlnaHQsIEJlZm9yZSA9IEJvdHRvbSwgQWZ0ZXIgPSBUb3AuCiAg
ICAgICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7CiAgICAgICAgICAgICBjYXNlIFN0YXJ0
U2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0xlZnRT
aWRlXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtMZWZ0
U2lkZV07CiAgICAgICAgICAgICBjYXNlIEVuZFNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGxvbmdoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOworICAgICAgICAgICAgICAgIHJldHVy
biBzaG9ydGhhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07CiAgICAgICAgICAgICBjYXNlIEJl
Zm9yZVNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtC
b3R0b21TaWRlXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMo
KVtCb3R0b21TaWRlXTsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtUb3BTaWRlXTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCkBAIC03OCwyNiArNzgsMjYgQEAgc3RhdGljIGludCByZXNvbHZlVG9QaHlzaWNhbFBy
b3BlcnR5KFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBXcml0aW5nTW9kZSB3cml0aW4KICAgICAg
ICAgICAgIC8vIFN0YXJ0ID0gVG9wLCBFbmQgPSBCb3R0b20sIEJlZm9yZSA9IExlZnQsIEFmdGVy
ID0gUmlnaHQuCiAgICAgICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7CiAgICAgICAgICAg
ICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVy
dGllcygpW1RvcFNpZGVdOworICAgICAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVy
dGllcygpW1RvcFNpZGVdOwogICAgICAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAgICAg
ICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07CiAgICAgICAg
ICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnBy
b3BlcnRpZXMoKVtMZWZ0U2lkZV07CisgICAgICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbTGVmdFNpZGVdOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIFN0YXJ0ID0gVG9wLCBFbmQgPSBCb3R0b20s
IEJlZm9yZSA9IFJpZ2h0LCBBZnRlciA9IExlZnQKICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lk
ZSkgewogICAgICAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFu
ZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CisgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnBy
b3BlcnRpZXMoKVtUb3BTaWRlXTsKICAgICAgICAgY2FzZSBFbmRTaWRlOgotICAgICAgICAgICAg
cmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKKyAgICAgICAgICAgIHJl
dHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOwogICAgICAgICBjYXNlIEJl
Zm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW1JpZ2h0
U2lkZV07CisgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNp
ZGVdOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3Bl
cnRpZXMoKVtMZWZ0U2lkZV07CisgICAgICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtMZWZ0U2lkZV07CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEwNSwxMyArMTA1LDEzIEBA
IHN0YXRpYyBpbnQgcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiwgV3JpdGluZ01vZGUgd3JpdGluCiAgICAgICAgIC8vIFN0YXJ0ID0gUmlnaHQsIEVuZCA9
IExlZnQsIEJlZm9yZSA9IFRvcCwgQWZ0ZXIgPSBCb3R0b20KICAgICAgICAgc3dpdGNoIChsb2dp
Y2FsU2lkZSkgewogICAgICAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgICAgIHJldHVybiBs
b25naGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBzaG9y
dGhhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07CiAgICAgICAgIGNhc2UgRW5kU2lkZToKLSAg
ICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOworICAgICAg
ICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwogICAgICAgICBj
YXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygp
W1RvcFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbVG9w
U2lkZV07CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJv
cGVydGllcygpW0JvdHRvbVNpZGVdOworICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9w
ZXJ0aWVzKClbQm90dG9tU2lkZV07CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExOSwxMyArMTE5
LDEzIEBAIHN0YXRpYyBpbnQgcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbiwgV3JpdGluZ01vZGUgd3JpdGluCiAgICAgICAgIC8vIFN0YXJ0ID0gUmlnaHQs
IEVuZCA9IExlZnQsIEJlZm9yZSA9IEJvdHRvbSwgQWZ0ZXIgPSBUb3AKICAgICAgICAgc3dpdGNo
IChsb2dpY2FsU2lkZSkgewogICAgICAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAgICAgIHJl
dHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKKyAgICAgICAgICAgIHJldHVy
biBzaG9ydGhhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07CiAgICAgICAgIGNhc2UgRW5kU2lk
ZToKLSAgICAgICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwor
ICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVdOwogICAg
ICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVy
dGllcygpW0JvdHRvbVNpZGVdOworICAgICAgICAgICAgcmV0dXJuIHNob3J0aGFuZC5wcm9wZXJ0
aWVzKClbQm90dG9tU2lkZV07CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4g
bG9uZ2hhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOworICAgICAgICAgICAgcmV0dXJuIHNob3J0
aGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEzMyw0
MiArMTMzLDQyIEBAIHN0YXRpYyBpbnQgcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbiwgV3JpdGluZ01vZGUgd3JpdGluCiAgICAgICAgIC8vIFN0YXJ0ID0g
Qm90dG9tLCBFbmQgPSBUb3AsIEJlZm9yZSA9IExlZnQsIEFmdGVyID0gUmlnaHQKICAgICAgICAg
c3dpdGNoIChsb2dpY2FsU2lkZSkgewogICAgICAgICBjYXNlIFN0YXJ0U2lkZToKLSAgICAgICAg
ICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbQm90dG9tU2lkZV07CisgICAgICAgICAg
ICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKICAgICAgICAgY2Fz
ZSBFbmRTaWRlOgotICAgICAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtUb3BT
aWRlXTsKKyAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVd
OwogICAgICAgICBjYXNlIEJlZm9yZVNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gbG9uZ2hhbmQu
cHJvcGVydGllcygpW0xlZnRTaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBzaG9ydGhhbmQucHJv
cGVydGllcygpW0xlZnRTaWRlXTsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVy
biBsb25naGFuZC5wcm9wZXJ0aWVzKClbUmlnaHRTaWRlXTsKKyAgICAgICAgICAgIHJldHVybiBz
aG9ydGhhbmQucHJvcGVydGllcygpW1JpZ2h0U2lkZV07CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICAvLyBTdGFydCA9IEJvdHRvbSwgRW5kID0gVG9wLCBCZWZvcmUgPSBSaWdodCwgQWZ0ZXIgPSBM
ZWZ0CiAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewogICAgIGNhc2UgU3RhcnRTaWRlOgotICAg
ICAgICByZXR1cm4gbG9uZ2hhbmQucHJvcGVydGllcygpW0JvdHRvbVNpZGVdOworICAgICAgICBy
ZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtCb3R0b21TaWRlXTsKICAgICBjYXNlIEVuZFNp
ZGU6Ci0gICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbVG9wU2lkZV07CisgICAg
ICAgIHJldHVybiBzaG9ydGhhbmQucHJvcGVydGllcygpW1RvcFNpZGVdOwogICAgIGNhc2UgQmVm
b3JlU2lkZToKLSAgICAgICAgcmV0dXJuIGxvbmdoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVd
OworICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtSaWdodFNpZGVdOwogICAg
IGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBsb25naGFuZC5wcm9wZXJ0aWVzKClbTGVmdFNpZGVd
OworICAgICAgICByZXR1cm4gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtMZWZ0U2lkZV07CiAgICAg
fQogfQogCiBlbnVtIExvZ2ljYWxFeHRlbnQgeyBMb2dpY2FsV2lkdGgsIExvZ2ljYWxIZWlnaHQg
fTsKIAotc3RhdGljIGludCByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KFdyaXRpbmdNb2RlIHdy
aXRpbmdNb2RlLCBMb2dpY2FsRXh0ZW50IGxvZ2ljYWxTaWRlLCBjb25zdCBpbnQqIHByb3BlcnRp
ZXMpCitzdGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoV3JpdGluZ01vZGUgd3Jp
dGluZ01vZGUsIExvZ2ljYWxFeHRlbnQgbG9naWNhbFNpZGUsIGNvbnN0IENTU1Byb3BlcnR5SUQq
IHByb3BlcnRpZXMpCiB7CiAgICAgaWYgKHdyaXRpbmdNb2RlID09IFRvcFRvQm90dG9tV3JpdGlu
Z01vZGUgfHwgd3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0aW5nTW9kZSkKICAgICAgICAg
cmV0dXJuIHByb3BlcnRpZXNbbG9naWNhbFNpZGVdOwogICAgIHJldHVybiBsb2dpY2FsU2lkZSA9
PSBMb2dpY2FsV2lkdGggPyBwcm9wZXJ0aWVzWzFdIDogcHJvcGVydGllc1swXTsKIH0KIAotc3Rh
dGljIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckRpcmVjdGlvbnMoKQorc3RhdGlj
IGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGJvcmRlckRpcmVjdGlvbnMoKQogewotICAg
IHN0YXRpYyBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3As
IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tLCBDU1NQcm9w
ZXJ0eUJvcmRlckxlZnQgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9u
Z2hhbmQsIGJvcmRlckRpcmVjdGlvbnMsIChwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHBy
b3BlcnRpZXMpKSk7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1s0
XSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3AsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQsIENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnQgfTsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQsIGJvcmRlckRpcmVjdGlvbnMsIChw
cm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpKSk7CiAgICAgcmV0dXJuIGJv
cmRlckRpcmVjdGlvbnM7CiB9CiAKQEAgLTE3NiwyMSArMTc2LDIxIEBAIGludCBDU1NQcm9wZXJ0
eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIFRleHREaXJl
Y3Rpb24gZGlyCiB7CiAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9w
ZXJ0eUlEKSkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5FbmQ6Ci0gICAgICAg
IHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUs
IEVuZFNpZGUsIG1hcmdpbkxvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5
c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBFbmRTaWRlLCBtYXJnaW5TaG9y
dGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0OgotICAgICAg
ICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2Rl
LCBTdGFydFNpZGUsIG1hcmdpbkxvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRv
UGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBTdGFydFNpZGUsIG1hcmdp
blNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlOgot
ICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRp
bmdNb2RlLCBCZWZvcmVTaWRlLCBtYXJnaW5Mb25naGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJl
c29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQmVmb3JlU2lk
ZSwgbWFyZ2luU2hvcnRoYW5kKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5B
ZnRlcjoKLSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9u
LCB3cml0aW5nTW9kZSwgQWZ0ZXJTaWRlLCBtYXJnaW5Mb25naGFuZCgpKTsKKyAgICAgICAgcmV0
dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQWZ0
ZXJTaWRlLCBtYXJnaW5TaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBh
ZGRpbmdFbmQ6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVj
dGlvbiwgd3JpdGluZ01vZGUsIEVuZFNpZGUsIHBhZGRpbmdMb25naGFuZCgpKTsKKyAgICAgICAg
cmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwg
RW5kU2lkZSwgcGFkZGluZ1Nob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
UGFkZGluZ1N0YXJ0OgotICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShk
aXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBTdGFydFNpZGUsIHBhZGRpbmdMb25naGFuZCgpKTsKKyAg
ICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5n
TW9kZSwgU3RhcnRTaWRlLCBwYWRkaW5nU2hvcnRoYW5kKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRQYWRkaW5nQmVmb3JlOgotICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQ
cm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBCZWZvcmVTaWRlLCBwYWRkaW5nTG9uZ2hh
bmQoKSk7CisgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlv
biwgd3JpdGluZ01vZGUsIEJlZm9yZVNpZGUsIHBhZGRpbmdTaG9ydGhhbmQoKSk7CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcjoKLSAgICAgICAgcmV0dXJuIHJlc29sdmVU
b1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQWZ0ZXJTaWRlLCBwYWRk
aW5nTG9uZ2hhbmQoKSk7CisgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5
KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEFmdGVyU2lkZSwgcGFkZGluZ1Nob3J0aGFuZCgpKTsK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kOgogICAgICAgICByZXR1cm4gcmVz
b2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBFbmRTaWRlLCBi
b3JkZXJEaXJlY3Rpb25zKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFy
dDoKQEAgLTIwMCw1MSArMjAwLDUxIEBAIGludCBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlv
bkF3YXJlUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIFRleHREaXJlY3Rpb24gZGlyCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyOgogICAgICAgICByZXR1cm4gcmVzb2x2ZVRv
UGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBBZnRlclNpZGUsIGJvcmRl
ckRpcmVjdGlvbnMoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9y
OgotICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdy
aXRpbmdNb2RlLCBFbmRTaWRlLCBib3JkZXJDb2xvckxvbmdoYW5kKCkpOworICAgICAgICByZXR1
cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBFbmRT
aWRlLCBib3JkZXJDb2xvclNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyU3RhcnRDb2xvcjoKLSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVy
dHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgU3RhcnRTaWRlLCBib3JkZXJDb2xvckxvbmdoYW5k
KCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24s
IHdyaXRpbmdNb2RlLCBTdGFydFNpZGUsIGJvcmRlckNvbG9yU2hvcnRoYW5kKCkpOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvcjoKLSAgICAgICAgcmV0dXJuIHJl
c29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQmVmb3JlU2lk
ZSwgYm9yZGVyQ29sb3JMb25naGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNp
Y2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQmVmb3JlU2lkZSwgYm9yZGVyQ29s
b3JTaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29s
b3I6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwg
d3JpdGluZ01vZGUsIEFmdGVyU2lkZSwgYm9yZGVyQ29sb3JMb25naGFuZCgpKTsKKyAgICAgICAg
cmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwg
QWZ0ZXJTaWRlLCBib3JkZXJDb2xvclNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyRW5kU3R5bGU6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFBy
b3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEVuZFNpZGUsIGJvcmRlclN0eWxlTG9uZ2hh
bmQoKSk7CisgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlv
biwgd3JpdGluZ01vZGUsIEVuZFNpZGUsIGJvcmRlclN0eWxlU2hvcnRoYW5kKCkpOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlOgotICAgICAgICByZXR1cm4gcmVz
b2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBTdGFydFNpZGUs
IGJvcmRlclN0eWxlTG9uZ2hhbmQoKSk7CisgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNh
bFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIFN0YXJ0U2lkZSwgYm9yZGVyU3R5bGVT
aG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxl
OgotICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdy
aXRpbmdNb2RlLCBCZWZvcmVTaWRlLCBib3JkZXJTdHlsZUxvbmdoYW5kKCkpOworICAgICAgICBy
ZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBC
ZWZvcmVTaWRlLCBib3JkZXJTdHlsZVNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZToKLSAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2Fs
UHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgQWZ0ZXJTaWRlLCBib3JkZXJTdHlsZUxv
bmdoYW5kKCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJl
Y3Rpb24sIHdyaXRpbmdNb2RlLCBBZnRlclNpZGUsIGJvcmRlclN0eWxlU2hvcnRoYW5kKCkpOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aDoKLSAgICAgICAgcmV0dXJu
IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgRW5kU2lk
ZSwgYm9yZGVyV2lkdGhMb25naGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNp
Y2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgRW5kU2lkZSwgYm9yZGVyV2lkdGhT
aG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGg6
Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3Jp
dGluZ01vZGUsIFN0YXJ0U2lkZSwgYm9yZGVyV2lkdGhMb25naGFuZCgpKTsKKyAgICAgICAgcmV0
dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgU3Rh
cnRTaWRlLCBib3JkZXJXaWR0aFNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyQmVmb3JlV2lkdGg6Ci0gICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFBy
b3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEJlZm9yZVNpZGUsIGJvcmRlcldpZHRoTG9u
Z2hhbmQoKSk7CisgICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVj
dGlvbiwgd3JpdGluZ01vZGUsIEJlZm9yZVNpZGUsIGJvcmRlcldpZHRoU2hvcnRoYW5kKCkpOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoOgotICAgICAgICByZXR1
cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBBZnRl
clNpZGUsIGJvcmRlcldpZHRoTG9uZ2hhbmQoKSk7CisgICAgICAgIHJldHVybiByZXNvbHZlVG9Q
aHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUsIEFmdGVyU2lkZSwgYm9yZGVy
V2lkdGhTaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0
aDogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXaWR0
aCwgQ1NTUHJvcGVydHlIZWlnaHQgfTsKKyAgICAgICAgY29uc3QgQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdpZHRoLCBDU1NQcm9wZXJ0eUhlaWdodCB9OwogICAg
ICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eSh3cml0aW5nTW9kZSwgTG9naWNh
bFdpZHRoLCBwcm9wZXJ0aWVzKTsKICAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExv
Z2ljYWxIZWlnaHQ6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1By
b3BlcnR5V2lkdGgsIENTU1Byb3BlcnR5SGVpZ2h0IH07CisgICAgICAgIGNvbnN0IENTU1Byb3Bl
cnR5SUQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXaWR0aCwgQ1NTUHJvcGVydHlIZWln
aHQgfTsKICAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkod3JpdGluZ01v
ZGUsIExvZ2ljYWxIZWlnaHQsIHByb3BlcnRpZXMpOwogICAgIH0KICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWluTG9naWNhbFdpZHRoOiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVz
WzJdID0geyBDU1NQcm9wZXJ0eU1pbldpZHRoLCBDU1NQcm9wZXJ0eU1pbkhlaWdodCB9OworICAg
ICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5TWlu
V2lkdGgsIENTU1Byb3BlcnR5TWluSGVpZ2h0IH07CiAgICAgICAgIHJldHVybiByZXNvbHZlVG9Q
aHlzaWNhbFByb3BlcnR5KHdyaXRpbmdNb2RlLCBMb2dpY2FsV2lkdGgsIHByb3BlcnRpZXMpOwog
ICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhlaWdodDogewotICAg
ICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlNaW5XaWR0aCwgQ1NT
UHJvcGVydHlNaW5IZWlnaHQgfTsKKyAgICAgICAgY29uc3QgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
aWVzWzJdID0geyBDU1NQcm9wZXJ0eU1pbldpZHRoLCBDU1NQcm9wZXJ0eU1pbkhlaWdodCB9Owog
ICAgICAgICByZXR1cm4gcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eSh3cml0aW5nTW9kZSwgTG9n
aWNhbEhlaWdodCwgcHJvcGVydGllcyk7CiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXhMb2dpY2FsV2lkdGg6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7
IENTU1Byb3BlcnR5TWF4V2lkdGgsIENTU1Byb3BlcnR5TWF4SGVpZ2h0IH07CisgICAgICAgIGNv
bnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlNYXhXaWR0aCwg
Q1NTUHJvcGVydHlNYXhIZWlnaHQgfTsKICAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2Fs
UHJvcGVydHkod3JpdGluZ01vZGUsIExvZ2ljYWxXaWR0aCwgcHJvcGVydGllcyk7CiAgICAgfQog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0OiB7Ci0gICAgICAgIGNv
bnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eU1heFdpZHRoLCBDU1NQcm9wZXJ0
eU1heEhlaWdodCB9OworICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNbMl0g
PSB7IENTU1Byb3BlcnR5TWF4V2lkdGgsIENTU1Byb3BlcnR5TWF4SGVpZ2h0IH07CiAgICAgICAg
IHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KHdyaXRpbmdNb2RlLCBMb2dpY2FsSGVp
Z2h0LCBwcm9wZXJ0aWVzKTsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAppbmRleCA3YzEyZDljM2I1OTk2ZThhZjQ0MDgwOGEx
YjUzZDRiMzgyZWVkZjBhLi5lOGY0OTBiYjZjOTk5N2ViY2NmMzJmODA2ZDVkMWZiZWJkMTk3YmFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwCkBAIC0yMSwx
NSArMjEsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eUxv
bmdoYW5kLmgiCiAKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBBZGQg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSB0byB0aGUgc2hvcnRoYW5kLgotY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgYmFja2dyb3VuZExvbmdoYW5kKCkKK2NvbnN0IFN0eWxlUHJvcGVydHlT
aG9ydGhhbmQmIGJhY2tncm91bmRTaG9ydGhhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQg
YmFja2dyb3VuZFByb3BlcnRpZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJ
RCBiYWNrZ3JvdW5kUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvciwKICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsCiAgICAgICAgIENT
U1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsCkBAIC00MCwxNjAgKzM5LDE2MCBAQCBjb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiBiYWNrZ3JvdW5kTG9uZ2hhbmQoKQogICAgICAgICBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDbGlwLAogICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4K
ICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYmFj
a2dyb3VuZExvbmdoYW5kLCAoYmFja2dyb3VuZFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgo
YmFja2dyb3VuZFByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJhY2tncm91bmRMb25naGFuZDsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQsIGJhY2tncm91
bmRTaG9ydGhhbmQsIChiYWNrZ3JvdW5kUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChiYWNr
Z3JvdW5kUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYmFja2dyb3VuZFNob3J0aGFuZDsKIH0K
IAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQo
KQorY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgYmFja2dyb3VuZFBvc2l0aW9uU2hvcnRo
YW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJhY2tncm91bmRQb3NpdGlvblByb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRQb3NpdGlvblkgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9u
Z2hhbmQsIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kLCAoYmFja2dyb3VuZFBvc2l0aW9uUHJv
cGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzKSkp
OwotICAgIHJldHVybiBiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZDsKKyAgICBzdGF0aWMgY29u
c3QgQ1NTUHJvcGVydHlJRCBiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzW10gPSB7IENTU1By
b3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25Z
IH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hvcnRoYW5kLCBiYWNr
Z3JvdW5kUG9zaXRpb25Mb25naGFuZHMsIChiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzLCBX
VEZfQVJSQVlfTEVOR1RIKGJhY2tncm91bmRQb3NpdGlvblByb3BlcnRpZXMpKSk7CisgICAgcmV0
dXJuIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgYmFja2dyb3VuZFJlcGVhdExvbmdoYW5kKCkKK2NvbnN0IFN0eWxlUHJvcGVydHlT
aG9ydGhhbmQmIGJhY2tncm91bmRSZXBlYXRTaG9ydGhhbmQoKQogewotICAgIHN0YXRpYyBjb25z
dCBpbnQgYmFja2dyb3VuZFJlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUmVwZWF0WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSB9OwotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYmFja2dyb3VuZFJlcGVhdExvbmdoYW5k
LCAoYmFja2dyb3VuZFJlcGVhdFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYmFja2dyb3Vu
ZFJlcGVhdFByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJhY2tncm91bmRSZXBlYXRMb25naGFu
ZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXRZIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hv
cnRoYW5kLCBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmRzLCAoYmFja2dyb3VuZFJlcGVhdFByb3Bl
cnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYmFja2dyb3VuZFJlcGVhdFByb3BlcnRpZXMpKSk7Cisg
ICAgcmV0dXJuIGJhY2tncm91bmRSZXBlYXRMb25naGFuZHM7CiB9CiAKLWNvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIGJvcmRlckxvbmdoYW5kKCkKK2NvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQmIGJvcmRlclNob3J0aGFuZCgpCiB7CiAgICAgLy8gRG8gbm90IGNoYW5nZSB0aGUgb3JkZXIg
b2YgdGhlIGZvbGxvd2luZyBmb3VyIHNob3J0aGFuZHMsIGFuZCBrZWVwIHRoZW0gdG9nZXRoZXIu
Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJQcm9wZXJ0aWVzWzRdWzNdID0geworICAgIHN0
YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlclByb3BlcnRpZXNbNF1bM10gPSB7CiAgICAg
ICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHls
ZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCB9LAogICAgICAgICB7IENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHRDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0V2lkdGggfSwKICAgICAgICAgeyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9y
LCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdp
ZHRoIH0sCiAgICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IsIENTU1Byb3BlcnR5
Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCB9CiAgICAgfTsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlckxvbmdoYW5k
LCAoYm9yZGVyUHJvcGVydGllc1swXSwgc2l6ZW9mKGJvcmRlclByb3BlcnRpZXMpIC8gc2l6ZW9m
KGJvcmRlclByb3BlcnRpZXNbMF1bMF0pKSk7Ci0gICAgcmV0dXJuIGJvcmRlckxvbmdoYW5kOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgYm9yZGVyTG9u
Z2hhbmRzLCAoYm9yZGVyUHJvcGVydGllc1swXSwgc2l6ZW9mKGJvcmRlclByb3BlcnRpZXMpIC8g
c2l6ZW9mKGJvcmRlclByb3BlcnRpZXNbMF1bMF0pKSk7CisgICAgcmV0dXJuIGJvcmRlckxvbmdo
YW5kczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyQWJyaWRnZWRMb25n
aGFuZCgpCitjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBib3JkZXJBYnJpZGdlZFNob3J0
aGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJBYnJpZGdlZFByb3BlcnRpZXNb
XSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgQ1NT
UHJvcGVydHlCb3JkZXJDb2xvciB9OwotICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kKiBwcm9wZXJ0aWVzRm9ySW5pdGlhbGl6YXRpb25bXSA9IHsKLSAgICAgICAgJmJvcmRlcldp
ZHRoTG9uZ2hhbmQoKSwKLSAgICAgICAgJmJvcmRlclN0eWxlTG9uZ2hhbmQoKSwKLSAgICAgICAg
JmJvcmRlckNvbG9yTG9uZ2hhbmQoKSwKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBi
b3JkZXJBYnJpZGdlZFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgQ1NT
UHJvcGVydHlCb3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciB9OworICAgIHN0YXRp
YyBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKiBwcm9wZXJ0aWVzRm9ySW5pdGlhbGl6YXRp
b25bXSA9IHsKKyAgICAgICAgJmJvcmRlcldpZHRoU2hvcnRoYW5kKCksCisgICAgICAgICZib3Jk
ZXJTdHlsZVNob3J0aGFuZCgpLAorICAgICAgICAmYm9yZGVyQ29sb3JTaG9ydGhhbmQoKSwKICAg
ICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVy
QWJyaWRnZWRMb25naGFuZCwKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlT
aG9ydGhhbmQsIGJvcmRlckFicmlkZ2VkTG9uZ2hhbmRzLAogICAgICAgICAoYm9yZGVyQWJyaWRn
ZWRQcm9wZXJ0aWVzLCBwcm9wZXJ0aWVzRm9ySW5pdGlhbGl6YXRpb24sIFdURl9BUlJBWV9MRU5H
VEgoYm9yZGVyQWJyaWRnZWRQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBib3JkZXJBYnJpZGdl
ZExvbmdoYW5kOworICAgIHJldHVybiBib3JkZXJBYnJpZGdlZExvbmdoYW5kczsKIH0KIAotY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyQm90dG9tTG9uZ2hhbmQoKQorY29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCYgYm9yZGVyQm90dG9tU2hvcnRoYW5kKCkKIHsKLSAgICBzdGF0
aWMgY29uc3QgaW50IGJvcmRlckJvdHRvbVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21Db2xvciB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlM
b25naGFuZCwgYm9yZGVyQm90dG9tTG9uZ2hhbmQsIChib3JkZXJCb3R0b21Qcm9wZXJ0aWVzLCBX
VEZfQVJSQVlfTEVOR1RIKGJvcmRlckJvdHRvbVByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJv
cmRlckJvdHRvbUxvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRl
ckJvdHRvbVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciB9
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgYm9yZGVy
Qm90dG9tTG9uZ2hhbmRzLCAoYm9yZGVyQm90dG9tUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdU
SChib3JkZXJCb3R0b21Qcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJCb3R0b21Mb25n
aGFuZHM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckNvbG9yTG9uZ2hh
bmQoKQorY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgYm9yZGVyQ29sb3JTaG9ydGhhbmQo
KQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyQ29sb3JQcm9wZXJ0aWVzW10gPSB7Cisg
ICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyQ29sb3JQcm9wZXJ0aWVzW10gPSB7
CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsCiAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRDb2xvciwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwK
ICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IKICAgICB9OwotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyQ29sb3JMb25naGFuZCwgKGJv
cmRlckNvbG9yUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJDb2xvclByb3BlcnRp
ZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlckNvbG9yTG9uZ2hhbmQ7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHlsZVByb3BlcnR5U2hvcnRoYW5kLCBib3JkZXJDb2xvckxvbmdoYW5kcywgKGJv
cmRlckNvbG9yUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJDb2xvclByb3BlcnRp
ZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlckNvbG9yTG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJJbWFnZUxvbmdoYW5kKCkKK2NvbnN0IFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQmIGJvcmRlckltYWdlU2hvcnRoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3Qg
aW50IGJvcmRlckltYWdlUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9w
ZXJ0eUlEIGJvcmRlckltYWdlUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJv
cmRlckltYWdlU291cmNlLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU2xpY2UsCiAg
ICAgICAgIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJJbWFnZU91dHNldCwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVJlcGVhdAog
ICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3Jk
ZXJJbWFnZUxvbmdoYW5kLCAoYm9yZGVySW1hZ2VQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RI
KGJvcmRlckltYWdlUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gYm9yZGVySW1hZ2VMb25naGFu
ZDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQsIGJvcmRl
ckltYWdlTG9uZ2hhbmRzLCAoYm9yZGVySW1hZ2VQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RI
KGJvcmRlckltYWdlUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVySW1hZ2VMb25naGFu
ZHM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckxlZnRMb25naGFuZCgp
Citjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBib3JkZXJMZWZ0U2hvcnRoYW5kKCkKIHsK
LSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckxlZnRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0Q29sb3IgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5
TG9uZ2hhbmQsIGJvcmRlckxlZnRMb25naGFuZCwgKGJvcmRlckxlZnRQcm9wZXJ0aWVzLCBXVEZf
QVJSQVlfTEVOR1RIKGJvcmRlckxlZnRQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBib3JkZXJM
ZWZ0TG9uZ2hhbmQ7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyTGVmdFBy
b3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciB9OworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgYm9yZGVyTGVmdExvbmdoYW5kcywg
KGJvcmRlckxlZnRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckxlZnRQcm9wZXJ0
aWVzKSkpOworICAgIHJldHVybiBib3JkZXJMZWZ0TG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJSYWRpdXNMb25naGFuZCgpCitjb25zdCBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kJiBib3JkZXJSYWRpdXNTaG9ydGhhbmQoKQogewotICAgIHN0YXRpYyBjb25z
dCBpbnQgYm9yZGVyUmFkaXVzUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQ
cm9wZXJ0eUlEIGJvcmRlclJhZGl1c1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVy
dHlCb3JkZXJUb3BSaWdodFJhZGl1cywKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0
UmFkaXVzLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsCiAgICAg
ICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMKICAgICB9OwotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyUmFkaXVzTG9uZ2hhbmQs
IChib3JkZXJSYWRpdXNQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclJhZGl1c1By
b3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlclJhZGl1c0xvbmdoYW5kOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgYm9yZGVyUmFkaXVzTG9uZ2hh
bmRzLCAoYm9yZGVyUmFkaXVzUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJSYWRp
dXNQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJSYWRpdXNMb25naGFuZHM7CiB9CiAK
LWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclJpZ2h0TG9uZ2hhbmQoKQorY29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgYm9yZGVyUmlnaHRTaG9ydGhhbmQoKQogewotICAgIHN0
YXRpYyBjb25zdCBpbnQgYm9yZGVyUmlnaHRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0Q29sb3IgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9u
Z2hhbmQsIGJvcmRlclJpZ2h0TG9uZ2hhbmQsIChib3JkZXJSaWdodFByb3BlcnRpZXMsIFdURl9B
UlJBWV9MRU5HVEgoYm9yZGVyUmlnaHRQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBib3JkZXJS
aWdodExvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlclJpZ2h0
UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yIH07CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hvcnRoYW5kLCBib3JkZXJSaWdodExvbmdo
YW5kcywgKGJvcmRlclJpZ2h0UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJSaWdo
dFByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlclJpZ2h0TG9uZ2hhbmRzOwogfQogCi1j
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJTcGFjaW5nTG9uZ2hhbmQoKQorY29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgYm9yZGVyU3BhY2luZ1Nob3J0aGFuZCgpCiB7Ci0gICAg
c3RhdGljIGNvbnN0IGludCBib3JkZXJTcGFjaW5nUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZl
cnRpY2FsU3BhY2luZyB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25n
aGFuZCwgYm9yZGVyU3BhY2luZ0xvbmdoYW5kLCAoYm9yZGVyU3BhY2luZ1Byb3BlcnRpZXMsIFdU
Rl9BUlJBWV9MRU5HVEgoYm9yZGVyU3BhY2luZ1Byb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJv
cmRlclNwYWNpbmdMb25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3Jk
ZXJTcGFjaW5nUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250
YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyB9OworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgYm9yZGVyU3BhY2lu
Z0xvbmdoYW5kcywgKGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJv
cmRlclNwYWNpbmdQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJTcGFjaW5nTG9uZ2hh
bmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJTdHlsZUxvbmdoYW5k
KCkKK2NvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGJvcmRlclN0eWxlU2hvcnRoYW5kKCkK
IHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclN0eWxlUHJvcGVydGllc1tdID0geworICAg
IHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlclN0eWxlUHJvcGVydGllc1tdID0gewog
ICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0U3R5bGUsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsCiAg
ICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlCiAgICAgfTsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlclN0eWxlTG9uZ2hhbmQsIChib3Jk
ZXJTdHlsZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyU3R5bGVQcm9wZXJ0aWVz
KSkpOwotICAgIHJldHVybiBib3JkZXJTdHlsZUxvbmdoYW5kOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgYm9yZGVyU3R5bGVMb25naGFuZHMsIChib3Jk
ZXJTdHlsZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyU3R5bGVQcm9wZXJ0aWVz
KSkpOworICAgIHJldHVybiBib3JkZXJTdHlsZUxvbmdoYW5kczsKIH0KIAotY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgYm9yZGVyVG9wTG9uZ2hhbmQoKQorY29uc3QgU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCYgYm9yZGVyVG9wU2hvcnRoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJv
cmRlclRvcFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgQ1NTUHJv
cGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciB9OwotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyVG9wTG9uZ2hhbmQs
IChib3JkZXJUb3BQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclRvcFByb3BlcnRp
ZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlclRvcExvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBD
U1NQcm9wZXJ0eUlEIGJvcmRlclRvcFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJU
b3BXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BD
b2xvciB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwg
Ym9yZGVyVG9wTG9uZ2hhbmRzLCAoYm9yZGVyVG9wUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdU
SChib3JkZXJUb3BQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJUb3BMb25naGFuZHM7
CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlcldpZHRoTG9uZ2hhbmQoKQor
Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgYm9yZGVyV2lkdGhTaG9ydGhhbmQoKQogewot
ICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyV2lkdGhQcm9wZXJ0aWVzW10gPSB7CisgICAgc3Rh
dGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyV2lkdGhQcm9wZXJ0aWVzW10gPSB7CiAgICAg
ICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHRXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwKICAgICAg
ICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgKICAgICB9OwotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyV2lkdGhMb25naGFuZCwgKGJvcmRlcldp
ZHRoUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJXaWR0aFByb3BlcnRpZXMpKSk7
Ci0gICAgcmV0dXJuIGJvcmRlcldpZHRoTG9uZ2hhbmQ7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHlsZVByb3BlcnR5U2hvcnRoYW5kLCBib3JkZXJXaWR0aExvbmdoYW5kcywgKGJvcmRlcldp
ZHRoUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJXaWR0aFByb3BlcnRpZXMpKSk7
CisgICAgcmV0dXJuIGJvcmRlcldpZHRoTG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiBsaXN0U3R5bGVMb25naGFuZCgpCitjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kJiBsaXN0U3R5bGVTaG9ydGhhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgbGlzdFN0
eWxlUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGxpc3RT
dHlsZVByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLAog
ICAgICAgICBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0
eUxpc3RTdHlsZUltYWdlCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3Bl
cnR5TG9uZ2hhbmQsIGxpc3RTdHlsZUxvbmdoYW5kLCAobGlzdFN0eWxlUHJvcGVydGllcywgV1RG
X0FSUkFZX0xFTkdUSChsaXN0U3R5bGVQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBsaXN0U3R5
bGVMb25naGFuZDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQsIGxpc3RTdHlsZUxvbmdoYW5kcywgKGxpc3RTdHlsZVByb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgobGlzdFN0eWxlUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gbGlzdFN0eWxlTG9uZ2hh
bmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBmb250TG9uZ2hhbmQoKQorY29u
c3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgZm9udFNob3J0aGFuZCgpCiB7Ci0gICAgc3RhdGlj
IGNvbnN0IGludCBmb250UHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9w
ZXJ0eUlEIGZvbnRQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Rm9udEZhbWls
eSwKICAgICAgICAgQ1NTUHJvcGVydHlGb250U2l6ZSwKICAgICAgICAgQ1NTUHJvcGVydHlGb250
U3R5bGUsCkBAIC0yMDEsNTUgKzIwMCw1NSBAQCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBm
b250TG9uZ2hhbmQoKQogICAgICAgICBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsCiAgICAgICAgIENT
U1Byb3BlcnR5TGluZUhlaWdodAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQ
cm9wZXJ0eUxvbmdoYW5kLCBmb250TG9uZ2hhbmQsIChmb250UHJvcGVydGllcywgV1RGX0FSUkFZ
X0xFTkdUSChmb250UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gZm9udExvbmdoYW5kOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgZm9udExvbmdoYW5k
cywgKGZvbnRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGZvbnRQcm9wZXJ0aWVzKSkpOwor
ICAgIHJldHVybiBmb250TG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiBtYXJnaW5Mb25naGFuZCgpCitjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBtYXJnaW5T
aG9ydGhhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luUHJvcGVydGllc1tdID0g
eworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIG1hcmdpblByb3BlcnRpZXNbXSA9IHsK
ICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsCiAgICAgICAgIENTU1Byb3BlcnR5TWFyZ2lu
UmlnaHQsCiAgICAgICAgIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLAogICAgICAgICBDU1NQcm9w
ZXJ0eU1hcmdpbkxlZnQKICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVy
dHlMb25naGFuZCwgbWFyZ2luTG9uZ2hhbmQsIChtYXJnaW5Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlf
TEVOR1RIKG1hcmdpblByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIG1hcmdpbkxvbmdoYW5kOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgbWFyZ2luTG9u
Z2hhbmRzLCAobWFyZ2luUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJnaW5Qcm9wZXJ0
aWVzKSkpOworICAgIHJldHVybiBtYXJnaW5Mb25naGFuZHM7CiB9CiAKLWNvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIG91dGxpbmVMb25naGFuZCgpCitjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kJiBvdXRsaW5lU2hvcnRoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IG91dGxpbmVQ
cm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgb3V0bGluZVBy
b3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IsCiAgICAgICAg
IENTU1Byb3BlcnR5T3V0bGluZVN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0
aAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBv
dXRsaW5lTG9uZ2hhbmQsIChvdXRsaW5lUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChvdXRs
aW5lUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gb3V0bGluZUxvbmdoYW5kOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgb3V0bGluZUxvbmdoYW5kcywg
KG91dGxpbmVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG91dGxpbmVQcm9wZXJ0aWVzKSkp
OworICAgIHJldHVybiBvdXRsaW5lTG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxv
bmdoYW5kJiBvdmVyZmxvd0xvbmdoYW5kKCkKK2NvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQm
IG92ZXJmbG93U2hvcnRoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IG92ZXJmbG93UHJv
cGVydGllc1tdID0geyBDU1NQcm9wZXJ0eU92ZXJmbG93WCwgQ1NTUHJvcGVydHlPdmVyZmxvd1kg
fTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIG92ZXJmbG93
TG9uZ2hhbmQsIChvdmVyZmxvd1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgob3ZlcmZsb3dQ
cm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBvdmVyZmxvd0xvbmdoYW5kOworICAgIHN0YXRpYyBj
b25zdCBDU1NQcm9wZXJ0eUlEIG92ZXJmbG93UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eU92
ZXJmbG93WCwgQ1NTUHJvcGVydHlPdmVyZmxvd1kgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0eWxlUHJvcGVydHlTaG9ydGhhbmQsIG92ZXJmbG93TG9uZ2hhbmRzLCAob3ZlcmZsb3dQcm9w
ZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG92ZXJmbG93UHJvcGVydGllcykpKTsKKyAgICByZXR1
cm4gb3ZlcmZsb3dMb25naGFuZHM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHBh
ZGRpbmdMb25naGFuZCgpCitjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBwYWRkaW5nU2hv
cnRoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IHBhZGRpbmdQcm9wZXJ0aWVzW10gPSB7
CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgcGFkZGluZ1Byb3BlcnRpZXNbXSA9IHsK
ICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nVG9wLAogICAgICAgICBDU1NQcm9wZXJ0eVBhZGRp
bmdSaWdodCwKICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLAogICAgICAgICBDU1NQ
cm9wZXJ0eVBhZGRpbmdMZWZ0CiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1By
b3BlcnR5TG9uZ2hhbmQsIHBhZGRpbmdMb25naGFuZCwgKHBhZGRpbmdQcm9wZXJ0aWVzLCBXVEZf
QVJSQVlfTEVOR1RIKHBhZGRpbmdQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBwYWRkaW5nTG9u
Z2hhbmQ7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hvcnRoYW5kLCBw
YWRkaW5nTG9uZ2hhbmRzLCAocGFkZGluZ1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgocGFk
ZGluZ1Byb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHBhZGRpbmdMb25naGFuZHM7CiB9CiAKLWNv
bnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCkKK2NvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHdlYmtpdEFuaW1hdGlvblNob3J0aGFuZCgpCiB7Ci0g
ICAgc3RhdGljIGNvbnN0IGludCBhbmltYXRpb25Qcm9wZXJ0aWVzW10gPSB7CisgICAgc3RhdGlj
IGNvbnN0IENTU1Byb3BlcnR5SUQgYW5pbWF0aW9uUHJvcGVydGllc1tdID0gewogICAgICAgICBD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWUsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0
QW5pbWF0aW9uRHVyYXRpb24sCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGlt
aW5nRnVuY3Rpb24sCkBAIC0yNTgsODYgKzI1Nyw4NiBAQCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiB3ZWJraXRBbmltYXRpb25Mb25naGFuZCgpCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0
QW5pbWF0aW9uRGlyZWN0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZp
bGxNb2RlCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hh
bmQsIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kLCAoYW5pbWF0aW9uUHJvcGVydGllcywgV1RGX0FS
UkFZX0xFTkdUSChhbmltYXRpb25Qcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiB3ZWJraXRBbmlt
YXRpb25Mb25naGFuZDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQsIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kcywgKGFuaW1hdGlvblByb3BlcnRpZXMsIFdU
Rl9BUlJBWV9MRU5HVEgoYW5pbWF0aW9uUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0
QW5pbWF0aW9uTG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJr
aXRCb3JkZXJBZnRlckxvbmdoYW5kKCkKK2NvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHdl
YmtpdEJvcmRlckFmdGVyU2hvcnRoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRl
ckFmdGVyUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGgs
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJBZnRlckNvbG9yICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25n
aGFuZCwgd2Via2l0Qm9yZGVyQWZ0ZXJMb25naGFuZCwgKGJvcmRlckFmdGVyUHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSChib3JkZXJBZnRlclByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdl
YmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQ7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQg
Ym9yZGVyQWZ0ZXJQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJX
aWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckFmdGVyQ29sb3IgIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kLCB3ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5kcywgKGJvcmRlckFmdGVyUHJv
cGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJBZnRlclByb3BlcnRpZXMpKSk7CisgICAg
cmV0dXJuIHdlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiB3ZWJraXRCb3JkZXJCZWZvcmVMb25naGFuZCgpCitjb25zdCBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kJiB3ZWJraXRCb3JkZXJCZWZvcmVTaG9ydGhhbmQoKQogewotICAgIHN0YXRp
YyBjb25zdCBpbnQgYm9yZGVyQmVmb3JlUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlLCBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yICB9OwotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQsIChi
b3JkZXJCZWZvcmVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckJlZm9yZVByb3Bl
cnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdEJvcmRlckJlZm9yZUxvbmdoYW5kOworICAgIHN0
YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckJlZm9yZVByb3BlcnRpZXNbXSA9IHsgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJC
ZWZvcmVTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvciAgfTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQsIHdlYmtpdEJvcmRlckJl
Zm9yZUxvbmdoYW5kcywgKGJvcmRlckJlZm9yZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgo
Ym9yZGVyQmVmb3JlUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0Qm9yZGVyQmVmb3Jl
TG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRCb3JkZXJF
bmRMb25naGFuZCgpCitjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRCb3JkZXJF
bmRTaG9ydGhhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyRW5kUHJvcGVydGll
c1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckVuZFN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRCb3JkZXJFbmRM
b25naGFuZCwgKGJvcmRlckVuZFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyRW5k
UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0Qm9yZGVyRW5kTG9uZ2hhbmQ7CisgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyRW5kUHJvcGVydGllc1tdID0geyBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0
eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yIH07CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHlsZVByb3BlcnR5U2hvcnRoYW5kLCB3ZWJraXRCb3JkZXJFbmRMb25naGFuZHMs
IChib3JkZXJFbmRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckVuZFByb3BlcnRp
ZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdEJvcmRlckVuZExvbmdoYW5kczsKIH0KIAotY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCgpCitjb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRCb3JkZXJTdGFydFNob3J0aGFuZCgpCiB7Ci0g
ICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJTdGFydFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJTdGFydFdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5
bGUsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvciB9OwotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCwg
KGJvcmRlclN0YXJ0UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJTdGFydFByb3Bl
cnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQ7CisgICAgc3Rh
dGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyU3RhcnRQcm9wZXJ0aWVzW10gPSB7IENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFy
dFN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3IgfTsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQsIHdlYmtpdEJvcmRlclN0YXJ0TG9u
Z2hhbmRzLCAoYm9yZGVyU3RhcnRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclN0
YXJ0UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZHM7
CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENvbHVtbnNMb25naGFuZCgp
Citjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRDb2x1bW5zU2hvcnRoYW5kKCkK
IHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGNvbHVtbnNQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQgfTsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdENvbHVtbnNM
b25naGFuZCwgKGNvbHVtbnNQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGNvbHVtbnNQcm9w
ZXJ0aWVzKSkpOwotICAgIHJldHVybiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmQ7CisgICAgc3RhdGlj
IGNvbnN0IENTU1Byb3BlcnR5SUQgY29sdW1uc1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5XaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5Db3VudCB9OworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgd2Via2l0Q29sdW1uc0xv
bmdoYW5kcywgKGNvbHVtbnNQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGNvbHVtbnNQcm9w
ZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmRzOwogfQogCi1jb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQoKQorY29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0Q29sdW1uUnVsZVNob3J0aGFuZCgpCiB7Ci0g
ICAgc3RhdGljIGNvbnN0IGludCBjb2x1bW5SdWxlUHJvcGVydGllc1tdID0geworICAgIHN0YXRp
YyBjb25zdCBDU1NQcm9wZXJ0eUlEIGNvbHVtblJ1bGVQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAg
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLAogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtblJ1bGVTdHlsZSwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxl
Q29sb3IsCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hh
bmQsIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZCwgKGNvbHVtblJ1bGVQcm9wZXJ0aWVzLCBXVEZf
QVJSQVlfTEVOR1RIKGNvbHVtblJ1bGVQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiB3ZWJraXRD
b2x1bW5SdWxlTG9uZ2hhbmQ7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5
U2hvcnRoYW5kLCB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmRzLCAoY29sdW1uUnVsZVByb3BlcnRp
ZXMsIFdURl9BUlJBWV9MRU5HVEgoY29sdW1uUnVsZVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJu
IHdlYmtpdENvbHVtblJ1bGVMb25naGFuZHM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hh
bmQmIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQoKQorY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZCYgd2Via2l0RmxleEZsb3dTaG9ydGhhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgZmxl
eEZsb3dQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbiwgQ1NT
UHJvcGVydHlXZWJraXRGbGV4V3JhcCB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJv
cGVydHlMb25naGFuZCwgd2Via2l0RmxleEZsb3dMb25naGFuZCwgKGZsZXhGbG93UHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChmbGV4Rmxvd1Byb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdl
YmtpdEZsZXhGbG93TG9uZ2hhbmQ7CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgZmxl
eEZsb3dQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbiwgQ1NT
UHJvcGVydHlXZWJraXRGbGV4V3JhcCB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZCwgd2Via2l0RmxleEZsb3dMb25naGFuZHMsIChmbGV4Rmxvd1Byb3Bl
cnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoZmxleEZsb3dQcm9wZXJ0aWVzKSkpOworICAgIHJldHVy
biB3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFu
ZCYgd2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgpCitjb25zdCBTdHlsZVByb3BlcnR5U2hv
cnRoYW5kJiB3ZWJraXRNYXJnaW5Db2xsYXBzZVNob3J0aGFuZCgpCiB7Ci0gICAgc3RhdGljIGNv
bnN0IGludCBtYXJnaW5Db2xsYXBzZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRN
YXJnaW5CZWZvcmVDb2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNl
IH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRN
YXJnaW5Db2xsYXBzZUxvbmdoYW5kLCAobWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKG1hcmdpbkNvbGxhcHNlUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0
TWFyZ2luQ29sbGFwc2VMb25naGFuZDsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBt
YXJnaW5Db2xsYXBzZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZv
cmVDb2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIH07CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hvcnRoYW5kLCB3ZWJraXRNYXJnaW5D
b2xsYXBzZUxvbmdoYW5kcywgKG1hcmdpbkNvbGxhcHNlUHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSChtYXJnaW5Db2xsYXBzZVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdE1hcmdp
bkNvbGxhcHNlTG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJr
aXRNYXJxdWVlTG9uZ2hhbmQoKQorY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0
TWFycXVlZVNob3J0aGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBtYXJxdWVlUHJvcGVy
dGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIG1hcnF1ZWVQcm9wZXJ0
aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwKICAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50LAogICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1h
cnF1ZWVTdHlsZSwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQKICAgICB9
OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0TWFy
cXVlZUxvbmdoYW5kLCAobWFycXVlZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFycXVl
ZVByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdE1hcnF1ZWVMb25naGFuZDsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQsIHdlYmtpdE1hcnF1ZWVM
b25naGFuZHMsIChtYXJxdWVlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJxdWVlUHJv
cGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0TWFycXVlZUxvbmdoYW5kczsKIH0KIAotY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFza0xvbmdoYW5kKCkKK2NvbnN0IFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQmIHdlYmtpdE1hc2tTaG9ydGhhbmQoKQogewotICAgIHN0YXRpYyBj
b25zdCBpbnQgbWFza1Byb3BlcnRpZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVy
dHlJRCBtYXNrUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJ
bWFnZSwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwKICAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwKQEAgLTM0NywxNjAgKzM0NiwxNjAgQEAgY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFza0xvbmdoYW5kKCkKICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRNYXNrQ2xpcCwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2lu
CiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdl
YmtpdE1hc2tMb25naGFuZCwgKG1hc2tQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hc2tQ
cm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiB3ZWJraXRNYXNrTG9uZ2hhbmQ7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hvcnRoYW5kLCB3ZWJraXRNYXNrTG9uZ2hhbmRz
LCAobWFza1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFza1Byb3BlcnRpZXMpKSk7Cisg
ICAgcmV0dXJuIHdlYmtpdE1hc2tMb25naGFuZHM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9u
Z2hhbmQmIHdlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kKCkKK2NvbnN0IFN0eWxlUHJvcGVydHlT
aG9ydGhhbmQmIHdlYmtpdE1hc2tQb3NpdGlvblNob3J0aGFuZCgpCiB7Ci0gICAgc3RhdGljIGNv
bnN0IGludCBtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZIH07Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRNYXNrUG9zaXRpb25Mb25n
aGFuZCwgKG1hc2tQb3NpdGlvblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFza1Bvc2l0
aW9uUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQ7
CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgbWFza1Bvc2l0aW9uUHJvcGVydGllc1td
ID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWSB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCwgd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmRzLCAobWFza1Bvc2l0aW9uUHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzKSkpOworICAgIHJldHVy
biB3ZWJraXRNYXNrUG9zaXRpb25Mb25naGFuZHM7CiB9CiAKLWNvbnN0IENTU1Byb3BlcnR5TG9u
Z2hhbmQmIHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZCgpCitjb25zdCBTdHlsZVByb3BlcnR5U2hv
cnRoYW5kJiB3ZWJraXRNYXNrUmVwZWF0U2hvcnRoYW5kKCkKIHsKLSAgICBzdGF0aWMgY29uc3Qg
aW50IG1hc2tSZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVh
dFgsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkgfTsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZCwgKG1hc2tS
ZXBlYXRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hc2tSZXBlYXRQcm9wZXJ0aWVzKSkp
OwotICAgIHJldHVybiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQ7CisgICAgc3RhdGljIGNvbnN0
IENTU1Byb3BlcnR5SUQgbWFza1JlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUmVwZWF0WCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSB9OworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgd2Via2l0TWFza1JlcGVhdExv
bmdoYW5kcywgKG1hc2tSZXBlYXRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hc2tSZXBl
YXRQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmRzOwog
fQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFu
ZCgpCitjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRUZXh0RW1waGFzaXNTaG9y
dGhhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgdGV4dEVtcGhhc2lzUHJvcGVydGllc1td
ID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHRleHRFbXBoYXNpc1Byb3BlcnRp
ZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwKICAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcgogICAgIH07Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUZXh0RW1waGFzaXNM
b25naGFuZCwgKHRleHRFbXBoYXNpc1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodGV4dEVt
cGhhc2lzUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hh
bmQ7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hvcnRoYW5kLCB3ZWJr
aXRUZXh0RW1waGFzaXNMb25naGFuZHMsICh0ZXh0RW1waGFzaXNQcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKHRleHRFbXBoYXNpc1Byb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdFRl
eHRFbXBoYXNpc0xvbmdoYW5kczsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Vi
a2l0VGV4dFN0cm9rZUxvbmdoYW5kKCkKK2NvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHdl
YmtpdFRleHRTdHJva2VTaG9ydGhhbmQoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgdGV4dFN0
cm9rZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgsIENT
U1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmQsICh0ZXh0U3Ry
b2tlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0ZXh0U3Ryb2tlUHJvcGVydGllcykpKTsK
LSAgICByZXR1cm4gd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kOworICAgIHN0YXRpYyBjb25zdCBD
U1NQcm9wZXJ0eUlEIHRleHRTdHJva2VQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0
VGV4dFN0cm9rZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciB9OworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgd2Via2l0VGV4dFN0
cm9rZUxvbmdoYW5kcywgKHRleHRTdHJva2VQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRl
eHRTdHJva2VQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hh
bmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUcmFuc2l0aW9uTG9u
Z2hhbmQoKQorY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0VHJhbnNpdGlvblNo
b3J0aGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCB0cmFuc2l0aW9uUHJvcGVydGllc1td
ID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHRyYW5zaXRpb25Qcm9wZXJ0aWVz
W10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LAogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiwKICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sCiAgICAgICAgIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNpdGlvbkRlbGF5CiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENT
U1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCwgKHRyYW5zaXRpb25Q
cm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRyYW5zaXRpb25Qcm9wZXJ0aWVzKSkpOwotICAg
IHJldHVybiB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQ7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHlsZVByb3BlcnR5U2hvcnRoYW5kLCB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmRzLCAodHJh
bnNpdGlvblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodHJhbnNpdGlvblByb3BlcnRpZXMp
KSk7CisgICAgcmV0dXJuIHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZHM7CiB9CiAKLWNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRyYW5zZm9ybU9yaWdpbkxvbmdoYW5kKCkKK2NvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHdlYmtpdFRyYW5zZm9ybU9yaWdpblNob3J0aGFuZCgp
CiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCB0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzW10gPSB7
CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgdHJhbnNmb3JtT3JpZ2luUHJvcGVydGll
c1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsCiAgICAg
ICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSwKICAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdFRyYW5zZm9ybU9yaWdpbkxvbmdoYW5kLCAodHJh
bnNmb3JtT3JpZ2luUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0cmFuc2Zvcm1PcmlnaW5Q
cm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZDsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQsIHdlYmtpdFRy
YW5zZm9ybU9yaWdpbkxvbmdoYW5kcywgKHRyYW5zZm9ybU9yaWdpblByb3BlcnRpZXMsIFdURl9B
UlJBWV9MRU5HVEgodHJhbnNmb3JtT3JpZ2luUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Vi
a2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmRzOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiB3ZWJraXRXcmFwTG9uZ2hhbmQoKQorY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYg
d2Via2l0V3JhcFNob3J0aGFuZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCB3ZWJraXRXcmFw
UHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHdlYmtpdFdy
YXBQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3csCiAg
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcE1hcmdpbiwKICAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRXcmFwUGFkZGluZwogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9w
ZXJ0eUxvbmdoYW5kLCB3ZWJraXRXcmFwTG9uZ2hhbmQsICh3ZWJraXRXcmFwUHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSCh3ZWJraXRXcmFwUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Vi
a2l0V3JhcExvbmdoYW5kOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCwgd2Via2l0V3JhcExvbmdoYW5kcywgKHdlYmtpdFdyYXBQcm9wZXJ0aWVzLCBXVEZf
QVJSQVlfTEVOR1RIKHdlYmtpdFdyYXBQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRX
cmFwTG9uZ2hhbmRzOwogfQogCiAvLyBSZXR1cm5zIGFuIGVtcHR5IGxpc3QgaWYgdGhlIHByb3Bl
cnR5IGlzIG5vdCBhIHNob3J0aGFuZAotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hh
bmRGb3JQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkKK2NvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQmIHNob3J0aGFuZEZvclByb3BlcnR5KGludCBwcm9wZXJ0eUlEKQogewogICAgIHN3aXRjaCAo
cHJvcGVydHlJRCkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kOgotICAgICAgICBy
ZXR1cm4gYmFja2dyb3VuZExvbmdoYW5kKCk7CisgICAgICAgIHJldHVybiBiYWNrZ3JvdW5kU2hv
cnRoYW5kKCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbjoKLSAgICAg
ICAgcmV0dXJuIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kKCk7CisgICAgICAgIHJldHVybiBi
YWNrZ3JvdW5kUG9zaXRpb25TaG9ydGhhbmQoKTsKICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dy
b3VuZFJlcGVhdDoKLSAgICAgICAgcmV0dXJuIGJhY2tncm91bmRSZXBlYXRMb25naGFuZCgpOwor
ICAgICAgICByZXR1cm4gYmFja2dyb3VuZFJlcGVhdFNob3J0aGFuZCgpOwogICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXI6Ci0gICAgICAgIHJldHVybiBib3JkZXJMb25naGFuZCgpOworICAgICAg
ICByZXR1cm4gYm9yZGVyU2hvcnRoYW5kKCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbToKLSAgICAgICAgcmV0dXJuIGJvcmRlckJvdHRvbUxvbmdoYW5kKCk7CisgICAgICAgIHJl
dHVybiBib3JkZXJCb3R0b21TaG9ydGhhbmQoKTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
Q29sb3I6Ci0gICAgICAgIHJldHVybiBib3JkZXJDb2xvckxvbmdoYW5kKCk7CisgICAgICAgIHJl
dHVybiBib3JkZXJDb2xvclNob3J0aGFuZCgpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJ
bWFnZToKLSAgICAgICAgcmV0dXJuIGJvcmRlckltYWdlTG9uZ2hhbmQoKTsKKyAgICAgICAgcmV0
dXJuIGJvcmRlckltYWdlU2hvcnRoYW5kKCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxl
ZnQ6Ci0gICAgICAgIHJldHVybiBib3JkZXJMZWZ0TG9uZ2hhbmQoKTsKKyAgICAgICAgcmV0dXJu
IGJvcmRlckxlZnRTaG9ydGhhbmQoKTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVz
OgotICAgICAgICByZXR1cm4gYm9yZGVyUmFkaXVzTG9uZ2hhbmQoKTsKKyAgICAgICAgcmV0dXJu
IGJvcmRlclJhZGl1c1Nob3J0aGFuZCgpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdo
dDoKLSAgICAgICAgcmV0dXJuIGJvcmRlclJpZ2h0TG9uZ2hhbmQoKTsKKyAgICAgICAgcmV0dXJu
IGJvcmRlclJpZ2h0U2hvcnRoYW5kKCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclNwYWNp
bmc6Ci0gICAgICAgIHJldHVybiBib3JkZXJTcGFjaW5nTG9uZ2hhbmQoKTsKKyAgICAgICAgcmV0
dXJuIGJvcmRlclNwYWNpbmdTaG9ydGhhbmQoKTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
U3R5bGU6Ci0gICAgICAgIHJldHVybiBib3JkZXJTdHlsZUxvbmdoYW5kKCk7CisgICAgICAgIHJl
dHVybiBib3JkZXJTdHlsZVNob3J0aGFuZCgpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJU
b3A6Ci0gICAgICAgIHJldHVybiBib3JkZXJUb3BMb25naGFuZCgpOworICAgICAgICByZXR1cm4g
Ym9yZGVyVG9wU2hvcnRoYW5kKCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoOgot
ICAgICAgICByZXR1cm4gYm9yZGVyV2lkdGhMb25naGFuZCgpOworICAgICAgICByZXR1cm4gYm9y
ZGVyV2lkdGhTaG9ydGhhbmQoKTsKICAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlOgotICAg
ICAgICByZXR1cm4gbGlzdFN0eWxlTG9uZ2hhbmQoKTsKKyAgICAgICAgcmV0dXJuIGxpc3RTdHls
ZVNob3J0aGFuZCgpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OgotICAgICAgICByZXR1cm4g
Zm9udExvbmdoYW5kKCk7CisgICAgICAgIHJldHVybiBmb250U2hvcnRoYW5kKCk7CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU1hcmdpbjoKLSAgICAgICAgcmV0dXJuIG1hcmdpbkxvbmdoYW5kKCk7Cisg
ICAgICAgIHJldHVybiBtYXJnaW5TaG9ydGhhbmQoKTsKICAgICBjYXNlIENTU1Byb3BlcnR5T3V0
bGluZToKLSAgICAgICAgcmV0dXJuIG91dGxpbmVMb25naGFuZCgpOworICAgICAgICByZXR1cm4g
b3V0bGluZVNob3J0aGFuZCgpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzoKLSAgICAg
ICAgcmV0dXJuIG92ZXJmbG93TG9uZ2hhbmQoKTsKKyAgICAgICAgcmV0dXJuIG92ZXJmbG93U2hv
cnRoYW5kKCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmc6Ci0gICAgICAgIHJldHVybiBw
YWRkaW5nTG9uZ2hhbmQoKTsKKyAgICAgICAgcmV0dXJuIHBhZGRpbmdTaG9ydGhhbmQoKTsKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uOgotICAgICAgICByZXR1cm4gd2Via2l0
QW5pbWF0aW9uTG9uZ2hhbmQoKTsKKyAgICAgICAgcmV0dXJuIHdlYmtpdEFuaW1hdGlvblNob3J0
aGFuZCgpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcjoKLSAgICAgICAg
cmV0dXJuIHdlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQoKTsKKyAgICAgICAgcmV0dXJuIHdlYmtp
dEJvcmRlckFmdGVyU2hvcnRoYW5kKCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckJlZm9yZToKLSAgICAgICAgcmV0dXJuIHdlYmtpdEJvcmRlckJlZm9yZUxvbmdoYW5kKCk7Cisg
ICAgICAgIHJldHVybiB3ZWJraXRCb3JkZXJCZWZvcmVTaG9ydGhhbmQoKTsKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kOgotICAgICAgICByZXR1cm4gd2Via2l0Qm9yZGVyRW5k
TG9uZ2hhbmQoKTsKKyAgICAgICAgcmV0dXJuIHdlYmtpdEJvcmRlckVuZFNob3J0aGFuZCgpOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydDoKLSAgICAgICAgcmV0dXJuIHdl
YmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQoKTsKKyAgICAgICAgcmV0dXJuIHdlYmtpdEJvcmRlclN0
YXJ0U2hvcnRoYW5kKCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1czoK
LSAgICAgICAgcmV0dXJuIGJvcmRlclJhZGl1c0xvbmdoYW5kKCk7CisgICAgICAgIHJldHVybiBi
b3JkZXJSYWRpdXNTaG9ydGhhbmQoKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
czoKLSAgICAgICAgcmV0dXJuIHdlYmtpdENvbHVtbnNMb25naGFuZCgpOworICAgICAgICByZXR1
cm4gd2Via2l0Q29sdW1uc1Nob3J0aGFuZCgpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRD
b2x1bW5SdWxlOgotICAgICAgICByZXR1cm4gd2Via2l0Q29sdW1uUnVsZUxvbmdoYW5kKCk7Cisg
ICAgICAgIHJldHVybiB3ZWJraXRDb2x1bW5SdWxlU2hvcnRoYW5kKCk7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEZsZXhGbG93OgotICAgICAgICByZXR1cm4gd2Via2l0RmxleEZsb3dMb25n
aGFuZCgpOworICAgICAgICByZXR1cm4gd2Via2l0RmxleEZsb3dTaG9ydGhhbmQoKTsKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2U6Ci0gICAgICAgIHJldHVybiB3ZWJr
aXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCk7CisgICAgICAgIHJldHVybiB3ZWJraXRNYXJnaW5D
b2xsYXBzZVNob3J0aGFuZCgpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOgot
ICAgICAgICByZXR1cm4gd2Via2l0TWFycXVlZUxvbmdoYW5kKCk7CisgICAgICAgIHJldHVybiB3
ZWJraXRNYXJxdWVlU2hvcnRoYW5kKCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2s6
Ci0gICAgICAgIHJldHVybiB3ZWJraXRNYXNrTG9uZ2hhbmQoKTsKKyAgICAgICAgcmV0dXJuIHdl
YmtpdE1hc2tTaG9ydGhhbmQoKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0
aW9uOgotICAgICAgICByZXR1cm4gd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQoKTsKKyAgICAg
ICAgcmV0dXJuIHdlYmtpdE1hc2tQb3NpdGlvblNob3J0aGFuZCgpOwogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXNrUmVwZWF0OgotICAgICAgICByZXR1cm4gd2Via2l0TWFza1JlcGVhdExv
bmdoYW5kKCk7CisgICAgICAgIHJldHVybiB3ZWJraXRNYXNrUmVwZWF0U2hvcnRoYW5kKCk7CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpczoKLSAgICAgICAgcmV0dXJuIHdl
YmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kKCk7CisgICAgICAgIHJldHVybiB3ZWJraXRUZXh0RW1w
aGFzaXNTaG9ydGhhbmQoKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZToK
LSAgICAgICAgcmV0dXJuIHdlYmtpdFRleHRTdHJva2VMb25naGFuZCgpOworICAgICAgICByZXR1
cm4gd2Via2l0VGV4dFN0cm9rZVNob3J0aGFuZCgpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2l0aW9uOgotICAgICAgICByZXR1cm4gd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCk7
CisgICAgICAgIHJldHVybiB3ZWJraXRUcmFuc2l0aW9uU2hvcnRoYW5kKCk7CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbjoKLSAgICAgICAgcmV0dXJuIHdlYmtpdFRy
YW5zZm9ybU9yaWdpbkxvbmdoYW5kKCk7CisgICAgICAgIHJldHVybiB3ZWJraXRUcmFuc2Zvcm1P
cmlnaW5TaG9ydGhhbmQoKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcDoKLSAgICAg
ICAgcmV0dXJuIHdlYmtpdFdyYXBMb25naGFuZCgpOworICAgICAgICByZXR1cm4gd2Via2l0V3Jh
cFNob3J0aGFuZCgpOwogICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBkZWZhdWx0TG9uZ2hhbmQsICgpKTsKLSAgICAgICAgcmV0
dXJuIGRlZmF1bHRMb25naGFuZDsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kLCBlbXB0eVNob3J0aGFuZCwgKCkpOworICAgICAgICByZXR1cm4gZW1w
dHlTaG9ydGhhbmQ7CiAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHlMb25naGFuZC5oCmluZGV4IDkxNzBmZjYyNTg3ZDFlNTE3YzdmZTYzNDgyMWI0NmIxMTEzYThi
MDguLjY4M2M2ZWM3MWU4ZGFiNDA0MzgyMDg3YTI3OTE5YjZhYjBjYTFjNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaApAQCAtMjEsODMgKzIxLDg1IEBACiAjaWZu
ZGVmIENTU1Byb3BlcnR5TG9uZ2hhbmRfaAogI2RlZmluZSBDU1NQcm9wZXJ0eUxvbmdoYW5kX2gK
IAorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBDU1NQcm9wZXJ0eUxvbmdoYW5kIHsKK2NsYXNzIFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQgewogcHVibGljOgotICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQoKQorICAgIFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQoKQogICAgICAgICA6IG1fcHJvcGVydGllcygwKQotICAgICAgICAsIG1fbG9u
Z2hhbmRzRm9ySW5pdGlhbGl6YXRpb24oMCkKKyAgICAgICAgLCBtX3Byb3BlcnRpZXNGb3JJbml0
aWFsaXphdGlvbigwKQogICAgICAgICAsIG1fbGVuZ3RoKDApCiAgICAgewogICAgIH0KIAotICAg
IENTU1Byb3BlcnR5TG9uZ2hhbmQoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCB1bnNpZ25lZCBudW1Q
cm9wZXJ0aWVzKQorICAgIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoY29uc3QgQ1NTUHJvcGVydHlJ
RCogcHJvcGVydGllcywgdW5zaWduZWQgbnVtUHJvcGVydGllcykKICAgICAgICAgOiBtX3Byb3Bl
cnRpZXMocHJvcGVydGllcykKLSAgICAgICAgLCBtX2xvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9u
KDApCisgICAgICAgICwgbV9wcm9wZXJ0aWVzRm9ySW5pdGlhbGl6YXRpb24oMCkKICAgICAgICAg
LCBtX2xlbmd0aChudW1Qcm9wZXJ0aWVzKQogICAgIHsKICAgICB9CiAKLSAgICBDU1NQcm9wZXJ0
eUxvbmdoYW5kKGNvbnN0IGludCogcHJvcGVydGllcywgY29uc3QgQ1NTUHJvcGVydHlMb25naGFu
ZCoqIGxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uLCB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzKQor
ICAgIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoY29uc3QgQ1NTUHJvcGVydHlJRCogcHJvcGVydGll
cywgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCoqIHByb3BlcnRpZXNGb3JJbml0aWFsaXph
dGlvbiwgdW5zaWduZWQgbnVtUHJvcGVydGllcykKICAgICAgICAgOiBtX3Byb3BlcnRpZXMocHJv
cGVydGllcykKLSAgICAgICAgLCBtX2xvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uKGxvbmdoYW5k
c0ZvckluaXRpYWxpemF0aW9uKQorICAgICAgICAsIG1fcHJvcGVydGllc0ZvckluaXRpYWxpemF0
aW9uKHByb3BlcnRpZXNGb3JJbml0aWFsaXphdGlvbikKICAgICAgICAgLCBtX2xlbmd0aChudW1Q
cm9wZXJ0aWVzKQogICAgIHsKICAgICB9CiAKLSAgICBjb25zdCBpbnQqIHByb3BlcnRpZXMoKSBj
b25zdCB7IHJldHVybiBtX3Byb3BlcnRpZXM7IH0KLSAgICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kKiogbG9uZ2hhbmRzRm9ySW5pdGlhbGl6YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xvbmdo
YW5kc0ZvckluaXRpYWxpemF0aW9uOyB9CisgICAgY29uc3QgQ1NTUHJvcGVydHlJRCogcHJvcGVy
dGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllczsgfQorICAgIGNvbnN0IFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQqKiBwcm9wZXJ0aWVzRm9ySW5pdGlhbGl6YXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3Byb3BlcnRpZXNGb3JJbml0aWFsaXphdGlvbjsgfQogICAgIHVuc2lnbmVkIGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgaW50
KiBtX3Byb3BlcnRpZXM7Ci0gICAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCoqIG1fbG9uZ2hh
bmRzRm9ySW5pdGlhbGl6YXRpb247CisgICAgY29uc3QgQ1NTUHJvcGVydHlJRCogbV9wcm9wZXJ0
aWVzOworICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQqKiBtX3Byb3BlcnRpZXNGb3JJ
bml0aWFsaXphdGlvbjsKICAgICB1bnNpZ25lZCBtX2xlbmd0aDsKIH07CiAKLWNvbnN0IENTU1By
b3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgYmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5
TG9uZ2hhbmQmIGJhY2tncm91bmRSZXBlYXRMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgYm9yZGVyTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJv
cmRlckFicmlkZ2VkTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRl
ckJvdHRvbUxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJDb2xv
ckxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJJbWFnZUxvbmdo
YW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJMZWZ0TG9uZ2hhbmQoKTsK
LWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclJhZGl1c0xvbmdoYW5kKCk7Ci1jb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJSaWdodExvbmdoYW5kKCk7Ci1jb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJTcGFjaW5nTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIGJvcmRlclN0eWxlTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9u
Z2hhbmQmIGJvcmRlclRvcExvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBi
b3JkZXJXaWR0aExvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsaXN0U3R5
bGVMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgZm9udExvbmdoYW5kKCk7
Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBtYXJnaW5Mb25naGFuZCgpOwotY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYgb3V0bGluZUxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxv
bmdoYW5kJiBvdmVyZmxvd0xvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBw
YWRkaW5nTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEFuaW1h
dGlvbkxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRCb3JkZXJB
ZnRlckxvbmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRCb3JkZXJC
ZWZvcmVMb25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Qm9yZGVy
RW5kTG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEJvcmRlclN0
YXJ0TG9uZ2hhbmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENvbHVtbnNM
b25naGFuZCgpOwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Q29sdW1uUnVsZUxv
bmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRGbGV4Rmxvd0xvbmdo
YW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXJnaW5Db2xsYXBzZUxv
bmdoYW5kKCk7Ci1jb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXJxdWVlTG9uZ2hh
bmQoKTsKLWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tMb25naGFuZCgpOwot
Y29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQoKTsK
LWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZCgpOwot
Y29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmQoKTsK
LWNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRleHRTdHJva2VMb25naGFuZCgpOwot
Y29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCk7Ci1j
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZCgp
OwotY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0V3JhcExvbmdoYW5kKCk7Citjb25z
dCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBiYWNrZ3JvdW5kU2hvcnRoYW5kKCk7Citjb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kJiBiYWNrZ3JvdW5kUG9zaXRpb25TaG9ydGhhbmQoKTsKK2Nv
bnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGJhY2tncm91bmRSZXBlYXRTaG9ydGhhbmQoKTsK
K2NvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGJvcmRlclNob3J0aGFuZCgpOworY29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgYm9yZGVyQWJyaWRnZWRTaG9ydGhhbmQoKTsKK2NvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGJvcmRlckJvdHRvbVNob3J0aGFuZCgpOworY29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgYm9yZGVyQ29sb3JTaG9ydGhhbmQoKTsKK2NvbnN0IFN0
eWxlUHJvcGVydHlTaG9ydGhhbmQmIGJvcmRlckltYWdlU2hvcnRoYW5kKCk7Citjb25zdCBTdHls
ZVByb3BlcnR5U2hvcnRoYW5kJiBib3JkZXJMZWZ0U2hvcnRoYW5kKCk7Citjb25zdCBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kJiBib3JkZXJSYWRpdXNTaG9ydGhhbmQoKTsKK2NvbnN0IFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQmIGJvcmRlclJpZ2h0U2hvcnRoYW5kKCk7Citjb25zdCBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kJiBib3JkZXJTcGFjaW5nU2hvcnRoYW5kKCk7Citjb25zdCBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kJiBib3JkZXJTdHlsZVNob3J0aGFuZCgpOworY29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCYgYm9yZGVyVG9wU2hvcnRoYW5kKCk7Citjb25zdCBTdHlsZVByb3BlcnR5U2hv
cnRoYW5kJiBib3JkZXJXaWR0aFNob3J0aGFuZCgpOworY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCYgbGlzdFN0eWxlU2hvcnRoYW5kKCk7Citjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5k
JiBmb250U2hvcnRoYW5kKCk7Citjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBtYXJnaW5T
aG9ydGhhbmQoKTsKK2NvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIG91dGxpbmVTaG9ydGhh
bmQoKTsKK2NvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIG92ZXJmbG93U2hvcnRoYW5kKCk7
Citjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBwYWRkaW5nU2hvcnRoYW5kKCk7Citjb25z
dCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRBbmltYXRpb25TaG9ydGhhbmQoKTsKK2Nv
bnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHdlYmtpdEJvcmRlckFmdGVyU2hvcnRoYW5kKCk7
Citjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRCb3JkZXJCZWZvcmVTaG9ydGhh
bmQoKTsKK2NvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHdlYmtpdEJvcmRlckVuZFNob3J0
aGFuZCgpOworY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0Qm9yZGVyU3RhcnRT
aG9ydGhhbmQoKTsKK2NvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHdlYmtpdENvbHVtbnNT
aG9ydGhhbmQoKTsKK2NvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHdlYmtpdENvbHVtblJ1
bGVTaG9ydGhhbmQoKTsKK2NvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHdlYmtpdEZsZXhG
bG93U2hvcnRoYW5kKCk7Citjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRNYXJn
aW5Db2xsYXBzZVNob3J0aGFuZCgpOworY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Vi
a2l0TWFycXVlZVNob3J0aGFuZCgpOworY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Vi
a2l0TWFza1Nob3J0aGFuZCgpOworY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0
TWFza1Bvc2l0aW9uU2hvcnRoYW5kKCk7Citjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3
ZWJraXRNYXNrUmVwZWF0U2hvcnRoYW5kKCk7Citjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5k
JiB3ZWJraXRUZXh0RW1waGFzaXNTaG9ydGhhbmQoKTsKK2NvbnN0IFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQmIHdlYmtpdFRleHRTdHJva2VTaG9ydGhhbmQoKTsKK2NvbnN0IFN0eWxlUHJvcGVydHlT
aG9ydGhhbmQmIHdlYmtpdFRyYW5zaXRpb25TaG9ydGhhbmQoKTsKK2NvbnN0IFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQmIHdlYmtpdFRyYW5zZm9ybU9yaWdpblNob3J0aGFuZCgpOworY29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0V3JhcFNob3J0aGFuZCgpOwogCiAvLyBSZXR1cm5z
IGFuIGVtcHR5IGxpc3QgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCBhIHNob3J0aGFuZAotY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmRGb3JQcm9wZXJ0eShpbnQpOworY29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kRm9yUHJvcGVydHkoaW50KTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAK
aW5kZXggN2YwMDg1ZTY5ZDliNmM0NTU4MzY5YmMyNjBlYmY0MDM2MWZiOTViMC4uODczNDk4ZGVj
NDYzODllNmUzNTU2OWE3YTJiNjlhMTFkZjQ3ZWMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnR5U2V0LmNwcApAQCAtMjQsNyArMjQsNiBAQAogCiAjaW5jbHVkZSAiQ1NTUGFyc2Vy
LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlMb25naGFuZC5oIgotI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ1NT
VmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCkBAIC0xMDMsMTUgKzEwMiwx
NSBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlWYWx1ZShpbnQgcHJvcGVy
dHlJRCkgY29uc3QKICAgICAvLyBTaG9ydGhhbmQgYW5kIDQtdmFsdWVzIHByb3BlcnRpZXMKICAg
ICBzd2l0Y2ggKHByb3BlcnR5SUQpIHsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2lu
ZzoKLSAgICAgICAgcmV0dXJuIGJvcmRlclNwYWNpbmdWYWx1ZShib3JkZXJTcGFjaW5nTG9uZ2hh
bmQoKSk7CisgICAgICAgIHJldHVybiBib3JkZXJTcGFjaW5nVmFsdWUoYm9yZGVyU3BhY2luZ1No
b3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uOgotICAg
ICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGJhY2tncm91bmRQb3NpdGlvbkxv
bmdoYW5kKCkpOworICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGJhY2tn
cm91bmRQb3NpdGlvblNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFJlcGVhdDoKLSAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShiYWNrZ3Jv
dW5kUmVwZWF0TG9uZ2hhbmQoKSk7CisgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5k
VmFsdWUoYmFja2dyb3VuZFJlcGVhdFNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZDoKLSAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShiYWNr
Z3JvdW5kTG9uZ2hhbmQoKSk7CisgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFs
dWUoYmFja2dyb3VuZFNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOiB7
Ci0gICAgICAgIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQgcHJvcGVydGllc1szXSA9IHsgYm9y
ZGVyV2lkdGhMb25naGFuZCgpLCBib3JkZXJTdHlsZUxvbmdoYW5kKCksIGJvcmRlckNvbG9yTG9u
Z2hhbmQoKSB9OworICAgICAgICBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHByb3BlcnRp
ZXNbM10gPSB7IGJvcmRlcldpZHRoU2hvcnRoYW5kKCksIGJvcmRlclN0eWxlU2hvcnRoYW5kKCks
IGJvcmRlckNvbG9yU2hvcnRoYW5kKCkgfTsKICAgICAgICAgU3RyaW5nIHJlczsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpOyArK2kp
IHsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IGdldENvbW1vblZhbHVlKHByb3BlcnRpZXNb
aV0pOwpAQCAtMTI0LDQ3ICsxMjMsNDcgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldFBy
b3BlcnR5VmFsdWUoaW50IHByb3BlcnR5SUQpIGNvbnN0CiAgICAgICAgIHJldHVybiByZXM7CiAg
ICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3A6Ci0gICAgICAgIHJldHVybiBnZXRT
aG9ydGhhbmRWYWx1ZShib3JkZXJUb3BMb25naGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIGdldFNo
b3J0aGFuZFZhbHVlKGJvcmRlclRvcFNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHQ6Ci0gICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShib3JkZXJSaWdo
dExvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUoYm9yZGVyUmln
aHRTaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbToKLSAgICAg
ICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKGJvcmRlckJvdHRvbUxvbmdoYW5kKCkpOworICAg
ICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUoYm9yZGVyQm90dG9tU2hvcnRoYW5kKCkpOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0OgotICAgICAgICByZXR1cm4gZ2V0U2hvcnRo
YW5kVmFsdWUoYm9yZGVyTGVmdExvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4gZ2V0U2hvcnRo
YW5kVmFsdWUoYm9yZGVyTGVmdFNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5T3V0
bGluZToKLSAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKG91dGxpbmVMb25naGFuZCgp
KTsKKyAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKG91dGxpbmVTaG9ydGhhbmQoKSk7
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yOgotICAgICAgICByZXR1cm4gZ2V0NFZh
bHVlcyhib3JkZXJDb2xvckxvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4gZ2V0NFZhbHVlcyhi
b3JkZXJDb2xvclNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGg6
Ci0gICAgICAgIHJldHVybiBnZXQ0VmFsdWVzKGJvcmRlcldpZHRoTG9uZ2hhbmQoKSk7CisgICAg
ICAgIHJldHVybiBnZXQ0VmFsdWVzKGJvcmRlcldpZHRoU2hvcnRoYW5kKCkpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJTdHlsZToKLSAgICAgICAgcmV0dXJuIGdldDRWYWx1ZXMoYm9yZGVy
U3R5bGVMb25naGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIGdldDRWYWx1ZXMoYm9yZGVyU3R5bGVT
aG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhGbG93OgotICAgICAg
ICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUod2Via2l0RmxleEZsb3dMb25naGFuZCgpKTsKKyAg
ICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHdlYmtpdEZsZXhGbG93U2hvcnRoYW5kKCkp
OwogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OgogICAgICAgICByZXR1cm4gZm9udFZhbHVlKCk7
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbjoKLSAgICAgICAgcmV0dXJuIGdldDRWYWx1ZXMo
bWFyZ2luTG9uZ2hhbmQoKSk7CisgICAgICAgIHJldHVybiBnZXQ0VmFsdWVzKG1hcmdpblNob3J0
aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3c6Ci0gICAgICAgIHJldHVybiBn
ZXRDb21tb25WYWx1ZShvdmVyZmxvd0xvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4gZ2V0Q29t
bW9uVmFsdWUob3ZlcmZsb3dTaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRp
bmc6Ci0gICAgICAgIHJldHVybiBnZXQ0VmFsdWVzKHBhZGRpbmdMb25naGFuZCgpKTsKKyAgICAg
ICAgcmV0dXJuIGdldDRWYWx1ZXMocGFkZGluZ1Nob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1By
b3BlcnR5TGlzdFN0eWxlOgotICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUobGlzdFN0
eWxlTG9uZ2hhbmQoKSk7CisgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShsaXN0U3R5
bGVTaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbjoK
LSAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSh3ZWJraXRNYXNrUG9zaXRp
b25Mb25naGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSh3
ZWJraXRNYXNrUG9zaXRpb25TaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tSZXBlYXQ6Ci0gICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUod2Vi
a2l0TWFza1JlcGVhdExvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0
aGFuZFZhbHVlKHdlYmtpdE1hc2tSZXBlYXRTaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2s6Ci0gICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUo
d2Via2l0TWFza0xvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFu
ZFZhbHVlKHdlYmtpdE1hc2tTaG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybU9yaWdpbjoKLSAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHdlYmtp
dFRyYW5zZm9ybU9yaWdpbkxvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5k
VmFsdWUod2Via2l0VHJhbnNmb3JtT3JpZ2luU2hvcnRoYW5kKCkpOwogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uOgotICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFu
ZFZhbHVlKHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpKTsKKyAgICAgICAgcmV0dXJuIGdldExh
eWVyZWRTaG9ydGhhbmRWYWx1ZSh3ZWJraXRUcmFuc2l0aW9uU2hvcnRoYW5kKCkpOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb246Ci0gICAgICAgIHJldHVybiBnZXRMYXllcmVk
U2hvcnRoYW5kVmFsdWUod2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQoKSk7CisgICAgICAgIHJldHVy
biBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUod2Via2l0QW5pbWF0aW9uU2hvcnRoYW5kKCkpOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwOgotICAgICAgICByZXR1cm4gZ2V0U2hvcnRo
YW5kVmFsdWUod2Via2l0V3JhcExvbmdoYW5kKCkpOworICAgICAgICByZXR1cm4gZ2V0U2hvcnRo
YW5kVmFsdWUod2Via2l0V3JhcFNob3J0aGFuZCgpKTsKICNpZiBFTkFCTEUoU1ZHKQogICAgIGNh
c2UgQ1NTUHJvcGVydHlNYXJrZXI6IHsKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9
IGdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlNYXJrZXJTdGFydCk7CkBAIC0xNzYsMTAg
KzE3NSwxMCBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlWYWx1ZShpbnQg
cHJvcGVydHlJRCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBTdHls
ZVByb3BlcnR5U2V0Ojpib3JkZXJTcGFjaW5nVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFu
ZCYgbG9uZ2hhbmQpIGNvbnN0CitTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Ym9yZGVyU3BhY2lu
Z1ZhbHVlKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkgY29uc3QKIHsK
LSAgICBSZWZQdHI8Q1NTVmFsdWU+IGhvcml6b250YWxWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFs
dWUobG9uZ2hhbmQucHJvcGVydGllcygpWzBdKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHZlcnRp
Y2FsVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVsxXSk7
CisgICAgUmVmUHRyPENTU1ZhbHVlPiBob3Jpem9udGFsVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1Zh
bHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbMF0pOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmVy
dGljYWxWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVsx
XSk7CiAKICAgICBpZiAoIWhvcml6b250YWxWYWx1ZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwpAQCAtMjQ4LDEzICsyNDcsMTMgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmZvbnRWYWx1
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCi1TdHJpbmcgU3R5
bGVQcm9wZXJ0eVNldDo6Z2V0NFZhbHVlcyhjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25n
aGFuZCkgY29uc3QKK1N0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXQ0VmFsdWVzKGNvbnN0IFN0
eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkgY29uc3QKIHsKICAgICAvLyBBc3N1bWUg
dGhlIHByb3BlcnRpZXMgYXJlIGluIHRoZSB1c3VhbCBvcmRlciB0b3AsIHJpZ2h0LCBib3R0b20s
IGxlZnQuCi0gICAgUmVmUHRyPENTU1ZhbHVlPiB0b3BWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFs
dWUobG9uZ2hhbmQucHJvcGVydGllcygpWzBdKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHJpZ2h0
VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVsxXSk7Ci0g
ICAgUmVmUHRyPENTU1ZhbHVlPiBib3R0b21WYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9u
Z2hhbmQucHJvcGVydGllcygpWzJdKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGxlZnRWYWx1ZSA9
IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpWzNdKTsKKyAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShzaG9ydGhhbmQucHJv
cGVydGllcygpWzBdKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHJpZ2h0VmFsdWUgPSBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbMV0pOworICAgIFJlZlB0cjxDU1NW
YWx1ZT4gYm90dG9tVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0
aWVzKClbMl0pOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gbGVmdFZhbHVlID0gZ2V0UHJvcGVydHlD
U1NWYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpWzNdKTsKIAogICAgIC8vIEFsbCA0IHByb3Bl
cnRpZXMgbXVzdCBiZSBzcGVjaWZpZWQuCiAgICAgaWYgKCF0b3BWYWx1ZSB8fCAhcmlnaHRWYWx1
ZSB8fCAhYm90dG9tVmFsdWUgfHwgIWxlZnRWYWx1ZSkKQEAgLTI3NSwxNyArMjc0LDE3IEBAIFN0
cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXQ0VmFsdWVzKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hh
bmQmIGxvbmdoYW5kKSBjb25zdAogICAgIHJldHVybiByZXM7CiB9CiAKLVN0cmluZyBTdHlsZVBy
b3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgbG9uZ2hhbmQpIGNvbnN0CitTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJl
ZFNob3J0aGFuZFZhbHVlKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkg
Y29uc3QKIHsKICAgICBTdHJpbmcgcmVzOwogCi0gICAgY29uc3QgdW5zaWduZWQgc2l6ZSA9IGxv
bmdoYW5kLmxlbmd0aCgpOworICAgIGNvbnN0IHVuc2lnbmVkIHNpemUgPSBzaG9ydGhhbmQubGVu
Z3RoKCk7CiAgICAgLy8gQmVnaW4gYnkgY29sbGVjdGluZyB0aGUgcHJvcGVydGllcyBpbnRvIGFu
IGFycmF5LgogICAgIFZlY3RvcjwgUmVmUHRyPENTU1ZhbHVlPiA+IHZhbHVlcyhzaXplKTsKICAg
ICBzaXplX3QgbnVtTGF5ZXJzID0gMDsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKLSAgICAgICAgdmFsdWVzW2ldID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25n
aGFuZC5wcm9wZXJ0aWVzKClbaV0pOworICAgICAgICB2YWx1ZXNbaV0gPSBnZXRQcm9wZXJ0eUNT
U1ZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0pOwogICAgICAgICBpZiAodmFsdWVzW2ld
KSB7CiAgICAgICAgICAgICBpZiAodmFsdWVzW2ldLT5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAg
ICAgICAgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxp
c3QqPih2YWx1ZXNbaV0uZ2V0KCkpOwpAQCAtMzExLDcgKzMxMCw3IEBAIFN0cmluZyBTdHlsZVBy
b3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgbG9uCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVzW2pdOwogCiAgICAg
ICAgICAgICAgICAgICAgIC8vIENvbG9yIG9ubHkgYmVsb25ncyBpbiB0aGUgbGFzdCBsYXllci4K
LSAgICAgICAgICAgICAgICAgICAgaWYgKGxvbmdoYW5kLnByb3BlcnRpZXMoKVtqXSA9PSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcikgeworICAgICAgICAgICAgICAgICAgICBpZiAoc2hvcnRo
YW5kLnByb3BlcnRpZXMoKVtqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikgewogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT0gbnVtTGF5ZXJzIC0gMSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoaSAhPSAwKSAvLyBPdGhlciBzaW5nbGV0b25zIG9ubHkgYmVsb25nIGluIHRoZSBmaXJzdCBs
YXllci4KQEAgLTMyMiwxMCArMzIxLDEwIEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRM
YXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uCiAgICAg
ICAgICAgICAvLyBXZSBuZWVkIHRvIHJlcG9ydCBiYWNrZ3JvdW5kLXJlcGVhdCBhcyBpdCB3YXMg
d3JpdHRlbiBpbiB0aGUgQ1NTLiBJZiB0aGUgcHJvcGVydHkgaXMgaW1wbGljaXQsCiAgICAgICAg
ICAgICAvLyB0aGVuIGl0IHdhcyB3cml0dGVuIHdpdGggb25seSBvbmUgdmFsdWUuIEhlcmUgd2Ug
ZmlndXJlIG91dCB3aGljaCB2YWx1ZSB0aGF0IHdhcyBzbyB3ZSBjYW4KICAgICAgICAgICAgIC8v
IHJlcG9ydCBiYWNrIGNvcnJlY3RseS4KLSAgICAgICAgICAgIGlmIChsb25naGFuZC5wcm9wZXJ0
aWVzKClbal0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCAmJiBpc1Byb3BlcnR5SW1w
bGljaXQobG9uZ2hhbmQucHJvcGVydGllcygpW2pdKSkgeworICAgICAgICAgICAgaWYgKHNob3J0
aGFuZC5wcm9wZXJ0aWVzKClbal0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCAmJiBp
c1Byb3BlcnR5SW1wbGljaXQoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtqXSkpIHsKIAogICAgICAg
ICAgICAgICAgIC8vIEJVRyA0OTA1NTogbWFrZSBzdXJlIHRoZSB2YWx1ZSB3YXMgbm90IHJlc2V0
IGluIHRoZSBsYXllciBjaGVjayBqdXN0IGFib3ZlLgotICAgICAgICAgICAgICAgIGlmIChqIDwg
c2l6ZSAtIDEgJiYgbG9uZ2hhbmQucHJvcGVydGllcygpW2ogKyAxXSA9PSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRSZXBlYXRZICYmIHZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgKGogPCBzaXpl
IC0gMSAmJiBzaG9ydGhhbmQucHJvcGVydGllcygpW2ogKyAxXSA9PSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXRZICYmIHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NW
YWx1ZT4geVZhbHVlOwogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IG5leHRW
YWx1ZSA9IHZhbHVlc1tqICsgMV07CiAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0VmFsdWUt
PmlzVmFsdWVMaXN0KCkpCkBAIC0zNzYsMTIgKzM3NSwxMiBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0
eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IGxvbgogICAgIHJldHVybiByZXM7CiB9CiAKLVN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRT
aG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZCkgY29uc3QK
K1N0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRTaG9ydGhhbmRWYWx1ZShjb25zdCBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHJlczsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9uZ2hhbmQubGVuZ3RoKCk7ICsraSkgewotICAg
ICAgICBpZiAoIWlzUHJvcGVydHlJbXBsaWNpdChsb25naGFuZC5wcm9wZXJ0aWVzKClbaV0pKSB7
Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1
ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbaV0pOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAoIWlzUHJvcGVydHlJbXBs
aWNpdChzaG9ydGhhbmQucHJvcGVydGllcygpW2ldKSkgeworICAgICAgICAgICAgUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMo
KVtpXSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogcHJvdmlkZSBkZWZhdWx0IHZhbHVlIGlmICF2
YWx1ZSBvciB2YWx1ZSBpcyBpbml0aWFsIHZhbHVlCiAgICAgICAgICAgICBpZiAodmFsdWUgJiYg
IXZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXMuaXNO
dWxsKCkpCkBAIC0zOTQsMTEgKzM5MywxMSBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0
U2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQpCiB9CiAK
IC8vIG9ubHkgcmV0dXJucyBhIG5vbi1udWxsIHZhbHVlIGlmIGFsbCBwcm9wZXJ0aWVzIGhhdmUg
dGhlIHNhbWUsIG5vbi1udWxsIHZhbHVlCi1TdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0Q29t
bW9uVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQpIGNvbnN0CitTdHJp
bmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0Q29tbW9uVmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCYgc2hvcnRoYW5kKSBjb25zdAogewogICAgIFN0cmluZyByZXM7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgUmVm
UHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVy
dGllcygpW2ldKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0
aCgpOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5
Q1NTVmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSk7CiAgICAgICAgIC8vIEZJWE1FOiBD
U1NJbml0aWFsVmFsdWU6OmNzc1RleHQgc2hvdWxkIGdlbmVyYXRlIHRoZSByaWdodCB2YWx1ZS4K
ICAgICAgICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkKICAgICAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTQyMSwxMCArNDIwLDEwIEBAIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IFN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcnR5
SUQpIGNvbnN0CiAKIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlU2hvcnRoYW5kUHJvcGVy
dHkoaW50IHByb3BlcnR5SUQpCiB7Ci0gICAgQ1NTUHJvcGVydHlMb25naGFuZCBsb25naGFuZCA9
IGxvbmdoYW5kRm9yUHJvcGVydHkocHJvcGVydHlJRCk7Ci0gICAgaWYgKCFsb25naGFuZC5sZW5n
dGgoKSkKKyAgICBTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHNob3J0aGFuZCA9IHNob3J0aGFuZEZv
clByb3BlcnR5KHByb3BlcnR5SUQpOworICAgIGlmICghc2hvcnRoYW5kLmxlbmd0aCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHJlbW92ZVByb3BlcnRpZXNJblNldChsb25n
aGFuZC5wcm9wZXJ0aWVzKCksIGxvbmdoYW5kLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gcmVtb3Zl
UHJvcGVydGllc0luU2V0KHNob3J0aGFuZC5wcm9wZXJ0aWVzKCksIHNob3J0aGFuZC5sZW5ndGgo
KSk7CiB9CiAKIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlUHJvcGVydHkoaW50IHByb3Bl
cnR5SUQsIFN0cmluZyogcmV0dXJuVGV4dCkKQEAgLTQ1OSwxMiArNDU4LDEyIEBAIGJvb2wgU3R5
bGVQcm9wZXJ0eVNldDo6cHJvcGVydHlJc0ltcG9ydGFudChpbnQgcHJvcGVydHlJRCkgY29uc3QK
ICAgICBpZiAocHJvcGVydHkpCiAgICAgICAgIHJldHVybiBwcm9wZXJ0eS0+aXNJbXBvcnRhbnQo
KTsKIAotICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmRzID0gbG9uZ2hhbmRGb3JQcm9w
ZXJ0eShwcm9wZXJ0eUlEKTsKLSAgICBpZiAoIWxvbmdoYW5kcy5sZW5ndGgoKSkKKyAgICBTdHls
ZVByb3BlcnR5U2hvcnRoYW5kIHNob3J0aGFuZCA9IHNob3J0aGFuZEZvclByb3BlcnR5KHByb3Bl
cnR5SUQpOworICAgIGlmICghc2hvcnRoYW5kLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9uZ2hhbmRzLmxlbmd0aCgpOyAr
K2kpIHsKLSAgICAgICAgaWYgKCFwcm9wZXJ0eUlzSW1wb3J0YW50KGxvbmdoYW5kcy5wcm9wZXJ0
aWVzKClbaV0pKQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3Ro
KCk7ICsraSkgeworICAgICAgICBpZiAoIXByb3BlcnR5SXNJbXBvcnRhbnQoc2hvcnRoYW5kLnBy
b3BlcnRpZXMoKVtpXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJl
dHVybiB0cnVlOwpAQCAtNDk4LDE3ICs0OTcsMTcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0Ojpz
ZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXAK
IAogdm9pZCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gcHJwVmFsdWUsIGJvb2wgaW1wb3J0YW50KQogewotICAgIENTU1By
b3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmQgPSBsb25naGFuZEZvclByb3BlcnR5KHByb3BlcnR5SUQp
OwotICAgIGlmICghbG9uZ2hhbmQubGVuZ3RoKCkpIHsKKyAgICBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kIHNob3J0aGFuZCA9IHNob3J0aGFuZEZvclByb3BlcnR5KHByb3BlcnR5SUQpOworICAgIGlm
ICghc2hvcnRoYW5kLmxlbmd0aCgpKSB7CiAgICAgICAgIHNldFByb3BlcnR5KENTU1Byb3BlcnR5
KHByb3BlcnR5SUQsIHBycFZhbHVlLCBpbXBvcnRhbnQpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIHJlbW92ZVByb3BlcnRpZXNJblNldChsb25naGFuZC5wcm9wZXJ0aWVzKCksIGxv
bmdoYW5kLmxlbmd0aCgpKTsKKyAgICByZW1vdmVQcm9wZXJ0aWVzSW5TZXQoc2hvcnRoYW5kLnBy
b3BlcnRpZXMoKSwgc2hvcnRoYW5kLmxlbmd0aCgpKTsKIAogICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dmFsdWUgPSBwcnBWYWx1ZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9uZ2hhbmQu
bGVuZ3RoKCk7ICsraSkKLSAgICAgICAgbV9wcm9wZXJ0aWVzLmFwcGVuZChDU1NQcm9wZXJ0eShs
b25naGFuZC5wcm9wZXJ0aWVzKClbaV0sIHZhbHVlLCBpbXBvcnRhbnQpKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2kpCisgICAgICAgIG1fcHJv
cGVydGllcy5hcHBlbmQoQ1NTUHJvcGVydHkoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgdmFs
dWUsIGltcG9ydGFudCkpOwogfQogCiB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5
KGNvbnN0IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHkqIHNsb3QpCkBAIC02MDcs
MTIgKzYwNiwxMiBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6YXNUZXh0KCkgY29uc3QKICAg
ICAgICAgICAgIHNob3J0aGFuZFByb3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUJvcmRlcjsKICAgICAg
ICAgICAgIGlmIChzaG9ydGhhbmRQcm9wZXJ0eUFwcGVhcmVkLmdldChDU1NQcm9wZXJ0eUJvcmRl
ciAtIGZpcnN0Q1NTUHJvcGVydHkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvcmRlckFicmlkZ2VkTG9uZ2hhbmQoKS5sZW5n
dGgoKSAmJiBzaG9ydGhhbmRQcm9wZXJ0eUlEOyBpKyspIHsKLSAgICAgICAgICAgICAgICBjb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZCA9ICooYm9yZGVyQWJyaWRnZWRMb25naGFu
ZCgpLmxvbmdoYW5kc0ZvckluaXRpYWxpemF0aW9uKClbaV0pOworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGJvcmRlckFicmlkZ2VkU2hvcnRoYW5kKCkubGVuZ3RoKCkgJiYg
c2hvcnRoYW5kUHJvcGVydHlJRDsgaSsrKSB7CisgICAgICAgICAgICAgICAgY29uc3QgU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kID0gKihib3JkZXJBYnJpZGdlZFNob3J0aGFuZCgp
LnByb3BlcnRpZXNGb3JJbml0aWFsaXphdGlvbigpW2ldKTsKICAgICAgICAgICAgICAgICBTdHJp
bmcgY29tbW9uVmFsdWU7CiAgICAgICAgICAgICAgICAgYm9vbCBjb21tb25JbXBvcnRhbmNlID0g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBsb25naGFuZC5s
ZW5ndGgoKTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBpZCA9IGxvbmdoYW5kLnBy
b3BlcnRpZXMoKVtqXTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHNo
b3J0aGFuZC5sZW5ndGgoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBpZCA9IHNo
b3J0aGFuZC5wcm9wZXJ0aWVzKClbal07CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NW
YWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGlkKTsKICAgICAgICAgICAgICAgICAg
ICAgU3RyaW5nIGN1cnJlbnRWYWx1ZSA9IHZhbHVlID8gdmFsdWUtPmNzc1RleHQoKSA6IFN0cmlu
ZygpOwogICAgICAgICAgICAgICAgICAgICBib29sIGlzSW1wb3J0YW50ID0gcHJvcGVydHlJc0lt
cG9ydGFudChpZCk7CkBAIC03NDEsNyArNzQwLDcgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6
OmFzVGV4dCgpIGNvbnN0CiAgICAgaWYgKHBvc2l0aW9uWFByb3AgJiYgcG9zaXRpb25ZUHJvcCAm
JiBwb3NpdGlvblhQcm9wLT5pc0ltcG9ydGFudCgpID09IHBvc2l0aW9uWVByb3AtPmlzSW1wb3J0
YW50KCkpIHsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiYmFja2dyb3VuZC1wb3NpdGlvbjogIik7
CiAgICAgICAgIGlmIChwb3NpdGlvblhQcm9wLT52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpIHx8IHBv
c2l0aW9uWVByb3AtPnZhbHVlKCktPmlzVmFsdWVMaXN0KCkpCi0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFu
ZCgpKSk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGdldExheWVyZWRTaG9ydGhhbmRWYWx1
ZShiYWNrZ3JvdW5kUG9zaXRpb25TaG9ydGhhbmQoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQocG9zaXRpb25YUHJvcC0+dmFsdWUoKS0+Y3NzVGV4dCgpKTsK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiAiKTsKQEAgLTc2MSw3ICs3NjAsNyBAQCBTdHJp
bmcgU3R5bGVQcm9wZXJ0eVNldDo6YXNUZXh0KCkgY29uc3QKICAgICBpZiAocmVwZWF0WFByb3Ag
JiYgcmVwZWF0WVByb3AgJiYgcmVwZWF0WFByb3AtPmlzSW1wb3J0YW50KCkgPT0gcmVwZWF0WVBy
b3AtPmlzSW1wb3J0YW50KCkpIHsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiYmFja2dyb3VuZC1y
ZXBlYXQ6ICIpOwogICAgICAgICBpZiAocmVwZWF0WFByb3AtPnZhbHVlKCktPmlzVmFsdWVMaXN0
KCkgfHwgcmVwZWF0WVByb3AtPnZhbHVlKCktPmlzVmFsdWVMaXN0KCkpCi0gICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShiYWNrZ3JvdW5kUmVwZWF0TG9u
Z2hhbmQoKSkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRMYXllcmVkU2hvcnRoYW5k
VmFsdWUoYmFja2dyb3VuZFJlcGVhdFNob3J0aGFuZCgpKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChyZXBlYXRYUHJvcC0+dmFsdWUoKS0+Y3NzVGV4dCgpKTsK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiAiKTsKQEAgLTgwNCw3ICs4MDMsNyBAQCB2b2lk
IFN0eWxlUHJvcGVydHlTZXQ6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtV
Ukw+JiB1cmxzLCBDU1NTdHlsZQogCiAvLyBUaGlzIGlzIHRoZSBsaXN0IG9mIHByb3BlcnRpZXMg
d2Ugd2FudCB0byBjb3B5IGluIHRoZSBjb3B5QmxvY2tQcm9wZXJ0aWVzKCkgZnVuY3Rpb24uCiAv
LyBJdCBpcyB0aGUgbGlzdCBvZiBDU1MgcHJvcGVydGllcyB0aGF0IGFwcGx5IHNwZWNpYWxseSB0
byBibG9jay1sZXZlbCBlbGVtZW50cy4KLXN0YXRpYyBjb25zdCBpbnQgYmxvY2tQcm9wZXJ0aWVz
W10gPSB7CitzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBibG9ja1Byb3BlcnRpZXNbXSA9IHsK
ICAgICBDU1NQcm9wZXJ0eU9ycGhhbnMsCiAgICAgQ1NTUHJvcGVydHlPdmVyZmxvdywgLy8gVGhp
cyBjYW4gYmUgYWxzbyBiZSBhcHBsaWVkIHRvIHJlcGxhY2VkIGVsZW1lbnRzCiAgICAgQ1NTUHJv
cGVydHlXZWJraXRBc3BlY3RSYXRpbywKQEAgLTg0MCw3ICs4MzksNyBAQCB2b2lkIFN0eWxlUHJv
cGVydHlTZXQ6OnJlbW92ZUJsb2NrUHJvcGVydGllcygpCiAgICAgcmVtb3ZlUHJvcGVydGllc0lu
U2V0KGJsb2NrUHJvcGVydGllcywgbnVtQmxvY2tQcm9wZXJ0aWVzKTsKIH0KIAotYm9vbCBTdHls
ZVByb3BlcnR5U2V0OjpyZW1vdmVQcm9wZXJ0aWVzSW5TZXQoY29uc3QgaW50KiBzZXQsIHVuc2ln
bmVkIGxlbmd0aCkKK2Jvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlUHJvcGVydGllc0luU2V0
KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmICht
X3Byb3BlcnRpZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MjYsNyAr
OTI1LDcgQEAgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBTdHlsZVByb3BlcnR5U2V0Ojpj
b3B5KCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUHJvcGVydHlTZXQobV9w
cm9wZXJ0aWVzKSk7CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gU3R5bGVQcm9w
ZXJ0eVNldDo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBpbnQqIHNldCwgdW5zaWduZWQgbGVu
Z3RoKSBjb25zdAorUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBTdHlsZVByb3BlcnR5U2V0
Ojpjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQg
bGVuZ3RoKSBjb25zdAogewogICAgIFZlY3RvcjxDU1NQcm9wZXJ0eT4gbGlzdDsKICAgICBsaXN0
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0eVNldC5oCmluZGV4IDRiZmY1OWEzYjVhZWEzNTdhYjViNzJiYTAyZWNjM2FkZjMxNjg4NGEu
LmZiMTBlZTUwZWNlZTUyMWRkOTZmMzM2MjcyNTk1ZmYyYTk0ODRjYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydHlTZXQuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNTU1Bh
cnNlck1vZGUuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNT
U1Byb3BlcnR5LmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgPHd0
Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTMxLDExICszMiwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDU1NSdWxlOwotY2xhc3MgQ1NTUHJvcGVydHlMb25naGFuZDsKIGNsYXNzIENT
U1N0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBLVVJMOwogY2xhc3MgUHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uOwogY2xhc3MgU3R5bGVkRWxlbWVudDsKK2NsYXNzIFN0eWxlUHJvcGVydHlT
aG9ydGhhbmQ7CiAKIGNsYXNzIFN0eWxlUHJvcGVydHlTZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxT
dHlsZVByb3BlcnR5U2V0PiB7CiBwdWJsaWM6CkBAIC04Myw3ICs4NCw3IEBAIHB1YmxpYzoKIAog
ICAgIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gY29weUJsb2NrUHJvcGVydGllcygpIGNv
bnN0OwogICAgIHZvaWQgcmVtb3ZlQmxvY2tQcm9wZXJ0aWVzKCk7Ci0gICAgYm9vbCByZW1vdmVQ
cm9wZXJ0aWVzSW5TZXQoY29uc3QgaW50KiBzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgYm9v
bCByZW1vdmVQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpOwogCiAgICAgdm9pZCBtZXJnZShjb25zdCBTdHlsZVByb3BlcnR5U2V0KiwgYm9v
bCBhcmdPdmVycmlkZXNPbkNvbmZsaWN0ID0gdHJ1ZSk7CiAKQEAgLTk5LDcgKzEwMCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJv
cGVydHlTZXQqKTsKICAgICB2b2lkIHJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKGNvbnN0IENT
U1N0eWxlRGVjbGFyYXRpb24qKTsKIAotICAgIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4g
Y29weVByb3BlcnRpZXNJblNldChjb25zdCBpbnQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25z
dDsKKyAgICBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNvcHlQcm9wZXJ0aWVzSW5TZXQo
Y29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OwogICAgIAog
ICAgIFN0cmluZyBhc1RleHQoKSBjb25zdDsKICAgICAKQEAgLTExOSwxMSArMTIwLDExIEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIAotICAgIFN0cmluZyBn
ZXRTaG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7Ci0gICAg
U3RyaW5nIGdldENvbW1vblZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmKSBjb25zdDsK
LSAgICBTdHJpbmcgZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9u
Z2hhbmQmKSBjb25zdDsKLSAgICBTdHJpbmcgZ2V0NFZhbHVlcyhjb25zdCBDU1NQcm9wZXJ0eUxv
bmdoYW5kJikgY29uc3Q7Ci0gICAgU3RyaW5nIGJvcmRlclNwYWNpbmdWYWx1ZShjb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7CisgICAgU3RyaW5nIGdldFNob3J0aGFuZFZhbHVlKGNv
bnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKSBjb25zdDsKKyAgICBTdHJpbmcgZ2V0Q29tbW9u
VmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpIGNvbnN0OworICAgIFN0cmluZyBn
ZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpIGNv
bnN0OworICAgIFN0cmluZyBnZXQ0VmFsdWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQm
KSBjb25zdDsKKyAgICBTdHJpbmcgYm9yZGVyU3BhY2luZ1ZhbHVlKGNvbnN0IFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQmKSBjb25zdDsKICAgICBTdHJpbmcgZm9udFZhbHVlKCkgY29uc3Q7CiAgICAg
Ym9vbCBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGljaXQoaW50IHByb3BlcnR5SUQsIFN0
cmluZ0J1aWxkZXImIHJlc3VsdCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGlu
Z1N0eWxlLmNwcAppbmRleCBlNjczNzdkMGYyNmM5OTdiN2NhYzhiYjJhM2ZlZmIwYWVlMTcxNWFj
Li4xZjEwZDAyMjY4NzVlYjlkMzhjOWEzYWU0MWNiNzJhNjE1ODgzYWYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogLy8gRWRpdGluZyBzdHlsZSBwcm9wZXJ0aWVzIG11c3QgYmUgcHJlc2VydmVk
IGR1cmluZyBlZGl0aW5nIG9wZXJhdGlvbi4KIC8vIGUuZy4gd2hlbiBhIHVzZXIgaW5zZXJ0cyBh
IG5ldyBwYXJhZ3JhcGgsIGFsbCBwcm9wZXJ0aWVzIGxpc3RlZCBoZXJlIG11c3QgYmUgY29waWVk
IHRvIHRoZSBuZXcgcGFyYWdyYXBoLgotc3RhdGljIGNvbnN0IGludCBlZGl0aW5nUHJvcGVydGll
c1tdID0geworc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgZWRpdGluZ1Byb3BlcnRpZXNbXSA9
IHsKICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwKICAgICBDU1NQcm9wZXJ0eVRleHRE
ZWNvcmF0aW9uLAogCkBAIC02MDMsNyArNjAzLDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OmNvbGxh
cHNlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzKCkKIH0KIAogLy8gQ1NTIHByb3BlcnRpZXMgdGhh
dCBjcmVhdGUgYSB2aXN1YWwgZGlmZmVyZW5jZSBvbmx5IHdoZW4gYXBwbGllZCB0byB0ZXh0Lgot
c3RhdGljIGNvbnN0IGludCB0ZXh0T25seVByb3BlcnRpZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBD
U1NQcm9wZXJ0eUlEIHRleHRPbmx5UHJvcGVydGllc1tdID0gewogICAgIENTU1Byb3BlcnR5VGV4
dERlY29yYXRpb24sCiAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCwKICAgICBDU1NQcm9wZXJ0eUZvbnRTdHlsZSwKQEAgLTEwODQsOSArMTA4NCw5IEBAIHZvaWQg
RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihTdHlsZWRF
bGVtZW50KiBlbGVtZW50KQogc3RhdGljIHZvaWQgcmVtb3ZlUHJvcGVydGllc0luU3R5bGUoU3R5
bGVQcm9wZXJ0eVNldCogc3R5bGVUb1JlbW92ZVByb3BlcnRpZXNGcm9tLCBTdHlsZVByb3BlcnR5
U2V0KiBzdHlsZSkKIHsKICAgICB1bnNpZ25lZCBwcm9wZXJ0eUNvdW50ID0gc3R5bGUtPnByb3Bl
cnR5Q291bnQoKTsKLSAgICBWZWN0b3I8aW50PiBwcm9wZXJ0aWVzVG9SZW1vdmUocHJvcGVydHlD
b3VudCk7CisgICAgVmVjdG9yPENTU1Byb3BlcnR5SUQ+IHByb3BlcnRpZXNUb1JlbW92ZShwcm9w
ZXJ0eUNvdW50KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlDb3VudDsg
KytpKQotICAgICAgICBwcm9wZXJ0aWVzVG9SZW1vdmVbaV0gPSBzdHlsZS0+cHJvcGVydHlBdChp
KS5pZCgpOworICAgICAgICBwcm9wZXJ0aWVzVG9SZW1vdmVbaV0gPSBzdGF0aWNfY2FzdDxDU1NQ
cm9wZXJ0eUlEPihzdHlsZS0+cHJvcGVydHlBdChpKS5pZCgpKTsKIAogICAgIHN0eWxlVG9SZW1v
dmVQcm9wZXJ0aWVzRnJvbS0+cmVtb3ZlUHJvcGVydGllc0luU2V0KHByb3BlcnRpZXNUb1JlbW92
ZS5kYXRhKCksIHByb3BlcnRpZXNUb1JlbW92ZS5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRleCBjNTljNTVkYmExZWE0
YmMyMzk1M2Q0YzZmOGUzYTJkMzRmNDA3ZGU2Li5hYmRiZWU3YmQ0NTU5ZTk1NWUzMjEyMDE5NWEw
OTE0MThiZDE2ODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25CYXNlLmNwcApAQCAtODY2LDExICs4NjYsMTEgQEAgcHJpdmF0ZToKIAogY2xhc3MgU2hv
cnRoYW5kUHJvcGVydHlXcmFwcGVyIDogcHVibGljIFByb3BlcnR5V3JhcHBlckJhc2UgewogcHVi
bGljOgotICAgIFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcihpbnQgcHJvcGVydHksIGNvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKQorICAgIFNob3J0aGFuZFByb3BlcnR5V3JhcHBl
cihpbnQgcHJvcGVydHksIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkK
ICAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3BlcnR5KQogICAgIHsKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kpIHsKLSAgICAg
ICAgICAgIFByb3BlcnR5V3JhcHBlckJhc2UqIHdyYXBwZXIgPSB3cmFwcGVyRm9yUHJvcGVydHko
bG9uZ2hhbmQucHJvcGVydGllcygpW2ldKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBQcm9wZXJ0eVdyYXBw
ZXJCYXNlKiB3cmFwcGVyID0gd3JhcHBlckZvclByb3BlcnR5KHNob3J0aGFuZC5wcm9wZXJ0aWVz
KClbaV0pOwogICAgICAgICAgICAgaWYgKHdyYXBwZXIpCiAgICAgICAgICAgICAgICAgbV9wcm9w
ZXJ0eVdyYXBwZXJzLmFwcGVuZCh3cmFwcGVyKTsKICAgICAgICAgfQpAQCAtMTE2OSw5ICsxMTY5
LDkgQEAgc3RhdGljIHZvaWQgYWRkU2hvcnRoYW5kUHJvcGVydGllcygpCiAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoYW5pbWF0YWJsZVNob3J0aGFuZFByb3Bl
cnRpZXMpOyArK2kpIHsKICAgICAgICAgaW50IHByb3BlcnR5SUQgPSBhbmltYXRhYmxlU2hvcnRo
YW5kUHJvcGVydGllc1tpXTsKLSAgICAgICAgQ1NTUHJvcGVydHlMb25naGFuZCBsb25naGFuZCA9
IGxvbmdoYW5kRm9yUHJvcGVydHkocHJvcGVydHlJRCk7Ci0gICAgICAgIGlmIChsb25naGFuZC5s
ZW5ndGgoKSA+IDApCi0gICAgICAgICAgICBhZGRQcm9wZXJ0eVdyYXBwZXIocHJvcGVydHlJRCwg
bmV3IFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcihwcm9wZXJ0eUlELCBsb25naGFuZCkpOworICAg
ICAgICBTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHNob3J0aGFuZCA9IHNob3J0aGFuZEZvclByb3Bl
cnR5KHByb3BlcnR5SUQpOworICAgICAgICBpZiAoc2hvcnRoYW5kLmxlbmd0aCgpID4gMCkKKyAg
ICAgICAgICAgIGFkZFByb3BlcnR5V3JhcHBlcihwcm9wZXJ0eUlELCBuZXcgU2hvcnRoYW5kUHJv
cGVydHlXcmFwcGVyKHByb3BlcnR5SUQsIHNob3J0aGFuZCkpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAK
aW5kZXggNzBkNjE5YjdlNDdhOTViZWUxMGQxZTU3MjQ4ODc5ZjNiMjkxYzEzOS4uMTJmOTM3OTQ4
ZDc0ZjkyZjYzMWE1NGE5ZmM5ZmIyMWVlYTgxYmU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCkBAIC0zMCw3ICszMCw2
IEBACiAjaW5jbHVkZSAiQ29tcG9zaXRlQW5pbWF0aW9uLmgiCiAKICNpbmNsdWRlICJBbmltYXRp
b25Db250cm9sbGVyUHJpdmF0ZS5oIgotI2luY2x1ZGUgIkNTU1Byb3BlcnR5TG9uZ2hhbmQuaCIK
ICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiSW1wbGljaXRBbmltYXRp
b24uaCIKICNpbmNsdWRlICJLZXlmcmFtZUFuaW1hdGlvbi5oIgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>