<?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>121029</bug_id>
          
          <creation_ts>2013-09-09 08:38:38 -0700</creation_ts>
          <short_desc>matchingShorthandsForLonghand builds map using a giant function</short_desc>
          <delta_ts>2013-09-09 09:26:58 -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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kling</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>926714</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-09 08:38:38 -0700</bug_when>
    <thetext>matchingShorthandsForLonghand builds map using a giant function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926715</commentid>
    <comment_count>1</comment_count>
      <attachid>211045</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-09 08:48:00 -0700</bug_when>
    <thetext>Created attachment 211045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926718</commentid>
    <comment_count>2</comment_count>
      <attachid>211045</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-09 08:56:36 -0700</bug_when>
    <thetext>Comment on attachment 211045
Patch

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

&gt; Source/WebCore/css/StylePropertyShorthand.cpp:598
&gt; +static Vector&lt;StylePropertyShorthand&gt; makeVector(const StylePropertyShorthand&amp; a)
&gt; +{
&gt; +    return Vector&lt;StylePropertyShorthand&gt;(1, a);
&gt; +}

I wish we could use std::initializer_list so we wouldn&apos;t need any of these helpers!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926734</commentid>
    <comment_count>3</comment_count>
      <attachid>211045</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-09 09:26:56 -0700</bug_when>
    <thetext>Comment on attachment 211045
Patch

Clearing flags on attachment: 211045

Committed r155352: &lt;http://trac.webkit.org/changeset/155352&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926735</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-09 09:26:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211045</attachid>
            <date>2013-09-09 08:48:00 -0700</date>
            <delta_ts>2013-09-09 09:26:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121029-20130909084759.patch</filename>
            <type>text/plain</type>
            <size>75763</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1MzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM1Yjc1YTYxZmYzMDAy
OGVjMzIwZWZlZDhkZGNmZTQ3YjgzYWE4MC4uYWMzZjU0MmRkOTM5ODNlOTE3ZGI5MDhjNDkyOWU0
MDIxNGMzNmE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEzLTA5LTA5ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBtYXRjaGluZ1Nob3J0aGFuZHNG
b3JMb25naGFuZCBidWlsZHMgbWFwIHVzaW5nIGEgZ2lhbnQgZnVuY3Rpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTAyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIGlzIG5vIG5lZWQgdG8g
dXNlIGEgbWFwIGZvciB0aGlzOyBhIHN3aXRjaCBzdGF0ZW1lbnQgaXMgZmluZS4KKyAgICAgICAg
QWxzbywgdGhlc2Ugc3RydWN0dXJlcyBhcmUgc2ltcGxlIGVub3VnaCB0aGF0IHdlIGNhbiBidWls
ZCB0aGVtCisgICAgICAgIGV2ZXJ5IHRpbWU7IHdlIGRvbid0IG5lZWQgdG8ga2VlcCB0aGVtIGlu
IGdsb2JhbHMuCisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6YWRkUHJvcGVydHkpOiBHb3QgcmlkIG9mIG5vbi1oZWxwZnVsIGxvY2Fs
IGluCisgICAgICAgIENTU19WQVJJQUJMRVMgY29kZS4gVXBkYXRlZCBmb3IgY2hhbmdlIGluIHJl
dHVybiB2YWx1ZSBvZiB0aGUKKyAgICAgICAgbWF0Y2hpbmdTaG9ydGhhbmRzRm9yTG9uZ2hhbmQu
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU2hvcnRoYW5kKTogVXBkYXRlZCBm
b3IgY2hhbmdlIGluIHJldHVybgorICAgICAgICB0eXBlIG9mIHByb3BlcnRpZXNGb3JJbml0aWFs
aXphdGlvbi4KKworICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVByb3BlcnR5TWV0YWRhdGE6OnNob3J0aGFuZElEKTogVXBkYXRlZCBmb3IgY2hh
bmdlIGluCisgICAgICAgIHJldHVybiB2YWx1ZSBvZiBtYXRjaGluZ1Nob3J0aGFuZHNGb3JMb25n
aGFuZC4KKworICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2hvcnRoYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJhY2tncm91bmRTaG9ydGhhbmQpOiBHb3QgcmlkIG9mIGxvY2FsIHZhcmlh
YmxlLCBjb25zdHJ1Y3RpbmcKKyAgICAgICAgdGhlIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQgZXZl
cnkgdGltZS4KKyAgICAgICAgKFdlYkNvcmU6OmJhY2tncm91bmRQb3NpdGlvblNob3J0aGFuZCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6YmFja2dyb3VuZFJlcGVhdFNob3J0aGFuZCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyU2hvcnRoYW5kKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpib3JkZXJBYnJpZGdlZFNob3J0aGFuZCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Ym9yZGVyQm90dG9tU2hvcnRoYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpi
b3JkZXJDb2xvclNob3J0aGFuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVySW1h
Z2VTaG9ydGhhbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlckxlZnRTaG9ydGhh
bmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclJhZGl1c1Nob3J0aGFuZCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpib3JkZXJSaWdodFNob3J0aGFuZCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6Ym9yZGVyU3BhY2luZ1Nob3J0aGFuZCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6Ym9yZGVyU3R5bGVTaG9ydGhhbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmJvcmRlclRvcFNob3J0aGFuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyV2lk
dGhTaG9ydGhhbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Omxpc3RTdHlsZVNob3J0aGFu
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Zm9udFNob3J0aGFuZCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6bWFyZ2luU2hvcnRoYW5kKTogRGl0dG8uIERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6bWFya2VyU2hvcnRoYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpvdXRs
aW5lU2hvcnRoYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpvdmVyZmxvd1Nob3J0aGFu
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cGFkZGluZ1Nob3J0aGFuZCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6dHJhbnNpdGlvblNob3J0aGFuZCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6d2Via2l0QW5pbWF0aW9uU2hvcnRoYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjp3ZWJraXRBbmltYXRpb25TaG9ydGhhbmRGb3JQYXJzaW5nKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjp3ZWJraXRCb3JkZXJBZnRlclNob3J0aGFuZCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6d2Via2l0Qm9yZGVyQmVmb3JlU2hvcnRoYW5kKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjp3ZWJraXRCb3JkZXJFbmRTaG9ydGhhbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OndlYmtpdEJvcmRlclN0YXJ0U2hvcnRoYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
Ojp3ZWJraXRDb2x1bW5zU2hvcnRoYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp3ZWJr
aXRDb2x1bW5SdWxlU2hvcnRoYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRG
bGV4Rmxvd1Nob3J0aGFuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0RmxleFNo
b3J0aGFuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0TWFyZ2luQ29sbGFwc2VT
aG9ydGhhbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEdyaWRDb2x1bW5TaG9y
dGhhbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEdyaWRSb3dTaG9ydGhhbmQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdE1hcnF1ZWVTaG9ydGhhbmQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdE1hc2tTaG9ydGhhbmQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OndlYmtpdE1hc2tQb3NpdGlvblNob3J0aGFuZCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6d2Via2l0TWFza1JlcGVhdFNob3J0aGFuZCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6d2Via2l0VGV4dERlY29yYXRpb25TaG9ydGhhbmQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OndlYmtpdFRleHRFbXBoYXNpc1Nob3J0aGFuZCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6d2Via2l0VGV4dFN0cm9rZVNob3J0aGFuZCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6d2Via2l0VHJhbnNpdGlvblNob3J0aGFuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6d2Via2l0VHJhbnNmb3JtT3JpZ2luU2hvcnRoYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjp3aWR0aFNob3J0aGFuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aGVpZ2h0U2hv
cnRoYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpzaG9ydGhhbmRGb3JQcm9wZXJ0eSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6bWFrZVZlY3Rvcik6IEFkZGVkLiBIZWxwZXIgZnVu
Y3Rpb24gZm9yIHRoZSBjYXNlcyBpbiB0aGUKKyAgICAgICAgc3dpdGNoIGluc2lkZSBtYXRjaGlu
Z1Nob3J0aGFuZHNGb3JMb25naGFuZC4KKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoaW5nU2hvcnRo
YW5kc0ZvckxvbmdoYW5kKTogUmV3cm90ZSB0aGlzIHRvIHVzZSBhIHN3aXRjaAorICAgICAgICBp
bnN0ZWFkIG9mIGEgbWFwLgorICAgICAgICAoV2ViQ29yZTo6aW5kZXhPZlNob3J0aGFuZEZvckxv
bmdoYW5kKTogVGlnaHRlbmVkIHVwIHRoZSBjb2Rpbmcgc3R5bGUgYSBiaXQuCisKKyAgICAgICAg
KiBjc3MvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5oOiBDaGFuZ2VkIHR5cGUgb2YgU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCdzCisgICAgICAgIHByb3BlcnRpZXNGb3JJbml0aWFsaXphdGlvbiB0byBi
ZSBhbiBhcnJheSBvZiBzaG9ydGhhbmRzIHJhdGhlciB0aGFuIGFuCisgICAgICAgIGFycmF5IG9m
IHBvaW50ZXJzIHRvIHNob3J0aGFuZHMuIENoYW5nZWQgcmV0dXJuIHR5cGVzIG9mIHRoZSBzaG9y
dGhhbmQKKyAgICAgICAgZnVuY3Rpb25zIHRvIHJldHVybiBhIHNob3J0aGFuZCBvYmplY3QgcmF0
aGVyIHRoYW4gYSByZWZlcmVuY2UuIERpZCB0aGUgc2FtZQorICAgICAgICBmb3IgdGhlIG90aGVy
IGZ1bmN0aW9ucy4KKwogMjAxMy0wOS0wOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTWFrZSBFZGl0b3I6OmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIgYSByZWZlcmVu
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggODgyYjMxNmQ4YjM0YTgxM2ViOGJlMzQ2
YjQ1MDJhYzJlMjA5OGViYy4uNmQyNDY1OTI1M2IxZmQ0ZmU5Y2QwMTg5YjMwYTM2NzYxZTk4YmEy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTE1NzgsMjEgKzE1NzgsMTcgQEAgdm9p
ZCBDU1NQYXJzZXI6OmFkZFByb3BlcnR5V2l0aFByZWZpeGluZ1ZhcmlhbnQoQ1NTUHJvcGVydHlJ
RCBwcm9wSWQsIFBhc3NSZWZQdHIKIAogdm9pZCBDU1NQYXJzZXI6OmFkZFByb3BlcnR5KENTU1By
b3BlcnR5SUQgcHJvcElkLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRh
bnQsIGJvb2wgaW1wbGljaXQpCiB7Ci0jaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCi0gICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSA/IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUuZ2V0KCkpIDogMDsKLSNl
bmRpZgogICAgIC8vIFRoaXMgcHJvcGVydHkgZG9lc24ndCBiZWxvbmcgdG8gYSBzaG9ydGhhbmQg
b3IgaXMgYSBDU1MgdmFyaWFibGUgKHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgbGF0ZXIpLgogICAg
IGlmICghbV9jdXJyZW50U2hvcnRoYW5kCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCi0gICAg
ICAgIHx8IChwcmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+aXNWYXJpYWJsZU5hbWUo
KSkKKyAgICAgICAgfHwgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZS5nZXQoKSktPmlzVmFyaWFibGVOYW1lKCkpCiAjZW5k
aWYKICAgICAgICAgKSB7CiAgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5hcHBlbmQoQ1NTUHJv
cGVydHkocHJvcElkLCB2YWx1ZSwgaW1wb3J0YW50LCBmYWxzZSwgQ1NTUHJvcGVydHlJbnZhbGlk
LCBtX2ltcGxpY2l0U2hvcnRoYW5kIHx8IGltcGxpY2l0KSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBjb25zdCBWZWN0b3I8Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCo+IHNo
b3J0aGFuZHMgPSBtYXRjaGluZ1Nob3J0aGFuZHNGb3JMb25naGFuZChwcm9wSWQpOwotICAgIC8v
IFRoZSBsb25naGFuZCBkb2VzIG5vdCBiZWxvbmcgdG8gbXVsdGlwbGUgc2hvcnRoYW5kcy4KKyAg
ICBWZWN0b3I8U3R5bGVQcm9wZXJ0eVNob3J0aGFuZD4gc2hvcnRoYW5kcyA9IG1hdGNoaW5nU2hv
cnRoYW5kc0ZvckxvbmdoYW5kKHByb3BJZCk7CiAgICAgaWYgKHNob3J0aGFuZHMuc2l6ZSgpID09
IDEpCiAgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5hcHBlbmQoQ1NTUHJvcGVydHkocHJvcElk
LCB2YWx1ZSwgaW1wb3J0YW50LCB0cnVlLCBDU1NQcm9wZXJ0eUludmFsaWQsIG1faW1wbGljaXRT
aG9ydGhhbmQgfHwgaW1wbGljaXQpKTsKICAgICBlbHNlCkBAIC0zNTUzLDEzICszNTQ5LDEzIEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHByb3BJZCwgY29u
c3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuCiAKICAgICAvLyBGaWxsIGluIGFueSByZW1haW5pbmcg
cHJvcGVydGllcyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgogICAgIEltcGxpY2l0U2NvcGUgaW1w
bGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKLSAgICBjb25zdCBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kKiBjb25zdCogY29uc3QgcHJvcGVydGllc0ZvckluaXRpYWxpemF0aW9uID0g
c2hvcnRoYW5kLnByb3BlcnRpZXNGb3JJbml0aWFsaXphdGlvbigpOworICAgIGNvbnN0IFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQqIHByb3BlcnRpZXNGb3JJbml0aWFsaXphdGlvbiA9IHNob3J0aGFu
ZC5wcm9wZXJ0aWVzRm9ySW5pdGlhbGl6YXRpb24oKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgaWYgKHByb3BlcnR5Rm91
bmRbaV0pCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAocHJvcGVydGllc0Zv
ckluaXRpYWxpemF0aW9uKSB7Ci0gICAgICAgICAgICBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kJiBpbml0UHJvcGVydGllcyA9ICoocHJvcGVydGllc0ZvckluaXRpYWxpemF0aW9uW2ldKTsK
KyAgICAgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGluaXRQcm9wZXJ0aWVz
ID0gcHJvcGVydGllc0ZvckluaXRpYWxpemF0aW9uW2ldOwogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBwcm9wSW5kZXggPSAwOyBwcm9wSW5kZXggPCBpbml0UHJvcGVydGllcy5sZW5ndGgoKTsg
Kytwcm9wSW5kZXgpCiAgICAgICAgICAgICAgICAgYWRkUHJvcGVydHkoaW5pdFByb3BlcnRpZXMu
cHJvcGVydGllcygpW3Byb3BJbmRleF0sIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUltcGxpY2l0SW5p
dGlhbFZhbHVlKCksIGltcG9ydGFudCk7CiAgICAgICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eS5jcHAKaW5kZXggYTZlMGE1ODdmYmI5OTk3MGZkNmRhZWIxODUyNTg5MjMyNjdmODlm
My4uMjAzM2IxOTM1NzkxYjllZjcwYTljNWJkYWExODliMDIyNjJiZDRjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHkuY3BwCkBAIC00NSw5ICs0NSw5IEBAIENTU1Byb3BlcnR5SUQgU3R5bGVQ
cm9wZXJ0eU1ldGFkYXRhOjpzaG9ydGhhbmRJRCgpIGNvbnN0CiAgICAgaWYgKCFtX2lzU2V0RnJv
bVNob3J0aGFuZCkKICAgICAgICAgcmV0dXJuIENTU1Byb3BlcnR5SW52YWxpZDsKIAotICAgIGNv
bnN0IFZlY3Rvcjxjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKj4gc2hvcnRoYW5kcyA9IG1h
dGNoaW5nU2hvcnRoYW5kc0ZvckxvbmdoYW5kKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KG1f
cHJvcGVydHlJRCkpOworICAgIFZlY3RvcjxTdHlsZVByb3BlcnR5U2hvcnRoYW5kPiBzaG9ydGhh
bmRzID0gbWF0Y2hpbmdTaG9ydGhhbmRzRm9yTG9uZ2hhbmQoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVy
dHlJRD4obV9wcm9wZXJ0eUlEKSk7CiAgICAgQVNTRVJUKHNob3J0aGFuZHMuc2l6ZSgpICYmIG1f
aW5kZXhJblNob3J0aGFuZHNWZWN0b3IgPj0gMCAmJiBtX2luZGV4SW5TaG9ydGhhbmRzVmVjdG9y
IDwgc2hvcnRoYW5kcy5zaXplKCkpOwotICAgIHJldHVybiBzaG9ydGhhbmRzLmF0KG1faW5kZXhJ
blNob3J0aGFuZHNWZWN0b3IpLT5pZCgpOworICAgIHJldHVybiBzaG9ydGhhbmRzW21faW5kZXhJ
blNob3J0aGFuZHNWZWN0b3JdLmlkKCk7CiB9CiAKIHZvaWQgQ1NTUHJvcGVydHk6OndyYXBWYWx1
ZUluQ29tbWFTZXBhcmF0ZWRMaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVByb3BlcnR5U2hvcnRoYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnR5U2hvcnRoYW5kLmNwcAppbmRleCBjZmVmZTE3NTZiODFkMzAyMWMyMDQ1NmRhOGUxMjI5ZDc1
YzVmZmViLi5lZjViNWQ5YmIxYjFiYTBiZDQ5MTE2NDhhYmM2MjkyOTA5OTc4MTk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTaG9ydGhhbmQuY3BwCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqIChDKSAxOTk5LTIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEzIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKQEAgLTIyLDEyICsyMiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCIKIAotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCisvLyBGSVhNRTogSG93IG11Y2ggb2Yg
dGhpcyBmaWxlIGNhbiB3ZSBnZW5lcmF0ZT8KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25z
dCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBiYWNrZ3JvdW5kU2hvcnRoYW5kKCkKK1N0eWxlUHJv
cGVydHlTaG9ydGhhbmQgYmFja2dyb3VuZFNob3J0aGFuZCgpCiB7CiAgICAgc3RhdGljIGNvbnN0
IENTU1Byb3BlcnR5SUQgYmFja2dyb3VuZFByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kSW1hZ2UsCkBAIC00MSwyNSArNDIsMjIgQEAgY29uc3QgU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCYgYmFja2dyb3VuZFNob3J0aGFuZCgpCiAgICAgICAgIENTU1Byb3BlcnR5
QmFja2dyb3VuZENsaXAsCiAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yCiAgICAg
fTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQsIGJhY2tn
cm91bmRTaG9ydGhhbmQsIChDU1NQcm9wZXJ0eUJhY2tncm91bmQsIGJhY2tncm91bmRQcm9wZXJ0
aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJhY2tncm91bmRQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVy
biBiYWNrZ3JvdW5kU2hvcnRoYW5kOworICAgIHJldHVybiBTdHlsZVByb3BlcnR5U2hvcnRoYW5k
KENTU1Byb3BlcnR5QmFja2dyb3VuZCwgYmFja2dyb3VuZFByb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgoYmFja2dyb3VuZFByb3BlcnRpZXMpKTsKIH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCYgYmFja2dyb3VuZFBvc2l0aW9uU2hvcnRoYW5kKCkKK1N0eWxlUHJvcGVydHlTaG9y
dGhhbmQgYmFja2dyb3VuZFBvc2l0aW9uU2hvcnRoYW5kKCkKIHsKICAgICBzdGF0aWMgY29uc3Qg
Q1NTUHJvcGVydHlJRCBiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzW10gPSB7IENTU1Byb3Bl
cnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZIH07
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hvcnRoYW5kLCBiYWNrZ3Jv
dW5kUG9zaXRpb25Mb25naGFuZHMsIChDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiwgYmFj
a2dyb3VuZFBvc2l0aW9uUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5kUG9z
aXRpb25Qcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFu
ZHM7CisgICAgcmV0dXJuIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUG9zaXRpb24sIGJhY2tncm91bmRQb3NpdGlvblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5H
VEgoYmFja2dyb3VuZFBvc2l0aW9uUHJvcGVydGllcykpOwogfQogCi1jb25zdCBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kJiBiYWNrZ3JvdW5kUmVwZWF0U2hvcnRoYW5kKCkKK1N0eWxlUHJvcGVydHlT
aG9ydGhhbmQgYmFja2dyb3VuZFJlcGVhdFNob3J0aGFuZCgpCiB7CiAgICAgc3RhdGljIGNvbnN0
IENTU1Byb3BlcnR5SUQgYmFja2dyb3VuZFJlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUmVwZWF0WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSB9OwotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgYmFja2dyb3VuZFJl
cGVhdExvbmdoYW5kcywgKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCwgYmFja2dyb3VuZFJl
cGVhdFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYmFja2dyb3VuZFJlcGVhdFByb3BlcnRp
ZXMpKSk7Ci0gICAgcmV0dXJuIGJhY2tncm91bmRSZXBlYXRMb25naGFuZHM7CisgICAgcmV0dXJu
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0LCBiYWNr
Z3JvdW5kUmVwZWF0UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5kUmVwZWF0
UHJvcGVydGllcykpOwogfQogCi1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBib3JkZXJT
aG9ydGhhbmQoKQorU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCBib3JkZXJTaG9ydGhhbmQoKQogewog
ICAgIC8vIERvIG5vdCBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSBmb2xsb3dpbmcgZm91ciBzaG9y
dGhhbmRzLCBhbmQga2VlcCB0aGVtIHRvZ2V0aGVyLgogICAgIHN0YXRpYyBjb25zdCBDU1NQcm9w
ZXJ0eUlEIGJvcmRlclByb3BlcnRpZXNbNF1bM10gPSB7CkBAIC02OCwzMSArNjYsMjMgQEAgY29u
c3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgYm9yZGVyU2hvcnRoYW5kKCkKICAgICAgICAgeyBD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxl
LCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoIH0sCiAgICAgICAgIHsgQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJv
cmRlckxlZnRXaWR0aCB9CiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQsIGJvcmRlckxvbmdoYW5kcywgKENTU1Byb3BlcnR5Qm9yZGVyLCBib3Jk
ZXJQcm9wZXJ0aWVzWzBdLCBzaXplb2YoYm9yZGVyUHJvcGVydGllcykgLyBzaXplb2YoYm9yZGVy
UHJvcGVydGllc1swXVswXSkpKTsKLSAgICByZXR1cm4gYm9yZGVyTG9uZ2hhbmRzOworICAgIHJl
dHVybiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5Qm9yZGVyLCBib3JkZXJQcm9w
ZXJ0aWVzWzBdLCBzaXplb2YoYm9yZGVyUHJvcGVydGllcykgLyBzaXplb2YoYm9yZGVyUHJvcGVy
dGllc1swXVswXSkpOwogfQogCi1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBib3JkZXJB
YnJpZGdlZFNob3J0aGFuZCgpCitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIGJvcmRlckFicmlkZ2Vk
U2hvcnRoYW5kKCkKIHsKICAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3JkZXJBYnJp
ZGdlZFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgQ1NTUHJvcGVydHlC
b3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciB9OwotICAgIHN0YXRpYyBjb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kKiBwcm9wZXJ0aWVzRm9ySW5pdGlhbGl6YXRpb25bXSA9IHsK
LSAgICAgICAgJmJvcmRlcldpZHRoU2hvcnRoYW5kKCksCi0gICAgICAgICZib3JkZXJTdHlsZVNo
b3J0aGFuZCgpLAotICAgICAgICAmYm9yZGVyQ29sb3JTaG9ydGhhbmQoKSwKLSAgICB9OwotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgYm9yZGVyQWJyaWRn
ZWRMb25naGFuZHMsCi0gICAgICAgIChDU1NQcm9wZXJ0eUJvcmRlciwgYm9yZGVyQWJyaWRnZWRQ
cm9wZXJ0aWVzLCBwcm9wZXJ0aWVzRm9ySW5pdGlhbGl6YXRpb24sIFdURl9BUlJBWV9MRU5HVEgo
Ym9yZGVyQWJyaWRnZWRQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBib3JkZXJBYnJpZGdlZExv
bmdoYW5kczsKKyAgICBzdGF0aWMgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCBwcm9wZXJ0
aWVzRm9ySW5pdGlhbGl6YXRpb25bXSA9IHsgYm9yZGVyV2lkdGhTaG9ydGhhbmQoKSwgYm9yZGVy
U3R5bGVTaG9ydGhhbmQoKSwgYm9yZGVyQ29sb3JTaG9ydGhhbmQoKSB9OworICAgIHJldHVybiBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5Qm9yZGVyLCBib3JkZXJBYnJpZGdlZFBy
b3BlcnRpZXMsIHByb3BlcnRpZXNGb3JJbml0aWFsaXphdGlvbiwgV1RGX0FSUkFZX0xFTkdUSChi
b3JkZXJBYnJpZGdlZFByb3BlcnRpZXMpKTsKIH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCYgYm9yZGVyQm90dG9tU2hvcnRoYW5kKCkKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgYm9y
ZGVyQm90dG9tU2hvcnRoYW5kKCkKIHsKICAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBi
b3JkZXJCb3R0b21Qcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgs
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29s
b3IgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQsIGJv
cmRlckJvdHRvbUxvbmdoYW5kcywgKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tLCBib3JkZXJCb3R0
b21Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckJvdHRvbVByb3BlcnRpZXMpKSk7
Ci0gICAgcmV0dXJuIGJvcmRlckJvdHRvbUxvbmdoYW5kczsKKyAgICByZXR1cm4gU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSwgYm9yZGVyQm90dG9tUHJvcGVy
dGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJCb3R0b21Qcm9wZXJ0aWVzKSk7CiB9CiAKLWNv
bnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGJvcmRlckNvbG9yU2hvcnRoYW5kKCkKK1N0eWxl
UHJvcGVydHlTaG9ydGhhbmQgYm9yZGVyQ29sb3JTaG9ydGhhbmQoKQogewogICAgIHN0YXRpYyBj
b25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckNvbG9yUHJvcGVydGllc1tdID0gewogICAgICAgICBD
U1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLApAQCAtMTAwLDExICs5MCwxMCBAQCBjb25zdCBTdHls
ZVByb3BlcnR5U2hvcnRoYW5kJiBib3JkZXJDb2xvclNob3J0aGFuZCgpCiAgICAgICAgIENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENv
bG9yCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQsIGJvcmRlckNvbG9yTG9uZ2hhbmRzLCAoQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYm9yZGVy
Q29sb3JQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckNvbG9yUHJvcGVydGllcykp
KTsKLSAgICByZXR1cm4gYm9yZGVyQ29sb3JMb25naGFuZHM7CisgICAgcmV0dXJuIFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYm9yZGVyQ29sb3JQcm9wZXJ0
aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckNvbG9yUHJvcGVydGllcykpOwogfQogCi1jb25z
dCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBib3JkZXJJbWFnZVNob3J0aGFuZCgpCitTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kIGJvcmRlckltYWdlU2hvcnRoYW5kKCkKIHsKICAgICBzdGF0aWMgY29u
c3QgQ1NTUHJvcGVydHlJRCBib3JkZXJJbWFnZVByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NT
UHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZSwKQEAgLTExMywxOCArMTAyLDE2IEBAIGNvbnN0IFN0
eWxlUHJvcGVydHlTaG9ydGhhbmQmIGJvcmRlckltYWdlU2hvcnRoYW5kKCkKICAgICAgICAgQ1NT
UHJvcGVydHlCb3JkZXJJbWFnZU91dHNldCwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFn
ZVJlcGVhdAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hv
cnRoYW5kLCBib3JkZXJJbWFnZUxvbmdoYW5kcywgKENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIGJv
cmRlckltYWdlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJJbWFnZVByb3BlcnRp
ZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlckltYWdlTG9uZ2hhbmRzOworICAgIHJldHVybiBTdHls
ZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIGJvcmRlckltYWdlUHJv
cGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJJbWFnZVByb3BlcnRpZXMpKTsKIH0KIAot
Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgYm9yZGVyTGVmdFNob3J0aGFuZCgpCitTdHls
ZVByb3BlcnR5U2hvcnRoYW5kIGJvcmRlckxlZnRTaG9ydGhhbmQoKQogewogICAgIHN0YXRpYyBj
b25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlckxlZnRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5
Qm9yZGVyTGVmdFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0Q29sb3IgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlT
aG9ydGhhbmQsIGJvcmRlckxlZnRMb25naGFuZHMsIChDU1NQcm9wZXJ0eUJvcmRlckxlZnQsIGJv
cmRlckxlZnRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckxlZnRQcm9wZXJ0aWVz
KSkpOwotICAgIHJldHVybiBib3JkZXJMZWZ0TG9uZ2hhbmRzOworICAgIHJldHVybiBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5Qm9yZGVyTGVmdCwgYm9yZGVyTGVmdFByb3BlcnRp
ZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyTGVmdFByb3BlcnRpZXMpKTsKIH0KIAotY29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgYm9yZGVyUmFkaXVzU2hvcnRoYW5kKCkKK1N0eWxlUHJv
cGVydHlTaG9ydGhhbmQgYm9yZGVyUmFkaXVzU2hvcnRoYW5kKCkKIHsKICAgICBzdGF0aWMgY29u
c3QgQ1NTUHJvcGVydHlJRCBib3JkZXJSYWRpdXNQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENT
U1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywKQEAgLTEzMiwxMSArMTE5LDEwIEBAIGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGJvcmRlclJhZGl1c1Nob3J0aGFuZCgpCiAgICAgICAg
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsCiAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tTGVmdFJhZGl1cwogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
dHlsZVByb3BlcnR5U2hvcnRoYW5kLCBib3JkZXJSYWRpdXNMb25naGFuZHMsIChDU1NQcm9wZXJ0
eUJvcmRlclJhZGl1cywgYm9yZGVyUmFkaXVzUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChi
b3JkZXJSYWRpdXNQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBib3JkZXJSYWRpdXNMb25naGFu
ZHM7CisgICAgcmV0dXJuIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlCb3JkZXJS
YWRpdXMsIGJvcmRlclJhZGl1c1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyUmFk
aXVzUHJvcGVydGllcykpOwogfQogCi1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJr
aXRCb3JkZXJSYWRpdXNTaG9ydGhhbmQoKQorU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCB3ZWJraXRC
b3JkZXJSYWRpdXNTaG9ydGhhbmQoKQogewogICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlE
IGJvcmRlclJhZGl1c1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJU
b3BMZWZ0UmFkaXVzLApAQCAtMTQ0LDI1ICsxMzAsMjIgQEAgY29uc3QgU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCYgd2Via2l0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kKCkKICAgICAgICAgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cywKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21MZWZ0UmFkaXVzCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQsIGJvcmRlclJhZGl1c0xvbmdoYW5kcywgKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyUmFkaXVzLCBib3JkZXJSYWRpdXNQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRl
clJhZGl1c1Byb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlclJhZGl1c0xvbmdoYW5kczsK
KyAgICByZXR1cm4gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
clJhZGl1cywgYm9yZGVyUmFkaXVzUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJS
YWRpdXNQcm9wZXJ0aWVzKSk7CiB9CiAKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGJv
cmRlclJpZ2h0U2hvcnRoYW5kKCkKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgYm9yZGVyUmlnaHRT
aG9ydGhhbmQoKQogewogICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlclJpZ2h0
UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yIH07Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hvcnRoYW5kLCBib3JkZXJSaWdodExvbmdo
YW5kcywgKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQsIGJvcmRlclJpZ2h0UHJvcGVydGllcywgV1RG
X0FSUkFZX0xFTkdUSChib3JkZXJSaWdodFByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRl
clJpZ2h0TG9uZ2hhbmRzOworICAgIHJldHVybiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1By
b3BlcnR5Qm9yZGVyUmlnaHQsIGJvcmRlclJpZ2h0UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdU
SChib3JkZXJSaWdodFByb3BlcnRpZXMpKTsKIH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCYgYm9yZGVyU3BhY2luZ1Nob3J0aGFuZCgpCitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIGJv
cmRlclNwYWNpbmdTaG9ydGhhbmQoKQogewogICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlE
IGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9y
aXpvbnRhbFNwYWNpbmcsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nIH07
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hvcnRoYW5kLCBib3JkZXJT
cGFjaW5nTG9uZ2hhbmRzLCAoQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nLCBib3JkZXJTcGFjaW5n
UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJTcGFjaW5nUHJvcGVydGllcykpKTsK
LSAgICByZXR1cm4gYm9yZGVyU3BhY2luZ0xvbmdoYW5kczsKKyAgICByZXR1cm4gU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcsIGJvcmRlclNwYWNpbmdQcm9w
ZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzKSk7CiB9CiAK
LWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGJvcmRlclN0eWxlU2hvcnRoYW5kKCkKK1N0
eWxlUHJvcGVydHlTaG9ydGhhbmQgYm9yZGVyU3R5bGVTaG9ydGhhbmQoKQogewogICAgIHN0YXRp
YyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJvcmRlclN0eWxlUHJvcGVydGllc1tdID0gewogICAgICAg
ICBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLApAQCAtMTcwLDE4ICsxNTMsMTYgQEAgY29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgYm9yZGVyU3R5bGVTaG9ydGhhbmQoKQogICAgICAgICBD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRTdHlsZQogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hv
cnRoYW5kLCBib3JkZXJTdHlsZUxvbmdoYW5kcywgKENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIGJv
cmRlclN0eWxlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJTdHlsZVByb3BlcnRp
ZXMpKSk7Ci0gICAgcmV0dXJuIGJvcmRlclN0eWxlTG9uZ2hhbmRzOworICAgIHJldHVybiBTdHls
ZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIGJvcmRlclN0eWxlUHJv
cGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJTdHlsZVByb3BlcnRpZXMpKTsKIH0KIAot
Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgYm9yZGVyVG9wU2hvcnRoYW5kKCkKK1N0eWxl
UHJvcGVydHlTaG9ydGhhbmQgYm9yZGVyVG9wU2hvcnRoYW5kKCkKIHsKICAgICBzdGF0aWMgY29u
c3QgQ1NTUHJvcGVydHlJRCBib3JkZXJUb3BQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9y
ZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVy
VG9wQ29sb3IgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQsIGJvcmRlclRvcExvbmdoYW5kcywgKENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBib3JkZXJUb3BQ
cm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclRvcFByb3BlcnRpZXMpKSk7Ci0gICAg
cmV0dXJuIGJvcmRlclRvcExvbmdoYW5kczsKKyAgICByZXR1cm4gU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZChDU1NQcm9wZXJ0eUJvcmRlclRvcCwgYm9yZGVyVG9wUHJvcGVydGllcywgV1RGX0FSUkFZ
X0xFTkdUSChib3JkZXJUb3BQcm9wZXJ0aWVzKSk7CiB9CiAKLWNvbnN0IFN0eWxlUHJvcGVydHlT
aG9ydGhhbmQmIGJvcmRlcldpZHRoU2hvcnRoYW5kKCkKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQg
Ym9yZGVyV2lkdGhTaG9ydGhhbmQoKQogewogICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlE
IGJvcmRlcldpZHRoUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRv
cFdpZHRoLApAQCAtMTg5LDIyICsxNzAsMjAgQEAgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZCYgYm9yZGVyV2lkdGhTaG9ydGhhbmQoKQogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVdpZHRoLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aAogICAgIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hvcnRoYW5kLCBib3JkZXJXaWR0aExv
bmdoYW5kcywgKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIGJvcmRlcldpZHRoUHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSChib3JkZXJXaWR0aFByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIGJv
cmRlcldpZHRoTG9uZ2hhbmRzOworICAgIHJldHVybiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENT
U1Byb3BlcnR5Qm9yZGVyV2lkdGgsIGJvcmRlcldpZHRoUHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSChib3JkZXJXaWR0aFByb3BlcnRpZXMpKTsKIH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCYgbGlzdFN0eWxlU2hvcnRoYW5kKCkKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgbGlz
dFN0eWxlU2hvcnRoYW5kKCkKIHsKICAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBsaXN0
U3R5bGVQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwK
ICAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwKICAgICAgICAgQ1NTUHJvcGVy
dHlMaXN0U3R5bGVJbWFnZQogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kLCBsaXN0U3R5bGVMb25naGFuZHMsIChDU1NQcm9wZXJ0eUxpc3RTdHls
ZSwgbGlzdFN0eWxlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChsaXN0U3R5bGVQcm9wZXJ0
aWVzKSkpOwotICAgIHJldHVybiBsaXN0U3R5bGVMb25naGFuZHM7CisgICAgcmV0dXJuIFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlMaXN0U3R5bGUsIGxpc3RTdHlsZVByb3BlcnRp
ZXMsIFdURl9BUlJBWV9MRU5HVEgobGlzdFN0eWxlUHJvcGVydGllcykpOwogfQogCi1jb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kJiBmb250U2hvcnRoYW5kKCkKK1N0eWxlUHJvcGVydHlTaG9y
dGhhbmQgZm9udFNob3J0aGFuZCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQg
Zm9udFByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlGb250RmFtaWx5LApAQCAt
MjE0LDExICsxOTMsMTAgQEAgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgZm9udFNob3J0
aGFuZCgpCiAgICAgICAgIENTU1Byb3BlcnR5Rm9udFdlaWdodCwKICAgICAgICAgQ1NTUHJvcGVy
dHlMaW5lSGVpZ2h0CiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQsIGZvbnRMb25naGFuZHMsIChDU1NQcm9wZXJ0eUZvbnQsIGZvbnRQcm9wZXJ0
aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGZvbnRQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBmb250
TG9uZ2hhbmRzOworICAgIHJldHVybiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5
Rm9udCwgZm9udFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoZm9udFByb3BlcnRpZXMpKTsK
IH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgbWFyZ2luU2hvcnRoYW5kKCkKK1N0
eWxlUHJvcGVydHlTaG9ydGhhbmQgbWFyZ2luU2hvcnRoYW5kKCkKIHsKICAgICBzdGF0aWMgY29u
c3QgQ1NTUHJvcGVydHlJRCBtYXJnaW5Qcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3Bl
cnR5TWFyZ2luVG9wLApAQCAtMjI2LDQyICsyMDQsMzggQEAgY29uc3QgU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCYgbWFyZ2luU2hvcnRoYW5kKCkKICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0
b20sCiAgICAgICAgIENTU1Byb3BlcnR5TWFyZ2luTGVmdAogICAgIH07Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hvcnRoYW5kLCBtYXJnaW5Mb25naGFuZHMsIChDU1NQ
cm9wZXJ0eU1hcmdpbiwgbWFyZ2luUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJnaW5Q
cm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiBtYXJnaW5Mb25naGFuZHM7CisgICAgcmV0dXJuIFN0
eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlNYXJnaW4sIG1hcmdpblByb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgobWFyZ2luUHJvcGVydGllcykpOwogfQogCiAjaWYgRU5BQkxFKFNW
RykKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIG1hcmtlclNob3J0aGFuZCgpCitTdHls
ZVByb3BlcnR5U2hvcnRoYW5kIG1hcmtlclNob3J0aGFuZCgpCiB7CiAgICAgc3RhdGljIGNvbnN0
IENTU1Byb3BlcnR5SUQgbWFya2VyUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0
eU1hcmtlclN0YXJ0LAogICAgICAgICBDU1NQcm9wZXJ0eU1hcmtlck1pZCwKICAgICAgICAgQ1NT
UHJvcGVydHlNYXJrZXJFbmQKICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZCwgbWFya2VyTG9uZ2hhbmRzLCAoQ1NTUHJvcGVydHlNYXJrZXIsIG1h
cmtlclByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFya2VyUHJvcGVydGllcykpKTsKLSAg
ICByZXR1cm4gbWFya2VyTG9uZ2hhbmRzOworICAgIHJldHVybiBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kKENTU1Byb3BlcnR5TWFya2VyLCBtYXJrZXJQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RI
KG1hcmtlclByb3BlcnRpZXMpKTsKIH0KICNlbmRpZgogCi1jb25zdCBTdHlsZVByb3BlcnR5U2hv
cnRoYW5kJiBvdXRsaW5lU2hvcnRoYW5kKCkKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgb3V0bGlu
ZVNob3J0aGFuZCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgb3V0bGluZVBy
b3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IsCiAgICAgICAg
IENTU1Byb3BlcnR5T3V0bGluZVN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0
aAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hvcnRoYW5k
LCBvdXRsaW5lTG9uZ2hhbmRzLCAoQ1NTUHJvcGVydHlPdXRsaW5lLCBvdXRsaW5lUHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChvdXRsaW5lUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gb3V0
bGluZUxvbmdoYW5kczsKKyAgICByZXR1cm4gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9w
ZXJ0eU91dGxpbmUsIG91dGxpbmVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG91dGxpbmVQ
cm9wZXJ0aWVzKSk7CiB9CiAKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIG92ZXJmbG93
U2hvcnRoYW5kKCkKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgb3ZlcmZsb3dTaG9ydGhhbmQoKQog
ewogICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIG92ZXJmbG93UHJvcGVydGllc1tdID0g
eyBDU1NQcm9wZXJ0eU92ZXJmbG93WCwgQ1NTUHJvcGVydHlPdmVyZmxvd1kgfTsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQsIG92ZXJmbG93TG9uZ2hhbmRz
LCAoQ1NTUHJvcGVydHlPdmVyZmxvdywgb3ZlcmZsb3dQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVO
R1RIKG92ZXJmbG93UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gb3ZlcmZsb3dMb25naGFuZHM7
CisgICAgcmV0dXJuIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlPdmVyZmxvdywg
b3ZlcmZsb3dQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG92ZXJmbG93UHJvcGVydGllcykp
OwogfQogCi1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBwYWRkaW5nU2hvcnRoYW5kKCkK
K1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgcGFkZGluZ1Nob3J0aGFuZCgpCiB7CiAgICAgc3RhdGlj
IGNvbnN0IENTU1Byb3BlcnR5SUQgcGFkZGluZ1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NT
UHJvcGVydHlQYWRkaW5nVG9wLApAQCAtMjY5LDExICsyNDMsMTAgQEAgY29uc3QgU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCYgcGFkZGluZ1Nob3J0aGFuZCgpCiAgICAgICAgIENTU1Byb3BlcnR5UGFk
ZGluZ0JvdHRvbSwKICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdAogICAgIH07Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hvcnRoYW5kLCBwYWRkaW5nTG9uZ2hh
bmRzLCAoQ1NTUHJvcGVydHlQYWRkaW5nLCBwYWRkaW5nUHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSChwYWRkaW5nUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gcGFkZGluZ0xvbmdoYW5kczsK
KyAgICByZXR1cm4gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eVBhZGRpbmcsIHBh
ZGRpbmdQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHBhZGRpbmdQcm9wZXJ0aWVzKSk7CiB9
CiAKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHRyYW5zaXRpb25TaG9ydGhhbmQoKQor
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCB0cmFuc2l0aW9uU2hvcnRoYW5kKCkKIHsKICAgICBzdGF0
aWMgY29uc3QgQ1NTUHJvcGVydHlJRCB0cmFuc2l0aW9uUHJvcGVydGllc1tdID0gewogICAgICAg
ICBDU1NQcm9wZXJ0eVRyYW5zaXRpb25Qcm9wZXJ0eSwKQEAgLTI4MSwxMSArMjU0LDEwIEBAIGNv
bnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHRyYW5zaXRpb25TaG9ydGhhbmQoKQogICAgICAg
ICBDU1NQcm9wZXJ0eVRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwKICAgICAgICAgQ1NTUHJvcGVy
dHlUcmFuc2l0aW9uRGVsYXkKICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZCwgdHJhbnNpdGlvbkxvbmdoYW5kcywgKENTU1Byb3BlcnR5VHJhbnNp
dGlvbiwgdHJhbnNpdGlvblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodHJhbnNpdGlvblBy
b3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHRyYW5zaXRpb25Mb25naGFuZHM7CisgICAgcmV0dXJu
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlUcmFuc2l0aW9uLCB0cmFuc2l0aW9u
UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0cmFuc2l0aW9uUHJvcGVydGllcykpOwogfQog
Ci1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRBbmltYXRpb25TaG9ydGhhbmQo
KQorU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCB3ZWJraXRBbmltYXRpb25TaG9ydGhhbmQoKQogewog
ICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGFuaW1hdGlvblByb3BlcnRpZXNbXSA9IHsK
ICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lLApAQCAtMjk2LDExICsyNjgs
MTAgQEAgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0QW5pbWF0aW9uU2hvcnRo
YW5kKCkKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24sCiAgICAg
ICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUKICAgICB9OwotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgd2Via2l0QW5pbWF0aW9uTG9u
Z2hhbmRzLCAoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb24sIGFuaW1hdGlvblByb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgoYW5pbWF0aW9uUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Vi
a2l0QW5pbWF0aW9uTG9uZ2hhbmRzOworICAgIHJldHVybiBTdHlsZVByb3BlcnR5U2hvcnRoYW5k
KENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uLCBhbmltYXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKGFuaW1hdGlvblByb3BlcnRpZXMpKTsKIH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCYgd2Via2l0QW5pbWF0aW9uU2hvcnRoYW5kRm9yUGFyc2luZygpCitTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kIHdlYmtpdEFuaW1hdGlvblNob3J0aGFuZEZvclBhcnNpbmcoKQogewog
ICAgIC8vIFdoZW4gd2UgcGFyc2UgdGhlIGFuaW1hdGlvbiBzaG9ydGhhbmQgd2UgbmVlZCB0byBs
b29rIGZvciBhbmltYXRpb24tbmFtZQogICAgIC8vIGxhc3QgYmVjYXVzZSBvdGhlcndpc2UgaXQg
bWlnaHQgbWF0Y2ggYWdhaW5zdCB0aGUga2V5d29yZHMgZm9yIGZpbGwgbW9kZSwKQEAgLTMyMSwx
MDAgKzI5Miw4OCBAQCBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRBbmltYXRp
b25TaG9ydGhhbmRGb3JQYXJzaW5nKCkKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25OYW1lCiAgICAgfTsKIAotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCwgd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmRzRm9yUGFyc2luZywgKENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uLCBhbmltYXRpb25Qcm9wZXJ0aWVzRm9yUGFyc2luZywgV1RGX0FSUkFZ
X0xFTkdUSChhbmltYXRpb25Qcm9wZXJ0aWVzRm9yUGFyc2luZykpKTsKLSAgICByZXR1cm4gd2Vi
a2l0QW5pbWF0aW9uTG9uZ2hhbmRzRm9yUGFyc2luZzsKKyAgICByZXR1cm4gU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbiwgYW5pbWF0aW9uUHJvcGVydGll
c0ZvclBhcnNpbmcsIFdURl9BUlJBWV9MRU5HVEgoYW5pbWF0aW9uUHJvcGVydGllc0ZvclBhcnNp
bmcpKTsKIH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0Qm9yZGVyQWZ0
ZXJTaG9ydGhhbmQoKQorU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCB3ZWJraXRCb3JkZXJBZnRlclNo
b3J0aGFuZCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyQWZ0ZXJQ
cm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCwgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVy
Q29sb3IgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hvcnRoYW5k
LCB3ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5kcywgKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0
ZXIsIGJvcmRlckFmdGVyUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJBZnRlclBy
b3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmRzOworICAg
IHJldHVybiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0
ZXIsIGJvcmRlckFmdGVyUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJBZnRlclBy
b3BlcnRpZXMpKTsKIH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0Qm9y
ZGVyQmVmb3JlU2hvcnRoYW5kKCkKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgd2Via2l0Qm9yZGVy
QmVmb3JlU2hvcnRoYW5kKCkKIHsKICAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBib3Jk
ZXJCZWZvcmVQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlV2lk
dGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQmVmb3JlQ29sb3IgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kLCB3ZWJraXRCb3JkZXJCZWZvcmVMb25naGFuZHMsIChDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckJlZm9yZSwgYm9yZGVyQmVmb3JlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdU
SChib3JkZXJCZWZvcmVQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiB3ZWJraXRCb3JkZXJCZWZv
cmVMb25naGFuZHM7CisgICAgcmV0dXJuIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJCZWZvcmUsIGJvcmRlckJlZm9yZVByb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgoYm9yZGVyQmVmb3JlUHJvcGVydGllcykpOwogfQogCi1jb25zdCBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kJiB3ZWJraXRCb3JkZXJFbmRTaG9ydGhhbmQoKQorU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCB3ZWJraXRCb3JkZXJFbmRTaG9ydGhhbmQoKQogewogICAgIHN0YXRpYyBjb25zdCBDU1NQ
cm9wZXJ0eUlEIGJvcmRlckVuZFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZSwgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJFbmRDb2xvciB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCwgd2Via2l0Qm9yZGVyRW5kTG9uZ2hhbmRzLCAoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJFbmQsIGJvcmRlckVuZFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVy
RW5kUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0Qm9yZGVyRW5kTG9uZ2hhbmRzOwor
ICAgIHJldHVybiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
RW5kLCBib3JkZXJFbmRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckVuZFByb3Bl
cnRpZXMpKTsKIH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0Qm9yZGVy
U3RhcnRTaG9ydGhhbmQoKQorU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCB3ZWJraXRCb3JkZXJTdGFy
dFNob3J0aGFuZCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYm9yZGVyU3Rh
cnRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRXaWR0aCwgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0
YXJ0Q29sb3IgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQsIHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmRzLCAoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJT
dGFydCwgYm9yZGVyU3RhcnRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclN0YXJ0
UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZHM7Cisg
ICAgcmV0dXJuIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJT
dGFydCwgYm9yZGVyU3RhcnRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclN0YXJ0
UHJvcGVydGllcykpOwogfQogCi1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRD
b2x1bW5zU2hvcnRoYW5kKCkKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgd2Via2l0Q29sdW1uc1No
b3J0aGFuZCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgY29sdW1uc1Byb3Bl
cnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aCwgQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5Db3VudCB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCwgd2Via2l0Q29sdW1uc0xvbmdoYW5kcywgKENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
cywgY29sdW1uc1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoY29sdW1uc1Byb3BlcnRpZXMp
KSk7Ci0gICAgcmV0dXJuIHdlYmtpdENvbHVtbnNMb25naGFuZHM7CisgICAgcmV0dXJuIFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5zLCBjb2x1bW5zUHJvcGVy
dGllcywgV1RGX0FSUkFZX0xFTkdUSChjb2x1bW5zUHJvcGVydGllcykpOwogfQogCi1jb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRDb2x1bW5SdWxlU2hvcnRoYW5kKCkKK1N0eWxl
UHJvcGVydHlTaG9ydGhhbmQgd2Via2l0Q29sdW1uUnVsZVNob3J0aGFuZCgpCiB7CiAgICAgc3Rh
dGljIGNvbnN0IENTU1Byb3BlcnR5SUQgY29sdW1uUnVsZVByb3BlcnRpZXNbXSA9IHsKICAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsCiAgICAgICAgIENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uUnVsZVN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1
bGVDb2xvciwKICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCwgd2Via2l0Q29sdW1uUnVsZUxvbmdoYW5kcywgKENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uUnVsZSwgY29sdW1uUnVsZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoY29sdW1uUnVs
ZVByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZHM7Cisg
ICAgcmV0dXJuIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5S
dWxlLCBjb2x1bW5SdWxlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChjb2x1bW5SdWxlUHJv
cGVydGllcykpOwogfQogCi1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRGbGV4
Rmxvd1Nob3J0aGFuZCgpCitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHdlYmtpdEZsZXhGbG93U2hv
cnRoYW5kKCkKIHsKICAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBmbGV4Rmxvd1Byb3Bl
cnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdl
YmtpdEZsZXhXcmFwIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hv
cnRoYW5kLCB3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kcywgKENTU1Byb3BlcnR5V2Via2l0RmxleEZs
b3csIGZsZXhGbG93UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChmbGV4Rmxvd1Byb3BlcnRp
ZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmRzOworICAgIHJldHVybiBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5V2Via2l0RmxleEZsb3csIGZsZXhGbG93
UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChmbGV4Rmxvd1Byb3BlcnRpZXMpKTsKIH0KIAot
Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0RmxleFNob3J0aGFuZCgpCitTdHls
ZVByb3BlcnR5U2hvcnRoYW5kIHdlYmtpdEZsZXhTaG9ydGhhbmQoKQogewogICAgIHN0YXRpYyBj
b25zdCBDU1NQcm9wZXJ0eUlEIGZsZXhQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0
RmxleEdyb3csIENTU1Byb3BlcnR5V2Via2l0RmxleFNocmluaywgQ1NTUHJvcGVydHlXZWJraXRG
bGV4QmFzaXMgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQsIHdlYmtpdEZsZXhMb25naGFuZHMsIChDU1NQcm9wZXJ0eVdlYmtpdEZsZXgsIGZsZXhQcm9w
ZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGZsZXhQcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiB3
ZWJraXRGbGV4TG9uZ2hhbmRzOworICAgIHJldHVybiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENT
U1Byb3BlcnR5V2Via2l0RmxleCwgZmxleFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoZmxl
eFByb3BlcnRpZXMpKTsKIH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0
TWFyZ2luQ29sbGFwc2VTaG9ydGhhbmQoKQorU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCB3ZWJraXRN
YXJnaW5Db2xsYXBzZVNob3J0aGFuZCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5
SUQgbWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
QmVmb3JlQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSB9Owot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgd2Via2l0TWFy
Z2luQ29sbGFwc2VMb25naGFuZHMsIChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlLCBt
YXJnaW5Db2xsYXBzZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFyZ2luQ29sbGFwc2VQ
cm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiB3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kczsK
KyAgICByZXR1cm4gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkNvbGxhcHNlLCBtYXJnaW5Db2xsYXBzZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFy
Z2luQ29sbGFwc2VQcm9wZXJ0aWVzKSk7CiB9CiAKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQmIHdlYmtpdEdyaWRDb2x1bW5TaG9ydGhhbmQoKQorU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCB3
ZWJraXRHcmlkQ29sdW1uU2hvcnRoYW5kKCkKIHsKICAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVy
dHlJRCB3ZWJraXRHcmlkQ29sdW1uUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdEdyaWRDb2x1bW5TdGFydCwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRHcmlkQ29s
dW1uRW5kCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQsIHdlYmtpdEdyaWRDb2x1bW5Mb25naGFuZHMsIChDU1NQcm9wZXJ0eVdlYmtpdEdyaWRD
b2x1bW4sIHdlYmtpdEdyaWRDb2x1bW5Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHdlYmtp
dEdyaWRDb2x1bW5Qcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiB3ZWJraXRHcmlkQ29sdW1uTG9u
Z2hhbmRzOworICAgIHJldHVybiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5V2Vi
a2l0R3JpZENvbHVtbiwgd2Via2l0R3JpZENvbHVtblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5H
VEgod2Via2l0R3JpZENvbHVtblByb3BlcnRpZXMpKTsKIAogfQogCi1jb25zdCBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kJiB3ZWJraXRHcmlkUm93U2hvcnRoYW5kKCkKK1N0eWxlUHJvcGVydHlTaG9y
dGhhbmQgd2Via2l0R3JpZFJvd1Nob3J0aGFuZCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IENTU1By
b3BlcnR5SUQgd2Via2l0R3JpZFJvd1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRHcmlkUm93U3RhcnQsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0R3JpZFJvd0Vu
ZAogICAgIH07Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hvcnRoYW5k
LCB3ZWJraXRHcmlkUm93TG9uZ2hhbmRzLCAoQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93LCB3ZWJr
aXRHcmlkUm93UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh3ZWJraXRHcmlkUm93UHJvcGVy
dGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0R3JpZFJvd0xvbmdoYW5kczsKKyAgICByZXR1cm4g
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eVdlYmtpdEdyaWRSb3csIHdlYmtpdEdy
aWRSb3dQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHdlYmtpdEdyaWRSb3dQcm9wZXJ0aWVz
KSk7CiAKIH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0TWFycXVlZVNo
b3J0aGFuZCgpCitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHdlYmtpdE1hcnF1ZWVTaG9ydGhhbmQo
KQogewogICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIG1hcnF1ZWVQcm9wZXJ0aWVzW10g
PSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwKQEAgLTQyMywx
MSArMzgyLDEwIEBAIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHdlYmtpdE1hcnF1ZWVT
aG9ydGhhbmQoKQogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwKICAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQKICAgICB9OwotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgd2Via2l0TWFycXVlZUxvbmdoYW5kcywg
KENTU1Byb3BlcnR5V2Via2l0TWFycXVlZSwgbWFycXVlZVByb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgobWFycXVlZVByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdE1hcnF1ZWVMb25n
aGFuZHM7CisgICAgcmV0dXJuIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlLCBtYXJxdWVlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJxdWVlUHJv
cGVydGllcykpOwogfQogCi1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRNYXNr
U2hvcnRoYW5kKCkKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgd2Via2l0TWFza1Nob3J0aGFuZCgp
CiB7CiAgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgbWFza1Byb3BlcnRpZXNbXSA9IHsK
ICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsCkBAIC00NDAsNTUgKzM5OCw0OSBA
QCBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRNYXNrU2hvcnRoYW5kKCkKICAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luLAogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tDbGlwCiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQsIHdlYmtpdE1hc2tMb25naGFuZHMsIChDU1NQcm9wZXJ0eVdlYmtpdE1hc2ss
IG1hc2tQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hc2tQcm9wZXJ0aWVzKSkpOwotICAg
IHJldHVybiB3ZWJraXRNYXNrTG9uZ2hhbmRzOworICAgIHJldHVybiBTdHlsZVByb3BlcnR5U2hv
cnRoYW5kKENTU1Byb3BlcnR5V2Via2l0TWFzaywgbWFza1Byb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgobWFza1Byb3BlcnRpZXMpKTsKIH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZCYgd2Via2l0TWFza1Bvc2l0aW9uU2hvcnRoYW5kKCkKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQg
d2Via2l0TWFza1Bvc2l0aW9uU2hvcnRoYW5kKCkKIHsKICAgICBzdGF0aWMgY29uc3QgQ1NTUHJv
cGVydHlJRCBtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZIH07Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTdHlsZVByb3BlcnR5U2hvcnRoYW5kLCB3ZWJraXRNYXNrUG9zaXRpb25M
b25naGFuZHMsIChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiwgbWFza1Bvc2l0aW9uUHJv
cGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzKSkpOwotICAg
IHJldHVybiB3ZWJraXRNYXNrUG9zaXRpb25Mb25naGFuZHM7CisgICAgcmV0dXJuIFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24sIG1hc2tQb3NpdGlv
blByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFza1Bvc2l0aW9uUHJvcGVydGllcykpOwog
fQogCi1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRNYXNrUmVwZWF0U2hvcnRo
YW5kKCkKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgd2Via2l0TWFza1JlcGVhdFNob3J0aGFuZCgp
CiB7CiAgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgbWFza1JlcGVhdFByb3BlcnRpZXNb
XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwgQ1NTUHJvcGVydHlXZWJraXRNYXNr
UmVwZWF0WSB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZCwgd2Via2l0TWFza1JlcGVhdExvbmdoYW5kcywgKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVh
dCwgbWFza1JlcGVhdFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFza1JlcGVhdFByb3Bl
cnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZHM7CisgICAgcmV0
dXJuIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0LCBt
YXNrUmVwZWF0UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXNrUmVwZWF0UHJvcGVydGll
cykpOwogfQogCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQmIHdlYmtpdFRleHREZWNvcmF0aW9uU2hvcnRoYW5kKCkKK1N0eWxlUHJvcGVydHlTaG9y
dGhhbmQgd2Via2l0VGV4dERlY29yYXRpb25TaG9ydGhhbmQoKQogewogICAgIHN0YXRpYyBjb25z
dCBDU1NQcm9wZXJ0eUlEIHRleHREZWNvcmF0aW9uUHJvcGVydGllc1tdID0gewogICAgICAgICBD
U1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uTGluZSwKICAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RGVjb3JhdGlvblN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRE
ZWNvcmF0aW9uQ29sb3IKICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCwgd2Via2l0VGV4dERlY29yYXRpb25Mb25naGFuZHMsIChDU1NQcm9wZXJ0
eVdlYmtpdFRleHREZWNvcmF0aW9uLCB0ZXh0RGVjb3JhdGlvblByb3BlcnRpZXMsIFdURl9BUlJB
WV9MRU5HVEgodGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiB3ZWJraXRU
ZXh0RGVjb3JhdGlvbkxvbmdoYW5kczsKKyAgICByZXR1cm4gU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZChDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uLCB0ZXh0RGVjb3JhdGlvblByb3BlcnRp
ZXMsIFdURl9BUlJBWV9MRU5HVEgodGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzKSk7CiB9CiAjZW5k
aWYKIAotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0VGV4dEVtcGhhc2lzU2hv
cnRoYW5kKCkKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgd2Via2l0VGV4dEVtcGhhc2lzU2hvcnRo
YW5kKCkKIHsKICAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCB0ZXh0RW1waGFzaXNQcm9w
ZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUs
CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IKICAgICB9OwotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgd2Via2l0VGV4dEVt
cGhhc2lzTG9uZ2hhbmRzLCAoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXMsIHRleHRFbXBo
YXNpc1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodGV4dEVtcGhhc2lzUHJvcGVydGllcykp
KTsKLSAgICByZXR1cm4gd2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmRzOworICAgIHJldHVybiBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzLCB0ZXh0
RW1waGFzaXNQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRleHRFbXBoYXNpc1Byb3BlcnRp
ZXMpKTsKIH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0VGV4dFN0cm9r
ZVNob3J0aGFuZCgpCitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHdlYmtpdFRleHRTdHJva2VTaG9y
dGhhbmQoKQogewogICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHRleHRTdHJva2VQcm9w
ZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRTdHJva2VDb2xvciB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZCwgd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kcywgKENTU1Byb3BlcnR5
V2Via2l0VGV4dFN0cm9rZSwgdGV4dFN0cm9rZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgo
dGV4dFN0cm9rZVByb3BlcnRpZXMpKSk7Ci0gICAgcmV0dXJuIHdlYmtpdFRleHRTdHJva2VMb25n
aGFuZHM7CisgICAgcmV0dXJuIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0U3Ryb2tlLCB0ZXh0U3Ryb2tlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0ZXh0
U3Ryb2tlUHJvcGVydGllcykpOwogfQogCi1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3
ZWJraXRUcmFuc2l0aW9uU2hvcnRoYW5kKCkKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgd2Via2l0
VHJhbnNpdGlvblNob3J0aGFuZCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQg
dHJhbnNpdGlvblByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2l0aW9uUHJvcGVydHksCkBAIC00OTYsNDMgKzQ0OCwzOSBAQCBjb25zdCBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kJiB3ZWJraXRUcmFuc2l0aW9uU2hvcnRoYW5kKCkKICAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sCiAgICAgICAgIENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNpdGlvbkRlbGF5CiAgICAgfTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQsIHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZHMsIChDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zaXRpb24sIHRyYW5zaXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RI
KHRyYW5zaXRpb25Qcm9wZXJ0aWVzKSkpOwotICAgIHJldHVybiB3ZWJraXRUcmFuc2l0aW9uTG9u
Z2hhbmRzOworICAgIHJldHVybiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNpdGlvbiwgdHJhbnNpdGlvblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodHJh
bnNpdGlvblByb3BlcnRpZXMpKTsKIH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYg
d2Via2l0VHJhbnNmb3JtT3JpZ2luU2hvcnRoYW5kKCkKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQg
d2Via2l0VHJhbnNmb3JtT3JpZ2luU2hvcnRoYW5kKCkKIHsKICAgICBzdGF0aWMgY29uc3QgQ1NT
UHJvcGVydHlJRCB0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1By
b3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWCwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1PcmlnaW5ZLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdp
bloKICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZCwgd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmRzLCAoQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1PcmlnaW4sIHRyYW5zZm9ybU9yaWdpblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgo
dHJhbnNmb3JtT3JpZ2luUHJvcGVydGllcykpKTsKLSAgICByZXR1cm4gd2Via2l0VHJhbnNmb3Jt
T3JpZ2luTG9uZ2hhbmRzOworICAgIHJldHVybiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1By
b3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luLCB0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzLCBX
VEZfQVJSQVlfTEVOR1RIKHRyYW5zZm9ybU9yaWdpblByb3BlcnRpZXMpKTsKIH0KIAotY29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2lkdGhTaG9ydGhhbmQoKQorU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCB3aWR0aFNob3J0aGFuZCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5
SUQgd2lkdGhQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5TWluV2lkdGgsCiAg
ICAgICAgIENTU1Byb3BlcnR5TWF4V2lkdGgKICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgd2lkdGhMb25naGFuZHMsIChDU1NQcm9wZXJ0eVdp
ZHRoLCB3aWR0aFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgod2lkdGhQcm9wZXJ0aWVzKSkp
OwotICAgIHJldHVybiB3aWR0aExvbmdoYW5kczsKKyAgICByZXR1cm4gU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZChDU1NQcm9wZXJ0eVdpZHRoLCB3aWR0aFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5H
VEgod2lkdGhQcm9wZXJ0aWVzKSk7CiB9CiAKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQm
IGhlaWdodFNob3J0aGFuZCgpCitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIGhlaWdodFNob3J0aGFu
ZCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgaGVpZ2h0UHJvcGVydGllc1td
ID0gewogICAgICAgICBDU1NQcm9wZXJ0eU1pbkhlaWdodCwKICAgICAgICAgQ1NTUHJvcGVydHlN
YXhIZWlnaHQKICAgICB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCwgaGVpZ2h0TG9uZ2hhbmRzLCAoQ1NTUHJvcGVydHlIZWlnaHQsIGhlaWdodFByb3Bl
cnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoaGVpZ2h0UHJvcGVydGllcykpKTsKLSAgICByZXR1cm4g
aGVpZ2h0TG9uZ2hhbmRzOworICAgIHJldHVybiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1By
b3BlcnR5SGVpZ2h0LCBoZWlnaHRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGhlaWdodFBy
b3BlcnRpZXMpKTsKIH0KIAotLy8gUmV0dXJucyBhbiBlbXB0eSBsaXN0IGlmIHRoZSBwcm9wZXJ0
eSBpcyBub3QgYSBzaG9ydGhhbmQKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0
aGFuZEZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKKy8vIFJldHVybnMgYW4g
ZW1wdHkgbGlzdCBpZiB0aGUgcHJvcGVydHkgaXMgbm90IGEgc2hvcnRoYW5kLgorU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCBzaG9ydGhhbmRGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
SUQpCiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0eUlEKSB7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmQ6CkBAIC02MTEsMTAgKzU1OSw2IEBAIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQmIHNob3J0aGFuZEZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKICAgICAg
ICAgcmV0dXJuIHdlYmtpdE1hc2tQb3NpdGlvblNob3J0aGFuZCgpOwogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXNrUmVwZWF0OgogICAgICAgICByZXR1cm4gd2Via2l0TWFza1JlcGVhdFNo
b3J0aGFuZCgpOwotI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHREZWNvcmF0aW9uOgotICAgICAgICByZXR1cm4gd2Via2l0VGV4dERlY29yYXRpb25T
aG9ydGhhbmQoKTsKLSNlbmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFz
aXM6CiAgICAgICAgIHJldHVybiB3ZWJraXRUZXh0RW1waGFzaXNTaG9ydGhhbmQoKTsKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZToKQEAgLTYyMywxMCArNTY3LDE2IEBAIGNv
bnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZEZvclByb3BlcnR5KENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuIHdlYmtpdFRyYW5zaXRpb25TaG9ydGhh
bmQoKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luOgogICAgICAg
ICByZXR1cm4gd2Via2l0VHJhbnNmb3JtT3JpZ2luU2hvcnRoYW5kKCk7Ci0gICAgZGVmYXVsdDog
ewotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQsIGVt
cHR5U2hvcnRoYW5kLCAoKSk7Ci0gICAgICAgIHJldHVybiBlbXB0eVNob3J0aGFuZDsKLSAgICB9
CisjaWYgRU5BQkxFKENTUzNfVEVYVCkKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dERl
Y29yYXRpb246CisgICAgICAgIHJldHVybiB3ZWJraXRUZXh0RGVjb3JhdGlvblNob3J0aGFuZCgp
OworI2VuZGlmCisjaWYgRU5BQkxFKFNWRykKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFya2VyOgor
ICAgICAgICByZXR1cm4gbWFya2VyU2hvcnRoYW5kKCk7CisjZW5kaWYKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCgpOwogICAgIH0KIH0KIApAQCAt
NjQyLDMyNiArNTkyLDIyNiBAQCBib29sIGlzRXhwYW5kZWRTaG9ydGhhbmQoQ1NTUHJvcGVydHlJ
RCBpZCkKICAgICByZXR1cm4gc2hvcnRoYW5kRm9yUHJvcGVydHkoaWQpLmxlbmd0aCgpOwogfQog
Ci0vLyBGSVhNRSA6IFdlIG5lZWQgdG8gZ2VuZXJhdGUgYWxsIG9mIHRoaXMuCi10eXBlZGVmIEhh
c2hNYXA8Q1NTUHJvcGVydHlJRCwgVmVjdG9yPGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQq
PiA+IGxvbmdoYW5kc01hcDsKLWNvbnN0IFZlY3Rvcjxjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kKj4gbWF0Y2hpbmdTaG9ydGhhbmRzRm9yTG9uZ2hhbmQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlEKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwobG9uZ2hhbmRzTWFwLCBtYXAsICgpKTsK
LSAgICBpZiAobWFwLmlzRW1wdHkoKSkgewotICAgICAgICBWZWN0b3I8Y29uc3QgU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCosIDE+IGJhY2tncm91bmQ7Ci0gICAgICAgIGJhY2tncm91bmQudW5jaGVj
a2VkQXBwZW5kKCZiYWNrZ3JvdW5kU2hvcnRoYW5kKCkpOwotICAgICAgICBtYXAuc2V0KENTU1By
b3BlcnR5QmFja2dyb3VuZEltYWdlLCBiYWNrZ3JvdW5kKTsKLSAgICAgICAgbWFwLnNldChDU1NQ
cm9wZXJ0eUJhY2tncm91bmRTaXplLCBiYWNrZ3JvdW5kKTsKLSAgICAgICAgbWFwLnNldChDU1NQ
cm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCBiYWNrZ3JvdW5kKTsKLSAgICAgICAgbWFwLnNl
dChDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIGJhY2tncm91bmQpOwotICAgICAgICBtYXAu
c2V0KENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAsIGJhY2tncm91bmQpOwotICAgICAgICBtYXAu
c2V0KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBiYWNrZ3JvdW5kKTsKLQotICAgICAgICBW
ZWN0b3I8Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCosIDI+IHBvc2l0aW9uU2hvcnRoYW5k
czsKLSAgICAgICAgcG9zaXRpb25TaG9ydGhhbmRzLnVuY2hlY2tlZEFwcGVuZCgmYmFja2dyb3Vu
ZFNob3J0aGFuZCgpKTsKLSAgICAgICAgcG9zaXRpb25TaG9ydGhhbmRzLnVuY2hlY2tlZEFwcGVu
ZCgmYmFja2dyb3VuZFBvc2l0aW9uU2hvcnRoYW5kKCkpOwotICAgICAgICBtYXAuc2V0KENTU1By
b3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgcG9zaXRpb25TaG9ydGhhbmRzKTsKLSAgICAgICAg
bWFwLnNldChDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblksIHBvc2l0aW9uU2hvcnRoYW5k
cyk7Ci0KLSAgICAgICAgVmVjdG9yPGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQqLCAyPiBy
ZXBlYXRTaG9ydGhhbmRzOwotICAgICAgICByZXBlYXRTaG9ydGhhbmRzLnVuY2hlY2tlZEFwcGVu
ZCgmYmFja2dyb3VuZFNob3J0aGFuZCgpKTsKLSAgICAgICAgcmVwZWF0U2hvcnRoYW5kcy51bmNo
ZWNrZWRBcHBlbmQoJmJhY2tncm91bmRSZXBlYXRTaG9ydGhhbmQoKSk7Ci0gICAgICAgIG1hcC5z
ZXQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgcmVwZWF0U2hvcnRoYW5kcyk7Ci0gICAg
ICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgcmVwZWF0U2hvcnRoYW5k
cyk7Ci0KLSAgICAgICAgVmVjdG9yPGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQqLCAzPiBi
b3R0b21XaWR0aFNob3J0aGFuZHM7Ci0gICAgICAgIGJvdHRvbVdpZHRoU2hvcnRoYW5kcy51bmNo
ZWNrZWRBcHBlbmQoJmJvcmRlclNob3J0aGFuZCgpKTsKLSAgICAgICAgYm90dG9tV2lkdGhTaG9y
dGhhbmRzLnVuY2hlY2tlZEFwcGVuZCgmYm9yZGVyQm90dG9tU2hvcnRoYW5kKCkpOwotICAgICAg
ICBib3R0b21XaWR0aFNob3J0aGFuZHMudW5jaGVja2VkQXBwZW5kKCZib3JkZXJXaWR0aFNob3J0
aGFuZCgpKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBi
b3R0b21XaWR0aFNob3J0aGFuZHMpOwotCi0gICAgICAgIFZlY3Rvcjxjb25zdCBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kKiwgMz4gdG9wQ29sb3JTaG9ydGhhbmRzOwotICAgICAgICB0b3BDb2xvclNo
b3J0aGFuZHMudW5jaGVja2VkQXBwZW5kKCZib3JkZXJTaG9ydGhhbmQoKSk7Ci0gICAgICAgIHRv
cENvbG9yU2hvcnRoYW5kcy51bmNoZWNrZWRBcHBlbmQoJmJvcmRlclRvcFNob3J0aGFuZCgpKTsK
LSAgICAgICAgdG9wQ29sb3JTaG9ydGhhbmRzLnVuY2hlY2tlZEFwcGVuZCgmYm9yZGVyQ29sb3JT
aG9ydGhhbmQoKSk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciwg
dG9wQ29sb3JTaG9ydGhhbmRzKTsKLQotICAgICAgICBWZWN0b3I8Y29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCosIDM+IHJpZ2h0Q29sb3JTaG9ydGhhbmRzOwotICAgICAgICByaWdodENvbG9y
U2hvcnRoYW5kcy51bmNoZWNrZWRBcHBlbmQoJmJvcmRlclNob3J0aGFuZCgpKTsKLSAgICAgICAg
cmlnaHRDb2xvclNob3J0aGFuZHMudW5jaGVja2VkQXBwZW5kKCZib3JkZXJSaWdodFNob3J0aGFu
ZCgpKTsKLSAgICAgICAgcmlnaHRDb2xvclNob3J0aGFuZHMudW5jaGVja2VkQXBwZW5kKCZib3Jk
ZXJDb2xvclNob3J0aGFuZCgpKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0Q29sb3IsIHJpZ2h0Q29sb3JTaG9ydGhhbmRzKTsKLQotICAgICAgICBWZWN0b3I8Y29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCosIDM+IGxlZnRDb2xvclNob3J0aGFuZHM7Ci0gICAgICAg
IGxlZnRDb2xvclNob3J0aGFuZHMudW5jaGVja2VkQXBwZW5kKCZib3JkZXJTaG9ydGhhbmQoKSk7
Ci0gICAgICAgIGxlZnRDb2xvclNob3J0aGFuZHMudW5jaGVja2VkQXBwZW5kKCZib3JkZXJMZWZ0
U2hvcnRoYW5kKCkpOwotICAgICAgICBsZWZ0Q29sb3JTaG9ydGhhbmRzLnVuY2hlY2tlZEFwcGVu
ZCgmYm9yZGVyQ29sb3JTaG9ydGhhbmQoKSk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0Q29sb3IsIGxlZnRDb2xvclNob3J0aGFuZHMpOwotCi0gICAgICAgIFZlY3Rvcjxj
b25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKiwgMz4gYm90dG9tQ29sb3JTaG9ydGhhbmRzOwot
ICAgICAgICBib3R0b21Db2xvclNob3J0aGFuZHMudW5jaGVja2VkQXBwZW5kKCZib3JkZXJTaG9y
dGhhbmQoKSk7Ci0gICAgICAgIGJvdHRvbUNvbG9yU2hvcnRoYW5kcy51bmNoZWNrZWRBcHBlbmQo
JmJvcmRlckJvdHRvbVNob3J0aGFuZCgpKTsKLSAgICAgICAgYm90dG9tQ29sb3JTaG9ydGhhbmRz
LnVuY2hlY2tlZEFwcGVuZCgmYm9yZGVyQ29sb3JTaG9ydGhhbmQoKSk7Ci0gICAgICAgIG1hcC5z
ZXQoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgYm90dG9tQ29sb3JTaG9ydGhhbmRzKTsK
LQotICAgICAgICBWZWN0b3I8Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCosIDE+IGJvcmRl
ckltYWdlOwotICAgICAgICBib3JkZXJJbWFnZS51bmNoZWNrZWRBcHBlbmQoJmJvcmRlckltYWdl
U2hvcnRoYW5kKCkpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTb3Vy
Y2UsIGJvcmRlckltYWdlKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlckltYWdl
U2xpY2UsIGJvcmRlckltYWdlKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlcklt
YWdlV2lkdGgsIGJvcmRlckltYWdlKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUJvcmRl
ckltYWdlT3V0c2V0LCBib3JkZXJJbWFnZSk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlC
b3JkZXJJbWFnZVJlcGVhdCwgYm9yZGVySW1hZ2UpOwotCi0gICAgICAgIFZlY3Rvcjxjb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kKiwgMz4gbGVmdFdpZHRoU2hvcnRoYW5kczsKLSAgICAgICAg
bGVmdFdpZHRoU2hvcnRoYW5kcy51bmNoZWNrZWRBcHBlbmQoJmJvcmRlclNob3J0aGFuZCgpKTsK
LSAgICAgICAgbGVmdFdpZHRoU2hvcnRoYW5kcy51bmNoZWNrZWRBcHBlbmQoJmJvcmRlckxlZnRT
aG9ydGhhbmQoKSk7Ci0gICAgICAgIGxlZnRXaWR0aFNob3J0aGFuZHMudW5jaGVja2VkQXBwZW5k
KCZib3JkZXJXaWR0aFNob3J0aGFuZCgpKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUJv
cmRlckxlZnRXaWR0aCwgbGVmdFdpZHRoU2hvcnRoYW5kcyk7Ci0KLSAgICAgICAgVmVjdG9yPGNv
bnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQqLCAyPiByYWRpdXNTaG9ydGhhbmRzOwotICAgICAg
ICByYWRpdXNTaG9ydGhhbmRzLnVuY2hlY2tlZEFwcGVuZCgmYm9yZGVyUmFkaXVzU2hvcnRoYW5k
KCkpOwotICAgICAgICByYWRpdXNTaG9ydGhhbmRzLnVuY2hlY2tlZEFwcGVuZCgmd2Via2l0Qm9y
ZGVyUmFkaXVzU2hvcnRoYW5kKCkpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5Qm9yZGVy
VG9wTGVmdFJhZGl1cywgcmFkaXVzU2hvcnRoYW5kcyk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJv
cGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cywgcmFkaXVzU2hvcnRoYW5kcyk7Ci0gICAgICAgIG1h
cC5zZXQoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cywgcmFkaXVzU2hvcnRoYW5k
cyk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBy
YWRpdXNTaG9ydGhhbmRzKTsKLQotICAgICAgICBWZWN0b3I8Y29uc3QgU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCosIDM+IHJpZ2h0V2lkdGhTaG9ydGhhbmRzOwotICAgICAgICByaWdodFdpZHRoU2hv
cnRoYW5kcy51bmNoZWNrZWRBcHBlbmQoJmJvcmRlclNob3J0aGFuZCgpKTsKLSAgICAgICAgcmln
aHRXaWR0aFNob3J0aGFuZHMudW5jaGVja2VkQXBwZW5kKCZib3JkZXJSaWdodFNob3J0aGFuZCgp
KTsKLSAgICAgICAgcmlnaHRXaWR0aFNob3J0aGFuZHMudW5jaGVja2VkQXBwZW5kKCZib3JkZXJX
aWR0aFNob3J0aGFuZCgpKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0
V2lkdGgsIHJpZ2h0V2lkdGhTaG9ydGhhbmRzKTsKLQotICAgICAgICBWZWN0b3I8Y29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCosIDE+IHNwYWNpbmdTaG9ydGhhbmQ7Ci0gICAgICAgIHNwYWNp
bmdTaG9ydGhhbmQudW5jaGVja2VkQXBwZW5kKCZib3JkZXJTcGFjaW5nU2hvcnRoYW5kKCkpOwot
ICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcs
IHNwYWNpbmdTaG9ydGhhbmQpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyVmVydGljYWxTcGFjaW5nLCBzcGFjaW5nU2hvcnRoYW5kKTsKLQotICAgICAgICBWZWN0b3I8
Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCosIDM+IHRvcFN0eWxlU2hvcnRoYW5kczsKLSAg
ICAgICAgdG9wU3R5bGVTaG9ydGhhbmRzLnVuY2hlY2tlZEFwcGVuZCgmYm9yZGVyU2hvcnRoYW5k
KCkpOwotICAgICAgICB0b3BTdHlsZVNob3J0aGFuZHMudW5jaGVja2VkQXBwZW5kKCZib3JkZXJU
b3BTaG9ydGhhbmQoKSk7Ci0gICAgICAgIHRvcFN0eWxlU2hvcnRoYW5kcy51bmNoZWNrZWRBcHBl
bmQoJmJvcmRlclN0eWxlU2hvcnRoYW5kKCkpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5
Qm9yZGVyVG9wU3R5bGUsIHRvcFN0eWxlU2hvcnRoYW5kcyk7Ci0KLSAgICAgICAgVmVjdG9yPGNv
bnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQqLCAzPiBib3R0b21TdHlsZVNob3J0aGFuZHM7Ci0g
ICAgICAgIGJvdHRvbVN0eWxlU2hvcnRoYW5kcy51bmNoZWNrZWRBcHBlbmQoJmJvcmRlclNob3J0
aGFuZCgpKTsKLSAgICAgICAgYm90dG9tU3R5bGVTaG9ydGhhbmRzLnVuY2hlY2tlZEFwcGVuZCgm
Ym9yZGVyQm90dG9tU2hvcnRoYW5kKCkpOwotICAgICAgICBib3R0b21TdHlsZVNob3J0aGFuZHMu
dW5jaGVja2VkQXBwZW5kKCZib3JkZXJTdHlsZVNob3J0aGFuZCgpKTsKLSAgICAgICAgbWFwLnNl
dChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBib3R0b21TdHlsZVNob3J0aGFuZHMpOwot
Ci0gICAgICAgIFZlY3Rvcjxjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKiwgMz4gbGVmdFN0
eWxlU2hvcnRoYW5kczsKLSAgICAgICAgbGVmdFN0eWxlU2hvcnRoYW5kcy51bmNoZWNrZWRBcHBl
bmQoJmJvcmRlclNob3J0aGFuZCgpKTsKLSAgICAgICAgbGVmdFN0eWxlU2hvcnRoYW5kcy51bmNo
ZWNrZWRBcHBlbmQoJmJvcmRlckxlZnRTaG9ydGhhbmQoKSk7Ci0gICAgICAgIGxlZnRTdHlsZVNo
b3J0aGFuZHMudW5jaGVja2VkQXBwZW5kKCZib3JkZXJTdHlsZVNob3J0aGFuZCgpKTsKLSAgICAg
ICAgbWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgbGVmdFN0eWxlU2hvcnRoYW5k
cyk7Ci0KLSAgICAgICAgVmVjdG9yPGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQqLCAzPiBy
aWdodFN0eWxlU2hvcnRoYW5kczsKLSAgICAgICAgcmlnaHRTdHlsZVNob3J0aGFuZHMudW5jaGVj
a2VkQXBwZW5kKCZib3JkZXJTaG9ydGhhbmQoKSk7Ci0gICAgICAgIHJpZ2h0U3R5bGVTaG9ydGhh
bmRzLnVuY2hlY2tlZEFwcGVuZCgmYm9yZGVyUmlnaHRTaG9ydGhhbmQoKSk7Ci0gICAgICAgIHJp
Z2h0U3R5bGVTaG9ydGhhbmRzLnVuY2hlY2tlZEFwcGVuZCgmYm9yZGVyU3R5bGVTaG9ydGhhbmQo
KSk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCByaWdodFN0
eWxlU2hvcnRoYW5kcyk7Ci0KLSAgICAgICAgVmVjdG9yPGNvbnN0IFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQqLCAzPiB0b3BXaWR0aFNob3J0aGFuZHM7Ci0gICAgICAgIHRvcFdpZHRoU2hvcnRoYW5k
cy51bmNoZWNrZWRBcHBlbmQoJmJvcmRlclNob3J0aGFuZCgpKTsKLSAgICAgICAgdG9wV2lkdGhT
aG9ydGhhbmRzLnVuY2hlY2tlZEFwcGVuZCgmYm9yZGVyVG9wU2hvcnRoYW5kKCkpOwotICAgICAg
ICB0b3BXaWR0aFNob3J0aGFuZHMudW5jaGVja2VkQXBwZW5kKCZib3JkZXJXaWR0aFNob3J0aGFu
ZCgpKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCB0b3BXaWR0
aFNob3J0aGFuZHMpOwotCi0gICAgICAgIFZlY3Rvcjxjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kKiwgMT4gbGlzdFN0eWxlOwotICAgICAgICBsaXN0U3R5bGUudW5jaGVja2VkQXBwZW5kKCZs
aXN0U3R5bGVTaG9ydGhhbmQoKSk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlMaXN0U3R5
bGVUeXBlLCBsaXN0U3R5bGUpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5TGlzdFN0eWxl
UG9zaXRpb24sIGxpc3RTdHlsZSk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlMaXN0U3R5
bGVJbWFnZSwgbGlzdFN0eWxlKTsKLQotICAgICAgICBWZWN0b3I8Y29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCosIDE+IGZvbnQ7Ci0gICAgICAgIGZvbnQudW5jaGVja2VkQXBwZW5kKCZmb250
U2hvcnRoYW5kKCkpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgZm9u
dCk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlGb250U2l6ZSwgZm9udCk7Ci0gICAgICAg
IG1hcC5zZXQoQ1NTUHJvcGVydHlGb250U3R5bGUsIGZvbnQpOwotICAgICAgICBtYXAuc2V0KENT
U1Byb3BlcnR5Rm9udFZhcmlhbnQsIGZvbnQpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5
Rm9udFdlaWdodCwgZm9udCk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0
LCBmb250KTsKLQotICAgICAgICBWZWN0b3I8Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCos
IDE+IG1hcmdpbjsKLSAgICAgICAgbWFyZ2luLnVuY2hlY2tlZEFwcGVuZCgmbWFyZ2luU2hvcnRo
YW5kKCkpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5TWFyZ2luVG9wLCBtYXJnaW4pOwot
ICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIG1hcmdpbik7Ci0gICAgICAg
IG1hcC5zZXQoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIG1hcmdpbik7Ci0gICAgICAgIG1hcC5z
ZXQoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBtYXJnaW4pOworc3RhdGljIFZlY3RvcjxTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kPiBtYWtlVmVjdG9yKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQm
IGEpCit7CisgICAgcmV0dXJuIFZlY3RvcjxTdHlsZVByb3BlcnR5U2hvcnRoYW5kPigxLCBhKTsK
K30KIAotI2lmIEVOQUJMRShTVkcpCi0gICAgICAgIFZlY3Rvcjxjb25zdCBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kKiwgMT4gbWFya2VyOwotICAgICAgICBtYXJrZXIudW5jaGVja2VkQXBwZW5kKCZt
YXJrZXJTaG9ydGhhbmQoKSk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlNYXJrZXJTdGFy
dCwgbWFya2VyKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eU1hcmtlck1pZCwgbWFya2Vy
KTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eU1hcmtlckVuZCwgbWFya2VyKTsKLSNlbmRp
Zgorc3RhdGljIFZlY3RvcjxTdHlsZVByb3BlcnR5U2hvcnRoYW5kPiBtYWtlVmVjdG9yKGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGEsIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQm
IGIpCit7CisgICAgVmVjdG9yPFN0eWxlUHJvcGVydHlTaG9ydGhhbmQ+IHZlY3RvcjsKKyAgICB2
ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgyKTsKKyAgICB2ZWN0b3IudW5jaGVja2VkQXBw
ZW5kKGEpOworICAgIHZlY3Rvci51bmNoZWNrZWRBcHBlbmQoYik7CisgICAgcmV0dXJuIHZlY3Rv
cjsKK30KIAotICAgICAgICBWZWN0b3I8Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCosIDE+
IG91dGxpbmU7Ci0gICAgICAgIG91dGxpbmUudW5jaGVja2VkQXBwZW5kKCZvdXRsaW5lU2hvcnRo
YW5kKCkpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLCBvdXRsaW5l
KTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwgb3V0bGluZSk7Ci0g
ICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgsIG91dGxpbmUpOwotCi0gICAg
ICAgIFZlY3Rvcjxjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKiwgMT4gcGFkZGluZzsKLSAg
ICAgICAgcGFkZGluZy51bmNoZWNrZWRBcHBlbmQoJnBhZGRpbmdTaG9ydGhhbmQoKSk7Ci0gICAg
ICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlQYWRkaW5nVG9wLCBwYWRkaW5nKTsKLSAgICAgICAgbWFw
LnNldChDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgcGFkZGluZyk7Ci0gICAgICAgIG1hcC5zZXQo
Q1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBwYWRkaW5nKTsKLSAgICAgICAgbWFwLnNldChDU1NQ
cm9wZXJ0eVBhZGRpbmdMZWZ0LCBwYWRkaW5nKTsKLQotICAgICAgICBWZWN0b3I8Y29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCosIDE+IG92ZXJmbG93OwotICAgICAgICBvdmVyZmxvdy51bmNo
ZWNrZWRBcHBlbmQoJm92ZXJmbG93U2hvcnRoYW5kKCkpOwotICAgICAgICBtYXAuc2V0KENTU1By
b3BlcnR5T3ZlcmZsb3dYLCBvdmVyZmxvdyk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlP
dmVyZmxvd1ksIG92ZXJmbG93KTsKLQotICAgICAgICBWZWN0b3I8Y29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCosIDE+IHRyYW5zaXRpb247Ci0gICAgICAgIHRyYW5zaXRpb24udW5jaGVja2Vk
QXBwZW5kKCZ0cmFuc2l0aW9uU2hvcnRoYW5kKCkpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3Bl
cnR5VHJhbnNpdGlvblByb3BlcnR5LCB0cmFuc2l0aW9uKTsKLSAgICAgICAgbWFwLnNldChDU1NQ
cm9wZXJ0eVRyYW5zaXRpb25EdXJhdGlvbiwgdHJhbnNpdGlvbik7Ci0gICAgICAgIG1hcC5zZXQo
Q1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sIHRyYW5zaXRpb24pOwotICAgICAg
ICBtYXAuc2V0KENTU1Byb3BlcnR5VHJhbnNpdGlvbkRlbGF5LCB0cmFuc2l0aW9uKTsKLQotICAg
ICAgICBWZWN0b3I8Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCosIDE+IGFuaW1hdGlvbjsK
LSAgICAgICAgYW5pbWF0aW9uLnVuY2hlY2tlZEFwcGVuZCgmd2Via2l0QW5pbWF0aW9uU2hvcnRo
YW5kKCkpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwg
YW5pbWF0aW9uKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1
cmF0aW9uLCBhbmltYXRpb24pOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uVGltaW5nRnVuY3Rpb24sIGFuaW1hdGlvbik7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25EZWxheSwgYW5pbWF0aW9uKTsKLSAgICAgICAgbWFwLnNldChD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LCBhbmltYXRpb24pOwotICAg
ICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uLCBhbmltYXRp
b24pOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUs
IGFuaW1hdGlvbik7Ci0KLSAgICAgICAgVmVjdG9yPGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQqLCAxPiBib3JkZXJBZnRlcjsKLSAgICAgICAgYm9yZGVyQWZ0ZXIudW5jaGVja2VkQXBwZW5k
KCZ3ZWJraXRCb3JkZXJBZnRlclNob3J0aGFuZCgpKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGgsIGJvcmRlckFmdGVyKTsKLSAgICAgICAgbWFwLnNl
dChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUsIGJvcmRlckFmdGVyKTsKLSAgICAg
ICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IsIGJvcmRlckFmdGVy
KTsKLQotICAgICAgICBWZWN0b3I8Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCosIDE+IGJv
cmRlckJlZm9yZTsKLSAgICAgICAgYm9yZGVyQmVmb3JlLnVuY2hlY2tlZEFwcGVuZCgmd2Via2l0
Qm9yZGVyQmVmb3JlU2hvcnRoYW5kKCkpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyQmVmb3JlV2lkdGgsIGJvcmRlckJlZm9yZSk7Ci0gICAgICAgIG1hcC5zZXQoQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZSwgYm9yZGVyQmVmb3JlKTsKLSAgICAgICAg
bWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yLCBib3JkZXJCZWZvcmUp
OwotCi0gICAgICAgIFZlY3Rvcjxjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKiwgMT4gYm9y
ZGVyRW5kOwotICAgICAgICBib3JkZXJFbmQudW5jaGVja2VkQXBwZW5kKCZ3ZWJraXRCb3JkZXJF
bmRTaG9ydGhhbmQoKSk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmRXaWR0aCwgYm9yZGVyRW5kKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckVuZFN0eWxlLCBib3JkZXJFbmQpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyRW5kQ29sb3IsIGJvcmRlckVuZCk7Ci0KLSAgICAgICAgVmVjdG9yPGNvbnN0IFN0
eWxlUHJvcGVydHlTaG9ydGhhbmQqLCAxPiBib3JkZXJTdGFydDsKLSAgICAgICAgYm9yZGVyU3Rh
cnQudW5jaGVja2VkQXBwZW5kKCZ3ZWJraXRCb3JkZXJTdGFydFNob3J0aGFuZCgpKTsKLSAgICAg
ICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgsIGJvcmRlclN0YXJ0
KTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUsIGJv
cmRlclN0YXJ0KTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0
Q29sb3IsIGJvcmRlclN0YXJ0KTsKLQotICAgICAgICBWZWN0b3I8Y29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCosIDE+IGNvbHVtbnM7Ci0gICAgICAgIGNvbHVtbnMudW5jaGVja2VkQXBwZW5k
KCZ3ZWJraXRDb2x1bW5zU2hvcnRoYW5kKCkpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uV2lkdGgsIGNvbHVtbnMpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uQ291bnQsIGNvbHVtbnMpOwotCi0gICAgICAgIFZlY3Rvcjxjb25zdCBTdHls
ZVByb3BlcnR5U2hvcnRoYW5kKiwgMT4gY29sdW1uUnVsZTsKLSAgICAgICAgY29sdW1uUnVsZS51
bmNoZWNrZWRBcHBlbmQoJndlYmtpdENvbHVtblJ1bGVTaG9ydGhhbmQoKSk7Ci0gICAgICAgIG1h
cC5zZXQoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIGNvbHVtblJ1bGUpOwotICAg
ICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlLCBjb2x1bW5SdWxl
KTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciwgY29s
dW1uUnVsZSk7Ci0KLSAgICAgICAgVmVjdG9yPGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQq
LCAxPiBmbGV4OwotICAgICAgICBmbGV4LnVuY2hlY2tlZEFwcGVuZCgmd2Via2l0RmxleFNob3J0
aGFuZCgpKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEZsZXhHcm93LCBmbGV4
KTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEZsZXhTaHJpbmssIGZsZXgpOwot
ICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0RmxleEJhc2lzLCBmbGV4KTsKLQotICAg
ICAgICBWZWN0b3I8Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCosIDE+IGZsZXhGbG93Owot
ICAgICAgICBmbGV4Rmxvdy51bmNoZWNrZWRBcHBlbmQoJndlYmtpdEZsZXhGbG93U2hvcnRoYW5k
KCkpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbiwgZmxl
eEZsb3cpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0RmxleFdyYXAsIGZsZXhG
bG93KTsKLQotICAgICAgICBWZWN0b3I8Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCosIDE+
IGdyaWRDb2x1bW47Ci0gICAgICAgIGdyaWRDb2x1bW4udW5jaGVja2VkQXBwZW5kKCZ3ZWJraXRH
cmlkQ29sdW1uU2hvcnRoYW5kKCkpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0
R3JpZENvbHVtblN0YXJ0LCBncmlkQ29sdW1uKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0
eVdlYmtpdEdyaWRDb2x1bW5FbmQsIGdyaWRDb2x1bW4pOwotCi0gICAgICAgIFZlY3Rvcjxjb25z
dCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKiwgMT4gZ3JpZFJvdzsKLSAgICAgICAgZ3JpZFJvdy51
bmNoZWNrZWRBcHBlbmQoJndlYmtpdEdyaWRSb3dTaG9ydGhhbmQoKSk7Ci0gICAgICAgIG1hcC5z
ZXQoQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93U3RhcnQsIGdyaWRSb3cpOwotICAgICAgICBtYXAu
c2V0KENTU1Byb3BlcnR5V2Via2l0R3JpZFJvd0VuZCwgZ3JpZFJvdyk7Ci0KLSAgICAgICAgVmVj
dG9yPGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQqLCAxPiBtYXJnaW5Db2xsYXBzZTsKLSAg
ICAgICAgbWFyZ2luQ29sbGFwc2UudW5jaGVja2VkQXBwZW5kKCZ3ZWJraXRNYXJnaW5Db2xsYXBz
ZVNob3J0aGFuZCgpKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJl
Zm9yZUNvbGxhcHNlLCBtYXJnaW5Db2xsYXBzZSk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVy
dHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlLCBtYXJnaW5Db2xsYXBzZSk7Ci0KLSAgICAgICAg
VmVjdG9yPGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQqLCAxPiBtYXJxdWVlOwotICAgICAg
ICBtYXJxdWVlLnVuY2hlY2tlZEFwcGVuZCgmd2Via2l0TWFycXVlZVNob3J0aGFuZCgpKTsKLSAg
ICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIG1hcnF1ZWUp
OwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudCwgbWFy
cXVlZSk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlv
biwgbWFycXVlZSk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5
bGUsIG1hcnF1ZWUpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNw
ZWVkLCBtYXJxdWVlKTsKLQotICAgICAgICBWZWN0b3I8Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCosIDE+IG1hc2s7Ci0gICAgICAgIG1hc2sudW5jaGVja2VkQXBwZW5kKCZ3ZWJraXRNYXNr
U2hvcnRoYW5kKCkpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdl
LCBtYXNrKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTb3VyY2VUeXBl
LCBtYXNrKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplLCBtYXNr
KTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIG1hc2spOwot
ICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXAsIG1hc2spOwotCi0gICAg
ICAgIFZlY3Rvcjxjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKiwgMT4gbWFza1Bvc2l0aW9u
OwotICAgICAgICBtYXNrUG9zaXRpb24udW5jaGVja2VkQXBwZW5kKCZ3ZWJraXRNYXNrUG9zaXRp
b25TaG9ydGhhbmQoKSk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9z
aXRpb25YLCBtYXNrUG9zaXRpb24pOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0
TWFza1Bvc2l0aW9uWSwgbWFza1Bvc2l0aW9uKTsKLQotICAgICAgICBWZWN0b3I8Y29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCosIDE+IG1hc2tSZXBlYXQ7Ci0gICAgICAgIG1hc2tSZXBlYXQu
dW5jaGVja2VkQXBwZW5kKCZ3ZWJraXRNYXNrUmVwZWF0U2hvcnRoYW5kKCkpOwotICAgICAgICBt
YXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIG1hc2tSZXBlYXQpOwotICAgICAg
ICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFksIG1hc2tSZXBlYXQpOworc3Rh
dGljIFZlY3RvcjxTdHlsZVByb3BlcnR5U2hvcnRoYW5kPiBtYWtlVmVjdG9yKGNvbnN0IFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQmIGEsIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGIsIGNv
bnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGMpCit7CisgICAgVmVjdG9yPFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQ+IHZlY3RvcjsKKyAgICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgz
KTsKKyAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKGEpOworICAgIHZlY3Rvci51bmNoZWNrZWRB
cHBlbmQoYik7CisgICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZChjKTsKKyAgICByZXR1cm4gdmVj
dG9yOworfQogCitWZWN0b3I8U3R5bGVQcm9wZXJ0eVNob3J0aGFuZD4gbWF0Y2hpbmdTaG9ydGhh
bmRzRm9yTG9uZ2hhbmQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQoreworICAgIHN3aXRjaCAo
cHJvcGVydHlJRCkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQXR0YWNobWVudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvcjoKKyAgICAgICAgcmV0dXJuIG1ha2VWZWN0b3IoYmFja2dyb3VuZFNo
b3J0aGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWToKKyAgICAgICAgcmV0dXJuIG1h
a2VWZWN0b3IoYmFja2dyb3VuZFNob3J0aGFuZCgpLCBiYWNrZ3JvdW5kUG9zaXRpb25TaG9ydGhh
bmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WToKKyAgICAgICAgcmV0dXJuIG1ha2VWZWN0b3Io
YmFja2dyb3VuZFNob3J0aGFuZCgpLCBiYWNrZ3JvdW5kUmVwZWF0U2hvcnRoYW5kKCkpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aDoKKyAgICAgICAgcmV0dXJuIG1ha2VW
ZWN0b3IoYm9yZGVyU2hvcnRoYW5kKCksIGJvcmRlckJvdHRvbVNob3J0aGFuZCgpLCBib3JkZXJX
aWR0aFNob3J0aGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I6Cisg
ICAgICAgIHJldHVybiBtYWtlVmVjdG9yKGJvcmRlclNob3J0aGFuZCgpLCBib3JkZXJUb3BTaG9y
dGhhbmQoKSwgYm9yZGVyQ29sb3JTaG9ydGhhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0Q29sb3I6CisgICAgICAgIHJldHVybiBtYWtlVmVjdG9yKGJvcmRlclNob3J0aGFu
ZCgpLCBib3JkZXJSaWdodFNob3J0aGFuZCgpLCBib3JkZXJDb2xvclNob3J0aGFuZCgpKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOgorICAgICAgICByZXR1cm4gbWFrZVZl
Y3Rvcihib3JkZXJTaG9ydGhhbmQoKSwgYm9yZGVyTGVmdFNob3J0aGFuZCgpLCBib3JkZXJDb2xv
clNob3J0aGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3I6Cisg
ICAgICAgIHJldHVybiBtYWtlVmVjdG9yKGJvcmRlclNob3J0aGFuZCgpLCBib3JkZXJCb3R0b21T
aG9ydGhhbmQoKSwgYm9yZGVyQ29sb3JTaG9ydGhhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlckltYWdlU291cmNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNsaWNl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVdpZHRoOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJJbWFnZU91dHNldDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VS
ZXBlYXQ6CisgICAgICAgIHJldHVybiBtYWtlVmVjdG9yKGJvcmRlckltYWdlU2hvcnRoYW5kKCkp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGg6CisgICAgICAgIHJldHVybiBt
YWtlVmVjdG9yKGJvcmRlclNob3J0aGFuZCgpLCBib3JkZXJMZWZ0U2hvcnRoYW5kKCksIGJvcmRl
cldpZHRoU2hvcnRoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFk
aXVzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1czoKKyAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbUxlZnRSYWRpdXM6CisgICAgICAgIHJldHVybiBtYWtlVmVjdG9yKGJvcmRl
clJhZGl1c1Nob3J0aGFuZCgpLCB3ZWJraXRCb3JkZXJSYWRpdXNTaG9ydGhhbmQoKSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGg6CisgICAgICAgIHJldHVybiBtYWtlVmVj
dG9yKGJvcmRlclNob3J0aGFuZCgpLCBib3JkZXJSaWdodFNob3J0aGFuZCgpLCBib3JkZXJXaWR0
aFNob3J0aGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRh
bFNwYWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2lu
ZzoKKyAgICAgICAgcmV0dXJuIG1ha2VWZWN0b3IoYm9yZGVyU3BhY2luZ1Nob3J0aGFuZCgpKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGU6CisgICAgICAgIHJldHVybiBtYWtl
VmVjdG9yKGJvcmRlclNob3J0aGFuZCgpLCBib3JkZXJUb3BTaG9ydGhhbmQoKSwgYm9yZGVyU3R5
bGVTaG9ydGhhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlOgor
ICAgICAgICByZXR1cm4gbWFrZVZlY3Rvcihib3JkZXJTaG9ydGhhbmQoKSwgYm9yZGVyQm90dG9t
U2hvcnRoYW5kKCksIGJvcmRlclN0eWxlU2hvcnRoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0U3R5bGU6CisgICAgICAgIHJldHVybiBtYWtlVmVjdG9yKGJvcmRlclNob3J0
aGFuZCgpLCBib3JkZXJMZWZ0U2hvcnRoYW5kKCksIGJvcmRlclN0eWxlU2hvcnRoYW5kKCkpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOgorICAgICAgICByZXR1cm4gbWFr
ZVZlY3Rvcihib3JkZXJTaG9ydGhhbmQoKSwgYm9yZGVyUmlnaHRTaG9ydGhhbmQoKSwgYm9yZGVy
U3R5bGVTaG9ydGhhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoOgor
ICAgICAgICByZXR1cm4gbWFrZVZlY3Rvcihib3JkZXJTaG9ydGhhbmQoKSwgYm9yZGVyVG9wU2hv
cnRoYW5kKCksIGJvcmRlcldpZHRoU2hvcnRoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlM
aXN0U3R5bGVUeXBlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2U6CisgICAgICAgIHJldHVybiBtYWtlVmVj
dG9yKGxpc3RTdHlsZVNob3J0aGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZhbWls
eToKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZv
bnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUZvbnRXZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQ6CisgICAg
ICAgIHJldHVybiBtYWtlVmVjdG9yKGZvbnRTaG9ydGhhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eU1hcmdpblRvcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQ6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbToKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luTGVm
dDoKKyAgICAgICAgcmV0dXJuIG1ha2VWZWN0b3IobWFyZ2luU2hvcnRoYW5kKCkpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVT
dHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoOgorICAgICAgICByZXR1cm4g
bWFrZVZlY3RvcihvdXRsaW5lU2hvcnRoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRk
aW5nVG9wOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQ6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVBhZGRpbmdCb3R0b206CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0Ogor
ICAgICAgICByZXR1cm4gbWFrZVZlY3RvcihwYWRkaW5nU2hvcnRoYW5kKCkpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlPdmVyZmxvd1g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WToKKyAg
ICAgICAgcmV0dXJuIG1ha2VWZWN0b3Iob3ZlcmZsb3dTaG9ydGhhbmQoKSk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVRyYW5zaXRpb25Qcm9wZXJ0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNp
dGlvbkR1cmF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rp
b246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25EZWxheToKKyAgICAgICAgcmV0dXJu
IG1ha2VWZWN0b3IodHJhbnNpdGlvblNob3J0aGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uTmFtZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
RHVyYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0
aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheToKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uRmlsbE1vZGU6CisgICAgICAgIHJldHVybiBtYWtlVmVjdG9yKHdlYmtpdEFu
aW1hdGlvblNob3J0aGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0
ZXJXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcjoKKyAgICAgICAgcmV0dXJu
IG1ha2VWZWN0b3Iod2Via2l0Qm9yZGVyQWZ0ZXJTaG9ydGhhbmQoKSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJCZWZvcmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVm
b3JlQ29sb3I6CisgICAgICAgIHJldHVybiBtYWtlVmVjdG9yKHdlYmtpdEJvcmRlckJlZm9yZVNo
b3J0aGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGg6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcjoKKyAgICAgICAgcmV0dXJuIG1ha2VWZWN0b3Iod2Vi
a2l0Qm9yZGVyRW5kU2hvcnRoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJTdGFydFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yOgorICAgICAgICBy
ZXR1cm4gbWFrZVZlY3Rvcih3ZWJraXRCb3JkZXJTdGFydFNob3J0aGFuZCgpKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkNvdW50OgorICAgICAgICByZXR1cm4gbWFrZVZlY3Rvcih3ZWJraXRDb2x1bW5zU2hv
cnRoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGg6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yOgorICAgICAgICByZXR1cm4gbWFrZVZlY3Rvcih3
ZWJraXRDb2x1bW5SdWxlU2hvcnRoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRG
bGV4R3JvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleFNocmluazoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0RmxleEJhc2lzOgorICAgICAgICByZXR1cm4gbWFrZVZlY3Rvcih3
ZWJraXRGbGV4U2hvcnRoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGly
ZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcDoKKyAgICAgICAgcmV0
dXJuIG1ha2VWZWN0b3Iod2Via2l0RmxleEZsb3dTaG9ydGhhbmQoKSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEdyaWRDb2x1bW5TdGFydDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
R3JpZENvbHVtbkVuZDoKKyAgICAgICAgcmV0dXJuIG1ha2VWZWN0b3Iod2Via2l0R3JpZENvbHVt
blNob3J0aGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZFJvd1N0YXJ0Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93RW5kOgorICAgICAgICByZXR1cm4gbWFr
ZVZlY3Rvcih3ZWJraXRHcmlkUm93U2hvcnRoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQWZ0ZXJDb2xsYXBzZToKKyAgICAgICAgcmV0dXJuIG1ha2VWZWN0b3Iod2Via2l0TWFyZ2lu
Q29sbGFwc2VTaG9ydGhhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVE
aXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQ6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
cnF1ZWVTcGVlZDoKKyAgICAgICAgcmV0dXJuIG1ha2VWZWN0b3Iod2Via2l0TWFycXVlZVNob3J0
aGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrU291cmNlVHlwZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1NpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW46CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwOgorICAgICAgICByZXR1cm4gbWFrZVZlY3Rv
cih3ZWJraXRNYXNrU2hvcnRoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
UG9zaXRpb25YOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOgorICAg
ICAgICByZXR1cm4gbWFrZVZlY3Rvcih3ZWJraXRNYXNrUG9zaXRpb25TaG9ydGhhbmQoKSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUmVwZWF0WToKKyAgICAgICAgcmV0dXJuIG1ha2VWZWN0b3Iod2Via2l0TWFz
a1JlcGVhdFNob3J0aGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhh
c2lzU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yOgor
ICAgICAgICByZXR1cm4gbWFrZVZlY3Rvcih3ZWJraXRUZXh0RW1waGFzaXNTaG9ydGhhbmQoKSk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yOgorICAgICAgICByZXR1cm4gbWFrZVZlY3Rv
cih3ZWJraXRUZXh0U3Ryb2tlU2hvcnRoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2l0aW9uUHJvcGVydHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRp
b25EdXJhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1
bmN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXk6CisgICAg
ICAgIHJldHVybiBtYWtlVmVjdG9yKHdlYmtpdFRyYW5zaXRpb25TaG9ydGhhbmQoKSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblg6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybU9yaWdpblo6CisgICAgICAgIHJldHVybiBtYWtlVmVjdG9yKHdlYmtpdFRyYW5zZm9y
bU9yaWdpblNob3J0aGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluV2lkdGg6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eU1heFdpZHRoOgorICAgICAgICByZXR1cm4gbWFrZVZlY3Rvcih3aWR0
aFNob3J0aGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlNYXhIZWlnaHQ6CisgICAgICAgIHJldHVybiBtYWtlVmVjdG9yKGhlaWdodFNo
b3J0aGFuZCgpKTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgICAgICBWZWN0b3I8Y29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCosIDM+IHRleHREZWNvcmF0aW9uOwotICAgICAgICB0ZXh0
RGVjb3JhdGlvbi51bmNoZWNrZWRBcHBlbmQoJndlYmtpdFRleHREZWNvcmF0aW9uU2hvcnRoYW5k
KCkpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25MaW5l
LCB0ZXh0RGVjb3JhdGlvbik7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvblN0eWxlLCB0ZXh0RGVjb3JhdGlvbik7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJv
cGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yLCB0ZXh0RGVjb3JhdGlvbik7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uTGluZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dERlY29yYXRpb25TdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VGV4dERlY29yYXRpb25Db2xvcjoKKyAgICAgICAgcmV0dXJuIG1ha2VWZWN0b3Iod2Via2l0VGV4
dERlY29yYXRpb25TaG9ydGhhbmQoKSk7CiAjZW5kaWYKLQotICAgICAgICBWZWN0b3I8Y29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCosIDE+IHRleHRFbXBoYXNpczsKLSAgICAgICAgdGV4dEVt
cGhhc2lzLnVuY2hlY2tlZEFwcGVuZCgmd2Via2l0VGV4dEVtcGhhc2lzU2hvcnRoYW5kKCkpOwot
ICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUsIHRleHRF
bXBoYXNpcyk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXND
b2xvciwgdGV4dEVtcGhhc2lzKTsKLQotICAgICAgICBWZWN0b3I8Y29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCosIDE+IHRleHRTdHJva2U7Ci0gICAgICAgIHRleHRTdHJva2UudW5jaGVja2Vk
QXBwZW5kKCZ3ZWJraXRUZXh0U3Ryb2tlU2hvcnRoYW5kKCkpOwotICAgICAgICBtYXAuc2V0KENT
U1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCB0ZXh0U3Ryb2tlKTsKLSAgICAgICAgbWFw
LnNldChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciwgdGV4dFN0cm9rZSk7Ci0KLSAg
ICAgICAgVmVjdG9yPGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQqLCAxPiB3ZWJraXRUcmFu
c2l0aW9uOwotICAgICAgICB3ZWJraXRUcmFuc2l0aW9uLnVuY2hlY2tlZEFwcGVuZCgmd2Via2l0
VHJhbnNpdGlvblNob3J0aGFuZCgpKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb25Qcm9wZXJ0eSwgd2Via2l0VHJhbnNpdGlvbik7Ci0gICAgICAgIG1hcC5zZXQo
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sIHdlYmtpdFRyYW5zaXRpb24pOwot
ICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9u
LCB3ZWJraXRUcmFuc2l0aW9uKTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zaXRpb25EZWxheSwgd2Via2l0VHJhbnNpdGlvbik7Ci0KLSAgICAgICAgVmVjdG9yPGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQqLCAxPiB0cmFuc2Zvcm07Ci0gICAgICAgIHRyYW5zZm9y
bS51bmNoZWNrZWRBcHBlbmQoJndlYmtpdFRyYW5zZm9ybU9yaWdpblNob3J0aGFuZCgpKTsKLSAg
ICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsIHRyYW5zZm9y
bSk7Ci0gICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLCB0
cmFuc2Zvcm0pOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3Jp
Z2luWiwgdHJhbnNmb3JtKTsKLQotICAgICAgICBWZWN0b3I8Y29uc3QgU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCosIDE+IHdpZHRoOwotICAgICAgICB3aWR0aC51bmNoZWNrZWRBcHBlbmQoJndpZHRo
U2hvcnRoYW5kKCkpOwotICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5TWluV2lkdGgsIHdpZHRo
KTsKLSAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eU1heFdpZHRoLCB3aWR0aCk7Ci0KLSAgICAg
ICAgVmVjdG9yPGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQqLCAxPiBoZWlnaHQ7Ci0gICAg
ICAgIGhlaWdodC51bmNoZWNrZWRBcHBlbmQoJmhlaWdodFNob3J0aGFuZCgpKTsKLSAgICAgICAg
bWFwLnNldChDU1NQcm9wZXJ0eU1pbkhlaWdodCwgaGVpZ2h0KTsKLSAgICAgICAgbWFwLnNldChD
U1NQcm9wZXJ0eU1heEhlaWdodCwgaGVpZ2h0KTsKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGNhc2Ug
Q1NTUHJvcGVydHlNYXJrZXJTdGFydDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFya2VyTWlkOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJFbmQ6CisgICAgICAgIHJldHVybiBtYWtlVmVjdG9y
KG1hcmtlclNob3J0aGFuZCgpKTsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFr
OwogICAgIH0KLSAgICByZXR1cm4gbWFwLmdldChwcm9wZXJ0eUlEKTsKKworICAgIHJldHVybiBW
ZWN0b3I8U3R5bGVQcm9wZXJ0eVNob3J0aGFuZD4oKTsKIH0KIAotdW5zaWduZWQgaW5kZXhPZlNo
b3J0aGFuZEZvckxvbmdoYW5kKENTU1Byb3BlcnR5SUQgc2hvcnRoYW5kSUQsIGNvbnN0IFZlY3Rv
cjxjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKj4mIHNob3J0aGFuZHMpCit1bnNpZ25lZCBp
bmRleE9mU2hvcnRoYW5kRm9yTG9uZ2hhbmQoQ1NTUHJvcGVydHlJRCBzaG9ydGhhbmRJRCwgY29u
c3QgVmVjdG9yPFN0eWxlUHJvcGVydHlTaG9ydGhhbmQ+JiBzaG9ydGhhbmRzKQogewotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaG9ydGhhbmRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGlmIChzaG9ydGhhbmRzLmF0KGkpLT5pZCgpID09IHNob3J0aGFuZElEKQorICAgIGZvciAodW5z
aWduZWQgaSA9IDAsIHNpemUgPSBzaG9ydGhhbmRzLnNpemUoKTsgaSA8IHNpemU7ICsraSkgewor
ICAgICAgICBpZiAoc2hvcnRoYW5kc1tpXS5pZCgpID09IHNob3J0aGFuZElEKQogICAgICAgICAg
ICAgcmV0dXJuIGk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgKaW5kZXggM2Y1NjE2MzUyOTlkYTFl
MzY1MWIxYzY2ZDFlMTAzNTdhYjhlNmJhOC4uZGZjOTBiY2I0OGEzYjgzOTFjNzM1ZGM3ZWE2MTdj
NzkzYWJlMzM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlT
aG9ydGhhbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZC5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIChDKSAxOTk5LTIwMDMgTGFycyBLbm9sbCAoa25v
bGxAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDEzIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKQEAgLTI4LDcgKzI4LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCgpCiAgICAgICAgIDogbV9wcm9w
ZXJ0aWVzKDApCkBAIC00Niw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBDU1NQcm9wZXJ0
eUlEKiBwcm9wZXJ0aWVzLCBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKiogcHJvcGVydGll
c0ZvckluaXRpYWxpemF0aW9uLCB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzKQorICAgIFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCBpZCwgY29uc3QgQ1NTUHJvcGVydHlJRCogcHJv
cGVydGllcywgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCogcHJvcGVydGllc0ZvckluaXRp
YWxpemF0aW9uLCB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzKQogICAgICAgICA6IG1fcHJvcGVydGll
cyhwcm9wZXJ0aWVzKQogICAgICAgICAsIG1fcHJvcGVydGllc0ZvckluaXRpYWxpemF0aW9uKHBy
b3BlcnRpZXNGb3JJbml0aWFsaXphdGlvbikKICAgICAgICAgLCBtX2xlbmd0aChudW1Qcm9wZXJ0
aWVzKQpAQCAtNTUsNzcgKzU0LDc4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBjb25zdCBDU1NQ
cm9wZXJ0eUlEKiBwcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzOyB9Ci0g
ICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCoqIHByb3BlcnRpZXNGb3JJbml0aWFsaXph
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllc0ZvckluaXRpYWxpemF0aW9uOyB9Cisg
ICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCogcHJvcGVydGllc0ZvckluaXRpYWxpemF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzRm9ySW5pdGlhbGl6YXRpb247IH0KICAg
ICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgIENTU1By
b3BlcnR5SUQgaWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3J0aGFuZElEOyB9CiAKIHByaXZhdGU6
CiAgICAgY29uc3QgQ1NTUHJvcGVydHlJRCogbV9wcm9wZXJ0aWVzOwotICAgIGNvbnN0IFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQqKiBtX3Byb3BlcnRpZXNGb3JJbml0aWFsaXphdGlvbjsKKyAgICBj
b25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kKiBtX3Byb3BlcnRpZXNGb3JJbml0aWFsaXphdGlv
bjsKICAgICB1bnNpZ25lZCBtX2xlbmd0aDsKICAgICBDU1NQcm9wZXJ0eUlEIG1fc2hvcnRoYW5k
SUQ7CiB9OwogCi1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBiYWNrZ3JvdW5kU2hvcnRo
YW5kKCk7Ci1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBiYWNrZ3JvdW5kUG9zaXRpb25T
aG9ydGhhbmQoKTsKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGJhY2tncm91bmRSZXBl
YXRTaG9ydGhhbmQoKTsKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGJvcmRlclNob3J0
aGFuZCgpOwotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgYm9yZGVyQWJyaWRnZWRTaG9y
dGhhbmQoKTsKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGJvcmRlckJvdHRvbVNob3J0
aGFuZCgpOwotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgYm9yZGVyQ29sb3JTaG9ydGhh
bmQoKTsKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGJvcmRlckltYWdlU2hvcnRoYW5k
KCk7Ci1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBib3JkZXJMZWZ0U2hvcnRoYW5kKCk7
Ci1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBib3JkZXJSYWRpdXNTaG9ydGhhbmQoKTsK
LWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGJvcmRlclJpZ2h0U2hvcnRoYW5kKCk7Ci1j
b25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBib3JkZXJTcGFjaW5nU2hvcnRoYW5kKCk7Ci1j
b25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBib3JkZXJTdHlsZVNob3J0aGFuZCgpOwotY29u
c3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgYm9yZGVyVG9wU2hvcnRoYW5kKCk7Ci1jb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kJiBib3JkZXJXaWR0aFNob3J0aGFuZCgpOwotY29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCYgbGlzdFN0eWxlU2hvcnRoYW5kKCk7Ci1jb25zdCBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kJiBmb250U2hvcnRoYW5kKCk7Ci1jb25zdCBTdHlsZVByb3BlcnR5U2hv
cnRoYW5kJiBoZWlnaHRTaG9ydGhhbmQoKTsKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQm
IG1hcmdpblNob3J0aGFuZCgpOwotI2lmIEVOQUJMRShTVkcpCi1jb25zdCBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kJiBtYXJrZXJTaG9ydGhhbmQoKTsKLSNlbmRpZgotY29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCYgb3V0bGluZVNob3J0aGFuZCgpOwotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCYgb3ZlcmZsb3dTaG9ydGhhbmQoKTsKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQm
IHBhZGRpbmdTaG9ydGhhbmQoKTsKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHRyYW5z
aXRpb25TaG9ydGhhbmQoKTsKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHdlYmtpdEFu
aW1hdGlvblNob3J0aGFuZCgpOwotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0
QW5pbWF0aW9uU2hvcnRoYW5kRm9yUGFyc2luZygpOwotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCYgd2Via2l0Qm9yZGVyQWZ0ZXJTaG9ydGhhbmQoKTsKLWNvbnN0IFN0eWxlUHJvcGVydHlT
aG9ydGhhbmQmIHdlYmtpdEJvcmRlckJlZm9yZVNob3J0aGFuZCgpOwotY29uc3QgU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCYgd2Via2l0Qm9yZGVyRW5kU2hvcnRoYW5kKCk7Ci1jb25zdCBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRCb3JkZXJSYWRpdXNTaG9ydGhhbmQoKTsKLWNvbnN0IFN0
eWxlUHJvcGVydHlTaG9ydGhhbmQmIHdlYmtpdEJvcmRlclN0YXJ0U2hvcnRoYW5kKCk7Ci1jb25z
dCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRDb2x1bW5zU2hvcnRoYW5kKCk7Ci1jb25z
dCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRDb2x1bW5SdWxlU2hvcnRoYW5kKCk7Ci1j
b25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRGbGV4Rmxvd1Nob3J0aGFuZCgpOwot
Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0RmxleFNob3J0aGFuZCgpOwotY29u
c3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0R3JpZENvbHVtblNob3J0aGFuZCgpOwot
Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0R3JpZFJvd1Nob3J0aGFuZCgpOwot
Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0TWFyZ2luQ29sbGFwc2VTaG9ydGhh
bmQoKTsKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHdlYmtpdE1hcnF1ZWVTaG9ydGhh
bmQoKTsKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHdlYmtpdE1hc2tTaG9ydGhhbmQo
KTsKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHdlYmtpdE1hc2tQb3NpdGlvblNob3J0
aGFuZCgpOwotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0TWFza1JlcGVhdFNo
b3J0aGFuZCgpOwotY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0VGV4dEVtcGhh
c2lzU2hvcnRoYW5kKCk7Ci1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRUZXh0
U3Ryb2tlU2hvcnRoYW5kKCk7Ci1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRU
cmFuc2l0aW9uU2hvcnRoYW5kKCk7Ci1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJr
aXRUcmFuc2Zvcm1PcmlnaW5TaG9ydGhhbmQoKTsKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQmIHdpZHRoU2hvcnRoYW5kKCk7CitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIGJhY2tncm91bmRT
aG9ydGhhbmQoKTsKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgYmFja2dyb3VuZFBvc2l0aW9uU2hv
cnRoYW5kKCk7CitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIGJhY2tncm91bmRSZXBlYXRTaG9ydGhh
bmQoKTsKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgYm9yZGVyU2hvcnRoYW5kKCk7CitTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kIGJvcmRlckFicmlkZ2VkU2hvcnRoYW5kKCk7CitTdHlsZVByb3BlcnR5
U2hvcnRoYW5kIGJvcmRlckJvdHRvbVNob3J0aGFuZCgpOworU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZCBib3JkZXJDb2xvclNob3J0aGFuZCgpOworU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCBib3JkZXJJ
bWFnZVNob3J0aGFuZCgpOworU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCBib3JkZXJMZWZ0U2hvcnRo
YW5kKCk7CitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIGJvcmRlclJhZGl1c1Nob3J0aGFuZCgpOwor
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCBib3JkZXJSaWdodFNob3J0aGFuZCgpOworU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCBib3JkZXJTcGFjaW5nU2hvcnRoYW5kKCk7CitTdHlsZVByb3BlcnR5U2hv
cnRoYW5kIGJvcmRlclN0eWxlU2hvcnRoYW5kKCk7CitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIGJv
cmRlclRvcFNob3J0aGFuZCgpOworU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCBib3JkZXJXaWR0aFNo
b3J0aGFuZCgpOworU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCBsaXN0U3R5bGVTaG9ydGhhbmQoKTsK
K1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgZm9udFNob3J0aGFuZCgpOworU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCBoZWlnaHRTaG9ydGhhbmQoKTsKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgbWFyZ2lu
U2hvcnRoYW5kKCk7CitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIG91dGxpbmVTaG9ydGhhbmQoKTsK
K1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgb3ZlcmZsb3dTaG9ydGhhbmQoKTsKK1N0eWxlUHJvcGVy
dHlTaG9ydGhhbmQgcGFkZGluZ1Nob3J0aGFuZCgpOworU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCB0
cmFuc2l0aW9uU2hvcnRoYW5kKCk7CitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHdlYmtpdEFuaW1h
dGlvblNob3J0aGFuZCgpOworU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCB3ZWJraXRBbmltYXRpb25T
aG9ydGhhbmRGb3JQYXJzaW5nKCk7CitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHdlYmtpdEJvcmRl
ckFmdGVyU2hvcnRoYW5kKCk7CitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHdlYmtpdEJvcmRlckJl
Zm9yZVNob3J0aGFuZCgpOworU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCB3ZWJraXRCb3JkZXJFbmRT
aG9ydGhhbmQoKTsKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgd2Via2l0Qm9yZGVyUmFkaXVzU2hv
cnRoYW5kKCk7CitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHdlYmtpdEJvcmRlclN0YXJ0U2hvcnRo
YW5kKCk7CitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHdlYmtpdENvbHVtbnNTaG9ydGhhbmQoKTsK
K1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgd2Via2l0Q29sdW1uUnVsZVNob3J0aGFuZCgpOworU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCB3ZWJraXRGbGV4Rmxvd1Nob3J0aGFuZCgpOworU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCB3ZWJraXRGbGV4U2hvcnRoYW5kKCk7CitTdHlsZVByb3BlcnR5U2hvcnRo
YW5kIHdlYmtpdEdyaWRDb2x1bW5TaG9ydGhhbmQoKTsKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQg
d2Via2l0R3JpZFJvd1Nob3J0aGFuZCgpOworU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCB3ZWJraXRN
YXJnaW5Db2xsYXBzZVNob3J0aGFuZCgpOworU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCB3ZWJraXRN
YXJxdWVlU2hvcnRoYW5kKCk7CitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHdlYmtpdE1hc2tTaG9y
dGhhbmQoKTsKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgd2Via2l0TWFza1Bvc2l0aW9uU2hvcnRo
YW5kKCk7CitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHdlYmtpdE1hc2tSZXBlYXRTaG9ydGhhbmQo
KTsKK1N0eWxlUHJvcGVydHlTaG9ydGhhbmQgd2Via2l0VGV4dEVtcGhhc2lzU2hvcnRoYW5kKCk7
CitTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHdlYmtpdFRleHRTdHJva2VTaG9ydGhhbmQoKTsKK1N0
eWxlUHJvcGVydHlTaG9ydGhhbmQgd2Via2l0VHJhbnNpdGlvblNob3J0aGFuZCgpOworU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZCB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5TaG9ydGhhbmQoKTsKK1N0eWxl
UHJvcGVydHlTaG9ydGhhbmQgd2lkdGhTaG9ydGhhbmQoKTsKIAogI2lmIEVOQUJMRShDU1MzX1RF
WFQpCi1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRUZXh0RGVjb3JhdGlvblNo
b3J0aGFuZCgpOworU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCB3ZWJraXRUZXh0RGVjb3JhdGlvblNo
b3J0aGFuZCgpOworI2VuZGlmCisKKyNpZiBFTkFCTEUoU1ZHKQorU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCBtYXJrZXJTaG9ydGhhbmQoKTsKICNlbmRpZgogCi0vLyBSZXR1cm5zIGFuIGVtcHR5IGxp
c3QgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCBhIHNob3J0aGFuZC4KLWNvbnN0IFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQmIHNob3J0aGFuZEZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQpOworLy8gUmV0
dXJucyBlbXB0eSB2YWx1ZSBpZiB0aGUgcHJvcGVydHkgaXMgbm90IGEgc2hvcnRoYW5kLgorU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCBzaG9ydGhhbmRGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKTsK
IAogLy8gUmV0dXJuIHRoZSBsaXN0IG9mIHNob3J0aGFuZHMgZm9yIGEgZ2l2ZW4gbG9uZ2hhbmQu
Ci1jb25zdCBWZWN0b3I8Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCo+IG1hdGNoaW5nU2hv
cnRoYW5kc0ZvckxvbmdoYW5kKENTU1Byb3BlcnR5SUQpOwotdW5zaWduZWQgaW5kZXhPZlNob3J0
aGFuZEZvckxvbmdoYW5kKENTU1Byb3BlcnR5SUQsIGNvbnN0IFZlY3Rvcjxjb25zdCBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kKj4mKTsKK1ZlY3RvcjxTdHlsZVByb3BlcnR5U2hvcnRoYW5kPiBtYXRj
aGluZ1Nob3J0aGFuZHNGb3JMb25naGFuZChDU1NQcm9wZXJ0eUlEKTsKK3Vuc2lnbmVkIGluZGV4
T2ZTaG9ydGhhbmRGb3JMb25naGFuZChDU1NQcm9wZXJ0eUlELCBjb25zdCBWZWN0b3I8U3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZD4mKTsKIAogYm9vbCBpc0V4cGFuZGVkU2hvcnRoYW5kKENTU1Byb3Bl
cnR5SUQpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>