<?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>230052</bug_id>
          
          <creation_ts>2021-09-08 10:02:19 -0700</creation_ts>
          <short_desc>Add PrivateClickMeasurement daemon</short_desc>
          <delta_ts>2021-10-15 10:34:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>231817</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1791513</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-08 10:02:19 -0700</bug_when>
    <thetext>Add PrivateClickMeasurement daemon</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791668</commentid>
    <comment_count>1</comment_count>
      <attachid>437672</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-08 15:59:32 -0700</bug_when>
    <thetext>Created attachment 437672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791687</commentid>
    <comment_count>2</comment_count>
      <attachid>437679</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-08 16:39:26 -0700</bug_when>
    <thetext>Created attachment 437679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791690</commentid>
    <comment_count>3</comment_count>
      <attachid>437681</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-08 16:46:42 -0700</bug_when>
    <thetext>Created attachment 437681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791701</commentid>
    <comment_count>4</comment_count>
      <attachid>437684</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-08 16:57:36 -0700</bug_when>
    <thetext>Created attachment 437684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791704</commentid>
    <comment_count>5</comment_count>
      <attachid>437686</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-08 17:08:19 -0700</bug_when>
    <thetext>Created attachment 437686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791751</commentid>
    <comment_count>6</comment_count>
      <attachid>437704</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-08 20:59:14 -0700</bug_when>
    <thetext>Created attachment 437704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791752</commentid>
    <comment_count>7</comment_count>
      <attachid>437705</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-08 21:04:29 -0700</bug_when>
    <thetext>Created attachment 437705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791753</commentid>
    <comment_count>8</comment_count>
      <attachid>437706</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-08 21:21:04 -0700</bug_when>
    <thetext>Created attachment 437706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791759</commentid>
    <comment_count>9</comment_count>
      <attachid>437709</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-08 21:55:48 -0700</bug_when>
    <thetext>Created attachment 437709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791981</commentid>
    <comment_count>10</comment_count>
      <attachid>437709</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-09 10:43:53 -0700</bug_when>
    <thetext>Comment on attachment 437709
Patch

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

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/cocoa/PrivateClickMeasurementDaemonConnectionCocoa.mm:46
&gt; +            ASSERT(RunLoop::isMain());

Is that guaranteed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791983</commentid>
    <comment_count>11</comment_count>
      <attachid>437709</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-09 10:45:57 -0700</bug_when>
    <thetext>Comment on attachment 437709
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/cocoa/PrivateClickMeasurementDaemonConnectionCocoa.mm:46
&gt;&gt; +            ASSERT(RunLoop::isMain());
&gt; 
&gt; Is that guaranteed?

It is because we use dispatch_get_main_queue when creating this connection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792003</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-09 11:25:50 -0700</bug_when>
    <thetext>Committed r282230 (241514@main): &lt;https://commits.webkit.org/241514@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 437709.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792005</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-09 11:26:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/82935590&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437672</attachid>
            <date>2021-09-08 15:59:32 -0700</date>
            <delta_ts>2021-09-08 16:42:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230052-20210908155931.patch</filename>
            <type>text/plain</type>
            <size>106900</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJjOTI0NmRiMDI3OTMwZDM0MjA5OWU1
Yzg4MmJiYzVjODA5ZDY2ZTAuLjU1MzZmYjAzOGRiY2I5ZmQ0NDUyYTg2NTU0ZDIxYTNiMjkzOGFi
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDktMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgZGFlbW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzAwNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oOgorCiAyMDIxLTA5LTA3ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IG9yaWdpbiBwYXJ0aXRp
b25pbmcgKHRvcC1vcmlnaW4vZnJhbWUtb3JpZ2luKSBmb3IgQnJvYWRjYXN0Q2hhbm5lbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAwM2YwZDFkMGM1NjI2ODY5Mzk2NWI3ZTkxY2EzMzNlZDc2MThiMTEyLi4xMDc5NGIy
MzE4YzkxMjVmOGIzYzU1OTZkZWZkZWJiN2U2OTlkM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
NSBAQAorMjAyMS0wOS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIEFkZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBkYWVtb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDA1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUg
aW5mcmFzdHJ1Y3R1cmUgdG8gdXNlIGEgZGFlbW9uIGluc3RlYWQgb2YgdGhlIG5ldHdvcmsgcHJv
Y2VzcyB0byBoYW5kbGUgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuCisgICAgICAgIEl0IGRvZXMg
bm90IHN0YXJ0IHVzaW5nIHRoZSBkYWVtb24geWV0LCBzbyB0aGVyZSBpcyBubyBjaGFuZ2UgaW4g
YmVoYXZpb3IuCisgICAgICAgIEkgbWFkZSBhIG5ldyBjbGFzcyBQQ006Ok1hbmFnZXJJbnRlcmZh
Y2Ugd2hpY2ggY2FuIGVpdGhlciBiZSBhIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlciBv
ciBhIFBDTTo6TWFuYWdlclByb3h5LAorICAgICAgICB3aGljaCB3b3VsZCBzZW5kIG1lc3NhZ2Vz
IHRvIHRoZSBkYWVtb24gaW5zdGVhZCBvZiBkb2luZyB0aGUgd29yayBsb2NhbGx5LgorICAgICAg
ICBJIGltcGxlbWVudGVkIHRoZSBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgcGFyYW1ldGVycyB1
c2luZyBzb21lIG9mIHRoZSBJUEMgZW5jb2RpbmcgdGVtcGxhdGVzLgorICAgICAgICBJIGhhdmUg
YW4gZW50cnkgcG9pbnQgZm9yIGFuIGV4ZWN1dGFibGUgYnV0IG5vIGV4ZWN1dGFibGUgeWV0Lgor
ICAgICAgICBJIGhhdmUgdmVyaWZpZWQgdGhhdCBFdmVudEF0dHJpYnV0aW9uIHVuaXQgdGVzdHMg
cGFzcyB3aGVuIHVzaW5nIHRoZSBkYWVtb24sIHNvIHRoZSBpbmZyYXN0cnVjdHVyZSBpcyBnb29k
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpwY21TdG9yZURpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OnByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudENvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0
aW9uOjpjb25uZWN0aW9uVG9EYWVtb24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rp
b246OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rpb246OnNlbmRXaXRoUmVw
bHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhZW1vbkNsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNs
aWVudDo6bG9hZEZyb21OZXR3b3JrKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25DbGll
bnQ6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVt
b25DbGllbnQ6OmZlYXR1cmVFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpE
YWVtb25DbGllbnQ6OmRlYnVnTW9kZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFl
bW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6ZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6RGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RGVjb2Rlcjo6b3BlcmF0b3I+Pik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6YnVm
ZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBDTTo6RW5jb2Rlcjo6ZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlBDTTo6RW5jb2Rlcjo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RW5jb2Rlcjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpFbmNvZGVyOjp0YWtlQnVm
ZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UENNOjpNZXNzYWdlSW5mbzo6dG9TdHJpbmdGb3JUZXN0aW5nOjplbmNvZGVS
ZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6bWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
OlBDTTo6aGFuZGxlUENNTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6aGFuZGxlUENN
TWVzc2FnZVdpdGhSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6ZGVjb2RlTWVzc2FnZUFu
ZFNlbmRUb01hbmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpQQ006OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpSZXBseUNhbGxl
cjw+OjpjYWxsUmVwbHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlJlcGx5Q2FsbGVyPFN0cmlu
Zz46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6c2VuZE1lc3NhZ2VXaXRoUmVw
bHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c3RvcmVVbmF0dHJpYnV0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6aGFuZGxlQXR0cmlidXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6Y2xlYXIpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6Y2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbik6
CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjptaWdyYXRlUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFu
YWdlclByb3h5Ojp0b1N0cmluZ0ZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
Q006Ok1hbmFnZXJQcm94eTo6c2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcpOgorICAgICAgICAo
V2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6OnNldFRva2VuU2lnbmF0dXJl
VVJMRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzZXRB
dHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpN
YW5hZ2VyUHJveHk6Om1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6TWFuYWdlclByb3h5OjpzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFs
dWVzRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzdGFy
dFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5h
Z2VyUHJveHk6OmRlc3Ryb3lTdG9yZUZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
clByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNv
Y29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9EYWVt
b24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OmRpY3Rpb25hcnlGcm9tTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6Q29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENV
dGlsaXRpZXMuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW06
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OmFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2Fn
ZVRvRGljdGlvbmFyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5X
ZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW46CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpkZWNvZGVTdHJpbmdUZXh0KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxTdHJpbmc+OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1v
bi9QQ01EYWVtb25FbnRyeVBvaW50Lmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6cGVlcnMpOgorICAgICAgICAoV2ViS2l0OjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6Y29ubmVjdGlvbkV2ZW50SGFuZGxlcik6Cisg
ICAgICAgIChXZWJLaXQ6OnN0YXJ0TGlzdGVuaW5nRm9yTWFjaFNlcnZpY2VDb25uZWN0aW9ucyk6
CisgICAgICAgIChXZWJLaXQ6OnJlZ2lzdGVyU2NoZWR1bGVkQWN0aXZpdHlIYW5kbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6ZW50ZXJTYW5kYm94KToKKyAgICAgICAgKFdlYktpdDo6UENNRGFlbW9u
TWFpbik6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0w
OS0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlcGxhY2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpzdGFydCB3
aXRoIGFuIGltcGxlbWVudGF0aW9uIHRoYXQgZG9lc24ndCBuZWVkIE5ldHdvcmtTZXNzaW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oIGIvU291cmNlL1dU
Ri93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAppbmRleCAyZjk2NWJhN2ZkMTA5Y2NiOGZlNGE3ZWQ4
NDRkYjIyZGU4NzkxOGYwLi5jYjZhNzI4NWZmNWJkMWFlYzk5OTdmMjU3MjYwZmQ0NWQwMDc4ZmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmgKQEAgLTcxLDYgKzcxLDcgQEAgdHlwZWRl
ZiB2b2lkICgqeHBjX2Nvbm5lY3Rpb25faGFuZGxlcl90KSh4cGNfY29ubmVjdGlvbl90IGNvbm5l
Y3Rpb24pOwogCiAjZGVmaW5lIFhQQ19BUlJBWV9BUFBFTkQgKChzaXplX3QpKC0xKSkKICNkZWZp
bmUgWFBDX0NPTk5FQ1RJT05fTUFDSF9TRVJWSUNFX0xJU1RFTkVSICgxIDw8IDApCisjZGVmaW5l
IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVEVSUlVQVEVEIFhQQ19HTE9CQUxfT0JKRUNUKF94cGNf
ZXJyb3JfY29ubmVjdGlvbl9pbnRlcnJ1cHRlZCkKICNkZWZpbmUgWFBDX0VSUk9SX0NPTk5FQ1RJ
T05fSU5WQUxJRCBYUENfR0xPQkFMX09CSkVDVChfeHBjX2Vycm9yX2Nvbm5lY3Rpb25faW52YWxp
ZCkKICNkZWZpbmUgWFBDX0VSUk9SX0tFWV9ERVNDUklQVElPTiBfeHBjX2Vycm9yX2tleV9kZXNj
cmlwdGlvbgogI2RlZmluZSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQgWFBDX0dMT0JB
TF9PQkpFQ1QoX3hwY19lcnJvcl90ZXJtaW5hdGlvbl9pbW1pbmVudCkKQEAgLTkxLDYgKzkyLDkg
QEAgZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBfeHBjX2Vycm9yX2tleV9kZXNjcmlwdGlvbjsK
ICNpbmNsdWRlIDx4cGMvcHJpdmF0ZS5oPgogI2Vsc2UKIAorZXh0ZXJuICJDIiBjb25zdCBjaGFy
ICogY29uc3QgWFBDX0FDVElWSVRZX1JBTkRPTV9JTklUSUFMX0RFTEFZOworZXh0ZXJuICJDIiBj
b25zdCBjaGFyICogY29uc3QgWFBDX0FDVElWSVRZX1JFUVVJUkVfTkVUV09SS19DT05ORUNUSVZJ
VFk7CisKICNpZiBPU19PQkpFQ1RfVVNFX09CSkMKIE9TX09CSkVDVF9ERUNMKG9zX3RyYW5zYWN0
aW9uKTsKICNlbHNlCkBAIC0xMDgsNiArMTEyLDcgQEAgZW51bSB7CiAKIFdURl9FWFRFUk5fQ19C
RUdJTgogCitleHRlcm4gY29uc3Qgc3RydWN0IF94cGNfZGljdGlvbmFyeV9zIF94cGNfZXJyb3Jf
Y29ubmVjdGlvbl9pbnRlcnJ1cHRlZDsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgX3hwY19kaWN0aW9u
YXJ5X3MgX3hwY19lcnJvcl9jb25uZWN0aW9uX2ludmFsaWQ7CiBleHRlcm4gY29uc3Qgc3RydWN0
IF94cGNfZGljdGlvbmFyeV9zIF94cGNfZXJyb3JfdGVybWluYXRpb25faW1taW5lbnQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
CmluZGV4IGYxYjE5OTAyZTFhNGVhMDVhZWMyMWRhYjcyN2Y4YjhhZWUwOTI5OTkuLjI5YmFiOWEy
OTM5OWQxNjI0OWMxMjk2ZTY4YWFmNzc4ZjMzMGExNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgi
CisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCIKICNpbmNsdWRlICJTdG9y
YWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDU0M2Nh
YjEwMGJjN2JjOTlmNTQwZjM5NGJmZjcyM2ZiY2NkYWViM2EuLmRmZGU3OGRhNjFkOWJmYThhM2M1
YTRjMWM4Y2E5N2EwMmUzNTNmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUGluZ0xv
YWQuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuaCIKICNp
bmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCIKKyNpbmNsdWRlICJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCkBAIC05MiwxMSArOTMsMjAgQEAgc3RhdGljIFN0cmluZyBwY21TdG9yZURp
cmVjdG9yeShjb25zdCBOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXMK
ICAgICByZXR1cm4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKIH0KIAorc3RhdGlj
IFVuaXF1ZVJlZjxQQ006Ok1hbmFnZXJJbnRlcmZhY2U+IG1hbmFnZXJPclByb3h5KE5ldHdvcmtT
ZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBj
b25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAg
ICAvLyBGSVhNRTogVHVybiB0aGlzIG9uIGFuZCByZW1vdmUgTWFuYWdlckludGVyZmFjZSBvbmNl
IHJkYXI6Ly84MDcwMTA5OCBpcyBjbG9zZWQuCisgICAgY29uc3RleHByIGJvb2wgdXNlUENNRGFl
bW9uID0gZmFsc2U7CisKKyAgICBpZiAodXNlUENNRGFlbW9uKQorICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZVJlZjxQQ006Ok1hbmFnZXJQcm94eT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJl
ZjxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KG1ha2VVbmlxdWVSZWY8UENNOjpDbGll
bnRJbXBsPihuZXR3b3JrU2Vzc2lvbiwgbmV0d29ya1Byb2Nlc3MpLCBwY21TdG9yZURpcmVjdG9y
eShuZXR3b3JrU2Vzc2lvbiwgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycy5kaXJlY3RvcnksIHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSk7Cit9CisKIE5ldHdv
cmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3Ms
IGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAg
IDogbV9zZXNzaW9uSUQocGFyYW1ldGVycy5zZXNzaW9uSUQpCiAgICAgLCBtX25ldHdvcmtQcm9j
ZXNzKG5ldHdvcmtQcm9jZXNzKQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgLCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeShwYXJhbWV0
ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RvcmFnZURpcmVjdG9yeSkKICAgICAsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmRpcmVjdG9y
eSkKICAgICAsIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNob3VsZEluY2x1
ZGVMb2NhbGhvc3QgPyBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgOiBTaG91bGRJbmNsdWRl
TG9jYWxob3N0OjpObykKICAgICAsIG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZURl
YnVnTW9kZSA/IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6OlllcyA6IEVu
YWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6Ok5vKQpAQCAtMTA3LDYgKzExNyw3
IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAgICAgLCBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMu
Zmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUpCiAgICAgLCBtX3N0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbihwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
LnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbikKICNlbmRpZgorICAgICwgbV9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChtYW5hZ2VyT3JQcm94eSgqdGhpcywgbmV0d29ya1Byb2Nlc3MsIHBhcmFt
ZXRlcnMpKQogICAgICwgbV9icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkobWFrZVVuaXF1ZVJlZjxO
ZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PigpKQogICAgICwgbV90ZXN0U3BlZWRNdWx0
aXBsaWVyKHBhcmFtZXRlcnMudGVzdFNwZWVkTXVsdGlwbGllcikKICAgICAsIG1fYWxsb3dzU2Vy
dmVyUHJlY29ubmVjdChwYXJhbWV0ZXJzLmFsbG93c1NlcnZlclByZWNvbm5lY3QpCkBAIC0xNDEs
NyArMTUyLDYgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNz
JiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBh
cmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlZCk7CiAjZW5k
aWYKLSAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gbWFrZVVuaXF1ZTxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI+KG1ha2VVbmlxdWVSZWY8UENNOjpDbGllbnRJbXBsPigqdGhp
cywgbmV0d29ya1Byb2Nlc3MpLCBwY21TdG9yZURpcmVjdG9yeSgqdGhpcywgcGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5kaXJlY3RvcnksIHBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9y
YWdlRGlyZWN0b3J5KSk7CiB9CiAKIE5ldHdvcmtTZXNzaW9uOjp+TmV0d29ya1Nlc3Npb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDcw
YTFiNDkxYjI0M2FhZWZiM2QyN2JkY2FkMDBhNjA1ZTQyNGY1MGYuLjg0ZWM2ZmY1MWM1Y2M3ZWRh
YWZmMjNjYTllNmY5OWM2NzQ5NDU3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJlZmV0Y2hDYWNoZS5oIgorI2luY2x1ZGUgIlByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRl
bnNpb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgpAQCAtNjAsMTMgKzYxLDE2
IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwog
Y2xhc3MgTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTsKIGNsYXNzIE5ldHdvcmtTb2Nr
ZXRDaGFubmVsOwotY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOwogY2xhc3Mg
V2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzOwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOwogY2xhc3MgV2ViU29ja2V0VGFzazsKIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBTZXNzaW9uU2V0OwogCituYW1lc3BhY2UgUENNIHsKK2Ns
YXNzIE1hbmFnZXJQcm94eTsKK30KKwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGUgOiB1aW50
MzJfdDsKIAogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CkBAIC0xNjcsNyArMTcxLDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICBOZXR3b3JrTG9hZFNjaGVkdWxlciYgbmV0d29ya0xvYWRTY2hl
ZHVsZXIoKTsKLSAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXImIHByaXZhdGVDbGlj
a01lYXN1cmVtZW50KCkgeyByZXR1cm4gKm1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7IH0KKyAg
ICBQQ006Ok1hbmFnZXJJbnRlcmZhY2UmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgeyByZXR1
cm4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5nZXQoKTsgfQogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhJiBhcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGEoKSB7IHJldHVybiBtX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTsgfQpAQCAt
MTkyLDcgKzE5Niw2IEBAIHByb3RlY3RlZDoKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0
d29ya1Byb2Nlc3M7CiAgICAgV2Vha0hhc2hTZXQ8TmV0d29ya0RhdGFUYXNrPiBtX2RhdGFUYXNr
U2V0OwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgU3RyaW5nIG1f
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CiAgICAgUmVmUHRyPFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZT4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgIFNob3VsZElu
Y2x1ZGVMb2NhbGhvc3QgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzIHsgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6WWVzIH07CkBAIC0yMDgsNyArMjExLDcg
QEAgcHJvdGVjdGVkOgogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+IG1fdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZzsKICNlbmRpZgogICAgIGJvb2wg
bV9pc1N0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4gbV9wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDsKKyAgICBVbmlxdWVSZWY8UENNOjpNYW5hZ2VySW50ZXJmYWNlPiBtX3ByaXZhdGVD
bGlja01lYXN1cmVtZW50OwogCiAgICAgSGFzaFNldDxSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVy
Pj4gbV9rZXB0QWxpdmVMb2FkczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU2M2EwMzYwZGI1MzE5ODFmZTY3NGIyNjNhZjQwMzIzMWQ5MTk4NWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw1OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCisjaWYg
IVBMQVRGT1JNKENPQ09BKQorCitDb25uZWN0aW9uIENvbm5lY3Rpb246OmNvbm5lY3Rpb25Ub0Rh
ZW1vbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCit2
b2lkIENvbm5lY3Rpb246OnNlbmQoTWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5
KE1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVu
Y29kZWRNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30KKworI2VuZGlmCisKK30gLy8g
bmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRjN2RkODlkODIxYzhmMThkNjg4Y2U5MTVmM2Y3M2Y0ODkzMGNmODYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oCkBAIC0w
LDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8d3RmL09T
T2JqZWN0UHRyLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCituYW1lc3BhY2UgUENNIHsKKworZW51bSBjbGFzcyBNZXNzYWdlVHlwZSA6IHVpbnQ4X3Q7
Cit1c2luZyBFbmNvZGVkTWVzc2FnZSA9IFZlY3Rvcjx1aW50OF90PjsKKworY2xhc3MgQ29ubmVj
dGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIENvbm5lY3Rpb24gY29ubmVjdGlvblRvRGFlbW9u
KCk7CisKKyAgICB2b2lkIHNlbmQoTWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYpOworICAg
IHZvaWQgc2VuZFdpdGhSZXBseShNZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4mJik7CisKK3ByaXZhdGU6CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgQ29ubmVjdGlvbihPU09iamVjdFB0cjx4cGNfY29ubmVjdGlv
bl90PiYmKTsKKworICAgIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IG1fY29ubmVjdGlv
bjsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NmZlNWU3NGFm
Y2NjMDBmZTRkZGQ0N2NjMTBkYTI4NmY1Mzc0ZGRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhZW1vbkNsaWVudC5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKKyNpZiAhUExBVEZPUk0o
Q09DT0EpCit2b2lkIERhZW1vbkNsaWVudDo6bG9hZEZyb21OZXR3b3JrKFVSTCYmIHVybCwgUmVm
UHRyPEpTT046Ok9iamVjdD4mJiBqc29uUGF5bG9hZCwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkIHBjbURhdGFDYXJyaWVkLCBOZXR3b3JrTG9hZENhbGxi
YWNrJiYgY2FsbGJhY2spCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBjYWxsYmFjayh7
IH0sIHsgfSwgeyB9KTsKK30KKyNlbmRpZgorCit2b2lkIERhZW1vbkNsaWVudDo6YnJvYWRjYXN0
Q29uc29sZU1lc3NhZ2UoSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBEYWVtb25DbGllbnQ6OmZlYXR1cmVFbmFibGVk
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBEYWVtb25DbGllbnQ6OmRl
YnVnTW9kZUVuYWJsZWQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWU3NzgyMTI0MjZkODk3
MTZjMWJhMzZkNDUwYWNkNWQzNmQ3ZjY2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREYWVtb25DbGllbnQuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudC5oIgor
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCitjbGFzcyBEYWVtb25DbGll
bnQgOiBwdWJsaWMgQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGFlbW9uQ2xpZW50PiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgdm9pZCBicm9hZGNhc3RDb25zb2xl
TWVzc2FnZShKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgYm9v
bCBmZWF0dXJlRW5hYmxlZCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgZGVidWdNb2RlRW5hYmxl
ZCgpIGNvbnN0IGZpbmFsOworfTsKKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhMjBlOGMyZmNjYTk5
YzEwODYyNTQwN2ExZjJjM2NjNDUyMzNlNDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RGVjb2Rlci5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCitib29sIERlY29k
ZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW5CeXRlcyhzaXplX3QgYnl0ZXMpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGJ5dGVzIDw9IG1fYnVmZmVyLnNpemUoKSAtIG1fYnVmZmVyUG9zaXRp
b247Cit9CisKK2Jvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplLCBzaXplX3QpCit7CisgICAgaWYgKCFidWZmZXJJc0xhcmdlRW5vdWdo
VG9Db250YWluQnl0ZXMoc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtZW1jcHko
ZGF0YSwgbV9idWZmZXIuZGF0YSgpICsgbV9idWZmZXJQb3NpdGlvbiwgc2l6ZSk7CisgICAgbV9i
dWZmZXJQb3NpdGlvbiArPSBzaXplOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVz
cGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RGVjb2Rlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yODc3OTllMzBlZTUzMDc3MmM5ZDE0N2NjMzg3ZjU1ZjViOGMzNTU2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaApAQCAtMCwwICsxLDY4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK2NsYXNzIERlY29kZXIg
eworcHVibGljOgorICAgIERlY29kZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQorICAgICAg
ICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KKyAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8VD4mIHQpCisg
ICAgeworICAgICAgICB0ID0gSVBDOjpBcmd1bWVudENvZGVyPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8
c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+LCB2b2lkPjo6ZGVjb2RlKCp0aGlzKTsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXpl
X3QgbnVtRWxlbWVudHMpIGNvbnN0CisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWUsICJUeXBlIFQgbXVzdCBoYXZlIGEgZml4ZWQsIGtub3du
IGVuY29kZWQgc2l6ZSEiKTsKKworICAgICAgICBpZiAobnVtRWxlbWVudHMgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpIC8gc2l6ZW9mKFQpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIHJldHVybiBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluQnl0
ZXMobnVtRWxlbWVudHMgKiBzaXplb2YoVCkpOworICAgIH0KKworICAgIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QsIHNp
emVfdCBhbGlnbm1lbnQpOworICAgIAorcHJpdmF0ZToKKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluQnl0ZXMoc2l6ZV90KSBjb25zdDsKKwor
ICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZlcjsKKyAgICBzaXplX3QgbV9idWZmZXJQb3NpdGlv
biB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRFbmNvZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOThiMTVlNTEwZTU5OTM3NDNmZTdl
NTYzZWYwMWRkNzhiOTI0ZmY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEVuY29kZXIuY3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKwordm9pZCBFbmNvZGVyOjplbmNv
ZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVf
dCkKK3sKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE4YTgzYzY1OTI1ZDI2MmFkZDIwYmE1YThiMTkwMzY1ZTU5MzJjYjEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKworY2xhc3MgRW5jb2RlciB7
CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBFbmNvZGVyJiBvcGVyYXRv
cjw8KFQmJiB0KQorICAgIHsKKyAgICAgICAgSVBDOjpBcmd1bWVudENvZGVyPHN0ZDo6cmVtb3Zl
X2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+Pjo6ZW5jb2RlKCp0aGlzLCBzdGQ6
OmZvcndhcmQ8VD4odCkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgZW5jb2RlKEFy
ZyYmIGFyZywgQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICAqdGhpcyA8PCBzdGQ6OmZv
cndhcmQ8QXJnPihhcmcpOworICAgICAgICBlbmNvZGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKTsKKyAgICB9CisgICAgdm9pZCBlbmNvZGUoKSB7IH0KKworICAgIFZlY3Rvcjx1aW50OF90
PiB0YWtlQnVmZmVyKCkgeyByZXR1cm4gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwgeyB9KTsgfQor
CisgICAgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCwg
c2l6ZV90IGFsaWdubWVudCk7CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVm
ZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyLmgKaW5kZXggYmI4MjIyYzJjOWRiYjA3NzJiZDM5ZTc5ZjQ0MzA1ZjQ3MGJl
OWY1NS4uMjZlN2M1NTkxNDQ3ZmViZjU3ODUxZWFlNWQyZTBmNDZkOWJlZTAxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlci5oCkBAIC0yOCwxMyArMjgsOSBAQAogI2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1l
dGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRDbGllbnQuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXJJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
b3JlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+Ci0jaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVz
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQyLDM4ICszOCwzMCBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotZW51bSBjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJp
YnV0aW9uVHlwZSA6IGJvb2wgeyBVbmF0dHJpYnV0ZWQsIEF0dHJpYnV0ZWQgfTsKLQotY2xhc3Mg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBy
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4geworY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyIDogcHVibGljIFBDTTo6TWFuYWdlckludGVyZmFjZSwgcHVibGljIENhbk1h
a2VXZWFrUHRyPFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4gewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogCi0gICAgdXNpbmcgQXR0cmlidXRpb25EZXN0aW5h
dGlvblNpdGUgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25E
ZXN0aW5hdGlvblNpdGU7Ci0gICAgdXNpbmcgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwotICAg
IHVzaW5nIFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ7Ci0gICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbjsKLSAgICB1c2luZyBTb3VyY2VTaXRlID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGU7Ci0KICAgICBleHBsaWNpdCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXIoVW5pcXVlUmVmPFBDTTo6Q2xpZW50PiYmLCBjb25zdCBTdHJpbmcmIHN0
b3JhZ2VEaXJlY3RvcnkpOwogICAgIH5Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIoKTsK
IAotICAgIHZvaWQgc3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJik7
Ci0gICAgdm9pZCBoYW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYsIGNv
bnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWRpcmVj
dERvbWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJMKTsKLSAgICB2b2lkIGNsZWFyKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9t
YWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKLSAgICB2b2lkIG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9y
YWdlKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UeXBlKTsKKyAgICB2b2lkIHN0b3JlVW5hdHRyaWJ1dGVkKFByaXZhdGVDbGlja01l
YXN1cmVtZW50JiYpIGZpbmFsOworICAgIHZvaWQgaGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRp
b25UcmlnZ2VyRGF0YSYmLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYgcmVkaXJlY3REb21haW4sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCkgZmlu
YWw7CisgICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwor
ICAgIHZvaWQgY2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBtaWdyYXRl
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZShQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCYmLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkgZmluYWw7
CiAKLSAgICB2b2lkIHRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZyk+JiYpIGNvbnN0OwotICAgIHZvaWQgc2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9v
bCB2YWx1ZSkgeyBtX2lzUnVubmluZ1Rlc3QgPSB2YWx1ZTsgfQotICAgIHZvaWQgc2V0VG9rZW5Q
dWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTCYmKTsKLSAgICB2b2lkIHNldFRva2VuU2lnbmF0dXJl
VVJMRm9yVGVzdGluZyhVUkwmJik7Ci0gICAgdm9pZCBzZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNG
b3JUZXN0aW5nKFVSTCYmIHNvdXJjZVVSTCwgVVJMJiYgZGVzdGluYXRpb25VUkwpOwotICAgIHZv
aWQgbWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKLSAgICB2b2lkIG1h
cmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0RXBoZW1lcmFsTWVhc3Vy
ZW1lbnRGb3JUZXN0aW5nKGJvb2wgdmFsdWUpIHsgbV9pc1J1bm5pbmdFcGhlbWVyYWxNZWFzdXJl
bWVudFRlc3QgPSB2YWx1ZTsgfQotICAgIHZvaWQgc2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVz
Rm9yVGVzdGluZyhTdHJpbmcmJiB1bmxpbmthYmxlVG9rZW4sIFN0cmluZyYmIHNlY3JldFRva2Vu
LCBTdHJpbmcmJiBzaWduYXR1cmUsIFN0cmluZyYmIGtleUlEKTsKLSAgICB2b2lkIHN0YXJ0VGlt
ZXJJbW1lZGlhdGVseUZvclRlc3RpbmcoKTsKLSAgICB2b2lkIGRlc3Ryb3lTdG9yZUZvclRlc3Rp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHRvU3RyaW5nRm9yVGVz
dGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpIGNvbnN0IGZpbmFsOworICAg
IHZvaWQgc2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkgZmluYWwgeyBtX2lz
UnVubmluZ1Rlc3QgPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JU
ZXN0aW5nKFVSTCYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVz
dGluZyhVUkwmJikgZmluYWw7CisgICAgdm9pZCBzZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JU
ZXN0aW5nKFVSTCYmIHNvdXJjZVVSTCwgVVJMJiYgZGVzdGluYXRpb25VUkwpIGZpbmFsOworICAg
IHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3RpbmcoKSBmaW5hbDsKKyAg
ICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9y
VGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgc2V0
RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nKGJvb2wgdmFsdWUpIGZpbmFsIHsgbV9pc1J1
bm5pbmdFcGhlbWVyYWxNZWFzdXJlbWVudFRlc3QgPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0UENN
RnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhTdHJpbmcmJiB1bmxpbmthYmxlVG9rZW4s
IFN0cmluZyYmIHNlY3JldFRva2VuLCBTdHJpbmcmJiBzaWduYXR1cmUsIFN0cmluZyYmIGtleUlE
KSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3RpbmcoKSBmaW5h
bDsKKyAgICB2b2lkIGRlc3Ryb3lTdG9yZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBQQ006OlN0b3JlJiBzdG9yZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2OGE1YjkzYWY1
MzAwNTU5OWRkY2E3OTViNjJlYjBlNDM4ZWE4M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5jcHAKQEAgLTAsMCArMSwyNTggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgiCisKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaCIKKyNpbmNsdWRlICJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERlY29kZXIuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEVuY29kZXIuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCituYW1lc3BhY2Ug
TWVzc2FnZUluZm8geworCisjZGVmaW5lIEZVTkNUSU9OKG1mKSBzdHJ1Y3QgbWYgeyBzdGF0aWMg
Y29uc3RleHByIGF1dG8gTWVtYmVyRnVuY3Rpb24gPSAmUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjptZjsKKyNkZWZpbmUgQVJHVU1FTlRTKC4uLikgdXNpbmcgQXJnc1R1cGxlID0gc3Rk
Ojp0dXBsZTxfX1ZBX0FSR1NfXz47CisjZGVmaW5lIFJFUExZKC4uLikgdXNpbmcgUmVwbHkgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKF9fVkFfQVJHU19fKT47IFwKKyAgICBzdGF0aWMgUENNOjpF
bmNvZGVkTWVzc2FnZSBlbmNvZGVSZXBseShfX1ZBX0FSR1NfXyk7CisjZGVmaW5lIEVORCB9Owor
CitGVU5DVElPTihzdG9yZVVuYXR0cmlidXRlZCkKK0FSR1VNRU5UUyhXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCkKK0VORAorCitGVU5DVElPTihoYW5kbGVBdHRyaWJ1dGlvbikKK0FS
R1VNRU5UUyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OkF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEsIFVSTCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFVSTCkKK0VORAorCitGVU5D
VElPTihjbGVhcikKK0FSR1VNRU5UUygpCitSRVBMWSgpCitFTkQKKworRlVOQ1RJT04oY2xlYXJG
b3JSZWdpc3RyYWJsZURvbWFpbikKK0FSR1VNRU5UUyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bikKK1JFUExZKCkKK0VORAorCitGVU5DVElPTihtaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRGcm9tTGVnYWN5U3RvcmFnZSkKK0FSR1VNRU5UUyhXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpCitFTkQKKwor
RlVOQ1RJT04odG9TdHJpbmdGb3JUZXN0aW5nKQorQVJHVU1FTlRTKCkKK1JFUExZKFN0cmluZykK
K0VORAorCitGVU5DVElPTihzZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZykKK0FSR1VNRU5UUyhi
b29sKQorRU5ECisKK0ZVTkNUSU9OKHNldFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZykKK0FS
R1VNRU5UUyhVUkwpCitFTkQKKworRlVOQ1RJT04oc2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0
aW5nKQorQVJHVU1FTlRTKFVSTCkKK0VORAorCitGVU5DVElPTihzZXRBdHRyaWJ1dGlvblJlcG9y
dFVSTHNGb3JUZXN0aW5nKQorQVJHVU1FTlRTKFVSTCwgVVJMKQorRU5ECisKK0ZVTkNUSU9OKG1h
cmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKQorQVJHVU1FTlRTKCkKK0VORAor
CitGVU5DVElPTihtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJl
ZEZvclRlc3RpbmcpCitBUkdVTUVOVFMoKQorUkVQTFkoKQorRU5ECisKK0ZVTkNUSU9OKHNldEVw
aGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZykKK0FSR1VNRU5UUyhib29sKQorRU5ECisKK0ZV
TkNUSU9OKHNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcpCitBUkdVTUVOVFMo
U3RyaW5nLCBTdHJpbmcsIFN0cmluZywgU3RyaW5nKQorRU5ECisKK0ZVTkNUSU9OKHN0YXJ0VGlt
ZXJJbW1lZGlhdGVseUZvclRlc3RpbmcpCitBUkdVTUVOVFMoKQorRU5ECisKK0ZVTkNUSU9OKGRl
c3Ryb3lTdG9yZUZvclRlc3RpbmcpCitBUkdVTUVOVFMoKQorUkVQTFkoKQorRU5ECisKKyN1bmRl
ZiBGVU5DVElPTgorI3VuZGVmIEFSR1VNRU5UUworI3VuZGVmIFJFUExZCisjdW5kZWYgRU5ECisK
KyNkZWZpbmUgRU1QVFlfUkVQTFkobWYpIFBDTTo6RW5jb2RlZE1lc3NhZ2UgbWY6OmVuY29kZVJl
cGx5KCkgeyByZXR1cm4geyB9OyB9CitFTVBUWV9SRVBMWShjbGVhcik7CitFTVBUWV9SRVBMWShj
bGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKTsKK0VNUFRZX1JFUExZKG1hcmtBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk7CitFTVBUWV9SRVBMWShk
ZXN0cm95U3RvcmVGb3JUZXN0aW5nKTsKKyN1bmRlZiBFTVBUWV9SRVBMWQorCitQQ006OkVuY29k
ZWRNZXNzYWdlIHRvU3RyaW5nRm9yVGVzdGluZzo6ZW5jb2RlUmVwbHkoU3RyaW5nIHJlcGx5KQor
eworICAgIFBDTTo6RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIgPDwgcmVwbHk7CisgICAg
cmV0dXJuIGVuY29kZXIudGFrZUJ1ZmZlcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdl
SW5mbworCitib29sIG1lc3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdlVHlwZSBtZXNzYWdlVHlw
ZSkKK3sKKyAgICBzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6
U3RvcmVVbmF0dHJpYnV0ZWQ6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6SGFuZGxlQXR0cmlidXRp
b246CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6TWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50
RnJvbUxlZ2FjeVN0b3JhZ2U6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6U2V0T3ZlcnJpZGVUaW1l
ckZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6U2V0VG9rZW5QdWJsaWNLZXlVUkxG
b3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OlNldFRva2VuU2lnbmF0dXJlVVJMRm9y
VGVzdGluZzoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNG
b3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6Ok1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4
cGlyZWRGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OlNldEVwaGVtZXJhbE1lYXN1
cmVtZW50Rm9yVGVzdGluZzoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTZXRQQ01GcmF1ZFByZXZl
bnRpb25WYWx1ZXNGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OlN0YXJ0VGltZXJJ
bW1lZGlhdGVseUZvclRlc3Rpbmc6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIE1l
c3NhZ2VUeXBlOjpNYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJl
ZEZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6RGVzdHJveVN0b3JlRm9yVGVzdGlu
ZzoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpUb1N0cmluZ0ZvclRlc3Rpbmc6CisgICAgY2FzZSBN
ZXNzYWdlVHlwZTo6Q2xlYXI6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6Q2xlYXJGb3JSZWdpc3Ry
YWJsZURvbWFpbjoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlciYgZGFlbW9uTWFuYWdlcigpCit7CisgICAgLy8gRklYTUU6IEdpdmUg
dGhlIG1hbmFnZXIgYSB2YWxpZCBzdG9yYWdlIGRpcmVjdG9yeS4KKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyPiBpbnN0YW5jZShtYWtlVW5p
cXVlUmVmPFBDTTo6RGFlbW9uQ2xpZW50PigpLCB7IH0pOworICAgIHJldHVybiBpbnN0YW5jZS5n
ZXQoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSW5mbz4KK3ZvaWQgaGFuZGxlUENNTWVzc2Fn
ZShQQ006OkVuY29kZWRNZXNzYWdlJiYgZW5jb2RlZE1lc3NhZ2UpCit7CisgICAgUENNOjpEZWNv
ZGVyIGRlY29kZXIoV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworCisgICAgc3RkOjpvcHRpb25h
bDx0eXBlbmFtZSBJbmZvOjpBcmdzVHVwbGU+IGFyZ3VtZW50czsKKyAgICBkZWNvZGVyID4+IGFy
Z3VtZW50czsKKyAgICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50cykpCisgICAgICAgIHJldHVybjsK
KworICAgIElQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoKmFyZ3VtZW50cyksICZkYWVt
b25NYW5hZ2VyKCksIEluZm86Ok1lbWJlckZ1bmN0aW9uKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgSW5mbz4KK3ZvaWQgaGFuZGxlUENNTWVzc2FnZVdpdGhSZXBseShQQ006OkVuY29kZWRNZXNz
YWdlJiYgZW5jb2RlZE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUENNOjpFbmNvZGVk
TWVzc2FnZSYmKT4mJiByZXBseVNlbmRlcikKK3sKKyAgICBQQ006OkRlY29kZXIgZGVjb2RlcihX
VEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHR5cGVuYW1lIElu
Zm86OkFyZ3NUdXBsZT4gYXJndW1lbnRzOworICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOworICAg
IGlmIChVTkxJS0VMWSghYXJndW1lbnRzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdHlwZW5h
bWUgSW5mbzo6UmVwbHkgY29tcGxldGlvbkhhbmRsZXIgeyBbcmVwbHlTZW5kZXIgPSBXVEZNb3Zl
KHJlcGx5U2VuZGVyKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKKyAgICAgICAgcmVwbHlT
ZW5kZXIoSW5mbzo6ZW5jb2RlUmVwbHkoYXJncy4uLikpOworICAgIH19OworCisgICAgSVBDOjpj
YWxsTWVtYmVyRnVuY3Rpb24oV1RGTW92ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksICZkYWVtb25NYW5hZ2VyKCksIEluZm86Ok1lbWJlckZ1bmN0aW9uKTsKK30KKwor
dm9pZCBkZWNvZGVNZXNzYWdlQW5kU2VuZFRvTWFuYWdlcihNZXNzYWdlVHlwZSBtZXNzYWdlVHlw
ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZW5jb2RlZE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIHJlcGx5U2VuZGVyKQoreworICAgIEFTU0VSVChtZXNz
YWdlVHlwZVNlbmRzUmVwbHkobWVzc2FnZVR5cGUpID09ICEhcmVwbHlTZW5kZXIpOworICAgIHN3
aXRjaCAobWVzc2FnZVR5cGUpIHsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlN0b3JlVW5h
dHRyaWJ1dGVkOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJbmZvOjpzdG9yZVVu
YXR0cmlidXRlZD4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OkhhbmRsZUF0dHJpYnV0aW9uOgorICAgICAgICBoYW5k
bGVQQ01NZXNzYWdlPE1lc3NhZ2VJbmZvOjpoYW5kbGVBdHRyaWJ1dGlvbj4oV1RGTW92ZShlbmNv
ZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6
OkNsZWFyOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjpj
bGVhcj4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSksIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpDbGVhckZvclJlZ2lzdHJh
YmxlRG9tYWluOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZv
OjpjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSwgV1RG
TW92ZShyZXBseVNlbmRlcikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2Fn
ZVR5cGU6Ok1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlOgor
ICAgICAgICBoYW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJbmZvOjptaWdyYXRlUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZT4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlRvU3RyaW5nRm9yVGVz
dGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6dG9T
dHJpbmdGb3JUZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSwgV1RGTW92ZShyZXBseVNl
bmRlcikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlNldE92
ZXJyaWRlVGltZXJGb3JUZXN0aW5nOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJ
bmZvOjpzZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlNldFRva2VuUHVi
bGljS2V5VVJMRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5m
bzo6c2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdl
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6U2V0VG9rZW5T
aWduYXR1cmVVUkxGb3JUZXN0aW5nOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJ
bmZvOjpzZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1lc3Nh
Z2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpTZXRBdHRy
aWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdlPE1l
c3NhZ2VJbmZvOjpzZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nPihXVEZNb3ZlKGVu
Y29kZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlw
ZTo6TWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3Rpbmc6CisgICAgICAgIGhhbmRs
ZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86Om1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JU
ZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUENNOjpNZXNzYWdlVHlwZTo6TWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dHNBc0V4cGlyZWRGb3JUZXN0aW5nOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdlV2l0aFJlcGx5
PE1lc3NhZ2VJbmZvOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhw
aXJlZEZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5U2Vu
ZGVyKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6U2V0RXBo
ZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdlPE1l
c3NhZ2VJbmZvOjpzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3Rpbmc+KFdURk1vdmUoZW5j
b2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBl
OjpTZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nOgorICAgICAgICBoYW5kbGVQ
Q01NZXNzYWdlPE1lc3NhZ2VJbmZvOjpzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0
aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UENNOjpNZXNzYWdlVHlwZTo6U3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZzoKKyAgICAg
ICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6c3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9y
VGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBDTTo6TWVzc2FnZVR5cGU6OkRlc3Ryb3lTdG9yZUZvclRlc3Rpbmc6CisgICAgICAgIGhh
bmRsZVBDTU1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86OmRlc3Ryb3lTdG9yZUZvclRlc3Rp
bmc+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZh
Y2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTI5MmZhOWYwOTU1YjNlMDIyNDQ2NTAzNzFlZGI0OTM5YzA3MWZhZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgKQEAgLTAsMCArMSwxMjYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWlu
Lmg+CisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2VudW0gY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgOiBib29s
IHsgVW5hdHRyaWJ1dGVkLCBBdHRyaWJ1dGVkIH07CisKK2NsYXNzIFByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlcjsKKworbmFtZXNwYWNlIFBDTSB7CisKK2NsYXNzIE1hbmFnZXJJbnRlcmZh
Y2UgeworcHVibGljOgorICAgIHZpcnR1YWwgfk1hbmFnZXJJbnRlcmZhY2UoKSB7IH07CisKKyAg
ICB1c2luZyBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSA9IFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZTsKKyAgICB1c2luZyBBdHRy
aWJ1dGlvblRyaWdnZXJEYXRhID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0
dHJpYnV0aW9uVHJpZ2dlckRhdGE7CisgICAgdXNpbmcgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
PSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKKyAgICB1c2luZyBSZWdpc3RyYWJs
ZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIFNvdXJjZVNp
dGUgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZTsKKworICAg
IHZpcnR1YWwgdm9pZCBzdG9yZVVuYXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUF0dHJpYnV0aW9uKEF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEmJiwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmIHJlZGlyZWN0RG9tYWluLCBjb25zdCBVUkwmIGZpcnN0UGFydHlVUkwpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgbWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UoUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlv
blR5cGUpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB0b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTCYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwmJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVSTCYmIHNv
dXJjZVVSTCwgVVJMJiYgZGVzdGluYXRpb25VUkwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFy
a0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3RpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVz
dGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhTdHJpbmcmJiB1bmxp
bmthYmxlVG9rZW4sIFN0cmluZyYmIHNlY3JldFRva2VuLCBTdHJpbmcmJiBzaWduYXR1cmUsIFN0
cmluZyYmIGtleUlEKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0VGltZXJJbW1lZGlhdGVs
eUZvclRlc3RpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lTdG9yZUZvclRlc3Rp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7Cit9OworCitjb25zdGV4cHIgY29u
c3QgY2hhciogcHJvdG9jb2xWZXJzaW9uS2V5IHsgInZlcnNpb24iIH07Citjb25zdGV4cHIgdWlu
dDY0X3QgcHJvdG9jb2xWZXJzaW9uVmFsdWUgeyAxIH07CisKK2NvbnN0ZXhwciBjb25zdCBjaGFy
KiBwcm90b2NvbE1lc3NhZ2VUeXBlS2V5IHsgIm1lc3NhZ2UgdHlwZSIgfTsKK2VudW0gY2xhc3Mg
TWVzc2FnZVR5cGUgOiB1aW50OF90IHsKKyAgICBTdG9yZVVuYXR0cmlidXRlZCwKKyAgICBIYW5k
bGVBdHRyaWJ1dGlvbiwKKyAgICBDbGVhciwKKyAgICBDbGVhckZvclJlZ2lzdHJhYmxlRG9tYWlu
LAorICAgIE1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlLAor
ICAgIFRvU3RyaW5nRm9yVGVzdGluZywKKyAgICBTZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZywK
KyAgICBTZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcsCisgICAgU2V0VG9rZW5TaWduYXR1
cmVVUkxGb3JUZXN0aW5nLAorICAgIFNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3Rpbmcs
CisgICAgTWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3RpbmcsCisgICAgTWFya0F0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nLAorICAg
IFNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZywKKyAgICBTZXRQQ01GcmF1ZFByZXZl
bnRpb25WYWx1ZXNGb3JUZXN0aW5nLAorICAgIFN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3Rp
bmcsCisgICAgRGVzdHJveVN0b3JlRm9yVGVzdGluZywKK307CisKK2NvbnN0ZXhwciBjb25zdCBj
aGFyKiBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5IHsgImVuY29kZWQgbWVzc2FnZSIgfTsKK3Vz
aW5nIEVuY29kZWRNZXNzYWdlID0gVmVjdG9yPHVpbnQ4X3Q+OworCit2b2lkIGRlY29kZU1lc3Nh
Z2VBbmRTZW5kVG9NYW5hZ2VyKE1lc3NhZ2VUeXBlLCBWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJik7Citib29sIG1l
c3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdlVHlwZSk7CisKK30gLy8gbmFtZXNwYWNlIFBDTQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlPiB7CisgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlLAor
ICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlN0b3JlVW5hdHRyaWJ1dGVkLAorICAg
ICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OkhhbmRsZUF0dHJpYnV0aW9uLAorICAgICAg
ICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OkNsZWFyLAorICAgICAgICBXZWJLaXQ6OlBDTTo6
TWVzc2FnZVR5cGU6OkNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4sCisgICAgICAgIFdlYktpdDo6
UENNOjpNZXNzYWdlVHlwZTo6TWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2Fj
eVN0b3JhZ2UsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6VG9TdHJpbmdGb3JU
ZXN0aW5nLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlNldE92ZXJyaWRlVGlt
ZXJGb3JUZXN0aW5nLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlNldFRva2Vu
UHVibGljS2V5VVJMRm9yVGVzdGluZywKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBl
OjpTZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6UENNOjpN
ZXNzYWdlVHlwZTo6U2V0QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZywKKyAgICAgICAg
V2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpNYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9y
VGVzdGluZywKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpNYXJrQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcsCisgICAgICAgIFdl
YktpdDo6UENNOjpNZXNzYWdlVHlwZTo6U2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5n
LAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlNldFBDTUZyYXVkUHJldmVudGlv
blZhbHVlc0ZvclRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6U3Rh
cnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZywKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3Nh
Z2VUeXBlOjpEZXN0cm95U3RvcmVGb3JUZXN0aW5nCisgICAgPjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2FlNGU0
ZmY1OGNiNjFmNTVmNWI1MTk1YmE1ZTNkMGJhOGRiZGQzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyUHJveHkuaCIKKworI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5o
IgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK3RlbXBsYXRlPE1lc3NhZ2VUeXBlIG1l
c3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgordm9pZCBzZW5kTWVzc2FnZShBcmdzJiYuLi4g
YXJncykKK3sKKyAgICBFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2Rlci5lbmNvZGUoc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICBDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9EYWVt
b24oKS5zZW5kKG1lc3NhZ2VUeXBlLCBlbmNvZGVyLnRha2VCdWZmZXIoKSk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0cnVjdCBSZXBseUNhbGxlcjsKK3RlbXBsYXRlPD4gc3Ry
dWN0IFJlcGx5Q2FsbGVyPD4geworICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShEZWNvZGVyJiYg
ZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9Cit9OwordGVtcGxhdGU8
PiBzdHJ1Y3QgUmVwbHlDYWxsZXI8U3RyaW5nPiB7CisgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5
KERlY29kZXImJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBz
dHJpbmc7CisgICAgICAgIGRlY29kZXIgPj4gc3RyaW5nOworICAgICAgICBpZiAoIXN0cmluZykK
KyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKCpzdHJpbmcpKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTxN
ZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJncywgdHlwZW5hbWUuLi4gUmVw
bHlBcmdzPgordm9pZCBzZW5kTWVzc2FnZVdpdGhSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlcGx5QXJncy4uLik+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFyZ3MmJi4uLiBhcmdzKQorewor
ICAgIEVuY29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyLmVuY29kZShzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOworICAgIENvbm5lY3Rpb246OmNvbm5lY3Rpb25Ub0RhZW1vbigpLnNlbmRX
aXRoUmVwbHkobWVzc2FnZVR5cGUsIGVuY29kZXIudGFrZUJ1ZmZlcigpLCBbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8gcmVwbHlCdWZmZXIpIG11
dGFibGUgeworICAgICAgICBEZWNvZGVyIGRlY29kZXIoV1RGTW92ZShyZXBseUJ1ZmZlcikpOwor
ICAgICAgICBSZXBseUNhbGxlcjxSZXBseUFyZ3MuLi4+OjpjYWxsUmVwbHkoV1RGTW92ZShkZWNv
ZGVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lkIE1h
bmFnZXJQcm94eTo6c3RvcmVVbmF0dHJpYnV0ZWQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQmJiBwY20pCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlN0b3JlVW5hdHRy
aWJ1dGVkPihwY20pOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6aGFuZGxlQXR0cmlidXRpb24o
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEm
JiB0cmlnZ2VyRGF0YSwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZGlyZWN0RG9tYWluLCBjb25zdCBVUkwmIGZpcnN0UGFydHlVUkwpCit7Cisg
ICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OkhhbmRsZUF0dHJpYnV0aW9uPih0cmlnZ2VyRGF0
YSwgcmVxdWVzdFVSTCwgcmVkaXJlY3REb21haW4sIGZpcnN0UGFydHlVUkwpOworfQorCit2b2lk
IE1hbmFnZXJQcm94eTo6Y2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VUeXBlOjpDbGVh
cj4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6
Y2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZVR5cGU6OkNsZWFyRm9yUmVnaXN0
cmFibGVEb21haW4+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkb21haW4pOworfQorCit2
b2lkIE1hbmFnZXJQcm94eTo6bWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2Fj
eVN0b3JhZ2UoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBwY20sIFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIHR5cGUpCit7CisgICAgc2VuZE1lc3NhZ2U8
TWVzc2FnZVR5cGU6Ok1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9y
YWdlPihwY20sIHR5cGUpOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6dG9TdHJpbmdGb3JUZXN0
aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
Y29uc3QKK3sKKyAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlVHlwZTo6VG9TdHJpbmdG
b3JUZXN0aW5nPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTWFuYWdl
clByb3h5OjpzZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhib29sIHZhbHVlKQoreworICAgIHNl
bmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpTZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZz4odmFsdWUp
OworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6c2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5n
KFVSTCYmIHVybCkKK3sKKyAgICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlwZTo6U2V0VG9rZW5QdWJs
aWNLZXlVUkxGb3JUZXN0aW5nPih1cmwpOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6c2V0VG9r
ZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFVSTCYmIHVybCkKK3sKKyAgICBzZW5kTWVzc2FnZTxN
ZXNzYWdlVHlwZTo6U2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nPih1cmwpOworfQorCit2
b2lkIE1hbmFnZXJQcm94eTo6c2V0QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZyhVUkwm
JiBzb3VyY2VVUkwsIFVSTCYmIGRlc3RpbmF0aW9uVVJMKQoreworICAgIHNlbmRNZXNzYWdlPE1l
c3NhZ2VUeXBlOjpTZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nPihzb3VyY2VVUkws
IGRlc3RpbmF0aW9uVVJMKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6Om1hcmtBbGxVbmF0dHJp
YnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCkKK3sKKyAgICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlw
ZTo6TWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3Rpbmc+KCk7Cit9CisKK3ZvaWQg
TWFuYWdlclByb3h5OjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhw
aXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VUeXBlOjpNYXJrQXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rpbmc+KFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OnNldEVwaGVtZXJh
bE1lYXN1cmVtZW50Rm9yVGVzdGluZyhib29sIHZhbHVlKQoreworICAgIHNlbmRNZXNzYWdlPE1l
c3NhZ2VUeXBlOjpTZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3Rpbmc+KHZhbHVlKTsKK30K
Kwordm9pZCBNYW5hZ2VyUHJveHk6OnNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3Rp
bmcoU3RyaW5nJiYgdW5saW5rYWJsZVRva2VuLCBTdHJpbmcmJiBzZWNyZXRUb2tlbiwgU3RyaW5n
JiYgc2lnbmF0dXJlLCBTdHJpbmcmJiBrZXlJRCkKK3sKKyAgICBzZW5kTWVzc2FnZTxNZXNzYWdl
VHlwZTo6U2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZz4odW5saW5rYWJsZVRv
a2VuLCBzZWNyZXRUb2tlbiwgc2lnbmF0dXJlLCBrZXlJRCk7Cit9CisKK3ZvaWQgTWFuYWdlclBy
b3h5OjpzdGFydFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nKCkKK3sKKyAgICBzZW5kTWVzc2Fn
ZTxNZXNzYWdlVHlwZTo6U3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZz4oKTsKK30KKwor
dm9pZCBNYW5hZ2VyUHJveHk6OmRlc3Ryb3lTdG9yZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRNZXNzYWdlV2l0aFJl
cGx5PE1lc3NhZ2VUeXBlOjpEZXN0cm95U3RvcmVGb3JUZXN0aW5nPihXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2Q0MTE5OTRiNGIw
NmYwZjZiNWQ5OTE1ZjJmMmNkZmFjYTk2ZTZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcklu
dGVyZmFjZS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCituYW1lc3BhY2UgUENNIHsKKworY2xhc3MgTWFuYWdlclByb3h5IDogcHVibGljIE1h
bmFnZXJJbnRlcmZhY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIHZvaWQgc3RvcmVVbmF0dHJpYnV0ZWQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQmJikgZmluYWw7CisgICAgdm9pZCBoYW5kbGVBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBjb25zdCBVUkwmIHJl
cXVlc3RVUkwsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVkaXJlY3REb21haW4sIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCkgZmluYWw7CisgICAgdm9pZCBjbGVhcihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgY2xlYXJGb3JSZWdpc3RyYWJsZURv
bWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBtaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRGcm9tTGVnYWN5U3RvcmFnZShXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkgZmluYWw7CisKKyAgICB2b2lk
IHRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpIGNv
bnN0IGZpbmFsOworICAgIHZvaWQgc2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCkgZmlu
YWw7CisgICAgdm9pZCBzZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJMJiYpIGZpbmFs
OworICAgIHZvaWQgc2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFVSTCYmKSBmaW5hbDsK
KyAgICB2b2lkIHNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJMJiYgc291cmNl
VVJMLCBVUkwmJiBkZXN0aW5hdGlvblVSTCkgZmluYWw7CisgICAgdm9pZCBtYXJrQWxsVW5hdHRy
aWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZygpIGZpbmFsOworICAgIHZvaWQgbWFya0F0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBzZXRFcGhlbWVyYWxNZWFzdXJlbWVu
dEZvclRlc3RpbmcoYm9vbCkgZmluYWw7CisgICAgdm9pZCBzZXRQQ01GcmF1ZFByZXZlbnRpb25W
YWx1ZXNGb3JUZXN0aW5nKFN0cmluZyYmIHVubGlua2FibGVUb2tlbiwgU3RyaW5nJiYgc2VjcmV0
VG9rZW4sIFN0cmluZyYmIHNpZ25hdHVyZSwgU3RyaW5nJiYga2V5SUQpIGZpbmFsOworICAgIHZv
aWQgc3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZygpIGZpbmFsOworICAgIHZvaWQgZGVz
dHJveVN0b3JlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29j
b2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWMzMWYwN2JmOGU4ODMyMTA1MzI4ZGI0OGVjZmEwMjY3MWFiYTljNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2Eu
bW0KQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oIgorCisjaW1wb3J0ICJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oIgorI2ltcG9ydCA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKwor
Q29ubmVjdGlvbjo6Q29ubmVjdGlvbihPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiYmIGNv
bm5lY3Rpb24pCisgICAgOiBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkgeyB9CisK
K0Nvbm5lY3Rpb24gQ29ubmVjdGlvbjo6Y29ubmVjdGlvblRvRGFlbW9uKCkKK3sKKyAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPU09iamVj
dFB0cjx4cGNfY29ubmVjdGlvbl90Pj4gY29ubmVjdGlvbjsKKyAgICBpZiAoIWNvbm5lY3Rpb24u
Z2V0KCkpIHsKKyAgICAgICAgY29ubmVjdGlvbi5nZXQoKSA9IGFkb3B0T1NPYmplY3QoeHBjX2Nv
bm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0
aW9uZC5zZXJ2aWNlIiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgMCkpOworICAgICAgICB4
cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihjb25uZWN0aW9uLmdldCgpLmdldCgpLCBe
KHhwY19vYmplY3RfdCBldmVudCkgeworICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKKyAgICAgICAgICAgIGlmIChldmVudCA9PSBYUENfRVJST1JfQ09OTkVDVElPTl9JTlRF
UlJVUFRFRCkgeworICAgICAgICAgICAgICAgIC8vIERhZW1vbiBjcmFzaGVkLCB3ZSB3aWxsIG5l
ZWQgdG8gbWFrZSBhIG5ldyBjb25uZWN0aW9uIHRvIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBkYWVt
b24uCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5nZXQoKSA9IG51bGxwdHI7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX2FjdGl2YXRlKGNvbm5lY3Rpb24uZ2V0KCku
Z2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gQ29ubmVjdGlvbihPU09iamVjdFB0cjx4cGNfY29u
bmVjdGlvbl90Pihjb25uZWN0aW9uLmdldCgpKSk7Cit9CisKK3N0YXRpYyBPU09iamVjdFB0cjx4
cGNfb2JqZWN0X3Q+IGRpY3Rpb25hcnlGcm9tTWVzc2FnZShNZXNzYWdlVHlwZSBtZXNzYWdlVHlw
ZSwgRW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdlKQoreworICAgIGF1dG8gZGljdGlvbmFyeSA9IGFk
b3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlX2VtcHR5KCkpOworICAgIGFkZFZlcnNp
b25BbmRFbmNvZGVkTWVzc2FnZVRvRGljdGlvbmFyeShXVEZNb3ZlKG1lc3NhZ2UpLCBkaWN0aW9u
YXJ5LmdldCgpKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRpY3Rpb25hcnkuZ2V0
KCksIHByb3RvY29sTWVzc2FnZVR5cGVLZXksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihtZXNzYWdl
VHlwZSkpOworICAgIHJldHVybiBkaWN0aW9uYXJ5OworfQorCit2b2lkIENvbm5lY3Rpb246OnNl
bmQoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYgbWVzc2FnZSkKK3sK
KyAgICBpZiAoIW1fY29ubmVjdGlvbikgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2Fn
ZShtX2Nvbm5lY3Rpb24uZ2V0KCksIGRpY3Rpb25hcnlGcm9tTWVzc2FnZShtZXNzYWdlVHlwZSwg
V1RGTW92ZShtZXNzYWdlKSkuZ2V0KCkpOworfQorCit2b2lkIENvbm5lY3Rpb246OnNlbmRXaXRo
UmVwbHkoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYgbWVzc2FnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBpZiAoIW1fY29ubmVjdGlvbikgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgfQor
CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gZGljdGlvbmFyeUZyb21NZXNzYWdlKG1lc3NhZ2VUeXBl
LCBXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2Vfd2l0
aF9yZXBseShtX2Nvbm5lY3Rpb24uZ2V0KCksIGRpY3Rpb25hcnkuZ2V0KCksIGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKHhwY19vYmplY3RfdCByZXBseSkgbXV0YWJsZSB7CisgICAg
ICAgIGlmICh4cGNfZ2V0X3R5cGUocmVwbHkpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpIHsKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHhwY19kaWN0aW9uYXJ5
X2dldF91aW50NjQocmVwbHksIHByb3RvY29sVmVyc2lvbktleSkgIT0gcHJvdG9jb2xWZXJzaW9u
VmFsdWUpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIH0KKyAgICAgICAgc2l6ZV90
IGRhdGFTaXplIHsgMCB9OworICAgICAgICBjb25zdCB2b2lkKiBkYXRhID0geHBjX2RpY3Rpb25h
cnlfZ2V0X2RhdGEocmVwbHksIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksICZkYXRhU2l6ZSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEpLCBkYXRhU2l6ZSB9KTsKKyAgICB9KS5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TmV0d29ya0xvYWRlckNvY29hLm1tCmluZGV4IGQ2YmYwNmUxMTFmNmJiNWY3ZWYyOGYxOTZk
MmVlMzgwMGM3YzhhNGMuLmIzYmExZTI0MjQyMDhlNzU0MThjMjcyZTZiNjU0MDczNDAzNmQ2NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbQpA
QCAtNTcsNiArNTcsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUENNUmVxdWVzdChXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQsCiAKIC0gKHZvaWQpVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Npb25UYXNrICopdGFz
ayBkaWRSZWNlaXZlQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hh
bGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxl
bmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkp
Y29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICAvLyBGSVhNRTogQWRkIHBsdWJtaW5nIHNvIHRoYXQg
d2UgY2FuIHRlbGwgdGhlIGRhZW1vbiB3aGljaCBjZXJ0aWZpY2F0ZXMgdG8gYWNjZXB0IHdpdGhv
dXQgdXNpbmcgTmV0d29ya1Nlc3Npb25Db2NvYS4KICAgICBpZiAoW2NoYWxsZW5nZS5wcm90ZWN0
aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QgaXNFcXVhbFRvU3RyaW5nOk5TVVJMQXV0aGVu
dGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdF0KICAgICAgICAgJiYgTmV0d29ya1Nlc3Npb25Db2Nv
YTo6YWxsb3dzU3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjaGFsbGVuZ2UpKQogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVz
ZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5n
ZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRY
UENVdGlsaXRpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzcwNzg2ZWYxNTk4YzgzZmE0MzYyZGYzZDZjN2Zl
Nzc4M2UxMjFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQ
Q1V0aWxpdGllcy5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCit2b2lkIGFkZFZlcnNp
b25BbmRFbmNvZGVkTWVzc2FnZVRvRGljdGlvbmFyeShWZWN0b3I8dWludDhfdD4mJiwgeHBjX29i
amVjdF90KTsKKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5tbSBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2Ev
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTYzMDMx
YjVjMzZiNzEyNjE4MjE3MDQzZmY5N2RmZjk0NzRjNWQyYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2Ev
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0KQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRYUENVdGlsaXRpZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFj
ZSBQQ00geworCit2b2lkIGFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2FnZVRvRGljdGlvbmFyeShW
ZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCB4cGNfb2JqZWN0X3QgZGljdGlvbmFyeSkKK3sKKyAg
ICBBU1NFUlQoeHBjX2dldF90eXBlKGRpY3Rpb25hcnkpID09IFhQQ19UWVBFX0RJQ1RJT05BUlkp
OworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFyeSwgUENNOjpwcm90b2Nv
bFZlcnNpb25LZXksIFBDTTo6cHJvdG9jb2xWZXJzaW9uVmFsdWUpOworCisgICAgYXV0byBidWZm
ZXJTaXplID0gbWVzc2FnZS5zaXplKCk7CisgICAgYXV0byByYXdQb2ludGVyID0gbWVzc2FnZS5y
ZWxlYXNlQnVmZmVyKCkubGVha1B0cigpOworICAgIGF1dG8gZGlzcGF0Y2hEYXRhID0gYWRvcHRO
UyhkaXNwYXRjaF9kYXRhX2NyZWF0ZShyYXdQb2ludGVyLCBidWZmZXJTaXplLCBkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBmYXN0RnJlZShyYXdQb2ludGVyKTsKKyAgICB9
KSk7CisgICAgYXV0byB4cGNEYXRhID0gYWRvcHRPU09iamVjdCh4cGNfZGF0YV9jcmVhdGVfd2l0
aF9kaXNwYXRjaF9kYXRhKGRpc3BhdGNoRGF0YS5nZXQoKSkpOworICAgIHhwY19kaWN0aW9uYXJ5
X3NldF92YWx1ZShkaWN0aW9uYXJ5LCBQQ006OnByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksIHhw
Y0RhdGEuZ2V0KCkpOworCit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL2Nv
bS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCmluZGV4
IDNiOTc5NDU1MDc5ZTQ1NmUzNTQ5M2UxZTFlNWNhNDZiOWQ3ZTg4ZWQuLjE5NzRiOGU5ZjI1OWFl
ZWZjOTQ0NjQ2ODRiMjA0ZDM1MGYzOGQ0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3
b3JrUHJvY2Vzcy5zYi5pbgpAQCAtMzU3LDYgKzM1Nyw4IEBACiAgICAgKGdsb2JhbC1uYW1lICJj
b20uYXBwbGUuQXBwU1NPLnNlcnZpY2UteHBjIikKICkKIAorKGFsbG93IG1hY2gtbG9va3VwIChn
bG9iYWwtbmFtZSAiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIikpCisK
ICh3aXRoLWZpbHRlciAodWlkIDApCiAgICAgKGFsbG93IG1hY2gtbG9va3VwCiAgICAgICAgIChn
bG9iYWwtbmFtZSAiY29tLmFwcGxlLkRpc2tBcmJpdHJhdGlvbi5kaXNrYXJiaXRyYXRpb25kIikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAppbmRleCBiY2Y3Y2Qx
NjNkOWJhOTIzZDE4MGEwM2Y4YTZlZTQ1MGY3NmMxYTFkLi41MzNlODA5NzA1NDA1NWI4MWE2YzVl
YTEwOTgxYzViNGQ0MDI4NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Bcmd1bWVudENvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1l
bnRDb2Rlci5oCkBAIC00OCw2ICs0OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
ID0gdm9pZD4gc3RydWN0IEFyZ3VtZW50Q29kZXIgewogICAgICAgICB0LmVuY29kZShlbmNvZGVy
KTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFQ+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAg
aWYgY29uc3RleHByKEhhc01vZGVybkRlY29kZXJWPFQ+KQpAQCAtODIsNiArODMsNyBAQCBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJp
dGhtZXRpY192PFQ+Pj4gewogICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YoVCksIGFsaWdu
b2YoVCkpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewogICAg
ICAgICBUIHJlc3VsdDsKQEAgLTEwMCw2ICsxMDIsNyBAQCBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxU
LCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bV92PFQ+Pj4gewogICAgICAg
ICBlbmNvZGVyIDw8IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGU8VD4odmFsdWUpOwogICAgIH0K
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAgICBzdGQ6Om9wdGlv
bmFsPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8VD4+IHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDgxMGVlMmNlNTFmMjdjMmRiZDYw
N2U1MzJhYTI2ZDYwNTY5YWIyOWIuLmZmZjllNWUzZjZiM2UyZWQ1NmI1NjYxZTAzMjc0OWVlNjMy
MzZkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29k
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5j
cHAKQEAgLTI3LDE2ICsyNywyMyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAKICNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnREZWNvZGVyLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmgi
CiAjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBJUEMgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogdm9pZCBBcmd1bWVudENvZGVy
PFdhbGxUaW1lPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdhbGxUaW1lJiB0aW1l
KQogewogICAgIGVuY29kZXIgPDwgdGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCk7CiB9
Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFdhbGxUaW1lPjo6ZW5jb2RlPEVuY29kZXI+
KEVuY29kZXImLCBjb25zdCBXYWxsVGltZSYpOwordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2Rl
cjxXYWxsVGltZT46OmVuY29kZTxXZWJLaXQ6OlBDTTo6RW5jb2Rlcj4oV2ViS2l0OjpQQ006OkVu
Y29kZXImLCBjb25zdCBXYWxsVGltZSYpOwogCiBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBBcmd1
bWVudENvZGVyPFdhbGxUaW1lPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdhbGxUaW1lJiB0
aW1lKQogewpAQCAtNDgsNiArNTUsNyBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBBcmd1bWVu
dENvZGVyPFdhbGxUaW1lPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdhbGxUaQogICAgIHJl
dHVybiB0cnVlOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogV0FSTl9VTlVTRURf
UkVUVVJOIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdGlt
ZTsKQEAgLTU2LDYgKzY0LDEwIEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFdh
bGxUaW1lPiBBcmd1bWVudENvZGVyPFdhbGxUaW1lPjo6ZGVjb2RlKERlY29kCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcygq
dGltZSk7CiB9Cit0ZW1wbGF0ZQorc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gQXJndW1lbnRDb2Rl
cjxXYWxsVGltZT46OmRlY29kZTxEZWNvZGVyPihEZWNvZGVyJik7Cit0ZW1wbGF0ZQorc3RkOjpv
cHRpb25hbDxXYWxsVGltZT4gQXJndW1lbnRDb2RlcjxXYWxsVGltZT46OmRlY29kZTxXZWJLaXQ6
OlBDTTo6RGVjb2Rlcj4oV2ViS2l0OjpQQ006OkRlY29kZXImKTsKIAogdm9pZCBBcmd1bWVudENv
ZGVyPEF0b21TdHJpbmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXRvbVN0cmlu
ZyYgYXRvbVN0cmluZykKIHsKQEAgLTEzMywxMiArMTQ1LDE0IEBAIHRlbXBsYXRlCiB2b2lkIEFy
Z3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlPEVuY29kZXI+KEVuY29kZXImLCBjb25zdCBTdHJp
bmcmKTsKIHRlbXBsYXRlCiB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlPFN0cmVh
bUNvbm5lY3Rpb25FbmNvZGVyPihTdHJlYW1Db25uZWN0aW9uRW5jb2RlciYsIGNvbnN0IFN0cmlu
ZyYpOwordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGU8V2ViS2l0
OjpQQ006OkVuY29kZXI+KFdlYktpdDo6UENNOjpFbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7CiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZSwgdHlwZW5hbWUgRGVjb2Rlcj4KIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGRlY29kZVN0cmluZ1RleHQoRGVjb2RlciYgZGVjb2RlciwgdWludDMyX3QgbGVu
Z3RoKQogewogICAgIC8vIEJlZm9yZSBhbGxvY2F0aW5nIHRoZSBzdHJpbmcsIG1ha2Ugc3VyZSB0
aGF0IHRoZSBkZWNvZGVyIGJ1ZmZlciBpcyBiaWcgZW5vdWdoLgotICAgIGlmICghZGVjb2Rlci5i
dWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPENoYXJhY3RlclR5cGU+KGxlbmd0aCkpCisgICAg
aWYgKCFkZWNvZGVyLnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48Q2hhcmFj
dGVyVHlwZT4obGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAg
ICBDaGFyYWN0ZXJUeXBlKiBidWZmZXI7CkBAIC0xNDksMjUgKzE2MywzMiBAQCBzdGF0aWMgaW5s
aW5lIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJpbmdUZXh0KERlY29kZXImIGRlY29k
ZXIsIHVpbnQzMl90CiAgICAgcmV0dXJuIHN0cmluZzsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUg
RGVjb2Rlcj4KIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQXJndW1l
bnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICB1aW50MzJf
dCBsZW5ndGg7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShsZW5ndGgpKQorICAgIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGxlbmd0aDsKKyAgICBkZWNvZGVyID4+IGxlbmd0aDsKKyAgICBpZiAo
IWxlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBpZiAobGVu
Z3RoID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkgeworICAgIGlmICgq
bGVuZ3RoID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkgewogICAgICAg
ICAvLyBUaGlzIGlzIHRoZSBudWxsIHN0cmluZy4KICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgIH0KICAgICAKLSAgICBib29sIGlzOEJpdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlz
OEJpdCkpCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpczhCaXQ7CisgICAgZGVjb2RlciA+PiBp
czhCaXQ7CisgICAgaWYgKCFpczhCaXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCi0gICAgaWYgKGlzOEJpdCkKLSAgICAgICAgcmV0dXJuIGRlY29kZVN0cmluZ1RleHQ8TENo
YXI+KGRlY29kZXIsIGxlbmd0aCk7Ci0gICAgcmV0dXJuIGRlY29kZVN0cmluZ1RleHQ8VUNoYXI+
KGRlY29kZXIsIGxlbmd0aCk7CisgICAgaWYgKCppczhCaXQpCisgICAgICAgIHJldHVybiBkZWNv
ZGVTdHJpbmdUZXh0PExDaGFyPihkZWNvZGVyLCAqbGVuZ3RoKTsKKyAgICByZXR1cm4gZGVjb2Rl
U3RyaW5nVGV4dDxVQ2hhcj4oZGVjb2RlciwgKmxlbmd0aCk7CiB9Cit0ZW1wbGF0ZQorc3RkOjpv
cHRpb25hbDxTdHJpbmc+IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2RlPERlY29kZXI+KERl
Y29kZXImKTsKK3RlbXBsYXRlCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQXJndW1lbnRDb2RlcjxT
dHJpbmc+OjpkZWNvZGU8V2ViS2l0OjpQQ006OkRlY29kZXI+KFdlYktpdDo6UENNOjpEZWNvZGVy
Jik7CiAKIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFN0cmluZyYgcmVzdWx0KQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggYzk3YTZmNTc2ZWZkYWVhZTA0ZjY5
ODNiZTI1OTQyY2UyMDM5ZmU5Zi4uYjE4MmM1NGViNzg4ZDNkNjk4MTRhYTgwNzNlNGZmMWFhOWYz
OTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBA
IC0zMDAsNiArMzAwLDcgQEAgYXV0byB0dXBsZUZyb21UdXBsZUFuZE9iamVjdChUJiYgb2JqZWN0
LCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiYmIHR1cGxlKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
eXBlLCB0eXBlbmFtZS4uLiBUeXBlcz4KIHN0cnVjdCBUdXBsZURlY29kZXJJbXBsIHsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6
dHVwbGU8VHlwZSwgVHlwZXMuLi4+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8VHlwZT4gb3B0aW9uYWw7CkBAIC0zMTcsNiArMzE4LDcgQEAg
c3RydWN0IFR1cGxlRGVjb2RlckltcGwgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogc3Ry
dWN0IFR1cGxlRGVjb2RlckltcGw8VHlwZT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29k
ZXI+CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxUeXBlPj4gZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFR5cGU+IG9wdGlv
bmFsOwpAQCAtMzI5LDYgKzMzMSw3IEBAIHN0cnVjdCBUdXBsZURlY29kZXJJbXBsPFR5cGU+IHsK
IAogdGVtcGxhdGU8c2l6ZV90IHNpemUsIHR5cGVuYW1lLi4uIEVsZW1lbnRzPgogc3RydWN0IFR1
cGxlRGVjb2RlciB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj4gZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgewogICAgICAgICByZXR1cm4gVHVwbGVEZWNvZGVySW1wbDxFbGVtZW50cy4u
Lj46OmRlY29kZShkZWNvZGVyKTsKQEAgLTMzNyw2ICszNDAsNyBAQCBzdHJ1Y3QgVHVwbGVEZWNv
ZGVyIHsKIAogdGVtcGxhdGU8Pgogc3RydWN0IFR1cGxlRGVjb2RlcjwwPiB7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxl
PD4+IGRlY29kZShEZWNvZGVyJikKICAgICB7CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVw
bGUoKTsKQEAgLTM1MCw2ICszNTQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBFbGVtZW50cz4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8c3RkOjp0dXBsZTxFbGVtZW50cy4uLj4+IHsKICAgICAgICAg
VHVwbGVFbmNvZGVyPHNpemVvZi4uLihFbGVtZW50cyksIEVsZW1lbnRzLi4uPjo6ZW5jb2RlKGVu
Y29kZXIsIHR1cGxlKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgog
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+PiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIHJldHVybiBUdXBsZURlY29kZXI8c2l6
ZW9mLi4uKEVsZW1lbnRzKSwgRWxlbWVudHMuLi4+OjpkZWNvZGUoZGVjb2Rlcik7CkBAIC03MjEs
OCArNzI2LDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFR5cGVzPiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+PiB7CiB9OwogICAgIAogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXYWxsVGltZT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29k
ZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXYWxsVGltZSYpOwog
ICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdhbGxU
aW1lJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxXYWxsVGltZT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKQEAgLTc0MCw2ICs3NDcs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFN0cmluZz4gewogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
KERlY29kZXImLCBTdHJpbmcmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS01haW4uaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS01haW4uaAppbmRleCA3YTkyN2M3N2QyNmQ4NTVi
NGI2ZmVhZGE5ODAzYTA0N2NlZThiNWMzLi40YmU3OWQyYTViZDBlNzA0ZjlhM2JjNDgzYjJkMjU4
Y2Q0OGVkYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tN
YWluLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLTWFpbi5oCkBAIC0z
Myw2ICszMyw3IEBAIGV4dGVybiAiQyIgewogI2VuZGlmCiAKIFdLX0VYUE9SVCBpbnQgV0tYUENT
ZXJ2aWNlTWFpbihpbnQgYXJnYywgY29uc3QgY2hhcioqIGFyZ3YpIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOworV0tfRVhQT1JUIGludCBXS1BDTURhZW1vbk1haW4o
aW50IGFyZ2MsIGNvbnN0IGNoYXIqKiBhcmd2KSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS01haW4ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tNYWluLm1tCmluZGV4IGU0ODA1YTQ4ZDUxNDA2YWQ1
OTU2NmIzNzdiZTI1Mzk4MmE5YWViOTAuLjQ2ODAxZGJmZmNlNmI4MjZjZDEwZGNhYWRhMzMwZDZm
NWZkZjE4YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS01h
aW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLTWFpbi5tbQpAQCAt
MjYsOSArMjYsMTUgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tNYWluLmgiCiAK
KyNpbXBvcnQgIlBDTURhZW1vbkVudHJ5UG9pbnQuaCIKICNpbXBvcnQgIlhQQ1NlcnZpY2VFbnRy
eVBvaW50LmgiCiAKIGludCBXS1hQQ1NlcnZpY2VNYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiog
YXJndikKIHsKICAgICByZXR1cm4gV2ViS2l0OjpYUENTZXJ2aWNlTWFpbihhcmdjLCBhcmd2KTsK
IH0KKworaW50IFdLUENNRGFlbW9uTWFpbihpbnQgYXJnYywgY29uc3QgY2hhcioqIGFyZ3YpCit7
CisgICAgcmV0dXJuIFdlYktpdDo6UENNRGFlbW9uTWFpbihhcmdjLCBhcmd2KTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFl
bW9uL1BDTURhZW1vbkVudHJ5UG9pbnQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9p
bnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkVudHJ5UG9pbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40OGM5MTIwYmY1Y2NiYzE3MWY5YTVjZDllZDEyZTdjZDAzOTZlMzQ1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVt
b24vUENNRGFlbW9uRW50cnlQb2ludC5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2ludCBQQ01EYWVtb25NYWluKGlu
dCwgY29uc3QgY2hhcioqKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01E
YWVtb25FbnRyeVBvaW50Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxp
dGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjIz
MjFkZTViMTljMWMxNjc0OWJmZDZhNjM0NjRmODRlZDUyNDU3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENN
RGFlbW9uRW50cnlQb2ludC5tbQpAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUENNRGFlbW9uRW50cnlQb2ludC5oIgorCisjaW1wb3J0
ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKyNpbXBvcnQgIlByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oIgorI2ltcG9ydCAiUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgorI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW1wb3J0IDx3dGYvSGFz
aFNldC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL0Vu
dGl0bGVtZW50cy5oPgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisKKy8vIEZJ
WE1FOiBBZGQgZGFlbW9uIHBsaXN0IHRvIHJlcG9zaXRvcnkuCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitzdGF0aWMgSGFzaFNldDxSZXRhaW5QdHI8eHBjX2Nvbm5lY3Rpb25fdD4+JiBwZWVycygp
Cit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaFNldDxSZXRhaW5QdHI8eHBjX2Nvbm5lY3Rpb25fdD4+PiBzZXQ7CisgICAgcmV0
dXJuIHNldC5nZXQoKTsKK30KKworc3RhdGljIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUENNOjpF
bmNvZGVkTWVzc2FnZSYmKT4gcmVwbHlTZW5kZXIoUENNOjpNZXNzYWdlVHlwZSBtZXNzYWdlVHlw
ZSwgT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiYmIHJlcXVlc3QpCit7CisgICAgaWYgKCFQQ006
Om1lc3NhZ2VUeXBlU2VuZHNSZXBseShtZXNzYWdlVHlwZSkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCldIChQQ006OkVuY29k
ZWRNZXNzYWdlJiYgbWVzc2FnZSkgeworICAgICAgICBhdXRvIHJlcGx5ID0gYWRvcHRPU09iamVj
dCh4cGNfZGljdGlvbmFyeV9jcmVhdGVfcmVwbHkocmVxdWVzdC5nZXQoKSkpOworICAgICAgICBQ
Q006OmFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2FnZVRvRGljdGlvbmFyeShXVEZNb3ZlKG1lc3Nh
Z2UpLCByZXBseS5nZXQoKSk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZSh4
cGNfZGljdGlvbmFyeV9nZXRfcmVtb3RlX2Nvbm5lY3Rpb24ocmVxdWVzdC5nZXQoKSksIHJlcGx5
LmdldCgpKTsKKyAgICB9OworfQorCitzdGF0aWMgdm9pZCBjb25uZWN0aW9uRXZlbnRIYW5kbGVy
KHhwY19vYmplY3RfdCByZXF1ZXN0KQoreworICAgIGlmICh4cGNfZ2V0X3R5cGUocmVxdWVzdCkg
IT0gWFBDX1RZUEVfRElDVElPTkFSWSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICh4cGNfZGlj
dGlvbmFyeV9nZXRfdWludDY0KHJlcXVlc3QsIFBDTTo6cHJvdG9jb2xWZXJzaW9uS2V5KSAhPSBQ
Q006OnByb3RvY29sVmVyc2lvblZhbHVlKSB7CisgICAgICAgIE5TTG9nKEAicmVjZWl2ZWQgcmVx
dWVzdCB0aGF0IHdhcyBub3QgdGhlIGN1cnJlbnQgcHJvdG9jb2wgdmVyc2lvbiIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBtZXNzYWdlVHlwZSB7IHN0YXRpY19jYXN0PFBD
TTo6TWVzc2FnZVR5cGU+KHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgUENNOjpw
cm90b2NvbE1lc3NhZ2VUeXBlS2V5KSkgfTsKKyAgICBzaXplX3QgZGF0YVNpemUgeyAwIH07Cisg
ICAgY29uc3Qgdm9pZCogZGF0YSA9IHhwY19kaWN0aW9uYXJ5X2dldF9kYXRhKHJlcXVlc3QsIFBD
TTo6cHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSwgJmRhdGFTaXplKTsKKyAgICBQQ006OkVuY29k
ZWRNZXNzYWdlIGVuY29kZWRNZXNzYWdlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEpLCBkYXRhU2l6ZSB9OworICAgIGRlY29kZU1lc3NhZ2VBbmRTZW5kVG9NYW5hZ2VyKG1lc3Nh
Z2VUeXBlLCBXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSwgcmVwbHlTZW5kZXIobWVzc2FnZVR5cGUs
IHJlcXVlc3QpKTsKK30KKworc3RhdGljIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JNYWNoU2Vydmlj
ZUNvbm5lY3Rpb25zKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T1NPYmplY3RQdHI8
eHBjX2Nvbm5lY3Rpb25fdD4+IGxpc3RlbmVyID0geHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hf
c2VydmljZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIiwgZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgWFBDX0NPTk5FQ1RJT05fTUFDSF9TRVJWSUNFX0xJU1RFTkVS
KTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihsaXN0ZW5lci5nZXQoKS5n
ZXQoKSwgXih4cGNfb2JqZWN0X3QgcGVlcikgeworICAgICAgICBpZiAoeHBjX2dldF90eXBlKHBl
ZXIpICE9IFhQQ19UWVBFX0NPTk5FQ1RJT04pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgLy8gRklYTUU6IEFkZCBhbiBlbnRpdGxlbWVudCBjaGVjayBoZXJlIHNvIHRoYXQgb25seSB0
aGUgbmV0d29yayBwcm9jZXNzIGNhbiBzdWNjZXNzZnVsbHkgY29ubmVjdC4KKworICAgICAgICB4
cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihwZWVyLCBeKHhwY19vYmplY3RfdCBldmVu
dCkgeworICAgICAgICAgICAgaWYgKGV2ZW50ID09IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVEVS
UlVQVEVEKSB7CisgICAgICAgICAgICAgICAgcGVlcnMoKS5yZW1vdmUocGVlcik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29ubmVjdGlvbkV2
ZW50SGFuZGxlcihldmVudCk7CisgICAgICAgIH0pOworICAgICAgICB4cGNfY29ubmVjdGlvbl9z
ZXRfdGFyZ2V0X3F1ZXVlKHBlZXIsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOworICAgICAg
ICB4cGNfY29ubmVjdGlvbl9hY3RpdmF0ZShwZWVyKTsKKyAgICAgICAgCisgICAgICAgIHBlZXJz
KCkuYWRkKHBlZXIpOworICAgIH0pOworICAgIHhwY19jb25uZWN0aW9uX2FjdGl2YXRlKGxpc3Rl
bmVyLmdldCgpLmdldCgpKTsKK30KKworc3RhdGljIHZvaWQgcmVnaXN0ZXJTY2hlZHVsZWRBY3Rp
dml0eUhhbmRsZXIoKQoreworICAgIHhwY19hY3Rpdml0eV9yZWdpc3RlcigiY29tLmFwcGxlLndl
YmtpdC5hZGF0dHJpYnV0aW9uZC5hY3Rpdml0eSIsIFhQQ19BQ1RJVklUWV9DSEVDS19JTiwgXih4
cGNfYWN0aXZpdHlfdCBhY3Rpdml0eSkgeworICAgICAgICBpZiAoeHBjX2FjdGl2aXR5X2dldF9z
dGF0ZShhY3Rpdml0eSkgPT0gWFBDX0FDVElWSVRZX1NUQVRFX0NIRUNLX0lOKSB7CisgICAgICAg
ICAgICB4cGNfb2JqZWN0X3QgY3JpdGVyaWEgPSB4cGNfYWN0aXZpdHlfY29weV9jcml0ZXJpYShh
Y3Rpdml0eSk7CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBzZXQgdmFsdWVzIGhlcmUgdGhhdCBh
bGlnbiB3aXRoIHZhbHVlcyBmcm9tIHRoZSBwbGlzdC4KKworICAgICAgICAgICAgeHBjX2FjdGl2
aXR5X3NldF9jcml0ZXJpYShhY3Rpdml0eSwgY3JpdGVyaWEpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IEFkZCBjb2RlIGhlcmUgdGhhdCBkb2Vz
IGRhaWx5IHRhc2tzIG9mIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci4KKyAgICB9KTsK
K30KKworc3RhdGljIHZvaWQgZW50ZXJTYW5kYm94KCkKK3sKKyAgICAvLyBGSVhNRTogRW50ZXIg
YSBzYW5kYm94IGhlcmUuIFdlIHNob3VsZCBvbmx5IG5lZWQgcmVhZC93cml0ZSBhY2Nlc3MgdG8g
b3VyIGRhdGFiYXNlIGFuZCBuZXR3b3JrIGFjY2VzcyBhbmQgbm90aGluZyBlbHNlLgorfQorCitp
bnQgUENNRGFlbW9uTWFpbihpbnQgYXJnYywgY29uc3QgY2hhcioqIGFyZ3YpCit7CisgICAgaWYg
KGFyZ2MgIT0gMiB8fCBzdHJjbXAoYXJndlsxXSwgInJ1bkFzRGFlbW9uIikpIHsKKyAgICAgICAg
TlNMb2coQCJUaGlzIGV4ZWN1dGFibGUgaXMgaW50ZW5kZWQgdG8gYmUgcnVuIGFzIGEgZGFlbW9u
LiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICBlbnRlclNhbmRib3goKTsKKyAgICAgICAgc3RhcnRMaXN0ZW5pbmdGb3JNYWNoU2Vy
dmljZUNvbm5lY3Rpb25zKCk7CisgICAgICAgIHJlZ2lzdGVyU2NoZWR1bGVkQWN0aXZpdHlIYW5k
bGVyKCk7CisgICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKyAgICB9CisgICAg
Q0ZSdW5Mb29wUnVuKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKaW5kZXggMjQxMmJiZmFkOGU1ZjgxMWI1MWU4MmY2MGQxYzU0NjE5YTIxODgz
OS4uY2ZhYmNlMDViMjRkMDc4OTgwNmYxNGFhZTkwODcxYWMyMGE4N2RlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CkBAIC0xMDEsOCArMTAxLDE0IEBAIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5jcHAKIE5ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2Uu
Y3BwCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERlYnVnSW5mby5jcHAKIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKK05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcklu
dGVyZmFjZS5jcHAKIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5jcHAKIE5ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwCitOZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dENvbm5lY3Rpb24uY3BwCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAKK05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHAK
K05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50RW5jb2Rlci5jcHAKK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcAogCiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIEBuby11bmlmeQogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA4OTEzODM0ZjZiYjVmOTM5ZTcyMGIwOWVmY2Iw
MmM5NTQ0Zjg0YWFhLi4xMWU3Mjk2ODRlNGEyYWRmMGI1Y2I4OTNhZDY3OTFkOTAwNTgyNjA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MSw3ICs0MSw5IEBAIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50
L0NvY29hL0RhZW1vbi9EYWVtb25FbnRyeVBvaW50Lm1tCiBOZXR3b3JrUHJvY2Vzcy9FbnRyeVBv
aW50L0NvY29hL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tCiAKK05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJD
b2NvYS5tbQorTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0KIAogTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9pb3MvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VySU9TLm1tCiAKQEAgLTE5MSw2
ICsxOTMsOCBAQCBTaGFyZWQvQ29jb2EvV0tOU1VSTFJlcXVlc3QubW0KIFNoYXJlZC9Db2NvYS9X
S09iamVjdC5tbQogU2hhcmVkL0NvY29hL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0NvY29h
Lm1tCiAKK1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25F
bnRyeVBvaW50Lm1tCisKIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZp
Y2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0KIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0Nv
Y29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2Y5ZTBkZjU0YmY2OGIyNTAwMWM2
Y2MxZDllYmNiNzNhZTIxMTczZi4uZjY4YjRjZmI0ODVkNmY4YmYzNjI4ZDA1NmI5ZjNkNzA0MDYy
MmU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMjkxLDYgKzEyOTEsNyBAQAogCQk1Q0I3QUZFMDIzQzUyQ0U1MDBFNDlDRjMgLyog
X1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDQjdBRkRGMjNDNTJDQkMwMEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxv
YWREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTVDQjdBRkU3MjNDNjgyMDcwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I3QUZFNjIzQzY4
MUIwMDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkSW5mby5oICovOyB9OwogCQk1Q0I3QUZFODIzQzY5
QjYxMDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCN0FGRTMyM0M2N0QzNzAwRTQ5Q0YzIC8qIF9X
S1Jlc291cmNlTG9hZEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk1Q0I5MzEwOTI2RTg0MzlBMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRYUENVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDQjkzMTA3MjZFODQxQ0IwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFhQQ1V0aWxpdGllcy5oICovOyB9OwogCQk1Q0JDOUI4RTFDNjUyQ0EwMDBBOEZEQ0Yg
LyogTmV0d29ya0RhdGFUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Q0JDOUI4OTFDNjUyNEE1MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmgg
Ki87IH07CiAJCTVDQkQ1OTVDMjI4MEVERjQwMDJCMjJBQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVs
ZHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzVE
MjM4ODIyN0ExODkyMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tICovOyB9Owog
CQk1Q0QyODY1MTFFNzIzNTk5MDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3RTdG9yZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNEMjg2NEQxRTcy
MkY0NDAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0U3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC00NTU2LDYgKzQ1NTcsMjMgQEAKIAkJ
NUNCOTMwQzAyNkUwNTQyRjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50
SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudENsaWVudEltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1Q0I5MzBDMTI2RTA1NEI4MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGll
bnRJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01l
YXN1cmVtZW50Q2xpZW50SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0I5
MzBGMjI2RTdFRUUwMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9h
ZGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRjQyNkU4MDFFODAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01l
YXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEY1MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBGNjI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRjcyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRjgyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZh
dGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBGOTI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDQjkzMEZBMjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEZCMjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEZDMjZFODAyMTYwMDMyQjFDMCAvKiBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRkQyNkU4MDIxNjAwMzJCMUMwIC8q
IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRkUyNkU4MDIxNjAwMzJCMUMwIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUNCOTMwRkYyNkU4MDIxNjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1
cmVtZW50RW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUNCOTMxMDQyNkU4MzdGQzAwMzJCMUMwIC8qIFBDTURhZW1vbkVudHJ5UG9pbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUENNRGFlbW9uRW50cnlQb2ludC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzEwNTI2RTgzN0ZEMDAzMkIxQzAgLyogUENNRGFl
bW9uRW50cnlQb2ludC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFBDTURhZW1vbkVudHJ5UG9pbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
QjkzMTA2MjZFODM5QTkwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJ
bnRlcmZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUNCOTMxMDcyNkU4NDFDQjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1
cmVtZW50WFBDVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBy
aXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDQjkzMTA4MjZFODQxQ0IwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFhQQ1V0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1Q0JDOUI4OTFDNjUyNEE1MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFU
YXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtEYXRhVGFzay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0Yg
LyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUNCRTkwOEYyNkQ3RkI2MjAwNUEyRTk1IC8qIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGVidWdJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVD
bGlja01lYXN1cmVtZW50RGVidWdJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC05MjY1LDEyICs5MjgzLDI0IEBACiAJCQkJNUNCOTMwQkYyNkUwNTQyRTAwMzJCMUMwIC8qIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50LmggKi8sCiAJCQkJNUNCOTMwQzAyNkUwNTQyRjAw
MzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5jcHAgKi8sCiAJCQkJ
NUNCOTMwQzEyNkUwNTRCODAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50
SW1wbC5oICovLAorCQkJCTVDQjkzMEZDMjZFODAyMTYwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwICovLAorCQkJCTVDQjkzMEZFMjZFODAyMTYwMDMyQjFD
MCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCAqLywKKwkJCQk1Q0I5MzBG
NzI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQu
Y3BwICovLAorCQkJCTVDQjkzMEY2MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudERhZW1vbkNsaWVudC5oICovLAogCQkJCTVDODI2RDZBMjZENDgyRUEwMDhBRUM5MSAv
KiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcCAqLywKIAkJCQk1QzgyNkQ2OTI2
RDQ4MkVBMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oICovLAog
CQkJCTVDQkU5MDkwMjZEN0ZCN0MwMDVBMkU5NSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERl
YnVnSW5mby5jcHAgKi8sCiAJCQkJNUNCRTkwOEYyNkQ3RkI2MjAwNUEyRTk1IC8qIFByaXZhdGVD
bGlja01lYXN1cmVtZW50RGVidWdJbmZvLmggKi8sCisJCQkJNUNCOTMwRjgyNkU4MDIxNTAwMzJC
MUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHAgKi8sCisJCQkJNUNCOTMw
RkQyNkU4MDIxNjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oICov
LAorCQkJCTVDQjkzMEY5MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEVuY29kZXIuY3BwICovLAorCQkJCTVDQjkzMEZGMjZFODAyMTYwMDMyQjFDMCAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaCAqLywKIAkJCQk2QkQwNTg2NDIyMENFOEMyMDAwQkVE
NUMgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCAqLywKIAkJCQk2QkQwNTg2
MzIyMENFOEMyMDAwQkVENUMgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmggKi8s
CisJCQkJNUNCOTMxMDYyNkU4MzlBOTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlckludGVyZmFjZS5jcHAgKi8sCisJCQkJNUNCOTMwRkEyNkU4MDIxNTAwMzJCMUMwIC8q
IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oICovLAorCQkJCTVDQjkz
MEZCMjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94
eS5jcHAgKi8sCisJCQkJNUNCOTMwRjUyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlclByb3h5LmggKi8sCiAJCQkJNTdGRTY4OEIyNjBBQkIzRDAwQkY0NUU0
IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5jcHAgKi8sCiAJCQkJNTdG
RTY4OEEyNjBBQkIzRDAwQkY0NUU0IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xv
YWRlci5oICovLAogCQkJCTVDODI2RDY3MjZENDZCNDMwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFN0b3JlLmNwcCAqLywKQEAgLTkzNTgsMTEgKzkzODgsMjQgQEAKIAkJNUNCOTMw
RjEyNkU3RUU4OTAwMzJCMUMwIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk1Q0I5MzBGNDI2RTgwMUU4MDAzMkIxQzAgLyogUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW0gKi8sCiAJCQkJNUNCOTMwRjIy
NkU3RUVFMDAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNv
Y29hLm1tICovLAorCQkJCTVDQjkzMTA3MjZFODQxQ0IwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oICovLAorCQkJCTVDQjkzMTA4MjZFODQxQ0IwMDMyQjFD
MCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5tbSAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk1Q0I5
MzEwMzI2RTgzNzVCMDAzMkIxQzAgLyogRGFlbW9uICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1Q0I5MzEwNDI2RTgzN0ZDMDAzMkIxQzAgLyogUENNRGFl
bW9uRW50cnlQb2ludC5oICovLAorCQkJCTVDQjkzMTA1MjZFODM3RkQwMDMyQjFDMCAvKiBQQ01E
YWVtb25FbnRyeVBvaW50Lm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBEYWVtb247CisJCQlwYXRo
ID0gQ29jb2EvRGFlbW9uOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNkJF
OTY5QkYxRTU0RDQ1MjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTA4MTgsNiArMTA4NjEsNyBA
QAogCQlCQzgyODM2ODE2QjM1ODc5MDBBMjc4RkUgLyogRW50cnlQb2ludFV0aWxpdGllcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUNCOTMxMDMyNkU4
Mzc1QjAwMzJCMUMwIC8qIERhZW1vbiAqLywKIAkJCQlCQzgyODM2QjE2QjM1ODc5MDBBMjc4RkUg
LyogWFBDU2VydmljZSAqLywKIAkJCQk1Q0U5MTIwRjIyOTNDMjVGMDA1QkVDNzggLyogQXV4aWxp
YXJ5UHJvY2Vzc01haW4uY3BwICovLAogCQkJKTsKQEAgLTEyMzY0LDYgKzEyNDA4LDcgQEAKIAkJ
CQk2QkQwNTg2NTIyMENFOEMyMDAwQkVENUMgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZFNjg4QzI2MEFCQjNEMDBCRjQ1RTQgLyogUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
QzgyNkQ2QjI2RDQ4MkVGMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNUNCOTMxMDkyNkU4NDM5QTAwMzJCMUMwIC8qIFByaXZhdGVD
bGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkY5NTM2
NTE4RkY1OEY1MDAxREIyRUYgLyogUHJvY2Vzc0Fzc2VydGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxQTdDNTgxMTM2RTE5QzAwRkI3MTY3IC8qIFByb2Nlc3NMYXVuY2hlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDYzRkQ0ODIxRUI5NEVDMDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbi5oIGluIEhlYWRlcnMgKi8sCg==
</data>
<flag name="commit-queue"
          id="460896"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437679</attachid>
            <date>2021-09-08 16:39:26 -0700</date>
            <delta_ts>2021-09-08 16:47:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230052-20210908163925.patch</filename>
            <type>text/plain</type>
            <size>106907</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJjOTI0NmRiMDI3OTMwZDM0MjA5OWU1
Yzg4MmJiYzVjODA5ZDY2ZTAuLjU1MzZmYjAzOGRiY2I5ZmQ0NDUyYTg2NTU0ZDIxYTNiMjkzOGFi
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDktMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgZGFlbW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzAwNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oOgorCiAyMDIxLTA5LTA3ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IG9yaWdpbiBwYXJ0aXRp
b25pbmcgKHRvcC1vcmlnaW4vZnJhbWUtb3JpZ2luKSBmb3IgQnJvYWRjYXN0Q2hhbm5lbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAwM2YwZDFkMGM1NjI2ODY5Mzk2NWI3ZTkxY2EzMzNlZDc2MThiMTEyLi4xMDc5NGIy
MzE4YzkxMjVmOGIzYzU1OTZkZWZkZWJiN2U2OTlkM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
NSBAQAorMjAyMS0wOS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIEFkZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBkYWVtb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDA1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUg
aW5mcmFzdHJ1Y3R1cmUgdG8gdXNlIGEgZGFlbW9uIGluc3RlYWQgb2YgdGhlIG5ldHdvcmsgcHJv
Y2VzcyB0byBoYW5kbGUgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuCisgICAgICAgIEl0IGRvZXMg
bm90IHN0YXJ0IHVzaW5nIHRoZSBkYWVtb24geWV0LCBzbyB0aGVyZSBpcyBubyBjaGFuZ2UgaW4g
YmVoYXZpb3IuCisgICAgICAgIEkgbWFkZSBhIG5ldyBjbGFzcyBQQ006Ok1hbmFnZXJJbnRlcmZh
Y2Ugd2hpY2ggY2FuIGVpdGhlciBiZSBhIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlciBv
ciBhIFBDTTo6TWFuYWdlclByb3h5LAorICAgICAgICB3aGljaCB3b3VsZCBzZW5kIG1lc3NhZ2Vz
IHRvIHRoZSBkYWVtb24gaW5zdGVhZCBvZiBkb2luZyB0aGUgd29yayBsb2NhbGx5LgorICAgICAg
ICBJIGltcGxlbWVudGVkIHRoZSBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgcGFyYW1ldGVycyB1
c2luZyBzb21lIG9mIHRoZSBJUEMgZW5jb2RpbmcgdGVtcGxhdGVzLgorICAgICAgICBJIGhhdmUg
YW4gZW50cnkgcG9pbnQgZm9yIGFuIGV4ZWN1dGFibGUgYnV0IG5vIGV4ZWN1dGFibGUgeWV0Lgor
ICAgICAgICBJIGhhdmUgdmVyaWZpZWQgdGhhdCBFdmVudEF0dHJpYnV0aW9uIHVuaXQgdGVzdHMg
cGFzcyB3aGVuIHVzaW5nIHRoZSBkYWVtb24sIHNvIHRoZSBpbmZyYXN0cnVjdHVyZSBpcyBnb29k
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpwY21TdG9yZURpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OnByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudENvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0
aW9uOjpjb25uZWN0aW9uVG9EYWVtb24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rp
b246OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rpb246OnNlbmRXaXRoUmVw
bHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhZW1vbkNsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNs
aWVudDo6bG9hZEZyb21OZXR3b3JrKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25DbGll
bnQ6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVt
b25DbGllbnQ6OmZlYXR1cmVFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpE
YWVtb25DbGllbnQ6OmRlYnVnTW9kZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFl
bW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6ZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6RGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RGVjb2Rlcjo6b3BlcmF0b3I+Pik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6YnVm
ZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBDTTo6RW5jb2Rlcjo6ZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlBDTTo6RW5jb2Rlcjo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RW5jb2Rlcjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpFbmNvZGVyOjp0YWtlQnVm
ZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UENNOjpNZXNzYWdlSW5mbzo6dG9TdHJpbmdGb3JUZXN0aW5nOjplbmNvZGVS
ZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6bWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
OlBDTTo6aGFuZGxlUENNTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6aGFuZGxlUENN
TWVzc2FnZVdpdGhSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6ZGVjb2RlTWVzc2FnZUFu
ZFNlbmRUb01hbmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpQQ006OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpSZXBseUNhbGxl
cjw+OjpjYWxsUmVwbHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlJlcGx5Q2FsbGVyPFN0cmlu
Zz46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6c2VuZE1lc3NhZ2VXaXRoUmVw
bHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c3RvcmVVbmF0dHJpYnV0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6aGFuZGxlQXR0cmlidXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6Y2xlYXIpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6Y2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbik6
CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjptaWdyYXRlUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFu
YWdlclByb3h5Ojp0b1N0cmluZ0ZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
Q006Ok1hbmFnZXJQcm94eTo6c2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcpOgorICAgICAgICAo
V2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6OnNldFRva2VuU2lnbmF0dXJl
VVJMRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzZXRB
dHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpN
YW5hZ2VyUHJveHk6Om1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6TWFuYWdlclByb3h5OjpzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFs
dWVzRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzdGFy
dFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5h
Z2VyUHJveHk6OmRlc3Ryb3lTdG9yZUZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
clByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNv
Y29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9EYWVt
b24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OmRpY3Rpb25hcnlGcm9tTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6Q29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENV
dGlsaXRpZXMuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW06
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OmFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2Fn
ZVRvRGljdGlvbmFyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5X
ZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW46CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpkZWNvZGVTdHJpbmdUZXh0KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxTdHJpbmc+OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1v
bi9QQ01EYWVtb25FbnRyeVBvaW50Lmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6cGVlcnMpOgorICAgICAgICAoV2ViS2l0OjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6Y29ubmVjdGlvbkV2ZW50SGFuZGxlcik6Cisg
ICAgICAgIChXZWJLaXQ6OnN0YXJ0TGlzdGVuaW5nRm9yTWFjaFNlcnZpY2VDb25uZWN0aW9ucyk6
CisgICAgICAgIChXZWJLaXQ6OnJlZ2lzdGVyU2NoZWR1bGVkQWN0aXZpdHlIYW5kbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6ZW50ZXJTYW5kYm94KToKKyAgICAgICAgKFdlYktpdDo6UENNRGFlbW9u
TWFpbik6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0w
OS0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlcGxhY2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpzdGFydCB3
aXRoIGFuIGltcGxlbWVudGF0aW9uIHRoYXQgZG9lc24ndCBuZWVkIE5ldHdvcmtTZXNzaW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oIGIvU291cmNlL1dU
Ri93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAppbmRleCAyZjk2NWJhN2ZkMTA5Y2NiOGZlNGE3ZWQ4
NDRkYjIyZGU4NzkxOGYwLi5jYjZhNzI4NWZmNWJkMWFlYzk5OTdmMjU3MjYwZmQ0NWQwMDc4ZmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmgKQEAgLTcxLDYgKzcxLDcgQEAgdHlwZWRl
ZiB2b2lkICgqeHBjX2Nvbm5lY3Rpb25faGFuZGxlcl90KSh4cGNfY29ubmVjdGlvbl90IGNvbm5l
Y3Rpb24pOwogCiAjZGVmaW5lIFhQQ19BUlJBWV9BUFBFTkQgKChzaXplX3QpKC0xKSkKICNkZWZp
bmUgWFBDX0NPTk5FQ1RJT05fTUFDSF9TRVJWSUNFX0xJU1RFTkVSICgxIDw8IDApCisjZGVmaW5l
IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVEVSUlVQVEVEIFhQQ19HTE9CQUxfT0JKRUNUKF94cGNf
ZXJyb3JfY29ubmVjdGlvbl9pbnRlcnJ1cHRlZCkKICNkZWZpbmUgWFBDX0VSUk9SX0NPTk5FQ1RJ
T05fSU5WQUxJRCBYUENfR0xPQkFMX09CSkVDVChfeHBjX2Vycm9yX2Nvbm5lY3Rpb25faW52YWxp
ZCkKICNkZWZpbmUgWFBDX0VSUk9SX0tFWV9ERVNDUklQVElPTiBfeHBjX2Vycm9yX2tleV9kZXNj
cmlwdGlvbgogI2RlZmluZSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQgWFBDX0dMT0JB
TF9PQkpFQ1QoX3hwY19lcnJvcl90ZXJtaW5hdGlvbl9pbW1pbmVudCkKQEAgLTkxLDYgKzkyLDkg
QEAgZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBfeHBjX2Vycm9yX2tleV9kZXNjcmlwdGlvbjsK
ICNpbmNsdWRlIDx4cGMvcHJpdmF0ZS5oPgogI2Vsc2UKIAorZXh0ZXJuICJDIiBjb25zdCBjaGFy
ICogY29uc3QgWFBDX0FDVElWSVRZX1JBTkRPTV9JTklUSUFMX0RFTEFZOworZXh0ZXJuICJDIiBj
b25zdCBjaGFyICogY29uc3QgWFBDX0FDVElWSVRZX1JFUVVJUkVfTkVUV09SS19DT05ORUNUSVZJ
VFk7CisKICNpZiBPU19PQkpFQ1RfVVNFX09CSkMKIE9TX09CSkVDVF9ERUNMKG9zX3RyYW5zYWN0
aW9uKTsKICNlbHNlCkBAIC0xMDgsNiArMTEyLDcgQEAgZW51bSB7CiAKIFdURl9FWFRFUk5fQ19C
RUdJTgogCitleHRlcm4gY29uc3Qgc3RydWN0IF94cGNfZGljdGlvbmFyeV9zIF94cGNfZXJyb3Jf
Y29ubmVjdGlvbl9pbnRlcnJ1cHRlZDsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgX3hwY19kaWN0aW9u
YXJ5X3MgX3hwY19lcnJvcl9jb25uZWN0aW9uX2ludmFsaWQ7CiBleHRlcm4gY29uc3Qgc3RydWN0
IF94cGNfZGljdGlvbmFyeV9zIF94cGNfZXJyb3JfdGVybWluYXRpb25faW1taW5lbnQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
CmluZGV4IGYxYjE5OTAyZTFhNGVhMDVhZWMyMWRhYjcyN2Y4YjhhZWUwOTI5OTkuLjI5YmFiOWEy
OTM5OWQxNjI0OWMxMjk2ZTY4YWFmNzc4ZjMzMGExNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgi
CisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCIKICNpbmNsdWRlICJTdG9y
YWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDU0M2Nh
YjEwMGJjN2JjOTlmNTQwZjM5NGJmZjcyM2ZiY2NkYWViM2EuLmRmZGU3OGRhNjFkOWJmYThhM2M1
YTRjMWM4Y2E5N2EwMmUzNTNmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUGluZ0xv
YWQuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuaCIKICNp
bmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCIKKyNpbmNsdWRlICJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCkBAIC05MiwxMSArOTMsMjAgQEAgc3RhdGljIFN0cmluZyBwY21TdG9yZURp
cmVjdG9yeShjb25zdCBOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXMK
ICAgICByZXR1cm4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKIH0KIAorc3RhdGlj
IFVuaXF1ZVJlZjxQQ006Ok1hbmFnZXJJbnRlcmZhY2U+IG1hbmFnZXJPclByb3h5KE5ldHdvcmtT
ZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBj
b25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAg
ICAvLyBGSVhNRTogVHVybiB0aGlzIG9uIGFuZCByZW1vdmUgTWFuYWdlckludGVyZmFjZSBvbmNl
IHJkYXI6Ly84MDcwMTA5OCBpcyBjbG9zZWQuCisgICAgY29uc3RleHByIGJvb2wgdXNlUENNRGFl
bW9uID0gZmFsc2U7CisKKyAgICBpZiAodXNlUENNRGFlbW9uKQorICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZVJlZjxQQ006Ok1hbmFnZXJQcm94eT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJl
ZjxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KG1ha2VVbmlxdWVSZWY8UENNOjpDbGll
bnRJbXBsPihuZXR3b3JrU2Vzc2lvbiwgbmV0d29ya1Byb2Nlc3MpLCBwY21TdG9yZURpcmVjdG9y
eShuZXR3b3JrU2Vzc2lvbiwgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycy5kaXJlY3RvcnksIHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSk7Cit9CisKIE5ldHdv
cmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3Ms
IGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAg
IDogbV9zZXNzaW9uSUQocGFyYW1ldGVycy5zZXNzaW9uSUQpCiAgICAgLCBtX25ldHdvcmtQcm9j
ZXNzKG5ldHdvcmtQcm9jZXNzKQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgLCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeShwYXJhbWV0
ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RvcmFnZURpcmVjdG9yeSkKICAgICAsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmRpcmVjdG9y
eSkKICAgICAsIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNob3VsZEluY2x1
ZGVMb2NhbGhvc3QgPyBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgOiBTaG91bGRJbmNsdWRl
TG9jYWxob3N0OjpObykKICAgICAsIG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZURl
YnVnTW9kZSA/IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6OlllcyA6IEVu
YWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6Ok5vKQpAQCAtMTA3LDYgKzExNyw3
IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAgICAgLCBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMu
Zmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUpCiAgICAgLCBtX3N0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbihwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
LnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbikKICNlbmRpZgorICAgICwgbV9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChtYW5hZ2VyT3JQcm94eSgqdGhpcywgbmV0d29ya1Byb2Nlc3MsIHBhcmFt
ZXRlcnMpKQogICAgICwgbV9icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkobWFrZVVuaXF1ZVJlZjxO
ZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PigpKQogICAgICwgbV90ZXN0U3BlZWRNdWx0
aXBsaWVyKHBhcmFtZXRlcnMudGVzdFNwZWVkTXVsdGlwbGllcikKICAgICAsIG1fYWxsb3dzU2Vy
dmVyUHJlY29ubmVjdChwYXJhbWV0ZXJzLmFsbG93c1NlcnZlclByZWNvbm5lY3QpCkBAIC0xNDEs
NyArMTUyLDYgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNz
JiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBh
cmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlZCk7CiAjZW5k
aWYKLSAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gbWFrZVVuaXF1ZTxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI+KG1ha2VVbmlxdWVSZWY8UENNOjpDbGllbnRJbXBsPigqdGhp
cywgbmV0d29ya1Byb2Nlc3MpLCBwY21TdG9yZURpcmVjdG9yeSgqdGhpcywgcGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5kaXJlY3RvcnksIHBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9y
YWdlRGlyZWN0b3J5KSk7CiB9CiAKIE5ldHdvcmtTZXNzaW9uOjp+TmV0d29ya1Nlc3Npb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDcw
YTFiNDkxYjI0M2FhZWZiM2QyN2JkY2FkMDBhNjA1ZTQyNGY1MGYuLjg0ZWM2ZmY1MWM1Y2M3ZWRh
YWZmMjNjYTllNmY5OWM2NzQ5NDU3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJlZmV0Y2hDYWNoZS5oIgorI2luY2x1ZGUgIlByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRl
bnNpb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgpAQCAtNjAsMTMgKzYxLDE2
IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwog
Y2xhc3MgTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTsKIGNsYXNzIE5ldHdvcmtTb2Nr
ZXRDaGFubmVsOwotY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOwogY2xhc3Mg
V2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzOwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOwogY2xhc3MgV2ViU29ja2V0VGFzazsKIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBTZXNzaW9uU2V0OwogCituYW1lc3BhY2UgUENNIHsKK2Ns
YXNzIE1hbmFnZXJQcm94eTsKK30KKwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGUgOiB1aW50
MzJfdDsKIAogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CkBAIC0xNjcsNyArMTcxLDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICBOZXR3b3JrTG9hZFNjaGVkdWxlciYgbmV0d29ya0xvYWRTY2hl
ZHVsZXIoKTsKLSAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXImIHByaXZhdGVDbGlj
a01lYXN1cmVtZW50KCkgeyByZXR1cm4gKm1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7IH0KKyAg
ICBQQ006Ok1hbmFnZXJJbnRlcmZhY2UmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgeyByZXR1
cm4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5nZXQoKTsgfQogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhJiBhcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGEoKSB7IHJldHVybiBtX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTsgfQpAQCAt
MTkyLDcgKzE5Niw2IEBAIHByb3RlY3RlZDoKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0
d29ya1Byb2Nlc3M7CiAgICAgV2Vha0hhc2hTZXQ8TmV0d29ya0RhdGFUYXNrPiBtX2RhdGFUYXNr
U2V0OwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgU3RyaW5nIG1f
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CiAgICAgUmVmUHRyPFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZT4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgIFNob3VsZElu
Y2x1ZGVMb2NhbGhvc3QgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzIHsgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6WWVzIH07CkBAIC0yMDgsNyArMjExLDcg
QEAgcHJvdGVjdGVkOgogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+IG1fdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZzsKICNlbmRpZgogICAgIGJvb2wg
bV9pc1N0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4gbV9wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDsKKyAgICBVbmlxdWVSZWY8UENNOjpNYW5hZ2VySW50ZXJmYWNlPiBtX3ByaXZhdGVD
bGlja01lYXN1cmVtZW50OwogCiAgICAgSGFzaFNldDxSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVy
Pj4gbV9rZXB0QWxpdmVMb2FkczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU2M2EwMzYwZGI1MzE5ODFmZTY3NGIyNjNhZjQwMzIzMWQ5MTk4NWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw1OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCisjaWYg
IVBMQVRGT1JNKENPQ09BKQorCitDb25uZWN0aW9uIENvbm5lY3Rpb246OmNvbm5lY3Rpb25Ub0Rh
ZW1vbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCit2
b2lkIENvbm5lY3Rpb246OnNlbmQoTWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5
KE1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVu
Y29kZWRNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30KKworI2VuZGlmCisKK30gLy8g
bmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkzYTZjZjVkOGI5ZjhmM2QyZDc2YmFjODAwN2QxNTBmZTZjNzdmZTAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oCkBAIC0w
LDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9P
U09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK25hbWVzcGFjZSBQQ00geworCitlbnVtIGNsYXNzIE1lc3NhZ2VUeXBlIDogdWludDhf
dDsKK3VzaW5nIEVuY29kZWRNZXNzYWdlID0gVmVjdG9yPHVpbnQ4X3Q+OworCitjbGFzcyBDb25u
ZWN0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgQ29ubmVjdGlvbiBjb25uZWN0aW9uVG9EYWVt
b24oKTsKKworICAgIHZvaWQgc2VuZChNZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJik7Cisg
ICAgdm9pZCBzZW5kV2l0aFJlcGx5KE1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRNZXNzYWdlJiYpPiYmKTsKKworcHJpdmF0ZToKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBDb25uZWN0aW9uKE9TT2JqZWN0UHRyPHhwY19jb25uZWN0
aW9uX3Q+JiYpOworCisgICAgT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gbV9jb25uZWN0
aW9uOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2ZmU1ZTc0
YWZjY2MwMGZlNGRkZDQ3Y2MxMGRhMjg2ZjUzNzRkZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcApAQCAtMCwwICsxLDYxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGFlbW9uQ2xpZW50LmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKworI2lmICFQTEFURk9S
TShDT0NPQSkKK3ZvaWQgRGFlbW9uQ2xpZW50Ojpsb2FkRnJvbU5ldHdvcmsoVVJMJiYgdXJsLCBS
ZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGpzb25QYXlsb2FkLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQgcGNtRGF0YUNhcnJpZWQsIE5ldHdvcmtMb2FkQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGNhbGxiYWNr
KHsgfSwgeyB9LCB7IH0pOworfQorI2VuZGlmCisKK3ZvaWQgRGFlbW9uQ2xpZW50Ojpicm9hZGNh
c3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIERhZW1vbkNsaWVudDo6ZmVhdHVyZUVuYWJs
ZWQoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERhZW1vbkNsaWVudDo6
ZGVidWdNb2RlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTc3ODIxMjQyNmQ4
OTcxNmMxYmEzNmQ0NTBhY2Q1ZDM2ZDdmNjY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERhZW1vbkNsaWVudC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50Lmgi
CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK2NsYXNzIERhZW1vbkNs
aWVudCA6IHB1YmxpYyBDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYWVtb25DbGllbnQ+
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICB2b2lkIGJyb2FkY2FzdENvbnNv
bGVNZXNzYWdlKEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBi
b29sIGZlYXR1cmVFbmFibGVkKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBkZWJ1Z01vZGVFbmFi
bGVkKCkgY29uc3QgZmluYWw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEyMGU4YzJmY2Nh
OTljMTA4NjI1NDA3YTFmMmMzY2M0NTIzM2U0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREZWNvZGVyLmNwcApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rl
ci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK2Jvb2wgRGVj
b2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbkJ5dGVzKHNpemVfdCBieXRlcykgY29u
c3QKK3sKKyAgICByZXR1cm4gYnl0ZXMgPD0gbV9idWZmZXIuc2l6ZSgpIC0gbV9idWZmZXJQb3Np
dGlvbjsKK30KKworYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCkKK3sKKyAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91
Z2hUb0NvbnRhaW5CeXRlcyhzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1lbWNw
eShkYXRhLCBtX2J1ZmZlci5kYXRhKCkgKyBtX2J1ZmZlclBvc2l0aW9uLCBzaXplKTsKKyAgICBt
X2J1ZmZlclBvc2l0aW9uICs9IHNpemU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREZWNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI4Nzc5OWUzMGVlNTMwNzcyYzlkMTQ3Y2MzODdmNTVmNWI4YzM1NTYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oCkBAIC0wLDAgKzEsNjggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKworY2xhc3MgRGVjb2Rl
ciB7CitwdWJsaWM6CisgICAgRGVjb2RlcihWZWN0b3I8dWludDhfdD4mJiBidWZmZXIpCisgICAg
ICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorICAgIERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDxUPiYgdCkK
KyAgICB7CisgICAgICAgIHQgPSBJUEM6OkFyZ3VtZW50Q29kZXI8c3RkOjpyZW1vdmVfY29uc3Rf
dDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4sIHZvaWQ+OjpkZWNvZGUoKnRoaXMpOworICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNp
emVfdCBudW1FbGVtZW50cykgY29uc3QKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZSwgIlR5cGUgVCBtdXN0IGhhdmUgYSBmaXhlZCwga25v
d24gZW5jb2RlZCBzaXplISIpOworCisgICAgICAgIGlmIChudW1FbGVtZW50cyA+IHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLyBzaXplb2YoVCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW5C
eXRlcyhudW1FbGVtZW50cyAqIHNpemVvZihUKSk7CisgICAgfQorCisgICAgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCwg
c2l6ZV90IGFsaWdubWVudCk7CisgICAgCitwcml2YXRlOgorICAgIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW5CeXRlcyhzaXplX3QpIGNvbnN0Owor
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOworICAgIHNpemVfdCBtX2J1ZmZlclBvc2l0
aW9uIHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEVuY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5OGIxNWU1MTBlNTk5Mzc0M2Zl
N2U1NjNlZjAxZGQ3OGI5MjRmZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50RW5jb2Rlci5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCit2b2lkIEVuY29kZXI6OmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6
ZV90KQoreworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYThhODNjNjU5MjVkMjYyYWRkMjBiYTVhOGIxOTAzNjVlNTkzMmNiMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmgKQEAgLTAsMCArMSw2MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCitjbGFzcyBFbmNvZGVy
IHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEVuY29kZXImIG9wZXJh
dG9yPDwoVCYmIHQpCisgICAgeworICAgICAgICBJUEM6OkFyZ3VtZW50Q29kZXI8c3RkOjpyZW1v
dmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4+OjplbmNvZGUoKnRoaXMsIHN0
ZDo6Zm9yd2FyZDxUPih0KSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBlbmNvZGUo
QXJnJiYgYXJnLCBBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgICp0aGlzIDw8IHN0ZDo6
Zm9yd2FyZDxBcmc+KGFyZyk7CisgICAgICAgIGVuY29kZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pOworICAgIH0KKyAgICB2b2lkIGVuY29kZSgpIHsgfQorCisgICAgVmVjdG9yPHVpbnQ4
X3Q+IHRha2VCdWZmZXIoKSB7IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCB7IH0pOyB9
CisKKyAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90
LCBzaXplX3QgYWxpZ25tZW50KTsKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8dWludDhfdD4gbV9i
dWZmZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXIuaAppbmRleCBiYjgyMjJjMmM5ZGJiMDc3MmJkMzllNzlmNDQzMDVmNDcw
YmU5ZjU1Li4yNmU3YzU1OTE0NDdmZWJmNTc4NTFlYWU1ZDJlMGY0NmQ5YmVlMDFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyLmgKQEAgLTI4LDEzICsyOCw5IEBACiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJh
bWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENsaWVudC5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlckludGVyZmFjZS5oIgogI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50
U3RvcmUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VFcnJvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0pTT05WYWx1
ZXMuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDIsMzggKzM4LDMwIEBACiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1lbnVtIGNsYXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UeXBlIDogYm9vbCB7IFVuYXR0cmlidXRlZCwgQXR0cmlidXRlZCB9OwotCi1jbGFz
cyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyPiB7CitjbGFzcyBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXIgOiBwdWJsaWMgUENNOjpNYW5hZ2VySW50ZXJmYWNlLCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyPiB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAKLSAgICB1c2luZyBBdHRyaWJ1dGlvbkRlc3Rp
bmF0aW9uU2l0ZSA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
bkRlc3RpbmF0aW9uU2l0ZTsKLSAgICB1c2luZyBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7Ci0g
ICAgdXNpbmcgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDsKLSAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOwotICAgIHVzaW5nIFNvdXJjZVNpdGUgPSBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZTsKLQogICAgIGV4cGxpY2l0IFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcihVbmlxdWVSZWY8UENNOjpDbGllbnQ+JiYsIGNvbnN0IFN0cmluZyYg
c3RvcmFnZURpcmVjdG9yeSk7CiAgICAgflByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcigp
OwogCi0gICAgdm9pZCBzdG9yZVVuYXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYm
KTsKLSAgICB2b2lkIGhhbmRsZUF0dHJpYnV0aW9uKEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwg
Y29uc3QgVVJMJiByZXF1ZXN0VVJMLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZGly
ZWN0RG9tYWluLCBjb25zdCBVUkwmIGZpcnN0UGFydHlVUkwpOwotICAgIHZvaWQgY2xlYXIoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGNsZWFyRm9yUmVnaXN0cmFibGVE
b21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwotICAgIHZvaWQgbWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0
b3JhZ2UoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRB
dHRyaWJ1dGlvblR5cGUpOworICAgIHZvaWQgc3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQmJikgZmluYWw7CisgICAgdm9pZCBoYW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhJiYsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiByZWRpcmVjdERvbWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJMKSBm
aW5hbDsKKyAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7
CisgICAgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIG1pZ3Jh
dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKFByaXZhdGVDbGlja01l
YXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKSBmaW5h
bDsKIAotICAgIHZvaWQgdG9TdHJpbmdGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nKT4mJikgY29uc3Q7Ci0gICAgdm9pZCBzZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhi
b29sIHZhbHVlKSB7IG1faXNSdW5uaW5nVGVzdCA9IHZhbHVlOyB9Ci0gICAgdm9pZCBzZXRUb2tl
blB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJMJiYpOwotICAgIHZvaWQgc2V0VG9rZW5TaWduYXR1
cmVVUkxGb3JUZXN0aW5nKFVSTCYmKTsKLSAgICB2b2lkIHNldEF0dHJpYnV0aW9uUmVwb3J0VVJM
c0ZvclRlc3RpbmcoVVJMJiYgc291cmNlVVJMLCBVUkwmJiBkZXN0aW5hdGlvblVSTCk7Ci0gICAg
dm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZygpOwotICAgIHZvaWQg
bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5n
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRFcGhlbWVyYWxNZWFz
dXJlbWVudEZvclRlc3RpbmcoYm9vbCB2YWx1ZSkgeyBtX2lzUnVubmluZ0VwaGVtZXJhbE1lYXN1
cmVtZW50VGVzdCA9IHZhbHVlOyB9Ci0gICAgdm9pZCBzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1
ZXNGb3JUZXN0aW5nKFN0cmluZyYmIHVubGlua2FibGVUb2tlbiwgU3RyaW5nJiYgc2VjcmV0VG9r
ZW4sIFN0cmluZyYmIHNpZ25hdHVyZSwgU3RyaW5nJiYga2V5SUQpOwotICAgIHZvaWQgc3RhcnRU
aW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZygpOwotICAgIHZvaWQgZGVzdHJveVN0b3JlRm9yVGVz
dGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdG9TdHJpbmdGb3JU
ZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJikgY29uc3QgZmluYWw7Cisg
ICAgdm9pZCBzZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhib29sIHZhbHVlKSBmaW5hbCB7IG1f
aXNSdW5uaW5nVGVzdCA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRUb2tlblB1YmxpY0tleVVSTEZv
clRlc3RpbmcoVVJMJiYpIGZpbmFsOworICAgIHZvaWQgc2V0VG9rZW5TaWduYXR1cmVVUkxGb3JU
ZXN0aW5nKFVSTCYmKSBmaW5hbDsKKyAgICB2b2lkIHNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0Zv
clRlc3RpbmcoVVJMJiYgc291cmNlVVJMLCBVUkwmJiBkZXN0aW5hdGlvblVSTCkgZmluYWw7Cisg
ICAgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZygpIGZpbmFsOwor
ICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRG
b3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBz
ZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcoYm9vbCB2YWx1ZSkgZmluYWwgeyBtX2lz
UnVubmluZ0VwaGVtZXJhbE1lYXN1cmVtZW50VGVzdCA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRQ
Q01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFN0cmluZyYmIHVubGlua2FibGVUb2tl
biwgU3RyaW5nJiYgc2VjcmV0VG9rZW4sIFN0cmluZyYmIHNpZ25hdHVyZSwgU3RyaW5nJiYga2V5
SUQpIGZpbmFsOworICAgIHZvaWQgc3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZygpIGZp
bmFsOworICAgIHZvaWQgZGVzdHJveVN0b3JlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFBDTTo6U3RvcmUmIHN0b3JlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcyYWZkOWU0
NTBmODVhN2ZhNDE0OWFhNjgzYThjMzM5MjhlNzk0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmNwcApAQCAtMCwwICsxLDI1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaCIKKworI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIK
KyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5oIgorI2luY2x1ZGUgIlByaXZh
dGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1
cmVtZW50RW5jb2Rlci5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
ci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK25hbWVzcGFj
ZSBNZXNzYWdlSW5mbyB7CisKKyNkZWZpbmUgRlVOQ1RJT04obWYpIHN0cnVjdCBtZiB7IHN0YXRp
YyBjb25zdGV4cHIgYXV0byBNZW1iZXJGdW5jdGlvbiA9ICZQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXI6Om1mOworI2RlZmluZSBBUkdVTUVOVFMoLi4uKSB1c2luZyBBcmdzVHVwbGUgPSBz
dGQ6OnR1cGxlPF9fVkFfQVJHU19fPjsKKyNkZWZpbmUgUkVQTFkoLi4uKSB1c2luZyBSZXBseSA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoX19WQV9BUkdTX18pPjsgXAorICAgIHN0YXRpYyBQQ006
OkVuY29kZWRNZXNzYWdlIGVuY29kZVJlcGx5KF9fVkFfQVJHU19fKTsKKyNkZWZpbmUgRU5EIH07
CisKK0ZVTkNUSU9OKHN0b3JlVW5hdHRyaWJ1dGVkKQorQVJHVU1FTlRTKFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50KQorRU5ECisKK0ZVTkNUSU9OKGhhbmRsZUF0dHJpYnV0aW9uKQor
QVJHVU1FTlRTKFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6QXR0cmlidXRpb25Ucmln
Z2VyRGF0YSwgVVJMLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgVVJMKQorRU5ECisKK0ZV
TkNUSU9OKGNsZWFyKQorQVJHVU1FTlRTKCkKK1JFUExZKCkKK0VORAorCitGVU5DVElPTihjbGVh
ckZvclJlZ2lzdHJhYmxlRG9tYWluKQorQVJHVU1FTlRTKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluKQorUkVQTFkoKQorRU5ECisKK0ZVTkNUSU9OKG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEZyb21MZWdhY3lTdG9yYWdlKQorQVJHVU1FTlRTKFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkKK0VORAor
CitGVU5DVElPTih0b1N0cmluZ0ZvclRlc3RpbmcpCitBUkdVTUVOVFMoKQorUkVQTFkoU3RyaW5n
KQorRU5ECisKK0ZVTkNUSU9OKHNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKQorQVJHVU1FTlRT
KGJvb2wpCitFTkQKKworRlVOQ1RJT04oc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKQor
QVJHVU1FTlRTKFVSTCkKK0VORAorCitGVU5DVElPTihzZXRUb2tlblNpZ25hdHVyZVVSTEZvclRl
c3RpbmcpCitBUkdVTUVOVFMoVVJMKQorRU5ECisKK0ZVTkNUSU9OKHNldEF0dHJpYnV0aW9uUmVw
b3J0VVJMc0ZvclRlc3RpbmcpCitBUkdVTUVOVFMoVVJMLCBVUkwpCitFTkQKKworRlVOQ1RJT04o
bWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3RpbmcpCitBUkdVTUVOVFMoKQorRU5E
CisKK0ZVTkNUSU9OKG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBp
cmVkRm9yVGVzdGluZykKK0FSR1VNRU5UUygpCitSRVBMWSgpCitFTkQKKworRlVOQ1RJT04oc2V0
RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nKQorQVJHVU1FTlRTKGJvb2wpCitFTkQKKwor
RlVOQ1RJT04oc2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZykKK0FSR1VNRU5U
UyhTdHJpbmcsIFN0cmluZywgU3RyaW5nLCBTdHJpbmcpCitFTkQKKworRlVOQ1RJT04oc3RhcnRU
aW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZykKK0FSR1VNRU5UUygpCitFTkQKKworRlVOQ1RJT04o
ZGVzdHJveVN0b3JlRm9yVGVzdGluZykKK0FSR1VNRU5UUygpCitSRVBMWSgpCitFTkQKKworI3Vu
ZGVmIEZVTkNUSU9OCisjdW5kZWYgQVJHVU1FTlRTCisjdW5kZWYgUkVQTFkKKyN1bmRlZiBFTkQK
KworI2RlZmluZSBFTVBUWV9SRVBMWShtZikgUENNOjpFbmNvZGVkTWVzc2FnZSBtZjo6ZW5jb2Rl
UmVwbHkoKSB7IHJldHVybiB7IH07IH0KK0VNUFRZX1JFUExZKGNsZWFyKTsKK0VNUFRZX1JFUExZ
KGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4pOworRU1QVFlfUkVQTFkobWFya0F0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKTsKK0VNUFRZX1JFUExZ
KGRlc3Ryb3lTdG9yZUZvclRlc3RpbmcpOworI3VuZGVmIEVNUFRZX1JFUExZCisKK1BDTTo6RW5j
b2RlZE1lc3NhZ2UgdG9TdHJpbmdGb3JUZXN0aW5nOjplbmNvZGVSZXBseShTdHJpbmcgcmVwbHkp
Cit7CisgICAgUENNOjpFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2RlciA8PCByZXBseTsKKyAg
ICByZXR1cm4gZW5jb2Rlci50YWtlQnVmZmVyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIE1lc3Nh
Z2VJbmZvCisKK2Jvb2wgbWVzc2FnZVR5cGVTZW5kc1JlcGx5KE1lc3NhZ2VUeXBlIG1lc3NhZ2VU
eXBlKQoreworICAgIHN3aXRjaCAobWVzc2FnZVR5cGUpIHsKKyAgICBjYXNlIE1lc3NhZ2VUeXBl
OjpTdG9yZVVuYXR0cmlidXRlZDoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpIYW5kbGVBdHRyaWJ1
dGlvbjoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpNaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRGcm9tTGVnYWN5U3RvcmFnZToKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTZXRPdmVycmlkZVRp
bWVyRm9yVGVzdGluZzoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTZXRUb2tlblB1YmxpY0tleVVS
TEZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6U2V0VG9rZW5TaWduYXR1cmVVUkxG
b3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OlNldEF0dHJpYnV0aW9uUmVwb3J0VVJM
c0ZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6TWFya0FsbFVuYXR0cmlidXRlZEFz
RXhwaXJlZEZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6U2V0RXBoZW1lcmFsTWVh
c3VyZW1lbnRGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OlNldFBDTUZyYXVkUHJl
dmVudGlvblZhbHVlc0ZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6U3RhcnRUaW1l
ckltbWVkaWF0ZWx5Rm9yVGVzdGluZzoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2Ug
TWVzc2FnZVR5cGU6Ok1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBp
cmVkRm9yVGVzdGluZzoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpEZXN0cm95U3RvcmVGb3JUZXN0
aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OlRvU3RyaW5nRm9yVGVzdGluZzoKKyAgICBjYXNl
IE1lc3NhZ2VUeXBlOjpDbGVhcjoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpDbGVhckZvclJlZ2lz
dHJhYmxlRG9tYWluOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyJiBkYWVtb25NYW5hZ2VyKCkKK3sKKyAgICAvLyBGSVhNRTogR2l2
ZSB0aGUgbWFuYWdlciBhIHZhbGlkIHN0b3JhZ2UgZGlyZWN0b3J5LgorICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+IGluc3RhbmNlKG1ha2VV
bmlxdWVSZWY8UENNOjpEYWVtb25DbGllbnQ+KCksIFN0cmluZygpKTsKKyAgICByZXR1cm4gaW5z
dGFuY2UuZ2V0KCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEluZm8+Cit2b2lkIGhhbmRsZVBD
TU1lc3NhZ2UoUENNOjpFbmNvZGVkTWVzc2FnZSYmIGVuY29kZWRNZXNzYWdlKQoreworICAgIFBD
TTo6RGVjb2RlciBkZWNvZGVyKFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKworICAgIHN0ZDo6
b3B0aW9uYWw8dHlwZW5hbWUgSW5mbzo6QXJnc1R1cGxlPiBhcmd1bWVudHM7CisgICAgZGVjb2Rl
ciA+PiBhcmd1bWVudHM7CisgICAgaWYgKFVOTElLRUxZKCFhcmd1bWVudHMpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBJUEM6OmNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMp
LCAmZGFlbW9uTWFuYWdlcigpLCBJbmZvOjpNZW1iZXJGdW5jdGlvbik7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEluZm8+Cit2b2lkIGhhbmRsZVBDTU1lc3NhZ2VXaXRoUmVwbHkoUENNOjpFbmNv
ZGVkTWVzc2FnZSYmIGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBDTTo6
RW5jb2RlZE1lc3NhZ2UmJik+JiYgcmVwbHlTZW5kZXIpCit7CisgICAgUENNOjpEZWNvZGVyIGRl
Y29kZXIoV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworCisgICAgc3RkOjpvcHRpb25hbDx0eXBl
bmFtZSBJbmZvOjpBcmdzVHVwbGU+IGFyZ3VtZW50czsKKyAgICBkZWNvZGVyID4+IGFyZ3VtZW50
czsKKyAgICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50cykpCisgICAgICAgIHJldHVybjsKKworICAg
IHR5cGVuYW1lIEluZm86OlJlcGx5IGNvbXBsZXRpb25IYW5kbGVyIHsgW3JlcGx5U2VuZGVyID0g
V1RGTW92ZShyZXBseVNlbmRlcildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CisgICAgICAg
IHJlcGx5U2VuZGVyKEluZm86OmVuY29kZVJlcGx5KGFyZ3MuLi4pKTsKKyAgICB9fTsKKworICAg
IElQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCAmZGFlbW9uTWFuYWdlcigpLCBJbmZvOjpNZW1iZXJGdW5jdGlvbik7
Cit9CisKK3ZvaWQgZGVjb2RlTWVzc2FnZUFuZFNlbmRUb01hbmFnZXIoTWVzc2FnZVR5cGUgbWVz
c2FnZVR5cGUsIFZlY3Rvcjx1aW50OF90PiYmIGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJiByZXBseVNlbmRlcikKK3sKKyAgICBBU1NF
UlQobWVzc2FnZVR5cGVTZW5kc1JlcGx5KG1lc3NhZ2VUeXBlKSA9PSAhIXJlcGx5U2VuZGVyKTsK
KyAgICBzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpT
dG9yZVVuYXR0cmlidXRlZDoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6
c3RvcmVVbmF0dHJpYnV0ZWQ+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpIYW5kbGVBdHRyaWJ1dGlvbjoKKyAgICAg
ICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6aGFuZGxlQXR0cmlidXRpb24+KFdURk1v
dmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3Nh
Z2VUeXBlOjpDbGVhcjoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdl
SW5mbzo6Y2xlYXI+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5U2VuZGVy
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6Q2xlYXJGb3JS
ZWdpc3RyYWJsZURvbWFpbjoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZVdpdGhSZXBseTxNZXNz
YWdlSW5mbzo6Y2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbj4oV1RGTW92ZShlbmNvZGVkTWVzc2Fn
ZSksIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006
Ok1lc3NhZ2VUeXBlOjpNaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3Rv
cmFnZToKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6bWlncmF0ZVByaXZh
dGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2U+KFdURk1vdmUoZW5jb2RlZE1lc3Nh
Z2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpUb1N0cmlu
Z0ZvclRlc3Rpbmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUlu
Zm86OnRvU3RyaW5nRm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSksIFdURk1vdmUo
cmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBl
OjpTZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxN
ZXNzYWdlSW5mbzo6c2V0T3ZlcnJpZGVUaW1lckZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1l
c3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpTZXRU
b2tlblB1YmxpY0tleVVSTEZvclRlc3Rpbmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVz
c2FnZUluZm86OnNldFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVk
TWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlNl
dFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxN
ZXNzYWdlSW5mbzo6c2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nPihXVEZNb3ZlKGVuY29k
ZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6
U2V0QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVz
c2FnZTxNZXNzYWdlSW5mbzo6c2V0QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZz4oV1RG
TW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVz
c2FnZVR5cGU6Ok1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nOgorICAgICAg
ICBoYW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJbmZvOjptYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBp
cmVkRm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6Ok1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZVdp
dGhSZXBseTxNZXNzYWdlSW5mbzo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dHNBc0V4cGlyZWRGb3JUZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSwgV1RGTW92ZShy
ZXBseVNlbmRlcikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6
OlNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVz
c2FnZTxNZXNzYWdlSW5mbzo6c2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nPihXVEZN
b3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNz
YWdlVHlwZTo6U2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZzoKKyAgICAgICAg
aGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVz
Rm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3Rpbmc6
CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86OnN0YXJ0VGltZXJJbW1lZGlh
dGVseUZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpEZXN0cm95U3RvcmVGb3JUZXN0aW5nOgorICAg
ICAgICBoYW5kbGVQQ01NZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjpkZXN0cm95U3RvcmVG
b3JUZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSwgV1RGTW92ZShyZXBseVNlbmRlcikp
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmEyOTJmYTlmMDk1NWIzZTAyMjQ0NjUwMzcxZWRiNDkzOWMwNzFmYWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oCkBAIC0wLDAg
KzEsMTI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3Jl
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJs
ZURvbWFpbi5oPgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitlbnVtIGNsYXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBl
IDogYm9vbCB7IFVuYXR0cmlidXRlZCwgQXR0cmlidXRlZCB9OworCitjbGFzcyBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI7CisKK25hbWVzcGFjZSBQQ00geworCitjbGFzcyBNYW5hZ2Vy
SW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NYW5hZ2VySW50ZXJmYWNlKCkgeyB9
OworCisgICAgdXNpbmcgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgPSBXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGU7CisgICAgdXNp
bmcgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOworICAgIHVzaW5nIFByaXZhdGVDbGlja01lYXN1
cmVtZW50ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgdXNpbmcgUmVn
aXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBT
b3VyY2VTaXRlID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGU7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQmJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhJiYsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiByZWRpcmVjdERvbWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJMKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9y
YWdlKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UeXBlKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgdG9TdHJpbmdGb3JUZXN0aW5n
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJikgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhib29sIHZhbHVlKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwmJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoVVJMJiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZyhV
UkwmJiBzb3VyY2VVUkwsIFVSTCYmIGRlc3RpbmF0aW9uVVJMKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJl
ZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyhib29sKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoU3RyaW5n
JiYgdW5saW5rYWJsZVRva2VuLCBTdHJpbmcmJiBzZWNyZXRUb2tlbiwgU3RyaW5nJiYgc2lnbmF0
dXJlLCBTdHJpbmcmJiBrZXlJRCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFRpbWVySW1t
ZWRpYXRlbHlGb3JUZXN0aW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95U3RvcmVG
b3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOworfTsKKworY29uc3Rl
eHByIGNvbnN0IGNoYXIqIHByb3RvY29sVmVyc2lvbktleSB7ICJ2ZXJzaW9uIiB9OworY29uc3Rl
eHByIHVpbnQ2NF90IHByb3RvY29sVmVyc2lvblZhbHVlIHsgMSB9OworCitjb25zdGV4cHIgY29u
c3QgY2hhciogcHJvdG9jb2xNZXNzYWdlVHlwZUtleSB7ICJtZXNzYWdlIHR5cGUiIH07CitlbnVt
IGNsYXNzIE1lc3NhZ2VUeXBlIDogdWludDhfdCB7CisgICAgU3RvcmVVbmF0dHJpYnV0ZWQsCisg
ICAgSGFuZGxlQXR0cmlidXRpb24sCisgICAgQ2xlYXIsCisgICAgQ2xlYXJGb3JSZWdpc3RyYWJs
ZURvbWFpbiwKKyAgICBNaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3Rv
cmFnZSwKKyAgICBUb1N0cmluZ0ZvclRlc3RpbmcsCisgICAgU2V0T3ZlcnJpZGVUaW1lckZvclRl
c3RpbmcsCisgICAgU2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nLAorICAgIFNldFRva2Vu
U2lnbmF0dXJlVVJMRm9yVGVzdGluZywKKyAgICBTZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JU
ZXN0aW5nLAorICAgIE1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nLAorICAg
IE1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGlu
ZywKKyAgICBTZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcsCisgICAgU2V0UENNRnJh
dWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZywKKyAgICBTdGFydFRpbWVySW1tZWRpYXRlbHlG
b3JUZXN0aW5nLAorICAgIERlc3Ryb3lTdG9yZUZvclRlc3RpbmcsCit9OworCitjb25zdGV4cHIg
Y29uc3QgY2hhciogcHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSB7ICJlbmNvZGVkIG1lc3NhZ2Ui
IH07Cit1c2luZyBFbmNvZGVkTWVzc2FnZSA9IFZlY3Rvcjx1aW50OF90PjsKKwordm9pZCBkZWNv
ZGVNZXNzYWdlQW5kU2VuZFRvTWFuYWdlcihNZXNzYWdlVHlwZSwgVmVjdG9yPHVpbnQ4X3Q+JiYg
bWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYpOwor
Ym9vbCBtZXNzYWdlVHlwZVNlbmRzUmVwbHkoTWVzc2FnZVR5cGUpOworCit9IC8vIG5hbWVzcGFj
ZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZT4geworICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdl
VHlwZSwKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTdG9yZVVuYXR0cmlidXRl
ZCwKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpIYW5kbGVBdHRyaWJ1dGlvbiwK
KyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpDbGVhciwKKyAgICAgICAgV2ViS2l0
OjpQQ006Ok1lc3NhZ2VUeXBlOjpDbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluLAorICAgICAgICBX
ZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6Ok1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZy
b21MZWdhY3lTdG9yYWdlLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlRvU3Ry
aW5nRm9yVGVzdGluZywKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTZXRPdmVy
cmlkZVRpbWVyRm9yVGVzdGluZywKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpT
ZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNz
YWdlVHlwZTo6U2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nLAorICAgICAgICBXZWJLaXQ6
OlBDTTo6TWVzc2FnZVR5cGU6OlNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcsCisg
ICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6TWFya0FsbFVuYXR0cmlidXRlZEFzRXhw
aXJlZEZvclRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6TWFya0F0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nLAorICAg
ICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9y
VGVzdGluZywKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTZXRQQ01GcmF1ZFBy
ZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5
cGU6OlN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6UENN
OjpNZXNzYWdlVHlwZTo6RGVzdHJveVN0b3JlRm9yVGVzdGluZworICAgID47Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2NhZTRlNGZmNThjYjYxZjU1ZjViNTE5NWJhNWUzZDBiYThkYmRkMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuY3BwCkBAIC0wLDAgKzEsMTU2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlclByb3h5LmgiCisKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERl
Y29kZXIuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCit0ZW1wbGF0ZTxNZXNzYWdl
VHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KK3ZvaWQgc2VuZE1lc3NhZ2UoQXJn
cyYmLi4uIGFyZ3MpCit7CisgICAgRW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIuZW5jb2Rl
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgQ29ubmVjdGlvbjo6Y29ubmVjdGlv
blRvRGFlbW9uKCkuc2VuZChtZXNzYWdlVHlwZSwgZW5jb2Rlci50YWtlQnVmZmVyKCkpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdHJ1Y3QgUmVwbHlDYWxsZXI7Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjw+IHsKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGVj
b2RlciYmIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQorfTsKK3Rl
bXBsYXRlPD4gc3RydWN0IFJlcGx5Q2FsbGVyPFN0cmluZz4geworICAgIHN0YXRpYyB2b2lkIGNh
bGxSZXBseShEZWNvZGVyJiYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gc3RyaW5nOworICAgICAgICBkZWNvZGVyID4+IHN0cmluZzsKKyAgICAgICAgaWYgKCFz
dHJpbmcpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSgqc3RyaW5nKSk7CisgICAgfQorfTsKKwordGVt
cGxhdGU8TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5cGVuYW1lLi4uIEFyZ3MsIHR5cGVuYW1l
Li4uIFJlcGx5QXJncz4KK3ZvaWQgc2VuZE1lc3NhZ2VXaXRoUmVwbHkoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXBseUFyZ3MuLi4pPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcmdzJiYuLi4gYXJn
cykKK3sKKyAgICBFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2Rlci5lbmNvZGUoc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICBDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9EYWVtb24o
KS5zZW5kV2l0aFJlcGx5KG1lc3NhZ2VUeXBlLCBlbmNvZGVyLnRha2VCdWZmZXIoKSwgW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvIHJlcGx5QnVm
ZmVyKSBtdXRhYmxlIHsKKyAgICAgICAgRGVjb2RlciBkZWNvZGVyKFdURk1vdmUocmVwbHlCdWZm
ZXIpKTsKKyAgICAgICAgUmVwbHlDYWxsZXI8UmVwbHlBcmdzLi4uPjo6Y2FsbFJlcGx5KFdURk1v
dmUoZGVjb2RlciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwor
dm9pZCBNYW5hZ2VyUHJveHk6OnN0b3JlVW5hdHRyaWJ1dGVkKFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50JiYgcGNtKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpTdG9y
ZVVuYXR0cmlidXRlZD4ocGNtKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OmhhbmRsZUF0dHJp
YnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhJiYgdHJpZ2dlckRhdGEsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiByZWRpcmVjdERvbWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJM
KQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpIYW5kbGVBdHRyaWJ1dGlvbj4odHJp
Z2dlckRhdGEsIHJlcXVlc3RVUkwsIHJlZGlyZWN0RG9tYWluLCBmaXJzdFBhcnR5VVJMKTsKK30K
Kwordm9pZCBNYW5hZ2VyUHJveHk6OmNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlVHlw
ZTo6Q2xlYXI+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBNYW5hZ2Vy
UHJveHk6OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VUeXBlOjpDbGVhckZv
clJlZ2lzdHJhYmxlRG9tYWluPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZG9tYWluKTsK
K30KKwordm9pZCBNYW5hZ2VyUHJveHk6Om1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZy
b21MZWdhY3lTdG9yYWdlKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgcGNtLCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSB0eXBlKQoreworICAgIHNlbmRN
ZXNzYWdlPE1lc3NhZ2VUeXBlOjpNaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVn
YWN5U3RvcmFnZT4ocGNtLCB0eXBlKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OnRvU3RyaW5n
Rm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGNvbnN0Cit7CisgICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZVR5cGU6OlRv
U3RyaW5nRm9yVGVzdGluZz4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lk
IE1hbmFnZXJQcm94eTo6c2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkKK3sK
KyAgICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlwZTo6U2V0T3ZlcnJpZGVUaW1lckZvclRlc3Rpbmc+
KHZhbHVlKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OnNldFRva2VuUHVibGljS2V5VVJMRm9y
VGVzdGluZyhVUkwmJiB1cmwpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlNldFRv
a2VuUHVibGljS2V5VVJMRm9yVGVzdGluZz4odXJsKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6
OnNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwmJiB1cmwpCit7CisgICAgc2VuZE1l
c3NhZ2U8TWVzc2FnZVR5cGU6OlNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZz4odXJsKTsK
K30KKwordm9pZCBNYW5hZ2VyUHJveHk6OnNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3Rp
bmcoVVJMJiYgc291cmNlVVJMLCBVUkwmJiBkZXN0aW5hdGlvblVSTCkKK3sKKyAgICBzZW5kTWVz
c2FnZTxNZXNzYWdlVHlwZTo6U2V0QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZz4oc291
cmNlVVJMLCBkZXN0aW5hdGlvblVSTCk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjptYXJrQWxs
VW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZygpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVz
c2FnZVR5cGU6Ok1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nPigpOworfQor
Cit2b2lkIE1hbmFnZXJQcm94eTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlVHlwZTo6TWFy
a0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nPihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpzZXRF
cGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcoYm9vbCB2YWx1ZSkKK3sKKyAgICBzZW5kTWVz
c2FnZTxNZXNzYWdlVHlwZTo6U2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nPih2YWx1
ZSk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNG
b3JUZXN0aW5nKFN0cmluZyYmIHVubGlua2FibGVUb2tlbiwgU3RyaW5nJiYgc2VjcmV0VG9rZW4s
IFN0cmluZyYmIHNpZ25hdHVyZSwgU3RyaW5nJiYga2V5SUQpCit7CisgICAgc2VuZE1lc3NhZ2U8
TWVzc2FnZVR5cGU6OlNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3Rpbmc+KHVubGlu
a2FibGVUb2tlbiwgc2VjcmV0VG9rZW4sIHNpZ25hdHVyZSwga2V5SUQpOworfQorCit2b2lkIE1h
bmFnZXJQcm94eTo6c3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZygpCit7CisgICAgc2Vu
ZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3Rpbmc+KCk7
Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpkZXN0cm95U3RvcmVGb3JUZXN0aW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kTWVzc2Fn
ZVdpdGhSZXBseTxNZXNzYWdlVHlwZTo6RGVzdHJveVN0b3JlRm9yVGVzdGluZz4oV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNkNDEx
OTk0YjRiMDZmMGY2YjVkOTkxNWYyZjJjZGZhY2E5NmU2ZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaApAQCAtMCwwICsxLDU5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXJJbnRlcmZhY2UuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK2NsYXNzIE1hbmFnZXJQcm94eSA6IHB1
YmxpYyBNYW5hZ2VySW50ZXJmYWNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICB2b2lkIHN0b3JlVW5hdHRyaWJ1dGVkKFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50JiYpIGZpbmFsOworICAgIHZvaWQgaGFuZGxlQXR0cmlidXRpb24oV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29uc3Qg
VVJMJiByZXF1ZXN0VVJMLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZGlyZWN0RG9t
YWluLCBjb25zdCBVUkwmIGZpcnN0UGFydHlVUkwpIGZpbmFsOworICAgIHZvaWQgY2xlYXIoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyRm9yUmVnaXN0
cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgbWlncmF0ZVByaXZhdGVDbGlja01l
YXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpIGZpbmFsOworCisg
ICAgdm9pZCB0b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcp
PiYmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJv
b2wpIGZpbmFsOworICAgIHZvaWQgc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTCYm
KSBmaW5hbDsKKyAgICB2b2lkIHNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwmJikg
ZmluYWw7CisgICAgdm9pZCBzZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVSTCYm
IHNvdXJjZVVSTCwgVVJMJiYgZGVzdGluYXRpb25VUkwpIGZpbmFsOworICAgIHZvaWQgbWFya0Fs
bFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3RpbmcoKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgc2V0RXBoZW1lcmFsTWVh
c3VyZW1lbnRGb3JUZXN0aW5nKGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0UENNRnJhdWRQcmV2
ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhTdHJpbmcmJiB1bmxpbmthYmxlVG9rZW4sIFN0cmluZyYm
IHNlY3JldFRva2VuLCBTdHJpbmcmJiBzaWduYXR1cmUsIFN0cmluZyYmIGtleUlEKSBmaW5hbDsK
KyAgICB2b2lkIHN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3RpbmcoKSBmaW5hbDsKKyAgICB2
b2lkIGRlc3Ryb3lTdG9yZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBm
aW5hbDsKK307CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjFjMzFmMDdiZjhlODgzMjEwNTMyOGRiNDhlY2ZhMDI2NzFhYmE5YzcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlv
bkNvY29hLm1tCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKworI2lt
cG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCIKKyNpbXBvcnQgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBD
TSB7CisKK0Nvbm5lY3Rpb246OkNvbm5lY3Rpb24oT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25f
dD4mJiBjb25uZWN0aW9uKQorICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikp
IHsgfQorCitDb25uZWN0aW9uIENvbm5lY3Rpb246OmNvbm5lY3Rpb25Ub0RhZW1vbigpCit7Cisg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
T1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4+IGNvbm5lY3Rpb247CisgICAgaWYgKCFjb25u
ZWN0aW9uLmdldCgpKSB7CisgICAgICAgIGNvbm5lY3Rpb24uZ2V0KCkgPSBhZG9wdE9TT2JqZWN0
KHhwY19jb25uZWN0aW9uX2NyZWF0ZV9tYWNoX3NlcnZpY2UoImNvbS5hcHBsZS53ZWJraXQuYWRh
dHRyaWJ1dGlvbmQuc2VydmljZSIsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIDApKTsKKyAg
ICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIoY29ubmVjdGlvbi5nZXQoKS5n
ZXQoKSwgXih4cGNfb2JqZWN0X3QgZXZlbnQpIHsKKyAgICAgICAgICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgICAgICAgICBpZiAoZXZlbnQgPT0gWFBDX0VSUk9SX0NPTk5FQ1RJ
T05fSU5URVJSVVBURUQpIHsKKyAgICAgICAgICAgICAgICAvLyBEYWVtb24gY3Jhc2hlZCwgd2Ug
d2lsbCBuZWVkIHRvIG1ha2UgYSBuZXcgY29ubmVjdGlvbiB0byBhIG5ldyBpbnN0YW5jZSBvZiB0
aGUgZGFlbW9uLgorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uZ2V0KCkgPSBudWxscHRyOwor
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIH0pOworICAgICAgICB4cGNfY29ubmVjdGlvbl9hY3RpdmF0ZShjb25uZWN0aW9u
LmdldCgpLmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIENvbm5lY3Rpb24oT1NPYmplY3RQdHI8
eHBjX2Nvbm5lY3Rpb25fdD4oY29ubmVjdGlvbi5nZXQoKSkpOworfQorCitzdGF0aWMgT1NPYmpl
Y3RQdHI8eHBjX29iamVjdF90PiBkaWN0aW9uYXJ5RnJvbU1lc3NhZ2UoTWVzc2FnZVR5cGUgbWVz
c2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYgbWVzc2FnZSkKK3sKKyAgICBhdXRvIGRpY3Rpb25h
cnkgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZV9lbXB0eSgpKTsKKyAgICBh
ZGRWZXJzaW9uQW5kRW5jb2RlZE1lc3NhZ2VUb0RpY3Rpb25hcnkoV1RGTW92ZShtZXNzYWdlKSwg
ZGljdGlvbmFyeS5nZXQoKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9u
YXJ5LmdldCgpLCBwcm90b2NvbE1lc3NhZ2VUeXBlS2V5LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
bWVzc2FnZVR5cGUpKTsKKyAgICByZXR1cm4gZGljdGlvbmFyeTsKK30KKwordm9pZCBDb25uZWN0
aW9uOjpzZW5kKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmIG1lc3Nh
Z2UpCit7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24pIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5k
X21lc3NhZ2UobV9jb25uZWN0aW9uLmdldCgpLCBkaWN0aW9uYXJ5RnJvbU1lc3NhZ2UobWVzc2Fn
ZVR5cGUsIFdURk1vdmUobWVzc2FnZSkpLmdldCgpKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpz
ZW5kV2l0aFJlcGx5KE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmIG1l
c3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24pIHsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwor
ICAgIH0KKworICAgIGF1dG8gZGljdGlvbmFyeSA9IGRpY3Rpb25hcnlGcm9tTWVzc2FnZShtZXNz
YWdlVHlwZSwgV1RGTW92ZShtZXNzYWdlKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNz
YWdlX3dpdGhfcmVwbHkobV9jb25uZWN0aW9uLmdldCgpLCBkaWN0aW9uYXJ5LmdldCgpLCBkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICh4cGNfb2JqZWN0X3QgcmVwbHkpIG11dGFibGUg
eworICAgICAgICBpZiAoeHBjX2dldF90eXBlKHJlcGx5KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZ
KSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICB9CisgICAgICAgIGlmICh4cGNfZGlj
dGlvbmFyeV9nZXRfdWludDY0KHJlcGx5LCBwcm90b2NvbFZlcnNpb25LZXkpICE9IHByb3RvY29s
VmVyc2lvblZhbHVlKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICB9CisgICAgICAg
IHNpemVfdCBkYXRhU2l6ZSB7IDAgfTsKKyAgICAgICAgY29uc3Qgdm9pZCogZGF0YSA9IHhwY19k
aWN0aW9uYXJ5X2dldF9kYXRhKHJlcGx5LCBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5LCAmZGF0
YVNpemUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhKSwgZGF0YVNpemUgfSk7CisgICAgfSkuZ2V0KCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbQppbmRleCBkNmJmMDZlMTExZjZiYjVmN2Vm
MjhmMTk2ZDJlZTM4MDBjN2M4YTRjLi5iM2JhMWUyNDI0MjA4ZTc1NDE4YzI3MmU2YjY1NDA3MzQw
MzZkNjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyQ29j
b2EubW0KQEAgLTU3LDYgKzU3LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1BDTVJlcXVlc3QoV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkLAogCiAtICh2b2lk
KVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFz
ayAqKXRhc2sgZGlkUmVjZWl2ZUNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNyZWRl
bnRpYWwpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgLy8gRklYTUU6IEFkZCBwbHVibWluZyBz
byB0aGF0IHdlIGNhbiB0ZWxsIHRoZSBkYWVtb24gd2hpY2ggY2VydGlmaWNhdGVzIHRvIGFjY2Vw
dCB3aXRob3V0IHVzaW5nIE5ldHdvcmtTZXNzaW9uQ29jb2EuCiAgICAgaWYgKFtjaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kIGlzRXF1YWxUb1N0cmluZzpOU1VS
TEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3RdCiAgICAgICAgICYmIE5ldHdvcmtTZXNz
aW9uQ29jb2E6OmFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY2hhbGxlbmdl
KSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpj
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1By
aXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50WFBDVXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmM3MDc4NmVmMTU5OGM4M2ZhNDM2MmRm
M2Q2YzdmZTc3ODNlMTIxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRYUENVdGlsaXRpZXMuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKwordm9pZCBh
ZGRWZXJzaW9uQW5kRW5jb2RlZE1lc3NhZ2VUb0RpY3Rpb25hcnkoVmVjdG9yPHVpbnQ4X3Q+JiYs
IHhwY19vYmplY3RfdCk7CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMu
bW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmE2MzAzMWI1YzM2YjcxMjYxODIxNzA0M2ZmOTdkZmY5NDc0YzVkMmMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1tCkBAIC0wLDAgKzEs
NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlByaXZhdGVD
bGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitu
YW1lc3BhY2UgUENNIHsKKwordm9pZCBhZGRWZXJzaW9uQW5kRW5jb2RlZE1lc3NhZ2VUb0RpY3Rp
b25hcnkoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgeHBjX29iamVjdF90IGRpY3Rpb25hcnkp
Cit7CisgICAgQVNTRVJUKHhwY19nZXRfdHlwZShkaWN0aW9uYXJ5KSA9PSBYUENfVFlQRV9ESUNU
SU9OQVJZKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRpY3Rpb25hcnksIFBDTTo6
cHJvdG9jb2xWZXJzaW9uS2V5LCBQQ006OnByb3RvY29sVmVyc2lvblZhbHVlKTsKKworICAgIGF1
dG8gYnVmZmVyU2l6ZSA9IG1lc3NhZ2Uuc2l6ZSgpOworICAgIGF1dG8gcmF3UG9pbnRlciA9IG1l
c3NhZ2UucmVsZWFzZUJ1ZmZlcigpLmxlYWtQdHIoKTsKKyAgICBhdXRvIGRpc3BhdGNoRGF0YSA9
IGFkb3B0TlMoZGlzcGF0Y2hfZGF0YV9jcmVhdGUocmF3UG9pbnRlciwgYnVmZmVyU2l6ZSwgZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgZmFzdEZyZWUocmF3UG9pbnRlcik7
CisgICAgfSkpOworICAgIGF1dG8geHBjRGF0YSA9IGFkb3B0T1NPYmplY3QoeHBjX2RhdGFfY3Jl
YXRlX3dpdGhfZGlzcGF0Y2hfZGF0YShkaXNwYXRjaERhdGEuZ2V0KCkpKTsKKyAgICB4cGNfZGlj
dGlvbmFyeV9zZXRfdmFsdWUoZGljdGlvbmFyeSwgUENNOjpwcm90b2NvbEVuY29kZWRNZXNzYWdl
S2V5LCB4cGNEYXRhLmdldCgpKTsKKworfQorCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5p
bgppbmRleCAzYjk3OTQ1NTA3OWU0NTZlMzU0OTNlMWUxZTVjYTQ2YjlkN2U4OGVkLi4xOTc0Yjhl
OWYyNTlhZWVmYzk0NDY0Njg0YjIwNGQzNTBmMzhkNDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNi
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJL
aXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KQEAgLTM1Nyw2ICszNTcsOCBAQAogICAgIChnbG9iYWwt
bmFtZSAiY29tLmFwcGxlLkFwcFNTTy5zZXJ2aWNlLXhwYyIpCiApCiAKKyhhbGxvdyBtYWNoLWxv
b2t1cCAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2Vydmlj
ZSIpKQorCiAod2l0aC1maWx0ZXIgKHVpZCAwKQogICAgIChhbGxvdyBtYWNoLWxvb2t1cAogICAg
ICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5EaXNrQXJiaXRyYXRpb24uZGlza2FyYml0cmF0
aW9uZCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKaW5kZXgg
YmNmN2NkMTYzZDliYTkyM2QxODBhMDNmOGE2ZWU0NTBmNzZjMWExZC4uNTMzZTgwOTcwNTQwNTVi
ODFhNmM1ZWExMDk4MWM1YjRkNDAyODc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXIuaApAQCAtNDgsNiArNDgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBBcmd1bWVudENvZGVyIHsKICAgICAgICAgdC5lbmNvZGUo
ZW5jb2Rlcik7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxUPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAg
ICAgICAgIGlmIGNvbnN0ZXhwcihIYXNNb2Rlcm5EZWNvZGVyVjxUPikKQEAgLTgyLDYgKzgzLDcg
QEAgc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6
OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFQp
LCBhbGlnbm9mKFQpKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgog
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFQ+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IHsKICAgICAgICAgVCByZXN1bHQ7CkBAIC0xMDAsNiArMTAyLDcgQEAgc3RydWN0IEFyZ3VtZW50
Q29kZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW1fdjxUPj4+IHsK
ICAgICAgICAgZW5jb2RlciA8PCBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlPFQ+KHZhbHVlKTsK
ICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFQ+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAgc3Rk
OjpvcHRpb25hbDxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PFQ+PiB2YWx1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA4MTBlZTJjZTUxZjI3
YzJkYmQ2MDdlNTMyYWEyNmQ2MDU2OWFiMjliLi5mZmY5ZTVlM2Y2YjNlMmVkNTZiNTY2MWUwMzI3
NDllZTYzMjM2ZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1
bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2RlcnMuY3BwCkBAIC0yNywxNiArMjcsMjMgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
IgogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01l
YXN1cmVtZW50RGVjb2Rlci5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RW5j
b2Rlci5oIgogI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KIHZvaWQgQXJndW1l
bnRDb2RlcjxXYWxsVGltZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXYWxsVGlt
ZSYgdGltZSkKIHsKICAgICBlbmNvZGVyIDw8IHRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1
ZSgpOwogfQordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxXYWxsVGltZT46OmVuY29kZTxF
bmNvZGVyPihFbmNvZGVyJiwgY29uc3QgV2FsbFRpbWUmKTsKK3RlbXBsYXRlCit2b2lkIEFyZ3Vt
ZW50Q29kZXI8V2FsbFRpbWU+OjplbmNvZGU8V2ViS2l0OjpQQ006OkVuY29kZXI+KFdlYktpdDo6
UENNOjpFbmNvZGVyJiwgY29uc3QgV2FsbFRpbWUmKTsKIAogV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgQXJndW1lbnRDb2RlcjxXYWxsVGltZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXYWxs
VGltZSYgdGltZSkKIHsKQEAgLTQ4LDYgKzU1LDcgQEAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
QXJndW1lbnRDb2RlcjxXYWxsVGltZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXYWxsVGkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KIFdBUk5f
VU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBBcmd1bWVudENvZGVyPFdhbGxU
aW1lPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IHRpbWU7CkBAIC01Niw2ICs2NCwxMCBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRp
b25hbDxXYWxsVGltZT4gQXJndW1lbnRDb2RlcjxXYWxsVGltZT46OmRlY29kZShEZWNvZAogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMoKnRpbWUpOwogfQordGVtcGxhdGUKK3N0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IEFyZ3Vt
ZW50Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGU8RGVjb2Rlcj4oRGVjb2RlciYpOwordGVtcGxhdGUK
K3N0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGU8
V2ViS2l0OjpQQ006OkRlY29kZXI+KFdlYktpdDo6UENNOjpEZWNvZGVyJik7CiAKIHZvaWQgQXJn
dW1lbnRDb2RlcjxBdG9tU3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEF0
b21TdHJpbmcmIGF0b21TdHJpbmcpCiB7CkBAIC0xMzMsMTIgKzE0NSwxNCBAQCB0ZW1wbGF0ZQog
dm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZTxFbmNvZGVyPihFbmNvZGVyJiwgY29u
c3QgU3RyaW5nJik7CiB0ZW1wbGF0ZQogdm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29k
ZTxTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVjdGlvbkVuY29kZXImLCBjb25z
dCBTdHJpbmcmKTsKK3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2Rl
PFdlYktpdDo6UENNOjpFbmNvZGVyPihXZWJLaXQ6OlBDTTo6RW5jb2RlciYsIGNvbnN0IFN0cmlu
ZyYpOwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3RlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIERlY29kZXI+CiBzdGF0aWMgaW5saW5lIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJpbmdUZXh0KERlY29kZXImIGRlY29kZXIsIHVpbnQz
Ml90IGxlbmd0aCkKIHsKICAgICAvLyBCZWZvcmUgYWxsb2NhdGluZyB0aGUgc3RyaW5nLCBtYWtl
IHN1cmUgdGhhdCB0aGUgZGVjb2RlciBidWZmZXIgaXMgYmlnIGVub3VnaC4KLSAgICBpZiAoIWRl
Y29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxDaGFyYWN0ZXJUeXBlPihsZW5ndGgp
KQorICAgIGlmICghZGVjb2Rlci50ZW1wbGF0ZSBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWlu
PENoYXJhY3RlclR5cGU+KGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCiAgICAgQ2hhcmFjdGVyVHlwZSogYnVmZmVyOwpAQCAtMTQ5LDI1ICsxNjMsMzIgQEAgc3Rh
dGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4dChEZWNvZGVy
JiBkZWNvZGVyLCB1aW50MzJfdAogICAgIHJldHVybiBzdHJpbmc7CiB9CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIERlY29kZXI+CiBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTdHJpbmc+
IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
dWludDMyX3QgbGVuZ3RoOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGVuZ3RoKSkKKyAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBsZW5ndGg7CisgICAgZGVjb2RlciA+PiBsZW5ndGg7Cisg
ICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAg
aWYgKGxlbmd0aCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpIHsKKyAg
ICBpZiAoKmxlbmd0aCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpIHsK
ICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbnVsbCBzdHJpbmcuCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpczhCaXQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShpczhCaXQpKQorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXM4Qml0OworICAgIGRlY29k
ZXIgPj4gaXM4Qml0OworICAgIGlmICghaXM4Qml0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIAotICAgIGlmIChpczhCaXQpCi0gICAgICAgIHJldHVybiBkZWNvZGVTdHJpbmdU
ZXh0PExDaGFyPihkZWNvZGVyLCBsZW5ndGgpOwotICAgIHJldHVybiBkZWNvZGVTdHJpbmdUZXh0
PFVDaGFyPihkZWNvZGVyLCBsZW5ndGgpOworICAgIGlmICgqaXM4Qml0KQorICAgICAgICByZXR1
cm4gZGVjb2RlU3RyaW5nVGV4dDxMQ2hhcj4oZGVjb2RlciwgKmxlbmd0aCk7CisgICAgcmV0dXJu
IGRlY29kZVN0cmluZ1RleHQ8VUNoYXI+KGRlY29kZXIsICpsZW5ndGgpOwogfQordGVtcGxhdGUK
K3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBBcmd1bWVudENvZGVyPFN0cmluZz46OmRlY29kZTxEZWNv
ZGVyPihEZWNvZGVyJik7Cit0ZW1wbGF0ZQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IEFyZ3VtZW50
Q29kZXI8U3RyaW5nPjo6ZGVjb2RlPFdlYktpdDo6UENNOjpEZWNvZGVyPihXZWJLaXQ6OlBDTTo6
RGVjb2RlciYpOwogCiBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBBcmd1bWVudENvZGVyPFN0cmlu
Zz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTdHJpbmcmIHJlc3VsdCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IGM5N2E2ZjU3NmVmZGFl
YWUwNGY2OTgzYmUyNTk0MmNlMjAzOWZlOWYuLmIxODJjNTRlYjc4OGQzZDY5ODE0YWE4MDczZTRm
ZjFhYTlmMzkyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rl
cnMuaApAQCAtMzAwLDYgKzMwMCw3IEBAIGF1dG8gdHVwbGVGcm9tVHVwbGVBbmRPYmplY3QoVCYm
IG9iamVjdCwgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4mJiB0dXBsZSkKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVHlwZSwgdHlwZW5hbWUuLi4gVHlwZXM+CiBzdHJ1Y3QgVHVwbGVEZWNvZGVySW1wbCB7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxzdGQ6OnR1cGxlPFR5cGUsIFR5cGVzLi4uPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFR5cGU+IG9wdGlvbmFsOwpAQCAtMzE3LDYgKzMx
OCw3IEBAIHN0cnVjdCBUdXBsZURlY29kZXJJbXBsIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlw
ZT4KIHN0cnVjdCBUdXBsZURlY29kZXJJbXBsPFR5cGU+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBEZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8VHlwZT4+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxUeXBl
PiBvcHRpb25hbDsKQEAgLTMyOSw2ICszMzEsNyBAQCBzdHJ1Y3QgVHVwbGVEZWNvZGVySW1wbDxU
eXBlPiB7CiAKIHRlbXBsYXRlPHNpemVfdCBzaXplLCB0eXBlbmFtZS4uLiBFbGVtZW50cz4KIHN0
cnVjdCBUdXBsZURlY29kZXIgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxFbGVtZW50cy4uLj4+IGRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIFR1cGxlRGVjb2RlckltcGw8RWxl
bWVudHMuLi4+OjpkZWNvZGUoZGVjb2Rlcik7CkBAIC0zMzcsNiArMzQwLDcgQEAgc3RydWN0IFR1
cGxlRGVjb2RlciB7CiAKIHRlbXBsYXRlPD4KIHN0cnVjdCBUdXBsZURlY29kZXI8MD4geworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3Rk
Ojp0dXBsZTw+PiBkZWNvZGUoRGVjb2RlciYpCiAgICAgewogICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3R1cGxlKCk7CkBAIC0zNTAsNiArMzU0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxl
bWVudHM+IHN0cnVjdCBBcmd1bWVudENvZGVyPHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+PiB7CiAg
ICAgICAgIFR1cGxlRW5jb2RlcjxzaXplb2YuLi4oRWxlbWVudHMpLCBFbGVtZW50cy4uLj46OmVu
Y29kZShlbmNvZGVyLCB0dXBsZSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVj
b2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj4g
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAgICByZXR1cm4gVHVwbGVEZWNv
ZGVyPHNpemVvZi4uLihFbGVtZW50cyksIEVsZW1lbnRzLi4uPjo6ZGVjb2RlKGRlY29kZXIpOwpA
QCAtNzIxLDggKzcyNiwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V1RGOjpWYXJpYW50PFR5cGVzLi4uPj4gewogfTsKICAgICAKIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2FsbFRp
bWUmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBXYWxsVGltZSYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCkBAIC03NDAs
NiArNzQ3LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTdHJpbmc+IHsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZShEZWNvZGVyJiwgU3RyaW5nJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rl
cj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRlY29kZShEZWNvZGVyJik7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tNYWluLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tNYWluLmgKaW5kZXggN2E5MjdjNzdk
MjZkODU1YjRiNmZlYWRhOTgwM2EwNDdjZWU4YjVjMy4uNGJlNzlkMmE1YmQwZTcwNGY5YTNiYzQ4
M2IyZDI1OGNkNDhlZGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dLTWFpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS01haW4u
aApAQCAtMzMsNiArMzMsNyBAQCBleHRlcm4gIkMiIHsKICNlbmRpZgogCiBXS19FWFBPUlQgaW50
IFdLWFBDU2VydmljZU1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqKiBhcmd2KSBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKK1dLX0VYUE9SVCBpbnQgV0tQQ01EYWVt
b25NYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiogYXJndikgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tNYWluLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLTWFpbi5tbQppbmRleCBlNDgwNWE0OGQ1
MTQwNmFkNTk1NjZiMzc3YmUyNTM5ODJhOWFlYjkwLi40NjgwMWRiZmZjZTZiODI2Y2QxMGRjYWFk
YTMzMGQ2ZjVmZGYxOGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvV0tNYWluLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS01haW4u
bW0KQEAgLTI2LDkgKzI2LDE1IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLTWFp
bi5oIgogCisjaW1wb3J0ICJQQ01EYWVtb25FbnRyeVBvaW50LmgiCiAjaW1wb3J0ICJYUENTZXJ2
aWNlRW50cnlQb2ludC5oIgogCiBpbnQgV0tYUENTZXJ2aWNlTWFpbihpbnQgYXJnYywgY29uc3Qg
Y2hhcioqIGFyZ3YpCiB7CiAgICAgcmV0dXJuIFdlYktpdDo6WFBDU2VydmljZU1haW4oYXJnYywg
YXJndik7CiB9CisKK2ludCBXS1BDTURhZW1vbk1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqKiBh
cmd2KQoreworICAgIHJldHVybiBXZWJLaXQ6OlBDTURhZW1vbk1haW4oYXJnYywgYXJndik7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0Nv
Y29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9F
bnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDhjOTEyMGJmNWNjYmMxNzFmOWE1Y2Q5ZWQxMmU3Y2QwMzk2ZTM0NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29j
b2EvRGFlbW9uL1BDTURhZW1vbkVudHJ5UG9pbnQuaApAQCAtMCwwICsxLDMyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitpbnQgUENNRGFlbW9u
TWFpbihpbnQsIGNvbnN0IGNoYXIqKik7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVt
b24vUENNRGFlbW9uRW50cnlQb2ludC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9p
bnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkVudHJ5UG9pbnQubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2YyMzIxZGU1YjE5YzFjMTY3NDliZmQ2YTYzNDY0Zjg0ZWQ1MjQ1NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFl
bW9uL1BDTURhZW1vbkVudHJ5UG9pbnQubW0KQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBDTURhZW1vbkVudHJ5UG9pbnQuaCIKKwor
I2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgiCisjaW1wb3J0ICJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaCIKKyNpbXBvcnQgIlByaXZh
dGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2ltcG9ydCA8
d3RmL0hhc2hTZXQuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KKyNpbXBvcnQgPHd0Zi9j
b2NvYS9FbnRpdGxlbWVudHMuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgor
CisvLyBGSVhNRTogQWRkIGRhZW1vbiBwbGlzdCB0byByZXBvc2l0b3J5LgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworc3RhdGljIEhhc2hTZXQ8UmV0YWluUHRyPHhwY19jb25uZWN0aW9uX3Q+PiYg
cGVlcnMoKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hTZXQ8UmV0YWluUHRyPHhwY19jb25uZWN0aW9uX3Q+Pj4gc2V0Owor
ICAgIHJldHVybiBzZXQuZ2V0KCk7Cit9CisKK3N0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFBDTTo6RW5jb2RlZE1lc3NhZ2UmJik+IHJlcGx5U2VuZGVyKFBDTTo6TWVzc2FnZVR5cGUgbWVz
c2FnZVR5cGUsIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4mJiByZXF1ZXN0KQoreworICAgIGlm
ICghUENNOjptZXNzYWdlVHlwZVNlbmRzUmVwbHkobWVzc2FnZVR5cGUpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpXSAoUENN
OjpFbmNvZGVkTWVzc2FnZSYmIG1lc3NhZ2UpIHsKKyAgICAgICAgYXV0byByZXBseSA9IGFkb3B0
T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlX3JlcGx5KHJlcXVlc3QuZ2V0KCkpKTsKKyAg
ICAgICAgUENNOjphZGRWZXJzaW9uQW5kRW5jb2RlZE1lc3NhZ2VUb0RpY3Rpb25hcnkoV1RGTW92
ZShtZXNzYWdlKSwgcmVwbHkuZ2V0KCkpOworICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21l
c3NhZ2UoeHBjX2RpY3Rpb25hcnlfZ2V0X3JlbW90ZV9jb25uZWN0aW9uKHJlcXVlc3QuZ2V0KCkp
LCByZXBseS5nZXQoKSk7CisgICAgfTsKK30KKworc3RhdGljIHZvaWQgY29ubmVjdGlvbkV2ZW50
SGFuZGxlcih4cGNfb2JqZWN0X3QgcmVxdWVzdCkKK3sKKyAgICBpZiAoeHBjX2dldF90eXBlKHJl
cXVlc3QpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAo
eHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXF1ZXN0LCBQQ006OnByb3RvY29sVmVyc2lvbktl
eSkgIT0gUENNOjpwcm90b2NvbFZlcnNpb25WYWx1ZSkgeworICAgICAgICBOU0xvZyhAInJlY2Vp
dmVkIHJlcXVlc3QgdGhhdCB3YXMgbm90IHRoZSBjdXJyZW50IHByb3RvY29sIHZlcnNpb24iKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gbWVzc2FnZVR5cGUgeyBzdGF0aWNf
Y2FzdDxQQ006Ok1lc3NhZ2VUeXBlPih4cGNfZGljdGlvbmFyeV9nZXRfdWludDY0KHJlcXVlc3Qs
IFBDTTo6cHJvdG9jb2xNZXNzYWdlVHlwZUtleSkpIH07CisgICAgc2l6ZV90IGRhdGFTaXplIHsg
MCB9OworICAgIGNvbnN0IHZvaWQqIGRhdGEgPSB4cGNfZGljdGlvbmFyeV9nZXRfZGF0YShyZXF1
ZXN0LCBQQ006OnByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksICZkYXRhU2l6ZSk7CisgICAgUENN
OjpFbmNvZGVkTWVzc2FnZSBlbmNvZGVkTWVzc2FnZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhKSwgZGF0YVNpemUgfTsKKyAgICBkZWNvZGVNZXNzYWdlQW5kU2VuZFRvTWFuYWdl
cihtZXNzYWdlVHlwZSwgV1RGTW92ZShlbmNvZGVkTWVzc2FnZSksIHJlcGx5U2VuZGVyKG1lc3Nh
Z2VUeXBlLCByZXF1ZXN0KSk7Cit9CisKK3N0YXRpYyB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9yTWFj
aFNlcnZpY2VDb25uZWN0aW9ucygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9TT2Jq
ZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+PiBsaXN0ZW5lciA9IHhwY19jb25uZWN0aW9uX2NyZWF0
ZV9tYWNoX3NlcnZpY2UoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIs
IGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFhQQ19DT05ORUNUSU9OX01BQ0hfU0VSVklDRV9M
SVNURU5FUik7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobGlzdGVuZXIu
Z2V0KCkuZ2V0KCksIF4oeHBjX29iamVjdF90IHBlZXIpIHsKKyAgICAgICAgaWYgKHhwY19nZXRf
dHlwZShwZWVyKSAhPSBYUENfVFlQRV9DT05ORUNUSU9OKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIC8vIEZJWE1FOiBBZGQgYW4gZW50aXRsZW1lbnQgY2hlY2sgaGVyZSBzbyB0aGF0
IG9ubHkgdGhlIG5ldHdvcmsgcHJvY2VzcyBjYW4gc3VjY2Vzc2Z1bGx5IGNvbm5lY3QuCisKKyAg
ICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIocGVlciwgXih4cGNfb2JqZWN0
X3QgZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChldmVudCA9PSBYUENfRVJST1JfQ09OTkVDVElP
Tl9JTlRFUlJVUFRFRCkgeworICAgICAgICAgICAgICAgIHBlZXJzKCkucmVtb3ZlKHBlZXIpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbm5l
Y3Rpb25FdmVudEhhbmRsZXIoZXZlbnQpOworICAgICAgICB9KTsKKyAgICAgICAgeHBjX2Nvbm5l
Y3Rpb25fc2V0X3RhcmdldF9xdWV1ZShwZWVyLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsK
KyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fYWN0aXZhdGUocGVlcik7CisgICAgICAgIAorICAgICAg
ICBwZWVycygpLmFkZChwZWVyKTsKKyAgICB9KTsKKyAgICB4cGNfY29ubmVjdGlvbl9hY3RpdmF0
ZShsaXN0ZW5lci5nZXQoKS5nZXQoKSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlZ2lzdGVyU2NoZWR1
bGVkQWN0aXZpdHlIYW5kbGVyKCkKK3sKKyAgICB4cGNfYWN0aXZpdHlfcmVnaXN0ZXIoImNvbS5h
cHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuYWN0aXZpdHkiLCBYUENfQUNUSVZJVFlfQ0hFQ0tf
SU4sIF4oeHBjX2FjdGl2aXR5X3QgYWN0aXZpdHkpIHsKKyAgICAgICAgaWYgKHhwY19hY3Rpdml0
eV9nZXRfc3RhdGUoYWN0aXZpdHkpID09IFhQQ19BQ1RJVklUWV9TVEFURV9DSEVDS19JTikgewor
ICAgICAgICAgICAgeHBjX29iamVjdF90IGNyaXRlcmlhID0geHBjX2FjdGl2aXR5X2NvcHlfY3Jp
dGVyaWEoYWN0aXZpdHkpOworCisgICAgICAgICAgICAvLyBGSVhNRTogc2V0IHZhbHVlcyBoZXJl
IHRoYXQgYWxpZ24gd2l0aCB2YWx1ZXMgZnJvbSB0aGUgcGxpc3QuCisKKyAgICAgICAgICAgIHhw
Y19hY3Rpdml0eV9zZXRfY3JpdGVyaWEoYWN0aXZpdHksIGNyaXRlcmlhKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiBBZGQgY29kZSBoZXJlIHRo
YXQgZG9lcyBkYWlseSB0YXNrcyBvZiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuCisg
ICAgfSk7Cit9CisKK3N0YXRpYyB2b2lkIGVudGVyU2FuZGJveCgpCit7CisgICAgLy8gRklYTUU6
IEVudGVyIGEgc2FuZGJveCBoZXJlLiBXZSBzaG91bGQgb25seSBuZWVkIHJlYWQvd3JpdGUgYWNj
ZXNzIHRvIG91ciBkYXRhYmFzZSBhbmQgbmV0d29yayBhY2Nlc3MgYW5kIG5vdGhpbmcgZWxzZS4K
K30KKworaW50IFBDTURhZW1vbk1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqKiBhcmd2KQorewor
ICAgIGlmIChhcmdjICE9IDIgfHwgc3RyY21wKGFyZ3ZbMV0sICJydW5Bc0RhZW1vbiIpKSB7Cisg
ICAgICAgIE5TTG9nKEAiVGhpcyBleGVjdXRhYmxlIGlzIGludGVuZGVkIHRvIGJlIHJ1biBhcyBh
IGRhZW1vbi4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKKyAgICAgICAgZW50ZXJTYW5kYm94KCk7CisgICAgICAgIHN0YXJ0TGlzdGVuaW5nRm9y
TWFjaFNlcnZpY2VDb25uZWN0aW9ucygpOworICAgICAgICByZWdpc3RlclNjaGVkdWxlZEFjdGl2
aXR5SGFuZGxlcigpOworICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisgICAg
fQorICAgIENGUnVuTG9vcFJ1bigpOworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDI0MTJiYmZhZDhlNWY4MTFiNTFlODJmNjBkMWM1NDYx
OWEyMTg4MzkuLmNmYWJjZTA1YjI0ZDA3ODk4MDZmMTRhYWU5MDg3MWFjMjBhODdkZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dApAQCAtMTAxLDggKzEwMSwxNCBAQCBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuY3BwCiBOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
dGFiYXNlLmNwcAogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uY3BwCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCitOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXJJbnRlcmZhY2UuY3BwCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuY3BwCiBOZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNw
cAorTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRDb25uZWN0aW9uLmNwcAorTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuY3BwCitOZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29k
ZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEVuY29kZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAKIAogTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBAbm8tdW5p
ZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggODkxMzgzNGY2YmI1ZjkzOWU3MjBi
MDllZmNiMDJjOTU0NGY4NGFhYS4uMTFlNzI5Njg0ZTRhMmFkZjBiNWNiODkzYWQ2NzkxZDkwMDU4
MjYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDEsNyArNDEsOSBAQCBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQogTmV0d29ya1Byb2Nlc3MvRW50
cnlQb2ludC9Db2NvYS9EYWVtb24vRGFlbW9uRW50cnlQb2ludC5tbQogTmV0d29ya1Byb2Nlc3Mv
RW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbQog
CitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQogTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3Jr
TG9hZGVyQ29jb2EubW0KK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2Nv
Y29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1tCiAKIE5ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvaW9zL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcklPUy5tbQogCkBA
IC0xOTEsNiArMTkzLDggQEAgU2hhcmVkL0NvY29hL1dLTlNVUkxSZXF1ZXN0Lm1tCiBTaGFyZWQv
Q29jb2EvV0tPYmplY3QubW0KIFNoYXJlZC9Db2NvYS9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1
ZXNDb2NvYS5tbQogCitTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENN
RGFlbW9uRW50cnlQb2ludC5tbQorCiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9Y
UENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCiBTaGFyZWQvRW50cnlQb2ludFV0aWxp
dGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNmOWUwZGY1NGJmNjhi
MjUwMDFjNmNjMWQ5ZWJjYjczYWUyMTE3M2YuLmY2OGI0Y2ZiNDg1ZDZmOGJmMzYyOGQwNTZiOWYz
ZDcwNDA2MjJlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTI5MSw2ICsxMjkxLDcgQEAKIAkJNUNCN0FGRTAyM0M1MkNFNTAwRTQ5
Q0YzIC8qIF9XS1Jlc291cmNlTG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I3QUZERjIzQzUyQ0JDMDBFNDlDRjMgLyogX1dLUmVz
b3VyY2VMb2FkRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1Q0I3QUZFNzIzQzY4MjA3MDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkSW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCN0FG
RTYyM0M2ODFCMDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZEluZm8uaCAqLzsgfTsKIAkJNUNCN0FG
RTgyM0M2OUI2MTAwRTQ5Q0YzIC8qIF9XS1Jlc291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjdBRkUzMjNDNjdEMzcwMEU0OUNG
MyAvKiBfV0tSZXNvdXJjZUxvYWRJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNUNCOTMxMDkyNkU4NDM5QTAwMzJCMUMwIC8qIFByaXZhdGVD
bGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I5MzEwNzI2RTg0MUNCMDAzMkIxQzAgLyogUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCAqLzsgfTsKIAkJNUNCQzlCOEUxQzY1MkNBMDAw
QThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNCQzlCODkxQzY1MjRBNTAwQThGRENGIC8qIE5ldHdvcmtEYXRh
VGFzay5oICovOyB9OwogCQk1Q0JENTk1QzIyODBFREY0MDAyQjIyQUEgLyogX1dLQ3VzdG9tSGVh
ZGVyRmllbGRzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUM1RDIzODgyMjdBMTg5MjAwMEI5QkRBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5tbSAq
LzsgfTsKIAkJNUNEMjg2NTExRTcyMzU5OTAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0U3Rv
cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRDI4
NjREMUU3MjJGNDQwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwpAQCAtNDU1Niw2ICs0NTU3LDIz
IEBACiAJCTVDQjkzMEMwMjZFMDU0MkYwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dENsaWVudEltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUNCOTMwQzEyNkUwNTRCODAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50Q2xpZW50SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUNCOTMwRjIyNkU3RUVFMDAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0
d29ya0xvYWRlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEY0MjZFODAxRTgwMDMyQjFDMCAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBGNTI2RTgwMjE1MDAzMkIxQzAgLyog
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRjYyNkU4MDIxNTAwMzJCMUMwIC8qIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEY3MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEY4MjZFODAyMTUwMDMyQjFDMCAv
KiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRjkyNkU4MDIxNTAwMzJCMUMwIC8qIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBGQTI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBGQjI2RTgwMjE1MDAzMkIxQzAgLyog
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBGQzI2RTgwMjE2MDAzMkIx
QzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEZEMjZFODAyMTYwMDMy
QjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEZFMjZFODAyMTYwMDMyQjFDMCAvKiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEZGMjZFODAyMTYwMDMyQjFDMCAvKiBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEVuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDQjkzMTA0MjZFODM3RkMwMDMyQjFDMCAvKiBQQ01EYWVtb25FbnRyeVBvaW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBDTURhZW1vbkVudHJ5UG9pbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMxMDUyNkU4MzdGRDAwMzJCMUMwIC8q
IFBDTURhZW1vbkVudHJ5UG9pbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQQ01EYWVtb25FbnRyeVBvaW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1Q0I5MzEwNjI2RTgzOUE5MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VySW50ZXJmYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMTA3MjZFODQxQ0IwMDMyQjFDMCAvKiBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1Q0I5MzEwODI2RTg0MUNCMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCQzlCODkxQzY1MjRBNTAwQThGRENGIC8qIE5ldHdv
cmtEYXRhVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrRGF0
YVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCQzlCOEIxQzY1MjU3MzAw
QThGRENGIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTmV0d29ya0RhdGFUYXNrQ29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDQkU5MDhGMjZEN0ZCNjIwMDVBMkU5NSAvKiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERlYnVnSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTI2NSwxMiArOTI4MywyNCBAQAogCQkJCTVDQjkzMEJGMjZFMDU0MkUwMDMyQjFD
MCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudC5oICovLAogCQkJCTVDQjkzMEMwMjZF
MDU0MkYwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuY3BwICov
LAogCQkJCTVDQjkzMEMxMjZFMDU0QjgwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dENsaWVudEltcGwuaCAqLywKKwkJCQk1Q0I5MzBGQzI2RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk1Q0I5MzBGRTI2RTgwMjE2
MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmggKi8sCisJCQkJ
NUNCOTMwRjcyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9u
Q2xpZW50LmNwcCAqLywKKwkJCQk1Q0I5MzBGNjI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaCAqLywKIAkJCQk1QzgyNkQ2QTI2RDQ4MkVBMDA4
QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAgKi8sCiAJCQkJNUM4
MjZENjkyNkQ0ODJFQTAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2Uu
aCAqLywKIAkJCQk1Q0JFOTA5MDI2RDdGQjdDMDA1QTJFOTUgLyogUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnREZWJ1Z0luZm8uY3BwICovLAogCQkJCTVDQkU5MDhGMjZEN0ZCNjIwMDVBMkU5NSAvKiBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oICovLAorCQkJCTVDQjkzMEY4MjZFODAy
MTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuY3BwICovLAorCQkJ
CTVDQjkzMEZEMjZFODAyMTYwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29k
ZXIuaCAqLywKKwkJCQk1Q0I5MzBGOTI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRFbmNvZGVyLmNwcCAqLywKKwkJCQk1Q0I5MzBGRjI2RTgwMjE2MDAzMkIxQzAgLyog
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmggKi8sCiAJCQkJNkJEMDU4NjQyMjBDRThD
MjAwMEJFRDVDIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAgKi8sCiAJCQkJ
NkJEMDU4NjMyMjBDRThDMjAwMEJFRDVDIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
ci5oICovLAorCQkJCTVDQjkzMTA2MjZFODM5QTkwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwICovLAorCQkJCTVDQjkzMEZBMjZFODAyMTUwMDMy
QjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaCAqLywKKwkJ
CQk1Q0I5MzBGQjI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyUHJveHkuY3BwICovLAorCQkJCTVDQjkzMEY1MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oICovLAogCQkJCTU3RkU2ODhCMjYwQUJCM0Qw
MEJGNDVFNCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuY3BwICovLAog
CQkJCTU3RkU2ODhBMjYwQUJCM0QwMEJGNDVFNCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5l
dHdvcmtMb2FkZXIuaCAqLywKIAkJCQk1QzgyNkQ2NzI2RDQ2QjQzMDA4QUVDOTEgLyogUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAgKi8sCkBAIC05MzU4LDExICs5Mzg4LDI0IEBACiAJ
CTVDQjkzMEYxMjZFN0VFODkwMDMyQjFDMCAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUNCOTMwRjQyNkU4MDFFODAwMzJCMUMwIC8qIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tICovLAogCQkJCTVD
QjkzMEYyMjZFN0VFRTAwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtM
b2FkZXJDb2NvYS5tbSAqLywKKwkJCQk1Q0I5MzEwNzI2RTg0MUNCMDAzMkIxQzAgLyogUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCAqLywKKwkJCQk1Q0I5MzEwODI2RTg0MUNC
MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0gKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsK
KwkJNUNCOTMxMDMyNkU4Mzc1QjAwMzJCMUMwIC8qIERhZW1vbiAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNUNCOTMxMDQyNkU4MzdGQzAwMzJCMUMwIC8q
IFBDTURhZW1vbkVudHJ5UG9pbnQuaCAqLywKKwkJCQk1Q0I5MzEwNTI2RTgzN0ZEMDAzMkIxQzAg
LyogUENNRGFlbW9uRW50cnlQb2ludC5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gRGFlbW9uOwor
CQkJcGF0aCA9IENvY29hL0RhZW1vbjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CiAJCTZCRTk2OUJGMUU1NEQ0NTIwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTEwODE4LDYgKzEw
ODYxLDcgQEAKIAkJQkM4MjgzNjgxNkIzNTg3OTAwQTI3OEZFIC8qIEVudHJ5UG9pbnRVdGlsaXRp
ZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDQjkz
MTAzMjZFODM3NUIwMDMyQjFDMCAvKiBEYWVtb24gKi8sCiAJCQkJQkM4MjgzNkIxNkIzNTg3OTAw
QTI3OEZFIC8qIFhQQ1NlcnZpY2UgKi8sCiAJCQkJNUNFOTEyMEYyMjkzQzI1RjAwNUJFQzc4IC8q
IEF1eGlsaWFyeVByb2Nlc3NNYWluLmNwcCAqLywKIAkJCSk7CkBAIC0xMjM2NCw2ICsxMjQwOCw3
IEBACiAJCQkJNkJEMDU4NjUyMjBDRThDMjAwMEJFRDVDIC8qIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRTY4OEMyNjBBQkIzRDAwQkY0NUU0
IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUM4MjZENkIyNkQ0ODJFRjAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50
U3RvcmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDQjkzMTA5MjZFODQzOUEwMDMyQjFDMCAvKiBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODZGOTUzNjUxOEZGNThGNTAwMURCMkVGIC8qIFByb2Nlc3NBc3NlcnRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMUE3QzU4MTEzNkUxOUMwMEZCNzE2NyAvKiBQcm9jZXNzTGF1bmNoZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgyQyAvKiBQcm9jZXNzVGVy
bWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovLAo=
</data>
<flag name="commit-queue"
          id="460898"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437681</attachid>
            <date>2021-09-08 16:46:42 -0700</date>
            <delta_ts>2021-09-08 17:00:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230052-20210908164641.patch</filename>
            <type>text/plain</type>
            <size>106761</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJjOTI0NmRiMDI3OTMwZDM0MjA5OWU1
Yzg4MmJiYzVjODA5ZDY2ZTAuLjU1MzZmYjAzOGRiY2I5ZmQ0NDUyYTg2NTU0ZDIxYTNiMjkzOGFi
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDktMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgZGFlbW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzAwNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oOgorCiAyMDIxLTA5LTA3ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IG9yaWdpbiBwYXJ0aXRp
b25pbmcgKHRvcC1vcmlnaW4vZnJhbWUtb3JpZ2luKSBmb3IgQnJvYWRjYXN0Q2hhbm5lbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAwM2YwZDFkMGM1NjI2ODY5Mzk2NWI3ZTkxY2EzMzNlZDc2MThiMTEyLi4xMDc5NGIy
MzE4YzkxMjVmOGIzYzU1OTZkZWZkZWJiN2U2OTlkM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
NSBAQAorMjAyMS0wOS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIEFkZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBkYWVtb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDA1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUg
aW5mcmFzdHJ1Y3R1cmUgdG8gdXNlIGEgZGFlbW9uIGluc3RlYWQgb2YgdGhlIG5ldHdvcmsgcHJv
Y2VzcyB0byBoYW5kbGUgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuCisgICAgICAgIEl0IGRvZXMg
bm90IHN0YXJ0IHVzaW5nIHRoZSBkYWVtb24geWV0LCBzbyB0aGVyZSBpcyBubyBjaGFuZ2UgaW4g
YmVoYXZpb3IuCisgICAgICAgIEkgbWFkZSBhIG5ldyBjbGFzcyBQQ006Ok1hbmFnZXJJbnRlcmZh
Y2Ugd2hpY2ggY2FuIGVpdGhlciBiZSBhIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlciBv
ciBhIFBDTTo6TWFuYWdlclByb3h5LAorICAgICAgICB3aGljaCB3b3VsZCBzZW5kIG1lc3NhZ2Vz
IHRvIHRoZSBkYWVtb24gaW5zdGVhZCBvZiBkb2luZyB0aGUgd29yayBsb2NhbGx5LgorICAgICAg
ICBJIGltcGxlbWVudGVkIHRoZSBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgcGFyYW1ldGVycyB1
c2luZyBzb21lIG9mIHRoZSBJUEMgZW5jb2RpbmcgdGVtcGxhdGVzLgorICAgICAgICBJIGhhdmUg
YW4gZW50cnkgcG9pbnQgZm9yIGFuIGV4ZWN1dGFibGUgYnV0IG5vIGV4ZWN1dGFibGUgeWV0Lgor
ICAgICAgICBJIGhhdmUgdmVyaWZpZWQgdGhhdCBFdmVudEF0dHJpYnV0aW9uIHVuaXQgdGVzdHMg
cGFzcyB3aGVuIHVzaW5nIHRoZSBkYWVtb24sIHNvIHRoZSBpbmZyYXN0cnVjdHVyZSBpcyBnb29k
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpwY21TdG9yZURpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OnByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudENvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0
aW9uOjpjb25uZWN0aW9uVG9EYWVtb24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rp
b246OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rpb246OnNlbmRXaXRoUmVw
bHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhZW1vbkNsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNs
aWVudDo6bG9hZEZyb21OZXR3b3JrKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25DbGll
bnQ6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVt
b25DbGllbnQ6OmZlYXR1cmVFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpE
YWVtb25DbGllbnQ6OmRlYnVnTW9kZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFl
bW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6ZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6RGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RGVjb2Rlcjo6b3BlcmF0b3I+Pik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6YnVm
ZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBDTTo6RW5jb2Rlcjo6ZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlBDTTo6RW5jb2Rlcjo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RW5jb2Rlcjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpFbmNvZGVyOjp0YWtlQnVm
ZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UENNOjpNZXNzYWdlSW5mbzo6dG9TdHJpbmdGb3JUZXN0aW5nOjplbmNvZGVS
ZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6bWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
OlBDTTo6aGFuZGxlUENNTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6aGFuZGxlUENN
TWVzc2FnZVdpdGhSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6ZGVjb2RlTWVzc2FnZUFu
ZFNlbmRUb01hbmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpQQ006OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpSZXBseUNhbGxl
cjw+OjpjYWxsUmVwbHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlJlcGx5Q2FsbGVyPFN0cmlu
Zz46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6c2VuZE1lc3NhZ2VXaXRoUmVw
bHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c3RvcmVVbmF0dHJpYnV0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6aGFuZGxlQXR0cmlidXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6Y2xlYXIpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6Y2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbik6
CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjptaWdyYXRlUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFu
YWdlclByb3h5Ojp0b1N0cmluZ0ZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
Q006Ok1hbmFnZXJQcm94eTo6c2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcpOgorICAgICAgICAo
V2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6OnNldFRva2VuU2lnbmF0dXJl
VVJMRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzZXRB
dHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpN
YW5hZ2VyUHJveHk6Om1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6TWFuYWdlclByb3h5OjpzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFs
dWVzRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzdGFy
dFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5h
Z2VyUHJveHk6OmRlc3Ryb3lTdG9yZUZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
clByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNv
Y29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9EYWVt
b24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OmRpY3Rpb25hcnlGcm9tTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6Q29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENV
dGlsaXRpZXMuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW06
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OmFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2Fn
ZVRvRGljdGlvbmFyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5X
ZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW46CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpkZWNvZGVTdHJpbmdUZXh0KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxTdHJpbmc+OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1v
bi9QQ01EYWVtb25FbnRyeVBvaW50Lmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6cGVlcnMpOgorICAgICAgICAoV2ViS2l0OjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6Y29ubmVjdGlvbkV2ZW50SGFuZGxlcik6Cisg
ICAgICAgIChXZWJLaXQ6OnN0YXJ0TGlzdGVuaW5nRm9yTWFjaFNlcnZpY2VDb25uZWN0aW9ucyk6
CisgICAgICAgIChXZWJLaXQ6OnJlZ2lzdGVyU2NoZWR1bGVkQWN0aXZpdHlIYW5kbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6ZW50ZXJTYW5kYm94KToKKyAgICAgICAgKFdlYktpdDo6UENNRGFlbW9u
TWFpbik6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0w
OS0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlcGxhY2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpzdGFydCB3
aXRoIGFuIGltcGxlbWVudGF0aW9uIHRoYXQgZG9lc24ndCBuZWVkIE5ldHdvcmtTZXNzaW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oIGIvU291cmNlL1dU
Ri93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAppbmRleCAyZjk2NWJhN2ZkMTA5Y2NiOGZlNGE3ZWQ4
NDRkYjIyZGU4NzkxOGYwLi5jYjZhNzI4NWZmNWJkMWFlYzk5OTdmMjU3MjYwZmQ0NWQwMDc4ZmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmgKQEAgLTcxLDYgKzcxLDcgQEAgdHlwZWRl
ZiB2b2lkICgqeHBjX2Nvbm5lY3Rpb25faGFuZGxlcl90KSh4cGNfY29ubmVjdGlvbl90IGNvbm5l
Y3Rpb24pOwogCiAjZGVmaW5lIFhQQ19BUlJBWV9BUFBFTkQgKChzaXplX3QpKC0xKSkKICNkZWZp
bmUgWFBDX0NPTk5FQ1RJT05fTUFDSF9TRVJWSUNFX0xJU1RFTkVSICgxIDw8IDApCisjZGVmaW5l
IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVEVSUlVQVEVEIFhQQ19HTE9CQUxfT0JKRUNUKF94cGNf
ZXJyb3JfY29ubmVjdGlvbl9pbnRlcnJ1cHRlZCkKICNkZWZpbmUgWFBDX0VSUk9SX0NPTk5FQ1RJ
T05fSU5WQUxJRCBYUENfR0xPQkFMX09CSkVDVChfeHBjX2Vycm9yX2Nvbm5lY3Rpb25faW52YWxp
ZCkKICNkZWZpbmUgWFBDX0VSUk9SX0tFWV9ERVNDUklQVElPTiBfeHBjX2Vycm9yX2tleV9kZXNj
cmlwdGlvbgogI2RlZmluZSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQgWFBDX0dMT0JB
TF9PQkpFQ1QoX3hwY19lcnJvcl90ZXJtaW5hdGlvbl9pbW1pbmVudCkKQEAgLTkxLDYgKzkyLDkg
QEAgZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBfeHBjX2Vycm9yX2tleV9kZXNjcmlwdGlvbjsK
ICNpbmNsdWRlIDx4cGMvcHJpdmF0ZS5oPgogI2Vsc2UKIAorZXh0ZXJuICJDIiBjb25zdCBjaGFy
ICogY29uc3QgWFBDX0FDVElWSVRZX1JBTkRPTV9JTklUSUFMX0RFTEFZOworZXh0ZXJuICJDIiBj
b25zdCBjaGFyICogY29uc3QgWFBDX0FDVElWSVRZX1JFUVVJUkVfTkVUV09SS19DT05ORUNUSVZJ
VFk7CisKICNpZiBPU19PQkpFQ1RfVVNFX09CSkMKIE9TX09CSkVDVF9ERUNMKG9zX3RyYW5zYWN0
aW9uKTsKICNlbHNlCkBAIC0xMDgsNiArMTEyLDcgQEAgZW51bSB7CiAKIFdURl9FWFRFUk5fQ19C
RUdJTgogCitleHRlcm4gY29uc3Qgc3RydWN0IF94cGNfZGljdGlvbmFyeV9zIF94cGNfZXJyb3Jf
Y29ubmVjdGlvbl9pbnRlcnJ1cHRlZDsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgX3hwY19kaWN0aW9u
YXJ5X3MgX3hwY19lcnJvcl9jb25uZWN0aW9uX2ludmFsaWQ7CiBleHRlcm4gY29uc3Qgc3RydWN0
IF94cGNfZGljdGlvbmFyeV9zIF94cGNfZXJyb3JfdGVybWluYXRpb25faW1taW5lbnQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
CmluZGV4IGYxYjE5OTAyZTFhNGVhMDVhZWMyMWRhYjcyN2Y4YjhhZWUwOTI5OTkuLjI5YmFiOWEy
OTM5OWQxNjI0OWMxMjk2ZTY4YWFmNzc4ZjMzMGExNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgi
CisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCIKICNpbmNsdWRlICJTdG9y
YWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDU0M2Nh
YjEwMGJjN2JjOTlmNTQwZjM5NGJmZjcyM2ZiY2NkYWViM2EuLmRmZGU3OGRhNjFkOWJmYThhM2M1
YTRjMWM4Y2E5N2EwMmUzNTNmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUGluZ0xv
YWQuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuaCIKICNp
bmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCIKKyNpbmNsdWRlICJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCkBAIC05MiwxMSArOTMsMjAgQEAgc3RhdGljIFN0cmluZyBwY21TdG9yZURp
cmVjdG9yeShjb25zdCBOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXMK
ICAgICByZXR1cm4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKIH0KIAorc3RhdGlj
IFVuaXF1ZVJlZjxQQ006Ok1hbmFnZXJJbnRlcmZhY2U+IG1hbmFnZXJPclByb3h5KE5ldHdvcmtT
ZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBj
b25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAg
ICAvLyBGSVhNRTogVHVybiB0aGlzIG9uIGFuZCByZW1vdmUgTWFuYWdlckludGVyZmFjZSBvbmNl
IHJkYXI6Ly84MDcwMTA5OCBpcyBjbG9zZWQuCisgICAgY29uc3RleHByIGJvb2wgdXNlUENNRGFl
bW9uID0gZmFsc2U7CisKKyAgICBpZiAodXNlUENNRGFlbW9uKQorICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZVJlZjxQQ006Ok1hbmFnZXJQcm94eT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJl
ZjxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KG1ha2VVbmlxdWVSZWY8UENNOjpDbGll
bnRJbXBsPihuZXR3b3JrU2Vzc2lvbiwgbmV0d29ya1Byb2Nlc3MpLCBwY21TdG9yZURpcmVjdG9y
eShuZXR3b3JrU2Vzc2lvbiwgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycy5kaXJlY3RvcnksIHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSk7Cit9CisKIE5ldHdv
cmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3Ms
IGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAg
IDogbV9zZXNzaW9uSUQocGFyYW1ldGVycy5zZXNzaW9uSUQpCiAgICAgLCBtX25ldHdvcmtQcm9j
ZXNzKG5ldHdvcmtQcm9jZXNzKQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgLCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeShwYXJhbWV0
ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RvcmFnZURpcmVjdG9yeSkKICAgICAsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmRpcmVjdG9y
eSkKICAgICAsIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNob3VsZEluY2x1
ZGVMb2NhbGhvc3QgPyBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgOiBTaG91bGRJbmNsdWRl
TG9jYWxob3N0OjpObykKICAgICAsIG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZURl
YnVnTW9kZSA/IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6OlllcyA6IEVu
YWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6Ok5vKQpAQCAtMTA3LDYgKzExNyw3
IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAgICAgLCBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMu
Zmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUpCiAgICAgLCBtX3N0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbihwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
LnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbikKICNlbmRpZgorICAgICwgbV9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChtYW5hZ2VyT3JQcm94eSgqdGhpcywgbmV0d29ya1Byb2Nlc3MsIHBhcmFt
ZXRlcnMpKQogICAgICwgbV9icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkobWFrZVVuaXF1ZVJlZjxO
ZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PigpKQogICAgICwgbV90ZXN0U3BlZWRNdWx0
aXBsaWVyKHBhcmFtZXRlcnMudGVzdFNwZWVkTXVsdGlwbGllcikKICAgICAsIG1fYWxsb3dzU2Vy
dmVyUHJlY29ubmVjdChwYXJhbWV0ZXJzLmFsbG93c1NlcnZlclByZWNvbm5lY3QpCkBAIC0xNDEs
NyArMTUyLDYgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNz
JiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBh
cmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlZCk7CiAjZW5k
aWYKLSAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gbWFrZVVuaXF1ZTxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI+KG1ha2VVbmlxdWVSZWY8UENNOjpDbGllbnRJbXBsPigqdGhp
cywgbmV0d29ya1Byb2Nlc3MpLCBwY21TdG9yZURpcmVjdG9yeSgqdGhpcywgcGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5kaXJlY3RvcnksIHBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9y
YWdlRGlyZWN0b3J5KSk7CiB9CiAKIE5ldHdvcmtTZXNzaW9uOjp+TmV0d29ya1Nlc3Npb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDcw
YTFiNDkxYjI0M2FhZWZiM2QyN2JkY2FkMDBhNjA1ZTQyNGY1MGYuLmQ4YWFiM2RiYTQ5Yjc2N2Yz
ZWYwOTk0YmYyY2JlOTUxZmE0MTY3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJlZmV0Y2hDYWNoZS5oIgorI2luY2x1ZGUgIlByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRl
bnNpb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgpAQCAtNjAsNyArNjEsNiBA
QCBjbGFzcyBOZXR3b3JrUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIGNs
YXNzIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk7CiBjbGFzcyBOZXR3b3JrU29ja2V0
Q2hhbm5lbDsKLWNsYXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjsKIGNsYXNzIFdl
YlBhZ2VOZXR3b3JrUGFyYW1ldGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTsKIGNsYXNzIFdlYlNvY2tldFRhc2s7CkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICBOZXR3b3JrTG9hZFNjaGVkdWxlciYgbmV0d29ya0xvYWRTY2hlZHVsZXIo
KTsKLSAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXImIHByaXZhdGVDbGlja01lYXN1
cmVtZW50KCkgeyByZXR1cm4gKm1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7IH0KKyAgICBQQ006
Ok1hbmFnZXJJbnRlcmZhY2UmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgeyByZXR1cm4gbV9w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC5nZXQoKTsgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhJiBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0Rh
dGEoKSB7IHJldHVybiBtX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTsgfQpAQCAtMTkyLDcg
KzE5Miw2IEBAIHByb3RlY3RlZDoKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1By
b2Nlc3M7CiAgICAgV2Vha0hhc2hTZXQ8TmV0d29ya0RhdGFUYXNrPiBtX2RhdGFUYXNrU2V0Owog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgU3RyaW5nIG1fcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CiAgICAgUmVmUHRyPFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZT4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgIFNob3VsZEluY2x1ZGVM
b2NhbGhvc3QgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
IHsgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6WWVzIH07CkBAIC0yMDgsNyArMjA3LDcgQEAgcHJv
dGVjdGVkOgogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1f
dGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZzsKICNlbmRpZgogICAgIGJvb2wgbV9pc1N0
YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDsKKyAgICBVbmlxdWVSZWY8UENNOjpNYW5hZ2VySW50ZXJmYWNlPiBtX3ByaXZhdGVDbGlja01l
YXN1cmVtZW50OwogCiAgICAgSGFzaFNldDxSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPj4gbV9r
ZXB0QWxpdmVMb2FkczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2
M2EwMzYwZGI1MzE5ODFmZTY3NGIyNjNhZjQwMzIzMWQ5MTk4NWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCisjaWYgIVBMQVRG
T1JNKENPQ09BKQorCitDb25uZWN0aW9uIENvbm5lY3Rpb246OmNvbm5lY3Rpb25Ub0RhZW1vbigp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIENv
bm5lY3Rpb246OnNlbmQoTWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5KE1lc3Nh
Z2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRN
ZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNw
YWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVmNzI2MWM4ZjIyMjVhZGVkOWM1NjgyYjMxMTQ1MjkwZjI3MjY2OWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEs
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKworZW51bSBj
bGFzcyBNZXNzYWdlVHlwZSA6IHVpbnQ4X3Q7Cit1c2luZyBFbmNvZGVkTWVzc2FnZSA9IFZlY3Rv
cjx1aW50OF90PjsKKworY2xhc3MgQ29ubmVjdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIENv
bm5lY3Rpb24gY29ubmVjdGlvblRvRGFlbW9uKCk7CisKKyAgICB2b2lkIHNlbmQoTWVzc2FnZVR5
cGUsIEVuY29kZWRNZXNzYWdlJiYpOworICAgIHZvaWQgc2VuZFdpdGhSZXBseShNZXNzYWdlVHlw
ZSwgRW5jb2RlZE1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVkTWVzc2Fn
ZSYmKT4mJik7CisKK3ByaXZhdGU6CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgQ29ubmVjdGlv
bihPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiYmKTsKKworICAgIE9TT2JqZWN0UHRyPHhw
Y19jb25uZWN0aW9uX3Q+IG1fY29ubmVjdGlvbjsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3Bh
Y2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudERhZW1vbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NmZlNWU3NGFmY2NjMDBmZTRkZGQ0N2NjMTBkYTI4NmY1Mzc0ZGRi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5oIgorCisjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNw
YWNlIFBDTSB7CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIERhZW1vbkNsaWVudDo6bG9h
ZEZyb21OZXR3b3JrKFVSTCYmIHVybCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBqc29uUGF5bG9h
ZCwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkIHBjbURh
dGFDYXJyaWVkLCBOZXR3b3JrTG9hZENhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBjYWxsYmFjayh7IH0sIHsgfSwgeyB9KTsKK30KKyNlbmRpZgorCit2
b2lkIERhZW1vbkNsaWVudDo6YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoSlNDOjpNZXNzYWdlTGV2
ZWwsIGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBE
YWVtb25DbGllbnQ6OmZlYXR1cmVFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBEYWVtb25DbGllbnQ6OmRlYnVnTW9kZUVuYWJsZWQoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFj
ZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50RGFlbW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWU3NzgyMTI0MjZkODk3MTZjMWJhMzZkNDUwYWNkNWQzNmQ3ZjY2OQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaApAQCAtMCww
ICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Cisj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFj
ZSBQQ00geworCitjbGFzcyBEYWVtb25DbGllbnQgOiBwdWJsaWMgQ2xpZW50LCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8RGFlbW9uQ2xpZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CisgICAgdm9pZCBicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJikgZmluYWw7CisgICAgYm9vbCBmZWF0dXJlRW5hYmxlZCgpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgZGVidWdNb2RlRW5hYmxlZCgpIGNvbnN0IGZpbmFsOworfTsKKworfSAvLyBu
YW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhhMjBlOGMyZmNjYTk5YzEwODYyNTQwN2ExZjJjM2NjNDUyMzNlNDUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHAKQEAgLTAsMCAr
MSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25h
bWVzcGFjZSBQQ00geworCitib29sIERlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW5CeXRlcyhzaXplX3QgYnl0ZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJ5dGVzIDw9IG1fYnVm
ZmVyLnNpemUoKSAtIG1fYnVmZmVyUG9zaXRpb247Cit9CisKK2Jvb2wgRGVjb2Rlcjo6ZGVjb2Rl
Rml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBzaXplX3QpCit7Cisg
ICAgaWYgKCFidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluQnl0ZXMoc2l6ZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBtZW1jcHkoZGF0YSwgbV9idWZmZXIuZGF0YSgpICsgbV9idWZm
ZXJQb3NpdGlvbiwgc2l6ZSk7CisgICAgbV9idWZmZXJQb3NpdGlvbiArPSBzaXplOworICAgIHJl
dHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERlY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODc3OTllMzBlZTUzMDc3MmM5ZDE0N2Nj
Mzg3ZjU1ZjViOGMzNTU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERl
Y29kZXIuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNw
YWNlIFBDTSB7CisKK2NsYXNzIERlY29kZXIgeworcHVibGljOgorICAgIERlY29kZXIoVmVjdG9y
PHVpbnQ4X3Q+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkg
eyB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBEZWNvZGVyJiBvcGVyYXRv
cj4+KHN0ZDo6b3B0aW9uYWw8VD4mIHQpCisgICAgeworICAgICAgICB0ID0gSVBDOjpBcmd1bWVu
dENvZGVyPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+LCB2
b2lkPjo6ZGVjb2RlKCp0aGlzKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgYnVmZmVy
SXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgbnVtRWxlbWVudHMpIGNvbnN0CisgICAgewor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWUsICJUeXBl
IFQgbXVzdCBoYXZlIGEgZml4ZWQsIGtub3duIGVuY29kZWQgc2l6ZSEiKTsKKworICAgICAgICBp
ZiAobnVtRWxlbWVudHMgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC8gc2l6
ZW9mKFQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiBidWZm
ZXJJc0xhcmdlRW5vdWdoVG9Db250YWluQnl0ZXMobnVtRWxlbWVudHMgKiBzaXplb2YoVCkpOwor
ICAgIH0KKworICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0
YSh1aW50OF90KiBkYXRhLCBzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOworICAgIAorcHJpdmF0
ZToKKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250
YWluQnl0ZXMoc2l6ZV90KSBjb25zdDsKKworICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZlcjsK
KyAgICBzaXplX3QgbV9idWZmZXJQb3NpdGlvbiB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iOThiMTVlNTEwZTU5OTM3NDNmZTdlNTYzZWYwMWRkNzhiOTI0ZmY1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuY3BwCkBAIC0wLDAgKzEsNDAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRFbmNvZGVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2Ug
UENNIHsKKwordm9pZCBFbmNvZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCkKK3sKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0
YSwgc2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RW5jb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4YTgzYzY1OTI1ZDI2MmFkZDIwYmE1YThi
MTkwMzY1ZTU5MzJjYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5j
b2Rlci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3Bh
Y2UgUENNIHsKKworY2xhc3MgRW5jb2RlciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KFQmJiB0KQorICAgIHsKKyAgICAgICAgSVBD
OjpBcmd1bWVudENvZGVyPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNl
X3Q8VD4+Pjo6ZW5jb2RlKCp0aGlzLCBzdGQ6OmZvcndhcmQ8VD4odCkpOworICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHZvaWQgZW5jb2RlKEFyZyYmIGFyZywgQXJncyYmLi4uIGFyZ3MpCisgICAg
eworICAgICAgICAqdGhpcyA8PCBzdGQ6OmZvcndhcmQ8QXJnPihhcmcpOworICAgICAgICBlbmNv
ZGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisgICAgdm9pZCBlbmNvZGUo
KSB7IH0KKworICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlQnVmZmVyKCkgeyByZXR1cm4gc3RkOjpl
eGNoYW5nZShtX2J1ZmZlciwgeyB9KTsgfQorCisgICAgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERh
dGEoY29uc3QgdWludDhfdCosIHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7CisKK3ByaXZhdGU6
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgUENN
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKaW5kZXggYmI4MjIyYzJj
OWRiYjA3NzJiZDM5ZTc5ZjQ0MzA1ZjQ3MGJlOWY1NS4uMjZlN2M1NTkxNDQ3ZmViZjU3ODUxZWFl
NWQyZTBmNDZkOWJlZTAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCkBAIC0yOCwxMyArMjgsOSBAQAog
I2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnQuaCIKKyNpbmNs
dWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaCIKICNpbmNsdWRl
ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+Ci0jaW5j
bHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
QEAgLTQyLDM4ICszOCwzMCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotZW51bSBjbGFzcyBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSA6IGJvb2wgeyBVbmF0dHJpYnV0
ZWQsIEF0dHJpYnV0ZWQgfTsKLQotY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4g
eworY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyIDogcHVibGljIFBDTTo6TWFu
YWdlckludGVyZmFjZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogCi0g
ICAgdXNpbmcgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgPSBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGU7Ci0gICAgdXNpbmcgQXR0
cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpB
dHRyaWJ1dGlvblRyaWdnZXJEYXRhOwotICAgIHVzaW5nIFByaXZhdGVDbGlja01lYXN1cmVtZW50
ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7Ci0gICAgdXNpbmcgUmVnaXN0cmFi
bGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBTb3VyY2VT
aXRlID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGU7Ci0KICAg
ICBleHBsaWNpdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIoVW5pcXVlUmVmPFBDTTo6
Q2xpZW50PiYmLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnkpOwogICAgIH5Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXIoKTsKIAotICAgIHZvaWQgc3RvcmVVbmF0dHJpYnV0ZWQo
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJik7Ci0gICAgdm9pZCBoYW5kbGVBdHRyaWJ1dGlvbihB
dHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiByZWRpcmVjdERvbWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
VVJMKTsKLSAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAg
dm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIG1pZ3JhdGVQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYs
IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKTsKKyAgICB2b2lkIHN0b3Jl
VW5hdHRyaWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYpIGZpbmFsOworICAgIHZvaWQg
aGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBjb25zdCBVUkwmIHJl
cXVlc3RVUkwsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVkaXJlY3REb21haW4sIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCkgZmluYWw7CisgICAgdm9pZCBjbGVhcihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgY2xlYXJGb3JSZWdpc3RyYWJsZURv
bWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgZmluYWw7CisgICAgdm9pZCBtaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVn
YWN5U3RvcmFnZShQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uVHlwZSkgZmluYWw7CiAKLSAgICB2b2lkIHRvU3RyaW5nRm9yVGVzdGlu
ZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpIGNvbnN0OwotICAgIHZvaWQgc2V0
T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkgeyBtX2lzUnVubmluZ1Rlc3QgPSB2
YWx1ZTsgfQotICAgIHZvaWQgc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTCYmKTsK
LSAgICB2b2lkIHNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwmJik7Ci0gICAgdm9p
ZCBzZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVSTCYmIHNvdXJjZVVSTCwgVVJM
JiYgZGVzdGluYXRpb25VUkwpOwotICAgIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJl
ZEZvclRlc3RpbmcoKTsKLSAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwot
ICAgIHZvaWQgc2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nKGJvb2wgdmFsdWUpIHsg
bV9pc1J1bm5pbmdFcGhlbWVyYWxNZWFzdXJlbWVudFRlc3QgPSB2YWx1ZTsgfQotICAgIHZvaWQg
c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhTdHJpbmcmJiB1bmxpbmthYmxl
VG9rZW4sIFN0cmluZyYmIHNlY3JldFRva2VuLCBTdHJpbmcmJiBzaWduYXR1cmUsIFN0cmluZyYm
IGtleUlEKTsKLSAgICB2b2lkIHN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3RpbmcoKTsKLSAg
ICB2b2lkIGRlc3Ryb3lTdG9yZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIHRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZyk+JiYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0T3ZlcnJpZGVUaW1lckZvclRlc3Rp
bmcoYm9vbCB2YWx1ZSkgZmluYWwgeyBtX2lzUnVubmluZ1Rlc3QgPSB2YWx1ZTsgfQorICAgIHZv
aWQgc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTCYmKSBmaW5hbDsKKyAgICB2b2lk
IHNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwmJikgZmluYWw7CisgICAgdm9pZCBz
ZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVSTCYmIHNvdXJjZVVSTCwgVVJMJiYg
ZGVzdGluYXRpb25VUkwpIGZpbmFsOworICAgIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZEFzRXhw
aXJlZEZvclRlc3RpbmcoKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpIGZpbmFsOworICAgIHZvaWQgc2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5n
KGJvb2wgdmFsdWUpIGZpbmFsIHsgbV9pc1J1bm5pbmdFcGhlbWVyYWxNZWFzdXJlbWVudFRlc3Qg
PSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGlu
ZyhTdHJpbmcmJiB1bmxpbmthYmxlVG9rZW4sIFN0cmluZyYmIHNlY3JldFRva2VuLCBTdHJpbmcm
JiBzaWduYXR1cmUsIFN0cmluZyYmIGtleUlEKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0VGltZXJJ
bW1lZGlhdGVseUZvclRlc3RpbmcoKSBmaW5hbDsKKyAgICB2b2lkIGRlc3Ryb3lTdG9yZUZvclRl
c3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKIAogcHJpdmF0ZToKICAg
ICBQQ006OlN0b3JlJiBzdG9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXJJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2Uu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ3MmFmZDllNDUwZjg1YTdmYTQxNDlhYTY4M2E4YzMzOTI4ZTc5NDAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5j
cHAKQEAgLTAsMCArMSwyNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgiCisKKyNp
bmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25D
bGllbnQuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaCIKKyNp
bmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaCIKKyNpbmNsdWRlICJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25h
bWVzcGFjZSBQQ00geworCituYW1lc3BhY2UgTWVzc2FnZUluZm8geworCisjZGVmaW5lIEZVTkNU
SU9OKG1mKSBzdHJ1Y3QgbWYgeyBzdGF0aWMgY29uc3RleHByIGF1dG8gTWVtYmVyRnVuY3Rpb24g
PSAmUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjptZjsKKyNkZWZpbmUgQVJHVU1FTlRT
KC4uLikgdXNpbmcgQXJnc1R1cGxlID0gc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz47CisjZGVmaW5l
IFJFUExZKC4uLikgdXNpbmcgUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKF9fVkFfQVJH
U19fKT47IFwKKyAgICBzdGF0aWMgUENNOjpFbmNvZGVkTWVzc2FnZSBlbmNvZGVSZXBseShfX1ZB
X0FSR1NfXyk7CisjZGVmaW5lIEVORCB9OworCitGVU5DVElPTihzdG9yZVVuYXR0cmlidXRlZCkK
K0FSR1VNRU5UUyhXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkKK0VORAorCitGVU5D
VElPTihoYW5kbGVBdHRyaWJ1dGlvbikKK0FSR1VNRU5UUyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXI6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIFVSTCwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4sIFVSTCkKK0VORAorCitGVU5DVElPTihjbGVhcikKK0FSR1VNRU5UUygpCitSRVBM
WSgpCitFTkQKKworRlVOQ1RJT04oY2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbikKK0FSR1VNRU5U
UyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbikKK1JFUExZKCkKK0VORAorCitGVU5DVElPTiht
aWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZSkKK0FSR1VNRU5U
UyhXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGUpCitFTkQKKworRlVOQ1RJT04odG9TdHJpbmdGb3JUZXN0aW5nKQor
QVJHVU1FTlRTKCkKK1JFUExZKFN0cmluZykKK0VORAorCitGVU5DVElPTihzZXRPdmVycmlkZVRp
bWVyRm9yVGVzdGluZykKK0FSR1VNRU5UUyhib29sKQorRU5ECisKK0ZVTkNUSU9OKHNldFRva2Vu
UHVibGljS2V5VVJMRm9yVGVzdGluZykKK0FSR1VNRU5UUyhVUkwpCitFTkQKKworRlVOQ1RJT04o
c2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKQorQVJHVU1FTlRTKFVSTCkKK0VORAorCitG
VU5DVElPTihzZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKQorQVJHVU1FTlRTKFVS
TCwgVVJMKQorRU5ECisKK0ZVTkNUSU9OKG1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JU
ZXN0aW5nKQorQVJHVU1FTlRTKCkKK0VORAorCitGVU5DVElPTihtYXJrQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcpCitBUkdVTUVOVFMoKQorUkVQ
TFkoKQorRU5ECisKK0ZVTkNUSU9OKHNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZykK
K0FSR1VNRU5UUyhib29sKQorRU5ECisKK0ZVTkNUSU9OKHNldFBDTUZyYXVkUHJldmVudGlvblZh
bHVlc0ZvclRlc3RpbmcpCitBUkdVTUVOVFMoU3RyaW5nLCBTdHJpbmcsIFN0cmluZywgU3RyaW5n
KQorRU5ECisKK0ZVTkNUSU9OKHN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3RpbmcpCitBUkdV
TUVOVFMoKQorRU5ECisKK0ZVTkNUSU9OKGRlc3Ryb3lTdG9yZUZvclRlc3RpbmcpCitBUkdVTUVO
VFMoKQorUkVQTFkoKQorRU5ECisKKyN1bmRlZiBGVU5DVElPTgorI3VuZGVmIEFSR1VNRU5UUwor
I3VuZGVmIFJFUExZCisjdW5kZWYgRU5ECisKKyNkZWZpbmUgRU1QVFlfUkVQTFkobWYpIFBDTTo6
RW5jb2RlZE1lc3NhZ2UgbWY6OmVuY29kZVJlcGx5KCkgeyByZXR1cm4geyB9OyB9CitFTVBUWV9S
RVBMWShjbGVhcik7CitFTVBUWV9SRVBMWShjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKTsKK0VN
UFRZX1JFUExZKG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVk
Rm9yVGVzdGluZyk7CitFTVBUWV9SRVBMWShkZXN0cm95U3RvcmVGb3JUZXN0aW5nKTsKKyN1bmRl
ZiBFTVBUWV9SRVBMWQorCitQQ006OkVuY29kZWRNZXNzYWdlIHRvU3RyaW5nRm9yVGVzdGluZzo6
ZW5jb2RlUmVwbHkoU3RyaW5nIHJlcGx5KQoreworICAgIFBDTTo6RW5jb2RlciBlbmNvZGVyOwor
ICAgIGVuY29kZXIgPDwgcmVwbHk7CisgICAgcmV0dXJuIGVuY29kZXIudGFrZUJ1ZmZlcigpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlSW5mbworCitib29sIG1lc3NhZ2VUeXBlU2VuZHNS
ZXBseShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSkKK3sKKyAgICBzd2l0Y2ggKG1lc3NhZ2VUeXBl
KSB7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6U3RvcmVVbmF0dHJpYnV0ZWQ6CisgICAgY2FzZSBN
ZXNzYWdlVHlwZTo6SGFuZGxlQXR0cmlidXRpb246CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6TWln
cmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2U6CisgICAgY2FzZSBN
ZXNzYWdlVHlwZTo6U2V0T3ZlcnJpZGVUaW1lckZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdl
VHlwZTo6U2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5
cGU6OlNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZzoKKyAgICBjYXNlIE1lc3NhZ2VUeXBl
OjpTZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5
cGU6Ok1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVz
c2FnZVR5cGU6OlNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZzoKKyAgICBjYXNlIE1l
c3NhZ2VUeXBlOjpTZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nOgorICAgIGNh
c2UgTWVzc2FnZVR5cGU6OlN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3Rpbmc6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpNYXJrQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdl
VHlwZTo6RGVzdHJveVN0b3JlRm9yVGVzdGluZzoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpUb1N0
cmluZ0ZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6Q2xlYXI6CisgICAgY2FzZSBN
ZXNzYWdlVHlwZTo6Q2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbjoKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworc3RhdGljIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlciYgZGFlbW9uTWFuYWdl
cigpCit7CisgICAgLy8gRklYTUU6IEdpdmUgdGhlIG1hbmFnZXIgYSB2YWxpZCBzdG9yYWdlIGRp
cmVjdG9yeS4KKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyPiBpbnN0YW5jZShtYWtlVW5pcXVlUmVmPFBDTTo6RGFlbW9uQ2xpZW50PigpLCBT
dHJpbmcoKSk7CisgICAgcmV0dXJuIGluc3RhbmNlLmdldCgpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBJbmZvPgordm9pZCBoYW5kbGVQQ01NZXNzYWdlKFBDTTo6RW5jb2RlZE1lc3NhZ2UmJiBl
bmNvZGVkTWVzc2FnZSkKK3sKKyAgICBQQ006OkRlY29kZXIgZGVjb2RlcihXVEZNb3ZlKGVuY29k
ZWRNZXNzYWdlKSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHR5cGVuYW1lIEluZm86OkFyZ3NUdXBs
ZT4gYXJndW1lbnRzOworICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOworICAgIGlmIChVTkxJS0VM
WSghYXJndW1lbnRzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSVBDOjpjYWxsTWVtYmVyRnVu
Y3Rpb24oV1RGTW92ZSgqYXJndW1lbnRzKSwgJmRhZW1vbk1hbmFnZXIoKSwgSW5mbzo6TWVtYmVy
RnVuY3Rpb24pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbmZvPgordm9pZCBoYW5kbGVQQ01N
ZXNzYWdlV2l0aFJlcGx5KFBDTTo6RW5jb2RlZE1lc3NhZ2UmJiBlbmNvZGVkTWVzc2FnZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChQQ006OkVuY29kZWRNZXNzYWdlJiYpPiYmIHJlcGx5U2VuZGVy
KQoreworICAgIFBDTTo6RGVjb2RlciBkZWNvZGVyKFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsK
KworICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgSW5mbzo6QXJnc1R1cGxlPiBhcmd1bWVudHM7
CisgICAgZGVjb2RlciA+PiBhcmd1bWVudHM7CisgICAgaWYgKFVOTElLRUxZKCFhcmd1bWVudHMp
KQorICAgICAgICByZXR1cm47CisKKyAgICB0eXBlbmFtZSBJbmZvOjpSZXBseSBjb21wbGV0aW9u
SGFuZGxlciB7IFtyZXBseVNlbmRlciA9IFdURk1vdmUocmVwbHlTZW5kZXIpXSAoYXV0byYmLi4u
IGFyZ3MpIG11dGFibGUgeworICAgICAgICByZXBseVNlbmRlcihJbmZvOjplbmNvZGVSZXBseShh
cmdzLi4uKSk7CisgICAgfX07CisKKyAgICBJUEM6OmNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3Zl
KCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgJmRhZW1vbk1hbmFnZXIo
KSwgSW5mbzo6TWVtYmVyRnVuY3Rpb24pOworfQorCit2b2lkIGRlY29kZU1lc3NhZ2VBbmRTZW5k
VG9NYW5hZ2VyKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBWZWN0b3I8dWludDhfdD4mJiBlbmNv
ZGVkTWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYg
cmVwbHlTZW5kZXIpCit7CisgICAgQVNTRVJUKG1lc3NhZ2VUeXBlU2VuZHNSZXBseShtZXNzYWdl
VHlwZSkgPT0gISFyZXBseVNlbmRlcik7CisgICAgc3dpdGNoIChtZXNzYWdlVHlwZSkgeworICAg
IGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6U3RvcmVVbmF0dHJpYnV0ZWQ6CisgICAgICAgIGhhbmRs
ZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86OnN0b3JlVW5hdHRyaWJ1dGVkPihXVEZNb3ZlKGVuY29k
ZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6
SGFuZGxlQXR0cmlidXRpb246CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86
OmhhbmRsZUF0dHJpYnV0aW9uPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6Q2xlYXI6CisgICAgICAgIGhhbmRsZVBD
TU1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86OmNsZWFyPihXVEZNb3ZlKGVuY29kZWRNZXNz
YWdlKSwgV1RGTW92ZShyZXBseVNlbmRlcikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBD
TTo6TWVzc2FnZVR5cGU6OkNsZWFyRm9yUmVnaXN0cmFibGVEb21haW46CisgICAgICAgIGhhbmRs
ZVBDTU1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86OmNsZWFyRm9yUmVnaXN0cmFibGVEb21h
aW4+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6TWlncmF0ZVByaXZhdGVDbGlj
a01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2U6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8
TWVzc2FnZUluZm86Om1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9y
YWdlPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UENNOjpNZXNzYWdlVHlwZTo6VG9TdHJpbmdGb3JUZXN0aW5nOgorICAgICAgICBoYW5kbGVQQ01N
ZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjp0b1N0cmluZ0ZvclRlc3Rpbmc+KFdURk1vdmUo
ZW5jb2RlZE1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6U2V0T3ZlcnJpZGVUaW1lckZvclRlc3Rpbmc6Cisg
ICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86OnNldE92ZXJyaWRlVGltZXJGb3JU
ZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUENNOjpNZXNzYWdlVHlwZTo6U2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nOgorICAg
ICAgICBoYW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJbmZvOjpzZXRUb2tlblB1YmxpY0tleVVSTEZv
clRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpTZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmc6Cisg
ICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86OnNldFRva2VuU2lnbmF0dXJlVVJM
Rm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3Rp
bmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86OnNldEF0dHJpYnV0aW9u
UmVwb3J0VVJMc0ZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpNYXJrQWxsVW5hdHRyaWJ1dGVkQXNF
eHBpcmVkRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6
bWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1l
c3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpNYXJr
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rpbmc6Cisg
ICAgICAgIGhhbmRsZVBDTU1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86Om1hcmtBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZz4oV1RGTW92ZShl
bmNvZGVkTWVzc2FnZSksIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpTZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3Rp
bmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86OnNldEVwaGVtZXJhbE1l
YXN1cmVtZW50Rm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlNldFBDTUZyYXVkUHJldmVudGlvblZh
bHVlc0ZvclRlc3Rpbmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86OnNl
dFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1lc3Nh
Z2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpTdGFydFRp
bWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdlPE1lc3Nh
Z2VJbmZvOjpzdGFydFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRN
ZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6RGVz
dHJveVN0b3JlRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZVdpdGhSZXBseTxN
ZXNzYWdlSW5mbzo6ZGVzdHJveVN0b3JlRm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2Fn
ZSksIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit9
IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXJJbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjkyZmE5ZjA5NTViM2UwMjI0NDY1MDM3
MWVkYjQ5MzljMDcxZmFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXJJbnRlcmZhY2UuaApAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDx3dGYvRW51bVRy
YWl0cy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSA6IGJvb2wgeyBVbmF0dHJpYnV0ZWQsIEF0dHJpYnV0
ZWQgfTsKKworY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOworCituYW1lc3Bh
Y2UgUENNIHsKKworY2xhc3MgTWFuYWdlckludGVyZmFjZSB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+TWFuYWdlckludGVyZmFjZSgpIHsgfTsKKworICAgIHVzaW5nIEF0dHJpYnV0aW9uRGVzdGlu
YXRpb25TaXRlID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9u
RGVzdGluYXRpb25TaXRlOworICAgIHVzaW5nIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKKyAg
ICB1c2luZyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OworICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW47CisgICAgdXNpbmcgU291cmNlU2l0ZSA9IFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpTb3VyY2VTaXRlOworCisgICAgdmlydHVhbCB2b2lkIHN0b3JlVW5hdHRy
aWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBjb25zdCBVUkwmIHJl
cXVlc3RVUkwsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVkaXJlY3REb21haW4sIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhcihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGb3JS
ZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtaWdyYXRlUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZShQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIHRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+
JiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcnJpZGVUaW1lckZvclRlc3Rp
bmcoYm9vbCB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRUb2tlblB1YmxpY0tleVVS
TEZvclRlc3RpbmcoVVJMJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VG9rZW5TaWduYXR1
cmVVUkxGb3JUZXN0aW5nKFVSTCYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEF0dHJpYnV0
aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJMJiYgc291cmNlVVJMLCBVUkwmJiBkZXN0aW5hdGlv
blVSTCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVk
Rm9yVGVzdGluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZv
clRlc3RpbmcoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQQ01GcmF1ZFByZXZlbnRp
b25WYWx1ZXNGb3JUZXN0aW5nKFN0cmluZyYmIHVubGlua2FibGVUb2tlbiwgU3RyaW5nJiYgc2Vj
cmV0VG9rZW4sIFN0cmluZyYmIHNpZ25hdHVyZSwgU3RyaW5nJiYga2V5SUQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZygpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVzdHJveVN0b3JlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpID0gMDsKK307CisKK2NvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbFZlcnNpb25L
ZXkgeyAidmVyc2lvbiIgfTsKK2NvbnN0ZXhwciB1aW50NjRfdCBwcm90b2NvbFZlcnNpb25WYWx1
ZSB7IDEgfTsKKworY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sTWVzc2FnZVR5cGVLZXkg
eyAibWVzc2FnZSB0eXBlIiB9OworZW51bSBjbGFzcyBNZXNzYWdlVHlwZSA6IHVpbnQ4X3Qgewor
ICAgIFN0b3JlVW5hdHRyaWJ1dGVkLAorICAgIEhhbmRsZUF0dHJpYnV0aW9uLAorICAgIENsZWFy
LAorICAgIENsZWFyRm9yUmVnaXN0cmFibGVEb21haW4sCisgICAgTWlncmF0ZVByaXZhdGVDbGlj
a01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UsCisgICAgVG9TdHJpbmdGb3JUZXN0aW5nLAor
ICAgIFNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nLAorICAgIFNldFRva2VuUHVibGljS2V5VVJM
Rm9yVGVzdGluZywKKyAgICBTZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcsCisgICAgU2V0
QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZywKKyAgICBNYXJrQWxsVW5hdHRyaWJ1dGVk
QXNFeHBpcmVkRm9yVGVzdGluZywKKyAgICBNYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcsCisgICAgU2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRG
b3JUZXN0aW5nLAorICAgIFNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcsCisg
ICAgU3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZywKKyAgICBEZXN0cm95U3RvcmVGb3JU
ZXN0aW5nLAorfTsKKworY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRW5jb2RlZE1lc3Nh
Z2VLZXkgeyAiZW5jb2RlZCBtZXNzYWdlIiB9OwordXNpbmcgRW5jb2RlZE1lc3NhZ2UgPSBWZWN0
b3I8dWludDhfdD47CisKK3ZvaWQgZGVjb2RlTWVzc2FnZUFuZFNlbmRUb01hbmFnZXIoTWVzc2Fn
ZVR5cGUsIFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPHVpbnQ4X3Q+JiYpPiYmKTsKK2Jvb2wgbWVzc2FnZVR5cGVTZW5kc1JlcGx5KE1lc3Nh
Z2VUeXBlKTsKKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6
OlBDTTo6TWVzc2FnZVR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAg
ICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGUsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNz
YWdlVHlwZTo6U3RvcmVVbmF0dHJpYnV0ZWQsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdl
VHlwZTo6SGFuZGxlQXR0cmlidXRpb24sCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlw
ZTo6Q2xlYXIsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6Q2xlYXJGb3JSZWdp
c3RyYWJsZURvbWFpbiwKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpNaWdyYXRl
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZSwKKyAgICAgICAgV2ViS2l0
OjpQQ006Ok1lc3NhZ2VUeXBlOjpUb1N0cmluZ0ZvclRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6
UENNOjpNZXNzYWdlVHlwZTo6U2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcsCisgICAgICAgIFdl
YktpdDo6UENNOjpNZXNzYWdlVHlwZTo6U2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nLAor
ICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlNldFRva2VuU2lnbmF0dXJlVVJMRm9y
VGVzdGluZywKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTZXRBdHRyaWJ1dGlv
blJlcG9ydFVSTHNGb3JUZXN0aW5nLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6
Ok1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nLAorICAgICAgICBXZWJLaXQ6
OlBDTTo6TWVzc2FnZVR5cGU6Ok1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRz
QXNFeHBpcmVkRm9yVGVzdGluZywKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpT
ZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6UENNOjpN
ZXNzYWdlVHlwZTo6U2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZywKKyAgICAg
ICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTdGFydFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0
aW5nLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OkRlc3Ryb3lTdG9yZUZvclRl
c3RpbmcKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjYWU0ZTRmZjU4Y2I2MWY1NWY1YjUxOTViYTVlM2Qw
YmE4ZGJkZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclBy
b3h5LmNwcApAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oIgorCisj
aW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRFbmNvZGVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2Ug
UENNIHsKKwordGVtcGxhdGU8TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5cGVuYW1lLi4uIEFy
Z3M+Cit2b2lkIHNlbmRNZXNzYWdlKEFyZ3MmJi4uLiBhcmdzKQoreworICAgIEVuY29kZXIgZW5j
b2RlcjsKKyAgICBlbmNvZGVyLmVuY29kZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwor
ICAgIENvbm5lY3Rpb246OmNvbm5lY3Rpb25Ub0RhZW1vbigpLnNlbmQobWVzc2FnZVR5cGUsIGVu
Y29kZXIudGFrZUJ1ZmZlcigpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3Ry
dWN0IFJlcGx5Q2FsbGVyOwordGVtcGxhdGU8PiBzdHJ1Y3QgUmVwbHlDYWxsZXI8PiB7CisgICAg
c3RhdGljIHZvaWQgY2FsbFJlcGx5KERlY29kZXImJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworICAgIH0KK307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjxTdHJp
bmc+IHsKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGVjb2RlciYmIGRlY29kZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHN0cmluZzsKKyAgICAgICAgZGVjb2RlciA+
PiBzdHJpbmc7CisgICAgICAgIGlmICghc3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoKnN0
cmluZykpOworICAgIH0KK307CisKK3RlbXBsYXRlPE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0
eXBlbmFtZS4uLiBBcmdzLCB0eXBlbmFtZS4uLiBSZXBseUFyZ3M+Cit2b2lkIHNlbmRNZXNzYWdl
V2l0aFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVwbHlBcmdzLi4uKT4mJiBjb21wbGV0
aW9uSGFuZGxlciwgQXJncyYmLi4uIGFyZ3MpCit7CisgICAgRW5jb2RlciBlbmNvZGVyOworICAg
IGVuY29kZXIuZW5jb2RlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgQ29ubmVj
dGlvbjo6Y29ubmVjdGlvblRvRGFlbW9uKCkuc2VuZFdpdGhSZXBseShtZXNzYWdlVHlwZSwgZW5j
b2Rlci50YWtlQnVmZmVyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoYXV0byByZXBseUJ1ZmZlcikgbXV0YWJsZSB7CisgICAgICAgIERlY29kZXIg
ZGVjb2RlcihXVEZNb3ZlKHJlcGx5QnVmZmVyKSk7CisgICAgICAgIFJlcGx5Q2FsbGVyPFJlcGx5
QXJncy4uLj46OmNhbGxSZXBseShXVEZNb3ZlKGRlY29kZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpzdG9yZVVuYXR0cmli
dXRlZChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIHBjbSkKK3sKKyAgICBzZW5k
TWVzc2FnZTxNZXNzYWdlVHlwZTo6U3RvcmVVbmF0dHJpYnV0ZWQ+KHBjbSk7Cit9CisKK3ZvaWQg
TWFuYWdlclByb3h5OjpoYW5kbGVBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIHRyaWdnZXJEYXRhLCBjb25zdCBVUkwm
IHJlcXVlc3RVUkwsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVkaXJlY3REb21haW4s
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCkKK3sKKyAgICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlw
ZTo6SGFuZGxlQXR0cmlidXRpb24+KHRyaWdnZXJEYXRhLCByZXF1ZXN0VVJMLCByZWRpcmVjdERv
bWFpbiwgZmlyc3RQYXJ0eVVSTCk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpjbGVhcihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZE1l
c3NhZ2VXaXRoUmVwbHk8TWVzc2FnZVR5cGU6OkNsZWFyPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWlu
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kTWVzc2FnZVdpdGhS
ZXBseTxNZXNzYWdlVHlwZTo6Q2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbj4oV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIGRvbWFpbik7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjptaWdyYXRl
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZShXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCYmIHBjbSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlv
blR5cGUgdHlwZSkKK3sKKyAgICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlwZTo6TWlncmF0ZVByaXZh
dGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2U+KHBjbSwgdHlwZSk7Cit9CisKK3Zv
aWQgTWFuYWdlclByb3h5Ojp0b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIHNlbmRNZXNzYWdl
V2l0aFJlcGx5PE1lc3NhZ2VUeXBlOjpUb1N0cmluZ0ZvclRlc3Rpbmc+KFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OnNldE92ZXJyaWRlVGltZXJG
b3JUZXN0aW5nKGJvb2wgdmFsdWUpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlNl
dE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nPih2YWx1ZSk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5
OjpzZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJMJiYgdXJsKQoreworICAgIHNlbmRN
ZXNzYWdlPE1lc3NhZ2VUeXBlOjpTZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3Rpbmc+KHVybCk7
Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpzZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmco
VVJMJiYgdXJsKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpTZXRUb2tlblNpZ25h
dHVyZVVSTEZvclRlc3Rpbmc+KHVybCk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpzZXRBdHRy
aWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVSTCYmIHNvdXJjZVVSTCwgVVJMJiYgZGVzdGlu
YXRpb25VUkwpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlNldEF0dHJpYnV0aW9u
UmVwb3J0VVJMc0ZvclRlc3Rpbmc+KHNvdXJjZVVSTCwgZGVzdGluYXRpb25VUkwpOworfQorCit2
b2lkIE1hbmFnZXJQcm94eTo6bWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3Rpbmco
KQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpNYXJrQWxsVW5hdHRyaWJ1dGVkQXNF
eHBpcmVkRm9yVGVzdGluZz4oKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6Om1hcmtBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZE1lc3NhZ2VX
aXRoUmVwbHk8TWVzc2FnZVR5cGU6Ok1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRzQXNFeHBpcmVkRm9yVGVzdGluZz4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQor
Cit2b2lkIE1hbmFnZXJQcm94eTo6c2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nKGJv
b2wgdmFsdWUpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlNldEVwaGVtZXJhbE1l
YXN1cmVtZW50Rm9yVGVzdGluZz4odmFsdWUpOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6c2V0
UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhTdHJpbmcmJiB1bmxpbmthYmxlVG9r
ZW4sIFN0cmluZyYmIHNlY3JldFRva2VuLCBTdHJpbmcmJiBzaWduYXR1cmUsIFN0cmluZyYmIGtl
eUlEKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpTZXRQQ01GcmF1ZFByZXZlbnRp
b25WYWx1ZXNGb3JUZXN0aW5nPih1bmxpbmthYmxlVG9rZW4sIHNlY3JldFRva2VuLCBzaWduYXR1
cmUsIGtleUlEKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OnN0YXJ0VGltZXJJbW1lZGlhdGVs
eUZvclRlc3RpbmcoKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpTdGFydFRpbWVy
SW1tZWRpYXRlbHlGb3JUZXN0aW5nPigpOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6ZGVzdHJv
eVN0b3JlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZVR5cGU6OkRlc3Ryb3lT
dG9yZUZvclRlc3Rpbmc+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQ
cm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhjZDQxMTk5NGI0YjA2ZjBmNmI1ZDk5MTVmMmYyY2RmYWNhOTZl
NmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmgK
QEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgiCisjaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00gewor
CitjbGFzcyBNYW5hZ2VyUHJveHkgOiBwdWJsaWMgTWFuYWdlckludGVyZmFjZSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdm9pZCBzdG9yZVVuYXR0cmlidXRl
ZChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmKSBmaW5hbDsKKyAgICB2b2lkIGhh
bmRsZUF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhJiYsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiByZWRpcmVjdERvbWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJMKSBm
aW5hbDsKKyAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7
CisgICAgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2
b2lkIG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UeXBlKSBmaW5hbDsKKworICAgIHZvaWQgdG9TdHJpbmdGb3JUZXN0aW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJikgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRP
dmVycmlkZVRpbWVyRm9yVGVzdGluZyhib29sKSBmaW5hbDsKKyAgICB2b2lkIHNldFRva2VuUHVi
bGljS2V5VVJMRm9yVGVzdGluZyhVUkwmJikgZmluYWw7CisgICAgdm9pZCBzZXRUb2tlblNpZ25h
dHVyZVVSTEZvclRlc3RpbmcoVVJMJiYpIGZpbmFsOworICAgIHZvaWQgc2V0QXR0cmlidXRpb25S
ZXBvcnRVUkxzRm9yVGVzdGluZyhVUkwmJiBzb3VyY2VVUkwsIFVSTCYmIGRlc3RpbmF0aW9uVVJM
KSBmaW5hbDsKKyAgICB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5n
KCkgZmluYWw7CisgICAgdm9pZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsK
KyAgICB2b2lkIHNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyhib29sKSBmaW5hbDsK
KyAgICB2b2lkIHNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoU3RyaW5nJiYg
dW5saW5rYWJsZVRva2VuLCBTdHJpbmcmJiBzZWNyZXRUb2tlbiwgU3RyaW5nJiYgc2lnbmF0dXJl
LCBTdHJpbmcmJiBrZXlJRCkgZmluYWw7CisgICAgdm9pZCBzdGFydFRpbWVySW1tZWRpYXRlbHlG
b3JUZXN0aW5nKCkgZmluYWw7CisgICAgdm9pZCBkZXN0cm95U3RvcmVGb3JUZXN0aW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBQQ00K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzMxZjA3YmY4ZTg4MzIxMDUz
MjhkYjQ4ZWNmYTAyNjcxYWJhOWM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQpAQCAtMCwwICsxLDEwMSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRDb25uZWN0aW9uLmgiCisKKyNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50WFBD
VXRpbGl0aWVzLmgiCisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCitDb25uZWN0aW9uOjpDb25uZWN0aW9uKE9T
T2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+JiYgY29ubmVjdGlvbikKKyAgICA6IG1fY29ubmVj
dGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKSB7IH0KKworQ29ubmVjdGlvbiBDb25uZWN0aW9uOjpj
b25uZWN0aW9uVG9EYWVtb24oKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+PiBj
b25uZWN0aW9uOworICAgIGlmICghY29ubmVjdGlvbi5nZXQoKSkgeworICAgICAgICBjb25uZWN0
aW9uLmdldCgpID0gYWRvcHRPU09iamVjdCh4cGNfY29ubmVjdGlvbl9jcmVhdGVfbWFjaF9zZXJ2
aWNlKCJjb20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiLCBkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCAwKSk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9o
YW5kbGVyKGNvbm5lY3Rpb24uZ2V0KCkuZ2V0KCksIF4oeHBjX29iamVjdF90IGV2ZW50KSB7Cisg
ICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICAgICAgaWYgKGV2
ZW50ID09IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVEVSUlVQVEVEKSB7CisgICAgICAgICAgICAg
ICAgLy8gRGFlbW9uIGNyYXNoZWQsIHdlIHdpbGwgbmVlZCB0byBtYWtlIGEgbmV3IGNvbm5lY3Rp
b24gdG8gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGRhZW1vbi4KKyAgICAgICAgICAgICAgICBjb25u
ZWN0aW9uLmdldCgpID0gbnVsbHB0cjsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9KTsKKyAgICAgICAgeHBjX2Nvbm5l
Y3Rpb25fYWN0aXZhdGUoY29ubmVjdGlvbi5nZXQoKS5nZXQoKSk7CisgICAgfQorICAgIHJldHVy
biBDb25uZWN0aW9uKE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+KGNvbm5lY3Rpb24uZ2V0
KCkpKTsKK30KKworc3RhdGljIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gZGljdGlvbmFyeUZy
b21NZXNzYWdlKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmIG1lc3Nh
Z2UpCit7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFy
eV9jcmVhdGVfZW1wdHkoKSk7CisgICAgYWRkVmVyc2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0
aW9uYXJ5KFdURk1vdmUobWVzc2FnZSksIGRpY3Rpb25hcnkuZ2V0KCkpOworICAgIHhwY19kaWN0
aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFyeS5nZXQoKSwgcHJvdG9jb2xNZXNzYWdlVHlwZUtl
eSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1lc3NhZ2VUeXBlKSk7CisgICAgcmV0dXJuIGRpY3Rp
b25hcnk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6c2VuZChNZXNzYWdlVHlwZSBtZXNzYWdlVHlw
ZSwgRW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdlKQoreworICAgIGlmICghbV9jb25uZWN0aW9uKSB7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbi5nZXQoKSwgZGlj
dGlvbmFyeUZyb21NZXNzYWdlKG1lc3NhZ2VUeXBlLCBXVEZNb3ZlKG1lc3NhZ2UpKS5nZXQoKSk7
Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseShNZXNzYWdlVHlwZSBtZXNzYWdl
VHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVu
Y29kZWRNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9jb25u
ZWN0aW9uKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICB9CisKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBk
aWN0aW9uYXJ5RnJvbU1lc3NhZ2UobWVzc2FnZVR5cGUsIFdURk1vdmUobWVzc2FnZSkpOworICAg
IHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZV93aXRoX3JlcGx5KG1fY29ubmVjdGlvbi5nZXQo
KSwgZGljdGlvbmFyeS5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbWFrZUJsb2Nr
UHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoeHBj
X29iamVjdF90IHJlcGx5KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHhwY19nZXRfdHlwZShyZXBs
eSkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoeHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXBseSwgcHJvdG9j
b2xWZXJzaW9uS2V5KSAhPSBwcm90b2NvbFZlcnNpb25WYWx1ZSkgeworICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKKyAgICAgICAgfQorICAgICAgICBzaXplX3QgZGF0YVNpemUgeyAwIH07CisgICAgICAg
IGNvbnN0IHZvaWQqIGRhdGEgPSB4cGNfZGljdGlvbmFyeV9nZXRfZGF0YShyZXBseSwgcHJvdG9j
b2xFbmNvZGVkTWVzc2FnZUtleSwgJmRhdGFTaXplKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGRhdGFTaXplIH0pOworICAg
IH0pLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyQ29jb2EubW0K
aW5kZXggZDZiZjA2ZTExMWY2YmI1ZjdlZjI4ZjE5NmQyZWUzODAwYzdjOGE0Yy4uYjNiYTFlMjQy
NDIwOGU3NTQxOGMyNzJlNmI2NTQwNzM0MDM2ZDY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1tCkBAIC01Nyw2ICs1Nyw3IEBAIHN0YXRpYyB2
b2lkIHByb2Nlc3NQQ01SZXF1ZXN0KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQ
Y21EYXRhQ2FycmllZCwKIAogLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNz
aW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRhc2sgKil0YXNrIGRpZFJlY2VpdmVDaGFsbGVuZ2U6KE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlv
biwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSljb21wbGV0aW9uSGFuZGxlcgogeworICAg
IC8vIEZJWE1FOiBBZGQgcGx1Ym1pbmcgc28gdGhhdCB3ZSBjYW4gdGVsbCB0aGUgZGFlbW9uIHdo
aWNoIGNlcnRpZmljYXRlcyB0byBhY2NlcHQgd2l0aG91dCB1c2luZyBOZXR3b3JrU2Vzc2lvbkNv
Y29hLgogICAgIGlmIChbY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1l
dGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0
XQogICAgICAgICAmJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjphbGxvd3NTcGVjaWZpY0hUVFBTQ2Vy
dGlmaWNhdGVGb3JIb3N0KGNoYWxsZW5nZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVu
dGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJU
cnVzdF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGll
cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJjNzA3ODZlZjE1OThjODNmYTQzNjJkZjNkNmM3ZmU3NzgzZTEyMWMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmgKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
bmFtZXNwYWNlIFBDTSB7CisKK3ZvaWQgYWRkVmVyc2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0
aW9uYXJ5KFZlY3Rvcjx1aW50OF90PiYmLCB4cGNfb2JqZWN0X3QpOworCit9IC8vIG5hbWVzcGFj
ZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQ
Q1V0aWxpdGllcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjMwMzFiNWMzNmI3MTI2MTgyMTcwNDNmZjk3ZGZm
OTQ3NGM1ZDJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQ
Q1V0aWxpdGllcy5tbQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK3ZvaWQgYWRkVmVyc2lv
bkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2Us
IHhwY19vYmplY3RfdCBkaWN0aW9uYXJ5KQoreworICAgIEFTU0VSVCh4cGNfZ2V0X3R5cGUoZGlj
dGlvbmFyeSkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0
X3VpbnQ2NChkaWN0aW9uYXJ5LCBQQ006OnByb3RvY29sVmVyc2lvbktleSwgUENNOjpwcm90b2Nv
bFZlcnNpb25WYWx1ZSk7CisKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBtZXNzYWdlLnNpemUoKTsK
KyAgICBhdXRvIHJhd1BvaW50ZXIgPSBtZXNzYWdlLnJlbGVhc2VCdWZmZXIoKS5sZWFrUHRyKCk7
CisgICAgYXV0byBkaXNwYXRjaERhdGEgPSBhZG9wdE5TKGRpc3BhdGNoX2RhdGFfY3JlYXRlKHJh
d1BvaW50ZXIsIGJ1ZmZlclNpemUsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAg
ICAgIGZhc3RGcmVlKHJhd1BvaW50ZXIpOworICAgIH0pKTsKKyAgICBhdXRvIHhwY0RhdGEgPSBh
ZG9wdE9TT2JqZWN0KHhwY19kYXRhX2NyZWF0ZV93aXRoX2Rpc3BhdGNoX2RhdGEoZGlzcGF0Y2hE
YXRhLmdldCgpKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKGRpY3Rpb25hcnksIFBD
TTo6cHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSwgeHBjRGF0YS5nZXQoKSk7CisKK30KKworfSAv
LyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJv
Y2Vzcy5zYi5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5X
ZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KaW5kZXggM2I5Nzk0NTUwNzllNDU2ZTM1NDkzZTFl
MWU1Y2E0NmI5ZDdlODhlZC4uMTk3NGI4ZTlmMjU5YWVlZmM5NDQ2NDY4NGIyMDRkMzUwZjM4ZDQx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxl
LldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCkBAIC0zNTcs
NiArMzU3LDggQEAKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5BcHBTU08uc2VydmljZS14
cGMiKQogKQogCisoYWxsb3cgbWFjaC1sb29rdXAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUud2Vi
a2l0LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiKSkKKwogKHdpdGgtZmlsdGVyICh1aWQgMCkKICAg
ICAoYWxsb3cgbWFjaC1sb29rdXAKICAgICAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuRGlz
a0FyYml0cmF0aW9uLmRpc2thcmJpdHJhdGlvbmQiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQXJndW1lbnRDb2Rlci5oCmluZGV4IGJjZjdjZDE2M2Q5YmE5MjNkMTgwYTAzZjhhNmVlNDUw
Zjc2YzFhMWQuLjUzM2U4MDk3MDU0MDU1YjgxYTZjNWVhMTA5ODFjNWI0ZDQwMjg3NGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKQEAgLTQ4LDYgKzQ4LDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPiBzdHJ1Y3QgQXJndW1lbnRD
b2RlciB7CiAgICAgICAgIHQuZW5jb2RlKGVuY29kZXIpOwogICAgIH0KIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIERlY29kZXI+CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VD4gZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAgICBpZiBjb25zdGV4cHIoSGFzTW9kZXJuRGVj
b2RlclY8VD4pCkBAIC04Miw2ICs4Myw3IEBAIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+PiB7CiAgICAgICAg
IGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KCZ2YWx1ZSksIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CiAgICAgfQogCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUPiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIFQgcmVzdWx0OwpAQCAtMTAwLDYg
KzEwMiw3IEBAIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
X3Q8c3RkOjppc19lbnVtX3Y8VD4+PiB7CiAgICAgICAgIGVuY29kZXIgPDwgV1RGOjplbnVtVG9V
bmRlcmx5aW5nVHlwZTxUPih2YWx1ZSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RGVjb2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKICAgICB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjp1bmRlcmx5aW5nX3R5cGVf
dDxUPj4gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1
bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVy
cy5jcHAKaW5kZXggODEwZWUyY2U1MWYyN2MyZGJkNjA3ZTUzMmFhMjZkNjA1NjlhYjI5Yi4uZmZm
OWU1ZTNmNmIzZTJlZDU2YjU2NjFlMDMyNzQ5ZWU2MzIzNmQ0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjcsMTYgKzI3LDIzIEBACiAj
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
KyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaCIKKyNpbmNsdWRlICJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaCIKICNpbmNsdWRlICJTdHJlYW1Db25uZWN0
aW9uRW5jb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIElQQyB7CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIEVuY29kZXI+CiB2b2lkIEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgV2FsbFRpbWUmIHRpbWUpCiB7CiAgICAgZW5jb2RlciA8PCB0aW1l
LnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKTsKIH0KK3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50
Q29kZXI8V2FsbFRpbWU+OjplbmNvZGU8RW5jb2Rlcj4oRW5jb2RlciYsIGNvbnN0IFdhbGxUaW1l
Jik7Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFdhbGxUaW1lPjo6ZW5jb2RlPFdlYktp
dDo6UENNOjpFbmNvZGVyPihXZWJLaXQ6OlBDTTo6RW5jb2RlciYsIGNvbnN0IFdhbGxUaW1lJik7
CiAKIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgV2FsbFRpbWUmIHRpbWUpCiB7CkBAIC00OCw2ICs1NSw3IEBA
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgV2FsbFRpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIERlY29kZXI+CiBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxXYWxs
VGltZT4gQXJndW1lbnRDb2RlcjxXYWxsVGltZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0aW1lOwpAQCAtNTYsNiArNjQsMTAgQEAgV0FS
Tl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IEFyZ3VtZW50Q29kZXI8V2Fs
bFRpbWU+OjpkZWNvZGUoRGVjb2QKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKCp0aW1lKTsKIH0KK3RlbXBsYXRlCitzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBBcmd1bWVudENvZGVyPFdhbGxUaW1lPjo6ZGVjb2RlPERlY29k
ZXI+KERlY29kZXImKTsKK3RlbXBsYXRlCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBBcmd1bWVu
dENvZGVyPFdhbGxUaW1lPjo6ZGVjb2RlPFdlYktpdDo6UENNOjpEZWNvZGVyPihXZWJLaXQ6OlBD
TTo6RGVjb2RlciYpOwogCiB2b2lkIEFyZ3VtZW50Q29kZXI8QXRvbVN0cmluZz46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBdG9tU3RyaW5nJiBhdG9tU3RyaW5nKQogewpAQCAtMTMz
LDEyICsxNDUsMTQgQEAgdGVtcGxhdGUKIHZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNv
ZGU8RW5jb2Rlcj4oRW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwogdGVtcGxhdGUKIHZvaWQgQXJn
dW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0cmVh
bUNvbm5lY3Rpb25FbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7Cit0ZW1wbGF0ZQordm9pZCBBcmd1
bWVudENvZGVyPFN0cmluZz46OmVuY29kZTxXZWJLaXQ6OlBDTTo6RW5jb2Rlcj4oV2ViS2l0OjpQ
Q006OkVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBEZWNv
ZGVyPgogc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4
dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBsZW5ndGgpCiB7CiAgICAgLy8gQmVmb3JlIGFs
bG9jYXRpbmcgdGhlIHN0cmluZywgbWFrZSBzdXJlIHRoYXQgdGhlIGRlY29kZXIgYnVmZmVyIGlz
IGJpZyBlbm91Z2guCi0gICAgaWYgKCFkZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW48Q2hhcmFjdGVyVHlwZT4obGVuZ3RoKSkKKyAgICBpZiAoIWRlY29kZXIudGVtcGxhdGUgYnVm
ZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxDaGFyYWN0ZXJUeXBlPihsZW5ndGgpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIENoYXJhY3RlclR5cGUqIGJ1ZmZlcjsK
QEAgLTE0OSwyNSArMTYzLDMyIEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGRlY29kZVN0cmluZ1RleHQoRGVjb2RlciYgZGVjb2RlciwgdWludDMyX3QKICAgICByZXR1cm4g
c3RyaW5nOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogV0FSTl9VTlVTRURfUkVU
VVJOIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBBcmd1bWVudENvZGVyPFN0cmluZz46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIHVpbnQzMl90IGxlbmd0aDsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGxlbmd0aCkpCisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbGVuZ3RoOwor
ICAgIGRlY29kZXIgPj4gbGVuZ3RoOworICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIAotICAgIGlmIChsZW5ndGggPT0gc3RkOjpudW1lcmljX2xpbWl0
czx1aW50MzJfdD46Om1heCgpKSB7CisgICAgaWYgKCpsZW5ndGggPT0gc3RkOjpudW1lcmljX2xp
bWl0czx1aW50MzJfdD46Om1heCgpKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIG51bGwgc3Ry
aW5nLgogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXM4
Qml0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXM4Qml0KSkKKyAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGlzOEJpdDsKKyAgICBkZWNvZGVyID4+IGlzOEJpdDsKKyAgICBpZiAoIWlzOEJpdCkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBpZiAoaXM4Qml0KQotICAg
ICAgICByZXR1cm4gZGVjb2RlU3RyaW5nVGV4dDxMQ2hhcj4oZGVjb2RlciwgbGVuZ3RoKTsKLSAg
ICByZXR1cm4gZGVjb2RlU3RyaW5nVGV4dDxVQ2hhcj4oZGVjb2RlciwgbGVuZ3RoKTsKKyAgICBp
ZiAoKmlzOEJpdCkKKyAgICAgICAgcmV0dXJuIGRlY29kZVN0cmluZ1RleHQ8TENoYXI+KGRlY29k
ZXIsICpsZW5ndGgpOworICAgIHJldHVybiBkZWNvZGVTdHJpbmdUZXh0PFVDaGFyPihkZWNvZGVy
LCAqbGVuZ3RoKTsKIH0KK3RlbXBsYXRlCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQXJndW1lbnRD
b2RlcjxTdHJpbmc+OjpkZWNvZGU8RGVjb2Rlcj4oRGVjb2RlciYpOwordGVtcGxhdGUKK3N0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBBcmd1bWVudENvZGVyPFN0cmluZz46OmRlY29kZTxXZWJLaXQ6OlBD
TTo6RGVjb2Rlcj4oV2ViS2l0OjpQQ006OkRlY29kZXImKTsKIAogV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU3Ry
aW5nJiByZXN1bHQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9B
cmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rl
cnMuaAppbmRleCBjOTdhNmY1NzZlZmRhZWFlMDRmNjk4M2JlMjU5NDJjZTIwMzlmZTlmLi5iMTgy
YzU0ZWI3ODhkM2Q2OTgxNGFhODA3M2U0ZmYxYWE5ZjM5MmJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTMwMCw2ICszMDAsNyBAQCBhdXRvIHR1
cGxlRnJvbVR1cGxlQW5kT2JqZWN0KFQmJiBvYmplY3QsIHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+
JiYgdHVwbGUpCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGUsIHR5cGVuYW1lLi4uIFR5cGVzPgog
c3RydWN0IFR1cGxlRGVjb2RlckltcGwgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxUeXBlLCBUeXBlcy4uLj4+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxUeXBl
PiBvcHRpb25hbDsKQEAgLTMxNyw2ICszMTgsNyBAQCBzdHJ1Y3QgVHVwbGVEZWNvZGVySW1wbCB7
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CiBzdHJ1Y3QgVHVwbGVEZWNvZGVySW1wbDxUeXBl
PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxzdGQ6OnR1cGxlPFR5cGU+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8VHlwZT4gb3B0aW9uYWw7CkBAIC0zMjksNiArMzMxLDcgQEAg
c3RydWN0IFR1cGxlRGVjb2RlckltcGw8VHlwZT4gewogCiB0ZW1wbGF0ZTxzaXplX3Qgc2l6ZSwg
dHlwZW5hbWUuLi4gRWxlbWVudHM+CiBzdHJ1Y3QgVHVwbGVEZWNvZGVyIHsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8
RWxlbWVudHMuLi4+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIHJl
dHVybiBUdXBsZURlY29kZXJJbXBsPEVsZW1lbnRzLi4uPjo6ZGVjb2RlKGRlY29kZXIpOwpAQCAt
MzM3LDYgKzM0MCw3IEBAIHN0cnVjdCBUdXBsZURlY29kZXIgewogCiB0ZW1wbGF0ZTw+CiBzdHJ1
Y3QgVHVwbGVEZWNvZGVyPDA+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8Pj4gZGVjb2RlKERlY29kZXImKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZSgpOwpAQCAtMzUwLDYgKzM1NCw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1lbnRzPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6
OnR1cGxlPEVsZW1lbnRzLi4uPj4gewogICAgICAgICBUdXBsZUVuY29kZXI8c2l6ZW9mLi4uKEVs
ZW1lbnRzKSwgRWxlbWVudHMuLi4+OjplbmNvZGUoZW5jb2RlciwgdHVwbGUpOwogICAgIH0KIAor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
c3RkOjp0dXBsZTxFbGVtZW50cy4uLj4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIFR1cGxlRGVjb2RlcjxzaXplb2YuLi4oRWxlbWVudHMpLCBFbGVtZW50
cy4uLj46OmRlY29kZShkZWNvZGVyKTsKQEAgLTcyMSw4ICs3MjYsMTAgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gVHlwZXM+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6VmFyaWFudDxUeXBlcy4u
Lj4+IHsKIH07CiAgICAgCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdhbGxUaW1l
PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFdhbGxUaW1lJik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2FsbFRpbWUmKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBkZWNvZGUo
RGVjb2RlciYpOwogfTsKIApAQCAtNzQwLDYgKzc0Nyw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8U3RyaW5nPiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFN0cmluZyYpOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL1dLTWFpbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1dLTWFpbi5oCmluZGV4IDdhOTI3Yzc3ZDI2ZDg1NWI0YjZmZWFkYTk4MDNhMDQ3Y2VlOGI1YzMu
LjRiZTc5ZDJhNWJkMGU3MDRmOWEzYmM0ODNiMmQyNThjZDQ4ZWRiOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS01haW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvV0tNYWluLmgKQEAgLTMzLDYgKzMzLDcgQEAgZXh0ZXJuICJDIiB7
CiAjZW5kaWYKIAogV0tfRVhQT1JUIGludCBXS1hQQ1NlcnZpY2VNYWluKGludCBhcmdjLCBjb25z
dCBjaGFyKiogYXJndikgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7
CitXS19FWFBPUlQgaW50IFdLUENNRGFlbW9uTWFpbihpbnQgYXJnYywgY29uc3QgY2hhcioqIGFy
Z3YpIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1dLTWFpbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9X
S01haW4ubW0KaW5kZXggZTQ4MDVhNDhkNTE0MDZhZDU5NTY2YjM3N2JlMjUzOTgyYTlhZWI5MC4u
NDY4MDFkYmZmY2U2YjgyNmNkMTBkY2FhZGEzMzBkNmY1ZmRmMThiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLTWFpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvV0tNYWluLm1tCkBAIC0yNiw5ICsyNiwxNSBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJXS01haW4uaCIKIAorI2ltcG9ydCAiUENNRGFlbW9uRW50cnlQ
b2ludC5oIgogI2ltcG9ydCAiWFBDU2VydmljZUVudHJ5UG9pbnQuaCIKIAogaW50IFdLWFBDU2Vy
dmljZU1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqKiBhcmd2KQogewogICAgIHJldHVybiBXZWJL
aXQ6OlhQQ1NlcnZpY2VNYWluKGFyZ2MsIGFyZ3YpOwogfQorCitpbnQgV0tQQ01EYWVtb25NYWlu
KGludCBhcmdjLCBjb25zdCBjaGFyKiogYXJndikKK3sKKyAgICByZXR1cm4gV2ViS2l0OjpQQ01E
YWVtb25NYWluKGFyZ2MsIGFyZ3YpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24v
UENNRGFlbW9uRW50cnlQb2ludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4YzkxMjBiZjVjY2JjMTcxZjlhNWNk
OWVkMTJlN2NkMDM5NmUzNDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50LmgK
QEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworaW50IFBDTURhZW1vbk1haW4oaW50LCBjb25zdCBjaGFyKiopOworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkVudHJ5UG9pbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVt
b25FbnRyeVBvaW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmMjMyMWRlNWIxOWMxYzE2NzQ5YmZkNmE2MzQ2
NGY4NGVkNTI0NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRy
eVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lm1tCkBAIC0w
LDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQ
Q01EYWVtb25FbnRyeVBvaW50LmgiCisKKyNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50
Q29ubmVjdGlvbi5oIgorI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50
ZXJmYWNlLmgiCisjaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5o
IgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CisjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9S
dW5Mb29wLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisjaW1wb3J0IDx3
dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKworLy8gRklYTUU6IEFkZCBkYWVtb24gcGxpc3QgdG8g
cmVwb3NpdG9yeS4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBIYXNoU2V0PFJldGFp
blB0cjx4cGNfY29ubmVjdGlvbl90Pj4mIHBlZXJzKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFJldGFpblB0cjx4
cGNfY29ubmVjdGlvbl90Pj4+IHNldDsKKyAgICByZXR1cm4gc2V0LmdldCgpOworfQorCitzdGF0
aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQQ006OkVuY29kZWRNZXNzYWdlJiYpPiByZXBseVNl
bmRlcihQQ006Ok1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBPU09iamVjdFB0cjx4cGNfb2JqZWN0
X3Q+JiYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIVBDTTo6bWVzc2FnZVR5cGVTZW5kc1JlcGx5KG1l
c3NhZ2VUeXBlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFtyZXF1ZXN0
ID0gV1RGTW92ZShyZXF1ZXN0KV0gKFBDTTo6RW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdlKSB7Cisg
ICAgICAgIGF1dG8gcmVwbHkgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZV9y
ZXBseShyZXF1ZXN0LmdldCgpKSk7CisgICAgICAgIFBDTTo6YWRkVmVyc2lvbkFuZEVuY29kZWRN
ZXNzYWdlVG9EaWN0aW9uYXJ5KFdURk1vdmUobWVzc2FnZSksIHJlcGx5LmdldCgpKTsKKyAgICAg
ICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKHhwY19kaWN0aW9uYXJ5X2dldF9yZW1vdGVf
Y29ubmVjdGlvbihyZXF1ZXN0LmdldCgpKSwgcmVwbHkuZ2V0KCkpOworICAgIH07Cit9CisKK3N0
YXRpYyB2b2lkIGNvbm5lY3Rpb25FdmVudEhhbmRsZXIoeHBjX29iamVjdF90IHJlcXVlc3QpCit7
CisgICAgaWYgKHhwY19nZXRfdHlwZShyZXF1ZXN0KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVz
dCwgUENNOjpwcm90b2NvbFZlcnNpb25LZXkpICE9IFBDTTo6cHJvdG9jb2xWZXJzaW9uVmFsdWUp
IHsKKyAgICAgICAgTlNMb2coQCJyZWNlaXZlZCByZXF1ZXN0IHRoYXQgd2FzIG5vdCB0aGUgY3Vy
cmVudCBwcm90b2NvbCB2ZXJzaW9uIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvIG1lc3NhZ2VUeXBlIHsgc3RhdGljX2Nhc3Q8UENNOjpNZXNzYWdlVHlwZT4oeHBjX2RpY3Rp
b25hcnlfZ2V0X3VpbnQ2NChyZXF1ZXN0LCBQQ006OnByb3RvY29sTWVzc2FnZVR5cGVLZXkpKSB9
OworICAgIHNpemVfdCBkYXRhU2l6ZSB7IDAgfTsKKyAgICBjb25zdCB2b2lkKiBkYXRhID0geHBj
X2RpY3Rpb25hcnlfZ2V0X2RhdGEocmVxdWVzdCwgUENNOjpwcm90b2NvbEVuY29kZWRNZXNzYWdl
S2V5LCAmZGF0YVNpemUpOworICAgIFBDTTo6RW5jb2RlZE1lc3NhZ2UgZW5jb2RlZE1lc3NhZ2Ug
eyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGRhdGFTaXplIH07CisgICAgZGVj
b2RlTWVzc2FnZUFuZFNlbmRUb01hbmFnZXIobWVzc2FnZVR5cGUsIFdURk1vdmUoZW5jb2RlZE1l
c3NhZ2UpLCByZXBseVNlbmRlcihtZXNzYWdlVHlwZSwgcmVxdWVzdCkpOworfQorCitzdGF0aWMg
dm9pZCBzdGFydExpc3RlbmluZ0Zvck1hY2hTZXJ2aWNlQ29ubmVjdGlvbnMoKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90Pj4gbGlzdGVu
ZXIgPSB4cGNfY29ubmVjdGlvbl9jcmVhdGVfbWFjaF9zZXJ2aWNlKCJjb20uYXBwbGUud2Via2l0
LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBYUENf
Q09OTkVDVElPTl9NQUNIX1NFUlZJQ0VfTElTVEVORVIpOworICAgIHhwY19jb25uZWN0aW9uX3Nl
dF9ldmVudF9oYW5kbGVyKGxpc3RlbmVyLmdldCgpLmdldCgpLCBeKHhwY19vYmplY3RfdCBwZWVy
KSB7CisgICAgICAgIGlmICh4cGNfZ2V0X3R5cGUocGVlcikgIT0gWFBDX1RZUEVfQ09OTkVDVElP
TikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBGSVhNRTogQWRkIGFuIGVudGl0
bGVtZW50IGNoZWNrIGhlcmUgc28gdGhhdCBvbmx5IHRoZSBuZXR3b3JrIHByb2Nlc3MgY2FuIHN1
Y2Nlc3NmdWxseSBjb25uZWN0LgorCisgICAgICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9o
YW5kbGVyKHBlZXIsIF4oeHBjX29iamVjdF90IGV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZl
bnQgPT0gWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5URVJSVVBURUQpIHsKKyAgICAgICAgICAgICAg
ICBwZWVycygpLnJlbW92ZShwZWVyKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBjb25uZWN0aW9uRXZlbnRIYW5kbGVyKGV2ZW50KTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUocGVlciwgZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX2FjdGl2YXRl
KHBlZXIpOworICAgICAgICAKKyAgICAgICAgcGVlcnMoKS5hZGQocGVlcik7CisgICAgfSk7Cisg
ICAgeHBjX2Nvbm5lY3Rpb25fYWN0aXZhdGUobGlzdGVuZXIuZ2V0KCkuZ2V0KCkpOworfQorCitz
dGF0aWMgdm9pZCByZWdpc3RlclNjaGVkdWxlZEFjdGl2aXR5SGFuZGxlcigpCit7CisgICAgeHBj
X2FjdGl2aXR5X3JlZ2lzdGVyKCJjb20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25kLmFjdGl2
aXR5IiwgWFBDX0FDVElWSVRZX0NIRUNLX0lOLCBeKHhwY19hY3Rpdml0eV90IGFjdGl2aXR5KSB7
CisgICAgICAgIGlmICh4cGNfYWN0aXZpdHlfZ2V0X3N0YXRlKGFjdGl2aXR5KSA9PSBYUENfQUNU
SVZJVFlfU1RBVEVfQ0hFQ0tfSU4pIHsKKyAgICAgICAgICAgIHhwY19vYmplY3RfdCBjcml0ZXJp
YSA9IHhwY19hY3Rpdml0eV9jb3B5X2NyaXRlcmlhKGFjdGl2aXR5KTsKKworICAgICAgICAgICAg
Ly8gRklYTUU6IHNldCB2YWx1ZXMgaGVyZSB0aGF0IGFsaWduIHdpdGggdmFsdWVzIGZyb20gdGhl
IHBsaXN0LgorCisgICAgICAgICAgICB4cGNfYWN0aXZpdHlfc2V0X2NyaXRlcmlhKGFjdGl2aXR5
LCBjcml0ZXJpYSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAv
LyBGSVhNRTogQWRkIGNvZGUgaGVyZSB0aGF0IGRvZXMgZGFpbHkgdGFza3Mgb2YgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyLgorICAgIH0pOworfQorCitzdGF0aWMgdm9pZCBlbnRlclNh
bmRib3goKQoreworICAgIC8vIEZJWE1FOiBFbnRlciBhIHNhbmRib3ggaGVyZS4gV2Ugc2hvdWxk
IG9ubHkgbmVlZCByZWFkL3dyaXRlIGFjY2VzcyB0byBvdXIgZGF0YWJhc2UgYW5kIG5ldHdvcmsg
YWNjZXNzIGFuZCBub3RoaW5nIGVsc2UuCit9CisKK2ludCBQQ01EYWVtb25NYWluKGludCBhcmdj
LCBjb25zdCBjaGFyKiogYXJndikKK3sKKyAgICBpZiAoYXJnYyAhPSAyIHx8IHN0cmNtcChhcmd2
WzFdLCAicnVuQXNEYWVtb24iKSkgeworICAgICAgICBOU0xvZyhAIlRoaXMgZXhlY3V0YWJsZSBp
cyBpbnRlbmRlZCB0byBiZSBydW4gYXMgYSBkYWVtb24uIik7CisgICAgICAgIHJldHVybiAtMTsK
KyAgICB9CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGVudGVyU2FuZGJveCgpOwor
ICAgICAgICBzdGFydExpc3RlbmluZ0Zvck1hY2hTZXJ2aWNlQ29ubmVjdGlvbnMoKTsKKyAgICAg
ICAgcmVnaXN0ZXJTY2hlZHVsZWRBY3Rpdml0eUhhbmRsZXIoKTsKKyAgICAgICAgV1RGOjppbml0
aWFsaXplTWFpblRocmVhZCgpOworICAgIH0KKyAgICBDRlJ1bkxvb3BSdW4oKTsKKyAgICByZXR1
cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAyNDEyYmJm
YWQ4ZTVmODExYjUxZTgyZjYwZDFjNTQ2MTlhMjE4ODM5Li5jZmFiY2UwNWIyNGQwNzg5ODA2ZjE0
YWFlOTA4NzFhYzIwYTg3ZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTEwMSw4ICsxMDEsMTQgQEAgTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRDbGllbnRJbXBsLmNwcAogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKIE5ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmNwcAog
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmNwcAogTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3Jr
TG9hZGVyLmNwcAogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAKK05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFl
bW9uQ2xpZW50LmNwcAorTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmNwcAorTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmNwcAorTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyUHJveHkuY3BwCiAKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckZldGNoVGFzay5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDg5MTM4MzRmNmJiNWY5MzllNzIwYjA5ZWZjYjAyYzk1NDRmODRhYWEuLjExZTcyOTY4NGU0
YTJhZGYwYjVjYjg5M2FkNjc5MWQ5MDA1ODI2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAg
LTQxLDcgKzQxLDkgQEAgTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29j
b2EubW0KIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvRGFlbW9uL0RhZW1vbkVudHJ5
UG9pbnQubW0KIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9OZXR3
b3JrU2VydmljZUVudHJ5UG9pbnQubW0KIAorTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29j
b2EubW0KIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1tCitOZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0
aWxpdGllcy5tbQogCiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL2lvcy9Mb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXJJT1MubW0KIApAQCAtMTkxLDYgKzE5Myw4IEBAIFNoYXJlZC9Db2NvYS9X
S05TVVJMUmVxdWVzdC5tbQogU2hhcmVkL0NvY29hL1dLT2JqZWN0Lm1tCiBTaGFyZWQvQ29jb2Ev
V2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2EubW0KIAorU2hhcmVkL0VudHJ5UG9pbnRV
dGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkVudHJ5UG9pbnQubW0KKwogU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5t
bQogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNl
TWFpbi5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBjZjllMGRmNTRiZjY4YjI1MDAxYzZjYzFkOWViY2I3M2FlMjExNzNmLi5mNjhi
NGNmYjQ4NWQ2ZjhiZjM2MjhkMDU2YjlmM2Q3MDQwNjIyZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyOTEsNiArMTI5MSw3IEBA
CiAJCTVDQjdBRkUwMjNDNTJDRTUwMEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCN0FGREYy
M0M1MkNCQzAwRTQ5Q0YzIC8qIF9XS1Jlc291cmNlTG9hZERlbGVnYXRlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNCN0FGRTcyM0M2ODIwNzAw
RTQ5Q0YzIC8qIFJlc291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjdBRkU2MjNDNjgxQjAwMEU0OUNGMyAvKiBSZXNvdXJjZUxv
YWRJbmZvLmggKi87IH07CiAJCTVDQjdBRkU4MjNDNjlCNjEwMEU0OUNGMyAvKiBfV0tSZXNvdXJj
ZUxvYWRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Q0I3QUZFMzIzQzY3RDM3MDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkSW5mby5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDQjkzMTA5MjZF
ODQzOUEwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCOTMxMDcyNkU4
NDFDQjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmggKi87
IH07CiAJCTVDQkM5QjhFMUM2NTJDQTAwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQkM5Qjg5MUM2NTI0
QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2suaCAqLzsgfTsKIAkJNUNCRDU5NUMyMjgwRURG
NDAwMkIyMkFBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNUQyMzg4MjI3QTE4OTIwMDBCOUJEQSAvKiBf
V0tDdXN0b21IZWFkZXJGaWVsZHMubW0gKi87IH07CiAJCTVDRDI4NjUxMUU3MjM1OTkwMDk0RkRD
OCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0QyODY0RDFFNzIyRjQ0MDA5NEZEQzggLyogV0tDb250ZW50
UnVsZUxpc3RTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKQEAgLTQ1NTYsNiArNDU1NywyMyBAQAogCQk1Q0I5MzBDMDI2RTA1NDJGMDAzMkIxQzAg
LyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjkzMEMxMjZFMDU0QjgwMDMyQjFD
MCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJbXBsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjkzMEYyMjZFN0VFRTAwMDMyQjFDMCAvKiBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29y
a0xvYWRlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBGNDI2
RTgwMUU4MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9u
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
ZW1vbkNvbm5lY3Rpb25Db2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNC
OTMwRjUyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkz
MEY2MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudERhZW1vbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBG
NzI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREYWVtb25DbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
Q0I5MzBGODI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01l
YXN1cmVtZW50RGVjb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkz
MEY5MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRkEy
NkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFj
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXJJbnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNC
OTMwRkIyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclBy
b3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNUNCOTMwRkMyNkU4MDIxNjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29u
bmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1Q0I5MzBGRDI2RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRE
ZWNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01l
YXN1cmVtZW50RGVjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBG
RTI2RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50
Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBGRjI2RTgw
MjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzEwNDI2RTgzN0ZDMDAzMkIxQzAg
LyogUENNRGFlbW9uRW50cnlQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQQ01EYWVtb25FbnRyeVBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
QjkzMTA1MjZFODM3RkQwMDMyQjFDMCAvKiBQQ01EYWVtb25FbnRyeVBvaW50Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUENNRGFlbW9uRW50cnlQb2ludC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMxMDYyNkU4MzlBOTAwMzJCMUMwIC8q
IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJ
bnRlcmZhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzEwNzI2RTg0
MUNCMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENV
dGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMxMDgyNkU4NDFD
QjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRYUENVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkM5Qjg5
MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmV0d29ya0RhdGFUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDQkM5QjhCMUM2NTI1NzMwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtEYXRhVGFz
a0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0JFOTA4RjI2RDdGQjYy
MDA1QTJFOTUgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyNjUsMTIgKzkyODMsMjQgQEAKIAkJ
CQk1Q0I5MzBCRjI2RTA1NDJFMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGll
bnQuaCAqLywKIAkJCQk1Q0I5MzBDMDI2RTA1NDJGMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRDbGllbnRJbXBsLmNwcCAqLywKIAkJCQk1Q0I5MzBDMTI2RTA1NEI4MDAzMkIxQzAg
LyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJbXBsLmggKi8sCisJCQkJNUNCOTMwRkMy
NkU4MDIxNjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAg
Ki8sCisJCQkJNUNCOTMwRkUyNkU4MDIxNjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50Q29ubmVjdGlvbi5oICovLAorCQkJCTVDQjkzMEY3MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAgKi8sCisJCQkJNUNCOTMwRjYyNkU4
MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmggKi8s
CiAJCQkJNUM4MjZENkEyNkQ0ODJFQTAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50
RGF0YWJhc2UuY3BwICovLAogCQkJCTVDODI2RDY5MjZENDgyRUEwMDhBRUM5MSAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggKi8sCiAJCQkJNUNCRTkwOTAyNkQ3RkI3QzAwNUEy
RTk1IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmNwcCAqLywKIAkJCQk1Q0JF
OTA4RjI2RDdGQjYyMDA1QTJFOTUgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8u
aCAqLywKKwkJCQk1Q0I5MzBGODI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnREZWNvZGVyLmNwcCAqLywKKwkJCQk1Q0I5MzBGRDI2RTgwMjE2MDAzMkIxQzAgLyogUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmggKi8sCisJCQkJNUNCOTMwRjkyNkU4MDIxNTAw
MzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5jcHAgKi8sCisJCQkJNUNC
OTMwRkYyNkU4MDIxNjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5o
ICovLAogCQkJCTZCRDA1ODY0MjIwQ0U4QzIwMDBCRUQ1QyAvKiBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXIuY3BwICovLAogCQkJCTZCRDA1ODYzMjIwQ0U4QzIwMDBCRUQ1QyAvKiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCAqLywKKwkJCQk1Q0I5MzEwNjI2RTgzOUE5MDAz
MkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmNwcCAqLywK
KwkJCQk1Q0I5MzBGQTI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VySW50ZXJmYWNlLmggKi8sCisJCQkJNUNCOTMwRkIyNkU4MDIxNTAwMzJCMUMwIC8qIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcCAqLywKKwkJCQk1Q0I5MzBGNTI2
RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCAq
LywKIAkJCQk1N0ZFNjg4QjI2MEFCQjNEMDBCRjQ1RTQgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnROZXR3b3JrTG9hZGVyLmNwcCAqLywKIAkJCQk1N0ZFNjg4QTI2MEFCQjNEMDBCRjQ1RTQgLyog
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmggKi8sCiAJCQkJNUM4MjZENjcy
NkQ0NkI0MzAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwICovLApA
QCAtOTM1OCwxMSArOTM4OCwyNCBAQAogCQk1Q0I5MzBGMTI2RTdFRTg5MDAzMkIxQzAgLyogY29j
b2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDQjkz
MEY0MjZFODAxRTgwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5l
Y3Rpb25Db2NvYS5tbSAqLywKIAkJCQk1Q0I5MzBGMjI2RTdFRUUwMDAzMkIxQzAgLyogUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyQ29jb2EubW0gKi8sCisJCQkJNUNCOTMxMDcy
NkU4NDFDQjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmgg
Ki8sCisJCQkJNUNCOTMxMDgyNkU4NDFDQjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50WFBDVXRpbGl0aWVzLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTVDQjkzMTAzMjZFODM3NUIwMDMyQjFDMCAvKiBE
YWVtb24gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTVD
QjkzMTA0MjZFODM3RkMwMDMyQjFDMCAvKiBQQ01EYWVtb25FbnRyeVBvaW50LmggKi8sCisJCQkJ
NUNCOTMxMDUyNkU4MzdGRDAwMzJCMUMwIC8qIFBDTURhZW1vbkVudHJ5UG9pbnQubW0gKi8sCisJ
CQkpOworCQkJbmFtZSA9IERhZW1vbjsKKwkJCXBhdGggPSBDb2NvYS9EYWVtb247CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk2QkU5NjlCRjFFNTRENDUyMDA4Qjc0ODMgLyog
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCkBAIC0xMDgxOCw2ICsxMDg2MSw3IEBACiAJCUJDODI4MzY4MTZCMzU4NzkwMEEy
NzhGRSAvKiBFbnRyeVBvaW50VXRpbGl0aWVzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk1Q0I5MzEwMzI2RTgzNzVCMDAzMkIxQzAgLyogRGFlbW9uICov
LAogCQkJCUJDODI4MzZCMTZCMzU4NzkwMEEyNzhGRSAvKiBYUENTZXJ2aWNlICovLAogCQkJCTVD
RTkxMjBGMjI5M0MyNUYwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHAgKi8sCiAJ
CQkpOwpAQCAtMTIzNjQsNiArMTI0MDgsNyBAQAogCQkJCTZCRDA1ODY1MjIwQ0U4QzIwMDBCRUQ1
QyAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU3RkU2ODhDMjYwQUJCM0QwMEJGNDVFNCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdv
cmtMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDODI2RDZCMjZENDgyRUYwMDhBRUM5MSAv
KiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0I5
MzEwOTI2RTg0MzlBMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2Rjk1MzY1MThGRjU4RjUwMDFEQjJFRiAvKiBQcm9j
ZXNzQXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFBN0M1ODExMzZFMTlDMDBGQjcx
NjcgLyogUHJvY2Vzc0xhdW5jaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjNGRDQ4MjFFQjk0
RUMwMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLywK
</data>
<flag name="commit-queue"
          id="460901"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437684</attachid>
            <date>2021-09-08 16:57:36 -0700</date>
            <delta_ts>2021-09-08 17:17:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230052-20210908165735.patch</filename>
            <type>text/plain</type>
            <size>106774</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJjOTI0NmRiMDI3OTMwZDM0MjA5OWU1
Yzg4MmJiYzVjODA5ZDY2ZTAuLjU1MzZmYjAzOGRiY2I5ZmQ0NDUyYTg2NTU0ZDIxYTNiMjkzOGFi
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDktMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgZGFlbW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzAwNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oOgorCiAyMDIxLTA5LTA3ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IG9yaWdpbiBwYXJ0aXRp
b25pbmcgKHRvcC1vcmlnaW4vZnJhbWUtb3JpZ2luKSBmb3IgQnJvYWRjYXN0Q2hhbm5lbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAwM2YwZDFkMGM1NjI2ODY5Mzk2NWI3ZTkxY2EzMzNlZDc2MThiMTEyLi4xMDc5NGIy
MzE4YzkxMjVmOGIzYzU1OTZkZWZkZWJiN2U2OTlkM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
NSBAQAorMjAyMS0wOS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIEFkZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBkYWVtb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDA1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUg
aW5mcmFzdHJ1Y3R1cmUgdG8gdXNlIGEgZGFlbW9uIGluc3RlYWQgb2YgdGhlIG5ldHdvcmsgcHJv
Y2VzcyB0byBoYW5kbGUgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuCisgICAgICAgIEl0IGRvZXMg
bm90IHN0YXJ0IHVzaW5nIHRoZSBkYWVtb24geWV0LCBzbyB0aGVyZSBpcyBubyBjaGFuZ2UgaW4g
YmVoYXZpb3IuCisgICAgICAgIEkgbWFkZSBhIG5ldyBjbGFzcyBQQ006Ok1hbmFnZXJJbnRlcmZh
Y2Ugd2hpY2ggY2FuIGVpdGhlciBiZSBhIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlciBv
ciBhIFBDTTo6TWFuYWdlclByb3h5LAorICAgICAgICB3aGljaCB3b3VsZCBzZW5kIG1lc3NhZ2Vz
IHRvIHRoZSBkYWVtb24gaW5zdGVhZCBvZiBkb2luZyB0aGUgd29yayBsb2NhbGx5LgorICAgICAg
ICBJIGltcGxlbWVudGVkIHRoZSBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgcGFyYW1ldGVycyB1
c2luZyBzb21lIG9mIHRoZSBJUEMgZW5jb2RpbmcgdGVtcGxhdGVzLgorICAgICAgICBJIGhhdmUg
YW4gZW50cnkgcG9pbnQgZm9yIGFuIGV4ZWN1dGFibGUgYnV0IG5vIGV4ZWN1dGFibGUgeWV0Lgor
ICAgICAgICBJIGhhdmUgdmVyaWZpZWQgdGhhdCBFdmVudEF0dHJpYnV0aW9uIHVuaXQgdGVzdHMg
cGFzcyB3aGVuIHVzaW5nIHRoZSBkYWVtb24sIHNvIHRoZSBpbmZyYXN0cnVjdHVyZSBpcyBnb29k
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpwY21TdG9yZURpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OnByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudENvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0
aW9uOjpjb25uZWN0aW9uVG9EYWVtb24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rp
b246OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rpb246OnNlbmRXaXRoUmVw
bHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhZW1vbkNsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNs
aWVudDo6bG9hZEZyb21OZXR3b3JrKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25DbGll
bnQ6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVt
b25DbGllbnQ6OmZlYXR1cmVFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpE
YWVtb25DbGllbnQ6OmRlYnVnTW9kZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFl
bW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6ZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6RGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RGVjb2Rlcjo6b3BlcmF0b3I+Pik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6YnVm
ZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBDTTo6RW5jb2Rlcjo6ZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlBDTTo6RW5jb2Rlcjo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RW5jb2Rlcjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpFbmNvZGVyOjp0YWtlQnVm
ZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UENNOjpNZXNzYWdlSW5mbzo6dG9TdHJpbmdGb3JUZXN0aW5nOjplbmNvZGVS
ZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6bWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
OlBDTTo6aGFuZGxlUENNTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6aGFuZGxlUENN
TWVzc2FnZVdpdGhSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6ZGVjb2RlTWVzc2FnZUFu
ZFNlbmRUb01hbmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpQQ006OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpSZXBseUNhbGxl
cjw+OjpjYWxsUmVwbHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlJlcGx5Q2FsbGVyPFN0cmlu
Zz46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6c2VuZE1lc3NhZ2VXaXRoUmVw
bHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c3RvcmVVbmF0dHJpYnV0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6aGFuZGxlQXR0cmlidXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6Y2xlYXIpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6Y2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbik6
CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjptaWdyYXRlUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFu
YWdlclByb3h5Ojp0b1N0cmluZ0ZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
Q006Ok1hbmFnZXJQcm94eTo6c2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcpOgorICAgICAgICAo
V2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6OnNldFRva2VuU2lnbmF0dXJl
VVJMRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzZXRB
dHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpN
YW5hZ2VyUHJveHk6Om1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6TWFuYWdlclByb3h5OjpzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFs
dWVzRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzdGFy
dFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5h
Z2VyUHJveHk6OmRlc3Ryb3lTdG9yZUZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
clByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNv
Y29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9EYWVt
b24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OmRpY3Rpb25hcnlGcm9tTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6Q29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENV
dGlsaXRpZXMuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW06
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OmFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2Fn
ZVRvRGljdGlvbmFyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5X
ZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW46CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpkZWNvZGVTdHJpbmdUZXh0KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxTdHJpbmc+OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1v
bi9QQ01EYWVtb25FbnRyeVBvaW50Lmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6cGVlcnMpOgorICAgICAgICAoV2ViS2l0OjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6Y29ubmVjdGlvbkV2ZW50SGFuZGxlcik6Cisg
ICAgICAgIChXZWJLaXQ6OnN0YXJ0TGlzdGVuaW5nRm9yTWFjaFNlcnZpY2VDb25uZWN0aW9ucyk6
CisgICAgICAgIChXZWJLaXQ6OnJlZ2lzdGVyU2NoZWR1bGVkQWN0aXZpdHlIYW5kbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6ZW50ZXJTYW5kYm94KToKKyAgICAgICAgKFdlYktpdDo6UENNRGFlbW9u
TWFpbik6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0w
OS0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlcGxhY2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpzdGFydCB3
aXRoIGFuIGltcGxlbWVudGF0aW9uIHRoYXQgZG9lc24ndCBuZWVkIE5ldHdvcmtTZXNzaW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oIGIvU291cmNlL1dU
Ri93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAppbmRleCAyZjk2NWJhN2ZkMTA5Y2NiOGZlNGE3ZWQ4
NDRkYjIyZGU4NzkxOGYwLi5jYjZhNzI4NWZmNWJkMWFlYzk5OTdmMjU3MjYwZmQ0NWQwMDc4ZmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmgKQEAgLTcxLDYgKzcxLDcgQEAgdHlwZWRl
ZiB2b2lkICgqeHBjX2Nvbm5lY3Rpb25faGFuZGxlcl90KSh4cGNfY29ubmVjdGlvbl90IGNvbm5l
Y3Rpb24pOwogCiAjZGVmaW5lIFhQQ19BUlJBWV9BUFBFTkQgKChzaXplX3QpKC0xKSkKICNkZWZp
bmUgWFBDX0NPTk5FQ1RJT05fTUFDSF9TRVJWSUNFX0xJU1RFTkVSICgxIDw8IDApCisjZGVmaW5l
IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVEVSUlVQVEVEIFhQQ19HTE9CQUxfT0JKRUNUKF94cGNf
ZXJyb3JfY29ubmVjdGlvbl9pbnRlcnJ1cHRlZCkKICNkZWZpbmUgWFBDX0VSUk9SX0NPTk5FQ1RJ
T05fSU5WQUxJRCBYUENfR0xPQkFMX09CSkVDVChfeHBjX2Vycm9yX2Nvbm5lY3Rpb25faW52YWxp
ZCkKICNkZWZpbmUgWFBDX0VSUk9SX0tFWV9ERVNDUklQVElPTiBfeHBjX2Vycm9yX2tleV9kZXNj
cmlwdGlvbgogI2RlZmluZSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQgWFBDX0dMT0JB
TF9PQkpFQ1QoX3hwY19lcnJvcl90ZXJtaW5hdGlvbl9pbW1pbmVudCkKQEAgLTkxLDYgKzkyLDkg
QEAgZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBfeHBjX2Vycm9yX2tleV9kZXNjcmlwdGlvbjsK
ICNpbmNsdWRlIDx4cGMvcHJpdmF0ZS5oPgogI2Vsc2UKIAorZXh0ZXJuICJDIiBjb25zdCBjaGFy
ICogY29uc3QgWFBDX0FDVElWSVRZX1JBTkRPTV9JTklUSUFMX0RFTEFZOworZXh0ZXJuICJDIiBj
b25zdCBjaGFyICogY29uc3QgWFBDX0FDVElWSVRZX1JFUVVJUkVfTkVUV09SS19DT05ORUNUSVZJ
VFk7CisKICNpZiBPU19PQkpFQ1RfVVNFX09CSkMKIE9TX09CSkVDVF9ERUNMKG9zX3RyYW5zYWN0
aW9uKTsKICNlbHNlCkBAIC0xMDgsNiArMTEyLDcgQEAgZW51bSB7CiAKIFdURl9FWFRFUk5fQ19C
RUdJTgogCitleHRlcm4gY29uc3Qgc3RydWN0IF94cGNfZGljdGlvbmFyeV9zIF94cGNfZXJyb3Jf
Y29ubmVjdGlvbl9pbnRlcnJ1cHRlZDsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgX3hwY19kaWN0aW9u
YXJ5X3MgX3hwY19lcnJvcl9jb25uZWN0aW9uX2ludmFsaWQ7CiBleHRlcm4gY29uc3Qgc3RydWN0
IF94cGNfZGljdGlvbmFyeV9zIF94cGNfZXJyb3JfdGVybWluYXRpb25faW1taW5lbnQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
CmluZGV4IGYxYjE5OTAyZTFhNGVhMDVhZWMyMWRhYjcyN2Y4YjhhZWUwOTI5OTkuLjI5YmFiOWEy
OTM5OWQxNjI0OWMxMjk2ZTY4YWFmNzc4ZjMzMGExNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgi
CisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCIKICNpbmNsdWRlICJTdG9y
YWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDU0M2Nh
YjEwMGJjN2JjOTlmNTQwZjM5NGJmZjcyM2ZiY2NkYWViM2EuLmRmZGU3OGRhNjFkOWJmYThhM2M1
YTRjMWM4Y2E5N2EwMmUzNTNmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUGluZ0xv
YWQuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuaCIKICNp
bmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCIKKyNpbmNsdWRlICJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCkBAIC05MiwxMSArOTMsMjAgQEAgc3RhdGljIFN0cmluZyBwY21TdG9yZURp
cmVjdG9yeShjb25zdCBOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXMK
ICAgICByZXR1cm4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKIH0KIAorc3RhdGlj
IFVuaXF1ZVJlZjxQQ006Ok1hbmFnZXJJbnRlcmZhY2U+IG1hbmFnZXJPclByb3h5KE5ldHdvcmtT
ZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBj
b25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAg
ICAvLyBGSVhNRTogVHVybiB0aGlzIG9uIGFuZCByZW1vdmUgTWFuYWdlckludGVyZmFjZSBvbmNl
IHJkYXI6Ly84MDcwMTA5OCBpcyBjbG9zZWQuCisgICAgY29uc3RleHByIGJvb2wgdXNlUENNRGFl
bW9uID0gZmFsc2U7CisKKyAgICBpZiAodXNlUENNRGFlbW9uKQorICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZVJlZjxQQ006Ok1hbmFnZXJQcm94eT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJl
ZjxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KG1ha2VVbmlxdWVSZWY8UENNOjpDbGll
bnRJbXBsPihuZXR3b3JrU2Vzc2lvbiwgbmV0d29ya1Byb2Nlc3MpLCBwY21TdG9yZURpcmVjdG9y
eShuZXR3b3JrU2Vzc2lvbiwgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycy5kaXJlY3RvcnksIHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSk7Cit9CisKIE5ldHdv
cmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3Ms
IGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAg
IDogbV9zZXNzaW9uSUQocGFyYW1ldGVycy5zZXNzaW9uSUQpCiAgICAgLCBtX25ldHdvcmtQcm9j
ZXNzKG5ldHdvcmtQcm9jZXNzKQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgLCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeShwYXJhbWV0
ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RvcmFnZURpcmVjdG9yeSkKICAgICAsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmRpcmVjdG9y
eSkKICAgICAsIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNob3VsZEluY2x1
ZGVMb2NhbGhvc3QgPyBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgOiBTaG91bGRJbmNsdWRl
TG9jYWxob3N0OjpObykKICAgICAsIG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZURl
YnVnTW9kZSA/IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6OlllcyA6IEVu
YWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6Ok5vKQpAQCAtMTA3LDYgKzExNyw3
IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAgICAgLCBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMu
Zmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUpCiAgICAgLCBtX3N0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbihwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
LnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbikKICNlbmRpZgorICAgICwgbV9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChtYW5hZ2VyT3JQcm94eSgqdGhpcywgbmV0d29ya1Byb2Nlc3MsIHBhcmFt
ZXRlcnMpKQogICAgICwgbV9icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkobWFrZVVuaXF1ZVJlZjxO
ZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PigpKQogICAgICwgbV90ZXN0U3BlZWRNdWx0
aXBsaWVyKHBhcmFtZXRlcnMudGVzdFNwZWVkTXVsdGlwbGllcikKICAgICAsIG1fYWxsb3dzU2Vy
dmVyUHJlY29ubmVjdChwYXJhbWV0ZXJzLmFsbG93c1NlcnZlclByZWNvbm5lY3QpCkBAIC0xNDEs
NyArMTUyLDYgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNz
JiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBh
cmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlZCk7CiAjZW5k
aWYKLSAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gbWFrZVVuaXF1ZTxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI+KG1ha2VVbmlxdWVSZWY8UENNOjpDbGllbnRJbXBsPigqdGhp
cywgbmV0d29ya1Byb2Nlc3MpLCBwY21TdG9yZURpcmVjdG9yeSgqdGhpcywgcGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5kaXJlY3RvcnksIHBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9y
YWdlRGlyZWN0b3J5KSk7CiB9CiAKIE5ldHdvcmtTZXNzaW9uOjp+TmV0d29ya1Nlc3Npb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDcw
YTFiNDkxYjI0M2FhZWZiM2QyN2JkY2FkMDBhNjA1ZTQyNGY1MGYuLmQ4YWFiM2RiYTQ5Yjc2N2Yz
ZWYwOTk0YmYyY2JlOTUxZmE0MTY3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJlZmV0Y2hDYWNoZS5oIgorI2luY2x1ZGUgIlByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRl
bnNpb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgpAQCAtNjAsNyArNjEsNiBA
QCBjbGFzcyBOZXR3b3JrUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIGNs
YXNzIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk7CiBjbGFzcyBOZXR3b3JrU29ja2V0
Q2hhbm5lbDsKLWNsYXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjsKIGNsYXNzIFdl
YlBhZ2VOZXR3b3JrUGFyYW1ldGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTsKIGNsYXNzIFdlYlNvY2tldFRhc2s7CkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICBOZXR3b3JrTG9hZFNjaGVkdWxlciYgbmV0d29ya0xvYWRTY2hlZHVsZXIo
KTsKLSAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXImIHByaXZhdGVDbGlja01lYXN1
cmVtZW50KCkgeyByZXR1cm4gKm1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7IH0KKyAgICBQQ006
Ok1hbmFnZXJJbnRlcmZhY2UmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgeyByZXR1cm4gbV9w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC5nZXQoKTsgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhJiBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0Rh
dGEoKSB7IHJldHVybiBtX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTsgfQpAQCAtMTkyLDcg
KzE5Miw2IEBAIHByb3RlY3RlZDoKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1By
b2Nlc3M7CiAgICAgV2Vha0hhc2hTZXQ8TmV0d29ya0RhdGFUYXNrPiBtX2RhdGFUYXNrU2V0Owog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgU3RyaW5nIG1fcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CiAgICAgUmVmUHRyPFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZT4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgIFNob3VsZEluY2x1ZGVM
b2NhbGhvc3QgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
IHsgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6WWVzIH07CkBAIC0yMDgsNyArMjA3LDcgQEAgcHJv
dGVjdGVkOgogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1f
dGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZzsKICNlbmRpZgogICAgIGJvb2wgbV9pc1N0
YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDsKKyAgICBVbmlxdWVSZWY8UENNOjpNYW5hZ2VySW50ZXJmYWNlPiBtX3ByaXZhdGVDbGlja01l
YXN1cmVtZW50OwogCiAgICAgSGFzaFNldDxSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPj4gbV9r
ZXB0QWxpdmVMb2FkczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2
M2EwMzYwZGI1MzE5ODFmZTY3NGIyNjNhZjQwMzIzMWQ5MTk4NWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCisjaWYgIVBMQVRG
T1JNKENPQ09BKQorCitDb25uZWN0aW9uIENvbm5lY3Rpb246OmNvbm5lY3Rpb25Ub0RhZW1vbigp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIENv
bm5lY3Rpb246OnNlbmQoTWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5KE1lc3Nh
Z2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRN
ZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNw
YWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVmNzI2MWM4ZjIyMjVhZGVkOWM1NjgyYjMxMTQ1MjkwZjI3MjY2OWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEs
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKworZW51bSBj
bGFzcyBNZXNzYWdlVHlwZSA6IHVpbnQ4X3Q7Cit1c2luZyBFbmNvZGVkTWVzc2FnZSA9IFZlY3Rv
cjx1aW50OF90PjsKKworY2xhc3MgQ29ubmVjdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIENv
bm5lY3Rpb24gY29ubmVjdGlvblRvRGFlbW9uKCk7CisKKyAgICB2b2lkIHNlbmQoTWVzc2FnZVR5
cGUsIEVuY29kZWRNZXNzYWdlJiYpOworICAgIHZvaWQgc2VuZFdpdGhSZXBseShNZXNzYWdlVHlw
ZSwgRW5jb2RlZE1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVkTWVzc2Fn
ZSYmKT4mJik7CisKK3ByaXZhdGU6CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgQ29ubmVjdGlv
bihPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiYmKTsKKworICAgIE9TT2JqZWN0UHRyPHhw
Y19jb25uZWN0aW9uX3Q+IG1fY29ubmVjdGlvbjsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3Bh
Y2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudERhZW1vbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NmZlNWU3NGFmY2NjMDBmZTRkZGQ0N2NjMTBkYTI4NmY1Mzc0ZGRi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5oIgorCisjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNw
YWNlIFBDTSB7CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIERhZW1vbkNsaWVudDo6bG9h
ZEZyb21OZXR3b3JrKFVSTCYmIHVybCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBqc29uUGF5bG9h
ZCwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkIHBjbURh
dGFDYXJyaWVkLCBOZXR3b3JrTG9hZENhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBjYWxsYmFjayh7IH0sIHsgfSwgeyB9KTsKK30KKyNlbmRpZgorCit2
b2lkIERhZW1vbkNsaWVudDo6YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoSlNDOjpNZXNzYWdlTGV2
ZWwsIGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBE
YWVtb25DbGllbnQ6OmZlYXR1cmVFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBEYWVtb25DbGllbnQ6OmRlYnVnTW9kZUVuYWJsZWQoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFj
ZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50RGFlbW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWU3NzgyMTI0MjZkODk3MTZjMWJhMzZkNDUwYWNkNWQzNmQ3ZjY2OQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaApAQCAtMCww
ICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Cisj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFj
ZSBQQ00geworCitjbGFzcyBEYWVtb25DbGllbnQgOiBwdWJsaWMgQ2xpZW50LCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8RGFlbW9uQ2xpZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CisgICAgdm9pZCBicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJikgZmluYWw7CisgICAgYm9vbCBmZWF0dXJlRW5hYmxlZCgpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgZGVidWdNb2RlRW5hYmxlZCgpIGNvbnN0IGZpbmFsOworfTsKKworfSAvLyBu
YW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhhMjBlOGMyZmNjYTk5YzEwODYyNTQwN2ExZjJjM2NjNDUyMzNlNDUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHAKQEAgLTAsMCAr
MSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25h
bWVzcGFjZSBQQ00geworCitib29sIERlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW5CeXRlcyhzaXplX3QgYnl0ZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJ5dGVzIDw9IG1fYnVm
ZmVyLnNpemUoKSAtIG1fYnVmZmVyUG9zaXRpb247Cit9CisKK2Jvb2wgRGVjb2Rlcjo6ZGVjb2Rl
Rml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBzaXplX3QpCit7Cisg
ICAgaWYgKCFidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluQnl0ZXMoc2l6ZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBtZW1jcHkoZGF0YSwgbV9idWZmZXIuZGF0YSgpICsgbV9idWZm
ZXJQb3NpdGlvbiwgc2l6ZSk7CisgICAgbV9idWZmZXJQb3NpdGlvbiArPSBzaXplOworICAgIHJl
dHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERlY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODc3OTllMzBlZTUzMDc3MmM5ZDE0N2Nj
Mzg3ZjU1ZjViOGMzNTU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERl
Y29kZXIuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNw
YWNlIFBDTSB7CisKK2NsYXNzIERlY29kZXIgeworcHVibGljOgorICAgIERlY29kZXIoVmVjdG9y
PHVpbnQ4X3Q+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkg
eyB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBEZWNvZGVyJiBvcGVyYXRv
cj4+KHN0ZDo6b3B0aW9uYWw8VD4mIHQpCisgICAgeworICAgICAgICB0ID0gSVBDOjpBcmd1bWVu
dENvZGVyPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+LCB2
b2lkPjo6ZGVjb2RlKCp0aGlzKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgYnVmZmVy
SXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgbnVtRWxlbWVudHMpIGNvbnN0CisgICAgewor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWUsICJUeXBl
IFQgbXVzdCBoYXZlIGEgZml4ZWQsIGtub3duIGVuY29kZWQgc2l6ZSEiKTsKKworICAgICAgICBp
ZiAobnVtRWxlbWVudHMgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC8gc2l6
ZW9mKFQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiBidWZm
ZXJJc0xhcmdlRW5vdWdoVG9Db250YWluQnl0ZXMobnVtRWxlbWVudHMgKiBzaXplb2YoVCkpOwor
ICAgIH0KKworICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0
YSh1aW50OF90KiBkYXRhLCBzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOworICAgIAorcHJpdmF0
ZToKKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250
YWluQnl0ZXMoc2l6ZV90KSBjb25zdDsKKworICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZlcjsK
KyAgICBzaXplX3QgbV9idWZmZXJQb3NpdGlvbiB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iOThiMTVlNTEwZTU5OTM3NDNmZTdlNTYzZWYwMWRkNzhiOTI0ZmY1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuY3BwCkBAIC0wLDAgKzEsNDAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRFbmNvZGVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2Ug
UENNIHsKKwordm9pZCBFbmNvZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCkKK3sKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0
YSwgc2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RW5jb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4YTgzYzY1OTI1ZDI2MmFkZDIwYmE1YThi
MTkwMzY1ZTU5MzJjYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5j
b2Rlci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3Bh
Y2UgUENNIHsKKworY2xhc3MgRW5jb2RlciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KFQmJiB0KQorICAgIHsKKyAgICAgICAgSVBD
OjpBcmd1bWVudENvZGVyPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNl
X3Q8VD4+Pjo6ZW5jb2RlKCp0aGlzLCBzdGQ6OmZvcndhcmQ8VD4odCkpOworICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHZvaWQgZW5jb2RlKEFyZyYmIGFyZywgQXJncyYmLi4uIGFyZ3MpCisgICAg
eworICAgICAgICAqdGhpcyA8PCBzdGQ6OmZvcndhcmQ8QXJnPihhcmcpOworICAgICAgICBlbmNv
ZGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisgICAgdm9pZCBlbmNvZGUo
KSB7IH0KKworICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlQnVmZmVyKCkgeyByZXR1cm4gc3RkOjpl
eGNoYW5nZShtX2J1ZmZlciwgeyB9KTsgfQorCisgICAgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERh
dGEoY29uc3QgdWludDhfdCosIHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7CisKK3ByaXZhdGU6
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgUENN
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKaW5kZXggYmI4MjIyYzJj
OWRiYjA3NzJiZDM5ZTc5ZjQ0MzA1ZjQ3MGJlOWY1NS4uMjZlN2M1NTkxNDQ3ZmViZjU3ODUxZWFl
NWQyZTBmNDZkOWJlZTAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCkBAIC0yOCwxMyArMjgsOSBAQAog
I2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnQuaCIKKyNpbmNs
dWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaCIKICNpbmNsdWRl
ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+Ci0jaW5j
bHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
QEAgLTQyLDM4ICszOCwzMCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotZW51bSBjbGFzcyBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSA6IGJvb2wgeyBVbmF0dHJpYnV0
ZWQsIEF0dHJpYnV0ZWQgfTsKLQotY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4g
eworY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyIDogcHVibGljIFBDTTo6TWFu
YWdlckludGVyZmFjZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogCi0g
ICAgdXNpbmcgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgPSBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGU7Ci0gICAgdXNpbmcgQXR0
cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpB
dHRyaWJ1dGlvblRyaWdnZXJEYXRhOwotICAgIHVzaW5nIFByaXZhdGVDbGlja01lYXN1cmVtZW50
ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7Ci0gICAgdXNpbmcgUmVnaXN0cmFi
bGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBTb3VyY2VT
aXRlID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGU7Ci0KICAg
ICBleHBsaWNpdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIoVW5pcXVlUmVmPFBDTTo6
Q2xpZW50PiYmLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnkpOwogICAgIH5Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXIoKTsKIAotICAgIHZvaWQgc3RvcmVVbmF0dHJpYnV0ZWQo
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJik7Ci0gICAgdm9pZCBoYW5kbGVBdHRyaWJ1dGlvbihB
dHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiByZWRpcmVjdERvbWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
VVJMKTsKLSAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAg
dm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIG1pZ3JhdGVQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYs
IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKTsKKyAgICB2b2lkIHN0b3Jl
VW5hdHRyaWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYpIGZpbmFsOworICAgIHZvaWQg
aGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBjb25zdCBVUkwmIHJl
cXVlc3RVUkwsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVkaXJlY3REb21haW4sIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCkgZmluYWw7CisgICAgdm9pZCBjbGVhcihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgY2xlYXJGb3JSZWdpc3RyYWJsZURv
bWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgZmluYWw7CisgICAgdm9pZCBtaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVn
YWN5U3RvcmFnZShQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uVHlwZSkgZmluYWw7CiAKLSAgICB2b2lkIHRvU3RyaW5nRm9yVGVzdGlu
ZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpIGNvbnN0OwotICAgIHZvaWQgc2V0
T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkgeyBtX2lzUnVubmluZ1Rlc3QgPSB2
YWx1ZTsgfQotICAgIHZvaWQgc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTCYmKTsK
LSAgICB2b2lkIHNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwmJik7Ci0gICAgdm9p
ZCBzZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVSTCYmIHNvdXJjZVVSTCwgVVJM
JiYgZGVzdGluYXRpb25VUkwpOwotICAgIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJl
ZEZvclRlc3RpbmcoKTsKLSAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwot
ICAgIHZvaWQgc2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nKGJvb2wgdmFsdWUpIHsg
bV9pc1J1bm5pbmdFcGhlbWVyYWxNZWFzdXJlbWVudFRlc3QgPSB2YWx1ZTsgfQotICAgIHZvaWQg
c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhTdHJpbmcmJiB1bmxpbmthYmxl
VG9rZW4sIFN0cmluZyYmIHNlY3JldFRva2VuLCBTdHJpbmcmJiBzaWduYXR1cmUsIFN0cmluZyYm
IGtleUlEKTsKLSAgICB2b2lkIHN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3RpbmcoKTsKLSAg
ICB2b2lkIGRlc3Ryb3lTdG9yZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIHRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZyk+JiYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0T3ZlcnJpZGVUaW1lckZvclRlc3Rp
bmcoYm9vbCB2YWx1ZSkgZmluYWwgeyBtX2lzUnVubmluZ1Rlc3QgPSB2YWx1ZTsgfQorICAgIHZv
aWQgc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTCYmKSBmaW5hbDsKKyAgICB2b2lk
IHNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwmJikgZmluYWw7CisgICAgdm9pZCBz
ZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVSTCYmIHNvdXJjZVVSTCwgVVJMJiYg
ZGVzdGluYXRpb25VUkwpIGZpbmFsOworICAgIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZEFzRXhw
aXJlZEZvclRlc3RpbmcoKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpIGZpbmFsOworICAgIHZvaWQgc2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5n
KGJvb2wgdmFsdWUpIGZpbmFsIHsgbV9pc1J1bm5pbmdFcGhlbWVyYWxNZWFzdXJlbWVudFRlc3Qg
PSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGlu
ZyhTdHJpbmcmJiB1bmxpbmthYmxlVG9rZW4sIFN0cmluZyYmIHNlY3JldFRva2VuLCBTdHJpbmcm
JiBzaWduYXR1cmUsIFN0cmluZyYmIGtleUlEKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0VGltZXJJ
bW1lZGlhdGVseUZvclRlc3RpbmcoKSBmaW5hbDsKKyAgICB2b2lkIGRlc3Ryb3lTdG9yZUZvclRl
c3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKIAogcHJpdmF0ZToKICAg
ICBQQ006OlN0b3JlJiBzdG9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXJJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2Uu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ3MmFmZDllNDUwZjg1YTdmYTQxNDlhYTY4M2E4YzMzOTI4ZTc5NDAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5j
cHAKQEAgLTAsMCArMSwyNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgiCisKKyNp
bmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25D
bGllbnQuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaCIKKyNp
bmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaCIKKyNpbmNsdWRlICJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25h
bWVzcGFjZSBQQ00geworCituYW1lc3BhY2UgTWVzc2FnZUluZm8geworCisjZGVmaW5lIEZVTkNU
SU9OKG1mKSBzdHJ1Y3QgbWYgeyBzdGF0aWMgY29uc3RleHByIGF1dG8gTWVtYmVyRnVuY3Rpb24g
PSAmUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjptZjsKKyNkZWZpbmUgQVJHVU1FTlRT
KC4uLikgdXNpbmcgQXJnc1R1cGxlID0gc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz47CisjZGVmaW5l
IFJFUExZKC4uLikgdXNpbmcgUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKF9fVkFfQVJH
U19fKT47IFwKKyAgICBzdGF0aWMgUENNOjpFbmNvZGVkTWVzc2FnZSBlbmNvZGVSZXBseShfX1ZB
X0FSR1NfXyk7CisjZGVmaW5lIEVORCB9OworCitGVU5DVElPTihzdG9yZVVuYXR0cmlidXRlZCkK
K0FSR1VNRU5UUyhXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkKK0VORAorCitGVU5D
VElPTihoYW5kbGVBdHRyaWJ1dGlvbikKK0FSR1VNRU5UUyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXI6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIFVSTCwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4sIFVSTCkKK0VORAorCitGVU5DVElPTihjbGVhcikKK0FSR1VNRU5UUygpCitSRVBM
WSgpCitFTkQKKworRlVOQ1RJT04oY2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbikKK0FSR1VNRU5U
UyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbikKK1JFUExZKCkKK0VORAorCitGVU5DVElPTiht
aWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZSkKK0FSR1VNRU5U
UyhXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGUpCitFTkQKKworRlVOQ1RJT04odG9TdHJpbmdGb3JUZXN0aW5nKQor
QVJHVU1FTlRTKCkKK1JFUExZKFN0cmluZykKK0VORAorCitGVU5DVElPTihzZXRPdmVycmlkZVRp
bWVyRm9yVGVzdGluZykKK0FSR1VNRU5UUyhib29sKQorRU5ECisKK0ZVTkNUSU9OKHNldFRva2Vu
UHVibGljS2V5VVJMRm9yVGVzdGluZykKK0FSR1VNRU5UUyhVUkwpCitFTkQKKworRlVOQ1RJT04o
c2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKQorQVJHVU1FTlRTKFVSTCkKK0VORAorCitG
VU5DVElPTihzZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKQorQVJHVU1FTlRTKFVS
TCwgVVJMKQorRU5ECisKK0ZVTkNUSU9OKG1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JU
ZXN0aW5nKQorQVJHVU1FTlRTKCkKK0VORAorCitGVU5DVElPTihtYXJrQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcpCitBUkdVTUVOVFMoKQorUkVQ
TFkoKQorRU5ECisKK0ZVTkNUSU9OKHNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZykK
K0FSR1VNRU5UUyhib29sKQorRU5ECisKK0ZVTkNUSU9OKHNldFBDTUZyYXVkUHJldmVudGlvblZh
bHVlc0ZvclRlc3RpbmcpCitBUkdVTUVOVFMoU3RyaW5nLCBTdHJpbmcsIFN0cmluZywgU3RyaW5n
KQorRU5ECisKK0ZVTkNUSU9OKHN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3RpbmcpCitBUkdV
TUVOVFMoKQorRU5ECisKK0ZVTkNUSU9OKGRlc3Ryb3lTdG9yZUZvclRlc3RpbmcpCitBUkdVTUVO
VFMoKQorUkVQTFkoKQorRU5ECisKKyN1bmRlZiBGVU5DVElPTgorI3VuZGVmIEFSR1VNRU5UUwor
I3VuZGVmIFJFUExZCisjdW5kZWYgRU5ECisKKyNkZWZpbmUgRU1QVFlfUkVQTFkobWYpIFBDTTo6
RW5jb2RlZE1lc3NhZ2UgbWY6OmVuY29kZVJlcGx5KCkgeyByZXR1cm4geyB9OyB9CitFTVBUWV9S
RVBMWShjbGVhcik7CitFTVBUWV9SRVBMWShjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKTsKK0VN
UFRZX1JFUExZKG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVk
Rm9yVGVzdGluZyk7CitFTVBUWV9SRVBMWShkZXN0cm95U3RvcmVGb3JUZXN0aW5nKTsKKyN1bmRl
ZiBFTVBUWV9SRVBMWQorCitQQ006OkVuY29kZWRNZXNzYWdlIHRvU3RyaW5nRm9yVGVzdGluZzo6
ZW5jb2RlUmVwbHkoU3RyaW5nIHJlcGx5KQoreworICAgIFBDTTo6RW5jb2RlciBlbmNvZGVyOwor
ICAgIGVuY29kZXIgPDwgcmVwbHk7CisgICAgcmV0dXJuIGVuY29kZXIudGFrZUJ1ZmZlcigpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlSW5mbworCitib29sIG1lc3NhZ2VUeXBlU2VuZHNS
ZXBseShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSkKK3sKKyAgICBzd2l0Y2ggKG1lc3NhZ2VUeXBl
KSB7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6U3RvcmVVbmF0dHJpYnV0ZWQ6CisgICAgY2FzZSBN
ZXNzYWdlVHlwZTo6SGFuZGxlQXR0cmlidXRpb246CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6TWln
cmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2U6CisgICAgY2FzZSBN
ZXNzYWdlVHlwZTo6U2V0T3ZlcnJpZGVUaW1lckZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdl
VHlwZTo6U2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5
cGU6OlNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZzoKKyAgICBjYXNlIE1lc3NhZ2VUeXBl
OjpTZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5
cGU6Ok1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVz
c2FnZVR5cGU6OlNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZzoKKyAgICBjYXNlIE1l
c3NhZ2VUeXBlOjpTZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nOgorICAgIGNh
c2UgTWVzc2FnZVR5cGU6OlN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3Rpbmc6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpNYXJrQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdl
VHlwZTo6RGVzdHJveVN0b3JlRm9yVGVzdGluZzoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpUb1N0
cmluZ0ZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6Q2xlYXI6CisgICAgY2FzZSBN
ZXNzYWdlVHlwZTo6Q2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbjoKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworc3RhdGljIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlciYgZGFlbW9uTWFuYWdl
cigpCit7CisgICAgLy8gRklYTUU6IEdpdmUgdGhlIG1hbmFnZXIgYSB2YWxpZCBzdG9yYWdlIGRp
cmVjdG9yeS4KKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyPiBpbnN0YW5jZShtYWtlVW5pcXVlUmVmPFBDTTo6RGFlbW9uQ2xpZW50PigpLCBT
dHJpbmcoKSk7CisgICAgcmV0dXJuIGluc3RhbmNlLmdldCgpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBJbmZvPgordm9pZCBoYW5kbGVQQ01NZXNzYWdlKFBDTTo6RW5jb2RlZE1lc3NhZ2UmJiBl
bmNvZGVkTWVzc2FnZSkKK3sKKyAgICBQQ006OkRlY29kZXIgZGVjb2RlcihXVEZNb3ZlKGVuY29k
ZWRNZXNzYWdlKSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHR5cGVuYW1lIEluZm86OkFyZ3NUdXBs
ZT4gYXJndW1lbnRzOworICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOworICAgIGlmIChVTkxJS0VM
WSghYXJndW1lbnRzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSVBDOjpjYWxsTWVtYmVyRnVu
Y3Rpb24oV1RGTW92ZSgqYXJndW1lbnRzKSwgJmRhZW1vbk1hbmFnZXIoKSwgSW5mbzo6TWVtYmVy
RnVuY3Rpb24pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbmZvPgordm9pZCBoYW5kbGVQQ01N
ZXNzYWdlV2l0aFJlcGx5KFBDTTo6RW5jb2RlZE1lc3NhZ2UmJiBlbmNvZGVkTWVzc2FnZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChQQ006OkVuY29kZWRNZXNzYWdlJiYpPiYmIHJlcGx5U2VuZGVy
KQoreworICAgIFBDTTo6RGVjb2RlciBkZWNvZGVyKFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsK
KworICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgSW5mbzo6QXJnc1R1cGxlPiBhcmd1bWVudHM7
CisgICAgZGVjb2RlciA+PiBhcmd1bWVudHM7CisgICAgaWYgKFVOTElLRUxZKCFhcmd1bWVudHMp
KQorICAgICAgICByZXR1cm47CisKKyAgICB0eXBlbmFtZSBJbmZvOjpSZXBseSBjb21wbGV0aW9u
SGFuZGxlciB7IFtyZXBseVNlbmRlciA9IFdURk1vdmUocmVwbHlTZW5kZXIpXSAoYXV0byYmLi4u
IGFyZ3MpIG11dGFibGUgeworICAgICAgICByZXBseVNlbmRlcihJbmZvOjplbmNvZGVSZXBseShh
cmdzLi4uKSk7CisgICAgfX07CisKKyAgICBJUEM6OmNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3Zl
KCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgJmRhZW1vbk1hbmFnZXIo
KSwgSW5mbzo6TWVtYmVyRnVuY3Rpb24pOworfQorCit2b2lkIGRlY29kZU1lc3NhZ2VBbmRTZW5k
VG9NYW5hZ2VyKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBWZWN0b3I8dWludDhfdD4mJiBlbmNv
ZGVkTWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYg
cmVwbHlTZW5kZXIpCit7CisgICAgQVNTRVJUKG1lc3NhZ2VUeXBlU2VuZHNSZXBseShtZXNzYWdl
VHlwZSkgPT0gISFyZXBseVNlbmRlcik7CisgICAgc3dpdGNoIChtZXNzYWdlVHlwZSkgeworICAg
IGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6U3RvcmVVbmF0dHJpYnV0ZWQ6CisgICAgICAgIGhhbmRs
ZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86OnN0b3JlVW5hdHRyaWJ1dGVkPihXVEZNb3ZlKGVuY29k
ZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6
SGFuZGxlQXR0cmlidXRpb246CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86
OmhhbmRsZUF0dHJpYnV0aW9uPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6Q2xlYXI6CisgICAgICAgIGhhbmRsZVBD
TU1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86OmNsZWFyPihXVEZNb3ZlKGVuY29kZWRNZXNz
YWdlKSwgV1RGTW92ZShyZXBseVNlbmRlcikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBD
TTo6TWVzc2FnZVR5cGU6OkNsZWFyRm9yUmVnaXN0cmFibGVEb21haW46CisgICAgICAgIGhhbmRs
ZVBDTU1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86OmNsZWFyRm9yUmVnaXN0cmFibGVEb21h
aW4+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6TWlncmF0ZVByaXZhdGVDbGlj
a01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2U6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8
TWVzc2FnZUluZm86Om1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9y
YWdlPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UENNOjpNZXNzYWdlVHlwZTo6VG9TdHJpbmdGb3JUZXN0aW5nOgorICAgICAgICBoYW5kbGVQQ01N
ZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjp0b1N0cmluZ0ZvclRlc3Rpbmc+KFdURk1vdmUo
ZW5jb2RlZE1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6U2V0T3ZlcnJpZGVUaW1lckZvclRlc3Rpbmc6Cisg
ICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86OnNldE92ZXJyaWRlVGltZXJGb3JU
ZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUENNOjpNZXNzYWdlVHlwZTo6U2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nOgorICAg
ICAgICBoYW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJbmZvOjpzZXRUb2tlblB1YmxpY0tleVVSTEZv
clRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpTZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmc6Cisg
ICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86OnNldFRva2VuU2lnbmF0dXJlVVJM
Rm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3Rp
bmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86OnNldEF0dHJpYnV0aW9u
UmVwb3J0VVJMc0ZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpNYXJrQWxsVW5hdHRyaWJ1dGVkQXNF
eHBpcmVkRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6
bWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1l
c3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpNYXJr
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rpbmc6Cisg
ICAgICAgIGhhbmRsZVBDTU1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86Om1hcmtBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZz4oV1RGTW92ZShl
bmNvZGVkTWVzc2FnZSksIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpTZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3Rp
bmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86OnNldEVwaGVtZXJhbE1l
YXN1cmVtZW50Rm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlNldFBDTUZyYXVkUHJldmVudGlvblZh
bHVlc0ZvclRlc3Rpbmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86OnNl
dFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1lc3Nh
Z2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpTdGFydFRp
bWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdlPE1lc3Nh
Z2VJbmZvOjpzdGFydFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRN
ZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6RGVz
dHJveVN0b3JlRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZVdpdGhSZXBseTxN
ZXNzYWdlSW5mbzo6ZGVzdHJveVN0b3JlRm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2Fn
ZSksIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit9
IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXJJbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjkyZmE5ZjA5NTViM2UwMjI0NDY1MDM3
MWVkYjQ5MzljMDcxZmFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXJJbnRlcmZhY2UuaApAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDx3dGYvRW51bVRy
YWl0cy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSA6IGJvb2wgeyBVbmF0dHJpYnV0ZWQsIEF0dHJpYnV0
ZWQgfTsKKworY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOworCituYW1lc3Bh
Y2UgUENNIHsKKworY2xhc3MgTWFuYWdlckludGVyZmFjZSB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+TWFuYWdlckludGVyZmFjZSgpIHsgfTsKKworICAgIHVzaW5nIEF0dHJpYnV0aW9uRGVzdGlu
YXRpb25TaXRlID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9u
RGVzdGluYXRpb25TaXRlOworICAgIHVzaW5nIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKKyAg
ICB1c2luZyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OworICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW47CisgICAgdXNpbmcgU291cmNlU2l0ZSA9IFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpTb3VyY2VTaXRlOworCisgICAgdmlydHVhbCB2b2lkIHN0b3JlVW5hdHRy
aWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBjb25zdCBVUkwmIHJl
cXVlc3RVUkwsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVkaXJlY3REb21haW4sIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhcihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGb3JS
ZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtaWdyYXRlUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZShQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIHRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+
JiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcnJpZGVUaW1lckZvclRlc3Rp
bmcoYm9vbCB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRUb2tlblB1YmxpY0tleVVS
TEZvclRlc3RpbmcoVVJMJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VG9rZW5TaWduYXR1
cmVVUkxGb3JUZXN0aW5nKFVSTCYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEF0dHJpYnV0
aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJMJiYgc291cmNlVVJMLCBVUkwmJiBkZXN0aW5hdGlv
blVSTCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVk
Rm9yVGVzdGluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZv
clRlc3RpbmcoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQQ01GcmF1ZFByZXZlbnRp
b25WYWx1ZXNGb3JUZXN0aW5nKFN0cmluZyYmIHVubGlua2FibGVUb2tlbiwgU3RyaW5nJiYgc2Vj
cmV0VG9rZW4sIFN0cmluZyYmIHNpZ25hdHVyZSwgU3RyaW5nJiYga2V5SUQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZygpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVzdHJveVN0b3JlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpID0gMDsKK307CisKK2NvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbFZlcnNpb25L
ZXkgeyAidmVyc2lvbiIgfTsKK2NvbnN0ZXhwciB1aW50NjRfdCBwcm90b2NvbFZlcnNpb25WYWx1
ZSB7IDEgfTsKKworY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sTWVzc2FnZVR5cGVLZXkg
eyAibWVzc2FnZSB0eXBlIiB9OworZW51bSBjbGFzcyBNZXNzYWdlVHlwZSA6IHVpbnQ4X3Qgewor
ICAgIFN0b3JlVW5hdHRyaWJ1dGVkLAorICAgIEhhbmRsZUF0dHJpYnV0aW9uLAorICAgIENsZWFy
LAorICAgIENsZWFyRm9yUmVnaXN0cmFibGVEb21haW4sCisgICAgTWlncmF0ZVByaXZhdGVDbGlj
a01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UsCisgICAgVG9TdHJpbmdGb3JUZXN0aW5nLAor
ICAgIFNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nLAorICAgIFNldFRva2VuUHVibGljS2V5VVJM
Rm9yVGVzdGluZywKKyAgICBTZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcsCisgICAgU2V0
QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZywKKyAgICBNYXJrQWxsVW5hdHRyaWJ1dGVk
QXNFeHBpcmVkRm9yVGVzdGluZywKKyAgICBNYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcsCisgICAgU2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRG
b3JUZXN0aW5nLAorICAgIFNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcsCisg
ICAgU3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZywKKyAgICBEZXN0cm95U3RvcmVGb3JU
ZXN0aW5nLAorfTsKKworY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRW5jb2RlZE1lc3Nh
Z2VLZXkgeyAiZW5jb2RlZCBtZXNzYWdlIiB9OwordXNpbmcgRW5jb2RlZE1lc3NhZ2UgPSBWZWN0
b3I8dWludDhfdD47CisKK3ZvaWQgZGVjb2RlTWVzc2FnZUFuZFNlbmRUb01hbmFnZXIoTWVzc2Fn
ZVR5cGUsIFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPHVpbnQ4X3Q+JiYpPiYmKTsKK2Jvb2wgbWVzc2FnZVR5cGVTZW5kc1JlcGx5KE1lc3Nh
Z2VUeXBlKTsKKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6
OlBDTTo6TWVzc2FnZVR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAg
ICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGUsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNz
YWdlVHlwZTo6U3RvcmVVbmF0dHJpYnV0ZWQsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdl
VHlwZTo6SGFuZGxlQXR0cmlidXRpb24sCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlw
ZTo6Q2xlYXIsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6Q2xlYXJGb3JSZWdp
c3RyYWJsZURvbWFpbiwKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpNaWdyYXRl
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZSwKKyAgICAgICAgV2ViS2l0
OjpQQ006Ok1lc3NhZ2VUeXBlOjpUb1N0cmluZ0ZvclRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6
UENNOjpNZXNzYWdlVHlwZTo6U2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcsCisgICAgICAgIFdl
YktpdDo6UENNOjpNZXNzYWdlVHlwZTo6U2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nLAor
ICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlNldFRva2VuU2lnbmF0dXJlVVJMRm9y
VGVzdGluZywKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTZXRBdHRyaWJ1dGlv
blJlcG9ydFVSTHNGb3JUZXN0aW5nLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6
Ok1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nLAorICAgICAgICBXZWJLaXQ6
OlBDTTo6TWVzc2FnZVR5cGU6Ok1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRz
QXNFeHBpcmVkRm9yVGVzdGluZywKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpT
ZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6UENNOjpN
ZXNzYWdlVHlwZTo6U2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZywKKyAgICAg
ICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTdGFydFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0
aW5nLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OkRlc3Ryb3lTdG9yZUZvclRl
c3RpbmcKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjYWU0ZTRmZjU4Y2I2MWY1NWY1YjUxOTViYTVlM2Qw
YmE4ZGJkZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclBy
b3h5LmNwcApAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oIgorCisj
aW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRFbmNvZGVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2Ug
UENNIHsKKwordGVtcGxhdGU8TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5cGVuYW1lLi4uIEFy
Z3M+Cit2b2lkIHNlbmRNZXNzYWdlKEFyZ3MmJi4uLiBhcmdzKQoreworICAgIEVuY29kZXIgZW5j
b2RlcjsKKyAgICBlbmNvZGVyLmVuY29kZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwor
ICAgIENvbm5lY3Rpb246OmNvbm5lY3Rpb25Ub0RhZW1vbigpLnNlbmQobWVzc2FnZVR5cGUsIGVu
Y29kZXIudGFrZUJ1ZmZlcigpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3Ry
dWN0IFJlcGx5Q2FsbGVyOwordGVtcGxhdGU8PiBzdHJ1Y3QgUmVwbHlDYWxsZXI8PiB7CisgICAg
c3RhdGljIHZvaWQgY2FsbFJlcGx5KERlY29kZXImJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworICAgIH0KK307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjxTdHJp
bmc+IHsKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGVjb2RlciYmIGRlY29kZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHN0cmluZzsKKyAgICAgICAgZGVjb2RlciA+
PiBzdHJpbmc7CisgICAgICAgIGlmICghc3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoKnN0
cmluZykpOworICAgIH0KK307CisKK3RlbXBsYXRlPE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0
eXBlbmFtZS4uLiBBcmdzLCB0eXBlbmFtZS4uLiBSZXBseUFyZ3M+Cit2b2lkIHNlbmRNZXNzYWdl
V2l0aFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVwbHlBcmdzLi4uKT4mJiBjb21wbGV0
aW9uSGFuZGxlciwgQXJncyYmLi4uIGFyZ3MpCit7CisgICAgRW5jb2RlciBlbmNvZGVyOworICAg
IGVuY29kZXIuZW5jb2RlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgQ29ubmVj
dGlvbjo6Y29ubmVjdGlvblRvRGFlbW9uKCkuc2VuZFdpdGhSZXBseShtZXNzYWdlVHlwZSwgZW5j
b2Rlci50YWtlQnVmZmVyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoYXV0byByZXBseUJ1ZmZlcikgbXV0YWJsZSB7CisgICAgICAgIERlY29kZXIg
ZGVjb2RlcihXVEZNb3ZlKHJlcGx5QnVmZmVyKSk7CisgICAgICAgIFJlcGx5Q2FsbGVyPFJlcGx5
QXJncy4uLj46OmNhbGxSZXBseShXVEZNb3ZlKGRlY29kZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpzdG9yZVVuYXR0cmli
dXRlZChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIHBjbSkKK3sKKyAgICBzZW5k
TWVzc2FnZTxNZXNzYWdlVHlwZTo6U3RvcmVVbmF0dHJpYnV0ZWQ+KHBjbSk7Cit9CisKK3ZvaWQg
TWFuYWdlclByb3h5OjpoYW5kbGVBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIHRyaWdnZXJEYXRhLCBjb25zdCBVUkwm
IHJlcXVlc3RVUkwsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVkaXJlY3REb21haW4s
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCkKK3sKKyAgICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlw
ZTo6SGFuZGxlQXR0cmlidXRpb24+KHRyaWdnZXJEYXRhLCByZXF1ZXN0VVJMLCByZWRpcmVjdERv
bWFpbiwgZmlyc3RQYXJ0eVVSTCk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpjbGVhcihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZE1l
c3NhZ2VXaXRoUmVwbHk8TWVzc2FnZVR5cGU6OkNsZWFyPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWlu
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kTWVzc2FnZVdpdGhS
ZXBseTxNZXNzYWdlVHlwZTo6Q2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbj4oV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIGRvbWFpbik7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjptaWdyYXRl
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZShXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCYmIHBjbSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlv
blR5cGUgdHlwZSkKK3sKKyAgICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlwZTo6TWlncmF0ZVByaXZh
dGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2U+KHBjbSwgdHlwZSk7Cit9CisKK3Zv
aWQgTWFuYWdlclByb3h5Ojp0b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIHNlbmRNZXNzYWdl
V2l0aFJlcGx5PE1lc3NhZ2VUeXBlOjpUb1N0cmluZ0ZvclRlc3Rpbmc+KFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OnNldE92ZXJyaWRlVGltZXJG
b3JUZXN0aW5nKGJvb2wgdmFsdWUpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlNl
dE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nPih2YWx1ZSk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5
OjpzZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJMJiYgdXJsKQoreworICAgIHNlbmRN
ZXNzYWdlPE1lc3NhZ2VUeXBlOjpTZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3Rpbmc+KHVybCk7
Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpzZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmco
VVJMJiYgdXJsKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpTZXRUb2tlblNpZ25h
dHVyZVVSTEZvclRlc3Rpbmc+KHVybCk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpzZXRBdHRy
aWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVSTCYmIHNvdXJjZVVSTCwgVVJMJiYgZGVzdGlu
YXRpb25VUkwpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlNldEF0dHJpYnV0aW9u
UmVwb3J0VVJMc0ZvclRlc3Rpbmc+KHNvdXJjZVVSTCwgZGVzdGluYXRpb25VUkwpOworfQorCit2
b2lkIE1hbmFnZXJQcm94eTo6bWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3Rpbmco
KQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpNYXJrQWxsVW5hdHRyaWJ1dGVkQXNF
eHBpcmVkRm9yVGVzdGluZz4oKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6Om1hcmtBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZE1lc3NhZ2VX
aXRoUmVwbHk8TWVzc2FnZVR5cGU6Ok1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRzQXNFeHBpcmVkRm9yVGVzdGluZz4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQor
Cit2b2lkIE1hbmFnZXJQcm94eTo6c2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nKGJv
b2wgdmFsdWUpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlNldEVwaGVtZXJhbE1l
YXN1cmVtZW50Rm9yVGVzdGluZz4odmFsdWUpOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6c2V0
UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhTdHJpbmcmJiB1bmxpbmthYmxlVG9r
ZW4sIFN0cmluZyYmIHNlY3JldFRva2VuLCBTdHJpbmcmJiBzaWduYXR1cmUsIFN0cmluZyYmIGtl
eUlEKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpTZXRQQ01GcmF1ZFByZXZlbnRp
b25WYWx1ZXNGb3JUZXN0aW5nPih1bmxpbmthYmxlVG9rZW4sIHNlY3JldFRva2VuLCBzaWduYXR1
cmUsIGtleUlEKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OnN0YXJ0VGltZXJJbW1lZGlhdGVs
eUZvclRlc3RpbmcoKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpTdGFydFRpbWVy
SW1tZWRpYXRlbHlGb3JUZXN0aW5nPigpOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6ZGVzdHJv
eVN0b3JlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZVR5cGU6OkRlc3Ryb3lT
dG9yZUZvclRlc3Rpbmc+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQ
cm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhjZDQxMTk5NGI0YjA2ZjBmNmI1ZDk5MTVmMmYyY2RmYWNhOTZl
NmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmgK
QEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgiCisjaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00gewor
CitjbGFzcyBNYW5hZ2VyUHJveHkgOiBwdWJsaWMgTWFuYWdlckludGVyZmFjZSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdm9pZCBzdG9yZVVuYXR0cmlidXRl
ZChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmKSBmaW5hbDsKKyAgICB2b2lkIGhh
bmRsZUF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhJiYsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiByZWRpcmVjdERvbWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJMKSBm
aW5hbDsKKyAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7
CisgICAgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2
b2lkIG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UeXBlKSBmaW5hbDsKKworICAgIHZvaWQgdG9TdHJpbmdGb3JUZXN0aW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJikgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRP
dmVycmlkZVRpbWVyRm9yVGVzdGluZyhib29sKSBmaW5hbDsKKyAgICB2b2lkIHNldFRva2VuUHVi
bGljS2V5VVJMRm9yVGVzdGluZyhVUkwmJikgZmluYWw7CisgICAgdm9pZCBzZXRUb2tlblNpZ25h
dHVyZVVSTEZvclRlc3RpbmcoVVJMJiYpIGZpbmFsOworICAgIHZvaWQgc2V0QXR0cmlidXRpb25S
ZXBvcnRVUkxzRm9yVGVzdGluZyhVUkwmJiBzb3VyY2VVUkwsIFVSTCYmIGRlc3RpbmF0aW9uVVJM
KSBmaW5hbDsKKyAgICB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5n
KCkgZmluYWw7CisgICAgdm9pZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsK
KyAgICB2b2lkIHNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyhib29sKSBmaW5hbDsK
KyAgICB2b2lkIHNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoU3RyaW5nJiYg
dW5saW5rYWJsZVRva2VuLCBTdHJpbmcmJiBzZWNyZXRUb2tlbiwgU3RyaW5nJiYgc2lnbmF0dXJl
LCBTdHJpbmcmJiBrZXlJRCkgZmluYWw7CisgICAgdm9pZCBzdGFydFRpbWVySW1tZWRpYXRlbHlG
b3JUZXN0aW5nKCkgZmluYWw7CisgICAgdm9pZCBkZXN0cm95U3RvcmVGb3JUZXN0aW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBQQ00K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWI1ODUwNjY1OGEzZjk1MzVl
ZWZiMWE2MDVhMjU1ZDg3MjQ3NzFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQpAQCAtMCwwICsxLDEwMSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRDb25uZWN0aW9uLmgiCisKKyNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50WFBD
VXRpbGl0aWVzLmgiCisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCitDb25uZWN0aW9uOjpDb25uZWN0aW9uKE9T
T2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+JiYgY29ubmVjdGlvbikKKyAgICA6IG1fY29ubmVj
dGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKSB7IH0KKworQ29ubmVjdGlvbiBDb25uZWN0aW9uOjpj
b25uZWN0aW9uVG9EYWVtb24oKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+PiBj
b25uZWN0aW9uOworICAgIGlmICghY29ubmVjdGlvbi5nZXQoKSkgeworICAgICAgICBjb25uZWN0
aW9uLmdldCgpID0gYWRvcHRPU09iamVjdCh4cGNfY29ubmVjdGlvbl9jcmVhdGVfbWFjaF9zZXJ2
aWNlKCJjb20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiLCBkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCAwKSk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9o
YW5kbGVyKGNvbm5lY3Rpb24uZ2V0KCkuZ2V0KCksIF4oeHBjX29iamVjdF90IGV2ZW50KSB7Cisg
ICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICAgICAgaWYgKGV2
ZW50ID09IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVEVSUlVQVEVEKSB7CisgICAgICAgICAgICAg
ICAgLy8gRGFlbW9uIGNyYXNoZWQsIHdlIHdpbGwgbmVlZCB0byBtYWtlIGEgbmV3IGNvbm5lY3Rp
b24gdG8gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGRhZW1vbi4KKyAgICAgICAgICAgICAgICBjb25u
ZWN0aW9uLmdldCgpID0gbnVsbHB0cjsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9KTsKKyAgICAgICAgeHBjX2Nvbm5l
Y3Rpb25fYWN0aXZhdGUoY29ubmVjdGlvbi5nZXQoKS5nZXQoKSk7CisgICAgfQorICAgIHJldHVy
biBDb25uZWN0aW9uKE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+KGNvbm5lY3Rpb24uZ2V0
KCkpKTsKK30KKworc3RhdGljIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gZGljdGlvbmFyeUZy
b21NZXNzYWdlKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmIG1lc3Nh
Z2UpCit7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFy
eV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgIGFkZFZlcnNpb25BbmRFbmNvZGVk
TWVzc2FnZVRvRGljdGlvbmFyeShXVEZNb3ZlKG1lc3NhZ2UpLCBkaWN0aW9uYXJ5LmdldCgpKTsK
KyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRpY3Rpb25hcnkuZ2V0KCksIHByb3RvY29s
TWVzc2FnZVR5cGVLZXksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihtZXNzYWdlVHlwZSkpOworICAg
IHJldHVybiBkaWN0aW9uYXJ5OworfQorCit2b2lkIENvbm5lY3Rpb246OnNlbmQoTWVzc2FnZVR5
cGUgbWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYgbWVzc2FnZSkKK3sKKyAgICBpZiAoIW1f
Y29ubmVjdGlvbikgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShtX2Nvbm5lY3Rp
b24uZ2V0KCksIGRpY3Rpb25hcnlGcm9tTWVzc2FnZShtZXNzYWdlVHlwZSwgV1RGTW92ZShtZXNz
YWdlKSkuZ2V0KCkpOworfQorCit2b2lkIENvbm5lY3Rpb246OnNlbmRXaXRoUmVwbHkoTWVzc2Fn
ZVR5cGUgbWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBpZiAoIW1fY29ubmVjdGlvbikgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgfQorCisgICAgYXV0byBk
aWN0aW9uYXJ5ID0gZGljdGlvbmFyeUZyb21NZXNzYWdlKG1lc3NhZ2VUeXBlLCBXVEZNb3ZlKG1l
c3NhZ2UpKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2Vfd2l0aF9yZXBseShtX2Nv
bm5lY3Rpb24uZ2V0KCksIGRpY3Rpb25hcnkuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKHhwY19vYmplY3RfdCByZXBseSkgbXV0YWJsZSB7CisgICAgICAgIGlmICh4cGNf
Z2V0X3R5cGUocmVwbHkpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpIHsKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQo
cmVwbHksIHByb3RvY29sVmVyc2lvbktleSkgIT0gcHJvdG9jb2xWZXJzaW9uVmFsdWUpIHsKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIH0KKyAgICAgICAgc2l6ZV90IGRhdGFTaXplIHsg
MCB9OworICAgICAgICBjb25zdCB2b2lkKiBkYXRhID0geHBjX2RpY3Rpb25hcnlfZ2V0X2RhdGEo
cmVwbHksIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksICZkYXRhU2l6ZSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBkYXRh
U2l6ZSB9KTsKKyAgICB9KS5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRO
ZXR3b3JrTG9hZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xv
YWRlckNvY29hLm1tCmluZGV4IGQ2YmYwNmUxMTFmNmJiNWY3ZWYyOGYxOTZkMmVlMzgwMGM3Yzhh
NGMuLmIzYmExZTI0MjQyMDhlNzU0MThjMjcyZTZiNjU0MDczNDAzNmQ2NDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29j
b2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbQpAQCAtNTcsNiArNTcs
NyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUENNUmVxdWVzdChXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQsCiAKIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxT
ZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Npb25UYXNrICopdGFzayBkaWRSZWNlaXZl
Q2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyAgICAvLyBGSVhNRTogQWRkIHBsdWJtaW5nIHNvIHRoYXQgd2UgY2FuIHRlbGwg
dGhlIGRhZW1vbiB3aGljaCBjZXJ0aWZpY2F0ZXMgdG8gYWNjZXB0IHdpdGhvdXQgdXNpbmcgTmV0
d29ya1Nlc3Npb25Db2NvYS4KICAgICBpZiAoW2NoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0
aGVudGljYXRpb25NZXRob2QgaXNFcXVhbFRvU3RyaW5nOk5TVVJMQXV0aGVudGljYXRpb25NZXRo
b2RTZXJ2ZXJUcnVzdF0KICAgICAgICAgJiYgTmV0d29ya1Nlc3Npb25Db2NvYTo6YWxsb3dzU3Bl
Y2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWws
IFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2Uuc2VydmVyVHJ1c3RdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRYUENVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iYzcwNzg2ZWYxNTk4YzgzZmE0MzYyZGYzZDZjN2ZlNzc4M2UxMjFjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5o
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCit2b2lkIGFkZFZlcnNpb25BbmRFbmNvZGVk
TWVzc2FnZVRvRGljdGlvbmFyeShWZWN0b3I8dWludDhfdD4mJiwgeHBjX29iamVjdF90KTsKKwor
fSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2Nv
YS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTYzMDMxYjVjMzZiNzEyNjE4
MjE3MDQzZmY5N2RmZjk0NzRjNWQyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0KQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENV
dGlsaXRpZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCit2
b2lkIGFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2FnZVRvRGljdGlvbmFyeShWZWN0b3I8dWludDhf
dD4mJiBtZXNzYWdlLCB4cGNfb2JqZWN0X3QgZGljdGlvbmFyeSkKK3sKKyAgICBBU1NFUlQoeHBj
X2dldF90eXBlKGRpY3Rpb25hcnkpID09IFhQQ19UWVBFX0RJQ1RJT05BUlkpOworICAgIHhwY19k
aWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFyeSwgUENNOjpwcm90b2NvbFZlcnNpb25LZXks
IFBDTTo6cHJvdG9jb2xWZXJzaW9uVmFsdWUpOworCisgICAgYXV0byBidWZmZXJTaXplID0gbWVz
c2FnZS5zaXplKCk7CisgICAgYXV0byByYXdQb2ludGVyID0gbWVzc2FnZS5yZWxlYXNlQnVmZmVy
KCkubGVha1B0cigpOworICAgIGF1dG8gZGlzcGF0Y2hEYXRhID0gYWRvcHROUyhkaXNwYXRjaF9k
YXRhX2NyZWF0ZShyYXdQb2ludGVyLCBidWZmZXJTaXplLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeeworICAgICAgICBmYXN0RnJlZShyYXdQb2ludGVyKTsKKyAgICB9KSk7CisgICAgYXV0
byB4cGNEYXRhID0gYWRvcHRPU09iamVjdCh4cGNfZGF0YV9jcmVhdGVfd2l0aF9kaXNwYXRjaF9k
YXRhKGRpc3BhdGNoRGF0YS5nZXQoKSkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShk
aWN0aW9uYXJ5LCBQQ006OnByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksIHhwY0RhdGEuZ2V0KCkp
OworCit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJL
aXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21h
Yy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCmluZGV4IDNiOTc5NDU1MDc5
ZTQ1NmUzNTQ5M2UxZTFlNWNhNDZiOWQ3ZTg4ZWQuLjE5NzRiOGU5ZjI1OWFlZWZjOTQ0NjQ2ODRi
MjA0ZDM1MGYzOGQ0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
bWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5z
Yi5pbgpAQCAtMzU3LDYgKzM1Nyw4IEBACiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuQXBw
U1NPLnNlcnZpY2UteHBjIikKICkKIAorKGFsbG93IG1hY2gtbG9va3VwIChnbG9iYWwtbmFtZSAi
Y29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIikpCisKICh3aXRoLWZpbHRl
ciAodWlkIDApCiAgICAgKGFsbG93IG1hY2gtbG9va3VwCiAgICAgICAgIChnbG9iYWwtbmFtZSAi
Y29tLmFwcGxlLkRpc2tBcmJpdHJhdGlvbi5kaXNrYXJiaXRyYXRpb25kIikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAppbmRleCBiY2Y3Y2QxNjNkOWJhOTIzZDE4
MGEwM2Y4YTZlZTQ1MGY3NmMxYTFkLi41MzNlODA5NzA1NDA1NWI4MWE2YzVlYTEwOTgxYzViNGQ0
MDI4NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCkBA
IC00OCw2ICs0OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9pZD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXIgewogICAgICAgICB0LmVuY29kZShlbmNvZGVyKTsKICAgICB9CiAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFQ+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAgaWYgY29uc3RleHBy
KEhhc01vZGVybkRlY29kZXJWPFQ+KQpAQCAtODIsNiArODMsNyBAQCBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpY192PFQ+
Pj4gewogICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YoVCksIGFsaWdub2YoVCkpOwogICAg
IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAgICBUIHJlc3Vs
dDsKQEAgLTEwMCw2ICsxMDIsNyBAQCBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxULCB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bV92PFQ+Pj4gewogICAgICAgICBlbmNvZGVyIDw8
IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGU8VD4odmFsdWUpOwogICAgIH0KIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIERlY29kZXI+CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VD4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6dW5k
ZXJseWluZ190eXBlX3Q8VD4+IHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDgxMGVlMmNlNTFmMjdjMmRiZDYwN2U1MzJhYTI2ZDYw
NTY5YWIyOWIuLmZmZjllNWUzZjZiM2UyZWQ1NmI1NjYxZTAzMjc0OWVlNjMyMzZkNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKQEAgLTI3LDE2
ICsyNywyMyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAKICNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmgi
CisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmgiCiAjaW5jbHVkZSAi
U3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogdm9pZCBBcmd1bWVudENvZGVyPFdhbGxUaW1lPjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdhbGxUaW1lJiB0aW1lKQogewogICAgIGVu
Y29kZXIgPDwgdGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCk7CiB9Cit0ZW1wbGF0ZQor
dm9pZCBBcmd1bWVudENvZGVyPFdhbGxUaW1lPjo6ZW5jb2RlPEVuY29kZXI+KEVuY29kZXImLCBj
b25zdCBXYWxsVGltZSYpOwordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxXYWxsVGltZT46
OmVuY29kZTxXZWJLaXQ6OlBDTTo6RW5jb2Rlcj4oV2ViS2l0OjpQQ006OkVuY29kZXImLCBjb25z
dCBXYWxsVGltZSYpOwogCiBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBBcmd1bWVudENvZGVyPFdh
bGxUaW1lPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdhbGxUaW1lJiB0aW1lKQogewpAQCAt
NDgsNiArNTUsNyBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBBcmd1bWVudENvZGVyPFdhbGxU
aW1lPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdhbGxUaQogICAgIHJldHVybiB0cnVlOwog
fQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6
b3B0aW9uYWw8V2FsbFRpbWU+IEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdGltZTsKQEAgLTU2LDYg
KzY0LDEwIEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBBcmd1
bWVudENvZGVyPFdhbGxUaW1lPjo6ZGVjb2RlKERlY29kCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcygqdGltZSk7CiB9Cit0
ZW1wbGF0ZQorc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gQXJndW1lbnRDb2RlcjxXYWxsVGltZT46
OmRlY29kZTxEZWNvZGVyPihEZWNvZGVyJik7Cit0ZW1wbGF0ZQorc3RkOjpvcHRpb25hbDxXYWxs
VGltZT4gQXJndW1lbnRDb2RlcjxXYWxsVGltZT46OmRlY29kZTxXZWJLaXQ6OlBDTTo6RGVjb2Rl
cj4oV2ViS2l0OjpQQ006OkRlY29kZXImKTsKIAogdm9pZCBBcmd1bWVudENvZGVyPEF0b21TdHJp
bmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXRvbVN0cmluZyYgYXRvbVN0cmlu
ZykKIHsKQEAgLTEzMywxMiArMTQ1LDE0IEBAIHRlbXBsYXRlCiB2b2lkIEFyZ3VtZW50Q29kZXI8
U3RyaW5nPjo6ZW5jb2RlPEVuY29kZXI+KEVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKIHRlbXBs
YXRlCiB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlPFN0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyPihTdHJlYW1Db25uZWN0aW9uRW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwordGVtcGxh
dGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGU8V2ViS2l0OjpQQ006OkVuY29k
ZXI+KFdlYktpdDo6UENNOjpFbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwg
dHlwZW5hbWUgRGVjb2Rlcj4KIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRl
Y29kZVN0cmluZ1RleHQoRGVjb2RlciYgZGVjb2RlciwgdWludDMyX3QgbGVuZ3RoKQogewogICAg
IC8vIEJlZm9yZSBhbGxvY2F0aW5nIHRoZSBzdHJpbmcsIG1ha2Ugc3VyZSB0aGF0IHRoZSBkZWNv
ZGVyIGJ1ZmZlciBpcyBiaWcgZW5vdWdoLgotICAgIGlmICghZGVjb2Rlci5idWZmZXJJc0xhcmdl
RW5vdWdoVG9Db250YWluPENoYXJhY3RlclR5cGU+KGxlbmd0aCkpCisgICAgaWYgKCFkZWNvZGVy
LnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48Q2hhcmFjdGVyVHlwZT4obGVu
Z3RoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBDaGFyYWN0ZXJU
eXBlKiBidWZmZXI7CkBAIC0xNDksMjUgKzE2MywzMiBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJpbmdUZXh0KERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90
CiAgICAgcmV0dXJuIHN0cmluZzsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KIFdB
Uk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQXJndW1lbnRDb2RlcjxTdHJp
bmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICB1aW50MzJfdCBsZW5ndGg7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShsZW5ndGgpKQorICAgIHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGxlbmd0aDsKKyAgICBkZWNvZGVyID4+IGxlbmd0aDsKKyAgICBpZiAoIWxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBpZiAobGVuZ3RoID09IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkgeworICAgIGlmICgqbGVuZ3RoID09IHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkgewogICAgICAgICAvLyBUaGlzIGlz
IHRoZSBudWxsIHN0cmluZy4KICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KICAgICAK
LSAgICBib29sIGlzOEJpdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzOEJpdCkpCisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBpczhCaXQ7CisgICAgZGVjb2RlciA+PiBpczhCaXQ7CisgICAg
aWYgKCFpczhCaXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgaWYg
KGlzOEJpdCkKLSAgICAgICAgcmV0dXJuIGRlY29kZVN0cmluZ1RleHQ8TENoYXI+KGRlY29kZXIs
IGxlbmd0aCk7Ci0gICAgcmV0dXJuIGRlY29kZVN0cmluZ1RleHQ8VUNoYXI+KGRlY29kZXIsIGxl
bmd0aCk7CisgICAgaWYgKCppczhCaXQpCisgICAgICAgIHJldHVybiBkZWNvZGVTdHJpbmdUZXh0
PExDaGFyPihkZWNvZGVyLCAqbGVuZ3RoKTsKKyAgICByZXR1cm4gZGVjb2RlU3RyaW5nVGV4dDxV
Q2hhcj4oZGVjb2RlciwgKmxlbmd0aCk7CiB9Cit0ZW1wbGF0ZQorc3RkOjpvcHRpb25hbDxTdHJp
bmc+IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2RlPERlY29kZXI+KERlY29kZXImKTsKK3Rl
bXBsYXRlCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNv
ZGU8V2ViS2l0OjpQQ006OkRlY29kZXI+KFdlYktpdDo6UENNOjpEZWNvZGVyJik7CiAKIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFN0cmluZyYgcmVzdWx0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggYzk3YTZmNTc2ZWZkYWVhZTA0ZjY5ODNiZTI1OTQyY2Uy
MDM5ZmU5Zi4uYjE4MmM1NGViNzg4ZDNkNjk4MTRhYTgwNzNlNGZmMWFhOWYzOTJiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC0zMDAsNiArMzAw
LDcgQEAgYXV0byB0dXBsZUZyb21UdXBsZUFuZE9iamVjdChUJiYgb2JqZWN0LCBzdGQ6OnR1cGxl
PEVsZW1lbnRzLi4uPiYmIHR1cGxlKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlLCB0eXBlbmFt
ZS4uLiBUeXBlcz4KIHN0cnVjdCBUdXBsZURlY29kZXJJbXBsIHsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8VHlwZSwg
VHlwZXMuLi4+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8VHlwZT4gb3B0aW9uYWw7CkBAIC0zMTcsNiArMzE4LDcgQEAgc3RydWN0IFR1cGxl
RGVjb2RlckltcGwgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogc3RydWN0IFR1cGxlRGVj
b2RlckltcGw8VHlwZT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxUeXBlPj4gZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFR5cGU+IG9wdGlvbmFsOwpAQCAtMzI5
LDYgKzMzMSw3IEBAIHN0cnVjdCBUdXBsZURlY29kZXJJbXBsPFR5cGU+IHsKIAogdGVtcGxhdGU8
c2l6ZV90IHNpemUsIHR5cGVuYW1lLi4uIEVsZW1lbnRzPgogc3RydWN0IFR1cGxlRGVjb2RlciB7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
ewogICAgICAgICByZXR1cm4gVHVwbGVEZWNvZGVySW1wbDxFbGVtZW50cy4uLj46OmRlY29kZShk
ZWNvZGVyKTsKQEAgLTMzNyw2ICszNDAsNyBAQCBzdHJ1Y3QgVHVwbGVEZWNvZGVyIHsKIAogdGVt
cGxhdGU8Pgogc3RydWN0IFR1cGxlRGVjb2RlcjwwPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RGVjb2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPD4+IGRlY29kZShE
ZWNvZGVyJikKICAgICB7CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoKTsKQEAgLTM1
MCw2ICszNTQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBFbGVtZW50cz4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8c3RkOjp0dXBsZTxFbGVtZW50cy4uLj4+IHsKICAgICAgICAgVHVwbGVFbmNvZGVy
PHNpemVvZi4uLihFbGVtZW50cyksIEVsZW1lbnRzLi4uPjo6ZW5jb2RlKGVuY29kZXIsIHR1cGxl
KTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+PiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKICAgICB7CiAgICAgICAgIHJldHVybiBUdXBsZURlY29kZXI8c2l6ZW9mLi4uKEVsZW1l
bnRzKSwgRWxlbWVudHMuLi4+OjpkZWNvZGUoZGVjb2Rlcik7CkBAIC03MjEsOCArNzI2LDEwIEBA
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIFR5cGVzPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXVEY6OlZh
cmlhbnQ8VHlwZXMuLi4+PiB7CiB9OwogICAgIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXYWxsVGltZT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXYWxsVGltZSYpOwogICAgIHN0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdhbGxUaW1lJik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXYWxs
VGltZT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKQEAgLTc0MCw2ICs3NDcsNyBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFN0cmluZz4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBTdHJpbmcm
KTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBT
dHJpbmcmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS01haW4uaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9Db2NvYS9XS01haW4uaAppbmRleCA3YTkyN2M3N2QyNmQ4NTViNGI2ZmVhZGE5ODAz
YTA0N2NlZThiNWMzLi40YmU3OWQyYTViZDBlNzA0ZjlhM2JjNDgzYjJkMjU4Y2Q0OGVkYjhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tNYWluLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLTWFpbi5oCkBAIC0zMyw2ICszMyw3IEBA
IGV4dGVybiAiQyIgewogI2VuZGlmCiAKIFdLX0VYUE9SVCBpbnQgV0tYUENTZXJ2aWNlTWFpbihp
bnQgYXJnYywgY29uc3QgY2hhcioqIGFyZ3YpIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUp
LCBpb3MoMTMuMCkpOworV0tfRVhQT1JUIGludCBXS1BDTURhZW1vbk1haW4oaW50IGFyZ2MsIGNv
bnN0IGNoYXIqKiBhcmd2KSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS01haW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV0tNYWluLm1tCmluZGV4IGU0ODA1YTQ4ZDUxNDA2YWQ1OTU2NmIzNzdiZTI1
Mzk4MmE5YWViOTAuLjQ2ODAxZGJmZmNlNmI4MjZjZDEwZGNhYWRhMzMwZDZmNWZkZjE4YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS01haW4ubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLTWFpbi5tbQpAQCAtMjYsOSArMjYsMTUg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tNYWluLmgiCiAKKyNpbXBvcnQgIlBD
TURhZW1vbkVudHJ5UG9pbnQuaCIKICNpbXBvcnQgIlhQQ1NlcnZpY2VFbnRyeVBvaW50LmgiCiAK
IGludCBXS1hQQ1NlcnZpY2VNYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiogYXJndikKIHsKICAg
ICByZXR1cm4gV2ViS2l0OjpYUENTZXJ2aWNlTWFpbihhcmdjLCBhcmd2KTsKIH0KKworaW50IFdL
UENNRGFlbW9uTWFpbihpbnQgYXJnYywgY29uc3QgY2hhcioqIGFyZ3YpCit7CisgICAgcmV0dXJu
IFdlYktpdDo6UENNRGFlbW9uTWFpbihhcmdjLCBhcmd2KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1v
bkVudHJ5UG9pbnQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMv
Q29jb2EvRGFlbW9uL1BDTURhZW1vbkVudHJ5UG9pbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OGM5MTIwYmY1
Y2NiYzE3MWY5YTVjZDllZDEyZTdjZDAzOTZlMzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9u
RW50cnlQb2ludC5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2ludCBQQ01EYWVtb25NYWluKGludCwgY29uc3QgY2hh
cioqKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBv
aW50Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9E
YWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjIzMjFkZTViMTljMWMx
Njc0OWJmZDZhNjM0NjRmODRlZDUyNDU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQ
b2ludC5tbQpAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiUENNRGFlbW9uRW50cnlQb2ludC5oIgorCisjaW1wb3J0ICJQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKyNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlckludGVyZmFjZS5oIgorI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRY
UENVdGlsaXRpZXMuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9y
dCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgorI2lt
cG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Cisj
aW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5o
PgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisKKy8vIEZJWE1FOiBBZGQgZGFl
bW9uIHBsaXN0IHRvIHJlcG9zaXRvcnkuCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMg
SGFzaFNldDxSZXRhaW5QdHI8eHBjX2Nvbm5lY3Rpb25fdD4+JiBwZWVycygpCit7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNl
dDxSZXRhaW5QdHI8eHBjX2Nvbm5lY3Rpb25fdD4+PiBzZXQ7CisgICAgcmV0dXJuIHNldC5nZXQo
KTsKK30KKworc3RhdGljIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUENNOjpFbmNvZGVkTWVzc2Fn
ZSYmKT4gcmVwbHlTZW5kZXIoUENNOjpNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgT1NPYmplY3RQ
dHI8eHBjX29iamVjdF90PiYmIHJlcXVlc3QpCit7CisgICAgaWYgKCFQQ006Om1lc3NhZ2VUeXBl
U2VuZHNSZXBseShtZXNzYWdlVHlwZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiBbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCldIChQQ006OkVuY29kZWRNZXNzYWdlJiYg
bWVzc2FnZSkgeworICAgICAgICBhdXRvIHJlcGx5ID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlv
bmFyeV9jcmVhdGVfcmVwbHkocmVxdWVzdC5nZXQoKSkpOworICAgICAgICBQQ006OmFkZFZlcnNp
b25BbmRFbmNvZGVkTWVzc2FnZVRvRGljdGlvbmFyeShXVEZNb3ZlKG1lc3NhZ2UpLCByZXBseS5n
ZXQoKSk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZSh4cGNfZGljdGlvbmFy
eV9nZXRfcmVtb3RlX2Nvbm5lY3Rpb24ocmVxdWVzdC5nZXQoKSksIHJlcGx5LmdldCgpKTsKKyAg
ICB9OworfQorCitzdGF0aWMgdm9pZCBjb25uZWN0aW9uRXZlbnRIYW5kbGVyKHhwY19vYmplY3Rf
dCByZXF1ZXN0KQoreworICAgIGlmICh4cGNfZ2V0X3R5cGUocmVxdWVzdCkgIT0gWFBDX1RZUEVf
RElDVElPTkFSWSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICh4cGNfZGljdGlvbmFyeV9nZXRf
dWludDY0KHJlcXVlc3QsIFBDTTo6cHJvdG9jb2xWZXJzaW9uS2V5KSAhPSBQQ006OnByb3RvY29s
VmVyc2lvblZhbHVlKSB7CisgICAgICAgIE5TTG9nKEAicmVjZWl2ZWQgcmVxdWVzdCB0aGF0IHdh
cyBub3QgdGhlIGN1cnJlbnQgcHJvdG9jb2wgdmVyc2lvbiIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYXV0byBtZXNzYWdlVHlwZSB7IHN0YXRpY19jYXN0PFBDTTo6TWVzc2FnZVR5
cGU+KHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgUENNOjpwcm90b2NvbE1lc3Nh
Z2VUeXBlS2V5KSkgfTsKKyAgICBzaXplX3QgZGF0YVNpemUgeyAwIH07CisgICAgY29uc3Qgdm9p
ZCogZGF0YSA9IHhwY19kaWN0aW9uYXJ5X2dldF9kYXRhKHJlcXVlc3QsIFBDTTo6cHJvdG9jb2xF
bmNvZGVkTWVzc2FnZUtleSwgJmRhdGFTaXplKTsKKyAgICBQQ006OkVuY29kZWRNZXNzYWdlIGVu
Y29kZWRNZXNzYWdlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBkYXRhU2l6
ZSB9OworICAgIGRlY29kZU1lc3NhZ2VBbmRTZW5kVG9NYW5hZ2VyKG1lc3NhZ2VUeXBlLCBXVEZN
b3ZlKGVuY29kZWRNZXNzYWdlKSwgcmVwbHlTZW5kZXIobWVzc2FnZVR5cGUsIHJlcXVlc3QpKTsK
K30KKworc3RhdGljIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JNYWNoU2VydmljZUNvbm5lY3Rpb25z
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rp
b25fdD4+IGxpc3RlbmVyID0geHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZSgiY29t
LmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIiwgZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgWFBDX0NPTk5FQ1RJT05fTUFDSF9TRVJWSUNFX0xJU1RFTkVSKTsKKyAgICB4cGNf
Y29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihsaXN0ZW5lci5nZXQoKS5nZXQoKSwgXih4cGNf
b2JqZWN0X3QgcGVlcikgeworICAgICAgICBpZiAoeHBjX2dldF90eXBlKHBlZXIpICE9IFhQQ19U
WVBFX0NPTk5FQ1RJT04pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gRklYTUU6
IEFkZCBhbiBlbnRpdGxlbWVudCBjaGVjayBoZXJlIHNvIHRoYXQgb25seSB0aGUgbmV0d29yayBw
cm9jZXNzIGNhbiBzdWNjZXNzZnVsbHkgY29ubmVjdC4KKworICAgICAgICB4cGNfY29ubmVjdGlv
bl9zZXRfZXZlbnRfaGFuZGxlcihwZWVyLCBeKHhwY19vYmplY3RfdCBldmVudCkgeworICAgICAg
ICAgICAgaWYgKGV2ZW50ID09IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVEVSUlVQVEVEKSB7Cisg
ICAgICAgICAgICAgICAgcGVlcnMoKS5yZW1vdmUocGVlcik7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29ubmVjdGlvbkV2ZW50SGFuZGxlcihl
dmVudCk7CisgICAgICAgIH0pOworICAgICAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1
ZXVlKHBlZXIsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOworICAgICAgICB4cGNfY29ubmVj
dGlvbl9hY3RpdmF0ZShwZWVyKTsKKyAgICAgICAgCisgICAgICAgIHBlZXJzKCkuYWRkKHBlZXIp
OworICAgIH0pOworICAgIHhwY19jb25uZWN0aW9uX2FjdGl2YXRlKGxpc3RlbmVyLmdldCgpLmdl
dCgpKTsKK30KKworc3RhdGljIHZvaWQgcmVnaXN0ZXJTY2hlZHVsZWRBY3Rpdml0eUhhbmRsZXIo
KQoreworICAgIHhwY19hY3Rpdml0eV9yZWdpc3RlcigiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJp
YnV0aW9uZC5hY3Rpdml0eSIsIFhQQ19BQ1RJVklUWV9DSEVDS19JTiwgXih4cGNfYWN0aXZpdHlf
dCBhY3Rpdml0eSkgeworICAgICAgICBpZiAoeHBjX2FjdGl2aXR5X2dldF9zdGF0ZShhY3Rpdml0
eSkgPT0gWFBDX0FDVElWSVRZX1NUQVRFX0NIRUNLX0lOKSB7CisgICAgICAgICAgICB4cGNfb2Jq
ZWN0X3QgY3JpdGVyaWEgPSB4cGNfYWN0aXZpdHlfY29weV9jcml0ZXJpYShhY3Rpdml0eSk7CisK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBzZXQgdmFsdWVzIGhlcmUgdGhhdCBhbGlnbiB3aXRoIHZh
bHVlcyBmcm9tIHRoZSBwbGlzdC4KKworICAgICAgICAgICAgeHBjX2FjdGl2aXR5X3NldF9jcml0
ZXJpYShhY3Rpdml0eSwgY3JpdGVyaWEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgLy8gRklYTUU6IEFkZCBjb2RlIGhlcmUgdGhhdCBkb2VzIGRhaWx5IHRhc2tz
IG9mIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci4KKyAgICB9KTsKK30KKworc3RhdGlj
IHZvaWQgZW50ZXJTYW5kYm94KCkKK3sKKyAgICAvLyBGSVhNRTogRW50ZXIgYSBzYW5kYm94IGhl
cmUuIFdlIHNob3VsZCBvbmx5IG5lZWQgcmVhZC93cml0ZSBhY2Nlc3MgdG8gb3VyIGRhdGFiYXNl
IGFuZCBuZXR3b3JrIGFjY2VzcyBhbmQgbm90aGluZyBlbHNlLgorfQorCitpbnQgUENNRGFlbW9u
TWFpbihpbnQgYXJnYywgY29uc3QgY2hhcioqIGFyZ3YpCit7CisgICAgaWYgKGFyZ2MgIT0gMiB8
fCBzdHJjbXAoYXJndlsxXSwgInJ1bkFzRGFlbW9uIikpIHsKKyAgICAgICAgTlNMb2coQCJUaGlz
IGV4ZWN1dGFibGUgaXMgaW50ZW5kZWQgdG8gYmUgcnVuIGFzIGEgZGFlbW9uLiIpOworICAgICAg
ICByZXR1cm4gLTE7CisgICAgfQorICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBlbnRl
clNhbmRib3goKTsKKyAgICAgICAgc3RhcnRMaXN0ZW5pbmdGb3JNYWNoU2VydmljZUNvbm5lY3Rp
b25zKCk7CisgICAgICAgIHJlZ2lzdGVyU2NoZWR1bGVkQWN0aXZpdHlIYW5kbGVyKCk7CisgICAg
ICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKyAgICB9CisgICAgQ0ZSdW5Mb29wUnVu
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
aW5kZXggMjQxMmJiZmFkOGU1ZjgxMWI1MWU4MmY2MGQxYzU0NjE5YTIxODgzOS4uY2ZhYmNlMDVi
MjRkMDc4OTgwNmYxNGFhZTkwODcxYWMyMGE4N2RlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0xMDEsOCAr
MTAxLDE0IEBAIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5jcHAKIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCiBOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERl
YnVnSW5mby5jcHAKIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5jcHAK
IE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TmV0d29ya0xvYWRlci5jcHAKIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwCitOZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24u
Y3BwCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAKK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHAKK05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rl
ci5jcHAKK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIEBuby11bmlmeQogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAppbmRleCA4OTEzODM0ZjZiYjVmOTM5ZTcyMGIwOWVmY2IwMmM5NTQ0Zjg0YWFh
Li4xMWU3Mjk2ODRlNGEyYWRmMGI1Y2I4OTNhZDY3OTFkOTAwNTgyNjA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC00MSw3ICs0MSw5IEBAIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2Nv
YS9Eb3dubG9hZENvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL0RhZW1v
bi9EYWVtb25FbnRyeVBvaW50Lm1tCiBOZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQ
Q1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tCiAKK05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9u
Q29ubmVjdGlvbkNvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbQorTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRYUENVdGlsaXRpZXMubW0KIAogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9pb3Mv
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VySU9TLm1tCiAKQEAgLTE5MSw2ICsxOTMsOCBAQCBT
aGFyZWQvQ29jb2EvV0tOU1VSTFJlcXVlc3QubW0KIFNoYXJlZC9Db2NvYS9XS09iamVjdC5tbQog
U2hhcmVkL0NvY29hL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0NvY29hLm1tCiAKK1NoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lm1t
CisKIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vydmlj
ZUVudHJ5UG9pbnQubW0KIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZp
Y2UvWFBDU2VydmljZU1haW4ubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2Y5ZTBkZjU0YmY2OGIyNTAwMWM2Y2MxZDllYmNiNzNh
ZTIxMTczZi4uZjY4YjRjZmI0ODVkNmY4YmYzNjI4ZDA1NmI5ZjNkNzA0MDYyMmU0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjkx
LDYgKzEyOTEsNyBAQAogCQk1Q0I3QUZFMDIzQzUyQ0U1MDBFNDlDRjMgLyogX1dLUmVzb3VyY2VM
b2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDQjdBRkRGMjNDNTJDQkMwMEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDQjdB
RkU3MjNDNjgyMDcwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I3QUZFNjIzQzY4MUIwMDBFNDlDRjMg
LyogUmVzb3VyY2VMb2FkSW5mby5oICovOyB9OwogCQk1Q0I3QUZFODIzQzY5QjYxMDBFNDlDRjMg
LyogX1dLUmVzb3VyY2VMb2FkSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNCN0FGRTMyM0M2N0QzNzAwRTQ5Q0YzIC8qIF9XS1Jlc291cmNlTG9h
ZEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk1Q0I5MzEwOTI2RTg0MzlBMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENV
dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQjkzMTA3MjZFODQxQ0IwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0
aWxpdGllcy5oICovOyB9OwogCQk1Q0JDOUI4RTFDNjUyQ0EwMDBBOEZEQ0YgLyogTmV0d29ya0Rh
dGFUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0JDOUI4OTFDNjUyNEE1MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmggKi87IH07CiAJCTVD
QkQ1OTVDMjI4MEVERjQwMDJCMjJBQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzVEMjM4ODIyN0ExODky
MDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tICovOyB9OwogCQk1Q0QyODY1MTFF
NzIzNTk5MDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3RTdG9yZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNEMjg2NEQxRTcyMkY0NDAwOTRGREM4
IC8qIFdLQ29udGVudFJ1bGVMaXN0U3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQdWJsaWMsICk7IH07IH07CkBAIC00NTU2LDYgKzQ1NTcsMjMgQEAKIAkJNUNCOTMwQzAyNkUw
NTQyRjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dENsaWVudEltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0I5MzBDMTI2
RTA1NEI4MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJbXBsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xp
ZW50SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0I5MzBGMjI2RTdFRUUw
MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyQ29jb2EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNUNCOTMwRjQyNkU4MDFFODAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFl
bW9uQ29ubmVjdGlvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDQjkzMEY1MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1Q0I5MzBGNjI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnREYWVtb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUNCOTMwRjcyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50
RGFlbW9uQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBy
aXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUNCOTMwRjgyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1
cmVtZW50RGVjb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1Q0I5MzBGOTI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZh
dGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDQjkzMEZBMjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXJJbnRlcmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDQjkzMEZCMjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDQjkzMEZDMjZFODAyMTYwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRkQyNkU4MDIxNjAwMzJCMUMwIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGVjb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUNCOTMwRkUyNkU4MDIxNjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50
Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUNCOTMwRkYyNkU4MDIxNjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMxMDQyNkU4
MzdGQzAwMzJCMUMwIC8qIFBDTURhZW1vbkVudHJ5UG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUENNRGFlbW9uRW50cnlQb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1Q0I5MzEwNTI2RTgzN0ZEMDAzMkIxQzAgLyogUENNRGFlbW9uRW50cnlQb2lu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBDTURhZW1vbkVu
dHJ5UG9pbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMTA2MjZFODM5
QTkwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUNCOTMxMDcyNkU4NDFDQjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRp
bGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01l
YXN1cmVtZW50WFBDVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
QjkzMTA4MjZFODQxQ0IwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxp
dGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByaXZhdGVD
bGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1Q0JDOUI4OTFDNjUyNEE1MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtEYXRhVGFzay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0YgLyogTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBO
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNC
RTkwOEYyNkQ3RkI2MjAwNUEyRTk1IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGVidWdJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MjY1LDEyICs5
MjgzLDI0IEBACiAJCQkJNUNCOTMwQkYyNkUwNTQyRTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01l
YXN1cmVtZW50Q2xpZW50LmggKi8sCiAJCQkJNUNCOTMwQzAyNkUwNTQyRjAwMzJCMUMwIC8qIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5jcHAgKi8sCiAJCQkJNUNCOTMwQzEyNkUw
NTRCODAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5oICovLAor
CQkJCTVDQjkzMEZDMjZFODAyMTYwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENv
bm5lY3Rpb24uY3BwICovLAorCQkJCTVDQjkzMEZFMjZFODAyMTYwMDMyQjFDMCAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCAqLywKKwkJCQk1Q0I5MzBGNzI2RTgwMjE1MDAz
MkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuY3BwICovLAorCQkJ
CTVDQjkzMEY2MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1v
bkNsaWVudC5oICovLAogCQkJCTVDODI2RDZBMjZENDgyRUEwMDhBRUM5MSAvKiBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcCAqLywKIAkJCQk1QzgyNkQ2OTI2RDQ4MkVBMDA4QUVD
OTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oICovLAogCQkJCTVDQkU5MDkw
MjZEN0ZCN0MwMDVBMkU5NSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5jcHAg
Ki8sCiAJCQkJNUNCRTkwOEYyNkQ3RkI2MjAwNUEyRTk1IC8qIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGVidWdJbmZvLmggKi8sCisJCQkJNUNCOTMwRjgyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZh
dGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHAgKi8sCisJCQkJNUNCOTMwRkQyNkU4MDIxNjAw
MzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oICovLAorCQkJCTVDQjkz
MEY5MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuY3Bw
ICovLAorCQkJCTVDQjkzMEZGMjZFODAyMTYwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEVuY29kZXIuaCAqLywKIAkJCQk2QkQwNTg2NDIyMENFOEMyMDAwQkVENUMgLyogUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCAqLywKIAkJCQk2QkQwNTg2MzIyMENFOEMyMDAw
QkVENUMgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmggKi8sCisJCQkJNUNCOTMx
MDYyNkU4MzlBOTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVy
ZmFjZS5jcHAgKi8sCisJCQkJNUNCOTMwRkEyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oICovLAorCQkJCTVDQjkzMEZCMjZFODAyMTUw
MDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAgKi8sCisJ
CQkJNUNCOTMwRjUyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlclByb3h5LmggKi8sCiAJCQkJNTdGRTY4OEIyNjBBQkIzRDAwQkY0NUU0IC8qIFByaXZhdGVD
bGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5jcHAgKi8sCiAJCQkJNTdGRTY4OEEyNjBBQkIz
RDAwQkY0NUU0IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oICovLAog
CQkJCTVDODI2RDY3MjZENDZCNDMwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
b3JlLmNwcCAqLywKQEAgLTkzNTgsMTEgKzkzODgsMjQgQEAKIAkJNUNCOTMwRjEyNkU3RUU4OTAw
MzJCMUMwIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQk1Q0I5MzBGNDI2RTgwMUU4MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnREYWVtb25Db25uZWN0aW9uQ29jb2EubW0gKi8sCiAJCQkJNUNCOTMwRjIyNkU3RUVFMDAwMzJC
MUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1tICovLAor
CQkJCTVDQjkzMTA3MjZFODQxQ0IwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQ
Q1V0aWxpdGllcy5oICovLAorCQkJCTVDQjkzMTA4MjZFODQxQ0IwMDMyQjFDMCAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29j
b2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk1Q0I5MzEwMzI2RTgzNzVC
MDAzMkIxQzAgLyogRGFlbW9uICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQk1Q0I5MzEwNDI2RTgzN0ZDMDAzMkIxQzAgLyogUENNRGFlbW9uRW50cnlQb2lu
dC5oICovLAorCQkJCTVDQjkzMTA1MjZFODM3RkQwMDMyQjFDMCAvKiBQQ01EYWVtb25FbnRyeVBv
aW50Lm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBEYWVtb247CisJCQlwYXRoID0gQ29jb2EvRGFl
bW9uOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNkJFOTY5QkYxRTU0RDQ1
MjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTA4MTgsNiArMTA4NjEsNyBAQAogCQlCQzgyODM2
ODE2QjM1ODc5MDBBMjc4RkUgLyogRW50cnlQb2ludFV0aWxpdGllcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUNCOTMxMDMyNkU4Mzc1QjAwMzJCMUMw
IC8qIERhZW1vbiAqLywKIAkJCQlCQzgyODM2QjE2QjM1ODc5MDBBMjc4RkUgLyogWFBDU2Vydmlj
ZSAqLywKIAkJCQk1Q0U5MTIwRjIyOTNDMjVGMDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01h
aW4uY3BwICovLAogCQkJKTsKQEAgLTEyMzY0LDYgKzEyNDA4LDcgQEAKIAkJCQk2QkQwNTg2NTIy
MENFOEMyMDAwQkVENUMgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1N0ZFNjg4QzI2MEFCQjNEMDBCRjQ1RTQgLyogUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnROZXR3b3JrTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzgyNkQ2QjI2RDQ4
MkVGMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNUNCOTMxMDkyNkU4NDM5QTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50WFBDVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkY5NTM2NTE4RkY1OEY1MDAx
REIyRUYgLyogUHJvY2Vzc0Fzc2VydGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxQTdDNTgx
MTM2RTE5QzAwRkI3MTY3IC8qIFByb2Nlc3NMYXVuY2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDYzRkQ0ODIxRUI5NEVDMDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGlu
IEhlYWRlcnMgKi8sCg==
</data>
<flag name="commit-queue"
          id="460904"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437686</attachid>
            <date>2021-09-08 17:08:19 -0700</date>
            <delta_ts>2021-09-08 20:59:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230052-20210908170818.patch</filename>
            <type>text/plain</type>
            <size>106503</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJjOTI0NmRiMDI3OTMwZDM0MjA5OWU1
Yzg4MmJiYzVjODA5ZDY2ZTAuLjU1MzZmYjAzOGRiY2I5ZmQ0NDUyYTg2NTU0ZDIxYTNiMjkzOGFi
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDktMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgZGFlbW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzAwNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oOgorCiAyMDIxLTA5LTA3ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IG9yaWdpbiBwYXJ0aXRp
b25pbmcgKHRvcC1vcmlnaW4vZnJhbWUtb3JpZ2luKSBmb3IgQnJvYWRjYXN0Q2hhbm5lbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAwM2YwZDFkMGM1NjI2ODY5Mzk2NWI3ZTkxY2EzMzNlZDc2MThiMTEyLi4xMDc5NGIy
MzE4YzkxMjVmOGIzYzU1OTZkZWZkZWJiN2U2OTlkM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
NSBAQAorMjAyMS0wOS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIEFkZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBkYWVtb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDA1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUg
aW5mcmFzdHJ1Y3R1cmUgdG8gdXNlIGEgZGFlbW9uIGluc3RlYWQgb2YgdGhlIG5ldHdvcmsgcHJv
Y2VzcyB0byBoYW5kbGUgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuCisgICAgICAgIEl0IGRvZXMg
bm90IHN0YXJ0IHVzaW5nIHRoZSBkYWVtb24geWV0LCBzbyB0aGVyZSBpcyBubyBjaGFuZ2UgaW4g
YmVoYXZpb3IuCisgICAgICAgIEkgbWFkZSBhIG5ldyBjbGFzcyBQQ006Ok1hbmFnZXJJbnRlcmZh
Y2Ugd2hpY2ggY2FuIGVpdGhlciBiZSBhIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlciBv
ciBhIFBDTTo6TWFuYWdlclByb3h5LAorICAgICAgICB3aGljaCB3b3VsZCBzZW5kIG1lc3NhZ2Vz
IHRvIHRoZSBkYWVtb24gaW5zdGVhZCBvZiBkb2luZyB0aGUgd29yayBsb2NhbGx5LgorICAgICAg
ICBJIGltcGxlbWVudGVkIHRoZSBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgcGFyYW1ldGVycyB1
c2luZyBzb21lIG9mIHRoZSBJUEMgZW5jb2RpbmcgdGVtcGxhdGVzLgorICAgICAgICBJIGhhdmUg
YW4gZW50cnkgcG9pbnQgZm9yIGFuIGV4ZWN1dGFibGUgYnV0IG5vIGV4ZWN1dGFibGUgeWV0Lgor
ICAgICAgICBJIGhhdmUgdmVyaWZpZWQgdGhhdCBFdmVudEF0dHJpYnV0aW9uIHVuaXQgdGVzdHMg
cGFzcyB3aGVuIHVzaW5nIHRoZSBkYWVtb24sIHNvIHRoZSBpbmZyYXN0cnVjdHVyZSBpcyBnb29k
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpwY21TdG9yZURpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OnByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudENvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0
aW9uOjpjb25uZWN0aW9uVG9EYWVtb24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rp
b246OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rpb246OnNlbmRXaXRoUmVw
bHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhZW1vbkNsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNs
aWVudDo6bG9hZEZyb21OZXR3b3JrKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25DbGll
bnQ6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVt
b25DbGllbnQ6OmZlYXR1cmVFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpE
YWVtb25DbGllbnQ6OmRlYnVnTW9kZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFl
bW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6ZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6RGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RGVjb2Rlcjo6b3BlcmF0b3I+Pik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6YnVm
ZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBDTTo6RW5jb2Rlcjo6ZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlBDTTo6RW5jb2Rlcjo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RW5jb2Rlcjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpFbmNvZGVyOjp0YWtlQnVm
ZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UENNOjpNZXNzYWdlSW5mbzo6dG9TdHJpbmdGb3JUZXN0aW5nOjplbmNvZGVS
ZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6bWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
OlBDTTo6aGFuZGxlUENNTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6aGFuZGxlUENN
TWVzc2FnZVdpdGhSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6ZGVjb2RlTWVzc2FnZUFu
ZFNlbmRUb01hbmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpQQ006OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpSZXBseUNhbGxl
cjw+OjpjYWxsUmVwbHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlJlcGx5Q2FsbGVyPFN0cmlu
Zz46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6c2VuZE1lc3NhZ2VXaXRoUmVw
bHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c3RvcmVVbmF0dHJpYnV0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6aGFuZGxlQXR0cmlidXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6Y2xlYXIpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6Y2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbik6
CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjptaWdyYXRlUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFu
YWdlclByb3h5Ojp0b1N0cmluZ0ZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
Q006Ok1hbmFnZXJQcm94eTo6c2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcpOgorICAgICAgICAo
V2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6OnNldFRva2VuU2lnbmF0dXJl
VVJMRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzZXRB
dHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpN
YW5hZ2VyUHJveHk6Om1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6TWFuYWdlclByb3h5OjpzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFs
dWVzRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzdGFy
dFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5h
Z2VyUHJveHk6OmRlc3Ryb3lTdG9yZUZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
clByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNv
Y29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9EYWVt
b24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OmRpY3Rpb25hcnlGcm9tTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6Q29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENV
dGlsaXRpZXMuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW06
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OmFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2Fn
ZVRvRGljdGlvbmFyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5X
ZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW46CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpkZWNvZGVTdHJpbmdUZXh0KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxTdHJpbmc+OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1v
bi9QQ01EYWVtb25FbnRyeVBvaW50Lmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6cGVlcnMpOgorICAgICAgICAoV2ViS2l0OjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6Y29ubmVjdGlvbkV2ZW50SGFuZGxlcik6Cisg
ICAgICAgIChXZWJLaXQ6OnN0YXJ0TGlzdGVuaW5nRm9yTWFjaFNlcnZpY2VDb25uZWN0aW9ucyk6
CisgICAgICAgIChXZWJLaXQ6OnJlZ2lzdGVyU2NoZWR1bGVkQWN0aXZpdHlIYW5kbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6ZW50ZXJTYW5kYm94KToKKyAgICAgICAgKFdlYktpdDo6UENNRGFlbW9u
TWFpbik6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0w
OS0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlcGxhY2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpzdGFydCB3
aXRoIGFuIGltcGxlbWVudGF0aW9uIHRoYXQgZG9lc24ndCBuZWVkIE5ldHdvcmtTZXNzaW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oIGIvU291cmNlL1dU
Ri93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAppbmRleCAyZjk2NWJhN2ZkMTA5Y2NiOGZlNGE3ZWQ4
NDRkYjIyZGU4NzkxOGYwLi5jYjZhNzI4NWZmNWJkMWFlYzk5OTdmMjU3MjYwZmQ0NWQwMDc4ZmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmgKQEAgLTcxLDYgKzcxLDcgQEAgdHlwZWRl
ZiB2b2lkICgqeHBjX2Nvbm5lY3Rpb25faGFuZGxlcl90KSh4cGNfY29ubmVjdGlvbl90IGNvbm5l
Y3Rpb24pOwogCiAjZGVmaW5lIFhQQ19BUlJBWV9BUFBFTkQgKChzaXplX3QpKC0xKSkKICNkZWZp
bmUgWFBDX0NPTk5FQ1RJT05fTUFDSF9TRVJWSUNFX0xJU1RFTkVSICgxIDw8IDApCisjZGVmaW5l
IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVEVSUlVQVEVEIFhQQ19HTE9CQUxfT0JKRUNUKF94cGNf
ZXJyb3JfY29ubmVjdGlvbl9pbnRlcnJ1cHRlZCkKICNkZWZpbmUgWFBDX0VSUk9SX0NPTk5FQ1RJ
T05fSU5WQUxJRCBYUENfR0xPQkFMX09CSkVDVChfeHBjX2Vycm9yX2Nvbm5lY3Rpb25faW52YWxp
ZCkKICNkZWZpbmUgWFBDX0VSUk9SX0tFWV9ERVNDUklQVElPTiBfeHBjX2Vycm9yX2tleV9kZXNj
cmlwdGlvbgogI2RlZmluZSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQgWFBDX0dMT0JB
TF9PQkpFQ1QoX3hwY19lcnJvcl90ZXJtaW5hdGlvbl9pbW1pbmVudCkKQEAgLTkxLDYgKzkyLDkg
QEAgZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBfeHBjX2Vycm9yX2tleV9kZXNjcmlwdGlvbjsK
ICNpbmNsdWRlIDx4cGMvcHJpdmF0ZS5oPgogI2Vsc2UKIAorZXh0ZXJuICJDIiBjb25zdCBjaGFy
ICogY29uc3QgWFBDX0FDVElWSVRZX1JBTkRPTV9JTklUSUFMX0RFTEFZOworZXh0ZXJuICJDIiBj
b25zdCBjaGFyICogY29uc3QgWFBDX0FDVElWSVRZX1JFUVVJUkVfTkVUV09SS19DT05ORUNUSVZJ
VFk7CisKICNpZiBPU19PQkpFQ1RfVVNFX09CSkMKIE9TX09CSkVDVF9ERUNMKG9zX3RyYW5zYWN0
aW9uKTsKICNlbHNlCkBAIC0xMDgsNiArMTEyLDcgQEAgZW51bSB7CiAKIFdURl9FWFRFUk5fQ19C
RUdJTgogCitleHRlcm4gY29uc3Qgc3RydWN0IF94cGNfZGljdGlvbmFyeV9zIF94cGNfZXJyb3Jf
Y29ubmVjdGlvbl9pbnRlcnJ1cHRlZDsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgX3hwY19kaWN0aW9u
YXJ5X3MgX3hwY19lcnJvcl9jb25uZWN0aW9uX2ludmFsaWQ7CiBleHRlcm4gY29uc3Qgc3RydWN0
IF94cGNfZGljdGlvbmFyeV9zIF94cGNfZXJyb3JfdGVybWluYXRpb25faW1taW5lbnQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
CmluZGV4IGYxYjE5OTAyZTFhNGVhMDVhZWMyMWRhYjcyN2Y4YjhhZWUwOTI5OTkuLjI5YmFiOWEy
OTM5OWQxNjI0OWMxMjk2ZTY4YWFmNzc4ZjMzMGExNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgi
CisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCIKICNpbmNsdWRlICJTdG9y
YWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDU0M2Nh
YjEwMGJjN2JjOTlmNTQwZjM5NGJmZjcyM2ZiY2NkYWViM2EuLmRmZGU3OGRhNjFkOWJmYThhM2M1
YTRjMWM4Y2E5N2EwMmUzNTNmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUGluZ0xv
YWQuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuaCIKICNp
bmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCIKKyNpbmNsdWRlICJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCkBAIC05MiwxMSArOTMsMjAgQEAgc3RhdGljIFN0cmluZyBwY21TdG9yZURp
cmVjdG9yeShjb25zdCBOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXMK
ICAgICByZXR1cm4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKIH0KIAorc3RhdGlj
IFVuaXF1ZVJlZjxQQ006Ok1hbmFnZXJJbnRlcmZhY2U+IG1hbmFnZXJPclByb3h5KE5ldHdvcmtT
ZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBj
b25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAg
ICAvLyBGSVhNRTogVHVybiB0aGlzIG9uIGFuZCByZW1vdmUgTWFuYWdlckludGVyZmFjZSBvbmNl
IHJkYXI6Ly84MDcwMTA5OCBpcyBjbG9zZWQuCisgICAgY29uc3RleHByIGJvb2wgdXNlUENNRGFl
bW9uID0gZmFsc2U7CisKKyAgICBpZiAodXNlUENNRGFlbW9uKQorICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZVJlZjxQQ006Ok1hbmFnZXJQcm94eT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJl
ZjxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KG1ha2VVbmlxdWVSZWY8UENNOjpDbGll
bnRJbXBsPihuZXR3b3JrU2Vzc2lvbiwgbmV0d29ya1Byb2Nlc3MpLCBwY21TdG9yZURpcmVjdG9y
eShuZXR3b3JrU2Vzc2lvbiwgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycy5kaXJlY3RvcnksIHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSk7Cit9CisKIE5ldHdv
cmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3Ms
IGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAg
IDogbV9zZXNzaW9uSUQocGFyYW1ldGVycy5zZXNzaW9uSUQpCiAgICAgLCBtX25ldHdvcmtQcm9j
ZXNzKG5ldHdvcmtQcm9jZXNzKQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgLCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeShwYXJhbWV0
ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RvcmFnZURpcmVjdG9yeSkKICAgICAsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmRpcmVjdG9y
eSkKICAgICAsIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNob3VsZEluY2x1
ZGVMb2NhbGhvc3QgPyBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgOiBTaG91bGRJbmNsdWRl
TG9jYWxob3N0OjpObykKICAgICAsIG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZURl
YnVnTW9kZSA/IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6OlllcyA6IEVu
YWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6Ok5vKQpAQCAtMTA3LDYgKzExNyw3
IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAgICAgLCBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMu
Zmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUpCiAgICAgLCBtX3N0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbihwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
LnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbikKICNlbmRpZgorICAgICwgbV9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChtYW5hZ2VyT3JQcm94eSgqdGhpcywgbmV0d29ya1Byb2Nlc3MsIHBhcmFt
ZXRlcnMpKQogICAgICwgbV9icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkobWFrZVVuaXF1ZVJlZjxO
ZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PigpKQogICAgICwgbV90ZXN0U3BlZWRNdWx0
aXBsaWVyKHBhcmFtZXRlcnMudGVzdFNwZWVkTXVsdGlwbGllcikKICAgICAsIG1fYWxsb3dzU2Vy
dmVyUHJlY29ubmVjdChwYXJhbWV0ZXJzLmFsbG93c1NlcnZlclByZWNvbm5lY3QpCkBAIC0xNDEs
NyArMTUyLDYgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNz
JiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBh
cmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlZCk7CiAjZW5k
aWYKLSAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gbWFrZVVuaXF1ZTxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI+KG1ha2VVbmlxdWVSZWY8UENNOjpDbGllbnRJbXBsPigqdGhp
cywgbmV0d29ya1Byb2Nlc3MpLCBwY21TdG9yZURpcmVjdG9yeSgqdGhpcywgcGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5kaXJlY3RvcnksIHBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9y
YWdlRGlyZWN0b3J5KSk7CiB9CiAKIE5ldHdvcmtTZXNzaW9uOjp+TmV0d29ya1Nlc3Npb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDcw
YTFiNDkxYjI0M2FhZWZiM2QyN2JkY2FkMDBhNjA1ZTQyNGY1MGYuLmQ4YWFiM2RiYTQ5Yjc2N2Yz
ZWYwOTk0YmYyY2JlOTUxZmE0MTY3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJlZmV0Y2hDYWNoZS5oIgorI2luY2x1ZGUgIlByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRl
bnNpb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgpAQCAtNjAsNyArNjEsNiBA
QCBjbGFzcyBOZXR3b3JrUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIGNs
YXNzIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk7CiBjbGFzcyBOZXR3b3JrU29ja2V0
Q2hhbm5lbDsKLWNsYXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjsKIGNsYXNzIFdl
YlBhZ2VOZXR3b3JrUGFyYW1ldGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTsKIGNsYXNzIFdlYlNvY2tldFRhc2s7CkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICBOZXR3b3JrTG9hZFNjaGVkdWxlciYgbmV0d29ya0xvYWRTY2hlZHVsZXIo
KTsKLSAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXImIHByaXZhdGVDbGlja01lYXN1
cmVtZW50KCkgeyByZXR1cm4gKm1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7IH0KKyAgICBQQ006
Ok1hbmFnZXJJbnRlcmZhY2UmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgeyByZXR1cm4gbV9w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC5nZXQoKTsgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhJiBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0Rh
dGEoKSB7IHJldHVybiBtX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTsgfQpAQCAtMTkyLDcg
KzE5Miw2IEBAIHByb3RlY3RlZDoKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1By
b2Nlc3M7CiAgICAgV2Vha0hhc2hTZXQ8TmV0d29ya0RhdGFUYXNrPiBtX2RhdGFUYXNrU2V0Owog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgU3RyaW5nIG1fcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CiAgICAgUmVmUHRyPFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZT4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgIFNob3VsZEluY2x1ZGVM
b2NhbGhvc3QgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
IHsgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6WWVzIH07CkBAIC0yMDgsNyArMjA3LDcgQEAgcHJv
dGVjdGVkOgogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1f
dGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZzsKICNlbmRpZgogICAgIGJvb2wgbV9pc1N0
YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDsKKyAgICBVbmlxdWVSZWY8UENNOjpNYW5hZ2VySW50ZXJmYWNlPiBtX3ByaXZhdGVDbGlja01l
YXN1cmVtZW50OwogCiAgICAgSGFzaFNldDxSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPj4gbV9r
ZXB0QWxpdmVMb2FkczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2
M2EwMzYwZGI1MzE5ODFmZTY3NGIyNjNhZjQwMzIzMWQ5MTk4NWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCisjaWYgIVBMQVRG
T1JNKENPQ09BKQorCitDb25uZWN0aW9uIENvbm5lY3Rpb246OmNvbm5lY3Rpb25Ub0RhZW1vbigp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIENv
bm5lY3Rpb246OnNlbmQoTWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5KE1lc3Nh
Z2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRN
ZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNw
YWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVmNzI2MWM4ZjIyMjVhZGVkOWM1NjgyYjMxMTQ1MjkwZjI3MjY2OWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEs
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKworZW51bSBj
bGFzcyBNZXNzYWdlVHlwZSA6IHVpbnQ4X3Q7Cit1c2luZyBFbmNvZGVkTWVzc2FnZSA9IFZlY3Rv
cjx1aW50OF90PjsKKworY2xhc3MgQ29ubmVjdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIENv
bm5lY3Rpb24gY29ubmVjdGlvblRvRGFlbW9uKCk7CisKKyAgICB2b2lkIHNlbmQoTWVzc2FnZVR5
cGUsIEVuY29kZWRNZXNzYWdlJiYpOworICAgIHZvaWQgc2VuZFdpdGhSZXBseShNZXNzYWdlVHlw
ZSwgRW5jb2RlZE1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVkTWVzc2Fn
ZSYmKT4mJik7CisKK3ByaXZhdGU6CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgQ29ubmVjdGlv
bihPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiYmKTsKKworICAgIE9TT2JqZWN0UHRyPHhw
Y19jb25uZWN0aW9uX3Q+IG1fY29ubmVjdGlvbjsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3Bh
Y2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudERhZW1vbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zNzNlNTFiZTcwZjBjNmU5MjM0ODRjYjZmZGRlNTk1OGJmMmViNThk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAK
QEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5oIgorCisjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNw
YWNlIFBDTSB7CisKK3ZvaWQgRGFlbW9uQ2xpZW50Ojpicm9hZGNhc3RDb25zb2xlTWVzc2FnZShK
U0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCitib29sIERhZW1vbkNsaWVudDo6ZmVhdHVyZUVuYWJsZWQoKSBjb25zdAoreworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIERhZW1vbkNsaWVudDo6ZGVidWdNb2RlRW5hYmxlZCgp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRE
YWVtb25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTc3ODIxMjQyNmQ4OTcxNmMxYmEzNmQ0NTBhY2Q1
ZDM2ZDdmNjY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNs
aWVudC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK2NsYXNzIERhZW1vbkNsaWVudCA6IHB1YmxpYyBDbGll
bnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYWVtb25DbGllbnQ+IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKKyAgICB2b2lkIGJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKEpTQzo6TWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGZlYXR1cmVFbmFibGVk
KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBkZWJ1Z01vZGVFbmFibGVkKCkgY29uc3QgZmluYWw7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGVjb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEyMGU4YzJmY2NhOTljMTA4NjI1NDA3YTFmMmMz
Y2M0NTIzM2U0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVy
LmNwcApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK2Jvb2wgRGVjb2Rlcjo6YnVmZmVySXNMYXJn
ZUVub3VnaFRvQ29udGFpbkJ5dGVzKHNpemVfdCBieXRlcykgY29uc3QKK3sKKyAgICByZXR1cm4g
Ynl0ZXMgPD0gbV9idWZmZXIuc2l6ZSgpIC0gbV9idWZmZXJQb3NpdGlvbjsKK30KKworYm9vbCBE
ZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUs
IHNpemVfdCkKK3sKKyAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW5CeXRlcyhz
aXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1lbWNweShkYXRhLCBtX2J1ZmZlci5k
YXRhKCkgKyBtX2J1ZmZlclBvc2l0aW9uLCBzaXplKTsKKyAgICBtX2J1ZmZlclBvc2l0aW9uICs9
IHNpemU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4Nzc5OWUzMGVl
NTMwNzcyYzlkMTQ3Y2MzODdmNTVmNWI4YzM1NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGVjb2Rlci5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCituYW1lc3BhY2UgUENNIHsKKworY2xhc3MgRGVjb2RlciB7CitwdWJsaWM6CisgICAg
RGVjb2RlcihWZWN0b3I8dWludDhfdD4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoV1RG
TW92ZShidWZmZXIpKSB7IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIERl
Y29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDxUPiYgdCkKKyAgICB7CisgICAgICAgIHQg
PSBJUEM6OkFyZ3VtZW50Q29kZXI8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZl
cmVuY2VfdDxUPj4sIHZvaWQ+OjpkZWNvZGUoKnRoaXMpOworICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVfdCBudW1FbGVtZW50cykg
Y29uc3QKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19hcml0aG1ldGljPFQ+
Ojp2YWx1ZSwgIlR5cGUgVCBtdXN0IGhhdmUgYSBmaXhlZCwga25vd24gZW5jb2RlZCBzaXplISIp
OworCisgICAgICAgIGlmIChudW1FbGVtZW50cyA+IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCkgLyBzaXplb2YoVCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgcmV0dXJuIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW5CeXRlcyhudW1FbGVtZW50cyAq
IHNpemVvZihUKSk7CisgICAgfQorCisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
Rml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7
CisgICAgCitwcml2YXRlOgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFy
Z2VFbm91Z2hUb0NvbnRhaW5CeXRlcyhzaXplX3QpIGNvbnN0OworCisgICAgVmVjdG9yPHVpbnQ4
X3Q+IG1fYnVmZmVyOworICAgIHNpemVfdCBtX2J1ZmZlclBvc2l0aW9uIHsgMCB9OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29k
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI5OGIxNWU1MTBlNTk5Mzc0M2ZlN2U1NjNlZjAxZGQ3OGI5MjRm
ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5jcHAKQEAg
LTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK25hbWVzcGFjZSBQQ00geworCit2b2lkIEVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90KQoreworICAgIG1fYnVm
ZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKK30KKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThhODNjNjU5MjVk
MjYyYWRkMjBiYTVhOGIxOTAzNjVlNTkzMmNiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRFbmNvZGVyLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK25hbWVzcGFjZSBQQ00geworCitjbGFzcyBFbmNvZGVyIHsKK3B1YmxpYzoKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEVuY29kZXImIG9wZXJhdG9yPDwoVCYmIHQpCisgICAg
eworICAgICAgICBJUEM6OkFyZ3VtZW50Q29kZXI8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJl
bW92ZV9yZWZlcmVuY2VfdDxUPj4+OjplbmNvZGUoKnRoaXMsIHN0ZDo6Zm9yd2FyZDxUPih0KSk7
CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBB
cmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBlbmNvZGUoQXJnJiYgYXJnLCBBcmdzJiYu
Li4gYXJncykKKyAgICB7CisgICAgICAgICp0aGlzIDw8IHN0ZDo6Zm9yd2FyZDxBcmc+KGFyZyk7
CisgICAgICAgIGVuY29kZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIH0KKyAg
ICB2b2lkIGVuY29kZSgpIHsgfQorCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VCdWZmZXIoKSB7
IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCB7IH0pOyB9CisKKyAgICB2b2lkIGVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50
KTsKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8dWludDhfdD4gbV9idWZmZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaApp
bmRleCBiYjgyMjJjMmM5ZGJiMDc3MmJkMzllNzlmNDQzMDVmNDcwYmU5ZjU1Li4yNmU3YzU1OTE0
NDdmZWJmNTc4NTFlYWU1ZDJlMGY0NmQ5YmVlMDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKQEAgLTI4
LDEzICsyOCw5IEBACiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENs
aWVudC5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9S
ZWdpc3RyYWJsZURvbWFpbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VGltZXIuaD4KLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgpAQCAtNDIsMzggKzM4LDMwIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1lbnVtIGNsYXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIDogYm9v
bCB7IFVuYXR0cmlidXRlZCwgQXR0cmlidXRlZCB9OwotCi1jbGFzcyBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyPiB7CitjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIgOiBw
dWJsaWMgUENNOjpNYW5hZ2VySW50ZXJmYWNlLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAKLSAgICB1c2luZyBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSA9IFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZTsK
LSAgICB1c2luZyBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7Ci0gICAgdXNpbmcgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKLSAgICB1
c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAg
IHVzaW5nIFNvdXJjZVNpdGUgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291
cmNlU2l0ZTsKLQogICAgIGV4cGxpY2l0IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcihV
bmlxdWVSZWY8UENNOjpDbGllbnQ+JiYsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSk7
CiAgICAgflByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcigpOwogCi0gICAgdm9pZCBzdG9y
ZVVuYXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmKTsKLSAgICB2b2lkIGhhbmRs
ZUF0dHJpYnV0aW9uKEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29uc3QgVVJMJiByZXF1ZXN0
VVJMLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZGlyZWN0RG9tYWluLCBjb25zdCBV
UkwmIGZpcnN0UGFydHlVUkwpOwotICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgbWln
cmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UoUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpOwor
ICAgIHZvaWQgc3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJikgZmlu
YWw7CisgICAgdm9pZCBoYW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYs
IGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWRp
cmVjdERvbWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJMKSBmaW5hbDsKKyAgICB2b2lkIGNs
ZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBjbGVhckZv
clJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKSBmaW5hbDsKIAotICAgIHZvaWQgdG9T
dHJpbmdGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJikgY29uc3Q7
Ci0gICAgdm9pZCBzZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhib29sIHZhbHVlKSB7IG1faXNS
dW5uaW5nVGVzdCA9IHZhbHVlOyB9Ci0gICAgdm9pZCBzZXRUb2tlblB1YmxpY0tleVVSTEZvclRl
c3RpbmcoVVJMJiYpOwotICAgIHZvaWQgc2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFVS
TCYmKTsKLSAgICB2b2lkIHNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJMJiYg
c291cmNlVVJMLCBVUkwmJiBkZXN0aW5hdGlvblVSTCk7Ci0gICAgdm9pZCBtYXJrQWxsVW5hdHRy
aWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZygpOwotICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3Rpbmco
Ym9vbCB2YWx1ZSkgeyBtX2lzUnVubmluZ0VwaGVtZXJhbE1lYXN1cmVtZW50VGVzdCA9IHZhbHVl
OyB9Ci0gICAgdm9pZCBzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFN0cmlu
ZyYmIHVubGlua2FibGVUb2tlbiwgU3RyaW5nJiYgc2VjcmV0VG9rZW4sIFN0cmluZyYmIHNpZ25h
dHVyZSwgU3RyaW5nJiYga2V5SUQpOwotICAgIHZvaWQgc3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9y
VGVzdGluZygpOwotICAgIHZvaWQgZGVzdHJveVN0b3JlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdG9TdHJpbmdGb3JUZXN0aW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nKT4mJikgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRPdmVycmlk
ZVRpbWVyRm9yVGVzdGluZyhib29sIHZhbHVlKSBmaW5hbCB7IG1faXNSdW5uaW5nVGVzdCA9IHZh
bHVlOyB9CisgICAgdm9pZCBzZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJMJiYpIGZp
bmFsOworICAgIHZvaWQgc2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFVSTCYmKSBmaW5h
bDsKKyAgICB2b2lkIHNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJMJiYgc291
cmNlVVJMLCBVUkwmJiBkZXN0aW5hdGlvblVSTCkgZmluYWw7CisgICAgdm9pZCBtYXJrQWxsVW5h
dHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZygpIGZpbmFsOworICAgIHZvaWQgbWFya0F0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBzZXRFcGhlbWVyYWxNZWFzdXJl
bWVudEZvclRlc3RpbmcoYm9vbCB2YWx1ZSkgZmluYWwgeyBtX2lzUnVubmluZ0VwaGVtZXJhbE1l
YXN1cmVtZW50VGVzdCA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRQQ01GcmF1ZFByZXZlbnRpb25W
YWx1ZXNGb3JUZXN0aW5nKFN0cmluZyYmIHVubGlua2FibGVUb2tlbiwgU3RyaW5nJiYgc2VjcmV0
VG9rZW4sIFN0cmluZyYmIHNpZ25hdHVyZSwgU3RyaW5nJiYga2V5SUQpIGZpbmFsOworICAgIHZv
aWQgc3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZygpIGZpbmFsOworICAgIHZvaWQgZGVz
dHJveVN0b3JlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwog
CiBwcml2YXRlOgogICAgIFBDTTo6U3RvcmUmIHN0b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlckludGVyZmFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcyYWZkOWU0NTBmODVhN2ZhNDE0OWFhNjgz
YThjMzM5MjhlNzk0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VySW50ZXJmYWNlLmNwcApAQCAtMCwwICsxLDI1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRl
cmZhY2UuaCIKKworI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudERhZW1vbkNsaWVudC5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50
RGVjb2Rlci5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5oIgor
I2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK25hbWVzcGFjZSBNZXNzYWdlSW5mbyB7CisK
KyNkZWZpbmUgRlVOQ1RJT04obWYpIHN0cnVjdCBtZiB7IHN0YXRpYyBjb25zdGV4cHIgYXV0byBN
ZW1iZXJGdW5jdGlvbiA9ICZQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6Om1mOworI2Rl
ZmluZSBBUkdVTUVOVFMoLi4uKSB1c2luZyBBcmdzVHVwbGUgPSBzdGQ6OnR1cGxlPF9fVkFfQVJH
U19fPjsKKyNkZWZpbmUgUkVQTFkoLi4uKSB1c2luZyBSZXBseSA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoX19WQV9BUkdTX18pPjsgXAorICAgIHN0YXRpYyBQQ006OkVuY29kZWRNZXNzYWdlIGVu
Y29kZVJlcGx5KF9fVkFfQVJHU19fKTsKKyNkZWZpbmUgRU5EIH07CisKK0ZVTkNUSU9OKHN0b3Jl
VW5hdHRyaWJ1dGVkKQorQVJHVU1FTlRTKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
KQorRU5ECisKK0ZVTkNUSU9OKGhhbmRsZUF0dHJpYnV0aW9uKQorQVJHVU1FTlRTKFByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlcjo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgVVJMLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgVVJMKQorRU5ECisKK0ZVTkNUSU9OKGNsZWFyKQorQVJH
VU1FTlRTKCkKK1JFUExZKCkKK0VORAorCitGVU5DVElPTihjbGVhckZvclJlZ2lzdHJhYmxlRG9t
YWluKQorQVJHVU1FTlRTKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKQorUkVQTFkoKQorRU5E
CisKK0ZVTkNUSU9OKG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9y
YWdlKQorQVJHVU1FTlRTKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkKK0VORAorCitGVU5DVElPTih0b1N0cmlu
Z0ZvclRlc3RpbmcpCitBUkdVTUVOVFMoKQorUkVQTFkoU3RyaW5nKQorRU5ECisKK0ZVTkNUSU9O
KHNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKQorQVJHVU1FTlRTKGJvb2wpCitFTkQKKworRlVO
Q1RJT04oc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKQorQVJHVU1FTlRTKFVSTCkKK0VO
RAorCitGVU5DVElPTihzZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcpCitBUkdVTUVOVFMo
VVJMKQorRU5ECisKK0ZVTkNUSU9OKHNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3Rpbmcp
CitBUkdVTUVOVFMoVVJMLCBVUkwpCitFTkQKKworRlVOQ1RJT04obWFya0FsbFVuYXR0cmlidXRl
ZEFzRXhwaXJlZEZvclRlc3RpbmcpCitBUkdVTUVOVFMoKQorRU5ECisKK0ZVTkNUSU9OKG1hcmtB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZykKK0FS
R1VNRU5UUygpCitSRVBMWSgpCitFTkQKKworRlVOQ1RJT04oc2V0RXBoZW1lcmFsTWVhc3VyZW1l
bnRGb3JUZXN0aW5nKQorQVJHVU1FTlRTKGJvb2wpCitFTkQKKworRlVOQ1RJT04oc2V0UENNRnJh
dWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZykKK0FSR1VNRU5UUyhTdHJpbmcsIFN0cmluZywg
U3RyaW5nLCBTdHJpbmcpCitFTkQKKworRlVOQ1RJT04oc3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9y
VGVzdGluZykKK0FSR1VNRU5UUygpCitFTkQKKworRlVOQ1RJT04oZGVzdHJveVN0b3JlRm9yVGVz
dGluZykKK0FSR1VNRU5UUygpCitSRVBMWSgpCitFTkQKKworI3VuZGVmIEZVTkNUSU9OCisjdW5k
ZWYgQVJHVU1FTlRTCisjdW5kZWYgUkVQTFkKKyN1bmRlZiBFTkQKKworI2RlZmluZSBFTVBUWV9S
RVBMWShtZikgUENNOjpFbmNvZGVkTWVzc2FnZSBtZjo6ZW5jb2RlUmVwbHkoKSB7IHJldHVybiB7
IH07IH0KK0VNUFRZX1JFUExZKGNsZWFyKTsKK0VNUFRZX1JFUExZKGNsZWFyRm9yUmVnaXN0cmFi
bGVEb21haW4pOworRU1QVFlfUkVQTFkobWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKTsKK0VNUFRZX1JFUExZKGRlc3Ryb3lTdG9yZUZvclRl
c3RpbmcpOworI3VuZGVmIEVNUFRZX1JFUExZCisKK1BDTTo6RW5jb2RlZE1lc3NhZ2UgdG9TdHJp
bmdGb3JUZXN0aW5nOjplbmNvZGVSZXBseShTdHJpbmcgcmVwbHkpCit7CisgICAgUENNOjpFbmNv
ZGVyIGVuY29kZXI7CisgICAgZW5jb2RlciA8PCByZXBseTsKKyAgICByZXR1cm4gZW5jb2Rlci50
YWtlQnVmZmVyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VJbmZvCisKK2Jvb2wgbWVz
c2FnZVR5cGVTZW5kc1JlcGx5KE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlKQoreworICAgIHN3aXRj
aCAobWVzc2FnZVR5cGUpIHsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTdG9yZVVuYXR0cmlidXRl
ZDoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpIYW5kbGVBdHRyaWJ1dGlvbjoKKyAgICBjYXNlIE1l
c3NhZ2VUeXBlOjpNaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFn
ZToKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZzoKKyAg
ICBjYXNlIE1lc3NhZ2VUeXBlOjpTZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3Rpbmc6CisgICAg
Y2FzZSBNZXNzYWdlVHlwZTo6U2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nOgorICAgIGNh
c2UgTWVzc2FnZVR5cGU6OlNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3Rpbmc6CisgICAg
Y2FzZSBNZXNzYWdlVHlwZTo6TWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3Rpbmc6
CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6U2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5n
OgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OlNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRl
c3Rpbmc6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6U3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVz
dGluZzoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgTWVzc2FnZVR5cGU6Ok1hcmtB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZzoKKyAg
ICBjYXNlIE1lc3NhZ2VUeXBlOjpEZXN0cm95U3RvcmVGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVz
c2FnZVR5cGU6OlRvU3RyaW5nRm9yVGVzdGluZzoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpDbGVh
cjoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpDbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluOgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
JiBkYWVtb25NYW5hZ2VyKCkKK3sKKyAgICAvLyBGSVhNRTogR2l2ZSB0aGUgbWFuYWdlciBhIHZh
bGlkIHN0b3JhZ2UgZGlyZWN0b3J5LgorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+IGluc3RhbmNlKG1ha2VVbmlxdWVSZWY8UENNOjpEYWVt
b25DbGllbnQ+KCksIFN0cmluZygpKTsKKyAgICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEluZm8+Cit2b2lkIGhhbmRsZVBDTU1lc3NhZ2UoUENNOjpFbmNv
ZGVkTWVzc2FnZSYmIGVuY29kZWRNZXNzYWdlKQoreworICAgIFBDTTo6RGVjb2RlciBkZWNvZGVy
KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUg
SW5mbzo6QXJnc1R1cGxlPiBhcmd1bWVudHM7CisgICAgZGVjb2RlciA+PiBhcmd1bWVudHM7Cisg
ICAgaWYgKFVOTElLRUxZKCFhcmd1bWVudHMpKQorICAgICAgICByZXR1cm47CisKKyAgICBJUEM6
OmNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMpLCAmZGFlbW9uTWFuYWdlcigp
LCBJbmZvOjpNZW1iZXJGdW5jdGlvbik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEluZm8+Cit2
b2lkIGhhbmRsZVBDTU1lc3NhZ2VXaXRoUmVwbHkoUENNOjpFbmNvZGVkTWVzc2FnZSYmIGVuY29k
ZWRNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBDTTo6RW5jb2RlZE1lc3NhZ2UmJik+
JiYgcmVwbHlTZW5kZXIpCit7CisgICAgUENNOjpEZWNvZGVyIGRlY29kZXIoV1RGTW92ZShlbmNv
ZGVkTWVzc2FnZSkpOworCisgICAgc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBJbmZvOjpBcmdzVHVw
bGU+IGFyZ3VtZW50czsKKyAgICBkZWNvZGVyID4+IGFyZ3VtZW50czsKKyAgICBpZiAoVU5MSUtF
TFkoIWFyZ3VtZW50cykpCisgICAgICAgIHJldHVybjsKKworICAgIHR5cGVuYW1lIEluZm86OlJl
cGx5IGNvbXBsZXRpb25IYW5kbGVyIHsgW3JlcGx5U2VuZGVyID0gV1RGTW92ZShyZXBseVNlbmRl
cildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CisgICAgICAgIHJlcGx5U2VuZGVyKEluZm86
OmVuY29kZVJlcGx5KGFyZ3MuLi4pKTsKKyAgICB9fTsKKworICAgIElQQzo6Y2FsbE1lbWJlckZ1
bmN0aW9uKFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAm
ZGFlbW9uTWFuYWdlcigpLCBJbmZvOjpNZW1iZXJGdW5jdGlvbik7Cit9CisKK3ZvaWQgZGVjb2Rl
TWVzc2FnZUFuZFNlbmRUb01hbmFnZXIoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFZlY3Rvcjx1
aW50OF90PiYmIGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1
aW50OF90PiYmKT4mJiByZXBseVNlbmRlcikKK3sKKyAgICBBU1NFUlQobWVzc2FnZVR5cGVTZW5k
c1JlcGx5KG1lc3NhZ2VUeXBlKSA9PSAhIXJlcGx5U2VuZGVyKTsKKyAgICBzd2l0Y2ggKG1lc3Nh
Z2VUeXBlKSB7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpTdG9yZVVuYXR0cmlidXRlZDoK
KyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6c3RvcmVVbmF0dHJpYnV0ZWQ+
KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006
Ok1lc3NhZ2VUeXBlOjpIYW5kbGVBdHRyaWJ1dGlvbjoKKyAgICAgICAgaGFuZGxlUENNTWVzc2Fn
ZTxNZXNzYWdlSW5mbzo6aGFuZGxlQXR0cmlidXRpb24+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2Up
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpDbGVhcjoKKyAg
ICAgICAgaGFuZGxlUENNTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6Y2xlYXI+KFdURk1v
dmUoZW5jb2RlZE1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6Q2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbjoK
KyAgICAgICAgaGFuZGxlUENNTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6Y2xlYXJGb3JS
ZWdpc3RyYWJsZURvbWFpbj4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSksIFdURk1vdmUocmVwbHlT
ZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpNaWdy
YXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZToKKyAgICAgICAgaGFu
ZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6bWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50
RnJvbUxlZ2FjeVN0b3JhZ2U+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpUb1N0cmluZ0ZvclRlc3Rpbmc6CisgICAg
ICAgIGhhbmRsZVBDTU1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86OnRvU3RyaW5nRm9yVGVz
dGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSksIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpTZXRPdmVycmlkZVRpbWVy
Rm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6c2V0T3Zl
cnJpZGVUaW1lckZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpTZXRUb2tlblB1YmxpY0tleVVSTEZv
clRlc3Rpbmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86OnNldFRva2Vu
UHVibGljS2V5VVJMRm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlNldFRva2VuU2lnbmF0dXJlVVJM
Rm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6c2V0VG9r
ZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6U2V0QXR0cmlidXRpb25SZXBv
cnRVUkxzRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6
c2V0QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2Fn
ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6Ok1hcmtBbGxV
bmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdl
PE1lc3NhZ2VJbmZvOjptYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZz4oV1RG
TW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVz
c2FnZVR5cGU6Ok1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVk
Rm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5m
bzo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0
aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSwgV1RGTW92ZShyZXBseVNlbmRlcikpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlNldEVwaGVtZXJhbE1lYXN1
cmVtZW50Rm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6
c2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdl
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6U2V0UENNRnJh
dWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxN
ZXNzYWdlSW5mbzo6c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZz4oV1RGTW92
ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2Fn
ZVR5cGU6OlN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3Rpbmc6CisgICAgICAgIGhhbmRsZVBD
TU1lc3NhZ2U8TWVzc2FnZUluZm86OnN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3Rpbmc+KFdU
Rk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1l
c3NhZ2VUeXBlOjpEZXN0cm95U3RvcmVGb3JUZXN0aW5nOgorICAgICAgICBoYW5kbGVQQ01NZXNz
YWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjpkZXN0cm95U3RvcmVGb3JUZXN0aW5nPihXVEZNb3Zl
KGVuY29kZWRNZXNzYWdlKSwgV1RGTW92ZShyZXBseVNlbmRlcikpOworICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyOTJmYTlmMDk1
NWIzZTAyMjQ0NjUwMzcxZWRiNDkzOWMwNzFmYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1
ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIGNsYXNz
IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIDogYm9vbCB7IFVuYXR0cmli
dXRlZCwgQXR0cmlidXRlZCB9OworCitjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI7CisKK25hbWVzcGFjZSBQQ00geworCitjbGFzcyBNYW5hZ2VySW50ZXJmYWNlIHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5NYW5hZ2VySW50ZXJmYWNlKCkgeyB9OworCisgICAgdXNpbmcgQXR0
cmlidXRpb25EZXN0aW5hdGlvblNpdGUgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGU7CisgICAgdXNpbmcgQXR0cmlidXRpb25Ucmln
Z2VyRGF0YSA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRy
aWdnZXJEYXRhOworICAgIHVzaW5nIFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBTb3VyY2VTaXRlID0gV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGU7CisKKyAgICB2aXJ0dWFsIHZv
aWQgc3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYs
IGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWRp
cmVjdERvbWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJMKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1pZ3Jh
dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKFByaXZhdGVDbGlja01l
YXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKSA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgdG9TdHJpbmdGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nKT4mJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRPdmVycmlk
ZVRpbWVyRm9yVGVzdGluZyhib29sIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFRv
a2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwmJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoVVJMJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZyhVUkwmJiBzb3VyY2VVUkwsIFVS
TCYmIGRlc3RpbmF0aW9uVVJMKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1hcmtBbGxVbmF0dHJp
YnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYXJrQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEVwaGVtZXJh
bE1lYXN1cmVtZW50Rm9yVGVzdGluZyhib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFBD
TUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoU3RyaW5nJiYgdW5saW5rYWJsZVRva2Vu
LCBTdHJpbmcmJiBzZWNyZXRUb2tlbiwgU3RyaW5nJiYgc2lnbmF0dXJlLCBTdHJpbmcmJiBrZXlJ
RCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5n
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95U3RvcmVGb3JUZXN0aW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOworfTsKKworY29uc3RleHByIGNvbnN0IGNoYXIqIHBy
b3RvY29sVmVyc2lvbktleSB7ICJ2ZXJzaW9uIiB9OworY29uc3RleHByIHVpbnQ2NF90IHByb3Rv
Y29sVmVyc2lvblZhbHVlIHsgMSB9OworCitjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xN
ZXNzYWdlVHlwZUtleSB7ICJtZXNzYWdlIHR5cGUiIH07CitlbnVtIGNsYXNzIE1lc3NhZ2VUeXBl
IDogdWludDhfdCB7CisgICAgU3RvcmVVbmF0dHJpYnV0ZWQsCisgICAgSGFuZGxlQXR0cmlidXRp
b24sCisgICAgQ2xlYXIsCisgICAgQ2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbiwKKyAgICBNaWdy
YXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZSwKKyAgICBUb1N0cmlu
Z0ZvclRlc3RpbmcsCisgICAgU2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcsCisgICAgU2V0VG9r
ZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nLAorICAgIFNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVz
dGluZywKKyAgICBTZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nLAorICAgIE1hcmtB
bGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nLAorICAgIE1hcmtBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZywKKyAgICBTZXRFcGhlbWVy
YWxNZWFzdXJlbWVudEZvclRlc3RpbmcsCisgICAgU2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVz
Rm9yVGVzdGluZywKKyAgICBTdGFydFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nLAorICAgIERl
c3Ryb3lTdG9yZUZvclRlc3RpbmcsCit9OworCitjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9j
b2xFbmNvZGVkTWVzc2FnZUtleSB7ICJlbmNvZGVkIG1lc3NhZ2UiIH07Cit1c2luZyBFbmNvZGVk
TWVzc2FnZSA9IFZlY3Rvcjx1aW50OF90PjsKKwordm9pZCBkZWNvZGVNZXNzYWdlQW5kU2VuZFRv
TWFuYWdlcihNZXNzYWdlVHlwZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYpOworYm9vbCBtZXNzYWdlVHlwZVNl
bmRzUmVwbHkoTWVzc2FnZVR5cGUpOworCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVu
dW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZSwKKyAgICAgICAgV2Vi
S2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTdG9yZVVuYXR0cmlidXRlZCwKKyAgICAgICAgV2ViS2l0
OjpQQ006Ok1lc3NhZ2VUeXBlOjpIYW5kbGVBdHRyaWJ1dGlvbiwKKyAgICAgICAgV2ViS2l0OjpQ
Q006Ok1lc3NhZ2VUeXBlOjpDbGVhciwKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBl
OjpDbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2Fn
ZVR5cGU6Ok1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlLAor
ICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlRvU3RyaW5nRm9yVGVzdGluZywKKyAg
ICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTZXRPdmVycmlkZVRpbWVyRm9yVGVzdGlu
ZywKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTZXRUb2tlblB1YmxpY0tleVVS
TEZvclRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6U2V0VG9rZW5T
aWduYXR1cmVVUkxGb3JUZXN0aW5nLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6
OlNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6UENN
OjpNZXNzYWdlVHlwZTo6TWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3RpbmcsCisg
ICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6TWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nLAorICAgICAgICBXZWJLaXQ6OlBDTTo6
TWVzc2FnZVR5cGU6OlNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZywKKyAgICAgICAg
V2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JU
ZXN0aW5nLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlN0YXJ0VGltZXJJbW1l
ZGlhdGVseUZvclRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6RGVz
dHJveVN0b3JlRm9yVGVzdGluZworICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NhZTRlNGZmNThjYjYxZjU1
ZjViNTE5NWJhNWUzZDBiYThkYmRkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyUHJveHkuY3BwCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
clByb3h5LmgiCisKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaCIKKyNpbmNsdWRl
ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK25hbWVzcGFjZSBQQ00geworCit0ZW1wbGF0ZTxNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwg
dHlwZW5hbWUuLi4gQXJncz4KK3ZvaWQgc2VuZE1lc3NhZ2UoQXJncyYmLi4uIGFyZ3MpCit7Cisg
ICAgRW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIuZW5jb2RlKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLik7CisgICAgQ29ubmVjdGlvbjo6Y29ubmVjdGlvblRvRGFlbW9uKCkuc2VuZCht
ZXNzYWdlVHlwZSwgZW5jb2Rlci50YWtlQnVmZmVyKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmdzPiBzdHJ1Y3QgUmVwbHlDYWxsZXI7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNh
bGxlcjw+IHsKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGVjb2RlciYmIGRlY29kZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQorfTsKK3RlbXBsYXRlPD4gc3RydWN0IFJl
cGx5Q2FsbGVyPFN0cmluZz4geworICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShEZWNvZGVyJiYg
ZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc3RyaW5nOworICAg
ICAgICBkZWNvZGVyID4+IHN0cmluZzsKKyAgICAgICAgaWYgKCFzdHJpbmcpCisgICAgICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZSgqc3RyaW5nKSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8TWVzc2FnZVR5cGUg
bWVzc2FnZVR5cGUsIHR5cGVuYW1lLi4uIEFyZ3MsIHR5cGVuYW1lLi4uIFJlcGx5QXJncz4KK3Zv
aWQgc2VuZE1lc3NhZ2VXaXRoUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXBseUFyZ3Mu
Li4pPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcmdzJiYuLi4gYXJncykKK3sKKyAgICBFbmNvZGVy
IGVuY29kZXI7CisgICAgZW5jb2Rlci5lbmNvZGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KTsKKyAgICBDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9EYWVtb24oKS5zZW5kV2l0aFJlcGx5KG1l
c3NhZ2VUeXBlLCBlbmNvZGVyLnRha2VCdWZmZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvIHJlcGx5QnVmZmVyKSBtdXRhYmxlIHsKKyAg
ICAgICAgRGVjb2RlciBkZWNvZGVyKFdURk1vdmUocmVwbHlCdWZmZXIpKTsKKyAgICAgICAgUmVw
bHlDYWxsZXI8UmVwbHlBcmdzLi4uPjo6Y2FsbFJlcGx5KFdURk1vdmUoZGVjb2RlciksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6
OnN0b3JlVW5hdHRyaWJ1dGVkKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgcGNt
KQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpTdG9yZVVuYXR0cmlidXRlZD4ocGNt
KTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OmhhbmRsZUF0dHJpYnV0aW9uKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYgdHJpZ2dlckRh
dGEsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBy
ZWRpcmVjdERvbWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJMKQoreworICAgIHNlbmRNZXNz
YWdlPE1lc3NhZ2VUeXBlOjpIYW5kbGVBdHRyaWJ1dGlvbj4odHJpZ2dlckRhdGEsIHJlcXVlc3RV
UkwsIHJlZGlyZWN0RG9tYWluLCBmaXJzdFBhcnR5VVJMKTsKK30KKwordm9pZCBNYW5hZ2VyUHJv
eHk6OmNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlVHlwZTo6Q2xlYXI+KFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OmNsZWFyRm9yUmVn
aXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNl
bmRNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VUeXBlOjpDbGVhckZvclJlZ2lzdHJhYmxlRG9tYWlu
PihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZG9tYWluKTsKK30KKwordm9pZCBNYW5hZ2Vy
UHJveHk6Om1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgcGNtLCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uVHlwZSB0eXBlKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBl
OjpNaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZT4ocGNtLCB0
eXBlKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OnRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7Cisg
ICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZVR5cGU6OlRvU3RyaW5nRm9yVGVzdGluZz4o
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6c2V0
T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkKK3sKKyAgICBzZW5kTWVzc2FnZTxN
ZXNzYWdlVHlwZTo6U2V0T3ZlcnJpZGVUaW1lckZvclRlc3Rpbmc+KHZhbHVlKTsKK30KKwordm9p
ZCBNYW5hZ2VyUHJveHk6OnNldFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwmJiB1cmwp
Cit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlNldFRva2VuUHVibGljS2V5VVJMRm9y
VGVzdGluZz4odXJsKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OnNldFRva2VuU2lnbmF0dXJl
VVJMRm9yVGVzdGluZyhVUkwmJiB1cmwpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6
OlNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZz4odXJsKTsKK30KKwordm9pZCBNYW5hZ2Vy
UHJveHk6OnNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJMJiYgc291cmNlVVJM
LCBVUkwmJiBkZXN0aW5hdGlvblVSTCkKK3sKKyAgICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlwZTo6
U2V0QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZz4oc291cmNlVVJMLCBkZXN0aW5hdGlv
blVSTCk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjptYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBp
cmVkRm9yVGVzdGluZygpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6Ok1hcmtBbGxV
bmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nPigpOworfQorCit2b2lkIE1hbmFnZXJQcm94
eTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0
aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBzZW5kTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlVHlwZTo6TWFya0F0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nPihXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpzZXRFcGhlbWVyYWxNZWFzdXJlbWVu
dEZvclRlc3RpbmcoYm9vbCB2YWx1ZSkKK3sKKyAgICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlwZTo6
U2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nPih2YWx1ZSk7Cit9CisKK3ZvaWQgTWFu
YWdlclByb3h5OjpzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFN0cmluZyYm
IHVubGlua2FibGVUb2tlbiwgU3RyaW5nJiYgc2VjcmV0VG9rZW4sIFN0cmluZyYmIHNpZ25hdHVy
ZSwgU3RyaW5nJiYga2V5SUQpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlNldFBD
TUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3Rpbmc+KHVubGlua2FibGVUb2tlbiwgc2VjcmV0
VG9rZW4sIHNpZ25hdHVyZSwga2V5SUQpOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6c3RhcnRU
aW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZygpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5
cGU6OlN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3Rpbmc+KCk7Cit9CisKK3ZvaWQgTWFuYWdl
clByb3h5OjpkZXN0cm95U3RvcmVGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdl
VHlwZTo6RGVzdHJveVN0b3JlRm9yVGVzdGluZz4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworfQorCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNkNDExOTk0YjRiMDZmMGY2YjVkOTkx
NWYyZjJjZGZhY2E5NmU2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyUHJveHkuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaCIK
KyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFt
ZXNwYWNlIFBDTSB7CisKK2NsYXNzIE1hbmFnZXJQcm94eSA6IHB1YmxpYyBNYW5hZ2VySW50ZXJm
YWNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2b2lkIHN0
b3JlVW5hdHRyaWJ1dGVkKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYpIGZpbmFs
OworICAgIHZvaWQgaGFuZGxlQXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZGlyZWN0RG9tYWluLCBjb25zdCBVUkwmIGZp
cnN0UGFydHlVUkwpIGZpbmFsOworICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
IGZpbmFsOworICAgIHZvaWQgbWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2Fj
eVN0b3JhZ2UoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpIGZpbmFsOworCisgICAgdm9pZCB0b1N0cmluZ0Zv
clRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKSBjb25zdCBmaW5hbDsK
KyAgICB2b2lkIHNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wpIGZpbmFsOworICAgIHZv
aWQgc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTCYmKSBmaW5hbDsKKyAgICB2b2lk
IHNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwmJikgZmluYWw7CisgICAgdm9pZCBz
ZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVSTCYmIHNvdXJjZVVSTCwgVVJMJiYg
ZGVzdGluYXRpb25VUkwpIGZpbmFsOworICAgIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZEFzRXhw
aXJlZEZvclRlc3RpbmcoKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpIGZpbmFsOworICAgIHZvaWQgc2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5n
KGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVz
dGluZyhTdHJpbmcmJiB1bmxpbmthYmxlVG9rZW4sIFN0cmluZyYmIHNlY3JldFRva2VuLCBTdHJp
bmcmJiBzaWduYXR1cmUsIFN0cmluZyYmIGtleUlEKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0VGlt
ZXJJbW1lZGlhdGVseUZvclRlc3RpbmcoKSBmaW5hbDsKKyAgICB2b2lkIGRlc3Ryb3lTdG9yZUZv
clRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxYjU4
NTA2NjU4YTNmOTUzNWVlZmIxYTYwNWEyNTVkODcyNDc3MWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29h
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCkBAIC0wLDAg
KzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKworI2ltcG9ydCAiUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCIKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK0Nvbm5lY3Rpb246
OkNvbm5lY3Rpb24oT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4mJiBjb25uZWN0aW9uKQor
ICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpIHsgfQorCitDb25uZWN0aW9u
IENvbm5lY3Rpb246OmNvbm5lY3Rpb25Ub0RhZW1vbigpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T1NPYmplY3RQdHI8eHBjX2Nv
bm5lY3Rpb25fdD4+IGNvbm5lY3Rpb247CisgICAgaWYgKCFjb25uZWN0aW9uLmdldCgpKSB7Cisg
ICAgICAgIGNvbm5lY3Rpb24uZ2V0KCkgPSBhZG9wdE9TT2JqZWN0KHhwY19jb25uZWN0aW9uX2Ny
ZWF0ZV9tYWNoX3NlcnZpY2UoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2Vydmlj
ZSIsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIDApKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rp
b25fc2V0X2V2ZW50X2hhbmRsZXIoY29ubmVjdGlvbi5nZXQoKS5nZXQoKSwgXih4cGNfb2JqZWN0
X3QgZXZlbnQpIHsKKyAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAg
ICAgICAgICBpZiAoZXZlbnQgPT0gWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5URVJSVVBURUQpIHsK
KyAgICAgICAgICAgICAgICAvLyBEYWVtb24gY3Jhc2hlZCwgd2Ugd2lsbCBuZWVkIHRvIG1ha2Ug
YSBuZXcgY29ubmVjdGlvbiB0byBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgZGFlbW9uLgorICAgICAg
ICAgICAgICAgIGNvbm5lY3Rpb24uZ2V0KCkgPSBudWxscHRyOworICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0pOworICAg
ICAgICB4cGNfY29ubmVjdGlvbl9hY3RpdmF0ZShjb25uZWN0aW9uLmdldCgpLmdldCgpKTsKKyAg
ICB9CisgICAgcmV0dXJuIENvbm5lY3Rpb24oT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4o
Y29ubmVjdGlvbi5nZXQoKSkpOworfQorCitzdGF0aWMgT1NPYmplY3RQdHI8eHBjX29iamVjdF90
PiBkaWN0aW9uYXJ5RnJvbU1lc3NhZ2UoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIEVuY29kZWRN
ZXNzYWdlJiYgbWVzc2FnZSkKK3sKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE9TT2JqZWN0
KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgYWRkVmVy
c2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KFdURk1vdmUobWVzc2FnZSksIGRpY3Rp
b25hcnkuZ2V0KCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFyeS5n
ZXQoKSwgcHJvdG9jb2xNZXNzYWdlVHlwZUtleSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1lc3Nh
Z2VUeXBlKSk7CisgICAgcmV0dXJuIGRpY3Rpb25hcnk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6
c2VuZChNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdlKQor
eworICAgIGlmICghbV9jb25uZWN0aW9uKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNz
YWdlKG1fY29ubmVjdGlvbi5nZXQoKSwgZGljdGlvbmFyeUZyb21NZXNzYWdlKG1lc3NhZ2VUeXBl
LCBXVEZNb3ZlKG1lc3NhZ2UpKS5nZXQoKSk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6c2VuZFdp
dGhSZXBseShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGlmICghbV9jb25uZWN0aW9uKSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICB9
CisKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5RnJvbU1lc3NhZ2UobWVzc2FnZVR5
cGUsIFdURk1vdmUobWVzc2FnZSkpOworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZV93
aXRoX3JlcGx5KG1fY29ubmVjdGlvbi5nZXQoKSwgZGljdGlvbmFyeS5nZXQoKSwgZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoeHBjX29iamVjdF90IHJlcGx5KSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKHhwY19nZXRfdHlwZShyZXBseSkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkgewor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoeHBjX2RpY3Rpb25h
cnlfZ2V0X3VpbnQ2NChyZXBseSwgcHJvdG9jb2xWZXJzaW9uS2V5KSAhPSBwcm90b2NvbFZlcnNp
b25WYWx1ZSkgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgfQorICAgICAgICBzaXpl
X3QgZGF0YVNpemUgeyAwIH07CisgICAgICAgIGNvbnN0IHZvaWQqIGRhdGEgPSB4cGNfZGljdGlv
bmFyeV9nZXRfZGF0YShyZXBseSwgcHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSwgJmRhdGFTaXpl
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YSksIGRhdGFTaXplIH0pOworICAgIH0pLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnROZXR3b3JrTG9hZGVyQ29jb2EubW0KaW5kZXggZDZiZjA2ZTExMWY2YmI1ZjdlZjI4ZjE5
NmQyZWUzODAwYzdjOGE0Yy4uYjNiYTFlMjQyNDIwOGU3NTQxOGMyNzJlNmI2NTQwNzM0MDM2ZDY0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1t
CkBAIC01Nyw2ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NQQ01SZXF1ZXN0KFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZCwKIAogLSAodm9pZClVUkxT
ZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRhc2sgKil0
YXNrIGRpZFJlY2VpdmVDaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKilj
aGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFs
KSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIC8vIEZJWE1FOiBBZGQgcGx1Ym1pbmcgc28gdGhh
dCB3ZSBjYW4gdGVsbCB0aGUgZGFlbW9uIHdoaWNoIGNlcnRpZmljYXRlcyB0byBhY2NlcHQgd2l0
aG91dCB1c2luZyBOZXR3b3JrU2Vzc2lvbkNvY29hLgogICAgIGlmIChbY2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRo
ZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0XQogICAgICAgICAmJiBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjphbGxvd3NTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNoYWxsZW5nZSkpCiAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdl
VXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxl
bmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFhQQ1V0aWxpdGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjNzA3ODZlZjE1OThjODNmYTQzNjJkZjNkNmM3
ZmU3NzgzZTEyMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
WFBDVXRpbGl0aWVzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK3ZvaWQgYWRkVmVy
c2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KFZlY3Rvcjx1aW50OF90PiYmLCB4cGNf
b2JqZWN0X3QpOworCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1tIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2Nv
YS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjMw
MzFiNWMzNmI3MTI2MTgyMTcwNDNmZjk3ZGZmOTQ3NGM1ZDJjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2Nv
YS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5tbQpAQCAtMCwwICsxLDUwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNw
YWNlIFBDTSB7CisKK3ZvaWQgYWRkVmVyc2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5
KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIHhwY19vYmplY3RfdCBkaWN0aW9uYXJ5KQorewor
ICAgIEFTU0VSVCh4cGNfZ2V0X3R5cGUoZGljdGlvbmFyeSkgPT0gWFBDX1RZUEVfRElDVElPTkFS
WSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5LCBQQ006OnByb3Rv
Y29sVmVyc2lvbktleSwgUENNOjpwcm90b2NvbFZlcnNpb25WYWx1ZSk7CisKKyAgICBhdXRvIGJ1
ZmZlclNpemUgPSBtZXNzYWdlLnNpemUoKTsKKyAgICBhdXRvIHJhd1BvaW50ZXIgPSBtZXNzYWdl
LnJlbGVhc2VCdWZmZXIoKS5sZWFrUHRyKCk7CisgICAgYXV0byBkaXNwYXRjaERhdGEgPSBhZG9w
dE5TKGRpc3BhdGNoX2RhdGFfY3JlYXRlKHJhd1BvaW50ZXIsIGJ1ZmZlclNpemUsIGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIGZhc3RGcmVlKHJhd1BvaW50ZXIpOworICAg
IH0pKTsKKyAgICBhdXRvIHhwY0RhdGEgPSBhZG9wdE9TT2JqZWN0KHhwY19kYXRhX2NyZWF0ZV93
aXRoX2Rpc3BhdGNoX2RhdGEoZGlzcGF0Y2hEYXRhLmdldCgpKSk7CisgICAgeHBjX2RpY3Rpb25h
cnlfc2V0X3ZhbHVlKGRpY3Rpb25hcnksIFBDTTo6cHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSwg
eHBjRGF0YS5nZXQoKSk7CisKK30KKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMv
Y29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KaW5k
ZXggM2I5Nzk0NTUwNzllNDU2ZTM1NDkzZTFlMWU1Y2E0NmI5ZDdlODhlZC4uMTk3NGI4ZTlmMjU5
YWVlZmM5NDQ2NDY4NGIyMDRkMzUwZjM4ZDQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5l
dHdvcmtQcm9jZXNzLnNiLmluCkBAIC0zNTcsNiArMzU3LDggQEAKICAgICAoZ2xvYmFsLW5hbWUg
ImNvbS5hcHBsZS5BcHBTU08uc2VydmljZS14cGMiKQogKQogCisoYWxsb3cgbWFjaC1sb29rdXAg
KGdsb2JhbC1uYW1lICJjb20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiKSkK
KwogKHdpdGgtZmlsdGVyICh1aWQgMCkKICAgICAoYWxsb3cgbWFjaC1sb29rdXAKICAgICAgICAg
KGdsb2JhbC1uYW1lICJjb20uYXBwbGUuRGlza0FyYml0cmF0aW9uLmRpc2thcmJpdHJhdGlvbmQi
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCmluZGV4IGJjZjdj
ZDE2M2Q5YmE5MjNkMTgwYTAzZjhhNmVlNDUwZjc2YzFhMWQuLjUzM2U4MDk3MDU0MDU1YjgxYTZj
NWVhMTA5ODFjNWI0ZDQwMjg3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1
bWVudENvZGVyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgPSB2b2lkPiBzdHJ1Y3QgQXJndW1lbnRDb2RlciB7CiAgICAgICAgIHQuZW5jb2RlKGVuY29k
ZXIpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAg
ICBpZiBjb25zdGV4cHIoSGFzTW9kZXJuRGVjb2RlclY8VD4pCkBAIC04Miw2ICs4Myw3IEBAIHN0
cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19h
cml0aG1ldGljX3Y8VD4+PiB7CiAgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihUKSwgYWxp
Z25vZihUKSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxUPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAg
ICAgICAgIFQgcmVzdWx0OwpAQCAtMTAwLDYgKzEwMiw3IEBAIHN0cnVjdCBBcmd1bWVudENvZGVy
PFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtX3Y8VD4+PiB7CiAgICAg
ICAgIGVuY29kZXIgPDwgV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZTxUPih2YWx1ZSk7CiAgICAg
fQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxUPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIHN0ZDo6b3B0
aW9uYWw8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxUPj4gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKaW5kZXggODEwZWUyY2U1MWYyN2MyZGJk
NjA3ZTUzMmFhMjZkNjA1NjlhYjI5Yi4uZmZmOWU1ZTNmNmIzZTJlZDU2YjU2NjFlMDMyNzQ5ZWU2
MzIzNmQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJz
LmNwcApAQCAtMjcsMTYgKzI3LDIzIEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKIAog
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudERlY29kZXIuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIu
aCIKICNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIElQQyB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiB2b2lkIEFyZ3VtZW50Q29k
ZXI8V2FsbFRpbWU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2FsbFRpbWUmIHRp
bWUpCiB7CiAgICAgZW5jb2RlciA8PCB0aW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKTsK
IH0KK3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+OjplbmNvZGU8RW5jb2Rl
cj4oRW5jb2RlciYsIGNvbnN0IFdhbGxUaW1lJik7Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENv
ZGVyPFdhbGxUaW1lPjo6ZW5jb2RlPFdlYktpdDo6UENNOjpFbmNvZGVyPihXZWJLaXQ6OlBDTTo6
RW5jb2RlciYsIGNvbnN0IFdhbGxUaW1lJik7CiAKIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIEFy
Z3VtZW50Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2FsbFRpbWUm
IHRpbWUpCiB7CkBAIC00OCw2ICs1NSw3IEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIEFyZ3Vt
ZW50Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2FsbFRpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiBXQVJOX1VOVVNF
RF9SRVRVUk4gc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gQXJndW1lbnRDb2RlcjxXYWxsVGltZT46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0
aW1lOwpAQCAtNTYsNiArNjQsMTAgQEAgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8
V2FsbFRpbWU+IEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGUoRGVjb2QKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRz
KCp0aW1lKTsKIH0KK3RlbXBsYXRlCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBBcmd1bWVudENv
ZGVyPFdhbGxUaW1lPjo6ZGVjb2RlPERlY29kZXI+KERlY29kZXImKTsKK3RlbXBsYXRlCitzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBBcmd1bWVudENvZGVyPFdhbGxUaW1lPjo6ZGVjb2RlPFdlYktp
dDo6UENNOjpEZWNvZGVyPihXZWJLaXQ6OlBDTTo6RGVjb2RlciYpOwogCiB2b2lkIEFyZ3VtZW50
Q29kZXI8QXRvbVN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBdG9tU3Ry
aW5nJiBhdG9tU3RyaW5nKQogewpAQCAtMTMzLDEyICsxNDUsMTQgQEAgdGVtcGxhdGUKIHZvaWQg
QXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGU8RW5jb2Rlcj4oRW5jb2RlciYsIGNvbnN0IFN0
cmluZyYpOwogdGVtcGxhdGUKIHZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGU8U3Ry
ZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyJiwgY29uc3QgU3Ry
aW5nJik7Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZTxXZWJL
aXQ6OlBDTTo6RW5jb2Rlcj4oV2ViS2l0OjpQQ006OkVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsK
IAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBEZWNvZGVyPgogc3RhdGljIGlubGluZSBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBs
ZW5ndGgpCiB7CiAgICAgLy8gQmVmb3JlIGFsbG9jYXRpbmcgdGhlIHN0cmluZywgbWFrZSBzdXJl
IHRoYXQgdGhlIGRlY29kZXIgYnVmZmVyIGlzIGJpZyBlbm91Z2guCi0gICAgaWYgKCFkZWNvZGVy
LmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48Q2hhcmFjdGVyVHlwZT4obGVuZ3RoKSkKKyAg
ICBpZiAoIWRlY29kZXIudGVtcGxhdGUgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxDaGFy
YWN0ZXJUeXBlPihsZW5ndGgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAog
ICAgIENoYXJhY3RlclR5cGUqIGJ1ZmZlcjsKQEAgLTE0OSwyNSArMTYzLDMyIEBAIHN0YXRpYyBp
bmxpbmUgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRlY29kZVN0cmluZ1RleHQoRGVjb2RlciYgZGVj
b2RlciwgdWludDMyX3QKICAgICByZXR1cm4gc3RyaW5nOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBEZWNvZGVyPgogV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBBcmd1
bWVudENvZGVyPFN0cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIHVpbnQz
Ml90IGxlbmd0aDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxlbmd0aCkpCisgICAgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gbGVuZ3RoOworICAgIGRlY29kZXIgPj4gbGVuZ3RoOworICAgIGlm
ICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIGlmIChs
ZW5ndGggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKSB7CisgICAgaWYg
KCpsZW5ndGggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKSB7CiAgICAg
ICAgIC8vIFRoaXMgaXMgdGhlIG51bGwgc3RyaW5nLgogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAgICAgfQogICAgIAotICAgIGJvb2wgaXM4Qml0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aXM4Qml0KSkKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzOEJpdDsKKyAgICBkZWNvZGVyID4+
IGlzOEJpdDsKKyAgICBpZiAoIWlzOEJpdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKLSAgICBpZiAoaXM4Qml0KQotICAgICAgICByZXR1cm4gZGVjb2RlU3RyaW5nVGV4dDxM
Q2hhcj4oZGVjb2RlciwgbGVuZ3RoKTsKLSAgICByZXR1cm4gZGVjb2RlU3RyaW5nVGV4dDxVQ2hh
cj4oZGVjb2RlciwgbGVuZ3RoKTsKKyAgICBpZiAoKmlzOEJpdCkKKyAgICAgICAgcmV0dXJuIGRl
Y29kZVN0cmluZ1RleHQ8TENoYXI+KGRlY29kZXIsICpsZW5ndGgpOworICAgIHJldHVybiBkZWNv
ZGVTdHJpbmdUZXh0PFVDaGFyPihkZWNvZGVyLCAqbGVuZ3RoKTsKIH0KK3RlbXBsYXRlCitzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gQXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNvZGU8RGVjb2Rlcj4o
RGVjb2RlciYpOwordGVtcGxhdGUKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBBcmd1bWVudENvZGVy
PFN0cmluZz46OmRlY29kZTxXZWJLaXQ6OlBDTTo6RGVjb2Rlcj4oV2ViS2l0OjpQQ006OkRlY29k
ZXImKTsKIAogV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgQXJndW1lbnRDb2RlcjxTdHJpbmc+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU3RyaW5nJiByZXN1bHQpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRleCBjOTdhNmY1NzZlZmRhZWFlMDRm
Njk4M2JlMjU5NDJjZTIwMzlmZTlmLi5iMTgyYzU0ZWI3ODhkM2Q2OTgxNGFhODA3M2U0ZmYxYWE5
ZjM5MmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgK
QEAgLTMwMCw2ICszMDAsNyBAQCBhdXRvIHR1cGxlRnJvbVR1cGxlQW5kT2JqZWN0KFQmJiBvYmpl
Y3QsIHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JiYgdHVwbGUpCiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFR5cGUsIHR5cGVuYW1lLi4uIFR5cGVzPgogc3RydWN0IFR1cGxlRGVjb2RlckltcGwgeworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3Rk
Ojp0dXBsZTxUeXBlLCBUeXBlcy4uLj4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsK
ICAgICAgICAgc3RkOjpvcHRpb25hbDxUeXBlPiBvcHRpb25hbDsKQEAgLTMxNyw2ICszMTgsNyBA
QCBzdHJ1Y3QgVHVwbGVEZWNvZGVySW1wbCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CiBz
dHJ1Y3QgVHVwbGVEZWNvZGVySW1wbDxUeXBlPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVj
b2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFR5cGU+PiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VHlwZT4gb3B0
aW9uYWw7CkBAIC0zMjksNiArMzMxLDcgQEAgc3RydWN0IFR1cGxlRGVjb2RlckltcGw8VHlwZT4g
ewogCiB0ZW1wbGF0ZTxzaXplX3Qgc2l6ZSwgdHlwZW5hbWUuLi4gRWxlbWVudHM+CiBzdHJ1Y3Qg
VHVwbGVEZWNvZGVyIHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+PiBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICB7CiAgICAgICAgIHJldHVybiBUdXBsZURlY29kZXJJbXBsPEVsZW1lbnRz
Li4uPjo6ZGVjb2RlKGRlY29kZXIpOwpAQCAtMzM3LDYgKzM0MCw3IEBAIHN0cnVjdCBUdXBsZURl
Y29kZXIgewogCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgVHVwbGVEZWNvZGVyPDA+IHsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVw
bGU8Pj4gZGVjb2RlKERlY29kZXImKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV90
dXBsZSgpOwpAQCAtMzUwLDYgKzM1NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1lbnRz
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj4gewogICAgICAg
ICBUdXBsZUVuY29kZXI8c2l6ZW9mLi4uKEVsZW1lbnRzKSwgRWxlbWVudHMuLi4+OjplbmNvZGUo
ZW5jb2RlciwgdHVwbGUpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxFbGVtZW50cy4uLj4+IGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIFR1cGxlRGVjb2Rlcjxz
aXplb2YuLi4oRWxlbWVudHMpLCBFbGVtZW50cy4uLj46OmRlY29kZShkZWNvZGVyKTsKQEAgLTcy
MSw4ICs3MjYsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHlwZXM+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdURjo6VmFyaWFudDxUeXBlcy4uLj4+IHsKIH07CiAgICAgCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdhbGxUaW1lPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5j
b2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdhbGxUaW1lJik7
CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2Fs
bFRpbWUmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIApAQCAtNzQwLDYgKzc0
Nyw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U3RyaW5nPiB7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGUoRGVjb2RlciYsIFN0cmluZyYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLTWFpbi5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLTWFpbi5oCmluZGV4IDdhOTI3Yzc3ZDI2ZDg1
NWI0YjZmZWFkYTk4MDNhMDQ3Y2VlOGI1YzMuLjRiZTc5ZDJhNWJkMGU3MDRmOWEzYmM0ODNiMmQy
NThjZDQ4ZWRiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9X
S01haW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tNYWluLmgKQEAg
LTMzLDYgKzMzLDcgQEAgZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAogV0tfRVhQT1JUIGludCBXS1hQ
Q1NlcnZpY2VNYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiogYXJndikgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CitXS19FWFBPUlQgaW50IFdLUENNRGFlbW9uTWFp
bihpbnQgYXJnYywgY29uc3QgY2hhcioqIGFyZ3YpIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLTWFpbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS01haW4ubW0KaW5kZXggZTQ4MDVhNDhkNTE0MDZh
ZDU5NTY2YjM3N2JlMjUzOTgyYTlhZWI5MC4uNDY4MDFkYmZmY2U2YjgyNmNkMTBkY2FhZGEzMzBk
NmY1ZmRmMThiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dL
TWFpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tNYWluLm1tCkBA
IC0yNiw5ICsyNiwxNSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS01haW4uaCIK
IAorI2ltcG9ydCAiUENNRGFlbW9uRW50cnlQb2ludC5oIgogI2ltcG9ydCAiWFBDU2VydmljZUVu
dHJ5UG9pbnQuaCIKIAogaW50IFdLWFBDU2VydmljZU1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIq
KiBhcmd2KQogewogICAgIHJldHVybiBXZWJLaXQ6OlhQQ1NlcnZpY2VNYWluKGFyZ2MsIGFyZ3Yp
OwogfQorCitpbnQgV0tQQ01EYWVtb25NYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiogYXJndikK
K3sKKyAgICByZXR1cm4gV2ViS2l0OjpQQ01EYWVtb25NYWluKGFyZ2MsIGFyZ3YpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9E
YWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQ
b2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ4YzkxMjBiZjVjY2JjMTcxZjlhNWNkOWVkMTJlN2NkMDM5NmUzNDUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0Rh
ZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50LmgKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworaW50IFBDTURhZW1vbk1haW4o
aW50LCBjb25zdCBjaGFyKiopOworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BD
TURhZW1vbkVudHJ5UG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRp
bGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdm
MjMyMWRlNWIxOWMxYzE2NzQ5YmZkNmE2MzQ2NGY4NGVkNTI0NTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9Q
Q01EYWVtb25FbnRyeVBvaW50Lm1tCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQQ01EYWVtb25FbnRyeVBvaW50LmgiCisKKyNpbXBv
cnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oIgorI2ltcG9ydCAiUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgiCisjaW1wb3J0ICJQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oIgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmg+CisjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbXBvcnQgPHd0Zi9I
YXNoU2V0Lmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0IDx3dGYvY29jb2Ev
RW50aXRsZW1lbnRzLmg+CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKworLy8g
RklYTUU6IEFkZCBkYWVtb24gcGxpc3QgdG8gcmVwb3NpdG9yeS4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3N0YXRpYyBIYXNoU2V0PFJldGFpblB0cjx4cGNfY29ubmVjdGlvbl90Pj4mIHBlZXJz
KCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxIYXNoU2V0PFJldGFpblB0cjx4cGNfY29ubmVjdGlvbl90Pj4+IHNldDsKKyAgICBy
ZXR1cm4gc2V0LmdldCgpOworfQorCitzdGF0aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQQ006
OkVuY29kZWRNZXNzYWdlJiYpPiByZXBseVNlbmRlcihQQ006Ok1lc3NhZ2VUeXBlIG1lc3NhZ2VU
eXBlLCBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+JiYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIVBD
TTo6bWVzc2FnZVR5cGVTZW5kc1JlcGx5KG1lc3NhZ2VUeXBlKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KV0gKFBDTTo6RW5j
b2RlZE1lc3NhZ2UmJiBtZXNzYWdlKSB7CisgICAgICAgIGF1dG8gcmVwbHkgPSBhZG9wdE9TT2Jq
ZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZV9yZXBseShyZXF1ZXN0LmdldCgpKSk7CisgICAgICAg
IFBDTTo6YWRkVmVyc2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KFdURk1vdmUobWVz
c2FnZSksIHJlcGx5LmdldCgpKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdl
KHhwY19kaWN0aW9uYXJ5X2dldF9yZW1vdGVfY29ubmVjdGlvbihyZXF1ZXN0LmdldCgpKSwgcmVw
bHkuZ2V0KCkpOworICAgIH07Cit9CisKK3N0YXRpYyB2b2lkIGNvbm5lY3Rpb25FdmVudEhhbmRs
ZXIoeHBjX29iamVjdF90IHJlcXVlc3QpCit7CisgICAgaWYgKHhwY19nZXRfdHlwZShyZXF1ZXN0
KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKQorICAgICAgICByZXR1cm47CisgICAgaWYgKHhwY19k
aWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgUENNOjpwcm90b2NvbFZlcnNpb25LZXkpICE9
IFBDTTo6cHJvdG9jb2xWZXJzaW9uVmFsdWUpIHsKKyAgICAgICAgTlNMb2coQCJyZWNlaXZlZCBy
ZXF1ZXN0IHRoYXQgd2FzIG5vdCB0aGUgY3VycmVudCBwcm90b2NvbCB2ZXJzaW9uIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIG1lc3NhZ2VUeXBlIHsgc3RhdGljX2Nhc3Q8
UENNOjpNZXNzYWdlVHlwZT4oeHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXF1ZXN0LCBQQ006
OnByb3RvY29sTWVzc2FnZVR5cGVLZXkpKSB9OworICAgIHNpemVfdCBkYXRhU2l6ZSB7IDAgfTsK
KyAgICBjb25zdCB2b2lkKiBkYXRhID0geHBjX2RpY3Rpb25hcnlfZ2V0X2RhdGEocmVxdWVzdCwg
UENNOjpwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5LCAmZGF0YVNpemUpOworICAgIFBDTTo6RW5j
b2RlZE1lc3NhZ2UgZW5jb2RlZE1lc3NhZ2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YSksIGRhdGFTaXplIH07CisgICAgZGVjb2RlTWVzc2FnZUFuZFNlbmRUb01hbmFnZXIobWVz
c2FnZVR5cGUsIFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpLCByZXBseVNlbmRlcihtZXNzYWdlVHlw
ZSwgcmVxdWVzdCkpOworfQorCitzdGF0aWMgdm9pZCBzdGFydExpc3RlbmluZ0Zvck1hY2hTZXJ2
aWNlQ29ubmVjdGlvbnMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPU09iamVjdFB0
cjx4cGNfY29ubmVjdGlvbl90Pj4gbGlzdGVuZXIgPSB4cGNfY29ubmVjdGlvbl9jcmVhdGVfbWFj
aF9zZXJ2aWNlKCJjb20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiLCBkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBYUENfQ09OTkVDVElPTl9NQUNIX1NFUlZJQ0VfTElTVEVO
RVIpOworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKGxpc3RlbmVyLmdldCgp
LmdldCgpLCBeKHhwY19vYmplY3RfdCBwZWVyKSB7CisgICAgICAgIGlmICh4cGNfZ2V0X3R5cGUo
cGVlcikgIT0gWFBDX1RZUEVfQ09OTkVDVElPTikKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAvLyBGSVhNRTogQWRkIGFuIGVudGl0bGVtZW50IGNoZWNrIGhlcmUgc28gdGhhdCBvbmx5
IHRoZSBuZXR3b3JrIHByb2Nlc3MgY2FuIHN1Y2Nlc3NmdWxseSBjb25uZWN0LgorCisgICAgICAg
IHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKHBlZXIsIF4oeHBjX29iamVjdF90IGV2
ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQgPT0gWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5U
RVJSVVBURUQpIHsKKyAgICAgICAgICAgICAgICBwZWVycygpLnJlbW92ZShwZWVyKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb25uZWN0aW9u
RXZlbnRIYW5kbGVyKGV2ZW50KTsKKyAgICAgICAgfSk7CisgICAgICAgIHhwY19jb25uZWN0aW9u
X3NldF90YXJnZXRfcXVldWUocGVlciwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CisgICAg
ICAgIHhwY19jb25uZWN0aW9uX2FjdGl2YXRlKHBlZXIpOworICAgICAgICAKKyAgICAgICAgcGVl
cnMoKS5hZGQocGVlcik7CisgICAgfSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fYWN0aXZhdGUobGlz
dGVuZXIuZ2V0KCkuZ2V0KCkpOworfQorCitzdGF0aWMgdm9pZCByZWdpc3RlclNjaGVkdWxlZEFj
dGl2aXR5SGFuZGxlcigpCit7CisgICAgeHBjX2FjdGl2aXR5X3JlZ2lzdGVyKCJjb20uYXBwbGUu
d2Via2l0LmFkYXR0cmlidXRpb25kLmFjdGl2aXR5IiwgWFBDX0FDVElWSVRZX0NIRUNLX0lOLCBe
KHhwY19hY3Rpdml0eV90IGFjdGl2aXR5KSB7CisgICAgICAgIGlmICh4cGNfYWN0aXZpdHlfZ2V0
X3N0YXRlKGFjdGl2aXR5KSA9PSBYUENfQUNUSVZJVFlfU1RBVEVfQ0hFQ0tfSU4pIHsKKyAgICAg
ICAgICAgIHhwY19vYmplY3RfdCBjcml0ZXJpYSA9IHhwY19hY3Rpdml0eV9jb3B5X2NyaXRlcmlh
KGFjdGl2aXR5KTsKKworICAgICAgICAgICAgLy8gRklYTUU6IHNldCB2YWx1ZXMgaGVyZSB0aGF0
IGFsaWduIHdpdGggdmFsdWVzIGZyb20gdGhlIHBsaXN0LgorCisgICAgICAgICAgICB4cGNfYWN0
aXZpdHlfc2V0X2NyaXRlcmlhKGFjdGl2aXR5LCBjcml0ZXJpYSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRTogQWRkIGNvZGUgaGVyZSB0aGF0IGRv
ZXMgZGFpbHkgdGFza3Mgb2YgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLgorICAgIH0p
OworfQorCitzdGF0aWMgdm9pZCBlbnRlclNhbmRib3goKQoreworICAgIC8vIEZJWE1FOiBFbnRl
ciBhIHNhbmRib3ggaGVyZS4gV2Ugc2hvdWxkIG9ubHkgbmVlZCByZWFkL3dyaXRlIGFjY2VzcyB0
byBvdXIgZGF0YWJhc2UgYW5kIG5ldHdvcmsgYWNjZXNzIGFuZCBub3RoaW5nIGVsc2UuCit9CisK
K2ludCBQQ01EYWVtb25NYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiogYXJndikKK3sKKyAgICBp
ZiAoYXJnYyAhPSAyIHx8IHN0cmNtcChhcmd2WzFdLCAicnVuQXNEYWVtb24iKSkgeworICAgICAg
ICBOU0xvZyhAIlRoaXMgZXhlY3V0YWJsZSBpcyBpbnRlbmRlZCB0byBiZSBydW4gYXMgYSBkYWVt
b24uIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7
CisgICAgICAgIGVudGVyU2FuZGJveCgpOworICAgICAgICBzdGFydExpc3RlbmluZ0Zvck1hY2hT
ZXJ2aWNlQ29ubmVjdGlvbnMoKTsKKyAgICAgICAgcmVnaXN0ZXJTY2hlZHVsZWRBY3Rpdml0eUhh
bmRsZXIoKTsKKyAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOworICAgIH0KKyAg
ICBDRlJ1bkxvb3BSdW4oKTsKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAppbmRleCAyNDEyYmJmYWQ4ZTVmODExYjUxZTgyZjYwZDFjNTQ2MTlhMjE4
ODM5Li5jZmFiY2UwNWIyNGQwNzg5ODA2ZjE0YWFlOTA4NzFhYzIwYTg3ZGVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKQEAgLTEwMSw4ICsxMDEsMTQgQEAgTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJbXBsLmNwcAogTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFz
ZS5jcHAKIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGVidWdJbmZvLmNwcAogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
SW50ZXJmYWNlLmNwcAogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmNwcAogTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKK05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50Q29ubmVjdGlvbi5jcHAKK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcAorTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmNw
cAorTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRFbmNvZGVyLmNwcAorTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuY3BwCiAKIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgQG5vLXVuaWZ5CiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDg5MTM4MzRmNmJiNWY5MzllNzIwYjA5ZWZj
YjAyYzk1NDRmODRhYWEuLjExZTcyOTY4NGU0YTJhZGYwYjVjYjg5M2FkNjc5MWQ5MDA1ODI2MDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQxLDcgKzQxLDkgQEAgTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9p
bnQvQ29jb2EvRGFlbW9uL0RhZW1vbkVudHJ5UG9pbnQubW0KIE5ldHdvcmtQcm9jZXNzL0VudHJ5
UG9pbnQvQ29jb2EvWFBDU2VydmljZS9OZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0KIAorTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW0KIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRl
ckNvY29hLm1tCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5tbQogCiBOZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL2lvcy9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXJJT1MubW0KIApAQCAtMTkx
LDYgKzE5Myw4IEBAIFNoYXJlZC9Db2NvYS9XS05TVVJMUmVxdWVzdC5tbQogU2hhcmVkL0NvY29h
L1dLT2JqZWN0Lm1tCiBTaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29j
b2EubW0KIAorU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1v
bkVudHJ5UG9pbnQubW0KKwogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vy
dmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMv
Q29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjZjllMGRmNTRiZjY4YjI1MDAx
YzZjYzFkOWViY2I3M2FlMjExNzNmLi5mNjhiNGNmYjQ4NWQ2ZjhiZjM2MjhkMDU2YjlmM2Q3MDQw
NjIyZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEyOTEsNiArMTI5MSw3IEBACiAJCTVDQjdBRkUwMjNDNTJDRTUwMEU0OUNGMyAv
KiBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNCN0FGREYyM0M1MkNCQzAwRTQ5Q0YzIC8qIF9XS1Jlc291cmNl
TG9hZERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNUNCN0FGRTcyM0M2ODIwNzAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZEluZm8uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjdBRkU2MjND
NjgxQjAwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRJbmZvLmggKi87IH07CiAJCTVDQjdBRkU4MjND
NjlCNjEwMEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I3QUZFMzIzQzY3RDM3MDBFNDlDRjMgLyog
X1dLUmVzb3VyY2VMb2FkSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTVDQjkzMTA5MjZFODQzOUEwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNCOTMxMDcyNkU4NDFDQjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01l
YXN1cmVtZW50WFBDVXRpbGl0aWVzLmggKi87IH07CiAJCTVDQkM5QjhFMUM2NTJDQTAwMEE4RkRD
RiAvKiBOZXR3b3JrRGF0YVRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2su
aCAqLzsgfTsKIAkJNUNCRDU5NUMyMjgwRURGNDAwMkIyMkFBIC8qIF9XS0N1c3RvbUhlYWRlckZp
ZWxkcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
NUQyMzg4MjI3QTE4OTIwMDBCOUJEQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gKi87IH07
CiAJCTVDRDI4NjUxMUU3MjM1OTkwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0QyODY0RDFF
NzIyRjQ0MDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3RTdG9yZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTQ1NTYsNiArNDU1NywyMyBAQAog
CQk1Q0I5MzBDMDI2RTA1NDJGMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGll
bnRJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVD
bGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVDQjkzMEMxMjZFMDU0QjgwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENs
aWVudEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRDbGllbnRJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
QjkzMEYyMjZFN0VFRTAwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtM
b2FkZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBy
aXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1Q0I5MzBGNDI2RTgwMUU4MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRjUyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEY2MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBGNzI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBGODI2RTgwMjE1MDAzMkIxQzAgLyogUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEY5MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEVuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRkEyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRkIyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRkMyNkU4MDIxNjAwMzJCMUMwIC8q
IFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBGRDI2RTgwMjE2MDAzMkIxQzAg
LyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBGRTI2RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1Q0I5MzBGRjI2RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZh
dGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1Q0I5MzEwNDI2RTgzN0ZDMDAzMkIxQzAgLyogUENNRGFlbW9uRW50cnlQb2ludC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQQ01EYWVtb25FbnRyeVBvaW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMTA1MjZFODM3RkQwMDMyQjFDMCAvKiBQQ01E
YWVtb25FbnRyeVBvaW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUENNRGFlbW9uRW50cnlQb2ludC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUNCOTMxMDYyNkU4MzlBOTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
ckludGVyZmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1Q0I5MzEwNzI2RTg0MUNCMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRYUENVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUNCOTMxMDgyNkU4NDFDQjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1
cmVtZW50WFBDVXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0
YVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0RhdGFUYXNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkM5QjhCMUM2NTI1NzMwMEE4RkRD
RiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IE5ldHdvcmtEYXRhVGFza0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1Q0JFOTA4RjI2RDdGQjYyMDA1QTJFOTUgLyogUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnREZWJ1Z0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTkyNjUsMTIgKzkyODMsMjQgQEAKIAkJCQk1Q0I5MzBCRjI2RTA1NDJFMDAzMkIxQzAgLyog
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnQuaCAqLywKIAkJCQk1Q0I5MzBDMDI2RTA1NDJG
MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJbXBsLmNwcCAqLywKIAkJ
CQk1Q0I5MzBDMTI2RTA1NEI4MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGll
bnRJbXBsLmggKi8sCisJCQkJNUNCOTMwRkMyNkU4MDIxNjAwMzJCMUMwIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNUNCOTMwRkUyNkU4MDIxNjAwMzJC
MUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oICovLAorCQkJCTVDQjkz
MEY3MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVu
dC5jcHAgKi8sCisJCQkJNUNCOTMwRjYyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01l
YXN1cmVtZW50RGFlbW9uQ2xpZW50LmggKi8sCiAJCQkJNUM4MjZENkEyNkQ0ODJFQTAwOEFFQzkx
IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwICovLAogCQkJCTVDODI2RDY5
MjZENDgyRUEwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggKi8s
CiAJCQkJNUNCRTkwOTAyNkQ3RkI3QzAwNUEyRTk1IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50
RGVidWdJbmZvLmNwcCAqLywKIAkJCQk1Q0JFOTA4RjI2RDdGQjYyMDA1QTJFOTUgLyogUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uaCAqLywKKwkJCQk1Q0I5MzBGODI2RTgwMjE1MDAz
MkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmNwcCAqLywKKwkJCQk1Q0I5
MzBGRDI2RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmgg
Ki8sCisJCQkJNUNCOTMwRjkyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RW5jb2Rlci5jcHAgKi8sCisJCQkJNUNCOTMwRkYyNkU4MDIxNjAwMzJCMUMwIC8qIFByaXZh
dGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5oICovLAogCQkJCTZCRDA1ODY0MjIwQ0U4QzIwMDBC
RUQ1QyAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwICovLAogCQkJCTZCRDA1
ODYzMjIwQ0U4QzIwMDBCRUQ1QyAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCAq
LywKKwkJCQk1Q0I5MzEwNjI2RTgzOUE5MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VySW50ZXJmYWNlLmNwcCAqLywKKwkJCQk1Q0I5MzBGQTI2RTgwMjE1MDAzMkIxQzAg
LyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmggKi8sCisJCQkJNUNC
OTMwRkIyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclBy
b3h5LmNwcCAqLywKKwkJCQk1Q0I5MzBGNTI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCAqLywKIAkJCQk1N0ZFNjg4QjI2MEFCQjNEMDBCRjQ1
RTQgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmNwcCAqLywKIAkJCQk1
N0ZFNjg4QTI2MEFCQjNEMDBCRjQ1RTQgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3Jr
TG9hZGVyLmggKi8sCiAJCQkJNUM4MjZENjcyNkQ0NkI0MzAwOEFFQzkxIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RvcmUuY3BwICovLApAQCAtOTM1OCwxMSArOTM4OCwyNCBAQAogCQk1Q0I5
MzBGMTI2RTdFRTg5MDAzMkIxQzAgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTVDQjkzMEY0MjZFODAxRTgwMDMyQjFDMCAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbSAqLywKIAkJCQk1Q0I5MzBG
MjI2RTdFRUUwMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVy
Q29jb2EubW0gKi8sCisJCQkJNUNCOTMxMDcyNkU4NDFDQjAwMzJCMUMwIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmggKi8sCisJCQkJNUNCOTMxMDgyNkU4NDFDQjAwMzJC
MUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1tICovLAogCQkJKTsK
IAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTVD
QjkzMTAzMjZFODM3NUIwMDMyQjFDMCAvKiBEYWVtb24gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTVDQjkzMTA0MjZFODM3RkMwMDMyQjFDMCAvKiBQQ01E
YWVtb25FbnRyeVBvaW50LmggKi8sCisJCQkJNUNCOTMxMDUyNkU4MzdGRDAwMzJCMUMwIC8qIFBD
TURhZW1vbkVudHJ5UG9pbnQubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IERhZW1vbjsKKwkJCXBh
dGggPSBDb2NvYS9EYWVtb247CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk2
QkU5NjlCRjFFNTRENDUyMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xMDgxOCw2ICsxMDg2MSw3
IEBACiAJCUJDODI4MzY4MTZCMzU4NzkwMEEyNzhGRSAvKiBFbnRyeVBvaW50VXRpbGl0aWVzICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1Q0I5MzEwMzI2
RTgzNzVCMDAzMkIxQzAgLyogRGFlbW9uICovLAogCQkJCUJDODI4MzZCMTZCMzU4NzkwMEEyNzhG
RSAvKiBYUENTZXJ2aWNlICovLAogCQkJCTVDRTkxMjBGMjI5M0MyNUYwMDVCRUM3OCAvKiBBdXhp
bGlhcnlQcm9jZXNzTWFpbi5jcHAgKi8sCiAJCQkpOwpAQCAtMTIzNjQsNiArMTI0MDgsNyBAQAog
CQkJCTZCRDA1ODY1MjIwQ0U4QzIwMDBCRUQ1QyAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkU2ODhDMjYwQUJCM0QwMEJGNDVFNCAvKiBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDODI2RDZCMjZENDgyRUYwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3Jl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0I5MzEwOTI2RTg0MzlBMDAzMkIxQzAgLyogUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2Rjk1
MzY1MThGRjU4RjUwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzFBN0M1ODExMzZFMTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xhdW5jaGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0NjNGRDQ4MjFFQjk0RUMwMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0
aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437704</attachid>
            <date>2021-09-08 20:59:14 -0700</date>
            <delta_ts>2021-09-08 21:18:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230052-20210908205913.patch</filename>
            <type>text/plain</type>
            <size>106909</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJjOTI0NmRiMDI3OTMwZDM0MjA5OWU1
Yzg4MmJiYzVjODA5ZDY2ZTAuLjU1MzZmYjAzOGRiY2I5ZmQ0NDUyYTg2NTU0ZDIxYTNiMjkzOGFi
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDktMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgZGFlbW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzAwNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oOgorCiAyMDIxLTA5LTA3ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IG9yaWdpbiBwYXJ0aXRp
b25pbmcgKHRvcC1vcmlnaW4vZnJhbWUtb3JpZ2luKSBmb3IgQnJvYWRjYXN0Q2hhbm5lbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAwM2YwZDFkMGM1NjI2ODY5Mzk2NWI3ZTkxY2EzMzNlZDc2MThiMTEyLi4xMDc5NGIy
MzE4YzkxMjVmOGIzYzU1OTZkZWZkZWJiN2U2OTlkM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
NSBAQAorMjAyMS0wOS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIEFkZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBkYWVtb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDA1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUg
aW5mcmFzdHJ1Y3R1cmUgdG8gdXNlIGEgZGFlbW9uIGluc3RlYWQgb2YgdGhlIG5ldHdvcmsgcHJv
Y2VzcyB0byBoYW5kbGUgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuCisgICAgICAgIEl0IGRvZXMg
bm90IHN0YXJ0IHVzaW5nIHRoZSBkYWVtb24geWV0LCBzbyB0aGVyZSBpcyBubyBjaGFuZ2UgaW4g
YmVoYXZpb3IuCisgICAgICAgIEkgbWFkZSBhIG5ldyBjbGFzcyBQQ006Ok1hbmFnZXJJbnRlcmZh
Y2Ugd2hpY2ggY2FuIGVpdGhlciBiZSBhIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlciBv
ciBhIFBDTTo6TWFuYWdlclByb3h5LAorICAgICAgICB3aGljaCB3b3VsZCBzZW5kIG1lc3NhZ2Vz
IHRvIHRoZSBkYWVtb24gaW5zdGVhZCBvZiBkb2luZyB0aGUgd29yayBsb2NhbGx5LgorICAgICAg
ICBJIGltcGxlbWVudGVkIHRoZSBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgcGFyYW1ldGVycyB1
c2luZyBzb21lIG9mIHRoZSBJUEMgZW5jb2RpbmcgdGVtcGxhdGVzLgorICAgICAgICBJIGhhdmUg
YW4gZW50cnkgcG9pbnQgZm9yIGFuIGV4ZWN1dGFibGUgYnV0IG5vIGV4ZWN1dGFibGUgeWV0Lgor
ICAgICAgICBJIGhhdmUgdmVyaWZpZWQgdGhhdCBFdmVudEF0dHJpYnV0aW9uIHVuaXQgdGVzdHMg
cGFzcyB3aGVuIHVzaW5nIHRoZSBkYWVtb24sIHNvIHRoZSBpbmZyYXN0cnVjdHVyZSBpcyBnb29k
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpwY21TdG9yZURpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OnByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudENvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0
aW9uOjpjb25uZWN0aW9uVG9EYWVtb24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rp
b246OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rpb246OnNlbmRXaXRoUmVw
bHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhZW1vbkNsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNs
aWVudDo6bG9hZEZyb21OZXR3b3JrKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25DbGll
bnQ6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVt
b25DbGllbnQ6OmZlYXR1cmVFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpE
YWVtb25DbGllbnQ6OmRlYnVnTW9kZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFl
bW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6ZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6RGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RGVjb2Rlcjo6b3BlcmF0b3I+Pik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6YnVm
ZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBDTTo6RW5jb2Rlcjo6ZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlBDTTo6RW5jb2Rlcjo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RW5jb2Rlcjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpFbmNvZGVyOjp0YWtlQnVm
ZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UENNOjpNZXNzYWdlSW5mbzo6dG9TdHJpbmdGb3JUZXN0aW5nOjplbmNvZGVS
ZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6bWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
OlBDTTo6aGFuZGxlUENNTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6aGFuZGxlUENN
TWVzc2FnZVdpdGhSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6ZGVjb2RlTWVzc2FnZUFu
ZFNlbmRUb01hbmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpQQ006OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpSZXBseUNhbGxl
cjw+OjpjYWxsUmVwbHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlJlcGx5Q2FsbGVyPFN0cmlu
Zz46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6c2VuZE1lc3NhZ2VXaXRoUmVw
bHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c3RvcmVVbmF0dHJpYnV0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6aGFuZGxlQXR0cmlidXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6Y2xlYXIpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6Y2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbik6
CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjptaWdyYXRlUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFu
YWdlclByb3h5Ojp0b1N0cmluZ0ZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
Q006Ok1hbmFnZXJQcm94eTo6c2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcpOgorICAgICAgICAo
V2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6OnNldFRva2VuU2lnbmF0dXJl
VVJMRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzZXRB
dHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpN
YW5hZ2VyUHJveHk6Om1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6TWFuYWdlclByb3h5OjpzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFs
dWVzRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzdGFy
dFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5h
Z2VyUHJveHk6OmRlc3Ryb3lTdG9yZUZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
clByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNv
Y29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9EYWVt
b24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OmRpY3Rpb25hcnlGcm9tTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6Q29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENV
dGlsaXRpZXMuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW06
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OmFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2Fn
ZVRvRGljdGlvbmFyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5X
ZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW46CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpkZWNvZGVTdHJpbmdUZXh0KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxTdHJpbmc+OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1v
bi9QQ01EYWVtb25FbnRyeVBvaW50Lmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6cGVlcnMpOgorICAgICAgICAoV2ViS2l0OjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6Y29ubmVjdGlvbkV2ZW50SGFuZGxlcik6Cisg
ICAgICAgIChXZWJLaXQ6OnN0YXJ0TGlzdGVuaW5nRm9yTWFjaFNlcnZpY2VDb25uZWN0aW9ucyk6
CisgICAgICAgIChXZWJLaXQ6OnJlZ2lzdGVyU2NoZWR1bGVkQWN0aXZpdHlIYW5kbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6ZW50ZXJTYW5kYm94KToKKyAgICAgICAgKFdlYktpdDo6UENNRGFlbW9u
TWFpbik6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0w
OS0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlcGxhY2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpzdGFydCB3
aXRoIGFuIGltcGxlbWVudGF0aW9uIHRoYXQgZG9lc24ndCBuZWVkIE5ldHdvcmtTZXNzaW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oIGIvU291cmNlL1dU
Ri93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAppbmRleCAyZjk2NWJhN2ZkMTA5Y2NiOGZlNGE3ZWQ4
NDRkYjIyZGU4NzkxOGYwLi4yNGUzZjI2Yzc3M2ViMmUwMzk2MzlmMjU5M2M0MTYxMDgyYjUxNDQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmgKQEAgLTcxLDYgKzcxLDcgQEAgdHlwZWRl
ZiB2b2lkICgqeHBjX2Nvbm5lY3Rpb25faGFuZGxlcl90KSh4cGNfY29ubmVjdGlvbl90IGNvbm5l
Y3Rpb24pOwogCiAjZGVmaW5lIFhQQ19BUlJBWV9BUFBFTkQgKChzaXplX3QpKC0xKSkKICNkZWZp
bmUgWFBDX0NPTk5FQ1RJT05fTUFDSF9TRVJWSUNFX0xJU1RFTkVSICgxIDw8IDApCisjZGVmaW5l
IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVEVSUlVQVEVEIFhQQ19HTE9CQUxfT0JKRUNUKF94cGNf
ZXJyb3JfY29ubmVjdGlvbl9pbnRlcnJ1cHRlZCkKICNkZWZpbmUgWFBDX0VSUk9SX0NPTk5FQ1RJ
T05fSU5WQUxJRCBYUENfR0xPQkFMX09CSkVDVChfeHBjX2Vycm9yX2Nvbm5lY3Rpb25faW52YWxp
ZCkKICNkZWZpbmUgWFBDX0VSUk9SX0tFWV9ERVNDUklQVElPTiBfeHBjX2Vycm9yX2tleV9kZXNj
cmlwdGlvbgogI2RlZmluZSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQgWFBDX0dMT0JB
TF9PQkpFQ1QoX3hwY19lcnJvcl90ZXJtaW5hdGlvbl9pbW1pbmVudCkKQEAgLTg0LDYgKzg1LDkg
QEAgdHlwZWRlZiB2b2lkICgqeHBjX2Nvbm5lY3Rpb25faGFuZGxlcl90KSh4cGNfY29ubmVjdGlv
bl90IGNvbm5lY3Rpb24pOwogCiBleHRlcm4gY29uc3QgY2hhciAqIGNvbnN0IF94cGNfZXJyb3Jf
a2V5X2Rlc2NyaXB0aW9uOwogCitleHRlcm4gIkMiIHZvaWQgeHBjX2Nvbm5lY3Rpb25fYWN0aXZh
dGUoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKTsKK2V4dGVybiAiQyIgY29uc3Qgdm9pZCAq
eHBjX2RpY3Rpb25hcnlfZ2V0X2RhdGEoeHBjX29iamVjdF90IHhkaWN0LCBjb25zdCBjaGFyKiBr
ZXksIHNpemVfdCogbGVuZ3RoKTsKKwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCkBAIC05MSw2
ICs5NSw5IEBAIGV4dGVybiBjb25zdCBjaGFyICogY29uc3QgX3hwY19lcnJvcl9rZXlfZGVzY3Jp
cHRpb247CiAjaW5jbHVkZSA8eHBjL3ByaXZhdGUuaD4KICNlbHNlCiAKK2V4dGVybiAiQyIgY29u
c3QgY2hhciAqIGNvbnN0IFhQQ19BQ1RJVklUWV9SQU5ET01fSU5JVElBTF9ERUxBWTsKK2V4dGVy
biAiQyIgY29uc3QgY2hhciAqIGNvbnN0IFhQQ19BQ1RJVklUWV9SRVFVSVJFX05FVFdPUktfQ09O
TkVDVElWSVRZOworCiAjaWYgT1NfT0JKRUNUX1VTRV9PQkpDCiBPU19PQkpFQ1RfREVDTChvc190
cmFuc2FjdGlvbik7CiAjZWxzZQpAQCAtMTA4LDYgKzExNSw3IEBAIGVudW0gewogCiBXVEZfRVhU
RVJOX0NfQkVHSU4KIAorZXh0ZXJuIGNvbnN0IHN0cnVjdCBfeHBjX2RpY3Rpb25hcnlfcyBfeHBj
X2Vycm9yX2Nvbm5lY3Rpb25faW50ZXJydXB0ZWQ7CiBleHRlcm4gY29uc3Qgc3RydWN0IF94cGNf
ZGljdGlvbmFyeV9zIF94cGNfZXJyb3JfY29ubmVjdGlvbl9pbnZhbGlkOwogZXh0ZXJuIGNvbnN0
IHN0cnVjdCBfeHBjX2RpY3Rpb25hcnlfcyBfeHBjX2Vycm9yX3Rlcm1pbmF0aW9uX2ltbWluZW50
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcAppbmRleCBmMWIxOTkwMmUxYTRlYTA1YWVjMjFkYWI3MjdmOGI4YWVlMDkyOTk5Li4y
OWJhYjlhMjkzOTlkMTYyNDljMTI5NmU2OGFhZjc3OGYzMzBhMTYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIlBs
dWdpblByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlci5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgiCiAjaW5jbHVk
ZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRl
eCA1NDNjYWIxMDBiYzdiYzk5ZjU0MGYzOTRiZmY3MjNmYmNjZGFlYjNhLi5kZmRlNzhkYTYxZDli
ZmE4YTNjNWE0YzFjOGNhOTdhMDJlMzUzZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IlBpbmdMb2FkLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJbXBs
LmgiCiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQcm94eS5oIgpAQCAtOTIsMTEgKzkzLDIwIEBAIHN0YXRpYyBTdHJpbmcgcGNt
U3RvcmVEaXJlY3RvcnkoY29uc3QgTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIGNvbnN0IFN0cmlu
ZyYgcmVzCiAgICAgcmV0dXJuIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CiB9CiAK
K3N0YXRpYyBVbmlxdWVSZWY8UENNOjpNYW5hZ2VySW50ZXJmYWNlPiBtYW5hZ2VyT3JQcm94eShO
ZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJv
Y2VzcywgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
Cit7CisgICAgLy8gRklYTUU6IFR1cm4gdGhpcyBvbiBhbmQgcmVtb3ZlIE1hbmFnZXJJbnRlcmZh
Y2Ugb25jZSByZGFyOi8vODA3MDEwOTggaXMgY2xvc2VkLgorICAgIGNvbnN0ZXhwciBib29sIHVz
ZVBDTURhZW1vbiA9IGZhbHNlOworCisgICAgaWYgKHVzZVBDTURhZW1vbikKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWVSZWY8UENNOjpNYW5hZ2VyUHJveHk+KCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWVSZWY8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyPihtYWtlVW5pcXVlUmVmPFBD
TTo6Q2xpZW50SW1wbD4obmV0d29ya1Nlc3Npb24sIG5ldHdvcmtQcm9jZXNzKSwgcGNtU3RvcmVE
aXJlY3RvcnkobmV0d29ya1Nlc3Npb24sIHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMuZGlyZWN0b3J5LCBwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzLnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSkpOworfQor
CiBOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKICAgICA6IG1fc2Vzc2lvbklEKHBhcmFtZXRlcnMuc2Vzc2lvbklEKQogICAgICwgbV9uZXR3
b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotICAgICwgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnko
cGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5wcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkpCiAgICAgLCBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5k
aXJlY3RvcnkpCiAgICAgLCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0
YXRpc3RpY3MocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zaG91
bGRJbmNsdWRlTG9jYWxob3N0ID8gU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6WWVzIDogU2hvdWxk
SW5jbHVkZUxvY2FsaG9zdDo6Tm8pCiAgICAgLCBtX2VuYWJsZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEZWJ1Z01vZGUocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5l
bmFibGVEZWJ1Z01vZGUgPyBFbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOjpZ
ZXMgOiBFbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOjpObykKQEAgLTEwNyw2
ICsxMTcsNyBAQCBOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2VzcwogICAgICwgbV9maXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJh
bWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKQogICAgICwgbV9zdGFuZGFs
b25lQXBwbGljYXRpb25Eb21haW4ocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycy5zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pCiAjZW5kaWYKKyAgICAsIG1fcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQobWFuYWdlck9yUHJveHkoKnRoaXMsIG5ldHdvcmtQcm9jZXNz
LCBwYXJhbWV0ZXJzKSkKICAgICAsIG1fYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KG1ha2VVbmlx
dWVSZWY8TmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4oKSkKICAgICAsIG1fdGVzdFNw
ZWVkTXVsdGlwbGllcihwYXJhbWV0ZXJzLnRlc3RTcGVlZE11bHRpcGxpZXIpCiAgICAgLCBtX2Fs
bG93c1NlcnZlclByZWNvbm5lY3QocGFyYW1ldGVycy5hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KQpA
QCAtMTQxLDcgKzE1Miw2IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZWQp
OwogI2VuZGlmCi0gICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IG1ha2VVbmlxdWU8UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyPihtYWtlVW5pcXVlUmVmPFBDTTo6Q2xpZW50SW1w
bD4oKnRoaXMsIG5ldHdvcmtQcm9jZXNzKSwgcGNtU3RvcmVEaXJlY3RvcnkoKnRoaXMsIHBhcmFt
ZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZGlyZWN0b3J5LCBwYXJhbWV0
ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RvcmFnZURpcmVjdG9yeSkpOwogfQogCiBOZXR3b3JrU2Vzc2lvbjo6fk5ldHdvcmtTZXNz
aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApp
bmRleCA3MGExYjQ5MWIyNDNhYWVmYjNkMjdiZGNhZDAwYTYwNWU0MjRmNTBmLi5kOGFhYjNkYmE0
OWI3NjdmM2VmMDk5NGJmMmNiZTk1MWZhNDE2NzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlByZWZldGNoQ2FjaGUuaCIKKyNpbmNsdWRlICJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
aCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKQEAgLTYwLDcg
KzYxLDYgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OwogY2xhc3MgTmV0d29y
a1NvY2tldENoYW5uZWw7Ci1jbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI7CiBj
bGFzcyBXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnM7CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU7CiBjbGFzcyBXZWJTb2NrZXRUYXNrOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAgICAgTmV0d29ya0xvYWRTY2hlZHVsZXImIG5ldHdvcmtMb2FkU2No
ZWR1bGVyKCk7Ci0gICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyJiBwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCgpIHsgcmV0dXJuICptX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OyB9Cisg
ICAgUENNOjpNYW5hZ2VySW50ZXJmYWNlJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIHsgcmV0
dXJuIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuZ2V0KCk7IH0KIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSYgYXBwUHJpdmFjeVJlcG9ydFRl
c3RpbmdEYXRhKCkgeyByZXR1cm4gbV9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE7IH0KQEAg
LTE5Miw3ICsxOTIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmPE5ldHdvcmtQcm9jZXNzPiBtX25l
dHdvcmtQcm9jZXNzOwogICAgIFdlYWtIYXNoU2V0PE5ldHdvcmtEYXRhVGFzaz4gbV9kYXRhVGFz
a1NldDsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFN0cmluZyBt
X3ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OwogICAgIFJlZlB0cjxXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU+IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAgICBTaG91bGRJ
bmNsdWRlTG9jYWxob3N0IG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyB7IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6OlllcyB9OwpAQCAtMjA4LDcgKzIwNyw3
IEBAIHByb3RlY3RlZDoKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiBtX3RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3Rpbmc7CiAjZW5kaWYKICAgICBib29s
IG1faXNTdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQgeyBmYWxzZSB9OwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+IG1fcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ7CisgICAgVW5pcXVlUmVmPFBDTTo6TWFuYWdlckludGVyZmFjZT4gbV9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDsKIAogICAgIEhhc2hTZXQ8UmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRl
cj4+IG1fa2VwdEFsaXZlTG9hZHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41NjNhMDM2MGRiNTMxOTgxZmU2NzRiMjYzYWY0MDMyMzFkOTE5ODVlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsNTgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKworI2lm
ICFQTEFURk9STShDT0NPQSkKKworQ29ubmVjdGlvbiBDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9E
YWVtb24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwor
dm9pZCBDb25uZWN0aW9uOjpzZW5kKE1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhSZXBs
eShNZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
bmNvZGVkTWVzc2FnZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Cit9CisKKyNlbmRpZgorCit9IC8v
IG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZjcyNjFjOGYyMjI1YWRlZDljNTY4MmIzMTE0NTI5MGYyNzI2Njli
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaApAQCAt
MCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQ
dHIuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisK
K2VudW0gY2xhc3MgTWVzc2FnZVR5cGUgOiB1aW50OF90OwordXNpbmcgRW5jb2RlZE1lc3NhZ2Ug
PSBWZWN0b3I8dWludDhfdD47CisKK2NsYXNzIENvbm5lY3Rpb24geworcHVibGljOgorICAgIHN0
YXRpYyBDb25uZWN0aW9uIGNvbm5lY3Rpb25Ub0RhZW1vbigpOworCisgICAgdm9pZCBzZW5kKE1l
c3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmKTsKKyAgICB2b2lkIHNlbmRXaXRoUmVwbHkoTWVz
c2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2Rl
ZE1lc3NhZ2UmJik+JiYpOworCitwcml2YXRlOgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIENv
bm5lY3Rpb24oT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4mJik7CisKKyAgICBPU09iamVj
dFB0cjx4cGNfY29ubmVjdGlvbl90PiBtX2Nvbm5lY3Rpb247CisjZW5kaWYKK307CisKK30gLy8g
bmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1v
bkNsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzczZTUxYmU3MGYwYzZlOTIzNDg0Y2I2ZmRkZTU5NThi
ZjJlYjU4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGll
bnQuY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaCIKKworI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K25hbWVzcGFjZSBQQ00geworCit2b2lkIERhZW1vbkNsaWVudDo6YnJvYWRjYXN0Q29uc29sZU1l
c3NhZ2UoSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKworYm9vbCBEYWVtb25DbGllbnQ6OmZlYXR1cmVFbmFibGVkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBEYWVtb25DbGllbnQ6OmRlYnVnTW9kZUVu
YWJsZWQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50RGFlbW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWU3NzgyMTI0MjZkODk3MTZjMWJhMzZk
NDUwYWNkNWQzNmQ3ZjY2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRE
YWVtb25DbGllbnQuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudC5oIgorI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCitjbGFzcyBEYWVtb25DbGllbnQgOiBwdWJs
aWMgQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGFlbW9uQ2xpZW50PiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgdm9pZCBicm9hZGNhc3RDb25zb2xlTWVzc2FnZShK
U0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgYm9vbCBmZWF0dXJl
RW5hYmxlZCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgZGVidWdNb2RlRW5hYmxlZCgpIGNvbnN0
IGZpbmFsOworfTsKKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERlY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhMjBlOGMyZmNjYTk5YzEwODYyNTQw
N2ExZjJjM2NjNDUyMzNlNDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50
RGVjb2Rlci5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCitib29sIERlY29kZXI6OmJ1ZmZl
cklzTGFyZ2VFbm91Z2hUb0NvbnRhaW5CeXRlcyhzaXplX3QgYnl0ZXMpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGJ5dGVzIDw9IG1fYnVmZmVyLnNpemUoKSAtIG1fYnVmZmVyUG9zaXRpb247Cit9CisK
K2Jvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplLCBzaXplX3QpCit7CisgICAgaWYgKCFidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWlu
Qnl0ZXMoc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtZW1jcHkoZGF0YSwgbV9i
dWZmZXIuZGF0YSgpICsgbV9idWZmZXJQb3NpdGlvbiwgc2l6ZSk7CisgICAgbV9idWZmZXJQb3Np
dGlvbiArPSBzaXplOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBQQ00K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50
RGVjb2Rlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODc3
OTllMzBlZTUzMDc3MmM5ZDE0N2NjMzg3ZjU1ZjViOGMzNTU2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK2NsYXNzIERlY29kZXIgeworcHVibGlj
OgorICAgIERlY29kZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVm
ZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8VD4mIHQpCisgICAgeworICAg
ICAgICB0ID0gSVBDOjpBcmd1bWVudENvZGVyPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1v
dmVfcmVmZXJlbmNlX3Q8VD4+LCB2b2lkPjo6ZGVjb2RlKCp0aGlzKTsKKyAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgbnVtRWxl
bWVudHMpIGNvbnN0CisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYXJpdGht
ZXRpYzxUPjo6dmFsdWUsICJUeXBlIFQgbXVzdCBoYXZlIGEgZml4ZWQsIGtub3duIGVuY29kZWQg
c2l6ZSEiKTsKKworICAgICAgICBpZiAobnVtRWxlbWVudHMgPiBzdGQ6Om51bWVyaWNfbGltaXRz
PHNpemVfdD46Om1heCgpIC8gc2l6ZW9mKFQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIHJldHVybiBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluQnl0ZXMobnVtRWxl
bWVudHMgKiBzaXplb2YoVCkpOworICAgIH0KKworICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QsIHNpemVfdCBhbGln
bm1lbnQpOworICAgIAorcHJpdmF0ZToKKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBidWZm
ZXJJc0xhcmdlRW5vdWdoVG9Db250YWluQnl0ZXMoc2l6ZV90KSBjb25zdDsKKworICAgIFZlY3Rv
cjx1aW50OF90PiBtX2J1ZmZlcjsKKyAgICBzaXplX3QgbV9idWZmZXJQb3NpdGlvbiB7IDAgfTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRFbmNvZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOThiMTVlNTEwZTU5OTM3NDNmZTdlNTYzZWYwMWRk
NzhiOTI0ZmY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIu
Y3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKwordm9pZCBFbmNvZGVyOjplbmNvZGVGaXhlZExl
bmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCkKK3sKKyAg
ICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRF
bmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4YTgz
YzY1OTI1ZDI2MmFkZDIwYmE1YThiMTkwMzY1ZTU5MzJjYjEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKworY2xhc3MgRW5jb2RlciB7CitwdWJsaWM6
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KFQmJiB0
KQorICAgIHsKKyAgICAgICAgSVBDOjpBcmd1bWVudENvZGVyPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8
c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+Pjo6ZW5jb2RlKCp0aGlzLCBzdGQ6OmZvcndhcmQ8
VD4odCkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgZW5jb2RlKEFyZyYmIGFyZywg
QXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICAqdGhpcyA8PCBzdGQ6OmZvcndhcmQ8QXJn
PihhcmcpOworICAgICAgICBlbmNvZGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAg
ICB9CisgICAgdm9pZCBlbmNvZGUoKSB7IH0KKworICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlQnVm
ZmVyKCkgeyByZXR1cm4gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwgeyB9KTsgfQorCisgICAgdm9p
ZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCwgc2l6ZV90IGFs
aWdubWVudCk7CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOworfTsK
KworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyLmgKaW5kZXggYmI4MjIyYzJjOWRiYjA3NzJiZDM5ZTc5ZjQ0MzA1ZjQ3MGJlOWY1NS4uMjZl
N2M1NTkxNDQ3ZmViZjU3ODUxZWFlNWQyZTBmNDZkOWJlZTAxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5o
CkBAIC0yOCwxMyArMjgsOSBAQAogI2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRDbGllbnQuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJ
bnRlcmZhY2UuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJy
b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1RpbWVyLmg+Ci0jaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQyLDM4ICszOCwzMCBAQAogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotZW51bSBjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlw
ZSA6IGJvb2wgeyBVbmF0dHJpYnV0ZWQsIEF0dHJpYnV0ZWQgfTsKLQotY2xhc3MgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlcj4geworY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyIDogcHVibGljIFBDTTo6TWFuYWdlckludGVyZmFjZSwgcHVibGljIENhbk1ha2VXZWFrUHRy
PFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogCi0gICAgdXNpbmcgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUg
PSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlv
blNpdGU7Ci0gICAgdXNpbmcgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwotICAgIHVzaW5nIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7
Ci0gICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bjsKLSAgICB1c2luZyBTb3VyY2VTaXRlID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OlNvdXJjZVNpdGU7Ci0KICAgICBleHBsaWNpdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXIoVW5pcXVlUmVmPFBDTTo6Q2xpZW50PiYmLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJl
Y3RvcnkpOwogICAgIH5Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIoKTsKIAotICAgIHZv
aWQgc3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJik7Ci0gICAgdm9p
ZCBoYW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYsIGNvbnN0IFVSTCYg
cmVxdWVzdFVSTCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWRpcmVjdERvbWFpbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5VVJMKTsKLSAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2
b2lkIG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKFByaXZh
dGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25U
eXBlKTsKKyAgICB2b2lkIHN0b3JlVW5hdHRyaWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50
JiYpIGZpbmFsOworICAgIHZvaWQgaGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSYmLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgcmVkaXJlY3REb21haW4sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCkgZmluYWw7CisgICAg
dm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQg
Y2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBtaWdyYXRlUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZShQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYm
LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkgZmluYWw7CiAKLSAgICB2
b2lkIHRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYp
IGNvbnN0OwotICAgIHZvaWQgc2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkg
eyBtX2lzUnVubmluZ1Rlc3QgPSB2YWx1ZTsgfQotICAgIHZvaWQgc2V0VG9rZW5QdWJsaWNLZXlV
UkxGb3JUZXN0aW5nKFVSTCYmKTsKLSAgICB2b2lkIHNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVz
dGluZyhVUkwmJik7Ci0gICAgdm9pZCBzZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5n
KFVSTCYmIHNvdXJjZVVSTCwgVVJMJiYgZGVzdGluYXRpb25VUkwpOwotICAgIHZvaWQgbWFya0Fs
bFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKLSAgICB2b2lkIG1hcmtBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JU
ZXN0aW5nKGJvb2wgdmFsdWUpIHsgbV9pc1J1bm5pbmdFcGhlbWVyYWxNZWFzdXJlbWVudFRlc3Qg
PSB2YWx1ZTsgfQotICAgIHZvaWQgc2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGlu
ZyhTdHJpbmcmJiB1bmxpbmthYmxlVG9rZW4sIFN0cmluZyYmIHNlY3JldFRva2VuLCBTdHJpbmcm
JiBzaWduYXR1cmUsIFN0cmluZyYmIGtleUlEKTsKLSAgICB2b2lkIHN0YXJ0VGltZXJJbW1lZGlh
dGVseUZvclRlc3RpbmcoKTsKLSAgICB2b2lkIGRlc3Ryb3lTdG9yZUZvclRlc3RpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHRvU3RyaW5nRm9yVGVzdGluZyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0
T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkgZmluYWwgeyBtX2lzUnVubmluZ1Rl
c3QgPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVS
TCYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwm
JikgZmluYWw7CisgICAgdm9pZCBzZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVS
TCYmIHNvdXJjZVVSTCwgVVJMJiYgZGVzdGluYXRpb25VUkwpIGZpbmFsOworICAgIHZvaWQgbWFy
a0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3RpbmcoKSBmaW5hbDsKKyAgICB2b2lkIG1h
cmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgc2V0RXBoZW1lcmFs
TWVhc3VyZW1lbnRGb3JUZXN0aW5nKGJvb2wgdmFsdWUpIGZpbmFsIHsgbV9pc1J1bm5pbmdFcGhl
bWVyYWxNZWFzdXJlbWVudFRlc3QgPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0UENNRnJhdWRQcmV2
ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhTdHJpbmcmJiB1bmxpbmthYmxlVG9rZW4sIFN0cmluZyYm
IHNlY3JldFRva2VuLCBTdHJpbmcmJiBzaWduYXR1cmUsIFN0cmluZyYmIGtleUlEKSBmaW5hbDsK
KyAgICB2b2lkIHN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3RpbmcoKSBmaW5hbDsKKyAgICB2
b2lkIGRlc3Ryb3lTdG9yZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBm
aW5hbDsKIAogcHJpdmF0ZToKICAgICBQQ006OlN0b3JlJiBzdG9yZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3MmFmZDllNDUwZjg1YTdmYTQx
NDlhYTY4M2E4YzMzOTI4ZTc5NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlckludGVyZmFjZS5jcHAKQEAgLTAsMCArMSwyNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VySW50ZXJmYWNlLmgiCisKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAi
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudERlY29kZXIuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29k
ZXIuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCituYW1lc3BhY2UgTWVzc2FnZUlu
Zm8geworCisjZGVmaW5lIEZVTkNUSU9OKG1mKSBzdHJ1Y3QgbWYgeyBzdGF0aWMgY29uc3RleHBy
IGF1dG8gTWVtYmVyRnVuY3Rpb24gPSAmUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpt
ZjsKKyNkZWZpbmUgQVJHVU1FTlRTKC4uLikgdXNpbmcgQXJnc1R1cGxlID0gc3RkOjp0dXBsZTxf
X1ZBX0FSR1NfXz47CisjZGVmaW5lIFJFUExZKC4uLikgdXNpbmcgUmVwbHkgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKF9fVkFfQVJHU19fKT47IFwKKyAgICBzdGF0aWMgUENNOjpFbmNvZGVkTWVz
c2FnZSBlbmNvZGVSZXBseShfX1ZBX0FSR1NfXyk7CisjZGVmaW5lIEVORCB9OworCitGVU5DVElP
TihzdG9yZVVuYXR0cmlidXRlZCkKK0FSR1VNRU5UUyhXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCkKK0VORAorCitGVU5DVElPTihoYW5kbGVBdHRyaWJ1dGlvbikKK0FSR1VNRU5UUyhQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIFVS
TCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFVSTCkKK0VORAorCitGVU5DVElPTihjbGVh
cikKK0FSR1VNRU5UUygpCitSRVBMWSgpCitFTkQKKworRlVOQ1RJT04oY2xlYXJGb3JSZWdpc3Ry
YWJsZURvbWFpbikKK0FSR1VNRU5UUyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbikKK1JFUExZ
KCkKK0VORAorCitGVU5DVElPTihtaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVn
YWN5U3RvcmFnZSkKK0FSR1VNRU5UUyhXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpCitFTkQKKworRlVOQ1RJT04o
dG9TdHJpbmdGb3JUZXN0aW5nKQorQVJHVU1FTlRTKCkKK1JFUExZKFN0cmluZykKK0VORAorCitG
VU5DVElPTihzZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZykKK0FSR1VNRU5UUyhib29sKQorRU5E
CisKK0ZVTkNUSU9OKHNldFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZykKK0FSR1VNRU5UUyhV
UkwpCitFTkQKKworRlVOQ1RJT04oc2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKQorQVJH
VU1FTlRTKFVSTCkKK0VORAorCitGVU5DVElPTihzZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JU
ZXN0aW5nKQorQVJHVU1FTlRTKFVSTCwgVVJMKQorRU5ECisKK0ZVTkNUSU9OKG1hcmtBbGxVbmF0
dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKQorQVJHVU1FTlRTKCkKK0VORAorCitGVU5DVElP
TihtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmcpCitBUkdVTUVOVFMoKQorUkVQTFkoKQorRU5ECisKK0ZVTkNUSU9OKHNldEVwaGVtZXJhbE1l
YXN1cmVtZW50Rm9yVGVzdGluZykKK0FSR1VNRU5UUyhib29sKQorRU5ECisKK0ZVTkNUSU9OKHNl
dFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcpCitBUkdVTUVOVFMoU3RyaW5nLCBT
dHJpbmcsIFN0cmluZywgU3RyaW5nKQorRU5ECisKK0ZVTkNUSU9OKHN0YXJ0VGltZXJJbW1lZGlh
dGVseUZvclRlc3RpbmcpCitBUkdVTUVOVFMoKQorRU5ECisKK0ZVTkNUSU9OKGRlc3Ryb3lTdG9y
ZUZvclRlc3RpbmcpCitBUkdVTUVOVFMoKQorUkVQTFkoKQorRU5ECisKKyN1bmRlZiBGVU5DVElP
TgorI3VuZGVmIEFSR1VNRU5UUworI3VuZGVmIFJFUExZCisjdW5kZWYgRU5ECisKKyNkZWZpbmUg
RU1QVFlfUkVQTFkobWYpIFBDTTo6RW5jb2RlZE1lc3NhZ2UgbWY6OmVuY29kZVJlcGx5KCkgeyBy
ZXR1cm4geyB9OyB9CitFTVBUWV9SRVBMWShjbGVhcik7CitFTVBUWV9SRVBMWShjbGVhckZvclJl
Z2lzdHJhYmxlRG9tYWluKTsKK0VNUFRZX1JFUExZKG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk7CitFTVBUWV9SRVBMWShkZXN0cm95U3Rv
cmVGb3JUZXN0aW5nKTsKKyN1bmRlZiBFTVBUWV9SRVBMWQorCitQQ006OkVuY29kZWRNZXNzYWdl
IHRvU3RyaW5nRm9yVGVzdGluZzo6ZW5jb2RlUmVwbHkoU3RyaW5nIHJlcGx5KQoreworICAgIFBD
TTo6RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIgPDwgcmVwbHk7CisgICAgcmV0dXJuIGVu
Y29kZXIudGFrZUJ1ZmZlcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlSW5mbworCiti
b29sIG1lc3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6U3RvcmVVbmF0
dHJpYnV0ZWQ6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6SGFuZGxlQXR0cmlidXRpb246CisgICAg
Y2FzZSBNZXNzYWdlVHlwZTo6TWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2Fj
eVN0b3JhZ2U6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6U2V0T3ZlcnJpZGVUaW1lckZvclRlc3Rp
bmc6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6U2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5n
OgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OlNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZzoK
KyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5n
OgorICAgIGNhc2UgTWVzc2FnZVR5cGU6Ok1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JU
ZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OlNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9y
VGVzdGluZzoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1
ZXNGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OlN0YXJ0VGltZXJJbW1lZGlhdGVs
eUZvclRlc3Rpbmc6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIE1lc3NhZ2VUeXBl
OjpNYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmc6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6RGVzdHJveVN0b3JlRm9yVGVzdGluZzoKKyAgICBj
YXNlIE1lc3NhZ2VUeXBlOjpUb1N0cmluZ0ZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdlVHlw
ZTo6Q2xlYXI6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6Q2xlYXJGb3JSZWdpc3RyYWJsZURvbWFp
bjoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIFByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlciYgZGFlbW9uTWFuYWdlcigpCit7CisgICAgLy8gRklYTUU6IEdpdmUgdGhlIG1hbmFn
ZXIgYSB2YWxpZCBzdG9yYWdlIGRpcmVjdG9yeS4KKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyPiBpbnN0YW5jZShtYWtlVW5pcXVlUmVmPFBD
TTo6RGFlbW9uQ2xpZW50PigpLCBTdHJpbmcoKSk7CisgICAgcmV0dXJuIGluc3RhbmNlLmdldCgp
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbmZvPgordm9pZCBoYW5kbGVQQ01NZXNzYWdlKFBD
TTo6RW5jb2RlZE1lc3NhZ2UmJiBlbmNvZGVkTWVzc2FnZSkKK3sKKyAgICBQQ006OkRlY29kZXIg
ZGVjb2RlcihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHR5
cGVuYW1lIEluZm86OkFyZ3NUdXBsZT4gYXJndW1lbnRzOworICAgIGRlY29kZXIgPj4gYXJndW1l
bnRzOworICAgIGlmIChVTkxJS0VMWSghYXJndW1lbnRzKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgSVBDOjpjYWxsTWVtYmVyRnVuY3Rpb24oV1RGTW92ZSgqYXJndW1lbnRzKSwgJmRhZW1vbk1h
bmFnZXIoKSwgSW5mbzo6TWVtYmVyRnVuY3Rpb24pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJ
bmZvPgordm9pZCBoYW5kbGVQQ01NZXNzYWdlV2l0aFJlcGx5KFBDTTo6RW5jb2RlZE1lc3NhZ2Um
JiBlbmNvZGVkTWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQQ006OkVuY29kZWRNZXNz
YWdlJiYpPiYmIHJlcGx5U2VuZGVyKQoreworICAgIFBDTTo6RGVjb2RlciBkZWNvZGVyKFdURk1v
dmUoZW5jb2RlZE1lc3NhZ2UpKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgSW5mbzo6
QXJnc1R1cGxlPiBhcmd1bWVudHM7CisgICAgZGVjb2RlciA+PiBhcmd1bWVudHM7CisgICAgaWYg
KFVOTElLRUxZKCFhcmd1bWVudHMpKQorICAgICAgICByZXR1cm47CisKKyAgICB0eXBlbmFtZSBJ
bmZvOjpSZXBseSBjb21wbGV0aW9uSGFuZGxlciB7IFtyZXBseVNlbmRlciA9IFdURk1vdmUocmVw
bHlTZW5kZXIpXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgeworICAgICAgICByZXBseVNlbmRl
cihJbmZvOjplbmNvZGVSZXBseShhcmdzLi4uKSk7CisgICAgfX07CisKKyAgICBJUEM6OmNhbGxN
ZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgJmRhZW1vbk1hbmFnZXIoKSwgSW5mbzo6TWVtYmVyRnVuY3Rpb24pOworfQorCit2b2lk
IGRlY29kZU1lc3NhZ2VBbmRTZW5kVG9NYW5hZ2VyKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBW
ZWN0b3I8dWludDhfdD4mJiBlbmNvZGVkTWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8dWludDhfdD4mJik+JiYgcmVwbHlTZW5kZXIpCit7CisgICAgQVNTRVJUKG1lc3NhZ2VU
eXBlU2VuZHNSZXBseShtZXNzYWdlVHlwZSkgPT0gISFyZXBseVNlbmRlcik7CisgICAgc3dpdGNo
IChtZXNzYWdlVHlwZSkgeworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6U3RvcmVVbmF0dHJp
YnV0ZWQ6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86OnN0b3JlVW5hdHRy
aWJ1dGVkPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUENNOjpNZXNzYWdlVHlwZTo6SGFuZGxlQXR0cmlidXRpb246CisgICAgICAgIGhhbmRsZVBD
TU1lc3NhZ2U8TWVzc2FnZUluZm86OmhhbmRsZUF0dHJpYnV0aW9uPihXVEZNb3ZlKGVuY29kZWRN
ZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6Q2xl
YXI6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86OmNsZWFy
PihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSwgV1RGTW92ZShyZXBseVNlbmRlcikpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OkNsZWFyRm9yUmVnaXN0cmFibGVE
b21haW46CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86OmNs
ZWFyRm9yUmVnaXN0cmFibGVEb21haW4+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpLCBXVEZNb3Zl
KHJlcGx5U2VuZGVyKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlw
ZTo6TWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2U6CisgICAg
ICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86Om1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEZyb21MZWdhY3lTdG9yYWdlPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6VG9TdHJpbmdGb3JUZXN0aW5n
OgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjp0b1N0cmlu
Z0ZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5U2VuZGVy
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6U2V0T3ZlcnJp
ZGVUaW1lckZvclRlc3Rpbmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86
OnNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6U2V0VG9rZW5QdWJsaWNL
ZXlVUkxGb3JUZXN0aW5nOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJbmZvOjpz
ZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpTZXRUb2tlblNpZ25h
dHVyZVVSTEZvclRlc3Rpbmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86
OnNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlNldEF0dHJpYnV0
aW9uUmVwb3J0VVJMc0ZvclRlc3Rpbmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2Fn
ZUluZm86OnNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2Rl
ZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpN
YXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENN
TWVzc2FnZTxNZXNzYWdlSW5mbzo6bWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3Rp
bmc+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Q006Ok1lc3NhZ2VUeXBlOjpNYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0Fz
RXhwaXJlZEZvclRlc3Rpbmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2VXaXRoUmVwbHk8TWVz
c2FnZUluZm86Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVk
Rm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSksIFdURk1vdmUocmVwbHlTZW5kZXIp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpTZXRFcGhlbWVy
YWxNZWFzdXJlbWVudEZvclRlc3Rpbmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2Fn
ZUluZm86OnNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVk
TWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlNl
dFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3Rpbmc6CisgICAgICAgIGhhbmRsZVBDTU1l
c3NhZ2U8TWVzc2FnZUluZm86OnNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3Rpbmc+
KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006
Ok1lc3NhZ2VUeXBlOjpTdGFydFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nOgorICAgICAgICBo
YW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJbmZvOjpzdGFydFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0
aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UENNOjpNZXNzYWdlVHlwZTo6RGVzdHJveVN0b3JlRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxl
UENNTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6ZGVzdHJveVN0b3JlRm9yVGVzdGluZz4o
V1RGTW92ZShlbmNvZGVkTWVzc2FnZSksIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjky
ZmE5ZjA5NTViM2UwMjI0NDY1MDM3MWVkYjQ5MzljMDcxZmFlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaApAQCAtMCwwICsxLDEyNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4K
KyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51
bSBjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSA6IGJvb2wgeyBV
bmF0dHJpYnV0ZWQsIEF0dHJpYnV0ZWQgfTsKKworY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyOworCituYW1lc3BhY2UgUENNIHsKKworY2xhc3MgTWFuYWdlckludGVyZmFjZSB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWFuYWdlckludGVyZmFjZSgpIHsgfTsKKworICAgIHVz
aW5nIEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlOworICAgIHVzaW5nIEF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25UcmlnZ2VyRGF0YTsKKyAgICB1c2luZyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OworICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9t
YWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CisgICAgdXNpbmcgU291cmNlU2l0ZSA9
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlOworCisgICAgdmly
dHVhbCB2b2lkIHN0b3JlVW5hdHRyaWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSYmLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgcmVkaXJlY3REb21haW4sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBtaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZShQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCYmLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlw
ZSkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJMJiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFVSTCYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJMJiYgc291cmNl
VVJMLCBVUkwmJiBkZXN0aW5hdGlvblVSTCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYXJrQWxs
VW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5n
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRF
cGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFN0cmluZyYmIHVubGlua2Fi
bGVUb2tlbiwgU3RyaW5nJiYgc2VjcmV0VG9rZW4sIFN0cmluZyYmIHNpZ25hdHVyZSwgU3RyaW5n
JiYga2V5SUQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9y
VGVzdGluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveVN0b3JlRm9yVGVzdGluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKK307CisKK2NvbnN0ZXhwciBjb25zdCBj
aGFyKiBwcm90b2NvbFZlcnNpb25LZXkgeyAidmVyc2lvbiIgfTsKK2NvbnN0ZXhwciB1aW50NjRf
dCBwcm90b2NvbFZlcnNpb25WYWx1ZSB7IDEgfTsKKworY29uc3RleHByIGNvbnN0IGNoYXIqIHBy
b3RvY29sTWVzc2FnZVR5cGVLZXkgeyAibWVzc2FnZSB0eXBlIiB9OworZW51bSBjbGFzcyBNZXNz
YWdlVHlwZSA6IHVpbnQ4X3QgeworICAgIFN0b3JlVW5hdHRyaWJ1dGVkLAorICAgIEhhbmRsZUF0
dHJpYnV0aW9uLAorICAgIENsZWFyLAorICAgIENsZWFyRm9yUmVnaXN0cmFibGVEb21haW4sCisg
ICAgTWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UsCisgICAg
VG9TdHJpbmdGb3JUZXN0aW5nLAorICAgIFNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nLAorICAg
IFNldFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZywKKyAgICBTZXRUb2tlblNpZ25hdHVyZVVS
TEZvclRlc3RpbmcsCisgICAgU2V0QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZywKKyAg
ICBNYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZywKKyAgICBNYXJrQXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcsCisgICAgU2V0
RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nLAorICAgIFNldFBDTUZyYXVkUHJldmVudGlv
blZhbHVlc0ZvclRlc3RpbmcsCisgICAgU3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZywK
KyAgICBEZXN0cm95U3RvcmVGb3JUZXN0aW5nLAorfTsKKworY29uc3RleHByIGNvbnN0IGNoYXIq
IHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXkgeyAiZW5jb2RlZCBtZXNzYWdlIiB9OwordXNpbmcg
RW5jb2RlZE1lc3NhZ2UgPSBWZWN0b3I8dWludDhfdD47CisKK3ZvaWQgZGVjb2RlTWVzc2FnZUFu
ZFNlbmRUb01hbmFnZXIoTWVzc2FnZVR5cGUsIFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmKTsKK2Jvb2wgbWVzc2Fn
ZVR5cGVTZW5kc1JlcGx5KE1lc3NhZ2VUeXBlKTsKKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU+IHsKKyAgICB1c2luZyB2YWx1
ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGUsCisgICAg
ICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6U3RvcmVVbmF0dHJpYnV0ZWQsCisgICAgICAg
IFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6SGFuZGxlQXR0cmlidXRpb24sCisgICAgICAgIFdl
YktpdDo6UENNOjpNZXNzYWdlVHlwZTo6Q2xlYXIsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNz
YWdlVHlwZTo6Q2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbiwKKyAgICAgICAgV2ViS2l0OjpQQ006
Ok1lc3NhZ2VUeXBlOjpNaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3Rv
cmFnZSwKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpUb1N0cmluZ0ZvclRlc3Rp
bmcsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6U2V0T3ZlcnJpZGVUaW1lckZv
clRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6U2V0VG9rZW5QdWJs
aWNLZXlVUkxGb3JUZXN0aW5nLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlNl
dFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZywKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3Nh
Z2VUeXBlOjpTZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nLAorICAgICAgICBXZWJL
aXQ6OlBDTTo6TWVzc2FnZVR5cGU6Ok1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0
aW5nLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6Ok1hcmtBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZywKKyAgICAgICAgV2ViS2l0
OjpQQ006Ok1lc3NhZ2VUeXBlOjpTZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcsCisg
ICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6U2V0UENNRnJhdWRQcmV2ZW50aW9uVmFs
dWVzRm9yVGVzdGluZywKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTdGFydFRp
bWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5
cGU6OkRlc3Ryb3lTdG9yZUZvclRlc3RpbmcKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjYWU0ZTRmZjU4
Y2I2MWY1NWY1YjUxOTViYTVlM2QwYmE4ZGJkZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcApAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXJQcm94eS5oIgorCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKwordGVtcGxhdGU8TWVzc2FnZVR5cGUgbWVzc2Fn
ZVR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Cit2b2lkIHNlbmRNZXNzYWdlKEFyZ3MmJi4uLiBhcmdz
KQoreworICAgIEVuY29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyLmVuY29kZShzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pOworICAgIENvbm5lY3Rpb246OmNvbm5lY3Rpb25Ub0RhZW1vbigp
LnNlbmQobWVzc2FnZVR5cGUsIGVuY29kZXIudGFrZUJ1ZmZlcigpKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJncz4gc3RydWN0IFJlcGx5Q2FsbGVyOwordGVtcGxhdGU8PiBzdHJ1Y3Qg
UmVwbHlDYWxsZXI8PiB7CisgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KERlY29kZXImJiBkZWNv
ZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KK307Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBSZXBseUNhbGxlcjxTdHJpbmc+IHsKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGVj
b2RlciYmIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHN0cmlu
ZzsKKyAgICAgICAgZGVjb2RlciA+PiBzdHJpbmc7CisgICAgICAgIGlmICghc3RyaW5nKQorICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoKnN0cmluZykpOworICAgIH0KK307CisKK3RlbXBsYXRlPE1lc3Nh
Z2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzLCB0eXBlbmFtZS4uLiBSZXBseUFy
Z3M+Cit2b2lkIHNlbmRNZXNzYWdlV2l0aFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVw
bHlBcmdzLi4uKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXJncyYmLi4uIGFyZ3MpCit7CisgICAg
RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIuZW5jb2RlKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7CisgICAgQ29ubmVjdGlvbjo6Y29ubmVjdGlvblRvRGFlbW9uKCkuc2VuZFdpdGhS
ZXBseShtZXNzYWdlVHlwZSwgZW5jb2Rlci50YWtlQnVmZmVyKCksIFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byByZXBseUJ1ZmZlcikgbXV0YWJs
ZSB7CisgICAgICAgIERlY29kZXIgZGVjb2RlcihXVEZNb3ZlKHJlcGx5QnVmZmVyKSk7CisgICAg
ICAgIFJlcGx5Q2FsbGVyPFJlcGx5QXJncy4uLj46OmNhbGxSZXBseShXVEZNb3ZlKGRlY29kZXIp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTWFuYWdl
clByb3h5OjpzdG9yZVVuYXR0cmlidXRlZChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCYmIHBjbSkKK3sKKyAgICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlwZTo6U3RvcmVVbmF0dHJpYnV0
ZWQ+KHBjbSk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpoYW5kbGVBdHRyaWJ1dGlvbihXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIHRy
aWdnZXJEYXRhLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYgcmVkaXJlY3REb21haW4sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCkKK3sKKyAgICBz
ZW5kTWVzc2FnZTxNZXNzYWdlVHlwZTo6SGFuZGxlQXR0cmlidXRpb24+KHRyaWdnZXJEYXRhLCBy
ZXF1ZXN0VVJMLCByZWRpcmVjdERvbWFpbiwgZmlyc3RQYXJ0eVVSTCk7Cit9CisKK3ZvaWQgTWFu
YWdlclByb3h5OjpjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZVR5cGU6OkNsZWFyPihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpjbGVh
ckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlVHlwZTo6Q2xlYXJGb3JSZWdpc3RyYWJs
ZURvbWFpbj4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRvbWFpbik7Cit9CisKK3ZvaWQg
TWFuYWdlclByb3h5OjptaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3Rv
cmFnZShXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIHBjbSwgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgdHlwZSkKK3sKKyAgICBzZW5kTWVzc2FnZTxNZXNz
YWdlVHlwZTo6TWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2U+
KHBjbSwgdHlwZSk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5Ojp0b1N0cmluZ0ZvclRlc3Rpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25z
dAoreworICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VUeXBlOjpUb1N0cmluZ0ZvclRl
c3Rpbmc+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBNYW5hZ2VyUHJv
eHk6OnNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUpCit7CisgICAgc2VuZE1l
c3NhZ2U8TWVzc2FnZVR5cGU6OlNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nPih2YWx1ZSk7Cit9
CisKK3ZvaWQgTWFuYWdlclByb3h5OjpzZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJM
JiYgdXJsKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpTZXRUb2tlblB1YmxpY0tl
eVVSTEZvclRlc3Rpbmc+KHVybCk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpzZXRUb2tlblNp
Z25hdHVyZVVSTEZvclRlc3RpbmcoVVJMJiYgdXJsKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3Nh
Z2VUeXBlOjpTZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmc+KHVybCk7Cit9CisKK3ZvaWQg
TWFuYWdlclByb3h5OjpzZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVSTCYmIHNv
dXJjZVVSTCwgVVJMJiYgZGVzdGluYXRpb25VUkwpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2Fn
ZVR5cGU6OlNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3Rpbmc+KHNvdXJjZVVSTCwgZGVz
dGluYXRpb25VUkwpOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6bWFya0FsbFVuYXR0cmlidXRl
ZEFzRXhwaXJlZEZvclRlc3RpbmcoKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpN
YXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZz4oKTsKK30KKwordm9pZCBNYW5h
Z2VyUHJveHk6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVk
Rm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZVR5cGU6Ok1hcmtBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZz4oV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6c2V0RXBoZW1lcmFsTWVh
c3VyZW1lbnRGb3JUZXN0aW5nKGJvb2wgdmFsdWUpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2Fn
ZVR5cGU6OlNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZz4odmFsdWUpOworfQorCit2
b2lkIE1hbmFnZXJQcm94eTo6c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhT
dHJpbmcmJiB1bmxpbmthYmxlVG9rZW4sIFN0cmluZyYmIHNlY3JldFRva2VuLCBTdHJpbmcmJiBz
aWduYXR1cmUsIFN0cmluZyYmIGtleUlEKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBl
OjpTZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nPih1bmxpbmthYmxlVG9rZW4s
IHNlY3JldFRva2VuLCBzaWduYXR1cmUsIGtleUlEKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6
OnN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3RpbmcoKQoreworICAgIHNlbmRNZXNzYWdlPE1l
c3NhZ2VUeXBlOjpTdGFydFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nPigpOworfQorCit2b2lk
IE1hbmFnZXJQcm94eTo6ZGVzdHJveVN0b3JlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8
TWVzc2FnZVR5cGU6OkRlc3Ryb3lTdG9yZUZvclRlc3Rpbmc+KFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjZDQxMTk5NGI0YjA2ZjBm
NmI1ZDk5MTVmMmYyY2RmYWNhOTZlNmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlclByb3h5LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJm
YWNlLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK25hbWVzcGFjZSBQQ00geworCitjbGFzcyBNYW5hZ2VyUHJveHkgOiBwdWJsaWMgTWFuYWdl
ckludGVyZmFjZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
dm9pZCBzdG9yZVVuYXR0cmlidXRlZChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYm
KSBmaW5hbDsKKyAgICB2b2lkIGhhbmRsZUF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYsIGNvbnN0IFVSTCYgcmVxdWVz
dFVSTCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWRpcmVjdERvbWFpbiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5VVJMKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWlu
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZy
b21MZWdhY3lTdG9yYWdlKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKSBmaW5hbDsKKworICAgIHZvaWQgdG9T
dHJpbmdGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJikgY29uc3Qg
ZmluYWw7CisgICAgdm9pZCBzZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhib29sKSBmaW5hbDsK
KyAgICB2b2lkIHNldFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwmJikgZmluYWw7Cisg
ICAgdm9pZCBzZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoVVJMJiYpIGZpbmFsOworICAg
IHZvaWQgc2V0QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZyhVUkwmJiBzb3VyY2VVUkws
IFVSTCYmIGRlc3RpbmF0aW9uVVJMKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0
ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCkgZmluYWw7CisgICAgdm9pZCBtYXJrQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9y
VGVzdGluZyhib29sKSBmaW5hbDsKKyAgICB2b2lkIHNldFBDTUZyYXVkUHJldmVudGlvblZhbHVl
c0ZvclRlc3RpbmcoU3RyaW5nJiYgdW5saW5rYWJsZVRva2VuLCBTdHJpbmcmJiBzZWNyZXRUb2tl
biwgU3RyaW5nJiYgc2lnbmF0dXJlLCBTdHJpbmcmJiBrZXlJRCkgZmluYWw7CisgICAgdm9pZCBz
dGFydFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nKCkgZmluYWw7CisgICAgdm9pZCBkZXN0cm95
U3RvcmVGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2Nv
Y29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42MWI1ODUwNjY1OGEzZjk1MzVlZWZiMWE2MDVhMjU1ZDg3MjQ3NzFhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQpA
QCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgiCisKKyNpbXBvcnQgIlByaXZh
dGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmgiCisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCitDb25u
ZWN0aW9uOjpDb25uZWN0aW9uKE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+JiYgY29ubmVj
dGlvbikKKyAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKSB7IH0KKworQ29u
bmVjdGlvbiBDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9EYWVtb24oKQoreworICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9TT2JqZWN0UHRy
PHhwY19jb25uZWN0aW9uX3Q+PiBjb25uZWN0aW9uOworICAgIGlmICghY29ubmVjdGlvbi5nZXQo
KSkgeworICAgICAgICBjb25uZWN0aW9uLmdldCgpID0gYWRvcHRPU09iamVjdCh4cGNfY29ubmVj
dGlvbl9jcmVhdGVfbWFjaF9zZXJ2aWNlKCJjb20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25k
LnNlcnZpY2UiLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCAwKSk7CisgICAgICAgIHhwY19j
b25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKGNvbm5lY3Rpb24uZ2V0KCkuZ2V0KCksIF4oeHBj
X29iamVjdF90IGV2ZW50KSB7CisgICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OworICAgICAgICAgICAgaWYgKGV2ZW50ID09IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVEVSUlVQ
VEVEKSB7CisgICAgICAgICAgICAgICAgLy8gRGFlbW9uIGNyYXNoZWQsIHdlIHdpbGwgbmVlZCB0
byBtYWtlIGEgbmV3IGNvbm5lY3Rpb24gdG8gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGRhZW1vbi4K
KyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmdldCgpID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9
KTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fYWN0aXZhdGUoY29ubmVjdGlvbi5nZXQoKS5nZXQo
KSk7CisgICAgfQorICAgIHJldHVybiBDb25uZWN0aW9uKE9TT2JqZWN0UHRyPHhwY19jb25uZWN0
aW9uX3Q+KGNvbm5lY3Rpb24uZ2V0KCkpKTsKK30KKworc3RhdGljIE9TT2JqZWN0UHRyPHhwY19v
YmplY3RfdD4gZGljdGlvbmFyeUZyb21NZXNzYWdlKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBF
bmNvZGVkTWVzc2FnZSYmIG1lc3NhZ2UpCit7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRP
U09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAg
IGFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2FnZVRvRGljdGlvbmFyeShXVEZNb3ZlKG1lc3NhZ2Up
LCBkaWN0aW9uYXJ5LmdldCgpKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRpY3Rp
b25hcnkuZ2V0KCksIHByb3RvY29sTWVzc2FnZVR5cGVLZXksIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihtZXNzYWdlVHlwZSkpOworICAgIHJldHVybiBkaWN0aW9uYXJ5OworfQorCit2b2lkIENvbm5l
Y3Rpb246OnNlbmQoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYgbWVz
c2FnZSkKK3sKKyAgICBpZiAoIW1fY29ubmVjdGlvbikgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHhwY19jb25uZWN0aW9uX3Nl
bmRfbWVzc2FnZShtX2Nvbm5lY3Rpb24uZ2V0KCksIGRpY3Rpb25hcnlGcm9tTWVzc2FnZShtZXNz
YWdlVHlwZSwgV1RGTW92ZShtZXNzYWdlKSkuZ2V0KCkpOworfQorCit2b2lkIENvbm5lY3Rpb246
OnNlbmRXaXRoUmVwbHkoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYg
bWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fY29ubmVjdGlvbikgeworICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
CisgICAgfQorCisgICAgYXV0byBkaWN0aW9uYXJ5ID0gZGljdGlvbmFyeUZyb21NZXNzYWdlKG1l
c3NhZ2VUeXBlLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21l
c3NhZ2Vfd2l0aF9yZXBseShtX2Nvbm5lY3Rpb24uZ2V0KCksIGRpY3Rpb25hcnkuZ2V0KCksIGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKHhwY19vYmplY3RfdCByZXBseSkgbXV0YWJs
ZSB7CisgICAgICAgIGlmICh4cGNfZ2V0X3R5cGUocmVwbHkpICE9IFhQQ19UWVBFX0RJQ1RJT05B
UlkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHhwY19k
aWN0aW9uYXJ5X2dldF91aW50NjQocmVwbHksIHByb3RvY29sVmVyc2lvbktleSkgIT0gcHJvdG9j
b2xWZXJzaW9uVmFsdWUpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIH0KKyAgICAg
ICAgc2l6ZV90IGRhdGFTaXplIHsgMCB9OworICAgICAgICBjb25zdCB2b2lkKiBkYXRhID0geHBj
X2RpY3Rpb25hcnlfZ2V0X2RhdGEocmVwbHksIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksICZk
YXRhU2l6ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBkYXRhU2l6ZSB9KTsKKyAgICB9KS5nZXQoKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1tCmluZGV4IGQ2YmYwNmUxMTFmNmJiNWY3
ZWYyOGYxOTZkMmVlMzgwMGM3YzhhNGMuLmIzYmExZTI0MjQyMDhlNzU0MThjMjcyZTZiNjU0MDcz
NDAzNmQ2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9h
ZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJD
b2NvYS5tbQpAQCAtNTcsNiArNTcsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUENNUmVxdWVzdChX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQsCiAKIC0gKHZv
aWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Npb25U
YXNrICopdGFzayBkaWRSZWNlaXZlQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3Jl
ZGVudGlhbCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICAvLyBGSVhNRTogQWRkIHBsdWJtaW5n
IHNvIHRoYXQgd2UgY2FuIHRlbGwgdGhlIGRhZW1vbiB3aGljaCBjZXJ0aWZpY2F0ZXMgdG8gYWNj
ZXB0IHdpdGhvdXQgdXNpbmcgTmV0d29ya1Nlc3Npb25Db2NvYS4KICAgICBpZiAoW2NoYWxsZW5n
ZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QgaXNFcXVhbFRvU3RyaW5nOk5T
VVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdF0KICAgICAgICAgJiYgTmV0d29ya1Nl
c3Npb25Db2NvYTo6YWxsb3dzU3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjaGFsbGVu
Z2UpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENo
YWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0
OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2Ev
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRYUENVdGlsaXRpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzcwNzg2ZWYxNTk4YzgzZmE0MzYy
ZGYzZDZjN2ZlNzc4M2UxMjFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFhQQ1V0aWxpdGllcy5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCit2b2lk
IGFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2FnZVRvRGljdGlvbmFyeShWZWN0b3I8dWludDhfdD4m
JiwgeHBjX29iamVjdF90KTsKKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGll
cy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTYzMDMxYjVjMzZiNzEyNjE4MjE3MDQzZmY5N2RmZjk0NzRjNWQyYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0KQEAgLTAsMCAr
MSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K25hbWVzcGFjZSBQQ00geworCit2b2lkIGFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2FnZVRvRGlj
dGlvbmFyeShWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCB4cGNfb2JqZWN0X3QgZGljdGlvbmFy
eSkKK3sKKyAgICBBU1NFUlQoeHBjX2dldF90eXBlKGRpY3Rpb25hcnkpID09IFhQQ19UWVBFX0RJ
Q1RJT05BUlkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFyeSwgUENN
Ojpwcm90b2NvbFZlcnNpb25LZXksIFBDTTo6cHJvdG9jb2xWZXJzaW9uVmFsdWUpOworCisgICAg
YXV0byBidWZmZXJTaXplID0gbWVzc2FnZS5zaXplKCk7CisgICAgYXV0byByYXdQb2ludGVyID0g
bWVzc2FnZS5yZWxlYXNlQnVmZmVyKCkubGVha1B0cigpOworICAgIGF1dG8gZGlzcGF0Y2hEYXRh
ID0gYWRvcHROUyhkaXNwYXRjaF9kYXRhX2NyZWF0ZShyYXdQb2ludGVyLCBidWZmZXJTaXplLCBk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBmYXN0RnJlZShyYXdQb2ludGVy
KTsKKyAgICB9KSk7CisgICAgYXV0byB4cGNEYXRhID0gYWRvcHRPU09iamVjdCh4cGNfZGF0YV9j
cmVhdGVfd2l0aF9kaXNwYXRjaF9kYXRhKGRpc3BhdGNoRGF0YS5nZXQoKSkpOworICAgIHhwY19k
aWN0aW9uYXJ5X3NldF92YWx1ZShkaWN0aW9uYXJ5LCBQQ006OnByb3RvY29sRW5jb2RlZE1lc3Nh
Z2VLZXksIHhwY0RhdGEuZ2V0KCkpOworCit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNi
LmluCmluZGV4IDNiOTc5NDU1MDc5ZTQ1NmUzNTQ5M2UxZTFlNWNhNDZiOWQ3ZTg4ZWQuLjE5NzRi
OGU5ZjI1OWFlZWZjOTQ0NjQ2ODRiMjA0ZDM1MGYzOGQ0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Mu
c2IuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldl
YktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgpAQCAtMzU3LDYgKzM1Nyw4IEBACiAgICAgKGdsb2Jh
bC1uYW1lICJjb20uYXBwbGUuQXBwU1NPLnNlcnZpY2UteHBjIikKICkKIAorKGFsbG93IG1hY2gt
bG9va3VwIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2
aWNlIikpCisKICh3aXRoLWZpbHRlciAodWlkIDApCiAgICAgKGFsbG93IG1hY2gtbG9va3VwCiAg
ICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLkRpc2tBcmJpdHJhdGlvbi5kaXNrYXJiaXRy
YXRpb25kIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50
Q29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAppbmRl
eCBiY2Y3Y2QxNjNkOWJhOTIzZDE4MGEwM2Y4YTZlZTQ1MGY3NmMxYTFkLi41MzNlODA5NzA1NDA1
NWI4MWE2YzVlYTEwOTgxYzViNGQ0MDI4NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQXJndW1lbnRDb2Rlci5oCkBAIC00OCw2ICs0OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lID0gdm9pZD4gc3RydWN0IEFyZ3VtZW50Q29kZXIgewogICAgICAgICB0LmVuY29k
ZShlbmNvZGVyKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFQ+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsK
ICAgICAgICAgaWYgY29uc3RleHByKEhhc01vZGVybkRlY29kZXJWPFQ+KQpAQCAtODIsNiArODMs
NyBAQCBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfYXJpdGhtZXRpY192PFQ+Pj4gewogICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2Yo
VCksIGFsaWdub2YoVCkpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgewogICAgICAgICBUIHJlc3VsdDsKQEAgLTEwMCw2ICsxMDIsNyBAQCBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bV92PFQ+Pj4g
ewogICAgICAgICBlbmNvZGVyIDw8IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGU8VD4odmFsdWUp
OwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAgICBz
dGQ6Om9wdGlvbmFsPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8VD4+IHZhbHVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDgxMGVlMmNlNTFm
MjdjMmRiZDYwN2U1MzJhYTI2ZDYwNTY5YWIyOWIuLmZmZjllNWUzZjZiM2UyZWQ1NmI1NjYxZTAz
Mjc0OWVlNjMyMzZkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Fy
Z3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVycy5jcHAKQEAgLTI3LDE2ICsyNywyMyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
LmgiCiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREZWNvZGVyLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRF
bmNvZGVyLmgiCiAjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBJUEMgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogdm9pZCBBcmd1
bWVudENvZGVyPFdhbGxUaW1lPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdhbGxU
aW1lJiB0aW1lKQogewogICAgIGVuY29kZXIgPDwgdGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZh
bHVlKCk7CiB9Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFdhbGxUaW1lPjo6ZW5jb2Rl
PEVuY29kZXI+KEVuY29kZXImLCBjb25zdCBXYWxsVGltZSYpOwordGVtcGxhdGUKK3ZvaWQgQXJn
dW1lbnRDb2RlcjxXYWxsVGltZT46OmVuY29kZTxXZWJLaXQ6OlBDTTo6RW5jb2Rlcj4oV2ViS2l0
OjpQQ006OkVuY29kZXImLCBjb25zdCBXYWxsVGltZSYpOwogCiBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBBcmd1bWVudENvZGVyPFdhbGxUaW1lPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdh
bGxUaW1lJiB0aW1lKQogewpAQCAtNDgsNiArNTUsNyBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBBcmd1bWVudENvZGVyPFdhbGxUaW1lPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdhbGxU
aQogICAgIHJldHVybiB0cnVlOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogV0FS
Tl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IEFyZ3VtZW50Q29kZXI8V2Fs
bFRpbWU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gdGltZTsKQEAgLTU2LDYgKzY0LDEwIEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9w
dGlvbmFsPFdhbGxUaW1lPiBBcmd1bWVudENvZGVyPFdhbGxUaW1lPjo6ZGVjb2RlKERlY29kCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3
U2Vjb25kcygqdGltZSk7CiB9Cit0ZW1wbGF0ZQorc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gQXJn
dW1lbnRDb2RlcjxXYWxsVGltZT46OmRlY29kZTxEZWNvZGVyPihEZWNvZGVyJik7Cit0ZW1wbGF0
ZQorc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gQXJndW1lbnRDb2RlcjxXYWxsVGltZT46OmRlY29k
ZTxXZWJLaXQ6OlBDTTo6RGVjb2Rlcj4oV2ViS2l0OjpQQ006OkRlY29kZXImKTsKIAogdm9pZCBB
cmd1bWVudENvZGVyPEF0b21TdHJpbmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
QXRvbVN0cmluZyYgYXRvbVN0cmluZykKIHsKQEAgLTEzMywxMiArMTQ1LDE0IEBAIHRlbXBsYXRl
CiB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlPEVuY29kZXI+KEVuY29kZXImLCBj
b25zdCBTdHJpbmcmKTsKIHRlbXBsYXRlCiB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5j
b2RlPFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyPihTdHJlYW1Db25uZWN0aW9uRW5jb2RlciYsIGNv
bnN0IFN0cmluZyYpOwordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNv
ZGU8V2ViS2l0OjpQQ006OkVuY29kZXI+KFdlYktpdDo6UENNOjpFbmNvZGVyJiwgY29uc3QgU3Ry
aW5nJik7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgordGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgRGVjb2Rlcj4KIHN0YXRpYyBpbmxpbmUgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IGRlY29kZVN0cmluZ1RleHQoRGVjb2RlciYgZGVjb2RlciwgdWlu
dDMyX3QgbGVuZ3RoKQogewogICAgIC8vIEJlZm9yZSBhbGxvY2F0aW5nIHRoZSBzdHJpbmcsIG1h
a2Ugc3VyZSB0aGF0IHRoZSBkZWNvZGVyIGJ1ZmZlciBpcyBiaWcgZW5vdWdoLgotICAgIGlmICgh
ZGVjb2Rlci5idWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPENoYXJhY3RlclR5cGU+KGxlbmd0
aCkpCisgICAgaWYgKCFkZWNvZGVyLnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW48Q2hhcmFjdGVyVHlwZT4obGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKICAgICBDaGFyYWN0ZXJUeXBlKiBidWZmZXI7CkBAIC0xNDksMjUgKzE2MywzMiBAQCBz
dGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJpbmdUZXh0KERlY29k
ZXImIGRlY29kZXIsIHVpbnQzMl90CiAgICAgcmV0dXJuIHN0cmluZzsKIH0KIAordGVtcGxhdGU8
dHlwZW5hbWUgRGVjb2Rlcj4KIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gQXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAg
ICB1aW50MzJfdCBsZW5ndGg7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShsZW5ndGgpKQorICAg
IHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGxlbmd0aDsKKyAgICBkZWNvZGVyID4+IGxlbmd0aDsK
KyAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAg
ICBpZiAobGVuZ3RoID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkgewor
ICAgIGlmICgqbGVuZ3RoID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkg
ewogICAgICAgICAvLyBUaGlzIGlzIHRoZSBudWxsIHN0cmluZy4KICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogICAgIH0KICAgICAKLSAgICBib29sIGlzOEJpdDsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGlzOEJpdCkpCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpczhCaXQ7CisgICAgZGVj
b2RlciA+PiBpczhCaXQ7CisgICAgaWYgKCFpczhCaXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCi0gICAgaWYgKGlzOEJpdCkKLSAgICAgICAgcmV0dXJuIGRlY29kZVN0cmlu
Z1RleHQ8TENoYXI+KGRlY29kZXIsIGxlbmd0aCk7Ci0gICAgcmV0dXJuIGRlY29kZVN0cmluZ1Rl
eHQ8VUNoYXI+KGRlY29kZXIsIGxlbmd0aCk7CisgICAgaWYgKCppczhCaXQpCisgICAgICAgIHJl
dHVybiBkZWNvZGVTdHJpbmdUZXh0PExDaGFyPihkZWNvZGVyLCAqbGVuZ3RoKTsKKyAgICByZXR1
cm4gZGVjb2RlU3RyaW5nVGV4dDxVQ2hhcj4oZGVjb2RlciwgKmxlbmd0aCk7CiB9Cit0ZW1wbGF0
ZQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2RlPERl
Y29kZXI+KERlY29kZXImKTsKK3RlbXBsYXRlCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQXJndW1l
bnRDb2RlcjxTdHJpbmc+OjpkZWNvZGU8V2ViS2l0OjpQQ006OkRlY29kZXI+KFdlYktpdDo6UENN
OjpEZWNvZGVyJik7CiAKIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIEFyZ3VtZW50Q29kZXI8U3Ry
aW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN0cmluZyYgcmVzdWx0KQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggYzk3YTZmNTc2ZWZk
YWVhZTA0ZjY5ODNiZTI1OTQyY2UyMDM5ZmU5Zi4uYjE4MmM1NGViNzg4ZDNkNjk4MTRhYTgwNzNl
NGZmMWFhOWYzOTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJn
dW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oCkBAIC0zMDAsNiArMzAwLDcgQEAgYXV0byB0dXBsZUZyb21UdXBsZUFuZE9iamVjdChU
JiYgb2JqZWN0LCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiYmIHR1cGxlKQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUeXBlLCB0eXBlbmFtZS4uLiBUeXBlcz4KIHN0cnVjdCBUdXBsZURlY29kZXJJbXBs
IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPHN0ZDo6dHVwbGU8VHlwZSwgVHlwZXMuLi4+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VHlwZT4gb3B0aW9uYWw7CkBAIC0zMTcsNiAr
MzE4LDcgQEAgc3RydWN0IFR1cGxlRGVjb2RlckltcGwgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
eXBlPgogc3RydWN0IFR1cGxlRGVjb2RlckltcGw8VHlwZT4geworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIERlY29kZXI+CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxUeXBlPj4g
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFR5
cGU+IG9wdGlvbmFsOwpAQCAtMzI5LDYgKzMzMSw3IEBAIHN0cnVjdCBUdXBsZURlY29kZXJJbXBs
PFR5cGU+IHsKIAogdGVtcGxhdGU8c2l6ZV90IHNpemUsIHR5cGVuYW1lLi4uIEVsZW1lbnRzPgog
c3RydWN0IFR1cGxlRGVjb2RlciB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj4gZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAgICByZXR1cm4gVHVwbGVEZWNvZGVySW1wbDxF
bGVtZW50cy4uLj46OmRlY29kZShkZWNvZGVyKTsKQEAgLTMzNyw2ICszNDAsNyBAQCBzdHJ1Y3Qg
VHVwbGVEZWNvZGVyIHsKIAogdGVtcGxhdGU8Pgogc3RydWN0IFR1cGxlRGVjb2RlcjwwPiB7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxz
dGQ6OnR1cGxlPD4+IGRlY29kZShEZWNvZGVyJikKICAgICB7CiAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdHVwbGUoKTsKQEAgLTM1MCw2ICszNTQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBF
bGVtZW50cz4gc3RydWN0IEFyZ3VtZW50Q29kZXI8c3RkOjp0dXBsZTxFbGVtZW50cy4uLj4+IHsK
ICAgICAgICAgVHVwbGVFbmNvZGVyPHNpemVvZi4uLihFbGVtZW50cyksIEVsZW1lbnRzLi4uPjo6
ZW5jb2RlKGVuY29kZXIsIHR1cGxlKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBE
ZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+
PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIHJldHVybiBUdXBsZURl
Y29kZXI8c2l6ZW9mLi4uKEVsZW1lbnRzKSwgRWxlbWVudHMuLi4+OjpkZWNvZGUoZGVjb2Rlcik7
CkBAIC03MjEsOCArNzI2LDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFR5cGVzPiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+PiB7CiB9OwogICAgIAogdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXYWxsVGltZT4geworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXYWxs
VGltZSYpOwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2Rl
ciYsIFdhbGxUaW1lJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKQEAgLTc0
MCw2ICs3NDcsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFN0cmluZz4gewog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlKERlY29kZXImLCBTdHJpbmcmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNv
ZGVyPgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZGVjb2RlKERlY29kZXImKTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS01haW4u
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS01haW4uaAppbmRleCA3YTkyN2M3
N2QyNmQ4NTViNGI2ZmVhZGE5ODAzYTA0N2NlZThiNWMzLi40YmU3OWQyYTViZDBlNzA0ZjlhM2Jj
NDgzYjJkMjU4Y2Q0OGVkYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvV0tNYWluLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLTWFp
bi5oCkBAIC0zMyw2ICszMyw3IEBAIGV4dGVybiAiQyIgewogI2VuZGlmCiAKIFdLX0VYUE9SVCBp
bnQgV0tYUENTZXJ2aWNlTWFpbihpbnQgYXJnYywgY29uc3QgY2hhcioqIGFyZ3YpIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOworV0tfRVhQT1JUIGludCBXS1BDTURh
ZW1vbk1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqKiBhcmd2KSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS01haW4ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tNYWluLm1tCmluZGV4IGU0ODA1YTQ4
ZDUxNDA2YWQ1OTU2NmIzNzdiZTI1Mzk4MmE5YWViOTAuLjQ2ODAxZGJmZmNlNmI4MjZjZDEwZGNh
YWRhMzMwZDZmNWZkZjE4YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XS01haW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLTWFp
bi5tbQpAQCAtMjYsOSArMjYsMTUgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tN
YWluLmgiCiAKKyNpbXBvcnQgIlBDTURhZW1vbkVudHJ5UG9pbnQuaCIKICNpbXBvcnQgIlhQQ1Nl
cnZpY2VFbnRyeVBvaW50LmgiCiAKIGludCBXS1hQQ1NlcnZpY2VNYWluKGludCBhcmdjLCBjb25z
dCBjaGFyKiogYXJndikKIHsKICAgICByZXR1cm4gV2ViS2l0OjpYUENTZXJ2aWNlTWFpbihhcmdj
LCBhcmd2KTsKIH0KKworaW50IFdLUENNRGFlbW9uTWFpbihpbnQgYXJnYywgY29uc3QgY2hhcioq
IGFyZ3YpCit7CisgICAgcmV0dXJuIFdlYktpdDo6UENNRGFlbW9uTWFpbihhcmdjLCBhcmd2KTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMv
Q29jb2EvRGFlbW9uL1BDTURhZW1vbkVudHJ5UG9pbnQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkVudHJ5UG9pbnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40OGM5MTIwYmY1Y2NiYzE3MWY5YTVjZDllZDEyZTdjZDAzOTZlMzQ1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9D
b2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2ludCBQQ01EYWVt
b25NYWluKGludCwgY29uc3QgY2hhcioqKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0Rh
ZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQ
b2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43ZjIzMjFkZTViMTljMWMxNjc0OWJmZDZhNjM0NjRmODRlZDUyNDU3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9E
YWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5tbQpAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUENNRGFlbW9uRW50cnlQb2ludC5oIgor
CisjaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKyNpbXBvcnQg
IlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oIgorI2ltcG9ydCAiUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgorI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW1wb3J0
IDx3dGYvSGFzaFNldC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3Rm
L2NvY29hL0VudGl0bGVtZW50cy5oPgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+
CisKKy8vIEZJWE1FOiBBZGQgZGFlbW9uIHBsaXN0IHRvIHJlcG9zaXRvcnkuCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitzdGF0aWMgSGFzaFNldDxSZXRhaW5QdHI8eHBjX2Nvbm5lY3Rpb25fdD4+
JiBwZWVycygpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxSZXRhaW5QdHI8eHBjX2Nvbm5lY3Rpb25fdD4+PiBzZXQ7
CisgICAgcmV0dXJuIHNldC5nZXQoKTsKK30KKworc3RhdGljIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUENNOjpFbmNvZGVkTWVzc2FnZSYmKT4gcmVwbHlTZW5kZXIoUENNOjpNZXNzYWdlVHlwZSBt
ZXNzYWdlVHlwZSwgT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiYmIHJlcXVlc3QpCit7CisgICAg
aWYgKCFQQ006Om1lc3NhZ2VUeXBlU2VuZHNSZXBseShtZXNzYWdlVHlwZSkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCldIChQ
Q006OkVuY29kZWRNZXNzYWdlJiYgbWVzc2FnZSkgeworICAgICAgICBhdXRvIHJlcGx5ID0gYWRv
cHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGVfcmVwbHkocmVxdWVzdC5nZXQoKSkpOwor
ICAgICAgICBQQ006OmFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2FnZVRvRGljdGlvbmFyeShXVEZN
b3ZlKG1lc3NhZ2UpLCByZXBseS5nZXQoKSk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRf
bWVzc2FnZSh4cGNfZGljdGlvbmFyeV9nZXRfcmVtb3RlX2Nvbm5lY3Rpb24ocmVxdWVzdC5nZXQo
KSksIHJlcGx5LmdldCgpKTsKKyAgICB9OworfQorCitzdGF0aWMgdm9pZCBjb25uZWN0aW9uRXZl
bnRIYW5kbGVyKHhwY19vYmplY3RfdCByZXF1ZXN0KQoreworICAgIGlmICh4cGNfZ2V0X3R5cGUo
cmVxdWVzdCkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKKyAgICAgICAgcmV0dXJuOworICAgIGlm
ICh4cGNfZGljdGlvbmFyeV9nZXRfdWludDY0KHJlcXVlc3QsIFBDTTo6cHJvdG9jb2xWZXJzaW9u
S2V5KSAhPSBQQ006OnByb3RvY29sVmVyc2lvblZhbHVlKSB7CisgICAgICAgIE5TTG9nKEAicmVj
ZWl2ZWQgcmVxdWVzdCB0aGF0IHdhcyBub3QgdGhlIGN1cnJlbnQgcHJvdG9jb2wgdmVyc2lvbiIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBtZXNzYWdlVHlwZSB7IHN0YXRp
Y19jYXN0PFBDTTo6TWVzc2FnZVR5cGU+KHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVz
dCwgUENNOjpwcm90b2NvbE1lc3NhZ2VUeXBlS2V5KSkgfTsKKyAgICBzaXplX3QgZGF0YVNpemUg
eyAwIH07CisgICAgY29uc3Qgdm9pZCogZGF0YSA9IHhwY19kaWN0aW9uYXJ5X2dldF9kYXRhKHJl
cXVlc3QsIFBDTTo6cHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSwgJmRhdGFTaXplKTsKKyAgICBQ
Q006OkVuY29kZWRNZXNzYWdlIGVuY29kZWRNZXNzYWdlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEpLCBkYXRhU2l6ZSB9OworICAgIGRlY29kZU1lc3NhZ2VBbmRTZW5kVG9NYW5h
Z2VyKG1lc3NhZ2VUeXBlLCBXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSwgcmVwbHlTZW5kZXIobWVz
c2FnZVR5cGUsIHJlcXVlc3QpKTsKK30KKworc3RhdGljIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JN
YWNoU2VydmljZUNvbm5lY3Rpb25zKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T1NP
YmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4+IGxpc3RlbmVyID0geHBjX2Nvbm5lY3Rpb25fY3Jl
YXRlX21hY2hfc2VydmljZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNl
IiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgWFBDX0NPTk5FQ1RJT05fTUFDSF9TRVJWSUNF
X0xJU1RFTkVSKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihsaXN0ZW5l
ci5nZXQoKS5nZXQoKSwgXih4cGNfb2JqZWN0X3QgcGVlcikgeworICAgICAgICBpZiAoeHBjX2dl
dF90eXBlKHBlZXIpICE9IFhQQ19UWVBFX0NPTk5FQ1RJT04pCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgLy8gRklYTUU6IEFkZCBhbiBlbnRpdGxlbWVudCBjaGVjayBoZXJlIHNvIHRo
YXQgb25seSB0aGUgbmV0d29yayBwcm9jZXNzIGNhbiBzdWNjZXNzZnVsbHkgY29ubmVjdC4KKwor
ICAgICAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihwZWVyLCBeKHhwY19vYmpl
Y3RfdCBldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50ID09IFhQQ19FUlJPUl9DT05ORUNU
SU9OX0lOVEVSUlVQVEVEKSB7CisgICAgICAgICAgICAgICAgcGVlcnMoKS5yZW1vdmUocGVlcik7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29u
bmVjdGlvbkV2ZW50SGFuZGxlcihldmVudCk7CisgICAgICAgIH0pOworICAgICAgICB4cGNfY29u
bmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKHBlZXIsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkp
OworICAgICAgICB4cGNfY29ubmVjdGlvbl9hY3RpdmF0ZShwZWVyKTsKKyAgICAgICAgCisgICAg
ICAgIHBlZXJzKCkuYWRkKHBlZXIpOworICAgIH0pOworICAgIHhwY19jb25uZWN0aW9uX2FjdGl2
YXRlKGxpc3RlbmVyLmdldCgpLmdldCgpKTsKK30KKworc3RhdGljIHZvaWQgcmVnaXN0ZXJTY2hl
ZHVsZWRBY3Rpdml0eUhhbmRsZXIoKQoreworICAgIHhwY19hY3Rpdml0eV9yZWdpc3RlcigiY29t
LmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5hY3Rpdml0eSIsIFhQQ19BQ1RJVklUWV9DSEVD
S19JTiwgXih4cGNfYWN0aXZpdHlfdCBhY3Rpdml0eSkgeworICAgICAgICBpZiAoeHBjX2FjdGl2
aXR5X2dldF9zdGF0ZShhY3Rpdml0eSkgPT0gWFBDX0FDVElWSVRZX1NUQVRFX0NIRUNLX0lOKSB7
CisgICAgICAgICAgICB4cGNfb2JqZWN0X3QgY3JpdGVyaWEgPSB4cGNfYWN0aXZpdHlfY29weV9j
cml0ZXJpYShhY3Rpdml0eSk7CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBzZXQgdmFsdWVzIGhl
cmUgdGhhdCBhbGlnbiB3aXRoIHZhbHVlcyBmcm9tIHRoZSBwbGlzdC4KKworICAgICAgICAgICAg
eHBjX2FjdGl2aXR5X3NldF9jcml0ZXJpYShhY3Rpdml0eSwgY3JpdGVyaWEpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IEFkZCBjb2RlIGhlcmUg
dGhhdCBkb2VzIGRhaWx5IHRhc2tzIG9mIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci4K
KyAgICB9KTsKK30KKworc3RhdGljIHZvaWQgZW50ZXJTYW5kYm94KCkKK3sKKyAgICAvLyBGSVhN
RTogRW50ZXIgYSBzYW5kYm94IGhlcmUuIFdlIHNob3VsZCBvbmx5IG5lZWQgcmVhZC93cml0ZSBh
Y2Nlc3MgdG8gb3VyIGRhdGFiYXNlIGFuZCBuZXR3b3JrIGFjY2VzcyBhbmQgbm90aGluZyBlbHNl
LgorfQorCitpbnQgUENNRGFlbW9uTWFpbihpbnQgYXJnYywgY29uc3QgY2hhcioqIGFyZ3YpCit7
CisgICAgaWYgKGFyZ2MgIT0gMiB8fCBzdHJjbXAoYXJndlsxXSwgInJ1bkFzRGFlbW9uIikpIHsK
KyAgICAgICAgTlNMb2coQCJUaGlzIGV4ZWN1dGFibGUgaXMgaW50ZW5kZWQgdG8gYmUgcnVuIGFz
IGEgZGFlbW9uLiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIEBhdXRvcmVsZWFz
ZXBvb2wgeworICAgICAgICBlbnRlclNhbmRib3goKTsKKyAgICAgICAgc3RhcnRMaXN0ZW5pbmdG
b3JNYWNoU2VydmljZUNvbm5lY3Rpb25zKCk7CisgICAgICAgIHJlZ2lzdGVyU2NoZWR1bGVkQWN0
aXZpdHlIYW5kbGVyKCk7CisgICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKyAg
ICB9CisgICAgQ0ZSdW5Mb29wUnVuKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMjQxMmJiZmFkOGU1ZjgxMWI1MWU4MmY2MGQxYzU0
NjE5YTIxODgzOS4uY2ZhYmNlMDViMjRkMDc4OTgwNmYxNGFhZTkwODcxYWMyMGE4N2RlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CkBAIC0xMDEsOCArMTAxLDE0IEBAIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5jcHAKIE5ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50
RGF0YWJhc2UuY3BwCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5jcHAKIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKK05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlckludGVyZmFjZS5jcHAKIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5jcHAKIE5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUu
Y3BwCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAKK05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVj
b2Rlci5jcHAKK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RW5jb2Rlci5jcHAKK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcAogCiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIEBuby11
bmlmeQogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA4OTEzODM0ZjZiYjVmOTM5ZTcy
MGIwOWVmY2IwMmM5NTQ0Zjg0YWFhLi4xMWU3Mjk2ODRlNGEyYWRmMGI1Y2I4OTNhZDY3OTFkOTAw
NTgyNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MSw3ICs0MSw5IEBAIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9F
bnRyeVBvaW50L0NvY29hL0RhZW1vbi9EYWVtb25FbnRyeVBvaW50Lm1tCiBOZXR3b3JrUHJvY2Vz
cy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1t
CiAKK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdv
cmtMb2FkZXJDb2NvYS5tbQorTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
Y29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0KIAogTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9pb3MvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VySU9TLm1tCiAK
QEAgLTE5MSw2ICsxOTMsOCBAQCBTaGFyZWQvQ29jb2EvV0tOU1VSTFJlcXVlc3QubW0KIFNoYXJl
ZC9Db2NvYS9XS09iamVjdC5tbQogU2hhcmVkL0NvY29hL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZh
bHVlc0NvY29hLm1tCiAKK1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9Q
Q01EYWVtb25FbnRyeVBvaW50Lm1tCisKIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29h
L1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0KIFNoYXJlZC9FbnRyeVBvaW50VXRp
bGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2Y5ZTBkZjU0YmY2
OGIyNTAwMWM2Y2MxZDllYmNiNzNhZTIxMTczZi4uZjY4YjRjZmI0ODVkNmY4YmYzNjI4ZDA1NmI5
ZjNkNzA0MDYyMmU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMjkxLDYgKzEyOTEsNyBAQAogCQk1Q0I3QUZFMDIzQzUyQ0U1MDBF
NDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjdBRkRGMjNDNTJDQkMwMEU0OUNGMyAvKiBfV0tS
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTVDQjdBRkU3MjNDNjgyMDcwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I3
QUZFNjIzQzY4MUIwMDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkSW5mby5oICovOyB9OwogCQk1Q0I3
QUZFODIzQzY5QjYxMDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkSW5mby5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCN0FGRTMyM0M2N0QzNzAwRTQ5
Q0YzIC8qIF9XS1Jlc291cmNlTG9hZEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk1Q0I5MzEwOTI2RTg0MzlBMDAzMkIxQzAgLyogUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjkzMTA3MjZFODQxQ0IwMDMyQjFDMCAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oICovOyB9OwogCQk1Q0JDOUI4RTFDNjUyQ0Ew
MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0JDOUI4OTFDNjUyNEE1MDBBOEZEQ0YgLyogTmV0d29ya0Rh
dGFUYXNrLmggKi87IH07CiAJCTVDQkQ1OTVDMjI4MEVERjQwMDJCMjJBQSAvKiBfV0tDdXN0b21I
ZWFkZXJGaWVsZHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzVEMjM4ODIyN0ExODkyMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1t
ICovOyB9OwogCQk1Q0QyODY1MTFFNzIzNTk5MDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3RT
dG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNE
Mjg2NEQxRTcyMkY0NDAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0U3RvcmUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC00NTU2LDYgKzQ1NTcs
MjMgQEAKIAkJNUNCOTMwQzAyNkUwNTQyRjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50Q2xpZW50SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1Q0I5MzBDMTI2RTA1NEI4MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRDbGllbnRJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZh
dGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1Q0I5MzBGMjI2RTdFRUUwMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRO
ZXR3b3JrTG9hZGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRjQyNkU4MDFFODAwMzJCMUMwIC8qIFByaXZh
dGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEY1MjZFODAyMTUwMDMyQjFDMCAv
KiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBGNjI2RTgwMjE1MDAzMkIxQzAgLyog
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRjcyNkU4MDIxNTAwMzJCMUMwIC8qIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRjgyNkU4MDIxNTAwMzJCMUMw
IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBGOTI2RTgwMjE1MDAzMkIxQzAgLyog
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEZBMjZFODAyMTUwMDMyQjFDMCAvKiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEZCMjZFODAyMTUwMDMyQjFDMCAv
KiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEZDMjZFODAyMTYwMDMy
QjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRkQyNkU4MDIxNjAw
MzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRkUyNkU4MDIxNjAwMzJCMUMwIC8qIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRkYyNkU4MDIxNjAwMzJCMUMwIC8qIFByaXZhdGVD
bGlja01lYXN1cmVtZW50RW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUNCOTMxMDQyNkU4MzdGQzAwMzJCMUMwIC8qIFBDTURhZW1vbkVudHJ5UG9pbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUENNRGFlbW9uRW50cnlQb2ludC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzEwNTI2RTgzN0ZEMDAzMkIxQzAg
LyogUENNRGFlbW9uRW50cnlQb2ludC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFBDTURhZW1vbkVudHJ5UG9pbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDQjkzMTA2MjZFODM5QTkwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXJJbnRlcmZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMxMDcyNkU4NDFDQjAwMzJCMUMwIC8qIFByaXZhdGVD
bGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMTA4MjZFODQxQ0IwMDMyQjFDMCAvKiBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0JDOUI4OTFDNjUyNEE1MDBBOEZEQ0YgLyogTmV0
d29ya0RhdGFUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtE
YXRhVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0JDOUI4QjFDNjUyNTcz
MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUNCRTkwOEYyNkQ3RkI2MjAwNUEyRTk1IC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGVidWdJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC05MjY1LDEyICs5MjgzLDI0IEBACiAJCQkJNUNCOTMwQkYyNkUwNTQyRTAwMzJC
MUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50LmggKi8sCiAJCQkJNUNCOTMwQzAy
NkUwNTQyRjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5jcHAg
Ki8sCiAJCQkJNUNCOTMwQzEyNkUwNTRCODAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50Q2xpZW50SW1wbC5oICovLAorCQkJCTVDQjkzMEZDMjZFODAyMTYwMDMyQjFDMCAvKiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwICovLAorCQkJCTVDQjkzMEZFMjZFODAy
MTYwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCAqLywKKwkJ
CQk1Q0I5MzBGNzI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVt
b25DbGllbnQuY3BwICovLAorCQkJCTVDQjkzMEY2MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5oICovLAogCQkJCTVDODI2RDZBMjZENDgyRUEw
MDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcCAqLywKIAkJCQk1
QzgyNkQ2OTI2RDQ4MkVBMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFz
ZS5oICovLAogCQkJCTVDQkU5MDkwMjZEN0ZCN0MwMDVBMkU5NSAvKiBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudERlYnVnSW5mby5jcHAgKi8sCiAJCQkJNUNCRTkwOEYyNkQ3RkI2MjAwNUEyRTk1IC8q
IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdJbmZvLmggKi8sCisJCQkJNUNCOTMwRjgyNkU4
MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHAgKi8sCisJ
CQkJNUNCOTMwRkQyNkU4MDIxNjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVj
b2Rlci5oICovLAorCQkJCTVDQjkzMEY5MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEVuY29kZXIuY3BwICovLAorCQkJCTVDQjkzMEZGMjZFODAyMTYwMDMyQjFDMCAv
KiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaCAqLywKIAkJCQk2QkQwNTg2NDIyMENF
OEMyMDAwQkVENUMgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCAqLywKIAkJ
CQk2QkQwNTg2MzIyMENFOEMyMDAwQkVENUMgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyLmggKi8sCisJCQkJNUNCOTMxMDYyNkU4MzlBOTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5jcHAgKi8sCisJCQkJNUNCOTMwRkEyNkU4MDIxNTAw
MzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oICovLAor
CQkJCTVDQjkzMEZCMjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXJQcm94eS5jcHAgKi8sCisJCQkJNUNCOTMwRjUyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmggKi8sCiAJCQkJNTdGRTY4OEIyNjBBQkIz
RDAwQkY0NUU0IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5jcHAgKi8s
CiAJCQkJNTdGRTY4OEEyNjBBQkIzRDAwQkY0NUU0IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50
TmV0d29ya0xvYWRlci5oICovLAogCQkJCTVDODI2RDY3MjZENDZCNDMwMDhBRUM5MSAvKiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcCAqLywKQEAgLTkzNTgsMTEgKzkzODgsMjQgQEAK
IAkJNUNCOTMwRjEyNkU3RUU4OTAwMzJCMUMwIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1Q0I5MzBGNDI2RTgwMUU4MDAzMkIxQzAgLyog
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW0gKi8sCiAJCQkJ
NUNCOTMwRjIyNkU3RUVFMDAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29y
a0xvYWRlckNvY29hLm1tICovLAorCQkJCTVDQjkzMTA3MjZFODQxQ0IwMDMyQjFDMCAvKiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oICovLAorCQkJCTVDQjkzMTA4MjZFODQx
Q0IwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5tbSAqLywK
IAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OworCQk1Q0I5MzEwMzI2RTgzNzVCMDAzMkIxQzAgLyogRGFlbW9uICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1Q0I5MzEwNDI2RTgzN0ZDMDAzMkIxQzAg
LyogUENNRGFlbW9uRW50cnlQb2ludC5oICovLAorCQkJCTVDQjkzMTA1MjZFODM3RkQwMDMyQjFD
MCAvKiBQQ01EYWVtb25FbnRyeVBvaW50Lm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBEYWVtb247
CisJCQlwYXRoID0gQ29jb2EvRGFlbW9uOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIAkJNkJFOTY5QkYxRTU0RDQ1MjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTA4MTgsNiAr
MTA4NjEsNyBAQAogCQlCQzgyODM2ODE2QjM1ODc5MDBBMjc4RkUgLyogRW50cnlQb2ludFV0aWxp
dGllcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUNC
OTMxMDMyNkU4Mzc1QjAwMzJCMUMwIC8qIERhZW1vbiAqLywKIAkJCQlCQzgyODM2QjE2QjM1ODc5
MDBBMjc4RkUgLyogWFBDU2VydmljZSAqLywKIAkJCQk1Q0U5MTIwRjIyOTNDMjVGMDA1QkVDNzgg
LyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwICovLAogCQkJKTsKQEAgLTEyMzY0LDYgKzEyNDA4
LDcgQEAKIAkJCQk2QkQwNTg2NTIyMENFOEMyMDAwQkVENUMgLyogUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZFNjg4QzI2MEFCQjNEMDBCRjQ1
RTQgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1QzgyNkQ2QjI2RDQ4MkVGMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdG9yZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNCOTMxMDkyNkU4NDM5QTAwMzJCMUMwIC8q
IFByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NkY5NTM2NTE4RkY1OEY1MDAxREIyRUYgLyogUHJvY2Vzc0Fzc2VydGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxQTdDNTgxMTM2RTE5QzAwRkI3MTY3IC8qIFByb2Nlc3NMYXVuY2hlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDYzRkQ0ODIxRUI5NEVDMDAwQTI5ODJDIC8qIFByb2Nlc3NU
ZXJtaW5hdGlvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8sCg==
</data>
<flag name="commit-queue"
          id="460925"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437705</attachid>
            <date>2021-09-08 21:04:29 -0700</date>
            <delta_ts>2021-09-08 21:24:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230052-20210908210428.patch</filename>
            <type>text/plain</type>
            <size>106994</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJjOTI0NmRiMDI3OTMwZDM0MjA5OWU1
Yzg4MmJiYzVjODA5ZDY2ZTAuLjU1MzZmYjAzOGRiY2I5ZmQ0NDUyYTg2NTU0ZDIxYTNiMjkzOGFi
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDktMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgZGFlbW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzAwNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oOgorCiAyMDIxLTA5LTA3ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IG9yaWdpbiBwYXJ0aXRp
b25pbmcgKHRvcC1vcmlnaW4vZnJhbWUtb3JpZ2luKSBmb3IgQnJvYWRjYXN0Q2hhbm5lbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAwM2YwZDFkMGM1NjI2ODY5Mzk2NWI3ZTkxY2EzMzNlZDc2MThiMTEyLi4xMDc5NGIy
MzE4YzkxMjVmOGIzYzU1OTZkZWZkZWJiN2U2OTlkM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
NSBAQAorMjAyMS0wOS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIEFkZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBkYWVtb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDA1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUg
aW5mcmFzdHJ1Y3R1cmUgdG8gdXNlIGEgZGFlbW9uIGluc3RlYWQgb2YgdGhlIG5ldHdvcmsgcHJv
Y2VzcyB0byBoYW5kbGUgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuCisgICAgICAgIEl0IGRvZXMg
bm90IHN0YXJ0IHVzaW5nIHRoZSBkYWVtb24geWV0LCBzbyB0aGVyZSBpcyBubyBjaGFuZ2UgaW4g
YmVoYXZpb3IuCisgICAgICAgIEkgbWFkZSBhIG5ldyBjbGFzcyBQQ006Ok1hbmFnZXJJbnRlcmZh
Y2Ugd2hpY2ggY2FuIGVpdGhlciBiZSBhIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlciBv
ciBhIFBDTTo6TWFuYWdlclByb3h5LAorICAgICAgICB3aGljaCB3b3VsZCBzZW5kIG1lc3NhZ2Vz
IHRvIHRoZSBkYWVtb24gaW5zdGVhZCBvZiBkb2luZyB0aGUgd29yayBsb2NhbGx5LgorICAgICAg
ICBJIGltcGxlbWVudGVkIHRoZSBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgcGFyYW1ldGVycyB1
c2luZyBzb21lIG9mIHRoZSBJUEMgZW5jb2RpbmcgdGVtcGxhdGVzLgorICAgICAgICBJIGhhdmUg
YW4gZW50cnkgcG9pbnQgZm9yIGFuIGV4ZWN1dGFibGUgYnV0IG5vIGV4ZWN1dGFibGUgeWV0Lgor
ICAgICAgICBJIGhhdmUgdmVyaWZpZWQgdGhhdCBFdmVudEF0dHJpYnV0aW9uIHVuaXQgdGVzdHMg
cGFzcyB3aGVuIHVzaW5nIHRoZSBkYWVtb24sIHNvIHRoZSBpbmZyYXN0cnVjdHVyZSBpcyBnb29k
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpwY21TdG9yZURpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OnByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudENvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0
aW9uOjpjb25uZWN0aW9uVG9EYWVtb24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rp
b246OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rpb246OnNlbmRXaXRoUmVw
bHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhZW1vbkNsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNs
aWVudDo6bG9hZEZyb21OZXR3b3JrKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25DbGll
bnQ6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVt
b25DbGllbnQ6OmZlYXR1cmVFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpE
YWVtb25DbGllbnQ6OmRlYnVnTW9kZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFl
bW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6ZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6RGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RGVjb2Rlcjo6b3BlcmF0b3I+Pik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6YnVm
ZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBDTTo6RW5jb2Rlcjo6ZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlBDTTo6RW5jb2Rlcjo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RW5jb2Rlcjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpFbmNvZGVyOjp0YWtlQnVm
ZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UENNOjpNZXNzYWdlSW5mbzo6dG9TdHJpbmdGb3JUZXN0aW5nOjplbmNvZGVS
ZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6bWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
OlBDTTo6aGFuZGxlUENNTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6aGFuZGxlUENN
TWVzc2FnZVdpdGhSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6ZGVjb2RlTWVzc2FnZUFu
ZFNlbmRUb01hbmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpQQ006OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpSZXBseUNhbGxl
cjw+OjpjYWxsUmVwbHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlJlcGx5Q2FsbGVyPFN0cmlu
Zz46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6c2VuZE1lc3NhZ2VXaXRoUmVw
bHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c3RvcmVVbmF0dHJpYnV0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6aGFuZGxlQXR0cmlidXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6Y2xlYXIpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6Y2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbik6
CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjptaWdyYXRlUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFu
YWdlclByb3h5Ojp0b1N0cmluZ0ZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
Q006Ok1hbmFnZXJQcm94eTo6c2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcpOgorICAgICAgICAo
V2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6OnNldFRva2VuU2lnbmF0dXJl
VVJMRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzZXRB
dHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpN
YW5hZ2VyUHJveHk6Om1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6TWFuYWdlclByb3h5OjpzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFs
dWVzRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzdGFy
dFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5h
Z2VyUHJveHk6OmRlc3Ryb3lTdG9yZUZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
clByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNv
Y29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9EYWVt
b24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OmRpY3Rpb25hcnlGcm9tTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6Q29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENV
dGlsaXRpZXMuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW06
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OmFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2Fn
ZVRvRGljdGlvbmFyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5X
ZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW46CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpkZWNvZGVTdHJpbmdUZXh0KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxTdHJpbmc+OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1v
bi9QQ01EYWVtb25FbnRyeVBvaW50Lmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6cGVlcnMpOgorICAgICAgICAoV2ViS2l0OjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6Y29ubmVjdGlvbkV2ZW50SGFuZGxlcik6Cisg
ICAgICAgIChXZWJLaXQ6OnN0YXJ0TGlzdGVuaW5nRm9yTWFjaFNlcnZpY2VDb25uZWN0aW9ucyk6
CisgICAgICAgIChXZWJLaXQ6OnJlZ2lzdGVyU2NoZWR1bGVkQWN0aXZpdHlIYW5kbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6ZW50ZXJTYW5kYm94KToKKyAgICAgICAgKFdlYktpdDo6UENNRGFlbW9u
TWFpbik6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0w
OS0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlcGxhY2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpzdGFydCB3
aXRoIGFuIGltcGxlbWVudGF0aW9uIHRoYXQgZG9lc24ndCBuZWVkIE5ldHdvcmtTZXNzaW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oIGIvU291cmNlL1dU
Ri93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAppbmRleCAyZjk2NWJhN2ZkMTA5Y2NiOGZlNGE3ZWQ4
NDRkYjIyZGU4NzkxOGYwLi41MWRlNTZiMGExNWY5MzY2ZDg5ZDllODgzZjQ3ZjU2ZWRmZDBhMjc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmgKQEAgLTcxLDYgKzcxLDcgQEAgdHlwZWRl
ZiB2b2lkICgqeHBjX2Nvbm5lY3Rpb25faGFuZGxlcl90KSh4cGNfY29ubmVjdGlvbl90IGNvbm5l
Y3Rpb24pOwogCiAjZGVmaW5lIFhQQ19BUlJBWV9BUFBFTkQgKChzaXplX3QpKC0xKSkKICNkZWZp
bmUgWFBDX0NPTk5FQ1RJT05fTUFDSF9TRVJWSUNFX0xJU1RFTkVSICgxIDw8IDApCisjZGVmaW5l
IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVEVSUlVQVEVEIFhQQ19HTE9CQUxfT0JKRUNUKF94cGNf
ZXJyb3JfY29ubmVjdGlvbl9pbnRlcnJ1cHRlZCkKICNkZWZpbmUgWFBDX0VSUk9SX0NPTk5FQ1RJ
T05fSU5WQUxJRCBYUENfR0xPQkFMX09CSkVDVChfeHBjX2Vycm9yX2Nvbm5lY3Rpb25faW52YWxp
ZCkKICNkZWZpbmUgWFBDX0VSUk9SX0tFWV9ERVNDUklQVElPTiBfeHBjX2Vycm9yX2tleV9kZXNj
cmlwdGlvbgogI2RlZmluZSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQgWFBDX0dMT0JB
TF9PQkpFQ1QoX3hwY19lcnJvcl90ZXJtaW5hdGlvbl9pbW1pbmVudCkKQEAgLTg0LDYgKzg1LDEw
IEBAIHR5cGVkZWYgdm9pZCAoKnhwY19jb25uZWN0aW9uX2hhbmRsZXJfdCkoeHBjX2Nvbm5lY3Rp
b25fdCBjb25uZWN0aW9uKTsKIAogZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBfeHBjX2Vycm9y
X2tleV9kZXNjcmlwdGlvbjsKIAorZXh0ZXJuICJDIiB2b2lkIHhwY19jb25uZWN0aW9uX2FjdGl2
YXRlKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbik7CitleHRlcm4gIkMiIGNvbnN0IHZvaWQq
IHhwY19kaWN0aW9uYXJ5X2dldF9kYXRhKHhwY19vYmplY3RfdCB4ZGljdCwgY29uc3QgY2hhciog
a2V5LCBzaXplX3QqIGxlbmd0aCk7CitleHRlcm4gIkMiIHhwY19vYmplY3RfdCB4cGNfZGF0YV9j
cmVhdGVfd2l0aF9kaXNwYXRjaF9kYXRhKGRpc3BhdGNoX2RhdGFfdCBkZGF0YSk7CisKICNlbmRp
ZiAvLyBQTEFURk9STShNQUMpIHx8IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQpAQCAtOTEsNiArOTYsOSBAQCBleHRlcm4gY29uc3QgY2hhciAq
IGNvbnN0IF94cGNfZXJyb3Jfa2V5X2Rlc2NyaXB0aW9uOwogI2luY2x1ZGUgPHhwYy9wcml2YXRl
Lmg+CiAjZWxzZQogCitleHRlcm4gIkMiIGNvbnN0IGNoYXIgKiBjb25zdCBYUENfQUNUSVZJVFlf
UkFORE9NX0lOSVRJQUxfREVMQVk7CitleHRlcm4gIkMiIGNvbnN0IGNoYXIgKiBjb25zdCBYUENf
QUNUSVZJVFlfUkVRVUlSRV9ORVRXT1JLX0NPTk5FQ1RJVklUWTsKKwogI2lmIE9TX09CSkVDVF9V
U0VfT0JKQwogT1NfT0JKRUNUX0RFQ0wob3NfdHJhbnNhY3Rpb24pOwogI2Vsc2UKQEAgLTEwOCw2
ICsxMTYsNyBAQCBlbnVtIHsKIAogV1RGX0VYVEVSTl9DX0JFR0lOCiAKK2V4dGVybiBjb25zdCBz
dHJ1Y3QgX3hwY19kaWN0aW9uYXJ5X3MgX3hwY19lcnJvcl9jb25uZWN0aW9uX2ludGVycnVwdGVk
OwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBfeHBjX2RpY3Rpb25hcnlfcyBfeHBjX2Vycm9yX2Nvbm5l
Y3Rpb25faW52YWxpZDsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgX3hwY19kaWN0aW9uYXJ5X3MgX3hw
Y19lcnJvcl90ZXJtaW5hdGlvbl9pbW1pbmVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggZjFiMTk5MDJlMWE0ZWEw
NWFlYzIxZGFiNzI3ZjhiOGFlZTA5Mjk5OS4uMjliYWI5YTI5Mzk5ZDE2MjQ5YzEyOTZlNjhhYWY3
NzhmMzMwYTE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUGx1Z2luUHJv
Y2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKICNpbmNsdWRl
ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNTQzY2FiMTAwYmM3YmM5OWY1NDBmMzk0YmZm
NzIzZmJjY2RhZWIzYS4uZGZkZTc4ZGE2MWQ5YmZhOGEzYzVhNGMxYzhjYTk3YTAyZTM1M2ZiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQaW5nTG9hZC5oIgogI2luY2x1ZGUgIlByaXZh
dGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIlByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlci5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKQEAgLTkyLDEx
ICs5MywyMCBAQCBzdGF0aWMgU3RyaW5nIHBjbVN0b3JlRGlyZWN0b3J5KGNvbnN0IE5ldHdvcmtT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlcwogICAgIHJldHVybiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5OwogfQogCitzdGF0aWMgVW5pcXVlUmVmPFBDTTo6TWFuYWdl
ckludGVyZmFjZT4gbWFuYWdlck9yUHJveHkoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9u
LCBOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIC8vIEZJWE1FOiBUdXJuIHRoaXMg
b24gYW5kIHJlbW92ZSBNYW5hZ2VySW50ZXJmYWNlIG9uY2UgcmRhcjovLzgwNzAxMDk4IGlzIGNs
b3NlZC4KKyAgICBjb25zdGV4cHIgYm9vbCB1c2VQQ01EYWVtb24gPSBmYWxzZTsKKworICAgIGlm
ICh1c2VQQ01EYWVtb24pCisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPFBDTTo6TWFuYWdl
clByb3h5PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlcj4obWFrZVVuaXF1ZVJlZjxQQ006OkNsaWVudEltcGw+KG5ldHdvcmtTZXNzaW9u
LCBuZXR3b3JrUHJvY2VzcyksIHBjbVN0b3JlRGlyZWN0b3J5KG5ldHdvcmtTZXNzaW9uLCBwYXJh
bWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmRpcmVjdG9yeSwgcGFyYW1l
dGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFN0b3JhZ2VEaXJlY3RvcnkpKTsKK30KKwogTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNz
aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgOiBtX3Nlc3Npb25JRChwYXJhbWV0
ZXJzLnNlc3Npb25JRCkKICAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICAsIG1fcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BhcmFtZXRlcnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KQog
ICAgICwgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KHBhcmFtZXRlcnMucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZGlyZWN0b3J5KQogICAgICwgbV9zaG91bGRJbmNs
dWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHBhcmFtZXRlcnMucmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCA/IFNob3VsZElu
Y2x1ZGVMb2NhbGhvc3Q6OlllcyA6IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6Ok5vKQogICAgICwg
bV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKHBhcmFtZXRlcnMucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlRGVidWdNb2RlID8gRW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTo6WWVzIDogRW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RlYnVnTW9kZTo6Tm8pCkBAIC0xMDcsNiArMTE3LDcgQEAgTmV0d29ya1Nlc3Npb246Ok5l
dHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29y
a1Nlc3MKICAgICAsIG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUocGFyYW1ldGVy
cy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZSkKICAgICAsIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKHBhcmFtZXRl
cnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9u
RG9tYWluKQogI2VuZGlmCisgICAgLCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50KG1hbmFnZXJP
clByb3h5KCp0aGlzLCBuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycykpCiAgICAgLCBtX2Jyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeShtYWtlVW5pcXVlUmVmPE5ldHdvcmtCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnk+KCkpCiAgICAgLCBtX3Rlc3RTcGVlZE11bHRpcGxpZXIocGFyYW1ldGVycy50ZXN0
U3BlZWRNdWx0aXBsaWVyKQogICAgICwgbV9hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KHBhcmFtZXRl
cnMuYWxsb3dzU2VydmVyUHJlY29ubmVjdCkKQEAgLTE0MSw3ICsxNTIsNiBAQCBOZXR3b3JrU2Vz
c2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25z
dCBOZXR3b3JrU2VzcwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycy5lbmFibGVkKTsKICNlbmRpZgotICAgIG1fcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgPSBtYWtlVW5pcXVlPFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4o
bWFrZVVuaXF1ZVJlZjxQQ006OkNsaWVudEltcGw+KCp0aGlzLCBuZXR3b3JrUHJvY2VzcyksIHBj
bVN0b3JlRGlyZWN0b3J5KCp0aGlzLCBwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzLmRpcmVjdG9yeSwgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycy5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkpKTsKIH0KIAog
TmV0d29ya1Nlc3Npb246On5OZXR3b3JrU2Vzc2lvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggNzBhMWI0OTFiMjQzYWFlZmIzZDI3YmRj
YWQwMGE2MDVlNDI0ZjUwZi4uZDhhYWIzZGJhNDliNzY3ZjNlZjA5OTRiZjJjYmU5NTFmYTQxNjcy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQ
cmVmZXRjaENhY2hlLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgiCkBAIC02MCw3ICs2MSw2IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNz
OwogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgTmV0d29ya0Jyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeTsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwotY2xhc3MgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOwogY2xhc3MgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJz
OwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwogY2xhc3MgV2ViU29ja2V0
VGFzazsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIE5ldHdvcmtM
b2FkU2NoZWR1bGVyJiBuZXR3b3JrTG9hZFNjaGVkdWxlcigpOwotICAgIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlciYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSB7IHJldHVybiAqbV9w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDsgfQorICAgIFBDTTo6TWFuYWdlckludGVyZmFjZSYgcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSB7IHJldHVybiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50
LmdldCgpOyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBBcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGEmIGFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSgpIHsgcmV0dXJuIG1fYXBwUHJp
dmFjeVJlcG9ydFRlc3RpbmdEYXRhOyB9CkBAIC0xOTIsNyArMTkyLDYgQEAgcHJvdGVjdGVkOgog
ICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKICAgICBXZWFrSGFzaFNl
dDxOZXR3b3JrRGF0YVRhc2s+IG1fZGF0YVRhc2tTZXQ7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKLSAgICBTdHJpbmcgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3Jh
Z2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eTsKICAgICBSZWZQdHI8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3M7CiAgICAgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBtX3Nob3VsZEluY2x1
ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgeyBTaG91bGRJbmNsdWRlTG9jYWxo
b3N0OjpZZXMgfTsKQEAgLTIwOCw3ICsyMDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV90aGlyZFBhcnR5Q05BTUVEb21haW5G
b3JUZXN0aW5nOwogI2VuZGlmCiAgICAgYm9vbCBtX2lzU3RhbGVXaGlsZVJldmFsaWRhdGVFbmFi
bGVkIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyPiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OworICAgIFVuaXF1ZVJlZjxQQ006
Ok1hbmFnZXJJbnRlcmZhY2U+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CiAKICAgICBIYXNo
U2V0PFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+PiBtX2tlcHRBbGl2ZUxvYWRzOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTYzYTAzNjBkYjUzMTk4MWZlNjc0YjI2
M2FmNDAzMjMxZDkxOTg1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRD
b25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oIgor
CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworbmFtZXNwYWNlIFBDTSB7CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisKK0Nvbm5lY3Rp
b24gQ29ubmVjdGlvbjo6Y29ubmVjdGlvblRvRGFlbW9uKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiB7IH07Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6c2VuZChNZXNzYWdl
VHlwZSwgRW5jb2RlZE1lc3NhZ2UmJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIENvbm5lY3Rpb246OnNlbmRXaXRoUmVwbHkoTWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdl
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxl
cih7IH0pOworfQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY3MjYxYzhmMjIy
NWFkZWQ5YzU2ODJiMzExNDUyOTBmMjcyNjY5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYgUExBVEZPUk0oQ09D
T0EpCisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCitlbnVtIGNsYXNzIE1lc3NhZ2VUeXBlIDogdWlu
dDhfdDsKK3VzaW5nIEVuY29kZWRNZXNzYWdlID0gVmVjdG9yPHVpbnQ4X3Q+OworCitjbGFzcyBD
b25uZWN0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgQ29ubmVjdGlvbiBjb25uZWN0aW9uVG9E
YWVtb24oKTsKKworICAgIHZvaWQgc2VuZChNZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJik7
CisgICAgdm9pZCBzZW5kV2l0aFJlcGx5KE1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRNZXNzYWdlJiYpPiYmKTsKKworcHJpdmF0ZToK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBDb25uZWN0aW9uKE9TT2JqZWN0UHRyPHhwY19jb25u
ZWN0aW9uX3Q+JiYpOworCisgICAgT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gbV9jb25u
ZWN0aW9uOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3M2U1
MWJlNzBmMGM2ZTkyMzQ4NGNiNmZkZGU1OTU4YmYyZWI1OGQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcApAQCAtMCwwICsxLDUzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1
cmVtZW50RGFlbW9uQ2xpZW50LmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKwordm9pZCBEYWVt
b25DbGllbnQ6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKEpTQzo6TWVzc2FnZUxldmVsLCBjb25z
dCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgRGFlbW9uQ2xp
ZW50OjpmZWF0dXJlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgRGFlbW9uQ2xpZW50OjpkZWJ1Z01vZGVFbmFibGVkKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgUENNCisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
ZW1vbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFlNzc4MjEyNDI2ZDg5NzE2YzFiYTM2ZDQ1MGFjZDVkMzZkN2Y2NjkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmgKQEAgLTAsMCArMSw0NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsK
KworY2xhc3MgRGFlbW9uQ2xpZW50IDogcHVibGljIENsaWVudCwgcHVibGljIENhbk1ha2VXZWFr
UHRyPERhZW1vbkNsaWVudD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHZv
aWQgYnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOworICAgIGJvb2wgZmVhdHVyZUVuYWJsZWQoKSBjb25zdCBmaW5hbDsKKyAgICBi
b29sIGRlYnVnTW9kZUVuYWJsZWQoKSBjb25zdCBmaW5hbDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnREZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44YTIwZThjMmZjY2E5OWMxMDg2MjU0MDdhMWYyYzNjYzQ1MjMzZTQ1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuY3BwCkBAIC0wLDAgKzEsNDkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREZWNvZGVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2Ug
UENNIHsKKworYm9vbCBEZWNvZGVyOjpidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluQnl0ZXMo
c2l6ZV90IGJ5dGVzKSBjb25zdAoreworICAgIHJldHVybiBieXRlcyA8PSBtX2J1ZmZlci5zaXpl
KCkgLSBtX2J1ZmZlclBvc2l0aW9uOworfQorCitib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVu
Z3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90KQoreworICAgIGlmICgh
YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbkJ5dGVzKHNpemUpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgbWVtY3B5KGRhdGEsIG1fYnVmZmVyLmRhdGEoKSArIG1fYnVmZmVyUG9zaXRp
b24sIHNpemUpOworICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnREZWNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg3Nzk5ZTMwZWU1MzA3NzJjOWQxNDdjYzM4N2Y1NWY1
YjhjMzU1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmgK
QEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
QXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00g
eworCitjbGFzcyBEZWNvZGVyIHsKK3B1YmxpYzoKKyAgICBEZWNvZGVyKFZlY3Rvcjx1aW50OF90
PiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAg
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgRGVjb2RlciYgb3BlcmF0b3I+PihzdGQ6
Om9wdGlvbmFsPFQ+JiB0KQorICAgIHsKKyAgICAgICAgdCA9IElQQzo6QXJndW1lbnRDb2Rlcjxz
dGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Piwgdm9pZD46OmRl
Y29kZSgqdGhpcyk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51bUVsZW1lbnRzKSBjb25zdAorICAgIHsKKyAgICAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLCAiVHlwZSBUIG11c3Qg
aGF2ZSBhIGZpeGVkLCBrbm93biBlbmNvZGVkIHNpemUhIik7CisKKyAgICAgICAgaWYgKG51bUVs
ZW1lbnRzID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVvZihUKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gYnVmZmVySXNMYXJn
ZUVub3VnaFRvQ29udGFpbkJ5dGVzKG51bUVsZW1lbnRzICogc2l6ZW9mKFQpKTsKKyAgICB9CisK
KyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhf
dCogZGF0YSwgc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50KTsKKyAgICAKK3ByaXZhdGU6CisgICAg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbkJ5dGVz
KHNpemVfdCkgY29uc3Q7CisKKyAgICBWZWN0b3I8dWludDhfdD4gbV9idWZmZXI7CisgICAgc2l6
ZV90IG1fYnVmZmVyUG9zaXRpb24geyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBQQ00KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk4
YjE1ZTUxMGU1OTkzNzQzZmU3ZTU2M2VmMDFkZDc4YjkyNGZmNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmNwcApAQCAtMCwwICsxLDQwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVt
ZW50RW5jb2Rlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisK
K3ZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplLCBzaXplX3QpCit7CisgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUp
OworfQorCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEVuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGE4M2M2NTkyNWQyNjJhZGQyMGJhNWE4YjE5MDM2NWU1
OTMyY2IxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaApA
QCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJB
cmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7
CisKK2NsYXNzIEVuY29kZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Cisg
ICAgRW5jb2RlciYgb3BlcmF0b3I8PChUJiYgdCkKKyAgICB7CisgICAgICAgIElQQzo6QXJndW1l
bnRDb2RlcjxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Pj46
OmVuY29kZSgqdGhpcywgc3RkOjpmb3J3YXJkPFQ+KHQpKTsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4K
KyAgICB2b2lkIGVuY29kZShBcmcmJiBhcmcsIEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAg
ICAgKnRoaXMgPDwgc3RkOjpmb3J3YXJkPEFyZz4oYXJnKTsKKyAgICAgICAgZW5jb2RlKHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorICAgIHZvaWQgZW5jb2RlKCkgeyB9CisK
KyAgICBWZWN0b3I8dWludDhfdD4gdGFrZUJ1ZmZlcigpIHsgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2Uo
bV9idWZmZXIsIHsgfSk7IH0KKworICAgIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QsIHNpemVfdCBhbGlnbm1lbnQpOworCitwcml2YXRlOgorICAgIFZl
Y3Rvcjx1aW50OF90PiBtX2J1ZmZlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCmluZGV4IGJiODIyMmMyYzlkYmIwNzcy
YmQzOWU3OWY0NDMwNWY0NzBiZTlmNTUuLjI2ZTdjNTU5MTQ0N2ZlYmY1Nzg1MWVhZTVkMmUwZjQ2
ZDliZWUwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaApAQCAtMjgsMTMgKzI4LDkgQEAKICNpbmNsdWRl
ICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgog
I2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50LmgiCisjaW5jbHVkZSAiUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgotI2luY2x1ZGUgPHBh
bC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNs
dWRlIDx3dGYvSlNPTlZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00Miwz
OCArMzgsMzAgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWVudW0gY2xhc3MgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgOiBib29sIHsgVW5hdHRyaWJ1dGVkLCBBdHRy
aWJ1dGVkIH07Ci0KLWNsYXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlciA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+IHsKK2NsYXNz
IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlciA6IHB1YmxpYyBQQ006Ok1hbmFnZXJJbnRl
cmZhY2UsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKIAotICAgIHVzaW5n
IEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlOwotICAgIHVzaW5nIEF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRp
b25UcmlnZ2VyRGF0YTsKLSAgICB1c2luZyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OwotICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWlu
ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgU291cmNlU2l0ZSA9IFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlOwotCiAgICAgZXhwbGlj
aXQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyKFVuaXF1ZVJlZjxQQ006OkNsaWVudD4m
JiwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5KTsKICAgICB+UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyKCk7CiAKLSAgICB2b2lkIHN0b3JlVW5hdHRyaWJ1dGVkKFByaXZhdGVD
bGlja01lYXN1cmVtZW50JiYpOwotICAgIHZvaWQgaGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRp
b25UcmlnZ2VyRGF0YSYmLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYgcmVkaXJlY3REb21haW4sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCk7Ci0g
ICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgY2xl
YXJGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBtaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRGcm9tTGVnYWN5U3RvcmFnZShQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSk7CisgICAgdm9pZCBzdG9yZVVuYXR0cmli
dXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmKSBmaW5hbDsKKyAgICB2b2lkIGhhbmRsZUF0
dHJpYnV0aW9uKEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29uc3QgVVJMJiByZXF1ZXN0VVJM
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZGlyZWN0RG9tYWluLCBjb25zdCBVUkwm
IGZpcnN0UGFydHlVUkwpIGZpbmFsOworICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFs
OworICAgIHZvaWQgbWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3Jh
Z2UoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblR5cGUpIGZpbmFsOwogCi0gICAgdm9pZCB0b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKSBjb25zdDsKLSAgICB2b2lkIHNldE92ZXJyaWRl
VGltZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUpIHsgbV9pc1J1bm5pbmdUZXN0ID0gdmFsdWU7IH0K
LSAgICB2b2lkIHNldFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwmJik7Ci0gICAgdm9p
ZCBzZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoVVJMJiYpOwotICAgIHZvaWQgc2V0QXR0
cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZyhVUkwmJiBzb3VyY2VVUkwsIFVSTCYmIGRlc3Rp
bmF0aW9uVVJMKTsKLSAgICB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0
aW5nKCk7Ci0gICAgdm9pZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0Fz
RXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lk
IHNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyhib29sIHZhbHVlKSB7IG1faXNSdW5u
aW5nRXBoZW1lcmFsTWVhc3VyZW1lbnRUZXN0ID0gdmFsdWU7IH0KLSAgICB2b2lkIHNldFBDTUZy
YXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoU3RyaW5nJiYgdW5saW5rYWJsZVRva2VuLCBT
dHJpbmcmJiBzZWNyZXRUb2tlbiwgU3RyaW5nJiYgc2lnbmF0dXJlLCBTdHJpbmcmJiBrZXlJRCk7
Ci0gICAgdm9pZCBzdGFydFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nKCk7Ci0gICAgdm9pZCBk
ZXN0cm95U3RvcmVGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCB0b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYm
KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wg
dmFsdWUpIGZpbmFsIHsgbV9pc1J1bm5pbmdUZXN0ID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldFRv
a2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwmJikgZmluYWw7CisgICAgdm9pZCBzZXRUb2tl
blNpZ25hdHVyZVVSTEZvclRlc3RpbmcoVVJMJiYpIGZpbmFsOworICAgIHZvaWQgc2V0QXR0cmli
dXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZyhVUkwmJiBzb3VyY2VVUkwsIFVSTCYmIGRlc3RpbmF0
aW9uVVJMKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JU
ZXN0aW5nKCkgZmluYWw7CisgICAgdm9pZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBm
aW5hbDsKKyAgICB2b2lkIHNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyhib29sIHZh
bHVlKSBmaW5hbCB7IG1faXNSdW5uaW5nRXBoZW1lcmFsTWVhc3VyZW1lbnRUZXN0ID0gdmFsdWU7
IH0KKyAgICB2b2lkIHNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoU3RyaW5n
JiYgdW5saW5rYWJsZVRva2VuLCBTdHJpbmcmJiBzZWNyZXRUb2tlbiwgU3RyaW5nJiYgc2lnbmF0
dXJlLCBTdHJpbmcmJiBrZXlJRCkgZmluYWw7CisgICAgdm9pZCBzdGFydFRpbWVySW1tZWRpYXRl
bHlGb3JUZXN0aW5nKCkgZmluYWw7CisgICAgdm9pZCBkZXN0cm95U3RvcmVGb3JUZXN0aW5nKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgUENNOjpT
dG9yZSYgc3RvcmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50
ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNzJhZmQ5ZTQ1MGY4NWE3ZmE0MTQ5YWE2ODNhOGMzMzkyOGU3OTQwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwCkBAIC0w
LDAgKzEsMjU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oIgorCisjaW5jbHVkZSAi
SGFuZGxlTWVzc2FnZS5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50Lmgi
CisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmgiCisjaW5jbHVkZSAi
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2Ug
UENNIHsKKworbmFtZXNwYWNlIE1lc3NhZ2VJbmZvIHsKKworI2RlZmluZSBGVU5DVElPTihtZikg
c3RydWN0IG1mIHsgc3RhdGljIGNvbnN0ZXhwciBhdXRvIE1lbWJlckZ1bmN0aW9uID0gJlByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6bWY7CisjZGVmaW5lIEFSR1VNRU5UUyguLi4pIHVz
aW5nIEFyZ3NUdXBsZSA9IHN0ZDo6dHVwbGU8X19WQV9BUkdTX18+OworI2RlZmluZSBSRVBMWSgu
Li4pIHVzaW5nIFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChfX1ZBX0FSR1NfXyk+OyBc
CisgICAgc3RhdGljIFBDTTo6RW5jb2RlZE1lc3NhZ2UgZW5jb2RlUmVwbHkoX19WQV9BUkdTX18p
OworI2RlZmluZSBFTkQgfTsKKworRlVOQ1RJT04oc3RvcmVVbmF0dHJpYnV0ZWQpCitBUkdVTUVO
VFMoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCitFTkQKKworRlVOQ1RJT04oaGFu
ZGxlQXR0cmlidXRpb24pCitBUkdVTUVOVFMoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBVUkwsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
LCBVUkwpCitFTkQKKworRlVOQ1RJT04oY2xlYXIpCitBUkdVTUVOVFMoKQorUkVQTFkoKQorRU5E
CisKK0ZVTkNUSU9OKGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4pCitBUkdVTUVOVFMoV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4pCitSRVBMWSgpCitFTkQKKworRlVOQ1RJT04obWlncmF0ZVBy
aXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UpCitBUkdVTUVOVFMoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25UeXBlKQorRU5ECisKK0ZVTkNUSU9OKHRvU3RyaW5nRm9yVGVzdGluZykKK0FSR1VNRU5U
UygpCitSRVBMWShTdHJpbmcpCitFTkQKKworRlVOQ1RJT04oc2V0T3ZlcnJpZGVUaW1lckZvclRl
c3RpbmcpCitBUkdVTUVOVFMoYm9vbCkKK0VORAorCitGVU5DVElPTihzZXRUb2tlblB1YmxpY0tl
eVVSTEZvclRlc3RpbmcpCitBUkdVTUVOVFMoVVJMKQorRU5ECisKK0ZVTkNUSU9OKHNldFRva2Vu
U2lnbmF0dXJlVVJMRm9yVGVzdGluZykKK0FSR1VNRU5UUyhVUkwpCitFTkQKKworRlVOQ1RJT04o
c2V0QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZykKK0FSR1VNRU5UUyhVUkwsIFVSTCkK
K0VORAorCitGVU5DVElPTihtYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZykK
K0FSR1VNRU5UUygpCitFTkQKKworRlVOQ1RJT04obWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKQorQVJHVU1FTlRTKCkKK1JFUExZKCkKK0VO
RAorCitGVU5DVElPTihzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpCitBUkdVTUVO
VFMoYm9vbCkKK0VORAorCitGVU5DVElPTihzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JU
ZXN0aW5nKQorQVJHVU1FTlRTKFN0cmluZywgU3RyaW5nLCBTdHJpbmcsIFN0cmluZykKK0VORAor
CitGVU5DVElPTihzdGFydFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nKQorQVJHVU1FTlRTKCkK
K0VORAorCitGVU5DVElPTihkZXN0cm95U3RvcmVGb3JUZXN0aW5nKQorQVJHVU1FTlRTKCkKK1JF
UExZKCkKK0VORAorCisjdW5kZWYgRlVOQ1RJT04KKyN1bmRlZiBBUkdVTUVOVFMKKyN1bmRlZiBS
RVBMWQorI3VuZGVmIEVORAorCisjZGVmaW5lIEVNUFRZX1JFUExZKG1mKSBQQ006OkVuY29kZWRN
ZXNzYWdlIG1mOjplbmNvZGVSZXBseSgpIHsgcmV0dXJuIHsgfTsgfQorRU1QVFlfUkVQTFkoY2xl
YXIpOworRU1QVFlfUkVQTFkoY2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbik7CitFTVBUWV9SRVBM
WShtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmcpOworRU1QVFlfUkVQTFkoZGVzdHJveVN0b3JlRm9yVGVzdGluZyk7CisjdW5kZWYgRU1QVFlf
UkVQTFkKKworUENNOjpFbmNvZGVkTWVzc2FnZSB0b1N0cmluZ0ZvclRlc3Rpbmc6OmVuY29kZVJl
cGx5KFN0cmluZyByZXBseSkKK3sKKyAgICBQQ006OkVuY29kZXIgZW5jb2RlcjsKKyAgICBlbmNv
ZGVyIDw8IHJlcGx5OworICAgIHJldHVybiBlbmNvZGVyLnRha2VCdWZmZXIoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgTWVzc2FnZUluZm8KKworYm9vbCBtZXNzYWdlVHlwZVNlbmRzUmVwbHkoTWVz
c2FnZVR5cGUgbWVzc2FnZVR5cGUpCit7CisgICAgc3dpdGNoIChtZXNzYWdlVHlwZSkgeworICAg
IGNhc2UgTWVzc2FnZVR5cGU6OlN0b3JlVW5hdHRyaWJ1dGVkOgorICAgIGNhc2UgTWVzc2FnZVR5
cGU6OkhhbmRsZUF0dHJpYnV0aW9uOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6Ok1pZ3JhdGVQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlOgorICAgIGNhc2UgTWVzc2FnZVR5
cGU6OlNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OlNl
dFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZzoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTZXRU
b2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6U2V0QXR0
cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZzoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpNYXJr
QWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZzoKKyAgICBjYXNlIE1lc3NhZ2VUeXBl
OjpTZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdlVHlw
ZTo6U2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZzoKKyAgICBjYXNlIE1lc3Nh
Z2VUeXBlOjpTdGFydFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nOgorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6TWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OkRl
c3Ryb3lTdG9yZUZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6VG9TdHJpbmdGb3JU
ZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OkNsZWFyOgorICAgIGNhc2UgTWVzc2FnZVR5
cGU6OkNsZWFyRm9yUmVnaXN0cmFibGVEb21haW46CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0
YXRpYyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXImIGRhZW1vbk1hbmFnZXIoKQorewor
ICAgIC8vIEZJWE1FOiBHaXZlIHRoZSBtYW5hZ2VyIGEgdmFsaWQgc3RvcmFnZSBkaXJlY3Rvcnku
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
cj4gaW5zdGFuY2UobWFrZVVuaXF1ZVJlZjxQQ006OkRhZW1vbkNsaWVudD4oKSwgU3RyaW5nKCkp
OworICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSW5m
bz4KK3ZvaWQgaGFuZGxlUENNTWVzc2FnZShQQ006OkVuY29kZWRNZXNzYWdlJiYgZW5jb2RlZE1l
c3NhZ2UpCit7CisgICAgUENNOjpEZWNvZGVyIGRlY29kZXIoV1RGTW92ZShlbmNvZGVkTWVzc2Fn
ZSkpOworCisgICAgc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBJbmZvOjpBcmdzVHVwbGU+IGFyZ3Vt
ZW50czsKKyAgICBkZWNvZGVyID4+IGFyZ3VtZW50czsKKyAgICBpZiAoVU5MSUtFTFkoIWFyZ3Vt
ZW50cykpCisgICAgICAgIHJldHVybjsKKworICAgIElQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uKFdU
Rk1vdmUoKmFyZ3VtZW50cyksICZkYWVtb25NYW5hZ2VyKCksIEluZm86Ok1lbWJlckZ1bmN0aW9u
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSW5mbz4KK3ZvaWQgaGFuZGxlUENNTWVzc2FnZVdp
dGhSZXBseShQQ006OkVuY29kZWRNZXNzYWdlJiYgZW5jb2RlZE1lc3NhZ2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUENNOjpFbmNvZGVkTWVzc2FnZSYmKT4mJiByZXBseVNlbmRlcikKK3sKKyAg
ICBQQ006OkRlY29kZXIgZGVjb2RlcihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisKKyAgICBz
dGQ6Om9wdGlvbmFsPHR5cGVuYW1lIEluZm86OkFyZ3NUdXBsZT4gYXJndW1lbnRzOworICAgIGRl
Y29kZXIgPj4gYXJndW1lbnRzOworICAgIGlmIChVTkxJS0VMWSghYXJndW1lbnRzKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgdHlwZW5hbWUgSW5mbzo6UmVwbHkgY29tcGxldGlvbkhhbmRsZXIg
eyBbcmVwbHlTZW5kZXIgPSBXVEZNb3ZlKHJlcGx5U2VuZGVyKV0gKGF1dG8mJi4uLiBhcmdzKSBt
dXRhYmxlIHsKKyAgICAgICAgcmVwbHlTZW5kZXIoSW5mbzo6ZW5jb2RlUmVwbHkoYXJncy4uLikp
OworICAgIH19OworCisgICAgSVBDOjpjYWxsTWVtYmVyRnVuY3Rpb24oV1RGTW92ZSgqYXJndW1l
bnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksICZkYWVtb25NYW5hZ2VyKCksIEluZm86
Ok1lbWJlckZ1bmN0aW9uKTsKK30KKwordm9pZCBkZWNvZGVNZXNzYWdlQW5kU2VuZFRvTWFuYWdl
cihNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZW5jb2RlZE1lc3Nh
Z2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIHJlcGx5U2Vu
ZGVyKQoreworICAgIEFTU0VSVChtZXNzYWdlVHlwZVNlbmRzUmVwbHkobWVzc2FnZVR5cGUpID09
ICEhcmVwbHlTZW5kZXIpOworICAgIHN3aXRjaCAobWVzc2FnZVR5cGUpIHsKKyAgICBjYXNlIFBD
TTo6TWVzc2FnZVR5cGU6OlN0b3JlVW5hdHRyaWJ1dGVkOgorICAgICAgICBoYW5kbGVQQ01NZXNz
YWdlPE1lc3NhZ2VJbmZvOjpzdG9yZVVuYXR0cmlidXRlZD4oV1RGTW92ZShlbmNvZGVkTWVzc2Fn
ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OkhhbmRsZUF0
dHJpYnV0aW9uOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJbmZvOjpoYW5kbGVB
dHRyaWJ1dGlvbj4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OkNsZWFyOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdl
V2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjpjbGVhcj4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSksIFdU
Rk1vdmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3Nh
Z2VUeXBlOjpDbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluOgorICAgICAgICBoYW5kbGVQQ01NZXNz
YWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjpjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluPihXVEZN
b3ZlKGVuY29kZWRNZXNzYWdlKSwgV1RGTW92ZShyZXBseVNlbmRlcikpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6Ok1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEZyb21MZWdhY3lTdG9yYWdlOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJ
bmZvOjptaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZT4oV1RG
TW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVz
c2FnZVR5cGU6OlRvU3RyaW5nRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZVdp
dGhSZXBseTxNZXNzYWdlSW5mbzo6dG9TdHJpbmdGb3JUZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRN
ZXNzYWdlKSwgV1RGTW92ZShyZXBseVNlbmRlcikpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBDTTo6TWVzc2FnZVR5cGU6OlNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nOgorICAgICAgICBo
YW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJbmZvOjpzZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZz4o
V1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6
TWVzc2FnZVR5cGU6OlNldFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZzoKKyAgICAgICAgaGFu
ZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6c2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5n
PihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENN
OjpNZXNzYWdlVHlwZTo6U2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nOgorICAgICAgICBo
YW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJbmZvOjpzZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3Rp
bmc+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Q006Ok1lc3NhZ2VUeXBlOjpTZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nOgorICAg
ICAgICBoYW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJbmZvOjpzZXRBdHRyaWJ1dGlvblJlcG9ydFVS
THNGb3JUZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6TWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZv
clRlc3Rpbmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86Om1hcmtBbGxV
bmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6TWFya0F0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nOgorICAgICAgICBo
YW5kbGVQQ01NZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjptYXJrQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1l
c3NhZ2UpLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UENNOjpNZXNzYWdlVHlwZTo6U2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nOgorICAg
ICAgICBoYW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJbmZvOjpzZXRFcGhlbWVyYWxNZWFzdXJlbWVu
dEZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpTZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JU
ZXN0aW5nOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJbmZvOjpzZXRQQ01GcmF1
ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6U3RhcnRUaW1lckltbWVk
aWF0ZWx5Rm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6
c3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OkRlc3Ryb3lTdG9y
ZUZvclRlc3Rpbmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUlu
Zm86OmRlc3Ryb3lTdG9yZUZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpLCBXVEZN
b3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworfSAvLyBuYW1l
c3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
SW50ZXJmYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI5MmZhOWYwOTU1YjNlMDIyNDQ2NTAzNzFlZGI0OTM5
YzA3MWZhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50
ZXJmYWNlLmgKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGUgOiBib29sIHsgVW5hdHRyaWJ1dGVkLCBBdHRyaWJ1dGVkIH07CisK
K2NsYXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjsKKworbmFtZXNwYWNlIFBDTSB7
CisKK2NsYXNzIE1hbmFnZXJJbnRlcmZhY2UgeworcHVibGljOgorICAgIHZpcnR1YWwgfk1hbmFn
ZXJJbnRlcmZhY2UoKSB7IH07CisKKyAgICB1c2luZyBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0
ZSA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0
aW9uU2l0ZTsKKyAgICB1c2luZyBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CisgICAgdXNpbmcg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDsKKyAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluOworICAgIHVzaW5nIFNvdXJjZVNpdGUgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6U291cmNlU2l0ZTsKKworICAgIHZpcnR1YWwgdm9pZCBzdG9yZVVuYXR0cmlidXRlZChQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUF0
dHJpYnV0aW9uKEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29uc3QgVVJMJiByZXF1ZXN0VVJM
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZGlyZWN0RG9tYWluLCBjb25zdCBVUkwm
IGZpcnN0UGFydHlVUkwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyRm9yUmVnaXN0cmFi
bGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVt
ZW50RnJvbUxlZ2FjeVN0b3JhZ2UoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB0
b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wg
dmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0
aW5nKFVSTCYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFRva2VuU2lnbmF0dXJlVVJMRm9y
VGVzdGluZyhVUkwmJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRyaWJ1dGlvblJlcG9y
dFVSTHNGb3JUZXN0aW5nKFVSTCYmIHNvdXJjZVVSTCwgVVJMJiYgZGVzdGluYXRpb25VUkwpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3Rp
bmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5n
KGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVz
Rm9yVGVzdGluZyhTdHJpbmcmJiB1bmxpbmthYmxlVG9rZW4sIFN0cmluZyYmIHNlY3JldFRva2Vu
LCBTdHJpbmcmJiBzaWduYXR1cmUsIFN0cmluZyYmIGtleUlEKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3RpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRlc3Ryb3lTdG9yZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9
IDA7Cit9OworCitjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xWZXJzaW9uS2V5IHsgInZl
cnNpb24iIH07Citjb25zdGV4cHIgdWludDY0X3QgcHJvdG9jb2xWZXJzaW9uVmFsdWUgeyAxIH07
CisKK2NvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbE1lc3NhZ2VUeXBlS2V5IHsgIm1lc3Nh
Z2UgdHlwZSIgfTsKK2VudW0gY2xhc3MgTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKKyAgICBTdG9y
ZVVuYXR0cmlidXRlZCwKKyAgICBIYW5kbGVBdHRyaWJ1dGlvbiwKKyAgICBDbGVhciwKKyAgICBD
bGVhckZvclJlZ2lzdHJhYmxlRG9tYWluLAorICAgIE1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEZyb21MZWdhY3lTdG9yYWdlLAorICAgIFRvU3RyaW5nRm9yVGVzdGluZywKKyAgICBTZXRP
dmVycmlkZVRpbWVyRm9yVGVzdGluZywKKyAgICBTZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3Rp
bmcsCisgICAgU2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nLAorICAgIFNldEF0dHJpYnV0
aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcsCisgICAgTWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJl
ZEZvclRlc3RpbmcsCisgICAgTWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNB
c0V4cGlyZWRGb3JUZXN0aW5nLAorICAgIFNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGlu
ZywKKyAgICBTZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nLAorICAgIFN0YXJ0
VGltZXJJbW1lZGlhdGVseUZvclRlc3RpbmcsCisgICAgRGVzdHJveVN0b3JlRm9yVGVzdGluZywK
K307CisKK2NvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5IHsg
ImVuY29kZWQgbWVzc2FnZSIgfTsKK3VzaW5nIEVuY29kZWRNZXNzYWdlID0gVmVjdG9yPHVpbnQ4
X3Q+OworCit2b2lkIGRlY29kZU1lc3NhZ2VBbmRTZW5kVG9NYW5hZ2VyKE1lc3NhZ2VUeXBlLCBW
ZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1
aW50OF90PiYmKT4mJik7Citib29sIG1lc3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdlVHlwZSk7
CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpQQ006Ok1l
c3NhZ2VUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2Vi
S2l0OjpQQ006Ok1lc3NhZ2VUeXBlLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6
OlN0b3JlVW5hdHRyaWJ1dGVkLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6Okhh
bmRsZUF0dHJpYnV0aW9uLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OkNsZWFy
LAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OkNsZWFyRm9yUmVnaXN0cmFibGVE
b21haW4sCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6TWlncmF0ZVByaXZhdGVD
bGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UsCisgICAgICAgIFdlYktpdDo6UENNOjpN
ZXNzYWdlVHlwZTo6VG9TdHJpbmdGb3JUZXN0aW5nLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVz
c2FnZVR5cGU6OlNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nLAorICAgICAgICBXZWJLaXQ6OlBD
TTo6TWVzc2FnZVR5cGU6OlNldFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZywKKyAgICAgICAg
V2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmcs
CisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6U2V0QXR0cmlidXRpb25SZXBvcnRV
UkxzRm9yVGVzdGluZywKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpNYXJrQWxs
VW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZywKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1l
c3NhZ2VUeXBlOjpNYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJl
ZEZvclRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6U2V0RXBoZW1l
cmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5
cGU6OlNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcsCisgICAgICAgIFdlYktp
dDo6UENNOjpNZXNzYWdlVHlwZTo6U3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZywKKyAg
ICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpEZXN0cm95U3RvcmVGb3JUZXN0aW5nCisg
ICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zY2FlNGU0ZmY1OGNiNjFmNTVmNWI1MTk1YmE1ZTNkMGJhOGRiZGQz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAK
QEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCIKKworI2luY2x1ZGUg
IlByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlByaXZhdGVD
bGlja01lYXN1cmVtZW50RGVjb2Rlci5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVt
ZW50RW5jb2Rlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisK
K3RlbXBsYXRlPE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgordm9p
ZCBzZW5kTWVzc2FnZShBcmdzJiYuLi4gYXJncykKK3sKKyAgICBFbmNvZGVyIGVuY29kZXI7Cisg
ICAgZW5jb2Rlci5lbmNvZGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICBDb25u
ZWN0aW9uOjpjb25uZWN0aW9uVG9EYWVtb24oKS5zZW5kKG1lc3NhZ2VUeXBlLCBlbmNvZGVyLnRh
a2VCdWZmZXIoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0cnVjdCBSZXBs
eUNhbGxlcjsKK3RlbXBsYXRlPD4gc3RydWN0IFJlcGx5Q2FsbGVyPD4geworICAgIHN0YXRpYyB2
b2lkIGNhbGxSZXBseShEZWNvZGVyJiYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKKyAgICB9Cit9OwordGVtcGxhdGU8PiBzdHJ1Y3QgUmVwbHlDYWxsZXI8U3RyaW5nPiB7Cisg
ICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KERlY29kZXImJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7CisgICAgICAgIGRlY29kZXIgPj4gc3RyaW5n
OworICAgICAgICBpZiAoIXN0cmluZykKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKCpzdHJpbmcpKTsK
KyAgICB9Cit9OworCit0ZW1wbGF0ZTxNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5hbWUu
Li4gQXJncywgdHlwZW5hbWUuLi4gUmVwbHlBcmdzPgordm9pZCBzZW5kTWVzc2FnZVdpdGhSZXBs
eShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlcGx5QXJncy4uLik+JiYgY29tcGxldGlvbkhhbmRs
ZXIsIEFyZ3MmJi4uLiBhcmdzKQoreworICAgIEVuY29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVy
LmVuY29kZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIENvbm5lY3Rpb246OmNv
bm5lY3Rpb25Ub0RhZW1vbigpLnNlbmRXaXRoUmVwbHkobWVzc2FnZVR5cGUsIGVuY29kZXIudGFr
ZUJ1ZmZlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKGF1dG8gcmVwbHlCdWZmZXIpIG11dGFibGUgeworICAgICAgICBEZWNvZGVyIGRlY29kZXIo
V1RGTW92ZShyZXBseUJ1ZmZlcikpOworICAgICAgICBSZXBseUNhbGxlcjxSZXBseUFyZ3MuLi4+
OjpjYWxsUmVwbHkoV1RGTW92ZShkZWNvZGVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIH0pOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6c3RvcmVVbmF0dHJpYnV0ZWQoV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBwY20pCit7CisgICAgc2VuZE1lc3NhZ2U8
TWVzc2FnZVR5cGU6OlN0b3JlVW5hdHRyaWJ1dGVkPihwY20pOworfQorCit2b2lkIE1hbmFnZXJQ
cm94eTo6aGFuZGxlQXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiB0cmlnZ2VyRGF0YSwgY29uc3QgVVJMJiByZXF1ZXN0
VVJMLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZGlyZWN0RG9tYWluLCBjb25zdCBV
UkwmIGZpcnN0UGFydHlVUkwpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OkhhbmRs
ZUF0dHJpYnV0aW9uPih0cmlnZ2VyRGF0YSwgcmVxdWVzdFVSTCwgcmVkaXJlY3REb21haW4sIGZp
cnN0UGFydHlVUkwpOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6Y2xlYXIoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRNZXNzYWdlV2l0
aFJlcGx5PE1lc3NhZ2VUeXBlOjpDbGVhcj4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
fQorCit2b2lkIE1hbmFnZXJQcm94eTo6Y2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8TWVz
c2FnZVR5cGU6OkNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4+KFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBkb21haW4pOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6bWlncmF0ZVByaXZhdGVD
bGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQmJiBwY20sIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIHR5
cGUpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6Ok1pZ3JhdGVQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlPihwY20sIHR5cGUpOworfQorCit2b2lkIE1hbmFn
ZXJQcm94eTo6dG9TdHJpbmdGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBzZW5kTWVzc2FnZVdpdGhSZXBs
eTxNZXNzYWdlVHlwZTo6VG9TdHJpbmdGb3JUZXN0aW5nPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpzZXRPdmVycmlkZVRpbWVyRm9yVGVzdGlu
Zyhib29sIHZhbHVlKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpTZXRPdmVycmlk
ZVRpbWVyRm9yVGVzdGluZz4odmFsdWUpOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6c2V0VG9r
ZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTCYmIHVybCkKK3sKKyAgICBzZW5kTWVzc2FnZTxN
ZXNzYWdlVHlwZTo6U2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nPih1cmwpOworfQorCit2
b2lkIE1hbmFnZXJQcm94eTo6c2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFVSTCYmIHVy
bCkKK3sKKyAgICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlwZTo6U2V0VG9rZW5TaWduYXR1cmVVUkxG
b3JUZXN0aW5nPih1cmwpOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6c2V0QXR0cmlidXRpb25S
ZXBvcnRVUkxzRm9yVGVzdGluZyhVUkwmJiBzb3VyY2VVUkwsIFVSTCYmIGRlc3RpbmF0aW9uVVJM
KQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpTZXRBdHRyaWJ1dGlvblJlcG9ydFVS
THNGb3JUZXN0aW5nPihzb3VyY2VVUkwsIGRlc3RpbmF0aW9uVVJMKTsKK30KKwordm9pZCBNYW5h
Z2VyUHJveHk6Om1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCkKK3sKKyAg
ICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlwZTo6TWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZv
clRlc3Rpbmc+KCk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjptYXJrQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5
PE1lc3NhZ2VUeXBlOjpNYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhw
aXJlZEZvclRlc3Rpbmc+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBN
YW5hZ2VyUHJveHk6OnNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyhib29sIHZhbHVl
KQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpTZXRFcGhlbWVyYWxNZWFzdXJlbWVu
dEZvclRlc3Rpbmc+KHZhbHVlKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OnNldFBDTUZyYXVk
UHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoU3RyaW5nJiYgdW5saW5rYWJsZVRva2VuLCBTdHJp
bmcmJiBzZWNyZXRUb2tlbiwgU3RyaW5nJiYgc2lnbmF0dXJlLCBTdHJpbmcmJiBrZXlJRCkKK3sK
KyAgICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlwZTo6U2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVz
Rm9yVGVzdGluZz4odW5saW5rYWJsZVRva2VuLCBzZWNyZXRUb2tlbiwgc2lnbmF0dXJlLCBrZXlJ
RCk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpzdGFydFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0
aW5nKCkKK3sKKyAgICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlwZTo6U3RhcnRUaW1lckltbWVkaWF0
ZWx5Rm9yVGVzdGluZz4oKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OmRlc3Ryb3lTdG9yZUZv
clRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VUeXBlOjpEZXN0cm95U3RvcmVGb3JU
ZXN0aW5nPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44Y2Q0MTE5OTRiNGIwNmYwZjZiNWQ5OTE1ZjJmMmNkZmFjYTk2ZTZmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oCkBAIC0wLDAg
KzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKworY2xhc3Mg
TWFuYWdlclByb3h5IDogcHVibGljIE1hbmFnZXJJbnRlcmZhY2UgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHZvaWQgc3RvcmVVbmF0dHJpYnV0ZWQoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJikgZmluYWw7CisgICAgdm9pZCBoYW5kbGVBdHRy
aWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25Ucmln
Z2VyRGF0YSYmLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYgcmVkaXJlY3REb21haW4sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCkgZmluYWw7Cisg
ICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZv
aWQgY2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBtaWdy
YXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZShXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9u
VHlwZSkgZmluYWw7CisKKyAgICB2b2lkIHRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyk+JiYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0T3ZlcnJpZGVU
aW1lckZvclRlc3RpbmcoYm9vbCkgZmluYWw7CisgICAgdm9pZCBzZXRUb2tlblB1YmxpY0tleVVS
TEZvclRlc3RpbmcoVVJMJiYpIGZpbmFsOworICAgIHZvaWQgc2V0VG9rZW5TaWduYXR1cmVVUkxG
b3JUZXN0aW5nKFVSTCYmKSBmaW5hbDsKKyAgICB2b2lkIHNldEF0dHJpYnV0aW9uUmVwb3J0VVJM
c0ZvclRlc3RpbmcoVVJMJiYgc291cmNlVVJMLCBVUkwmJiBkZXN0aW5hdGlvblVSTCkgZmluYWw7
CisgICAgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZygpIGZpbmFs
OworICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGly
ZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9p
ZCBzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcoYm9vbCkgZmluYWw7CisgICAgdm9p
ZCBzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFN0cmluZyYmIHVubGlua2Fi
bGVUb2tlbiwgU3RyaW5nJiYgc2VjcmV0VG9rZW4sIFN0cmluZyYmIHNpZ25hdHVyZSwgU3RyaW5n
JiYga2V5SUQpIGZpbmFsOworICAgIHZvaWQgc3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGlu
ZygpIGZpbmFsOworICAgIHZvaWQgZGVzdHJveVN0b3JlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworfTsKKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
ZW1vbkNvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25D
b25uZWN0aW9uQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFiNTg1MDY2NThhM2Y5NTM1ZWVmYjFhNjA1
YTI1NWQ4NzI0NzcxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnREYWVtb25Db25uZWN0aW9uQ29jb2EubW0KQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q29u
bmVjdGlvbi5oIgorCisjaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGll
cy5oIgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCituYW1lc3BhY2UgUENNIHsKKworQ29ubmVjdGlvbjo6Q29ubmVjdGlvbihPU09iamVjdFB0
cjx4cGNfY29ubmVjdGlvbl90PiYmIGNvbm5lY3Rpb24pCisgICAgOiBtX2Nvbm5lY3Rpb24oV1RG
TW92ZShjb25uZWN0aW9uKSkgeyB9CisKK0Nvbm5lY3Rpb24gQ29ubmVjdGlvbjo6Y29ubmVjdGlv
blRvRGFlbW9uKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90Pj4gY29ubmVjdGlv
bjsKKyAgICBpZiAoIWNvbm5lY3Rpb24uZ2V0KCkpIHsKKyAgICAgICAgY29ubmVjdGlvbi5nZXQo
KSA9IGFkb3B0T1NPYmplY3QoeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZSgiY29t
LmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIiwgZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgMCkpOworICAgICAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihj
b25uZWN0aW9uLmdldCgpLmdldCgpLCBeKHhwY19vYmplY3RfdCBldmVudCkgeworICAgICAgICAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgICAgIGlmIChldmVudCA9PSBY
UENfRVJST1JfQ09OTkVDVElPTl9JTlRFUlJVUFRFRCkgeworICAgICAgICAgICAgICAgIC8vIERh
ZW1vbiBjcmFzaGVkLCB3ZSB3aWxsIG5lZWQgdG8gbWFrZSBhIG5ldyBjb25uZWN0aW9uIHRvIGEg
bmV3IGluc3RhbmNlIG9mIHRoZSBkYWVtb24uCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5n
ZXQoKSA9IG51bGxwdHI7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfSk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX2Fj
dGl2YXRlKGNvbm5lY3Rpb24uZ2V0KCkuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gQ29ubmVj
dGlvbihPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90Pihjb25uZWN0aW9uLmdldCgpKSk7Cit9
CisKK3N0YXRpYyBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IGRpY3Rpb25hcnlGcm9tTWVzc2Fn
ZShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdlKQorewor
ICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRl
KG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICBhZGRWZXJzaW9uQW5kRW5jb2RlZE1lc3NhZ2VU
b0RpY3Rpb25hcnkoV1RGTW92ZShtZXNzYWdlKSwgZGljdGlvbmFyeS5nZXQoKSk7CisgICAgeHBj
X2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5LmdldCgpLCBwcm90b2NvbE1lc3NhZ2VU
eXBlS2V5LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obWVzc2FnZVR5cGUpKTsKKyAgICByZXR1cm4g
ZGljdGlvbmFyeTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpzZW5kKE1lc3NhZ2VUeXBlIG1lc3Nh
Z2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmIG1lc3NhZ2UpCit7CisgICAgaWYgKCFtX2Nvbm5lY3Rp
b24pIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UobV9jb25uZWN0aW9uLmdldCgp
LCBkaWN0aW9uYXJ5RnJvbU1lc3NhZ2UobWVzc2FnZVR5cGUsIFdURk1vdmUobWVzc2FnZSkpLmdl
dCgpKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5KE1lc3NhZ2VUeXBlIG1l
c3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRW5jb2RlZE1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFt
X2Nvbm5lY3Rpb24pIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgIH0KKworICAgIGF1dG8gZGljdGlvbmFy
eSA9IGRpY3Rpb25hcnlGcm9tTWVzc2FnZShtZXNzYWdlVHlwZSwgV1RGTW92ZShtZXNzYWdlKSk7
CisgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlX3dpdGhfcmVwbHkobV9jb25uZWN0aW9u
LmdldCgpLCBkaWN0aW9uYXJ5LmdldCgpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtl
QmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
ICh4cGNfb2JqZWN0X3QgcmVwbHkpIG11dGFibGUgeworICAgICAgICBpZiAoeHBjX2dldF90eXBl
KHJlcGx5KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwor
ICAgICAgICB9CisgICAgICAgIGlmICh4cGNfZGljdGlvbmFyeV9nZXRfdWludDY0KHJlcGx5LCBw
cm90b2NvbFZlcnNpb25LZXkpICE9IHByb3RvY29sVmVyc2lvblZhbHVlKSB7CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOworICAgICAgICB9CisgICAgICAgIHNpemVfdCBkYXRhU2l6ZSB7IDAgfTsKKyAg
ICAgICAgY29uc3Qgdm9pZCogZGF0YSA9IHhwY19kaWN0aW9uYXJ5X2dldF9kYXRhKHJlcGx5LCBw
cm90b2NvbEVuY29kZWRNZXNzYWdlS2V5LCAmZGF0YVNpemUpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgZGF0YVNpemUgfSk7
CisgICAgfSkuZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xv
YWRlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2Nv
YS5tbQppbmRleCBkNmJmMDZlMTExZjZiYjVmN2VmMjhmMTk2ZDJlZTM4MDBjN2M4YTRjLi5iM2Jh
MWUyNDI0MjA4ZTc1NDE4YzI3MmU2YjY1NDA3MzQwMzZkNjQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyQ29jb2EubW0KQEAgLTU3LDYgKzU3LDcgQEAgc3Rh
dGljIHZvaWQgcHJvY2Vzc1BDTVJlcXVlc3QoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OlBjbURhdGFDYXJyaWVkLAogCiAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAq
KXNlc3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFzayAqKXRhc2sgZGlkUmVjZWl2ZUNoYWxsZW5n
ZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bv
c2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpKWNvbXBsZXRpb25IYW5kbGVyCiB7
CisgICAgLy8gRklYTUU6IEFkZCBwbHVibWluZyBzbyB0aGF0IHdlIGNhbiB0ZWxsIHRoZSBkYWVt
b24gd2hpY2ggY2VydGlmaWNhdGVzIHRvIGFjY2VwdCB3aXRob3V0IHVzaW5nIE5ldHdvcmtTZXNz
aW9uQ29jb2EuCiAgICAgaWYgKFtjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0
aW9uTWV0aG9kIGlzRXF1YWxUb1N0cmluZzpOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVy
VHJ1c3RdCiAgICAgICAgICYmIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmFsbG93c1NwZWNpZmljSFRU
UFNDZXJ0aWZpY2F0ZUZvckhvc3QoY2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxD
cmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNl
cnZlclRydXN0XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRp
bGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmM3MDc4NmVmMTU5OGM4M2ZhNDM2MmRmM2Q2YzdmZTc3ODNlMTIxYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaApAQCAtMCww
ICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCituYW1lc3BhY2UgUENNIHsKKwordm9pZCBhZGRWZXJzaW9uQW5kRW5jb2RlZE1lc3NhZ2VU
b0RpY3Rpb25hcnkoVmVjdG9yPHVpbnQ4X3Q+JiYsIHhwY19vYmplY3RfdCk7CisKK30gLy8gbmFt
ZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50WFBDVXRpbGl0aWVzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2MzAzMWI1YzM2YjcxMjYxODIxNzA0M2Zm
OTdkZmY5NDc0YzVkMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50WFBDVXRpbGl0aWVzLm1tCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVz
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKwordm9pZCBhZGRW
ZXJzaW9uQW5kRW5jb2RlZE1lc3NhZ2VUb0RpY3Rpb25hcnkoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVz
c2FnZSwgeHBjX29iamVjdF90IGRpY3Rpb25hcnkpCit7CisgICAgQVNTRVJUKHhwY19nZXRfdHlw
ZShkaWN0aW9uYXJ5KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKTsKKyAgICB4cGNfZGljdGlvbmFy
eV9zZXRfdWludDY0KGRpY3Rpb25hcnksIFBDTTo6cHJvdG9jb2xWZXJzaW9uS2V5LCBQQ006OnBy
b3RvY29sVmVyc2lvblZhbHVlKTsKKworICAgIGF1dG8gYnVmZmVyU2l6ZSA9IG1lc3NhZ2Uuc2l6
ZSgpOworICAgIGF1dG8gcmF3UG9pbnRlciA9IG1lc3NhZ2UucmVsZWFzZUJ1ZmZlcigpLmxlYWtQ
dHIoKTsKKyAgICBhdXRvIGRpc3BhdGNoRGF0YSA9IGFkb3B0TlMoZGlzcGF0Y2hfZGF0YV9jcmVh
dGUocmF3UG9pbnRlciwgYnVmZmVyU2l6ZSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsK
KyAgICAgICAgZmFzdEZyZWUocmF3UG9pbnRlcik7CisgICAgfSkpOworICAgIGF1dG8geHBjRGF0
YSA9IGFkb3B0T1NPYmplY3QoeHBjX2RhdGFfY3JlYXRlX3dpdGhfZGlzcGF0Y2hfZGF0YShkaXNw
YXRjaERhdGEuZ2V0KCkpKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUoZGljdGlvbmFy
eSwgUENNOjpwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5LCB4cGNEYXRhLmdldCgpKTsKKworfQor
Cit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdv
cmtQcm9jZXNzLnNiLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFw
cGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgppbmRleCAzYjk3OTQ1NTA3OWU0NTZlMzU0
OTNlMWUxZTVjYTQ2YjlkN2U4OGVkLi4xOTc0YjhlOWYyNTlhZWVmYzk0NDY0Njg0YjIwNGQzNTBm
MzhkNDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9jb20u
YXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KQEAg
LTM1Nyw2ICszNTcsOCBAQAogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLkFwcFNTTy5zZXJ2
aWNlLXhwYyIpCiApCiAKKyhhbGxvdyBtYWNoLWxvb2t1cCAoZ2xvYmFsLW5hbWUgImNvbS5hcHBs
ZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIpKQorCiAod2l0aC1maWx0ZXIgKHVpZCAw
KQogICAgIChhbGxvdyBtYWNoLWxvb2t1cAogICAgICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBs
ZS5EaXNrQXJiaXRyYXRpb24uZGlza2FyYml0cmF0aW9uZCIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKaW5kZXggYmNmN2NkMTYzZDliYTkyM2QxODBhMDNmOGE2
ZWU0NTBmNzZjMWExZC4uNTMzZTgwOTcwNTQwNTViODFhNmM1ZWExMDk4MWM1YjRkNDAyODc0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaApAQCAtNDgsNiAr
NDgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBBcmd1
bWVudENvZGVyIHsKICAgICAgICAgdC5lbmNvZGUoZW5jb2Rlcik7CiAgICAgfQogCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUPiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIGlmIGNvbnN0ZXhwcihIYXNNb2Rl
cm5EZWNvZGVyVjxUPikKQEAgLTgyLDYgKzgzLDcgQEAgc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwg
dHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKICAg
ICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKICAgICB9CiAKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFQ+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAgVCByZXN1bHQ7CkBAIC0x
MDAsNiArMTAyLDcgQEAgc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWZfdDxzdGQ6OmlzX2VudW1fdjxUPj4+IHsKICAgICAgICAgZW5jb2RlciA8PCBXVEY6OmVu
dW1Ub1VuZGVybHlpbmdUeXBlPFQ+KHZhbHVlKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFQ+IGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnVuZGVybHlpbmdf
dHlwZV90PFQ+PiB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50
Q29kZXJzLmNwcAppbmRleCA4MTBlZTJjZTUxZjI3YzJkYmQ2MDdlNTMyYWEyNmQ2MDU2OWFiMjli
Li5mZmY5ZTVlM2Y2YjNlMmVkNTZiNTY2MWUwMzI3NDllZTYzMjM2ZDRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0yNywxNiArMjcsMjMg
QEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oIgorI2luY2x1
ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5oIgogI2luY2x1ZGUgIlN0cmVhbUNv
bm5lY3Rpb25FbmNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIAordGVtcGxhdGU8
dHlwZW5hbWUgRW5jb2Rlcj4KIHZvaWQgQXJndW1lbnRDb2RlcjxXYWxsVGltZT46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXYWxsVGltZSYgdGltZSkKIHsKICAgICBlbmNvZGVyIDw8
IHRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpOwogfQordGVtcGxhdGUKK3ZvaWQgQXJn
dW1lbnRDb2RlcjxXYWxsVGltZT46OmVuY29kZTxFbmNvZGVyPihFbmNvZGVyJiwgY29uc3QgV2Fs
bFRpbWUmKTsKK3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+OjplbmNvZGU8
V2ViS2l0OjpQQ006OkVuY29kZXI+KFdlYktpdDo6UENNOjpFbmNvZGVyJiwgY29uc3QgV2FsbFRp
bWUmKTsKIAogV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgQXJndW1lbnRDb2RlcjxXYWxsVGltZT46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXYWxsVGltZSYgdGltZSkKIHsKQEAgLTQ4LDYgKzU1
LDcgQEAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgQXJndW1lbnRDb2RlcjxXYWxsVGltZT46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBXYWxsVGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordGVt
cGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFs
PFdhbGxUaW1lPiBBcmd1bWVudENvZGVyPFdhbGxUaW1lPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRpbWU7CkBAIC01Niw2ICs2NCwxMCBA
QCBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gQXJndW1lbnRDb2Rl
cjxXYWxsVGltZT46OmRlY29kZShEZWNvZAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoKnRpbWUpOwogfQordGVtcGxhdGUK
K3N0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGU8
RGVjb2Rlcj4oRGVjb2RlciYpOwordGVtcGxhdGUKK3N0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IEFy
Z3VtZW50Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGU8V2ViS2l0OjpQQ006OkRlY29kZXI+KFdlYktp
dDo6UENNOjpEZWNvZGVyJik7CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxBdG9tU3RyaW5nPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEF0b21TdHJpbmcmIGF0b21TdHJpbmcpCiB7CkBA
IC0xMzMsMTIgKzE0NSwxNCBAQCB0ZW1wbGF0ZQogdm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46
OmVuY29kZTxFbmNvZGVyPihFbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7CiB0ZW1wbGF0ZQogdm9p
ZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZTxTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4o
U3RyZWFtQ29ubmVjdGlvbkVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKK3RlbXBsYXRlCit2b2lk
IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlPFdlYktpdDo6UENNOjpFbmNvZGVyPihXZWJL
aXQ6OlBDTTo6RW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1l
IERlY29kZXI+CiBzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJp
bmdUZXh0KERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IGxlbmd0aCkKIHsKICAgICAvLyBCZWZv
cmUgYWxsb2NhdGluZyB0aGUgc3RyaW5nLCBtYWtlIHN1cmUgdGhhdCB0aGUgZGVjb2RlciBidWZm
ZXIgaXMgYmlnIGVub3VnaC4KLSAgICBpZiAoIWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRv
Q29udGFpbjxDaGFyYWN0ZXJUeXBlPihsZW5ndGgpKQorICAgIGlmICghZGVjb2Rlci50ZW1wbGF0
ZSBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPENoYXJhY3RlclR5cGU+KGxlbmd0aCkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgQ2hhcmFjdGVyVHlwZSogYnVm
ZmVyOwpAQCAtMTQ5LDI1ICsxNjMsMzIgQEAgc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gZGVjb2RlU3RyaW5nVGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdAogICAgIHJl
dHVybiBzdHJpbmc7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiBXQVJOX1VOVVNF
RF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTdHJpbmc+IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgdWludDMyX3QgbGVuZ3RoOwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobGVuZ3RoKSkKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBsZW5n
dGg7CisgICAgZGVjb2RlciA+PiBsZW5ndGg7CisgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgaWYgKGxlbmd0aCA9PSBzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpIHsKKyAgICBpZiAoKmxlbmd0aCA9PSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpIHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbnVs
bCBzdHJpbmcuCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAgICAgCi0gICAgYm9v
bCBpczhCaXQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpczhCaXQpKQorICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gaXM4Qml0OworICAgIGRlY29kZXIgPj4gaXM4Qml0OworICAgIGlmICghaXM4
Qml0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIGlmIChpczhCaXQp
Ci0gICAgICAgIHJldHVybiBkZWNvZGVTdHJpbmdUZXh0PExDaGFyPihkZWNvZGVyLCBsZW5ndGgp
OwotICAgIHJldHVybiBkZWNvZGVTdHJpbmdUZXh0PFVDaGFyPihkZWNvZGVyLCBsZW5ndGgpOwor
ICAgIGlmICgqaXM4Qml0KQorICAgICAgICByZXR1cm4gZGVjb2RlU3RyaW5nVGV4dDxMQ2hhcj4o
ZGVjb2RlciwgKmxlbmd0aCk7CisgICAgcmV0dXJuIGRlY29kZVN0cmluZ1RleHQ8VUNoYXI+KGRl
Y29kZXIsICpsZW5ndGgpOwogfQordGVtcGxhdGUKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBBcmd1
bWVudENvZGVyPFN0cmluZz46OmRlY29kZTxEZWNvZGVyPihEZWNvZGVyJik7Cit0ZW1wbGF0ZQor
c3RkOjpvcHRpb25hbDxTdHJpbmc+IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2RlPFdlYktp
dDo6UENNOjpEZWNvZGVyPihXZWJLaXQ6OlBDTTo6RGVjb2RlciYpOwogCiBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBBcmd1bWVudENvZGVyPFN0cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBTdHJpbmcmIHJlc3VsdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVycy5oCmluZGV4IGM5N2E2ZjU3NmVmZGFlYWUwNGY2OTgzYmUyNTk0MmNlMjAzOWZlOWYu
LmIxODJjNTRlYjc4OGQzZDY5ODE0YWE4MDczZTRmZjFhYTlmMzkyYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtMzAwLDYgKzMwMCw3IEBAIGF1
dG8gdHVwbGVGcm9tVHVwbGVBbmRPYmplY3QoVCYmIG9iamVjdCwgc3RkOjp0dXBsZTxFbGVtZW50
cy4uLj4mJiB0dXBsZSkKIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZSwgdHlwZW5hbWUuLi4gVHlw
ZXM+CiBzdHJ1Y3QgVHVwbGVEZWNvZGVySW1wbCB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVj
b2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFR5cGUsIFR5cGVzLi4u
Pj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAgICBzdGQ6Om9wdGlvbmFs
PFR5cGU+IG9wdGlvbmFsOwpAQCAtMzE3LDYgKzMxOCw3IEBAIHN0cnVjdCBUdXBsZURlY29kZXJJ
bXBsIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KIHN0cnVjdCBUdXBsZURlY29kZXJJbXBs
PFR5cGU+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPHN0ZDo6dHVwbGU8VHlwZT4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxUeXBlPiBvcHRpb25hbDsKQEAgLTMyOSw2ICszMzEs
NyBAQCBzdHJ1Y3QgVHVwbGVEZWNvZGVySW1wbDxUeXBlPiB7CiAKIHRlbXBsYXRlPHNpemVfdCBz
aXplLCB0eXBlbmFtZS4uLiBFbGVtZW50cz4KIHN0cnVjdCBUdXBsZURlY29kZXIgeworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjp0
dXBsZTxFbGVtZW50cy4uLj4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIFR1cGxlRGVjb2RlckltcGw8RWxlbWVudHMuLi4+OjpkZWNvZGUoZGVjb2Rlcik7
CkBAIC0zMzcsNiArMzQwLDcgQEAgc3RydWN0IFR1cGxlRGVjb2RlciB7CiAKIHRlbXBsYXRlPD4K
IHN0cnVjdCBUdXBsZURlY29kZXI8MD4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTw+PiBkZWNvZGUoRGVjb2RlciYp
CiAgICAgewogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKCk7CkBAIC0zNTAsNiArMzU0
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+IHN0cnVjdCBBcmd1bWVudENvZGVy
PHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+PiB7CiAgICAgICAgIFR1cGxlRW5jb2RlcjxzaXplb2Yu
Li4oRWxlbWVudHMpLCBFbGVtZW50cy4uLj46OmVuY29kZShlbmNvZGVyLCB0dXBsZSk7CiAgICAg
fQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgewogICAgICAgICByZXR1cm4gVHVwbGVEZWNvZGVyPHNpemVvZi4uLihFbGVtZW50cyksIEVs
ZW1lbnRzLi4uPjo6ZGVjb2RlKGRlY29kZXIpOwpAQCAtNzIxLDggKzcyNiwxMCBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBUeXBlcz4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V1RGOjpWYXJpYW50PFR5
cGVzLi4uPj4gewogfTsKICAgICAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Fs
bFRpbWU+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2FsbFRpbWUmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXYWxsVGltZSYpOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIERlY29kZXI+CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGRl
Y29kZShEZWNvZGVyJik7CiB9OwogCkBAIC03NDAsNiArNzQ3LDcgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxTdHJpbmc+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVy
PgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7CiAgICAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgU3RyaW5nJik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tNYWluLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvV0tNYWluLmgKaW5kZXggN2E5MjdjNzdkMjZkODU1YjRiNmZlYWRhOTgwM2EwNDdjZWU4
YjVjMy4uNGJlNzlkMmE1YmQwZTcwNGY5YTNiYzQ4M2IyZDI1OGNkNDhlZGI4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLTWFpbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS01haW4uaApAQCAtMzMsNiArMzMsNyBAQCBleHRlcm4g
IkMiIHsKICNlbmRpZgogCiBXS19FWFBPUlQgaW50IFdLWFBDU2VydmljZU1haW4oaW50IGFyZ2Ms
IGNvbnN0IGNoYXIqKiBhcmd2KSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEz
LjApKTsKK1dLX0VYUE9SVCBpbnQgV0tQQ01EYWVtb25NYWluKGludCBhcmdjLCBjb25zdCBjaGFy
KiogYXJndikgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvV0tNYWluLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dLTWFpbi5tbQppbmRleCBlNDgwNWE0OGQ1MTQwNmFkNTk1NjZiMzc3YmUyNTM5ODJhOWFl
YjkwLi40NjgwMWRiZmZjZTZiODI2Y2QxMGRjYWFkYTMzMGQ2ZjVmZGYxOGI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tNYWluLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS01haW4ubW0KQEAgLTI2LDkgKzI2LDE1IEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLTWFpbi5oIgogCisjaW1wb3J0ICJQQ01EYWVtb25F
bnRyeVBvaW50LmgiCiAjaW1wb3J0ICJYUENTZXJ2aWNlRW50cnlQb2ludC5oIgogCiBpbnQgV0tY
UENTZXJ2aWNlTWFpbihpbnQgYXJnYywgY29uc3QgY2hhcioqIGFyZ3YpCiB7CiAgICAgcmV0dXJu
IFdlYktpdDo6WFBDU2VydmljZU1haW4oYXJnYywgYXJndik7CiB9CisKK2ludCBXS1BDTURhZW1v
bk1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqKiBhcmd2KQoreworICAgIHJldHVybiBXZWJLaXQ6
OlBDTURhZW1vbk1haW4oYXJnYywgYXJndik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBv
aW50LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0Rh
ZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhjOTEyMGJmNWNjYmMxNzFm
OWE1Y2Q5ZWQxMmU3Y2QwMzk2ZTM0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkVudHJ5UG9p
bnQuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitpbnQgUENNRGFlbW9uTWFpbihpbnQsIGNvbnN0IGNoYXIqKik7CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
RW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BD
TURhZW1vbkVudHJ5UG9pbnQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2YyMzIxZGU1YjE5YzFjMTY3NDliZmQ2
YTYzNDY0Zjg0ZWQ1MjQ1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkVudHJ5UG9pbnQubW0K
QEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIlBDTURhZW1vbkVudHJ5UG9pbnQuaCIKKworI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRDb25uZWN0aW9uLmgiCisjaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXJJbnRlcmZhY2UuaCIKKyNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0
aWVzLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgorI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KKyNpbXBvcnQgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8
d3RmL1J1bkxvb3AuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KKyNpbXBv
cnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCisvLyBGSVhNRTogQWRkIGRhZW1vbiBwbGlz
dCB0byByZXBvc2l0b3J5LgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIEhhc2hTZXQ8
UmV0YWluUHRyPHhwY19jb25uZWN0aW9uX3Q+PiYgcGVlcnMoKQoreworICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8UmV0YWlu
UHRyPHhwY19jb25uZWN0aW9uX3Q+Pj4gc2V0OworICAgIHJldHVybiBzZXQuZ2V0KCk7Cit9CisK
K3N0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBDTTo6RW5jb2RlZE1lc3NhZ2UmJik+IHJl
cGx5U2VuZGVyKFBDTTo6TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIE9TT2JqZWN0UHRyPHhwY19v
YmplY3RfdD4mJiByZXF1ZXN0KQoreworICAgIGlmICghUENNOjptZXNzYWdlVHlwZVNlbmRzUmVw
bHkobWVzc2FnZVR5cGUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gW3Jl
cXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpXSAoUENNOjpFbmNvZGVkTWVzc2FnZSYmIG1lc3NhZ2Up
IHsKKyAgICAgICAgYXV0byByZXBseSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3Jl
YXRlX3JlcGx5KHJlcXVlc3QuZ2V0KCkpKTsKKyAgICAgICAgUENNOjphZGRWZXJzaW9uQW5kRW5j
b2RlZE1lc3NhZ2VUb0RpY3Rpb25hcnkoV1RGTW92ZShtZXNzYWdlKSwgcmVwbHkuZ2V0KCkpOwor
ICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoeHBjX2RpY3Rpb25hcnlfZ2V0X3Jl
bW90ZV9jb25uZWN0aW9uKHJlcXVlc3QuZ2V0KCkpLCByZXBseS5nZXQoKSk7CisgICAgfTsKK30K
Kworc3RhdGljIHZvaWQgY29ubmVjdGlvbkV2ZW50SGFuZGxlcih4cGNfb2JqZWN0X3QgcmVxdWVz
dCkKK3sKKyAgICBpZiAoeHBjX2dldF90eXBlKHJlcXVlc3QpICE9IFhQQ19UWVBFX0RJQ1RJT05B
UlkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoeHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChy
ZXF1ZXN0LCBQQ006OnByb3RvY29sVmVyc2lvbktleSkgIT0gUENNOjpwcm90b2NvbFZlcnNpb25W
YWx1ZSkgeworICAgICAgICBOU0xvZyhAInJlY2VpdmVkIHJlcXVlc3QgdGhhdCB3YXMgbm90IHRo
ZSBjdXJyZW50IHByb3RvY29sIHZlcnNpb24iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gbWVzc2FnZVR5cGUgeyBzdGF0aWNfY2FzdDxQQ006Ok1lc3NhZ2VUeXBlPih4cGNf
ZGljdGlvbmFyeV9nZXRfdWludDY0KHJlcXVlc3QsIFBDTTo6cHJvdG9jb2xNZXNzYWdlVHlwZUtl
eSkpIH07CisgICAgc2l6ZV90IGRhdGFTaXplIHsgMCB9OworICAgIGNvbnN0IHZvaWQqIGRhdGEg
PSB4cGNfZGljdGlvbmFyeV9nZXRfZGF0YShyZXF1ZXN0LCBQQ006OnByb3RvY29sRW5jb2RlZE1l
c3NhZ2VLZXksICZkYXRhU2l6ZSk7CisgICAgUENNOjpFbmNvZGVkTWVzc2FnZSBlbmNvZGVkTWVz
c2FnZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgZGF0YVNpemUgfTsKKyAg
ICBkZWNvZGVNZXNzYWdlQW5kU2VuZFRvTWFuYWdlcihtZXNzYWdlVHlwZSwgV1RGTW92ZShlbmNv
ZGVkTWVzc2FnZSksIHJlcGx5U2VuZGVyKG1lc3NhZ2VUeXBlLCByZXF1ZXN0KSk7Cit9CisKK3N0
YXRpYyB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9yTWFjaFNlcnZpY2VDb25uZWN0aW9ucygpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+PiBs
aXN0ZW5lciA9IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9tYWNoX3NlcnZpY2UoImNvbS5hcHBsZS53
ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IFhQQ19DT05ORUNUSU9OX01BQ0hfU0VSVklDRV9MSVNURU5FUik7CisgICAgeHBjX2Nvbm5lY3Rp
b25fc2V0X2V2ZW50X2hhbmRsZXIobGlzdGVuZXIuZ2V0KCkuZ2V0KCksIF4oeHBjX29iamVjdF90
IHBlZXIpIHsKKyAgICAgICAgaWYgKHhwY19nZXRfdHlwZShwZWVyKSAhPSBYUENfVFlQRV9DT05O
RUNUSU9OKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIEZJWE1FOiBBZGQgYW4g
ZW50aXRsZW1lbnQgY2hlY2sgaGVyZSBzbyB0aGF0IG9ubHkgdGhlIG5ldHdvcmsgcHJvY2VzcyBj
YW4gc3VjY2Vzc2Z1bGx5IGNvbm5lY3QuCisKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2
ZW50X2hhbmRsZXIocGVlciwgXih4cGNfb2JqZWN0X3QgZXZlbnQpIHsKKyAgICAgICAgICAgIGlm
IChldmVudCA9PSBYUENfRVJST1JfQ09OTkVDVElPTl9JTlRFUlJVUFRFRCkgeworICAgICAgICAg
ICAgICAgIHBlZXJzKCkucmVtb3ZlKHBlZXIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbm5lY3Rpb25FdmVudEhhbmRsZXIoZXZlbnQpOwor
ICAgICAgICB9KTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShwZWVy
LCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fYWN0
aXZhdGUocGVlcik7CisgICAgICAgIAorICAgICAgICBwZWVycygpLmFkZChwZWVyKTsKKyAgICB9
KTsKKyAgICB4cGNfY29ubmVjdGlvbl9hY3RpdmF0ZShsaXN0ZW5lci5nZXQoKS5nZXQoKSk7Cit9
CisKK3N0YXRpYyB2b2lkIHJlZ2lzdGVyU2NoZWR1bGVkQWN0aXZpdHlIYW5kbGVyKCkKK3sKKyAg
ICB4cGNfYWN0aXZpdHlfcmVnaXN0ZXIoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQu
YWN0aXZpdHkiLCBYUENfQUNUSVZJVFlfQ0hFQ0tfSU4sIF4oeHBjX2FjdGl2aXR5X3QgYWN0aXZp
dHkpIHsKKyAgICAgICAgaWYgKHhwY19hY3Rpdml0eV9nZXRfc3RhdGUoYWN0aXZpdHkpID09IFhQ
Q19BQ1RJVklUWV9TVEFURV9DSEVDS19JTikgeworICAgICAgICAgICAgeHBjX29iamVjdF90IGNy
aXRlcmlhID0geHBjX2FjdGl2aXR5X2NvcHlfY3JpdGVyaWEoYWN0aXZpdHkpOworCisgICAgICAg
ICAgICAvLyBGSVhNRTogc2V0IHZhbHVlcyBoZXJlIHRoYXQgYWxpZ24gd2l0aCB2YWx1ZXMgZnJv
bSB0aGUgcGxpc3QuCisKKyAgICAgICAgICAgIHhwY19hY3Rpdml0eV9zZXRfY3JpdGVyaWEoYWN0
aXZpdHksIGNyaXRlcmlhKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIEZJWE1FOiBBZGQgY29kZSBoZXJlIHRoYXQgZG9lcyBkYWlseSB0YXNrcyBvZiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuCisgICAgfSk7Cit9CisKK3N0YXRpYyB2b2lkIGVu
dGVyU2FuZGJveCgpCit7CisgICAgLy8gRklYTUU6IEVudGVyIGEgc2FuZGJveCBoZXJlLiBXZSBz
aG91bGQgb25seSBuZWVkIHJlYWQvd3JpdGUgYWNjZXNzIHRvIG91ciBkYXRhYmFzZSBhbmQgbmV0
d29yayBhY2Nlc3MgYW5kIG5vdGhpbmcgZWxzZS4KK30KKworaW50IFBDTURhZW1vbk1haW4oaW50
IGFyZ2MsIGNvbnN0IGNoYXIqKiBhcmd2KQoreworICAgIGlmIChhcmdjICE9IDIgfHwgc3RyY21w
KGFyZ3ZbMV0sICJydW5Bc0RhZW1vbiIpKSB7CisgICAgICAgIE5TTG9nKEAiVGhpcyBleGVjdXRh
YmxlIGlzIGludGVuZGVkIHRvIGJlIHJ1biBhcyBhIGRhZW1vbi4iKTsKKyAgICAgICAgcmV0dXJu
IC0xOworICAgIH0KKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgZW50ZXJTYW5kYm94
KCk7CisgICAgICAgIHN0YXJ0TGlzdGVuaW5nRm9yTWFjaFNlcnZpY2VDb25uZWN0aW9ucygpOwor
ICAgICAgICByZWdpc3RlclNjaGVkdWxlZEFjdGl2aXR5SGFuZGxlcigpOworICAgICAgICBXVEY6
OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisgICAgfQorICAgIENGUnVuTG9vcFJ1bigpOworICAg
IHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDI0
MTJiYmZhZDhlNWY4MTFiNTFlODJmNjBkMWM1NDYxOWEyMTg4MzkuLmNmYWJjZTA1YjI0ZDA3ODk4
MDZmMTRhYWU5MDg3MWFjMjBhODdkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTAxLDggKzEwMSwxNCBA
QCBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudENsaWVudEltcGwuY3BwCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcAogTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8u
Y3BwCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwCiBOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5l
dHdvcmtMb2FkZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcAorTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmNwcAorTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnREYWVtb25DbGllbnQuY3BwCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuY3BwCitO
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXJQcm94eS5jcHAKIAogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKaW5kZXggODkxMzgzNGY2YmI1ZjkzOWU3MjBiMDllZmNiMDJjOTU0NGY4NGFhYS4uMTFlNzI5
Njg0ZTRhMmFkZjBiNWNiODkzYWQ2NzkxZDkwMDU4MjYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dApAQCAtNDEsNyArNDEsOSBAQCBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxv
YWRDb2NvYS5tbQogTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9EYWVtb24vRGFlbW9u
RW50cnlQb2ludC5tbQogTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNl
L05ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbQogCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rp
b25Db2NvYS5tbQogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2Ev
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyQ29jb2EubW0KK05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
WFBDVXRpbGl0aWVzLm1tCiAKIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvaW9zL0xvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlcklPUy5tbQogCkBAIC0xOTEsNiArMTkzLDggQEAgU2hhcmVkL0Nv
Y29hL1dLTlNVUkxSZXF1ZXN0Lm1tCiBTaGFyZWQvQ29jb2EvV0tPYmplY3QubW0KIFNoYXJlZC9D
b2NvYS9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNDb2NvYS5tbQogCitTaGFyZWQvRW50cnlQ
b2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5tbQorCiBTaGFy
ZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBv
aW50Lm1tCiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1Nl
cnZpY2VNYWluLm1tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGNmOWUwZGY1NGJmNjhiMjUwMDFjNmNjMWQ5ZWJjYjczYWUyMTE3M2Yu
LmY2OGI0Y2ZiNDg1ZDZmOGJmMzYyOGQwNTZiOWYzZDcwNDA2MjJlNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI5MSw2ICsxMjkx
LDcgQEAKIAkJNUNCN0FGRTAyM0M1MkNFNTAwRTQ5Q0YzIC8qIF9XS1Jlc291cmNlTG9hZERlbGVn
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I3
QUZERjIzQzUyQ0JDMDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0I3QUZFNzIzQzY4
MjA3MDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCN0FGRTYyM0M2ODFCMDAwRTQ5Q0YzIC8qIFJlc291
cmNlTG9hZEluZm8uaCAqLzsgfTsKIAkJNUNCN0FGRTgyM0M2OUI2MTAwRTQ5Q0YzIC8qIF9XS1Jl
c291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDQjdBRkUzMjNDNjdEMzcwMEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWRJbmZvLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNUNCOTMx
MDkyNkU4NDM5QTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I5MzEw
NzI2RTg0MUNCMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMu
aCAqLzsgfTsKIAkJNUNCQzlCOEUxQzY1MkNBMDAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCQzlCODkx
QzY1MjRBNTAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oICovOyB9OwogCQk1Q0JENTk1QzIy
ODBFREY0MDAyQjIyQUEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM1RDIzODgyMjdBMTg5MjAwMEI5QkRB
IC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5tbSAqLzsgfTsKIAkJNUNEMjg2NTExRTcyMzU5OTAw
OTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRDI4NjREMUU3MjJGNDQwMDk0RkRDOCAvKiBXS0Nv
bnRlbnRSdWxlTGlzdFN0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGlj
LCApOyB9OyB9OwpAQCAtNDU1Niw2ICs0NTU3LDIzIEBACiAJCTVDQjkzMEMwMjZFMDU0MkYwMDMy
QjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJ
bXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCOTMwQzEyNkUwNTRCODAw
MzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCOTMwRjIyNkU3RUVFMDAwMzJCMUMw
IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRO
ZXR3b3JrTG9hZGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkz
MEY0MjZFODAxRTgwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5l
Y3Rpb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1Q0I5MzBGNTI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUNCOTMwRjYyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9u
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01l
YXN1cmVtZW50RGFlbW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
QjkzMEY3MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNs
aWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDQjkzMEY4MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERl
Y29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREZWNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUNCOTMwRjkyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEVuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5
MzBGQTI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50
ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1Q0I5MzBGQjI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1Q0I5MzBGQzI2RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBy
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDQjkzMEZEMjZFODAyMTYwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudERlY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREZWNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
QjkzMEZFMjZFODAyMTYwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEZG
MjZFODAyMTYwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNv
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMTA0MjZFODM3RkMwMDMy
QjFDMCAvKiBQQ01EYWVtb25FbnRyeVBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBDTURhZW1vbkVudHJ5UG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNUNCOTMxMDUyNkU4MzdGRDAwMzJCMUMwIC8qIFBDTURhZW1vbkVudHJ5UG9pbnQubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQQ01EYWVtb25FbnRyeVBvaW50
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzEwNjI2RTgzOUE5MDAzMkIx
QzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlckludGVyZmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMTA3
MjZFODQxQ0IwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFhQQ1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzEwODI2
RTg0MUNCMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFhQQ1V0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNC
QzlCODkxQzY1MjRBNTAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrRGF0YVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUNCQzlCOEIxQzY1MjU3MzAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkU5MDhGMjZE
N0ZCNjIwMDVBMkU5NSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVn
SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI2NSwxMiArOTI4MywyNCBA
QAogCQkJCTVDQjkzMEJGMjZFMDU0MkUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dENsaWVudC5oICovLAogCQkJCTVDQjkzMEMwMjZFMDU0MkYwMDMyQjFDMCAvKiBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudENsaWVudEltcGwuY3BwICovLAogCQkJCTVDQjkzMEMxMjZFMDU0QjgwMDMy
QjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuaCAqLywKKwkJCQk1Q0I5
MzBGQzI2RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9u
LmNwcCAqLywKKwkJCQk1Q0I5MzBGRTI2RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRDb25uZWN0aW9uLmggKi8sCisJCQkJNUNCOTMwRjcyNkU4MDIxNTAwMzJCMUMwIC8q
IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcCAqLywKKwkJCQk1Q0I5MzBG
NjI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQu
aCAqLywKIAkJCQk1QzgyNkQ2QTI2RDQ4MkVBMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnREYXRhYmFzZS5jcHAgKi8sCiAJCQkJNUM4MjZENjkyNkQ0ODJFQTAwOEFFQzkxIC8qIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaCAqLywKIAkJCQk1Q0JFOTA5MDI2RDdGQjdD
MDA1QTJFOTUgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uY3BwICovLAogCQkJ
CTVDQkU5MDhGMjZEN0ZCNjIwMDVBMkU5NSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVn
SW5mby5oICovLAorCQkJCTVDQjkzMEY4MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERlY29kZXIuY3BwICovLAorCQkJCTVDQjkzMEZEMjZFODAyMTYwMDMyQjFDMCAv
KiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaCAqLywKKwkJCQk1Q0I5MzBGOTI2RTgw
MjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmNwcCAqLywKKwkJ
CQk1Q0I5MzBGRjI2RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNv
ZGVyLmggKi8sCiAJCQkJNkJEMDU4NjQyMjBDRThDMjAwMEJFRDVDIC8qIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlci5jcHAgKi8sCiAJCQkJNkJEMDU4NjMyMjBDRThDMjAwMEJFRDVDIC8q
IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oICovLAorCQkJCTVDQjkzMTA2MjZFODM5
QTkwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3Bw
ICovLAorCQkJCTVDQjkzMEZBMjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXJJbnRlcmZhY2UuaCAqLywKKwkJCQk1Q0I5MzBGQjI2RTgwMjE1MDAzMkIxQzAg
LyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuY3BwICovLAorCQkJCTVDQjkz
MEY1MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94
eS5oICovLAogCQkJCTU3RkU2ODhCMjYwQUJCM0QwMEJGNDVFNCAvKiBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE5ldHdvcmtMb2FkZXIuY3BwICovLAogCQkJCTU3RkU2ODhBMjYwQUJCM0QwMEJGNDVF
NCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuaCAqLywKIAkJCQk1Qzgy
NkQ2NzI2RDQ2QjQzMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAg
Ki8sCkBAIC05MzU4LDExICs5Mzg4LDI0IEBACiAJCTVDQjkzMEYxMjZFN0VFODkwMDMyQjFDMCAv
KiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
NUNCOTMwRjQyNkU4MDFFODAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9u
Q29ubmVjdGlvbkNvY29hLm1tICovLAogCQkJCTVDQjkzMEYyMjZFN0VFRTAwMDMyQjFDMCAvKiBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbSAqLywKKwkJCQk1Q0I5
MzEwNzI2RTg0MUNCMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRp
ZXMuaCAqLywKKwkJCQk1Q0I5MzEwODI2RTg0MUNCMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRYUENVdGlsaXRpZXMubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNUNCOTMxMDMyNkU4Mzc1QjAwMzJCMUMw
IC8qIERhZW1vbiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJNUNCOTMxMDQyNkU4MzdGQzAwMzJCMUMwIC8qIFBDTURhZW1vbkVudHJ5UG9pbnQuaCAqLywK
KwkJCQk1Q0I5MzEwNTI2RTgzN0ZEMDAzMkIxQzAgLyogUENNRGFlbW9uRW50cnlQb2ludC5tbSAq
LywKKwkJCSk7CisJCQluYW1lID0gRGFlbW9uOworCQkJcGF0aCA9IENvY29hL0RhZW1vbjsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTZCRTk2OUJGMUU1NEQ0NTIwMDhCNzQ4
MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKQEAgLTEwODE4LDYgKzEwODYxLDcgQEAKIAkJQkM4MjgzNjgxNkIzNTg3
OTAwQTI3OEZFIC8qIEVudHJ5UG9pbnRVdGlsaXRpZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDQjkzMTAzMjZFODM3NUIwMDMyQjFDMCAvKiBEYWVt
b24gKi8sCiAJCQkJQkM4MjgzNkIxNkIzNTg3OTAwQTI3OEZFIC8qIFhQQ1NlcnZpY2UgKi8sCiAJ
CQkJNUNFOTEyMEYyMjkzQzI1RjAwNUJFQzc4IC8qIEF1eGlsaWFyeVByb2Nlc3NNYWluLmNwcCAq
LywKIAkJCSk7CkBAIC0xMjM2NCw2ICsxMjQwOCw3IEBACiAJCQkJNkJEMDU4NjUyMjBDRThDMjAw
MEJFRDVDIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTdGRTY4OEMyNjBBQkIzRDAwQkY0NUU0IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50
TmV0d29ya0xvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM4MjZENkIyNkQ0ODJFRjAwOEFF
QzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTVDQjkzMTA5MjZFODQzOUEwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZGOTUzNjUxOEZGNThGNTAwMURCMkVGIC8q
IFByb2Nlc3NBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUE3QzU4MTEzNkUxOUMw
MEZCNzE2NyAvKiBQcm9jZXNzTGF1bmNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2M0ZENDgy
MUVCOTRFQzAwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJz
ICovLAo=
</data>
<flag name="commit-queue"
          id="460927"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437706</attachid>
            <date>2021-09-08 21:21:04 -0700</date>
            <delta_ts>2021-09-08 22:02:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230052-20210908212103.patch</filename>
            <type>text/plain</type>
            <size>108299</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJjOTI0NmRiMDI3OTMwZDM0MjA5OWU1
Yzg4MmJiYzVjODA5ZDY2ZTAuLjU1MzZmYjAzOGRiY2I5ZmQ0NDUyYTg2NTU0ZDIxYTNiMjkzOGFi
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDktMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgZGFlbW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzAwNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oOgorCiAyMDIxLTA5LTA3ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IG9yaWdpbiBwYXJ0aXRp
b25pbmcgKHRvcC1vcmlnaW4vZnJhbWUtb3JpZ2luKSBmb3IgQnJvYWRjYXN0Q2hhbm5lbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAwM2YwZDFkMGM1NjI2ODY5Mzk2NWI3ZTkxY2EzMzNlZDc2MThiMTEyLi4xMDc5NGIy
MzE4YzkxMjVmOGIzYzU1OTZkZWZkZWJiN2U2OTlkM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
NSBAQAorMjAyMS0wOS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIEFkZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBkYWVtb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDA1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUg
aW5mcmFzdHJ1Y3R1cmUgdG8gdXNlIGEgZGFlbW9uIGluc3RlYWQgb2YgdGhlIG5ldHdvcmsgcHJv
Y2VzcyB0byBoYW5kbGUgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuCisgICAgICAgIEl0IGRvZXMg
bm90IHN0YXJ0IHVzaW5nIHRoZSBkYWVtb24geWV0LCBzbyB0aGVyZSBpcyBubyBjaGFuZ2UgaW4g
YmVoYXZpb3IuCisgICAgICAgIEkgbWFkZSBhIG5ldyBjbGFzcyBQQ006Ok1hbmFnZXJJbnRlcmZh
Y2Ugd2hpY2ggY2FuIGVpdGhlciBiZSBhIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlciBv
ciBhIFBDTTo6TWFuYWdlclByb3h5LAorICAgICAgICB3aGljaCB3b3VsZCBzZW5kIG1lc3NhZ2Vz
IHRvIHRoZSBkYWVtb24gaW5zdGVhZCBvZiBkb2luZyB0aGUgd29yayBsb2NhbGx5LgorICAgICAg
ICBJIGltcGxlbWVudGVkIHRoZSBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgcGFyYW1ldGVycyB1
c2luZyBzb21lIG9mIHRoZSBJUEMgZW5jb2RpbmcgdGVtcGxhdGVzLgorICAgICAgICBJIGhhdmUg
YW4gZW50cnkgcG9pbnQgZm9yIGFuIGV4ZWN1dGFibGUgYnV0IG5vIGV4ZWN1dGFibGUgeWV0Lgor
ICAgICAgICBJIGhhdmUgdmVyaWZpZWQgdGhhdCBFdmVudEF0dHJpYnV0aW9uIHVuaXQgdGVzdHMg
cGFzcyB3aGVuIHVzaW5nIHRoZSBkYWVtb24sIHNvIHRoZSBpbmZyYXN0cnVjdHVyZSBpcyBnb29k
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpwY21TdG9yZURpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OnByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudENvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0
aW9uOjpjb25uZWN0aW9uVG9EYWVtb24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rp
b246OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rpb246OnNlbmRXaXRoUmVw
bHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhZW1vbkNsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNs
aWVudDo6bG9hZEZyb21OZXR3b3JrKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25DbGll
bnQ6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVt
b25DbGllbnQ6OmZlYXR1cmVFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpE
YWVtb25DbGllbnQ6OmRlYnVnTW9kZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFl
bW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6ZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6RGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RGVjb2Rlcjo6b3BlcmF0b3I+Pik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6YnVm
ZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBDTTo6RW5jb2Rlcjo6ZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlBDTTo6RW5jb2Rlcjo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RW5jb2Rlcjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpFbmNvZGVyOjp0YWtlQnVm
ZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UENNOjpNZXNzYWdlSW5mbzo6dG9TdHJpbmdGb3JUZXN0aW5nOjplbmNvZGVS
ZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6bWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
OlBDTTo6aGFuZGxlUENNTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6aGFuZGxlUENN
TWVzc2FnZVdpdGhSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6ZGVjb2RlTWVzc2FnZUFu
ZFNlbmRUb01hbmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpQQ006OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpSZXBseUNhbGxl
cjw+OjpjYWxsUmVwbHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlJlcGx5Q2FsbGVyPFN0cmlu
Zz46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6c2VuZE1lc3NhZ2VXaXRoUmVw
bHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c3RvcmVVbmF0dHJpYnV0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6aGFuZGxlQXR0cmlidXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6Y2xlYXIpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6Y2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbik6
CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjptaWdyYXRlUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFu
YWdlclByb3h5Ojp0b1N0cmluZ0ZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
Q006Ok1hbmFnZXJQcm94eTo6c2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcpOgorICAgICAgICAo
V2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6OnNldFRva2VuU2lnbmF0dXJl
VVJMRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzZXRB
dHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpN
YW5hZ2VyUHJveHk6Om1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6TWFuYWdlclByb3h5OjpzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFs
dWVzRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzdGFy
dFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5h
Z2VyUHJveHk6OmRlc3Ryb3lTdG9yZUZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
clByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNv
Y29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9EYWVt
b24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OmRpY3Rpb25hcnlGcm9tTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6Q29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENV
dGlsaXRpZXMuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW06
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OmFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2Fn
ZVRvRGljdGlvbmFyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5X
ZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW46CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpkZWNvZGVTdHJpbmdUZXh0KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxTdHJpbmc+OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1v
bi9QQ01EYWVtb25FbnRyeVBvaW50Lmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6cGVlcnMpOgorICAgICAgICAoV2ViS2l0OjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6Y29ubmVjdGlvbkV2ZW50SGFuZGxlcik6Cisg
ICAgICAgIChXZWJLaXQ6OnN0YXJ0TGlzdGVuaW5nRm9yTWFjaFNlcnZpY2VDb25uZWN0aW9ucyk6
CisgICAgICAgIChXZWJLaXQ6OnJlZ2lzdGVyU2NoZWR1bGVkQWN0aXZpdHlIYW5kbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6ZW50ZXJTYW5kYm94KToKKyAgICAgICAgKFdlYktpdDo6UENNRGFlbW9u
TWFpbik6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0w
OS0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlcGxhY2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpzdGFydCB3
aXRoIGFuIGltcGxlbWVudGF0aW9uIHRoYXQgZG9lc24ndCBuZWVkIE5ldHdvcmtTZXNzaW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oIGIvU291cmNlL1dU
Ri93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAppbmRleCAyZjk2NWJhN2ZkMTA5Y2NiOGZlNGE3ZWQ4
NDRkYjIyZGU4NzkxOGYwLi4wMmVkN2FkMjE1YTkwM2E5ZDA0MGQ0ODliZDBhNDViYTdkZGY1YTY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmgKQEAgLTM2LDYgKzM2LDcgQEAKIE9TX09C
SkVDVF9ERUNMKHhwY19vYmplY3QpOwogdHlwZWRlZiB4cGNfb2JqZWN0X3QgeHBjX2Nvbm5lY3Rp
b25fdDsKIHR5cGVkZWYgeHBjX29iamVjdF90IHhwY19lbmRwb2ludF90OwordHlwZWRlZiB4cGNf
b2JqZWN0X3QgeHBjX2FjdGl2aXR5X3Q7CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgX3hw
Y19vYmplY3RfdmFsaWRhdGUoeHBjX29iamVjdF90IG9iamVjdCkKIHsKQEAgLTUwLDEyICs1MSwy
MyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIF94cGNfb2JqZWN0X3ZhbGlkYXRlKHhwY19v
YmplY3RfdCBvYmplY3QpCiB0eXBlZGVmIHZvaWQqIHhwY19vYmplY3RfdDsKIHR5cGVkZWYgdm9p
ZCogeHBjX2Nvbm5lY3Rpb25fdDsKIHR5cGVkZWYgdm9pZCogeHBjX2VuZHBvaW50X3Q7Cit0eXBl
ZGVmIHZvaWQqIHhwY19hY3Rpdml0eV90OwogCiAjZGVmaW5lIFhQQ19HTE9CQUxfT0JKRUNUKG9i
amVjdCkgKCYob2JqZWN0KSkKIAogI2VuZGlmIC8vIE9TX09CSkVDVF9VU0VfT0JKQwogCitlbnVt
IHsKKyAgICBYUENfQUNUSVZJVFlfU1RBVEVfQ0hFQ0tfSU4sCisgICAgWFBDX0FDVElWSVRZX1NU
QVRFX1dBSVQsCisgICAgWFBDX0FDVElWSVRZX1NUQVRFX1JVTiwKKyAgICBYUENfQUNUSVZJVFlf
U1RBVEVfREVGRVIsCisgICAgWFBDX0FDVElWSVRZX1NUQVRFX0NPTlRJTlVFLAorICAgIFhQQ19B
Q1RJVklUWV9TVEFURV9ET05FLAorfTsKK3R5cGVkZWYgbG9uZyB4cGNfYWN0aXZpdHlfc3RhdGVf
dDsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IF94cGNfdHlwZV9zKiB4cGNfdHlwZV90OworZXh0ZXJu
ICJDIiBjb25zdCB4cGNfb2JqZWN0X3QgWFBDX0FDVElWSVRZX0NIRUNLX0lOOwogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19oYXNfYXR0cmlidXRlKG5vZXNjYXBlKQogI2RlZmluZSBY
UENfTk9FU0NBUEUgX19hdHRyaWJ1dGVfXygoX19ub2VzY2FwZV9fKSkKQEAgLTcxLDYgKzgzLDcg
QEAgdHlwZWRlZiB2b2lkICgqeHBjX2Nvbm5lY3Rpb25faGFuZGxlcl90KSh4cGNfY29ubmVjdGlv
bl90IGNvbm5lY3Rpb24pOwogCiAjZGVmaW5lIFhQQ19BUlJBWV9BUFBFTkQgKChzaXplX3QpKC0x
KSkKICNkZWZpbmUgWFBDX0NPTk5FQ1RJT05fTUFDSF9TRVJWSUNFX0xJU1RFTkVSICgxIDw8IDAp
CisjZGVmaW5lIFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVEVSUlVQVEVEIFhQQ19HTE9CQUxfT0JK
RUNUKF94cGNfZXJyb3JfY29ubmVjdGlvbl9pbnRlcnJ1cHRlZCkKICNkZWZpbmUgWFBDX0VSUk9S
X0NPTk5FQ1RJT05fSU5WQUxJRCBYUENfR0xPQkFMX09CSkVDVChfeHBjX2Vycm9yX2Nvbm5lY3Rp
b25faW52YWxpZCkKICNkZWZpbmUgWFBDX0VSUk9SX0tFWV9ERVNDUklQVElPTiBfeHBjX2Vycm9y
X2tleV9kZXNjcmlwdGlvbgogI2RlZmluZSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQg
WFBDX0dMT0JBTF9PQkpFQ1QoX3hwY19lcnJvcl90ZXJtaW5hdGlvbl9pbW1pbmVudCkKQEAgLTg0
LDYgKzk3LDEzIEBAIHR5cGVkZWYgdm9pZCAoKnhwY19jb25uZWN0aW9uX2hhbmRsZXJfdCkoeHBj
X2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKTsKIAogZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBf
eHBjX2Vycm9yX2tleV9kZXNjcmlwdGlvbjsKIAorZXh0ZXJuICJDIiB2b2lkIHhwY19jb25uZWN0
aW9uX2FjdGl2YXRlKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbik7CitleHRlcm4gIkMiIGNv
bnN0IHZvaWQqIHhwY19kaWN0aW9uYXJ5X2dldF9kYXRhKHhwY19vYmplY3RfdCB4ZGljdCwgY29u
c3QgY2hhcioga2V5LCBzaXplX3QqIGxlbmd0aCk7CitleHRlcm4gIkMiIHhwY19vYmplY3RfdCB4
cGNfZGF0YV9jcmVhdGVfd2l0aF9kaXNwYXRjaF9kYXRhKGRpc3BhdGNoX2RhdGFfdCBkZGF0YSk7
CitleHRlcm4gIkMiIHhwY19hY3Rpdml0eV9zdGF0ZV90IHhwY19hY3Rpdml0eV9nZXRfc3RhdGUo
eHBjX2FjdGl2aXR5X3QgYWN0aXZpdHkpOworZXh0ZXJuICJDIiB4cGNfb2JqZWN0X3QgeHBjX2Fj
dGl2aXR5X2NvcHlfY3JpdGVyaWEoeHBjX2FjdGl2aXR5X3QgYWN0aXZpdHkpOworZXh0ZXJuICJD
IiB2b2lkIHhwY19hY3Rpdml0eV9zZXRfY3JpdGVyaWEoeHBjX2FjdGl2aXR5X3QgYWN0aXZpdHks
IHhwY19vYmplY3RfdCBjcml0ZXJpYSk7CisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpAQCAt
OTEsNiArMTExLDkgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBfeHBjX2Vycm9yX2tleV9k
ZXNjcmlwdGlvbjsKICNpbmNsdWRlIDx4cGMvcHJpdmF0ZS5oPgogI2Vsc2UKIAorZXh0ZXJuICJD
IiBjb25zdCBjaGFyICogY29uc3QgWFBDX0FDVElWSVRZX1JBTkRPTV9JTklUSUFMX0RFTEFZOwor
ZXh0ZXJuICJDIiBjb25zdCBjaGFyICogY29uc3QgWFBDX0FDVElWSVRZX1JFUVVJUkVfTkVUV09S
S19DT05ORUNUSVZJVFk7CisKICNpZiBPU19PQkpFQ1RfVVNFX09CSkMKIE9TX09CSkVDVF9ERUNM
KG9zX3RyYW5zYWN0aW9uKTsKICNlbHNlCkBAIC0xMDgsNiArMTMxLDcgQEAgZW51bSB7CiAKIFdU
Rl9FWFRFUk5fQ19CRUdJTgogCitleHRlcm4gY29uc3Qgc3RydWN0IF94cGNfZGljdGlvbmFyeV9z
IF94cGNfZXJyb3JfY29ubmVjdGlvbl9pbnRlcnJ1cHRlZDsKIGV4dGVybiBjb25zdCBzdHJ1Y3Qg
X3hwY19kaWN0aW9uYXJ5X3MgX3hwY19lcnJvcl9jb25uZWN0aW9uX2ludmFsaWQ7CiBleHRlcm4g
Y29uc3Qgc3RydWN0IF94cGNfZGljdGlvbmFyeV9zIF94cGNfZXJyb3JfdGVybWluYXRpb25faW1t
aW5lbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwCmluZGV4IGYxYjE5OTAyZTFhNGVhMDVhZWMyMWRhYjcyN2Y4YjhhZWUwOTI5
OTkuLjI5YmFiOWEyOTM5OWQxNjI0OWMxMjk2ZTY4YWFmNzc4ZjMzMGExNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiUGx1Z2luUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCIKICNp
bmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3Bw
CmluZGV4IDU0M2NhYjEwMGJjN2JjOTlmNTQwZjM5NGJmZjcyM2ZiY2NkYWViM2EuLmRmZGU3OGRh
NjFkOWJmYThhM2M1YTRjMWM4Y2E5N2EwMmUzNTNmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiUGluZ0xvYWQuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVu
dEltcGwuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCIKKyNp
bmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCkBAIC05MiwxMSArOTMsMjAgQEAgc3RhdGljIFN0cmlu
ZyBwY21TdG9yZURpcmVjdG9yeShjb25zdCBOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
U3RyaW5nJiByZXMKICAgICByZXR1cm4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsK
IH0KIAorc3RhdGljIFVuaXF1ZVJlZjxQQ006Ok1hbmFnZXJJbnRlcmZhY2U+IG1hbmFnZXJPclBy
b3h5KE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKK3sKKyAgICAvLyBGSVhNRTogVHVybiB0aGlzIG9uIGFuZCByZW1vdmUgTWFuYWdlcklu
dGVyZmFjZSBvbmNlIHJkYXI6Ly84MDcwMTA5OCBpcyBjbG9zZWQuCisgICAgY29uc3RleHByIGJv
b2wgdXNlUENNRGFlbW9uID0gZmFsc2U7CisKKyAgICBpZiAodXNlUENNRGFlbW9uKQorICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxQQ006Ok1hbmFnZXJQcm94eT4oKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZVJlZjxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KG1ha2VVbmlxdWVS
ZWY8UENNOjpDbGllbnRJbXBsPihuZXR3b3JrU2Vzc2lvbiwgbmV0d29ya1Byb2Nlc3MpLCBwY21T
dG9yZURpcmVjdG9yeShuZXR3b3JrU2Vzc2lvbiwgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycy5kaXJlY3RvcnksIHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BhcmFtZXRlcnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSk7
Cit9CisKIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0
d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQogICAgIDogbV9zZXNzaW9uSUQocGFyYW1ldGVycy5zZXNzaW9uSUQpCiAgICAgLCBt
X25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgLCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVj
dG9yeShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnByaXZhdGVD
bGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSkKICAgICAsIG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0
ZXJzLmRpcmVjdG9yeSkKICAgICAsIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyhwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
LnNob3VsZEluY2x1ZGVMb2NhbGhvc3QgPyBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgOiBT
aG91bGRJbmNsdWRlTG9jYWxob3N0OjpObykKICAgICAsIG1fZW5hYmxlUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0
ZXJzLmVuYWJsZURlYnVnTW9kZSA/IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01v
ZGU6OlllcyA6IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6Ok5vKQpAQCAt
MTA3LDYgKzExNyw3IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAgICAgLCBtX2ZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUpCiAgICAgLCBtX3N0
YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbihwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzLnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbikKICNlbmRpZgorICAgICwg
bV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudChtYW5hZ2VyT3JQcm94eSgqdGhpcywgbmV0d29ya1By
b2Nlc3MsIHBhcmFtZXRlcnMpKQogICAgICwgbV9icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkobWFr
ZVVuaXF1ZVJlZjxOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PigpKQogICAgICwgbV90
ZXN0U3BlZWRNdWx0aXBsaWVyKHBhcmFtZXRlcnMudGVzdFNwZWVkTXVsdGlwbGllcikKICAgICAs
IG1fYWxsb3dzU2VydmVyUHJlY29ubmVjdChwYXJhbWV0ZXJzLmFsbG93c1NlcnZlclByZWNvbm5l
Y3QpCkBAIC0xNDEsNyArMTUyLDYgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5l
dHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5h
YmxlZCk7CiAjZW5kaWYKLSAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gbWFrZVVuaXF1
ZTxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KG1ha2VVbmlxdWVSZWY8UENNOjpDbGll
bnRJbXBsPigqdGhpcywgbmV0d29ya1Byb2Nlc3MpLCBwY21TdG9yZURpcmVjdG9yeSgqdGhpcywg
cGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5kaXJlY3RvcnksIHBh
cmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMucHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSk7CiB9CiAKIE5ldHdvcmtTZXNzaW9uOjp+TmV0d29y
a1Nlc3Npb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oCmluZGV4IDcwYTFiNDkxYjI0M2FhZWZiM2QyN2JkY2FkMDBhNjA1ZTQyNGY1MGYuLmQ4YWFi
M2RiYTQ5Yjc2N2YzZWYwOTk0YmYyY2JlOTUxZmE0MTY3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJlZmV0Y2hDYWNoZS5oIgorI2luY2x1
ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oIgogI2luY2x1ZGUg
IlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgpAQCAt
NjAsNyArNjEsNiBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjsKIGNsYXNzIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk7CiBjbGFzcyBO
ZXR3b3JrU29ja2V0Q2hhbm5lbDsKLWNsYXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
cjsKIGNsYXNzIFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTsKIGNsYXNzIFdlYlNvY2tldFRhc2s7CkBAIC0xNjcsNyArMTY3LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICBOZXR3b3JrTG9hZFNjaGVkdWxlciYgbmV0d29ya0xv
YWRTY2hlZHVsZXIoKTsKLSAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXImIHByaXZh
dGVDbGlja01lYXN1cmVtZW50KCkgeyByZXR1cm4gKm1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7
IH0KKyAgICBQQ006Ok1hbmFnZXJJbnRlcmZhY2UmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkg
eyByZXR1cm4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5nZXQoKTsgfQogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhJiBhcHBQcml2YWN5UmVw
b3J0VGVzdGluZ0RhdGEoKSB7IHJldHVybiBtX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTsg
fQpAQCAtMTkyLDcgKzE5Miw2IEBAIHByb3RlY3RlZDoKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+
IG1fbmV0d29ya1Byb2Nlc3M7CiAgICAgV2Vha0hhc2hTZXQ8TmV0d29ya0RhdGFUYXNrPiBtX2Rh
dGFUYXNrU2V0OwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgU3Ry
aW5nIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0cmlu
ZyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CiAgICAgUmVmUHRyPFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgIFNo
b3VsZEluY2x1ZGVMb2NhbGhvc3QgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzIHsgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6WWVzIH07CkBAIC0yMDgsNyAr
MjA3LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+IG1fdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZzsKICNlbmRpZgogICAg
IGJvb2wgbV9pc1N0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4gbV9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDsKKyAgICBVbmlxdWVSZWY8UENNOjpNYW5hZ2VySW50ZXJmYWNlPiBtX3By
aXZhdGVDbGlja01lYXN1cmVtZW50OwogCiAgICAgSGFzaFNldDxSZWY8TmV0d29ya1Jlc291cmNl
TG9hZGVyPj4gbV9rZXB0QWxpdmVMb2FkczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU2M2EwMzYwZGI1MzE5ODFmZTY3NGIyNjNhZjQwMzIzMWQ5MTk4NWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCAr
MSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00gewor
CisjaWYgIVBMQVRGT1JNKENPQ09BKQorCitDb25uZWN0aW9uIENvbm5lY3Rpb246OmNvbm5lY3Rp
b25Ub0RhZW1vbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9Owor
fQorCit2b2lkIENvbm5lY3Rpb246OnNlbmQoTWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0
aFJlcGx5KE1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEVuY29kZWRNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30KKworI2VuZGlmCisK
K30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29u
bmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmM2E5MTAyMWNiZTQwMjA3ZTUyYTI1YmNmNTA1OTc2Yzhm
YjZiYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5o
CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9PU09i
amVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKworZW51bSBjbGFzcyBNZXNz
YWdlVHlwZSA6IHVpbnQ4X3Q7Cit1c2luZyBFbmNvZGVkTWVzc2FnZSA9IFZlY3Rvcjx1aW50OF90
PjsKKworY2xhc3MgQ29ubmVjdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIENvbm5lY3Rpb24g
Y29ubmVjdGlvblRvRGFlbW9uKCk7CisKKyAgICB2b2lkIHNlbmQoTWVzc2FnZVR5cGUsIEVuY29k
ZWRNZXNzYWdlJiYpOworICAgIHZvaWQgc2VuZFdpdGhSZXBseShNZXNzYWdlVHlwZSwgRW5jb2Rl
ZE1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4mJik7
CisKK3ByaXZhdGU6CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgQ29ubmVjdGlvbihPU09iamVj
dFB0cjx4cGNfY29ubmVjdGlvbl90PiYmKTsKKworICAgIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0
aW9uX3Q+IG1fY29ubmVjdGlvbjsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgUENNCisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
ZW1vbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zNzNlNTFiZTcwZjBjNmU5MjM0ODRjYjZmZGRlNTk1OGJmMmViNThkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAKQEAgLTAsMCAr
MSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7
CisKK3ZvaWQgRGFlbW9uQ2xpZW50Ojpicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3Nh
Z2VMZXZlbCwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiti
b29sIERhZW1vbkNsaWVudDo6ZmVhdHVyZUVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIERhZW1vbkNsaWVudDo6ZGVidWdNb2RlRW5hYmxlZCgpIGNvbnN0Cit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREYWVtb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGll
bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hZTc3ODIxMjQyNmQ4OTcxNmMxYmEzNmQ0NTBhY2Q1ZDM2ZDdmNjY5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5oCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlBy
aXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFt
ZXNwYWNlIFBDTSB7CisKK2NsYXNzIERhZW1vbkNsaWVudCA6IHB1YmxpYyBDbGllbnQsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxEYWVtb25DbGllbnQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKKyAgICB2b2lkIGJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKEpTQzo6TWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGZlYXR1cmVFbmFibGVkKCkgY29uc3Qg
ZmluYWw7CisgICAgYm9vbCBkZWJ1Z01vZGVFbmFibGVkKCkgY29uc3QgZmluYWw7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGEyMGU4YzJmY2NhOTljMTA4NjI1NDA3YTFmMmMzY2M0NTIzM2U0
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmNwcApAQCAt
MCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworbmFtZXNwYWNlIFBDTSB7CisKK2Jvb2wgRGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRv
Q29udGFpbkJ5dGVzKHNpemVfdCBieXRlcykgY29uc3QKK3sKKyAgICByZXR1cm4gYnl0ZXMgPD0g
bV9idWZmZXIuc2l6ZSgpIC0gbV9idWZmZXJQb3NpdGlvbjsKK30KKworYm9vbCBEZWNvZGVyOjpk
ZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCkK
K3sKKyAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW5CeXRlcyhzaXplKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1lbWNweShkYXRhLCBtX2J1ZmZlci5kYXRhKCkgKyBt
X2J1ZmZlclBvc2l0aW9uLCBzaXplKTsKKyAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemU7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4Nzc5OWUzMGVlNTMwNzcyYzlk
MTQ3Y2MzODdmNTVmNWI4YzM1NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGVjb2Rlci5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitu
YW1lc3BhY2UgUENNIHsKKworY2xhc3MgRGVjb2RlciB7CitwdWJsaWM6CisgICAgRGVjb2RlcihW
ZWN0b3I8dWludDhfdD4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZm
ZXIpKSB7IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIERlY29kZXImIG9w
ZXJhdG9yPj4oc3RkOjpvcHRpb25hbDxUPiYgdCkKKyAgICB7CisgICAgICAgIHQgPSBJUEM6OkFy
Z3VtZW50Q29kZXI8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxU
Pj4sIHZvaWQ+OjpkZWNvZGUoKnRoaXMpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBi
dWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVfdCBudW1FbGVtZW50cykgY29uc3QKKyAg
ICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZSwg
IlR5cGUgVCBtdXN0IGhhdmUgYSBmaXhlZCwga25vd24gZW5jb2RlZCBzaXplISIpOworCisgICAg
ICAgIGlmIChudW1FbGVtZW50cyA+IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkg
LyBzaXplb2YoVCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJu
IGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW5CeXRlcyhudW1FbGVtZW50cyAqIHNpemVvZihU
KSk7CisgICAgfQorCisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5n
dGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7CisgICAgCitw
cml2YXRlOgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hU
b0NvbnRhaW5CeXRlcyhzaXplX3QpIGNvbnN0OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVm
ZmVyOworICAgIHNpemVfdCBtX2J1ZmZlclBvc2l0aW9uIHsgMCB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEVuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmI5OGIxNWU1MTBlNTk5Mzc0M2ZlN2U1NjNlZjAxZGQ3OGI5MjRmZjUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5jcHAKQEAgLTAsMCArMSw0
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVz
cGFjZSBQQ00geworCit2b2lkIEVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90KQoreworICAgIG1fYnVmZmVyLmFwcGVu
ZChkYXRhLCBzaXplKTsKK30KKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRFbmNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThhODNjNjU5MjVkMjYyYWRkMjBi
YTVhOGIxOTAzNjVlNTkzMmNiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRFbmNvZGVyLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25h
bWVzcGFjZSBQQ00geworCitjbGFzcyBFbmNvZGVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorICAgIEVuY29kZXImIG9wZXJhdG9yPDwoVCYmIHQpCisgICAgeworICAgICAg
ICBJUEM6OkFyZ3VtZW50Q29kZXI8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZl
cmVuY2VfdDxUPj4+OjplbmNvZGUoKnRoaXMsIHN0ZDo6Zm9yd2FyZDxUPih0KSk7CisgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBcmcsIHR5cGVu
YW1lLi4uIEFyZ3M+CisgICAgdm9pZCBlbmNvZGUoQXJnJiYgYXJnLCBBcmdzJiYuLi4gYXJncykK
KyAgICB7CisgICAgICAgICp0aGlzIDw8IHN0ZDo6Zm9yd2FyZDxBcmc+KGFyZyk7CisgICAgICAg
IGVuY29kZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIH0KKyAgICB2b2lkIGVu
Y29kZSgpIHsgfQorCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VCdWZmZXIoKSB7IHJldHVybiBz
dGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCB7IH0pOyB9CisKKyAgICB2b2lkIGVuY29kZUZpeGVkTGVu
Z3RoRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50KTsKKworcHJp
dmF0ZToKKyAgICBWZWN0b3I8dWludDhfdD4gbV9idWZmZXI7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaAppbmRleCBiYjgy
MjJjMmM5ZGJiMDc3MmJkMzllNzlmNDQzMDVmNDcwYmU5ZjU1Li4yNmU3YzU1OTE0NDdmZWJmNTc4
NTFlYWU1ZDJlMGY0NmQ5YmVlMDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKQEAgLTI4LDEzICsyOCw5
IEBACiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3MuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudC5oIgor
I2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJs
ZURvbWFpbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4K
LSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CiAjaW5jbHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgpAQCAtNDIsMzggKzM4LDMwIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1lbnVtIGNs
YXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIDogYm9vbCB7IFVuYXR0
cmlidXRlZCwgQXR0cmlidXRlZCB9OwotCi1jbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyPiB7CitjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIgOiBwdWJsaWMgUENN
OjpNYW5hZ2VySW50ZXJmYWNlLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAKLSAgICB1c2luZyBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSA9IFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZTsKLSAgICB1c2lu
ZyBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7Ci0gICAgdXNpbmcgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKLSAgICB1c2luZyBSZWdp
c3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIFNv
dXJjZVNpdGUgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZTsK
LQogICAgIGV4cGxpY2l0IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcihVbmlxdWVSZWY8
UENNOjpDbGllbnQ+JiYsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSk7CiAgICAgflBy
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcigpOwogCi0gICAgdm9pZCBzdG9yZVVuYXR0cmli
dXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmKTsKLSAgICB2b2lkIGhhbmRsZUF0dHJpYnV0
aW9uKEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZGlyZWN0RG9tYWluLCBjb25zdCBVUkwmIGZpcnN0
UGFydHlVUkwpOwotICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
LSAgICB2b2lkIGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgbWlncmF0ZVByaXZh
dGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UoUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpOworICAgIHZvaWQg
c3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJikgZmluYWw7CisgICAg
dm9pZCBoYW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYsIGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWRpcmVjdERvbWFp
biwgY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJMKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBjbGVhckZvclJlZ2lzdHJh
YmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZy
b21MZWdhY3lTdG9yYWdlKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UeXBlKSBmaW5hbDsKIAotICAgIHZvaWQgdG9TdHJpbmdGb3JU
ZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJikgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhib29sIHZhbHVlKSB7IG1faXNSdW5uaW5nVGVz
dCA9IHZhbHVlOyB9Ci0gICAgdm9pZCBzZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJM
JiYpOwotICAgIHZvaWQgc2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFVSTCYmKTsKLSAg
ICB2b2lkIHNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJMJiYgc291cmNlVVJM
LCBVUkwmJiBkZXN0aW5hdGlvblVSTCk7Ci0gICAgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVkQXNF
eHBpcmVkRm9yVGVzdGluZygpOwotICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7Ci0gICAgdm9pZCBzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcoYm9vbCB2YWx1
ZSkgeyBtX2lzUnVubmluZ0VwaGVtZXJhbE1lYXN1cmVtZW50VGVzdCA9IHZhbHVlOyB9Ci0gICAg
dm9pZCBzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFN0cmluZyYmIHVubGlu
a2FibGVUb2tlbiwgU3RyaW5nJiYgc2VjcmV0VG9rZW4sIFN0cmluZyYmIHNpZ25hdHVyZSwgU3Ry
aW5nJiYga2V5SUQpOwotICAgIHZvaWQgc3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZygp
OwotICAgIHZvaWQgZGVzdHJveVN0b3JlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgdG9TdHJpbmdGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nKT4mJikgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRPdmVycmlkZVRpbWVyRm9y
VGVzdGluZyhib29sIHZhbHVlKSBmaW5hbCB7IG1faXNSdW5uaW5nVGVzdCA9IHZhbHVlOyB9Cisg
ICAgdm9pZCBzZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJMJiYpIGZpbmFsOworICAg
IHZvaWQgc2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFVSTCYmKSBmaW5hbDsKKyAgICB2
b2lkIHNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJMJiYgc291cmNlVVJMLCBV
UkwmJiBkZXN0aW5hdGlvblVSTCkgZmluYWw7CisgICAgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVk
QXNFeHBpcmVkRm9yVGVzdGluZygpIGZpbmFsOworICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRl
c3RpbmcoYm9vbCB2YWx1ZSkgZmluYWwgeyBtX2lzUnVubmluZ0VwaGVtZXJhbE1lYXN1cmVtZW50
VGVzdCA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JU
ZXN0aW5nKFN0cmluZyYmIHVubGlua2FibGVUb2tlbiwgU3RyaW5nJiYgc2VjcmV0VG9rZW4sIFN0
cmluZyYmIHNpZ25hdHVyZSwgU3RyaW5nJiYga2V5SUQpIGZpbmFsOworICAgIHZvaWQgc3RhcnRU
aW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZygpIGZpbmFsOworICAgIHZvaWQgZGVzdHJveVN0b3Jl
Rm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogCiBwcml2YXRl
OgogICAgIFBDTTo6U3RvcmUmIHN0b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlckludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVy
ZmFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcyYWZkOWU0NTBmODVhN2ZhNDE0OWFhNjgzYThjMzM5Mjhl
Nzk0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJm
YWNlLmNwcApAQCAtMCwwICsxLDI1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaCIK
KworI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
ZW1vbkNsaWVudC5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5o
IgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5oIgorI2luY2x1ZGUg
IlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworbmFtZXNwYWNlIFBDTSB7CisKK25hbWVzcGFjZSBNZXNzYWdlSW5mbyB7CisKKyNkZWZpbmUg
RlVOQ1RJT04obWYpIHN0cnVjdCBtZiB7IHN0YXRpYyBjb25zdGV4cHIgYXV0byBNZW1iZXJGdW5j
dGlvbiA9ICZQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6Om1mOworI2RlZmluZSBBUkdV
TUVOVFMoLi4uKSB1c2luZyBBcmdzVHVwbGUgPSBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPjsKKyNk
ZWZpbmUgUkVQTFkoLi4uKSB1c2luZyBSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoX19W
QV9BUkdTX18pPjsgXAorICAgIHN0YXRpYyBQQ006OkVuY29kZWRNZXNzYWdlIGVuY29kZVJlcGx5
KF9fVkFfQVJHU19fKTsKKyNkZWZpbmUgRU5EIH07CisKK0ZVTkNUSU9OKHN0b3JlVW5hdHRyaWJ1
dGVkKQorQVJHVU1FTlRTKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50KQorRU5ECisK
K0ZVTkNUSU9OKGhhbmRsZUF0dHJpYnV0aW9uKQorQVJHVU1FTlRTKFByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlcjo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgVVJMLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiwgVVJMKQorRU5ECisKK0ZVTkNUSU9OKGNsZWFyKQorQVJHVU1FTlRTKCkK
K1JFUExZKCkKK0VORAorCitGVU5DVElPTihjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKQorQVJH
VU1FTlRTKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKQorUkVQTFkoKQorRU5ECisKK0ZVTkNU
SU9OKG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKQorQVJH
VU1FTlRTKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHlwZSkKK0VORAorCitGVU5DVElPTih0b1N0cmluZ0ZvclRlc3Rp
bmcpCitBUkdVTUVOVFMoKQorUkVQTFkoU3RyaW5nKQorRU5ECisKK0ZVTkNUSU9OKHNldE92ZXJy
aWRlVGltZXJGb3JUZXN0aW5nKQorQVJHVU1FTlRTKGJvb2wpCitFTkQKKworRlVOQ1RJT04oc2V0
VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKQorQVJHVU1FTlRTKFVSTCkKK0VORAorCitGVU5D
VElPTihzZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcpCitBUkdVTUVOVFMoVVJMKQorRU5E
CisKK0ZVTkNUSU9OKHNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcpCitBUkdVTUVO
VFMoVVJMLCBVUkwpCitFTkQKKworRlVOQ1RJT04obWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJl
ZEZvclRlc3RpbmcpCitBUkdVTUVOVFMoKQorRU5ECisKK0ZVTkNUSU9OKG1hcmtBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZykKK0FSR1VNRU5UUygp
CitSRVBMWSgpCitFTkQKKworRlVOQ1RJT04oc2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0
aW5nKQorQVJHVU1FTlRTKGJvb2wpCitFTkQKKworRlVOQ1RJT04oc2V0UENNRnJhdWRQcmV2ZW50
aW9uVmFsdWVzRm9yVGVzdGluZykKK0FSR1VNRU5UUyhTdHJpbmcsIFN0cmluZywgU3RyaW5nLCBT
dHJpbmcpCitFTkQKKworRlVOQ1RJT04oc3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZykK
K0FSR1VNRU5UUygpCitFTkQKKworRlVOQ1RJT04oZGVzdHJveVN0b3JlRm9yVGVzdGluZykKK0FS
R1VNRU5UUygpCitSRVBMWSgpCitFTkQKKworI3VuZGVmIEZVTkNUSU9OCisjdW5kZWYgQVJHVU1F
TlRTCisjdW5kZWYgUkVQTFkKKyN1bmRlZiBFTkQKKworI2RlZmluZSBFTVBUWV9SRVBMWShtZikg
UENNOjpFbmNvZGVkTWVzc2FnZSBtZjo6ZW5jb2RlUmVwbHkoKSB7IHJldHVybiB7IH07IH0KK0VN
UFRZX1JFUExZKGNsZWFyKTsKK0VNUFRZX1JFUExZKGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4p
OworRU1QVFlfUkVQTFkobWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4
cGlyZWRGb3JUZXN0aW5nKTsKK0VNUFRZX1JFUExZKGRlc3Ryb3lTdG9yZUZvclRlc3RpbmcpOwor
I3VuZGVmIEVNUFRZX1JFUExZCisKK1BDTTo6RW5jb2RlZE1lc3NhZ2UgdG9TdHJpbmdGb3JUZXN0
aW5nOjplbmNvZGVSZXBseShTdHJpbmcgcmVwbHkpCit7CisgICAgUENNOjpFbmNvZGVyIGVuY29k
ZXI7CisgICAgZW5jb2RlciA8PCByZXBseTsKKyAgICByZXR1cm4gZW5jb2Rlci50YWtlQnVmZmVy
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VJbmZvCisKK2Jvb2wgbWVzc2FnZVR5cGVT
ZW5kc1JlcGx5KE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlKQoreworICAgIHN3aXRjaCAobWVzc2Fn
ZVR5cGUpIHsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTdG9yZVVuYXR0cmlidXRlZDoKKyAgICBj
YXNlIE1lc3NhZ2VUeXBlOjpIYW5kbGVBdHRyaWJ1dGlvbjoKKyAgICBjYXNlIE1lc3NhZ2VUeXBl
OjpNaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZToKKyAgICBj
YXNlIE1lc3NhZ2VUeXBlOjpTZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZzoKKyAgICBjYXNlIE1l
c3NhZ2VUeXBlOjpTZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNz
YWdlVHlwZTo6U2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2Fn
ZVR5cGU6OlNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNz
YWdlVHlwZTo6TWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3Rpbmc6CisgICAgY2Fz
ZSBNZXNzYWdlVHlwZTo6U2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nOgorICAgIGNh
c2UgTWVzc2FnZVR5cGU6OlNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3Rpbmc6Cisg
ICAgY2FzZSBNZXNzYWdlVHlwZTo6U3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZzoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgTWVzc2FnZVR5cGU6Ok1hcmtBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZzoKKyAgICBjYXNlIE1l
c3NhZ2VUeXBlOjpEZXN0cm95U3RvcmVGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6
OlRvU3RyaW5nRm9yVGVzdGluZzoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpDbGVhcjoKKyAgICBj
YXNlIE1lc3NhZ2VUeXBlOjpDbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluOgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitzdGF0aWMgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyJiBkYWVtb25N
YW5hZ2VyKCkKK3sKKyAgICAvLyBGSVhNRTogR2l2ZSB0aGUgbWFuYWdlciBhIHZhbGlkIHN0b3Jh
Z2UgZGlyZWN0b3J5LgorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXI+IGluc3RhbmNlKG1ha2VVbmlxdWVSZWY8UENNOjpEYWVtb25DbGllbnQ+
KCksIFN0cmluZygpKTsKKyAgICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEluZm8+Cit2b2lkIGhhbmRsZVBDTU1lc3NhZ2UoUENNOjpFbmNvZGVkTWVzc2Fn
ZSYmIGVuY29kZWRNZXNzYWdlKQoreworICAgIFBDTTo6RGVjb2RlciBkZWNvZGVyKFdURk1vdmUo
ZW5jb2RlZE1lc3NhZ2UpKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgSW5mbzo6QXJn
c1R1cGxlPiBhcmd1bWVudHM7CisgICAgZGVjb2RlciA+PiBhcmd1bWVudHM7CisgICAgaWYgKFVO
TElLRUxZKCFhcmd1bWVudHMpKQorICAgICAgICByZXR1cm47CisKKyAgICBJUEM6OmNhbGxNZW1i
ZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMpLCAmZGFlbW9uTWFuYWdlcigpLCBJbmZvOjpN
ZW1iZXJGdW5jdGlvbik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEluZm8+Cit2b2lkIGhhbmRs
ZVBDTU1lc3NhZ2VXaXRoUmVwbHkoUENNOjpFbmNvZGVkTWVzc2FnZSYmIGVuY29kZWRNZXNzYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBDTTo6RW5jb2RlZE1lc3NhZ2UmJik+JiYgcmVwbHlT
ZW5kZXIpCit7CisgICAgUENNOjpEZWNvZGVyIGRlY29kZXIoV1RGTW92ZShlbmNvZGVkTWVzc2Fn
ZSkpOworCisgICAgc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBJbmZvOjpBcmdzVHVwbGU+IGFyZ3Vt
ZW50czsKKyAgICBkZWNvZGVyID4+IGFyZ3VtZW50czsKKyAgICBpZiAoVU5MSUtFTFkoIWFyZ3Vt
ZW50cykpCisgICAgICAgIHJldHVybjsKKworICAgIHR5cGVuYW1lIEluZm86OlJlcGx5IGNvbXBs
ZXRpb25IYW5kbGVyIHsgW3JlcGx5U2VuZGVyID0gV1RGTW92ZShyZXBseVNlbmRlcildIChhdXRv
JiYuLi4gYXJncykgbXV0YWJsZSB7CisgICAgICAgIHJlcGx5U2VuZGVyKEluZm86OmVuY29kZVJl
cGx5KGFyZ3MuLi4pKTsKKyAgICB9fTsKKworICAgIElQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uKFdU
Rk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAmZGFlbW9uTWFu
YWdlcigpLCBJbmZvOjpNZW1iZXJGdW5jdGlvbik7Cit9CisKK3ZvaWQgZGVjb2RlTWVzc2FnZUFu
ZFNlbmRUb01hbmFnZXIoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFZlY3Rvcjx1aW50OF90PiYm
IGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYm
KT4mJiByZXBseVNlbmRlcikKK3sKKyAgICBBU1NFUlQobWVzc2FnZVR5cGVTZW5kc1JlcGx5KG1l
c3NhZ2VUeXBlKSA9PSAhIXJlcGx5U2VuZGVyKTsKKyAgICBzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7
CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpTdG9yZVVuYXR0cmlidXRlZDoKKyAgICAgICAg
aGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6c3RvcmVVbmF0dHJpYnV0ZWQ+KFdURk1vdmUo
ZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VU
eXBlOjpIYW5kbGVBdHRyaWJ1dGlvbjoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdl
SW5mbzo6aGFuZGxlQXR0cmlidXRpb24+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpDbGVhcjoKKyAgICAgICAgaGFu
ZGxlUENNTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6Y2xlYXI+KFdURk1vdmUoZW5jb2Rl
ZE1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUENNOjpNZXNzYWdlVHlwZTo6Q2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbjoKKyAgICAgICAg
aGFuZGxlUENNTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6Y2xlYXJGb3JSZWdpc3RyYWJs
ZURvbWFpbj4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSksIFdURk1vdmUocmVwbHlTZW5kZXIpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpNaWdyYXRlUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZToKKyAgICAgICAgaGFuZGxlUENNTWVz
c2FnZTxNZXNzYWdlSW5mbzo6bWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2Fj
eVN0b3JhZ2U+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpUb1N0cmluZ0ZvclRlc3Rpbmc6CisgICAgICAgIGhhbmRs
ZVBDTU1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86OnRvU3RyaW5nRm9yVGVzdGluZz4oV1RG
TW92ZShlbmNvZGVkTWVzc2FnZSksIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpTZXRPdmVycmlkZVRpbWVyRm9yVGVzdGlu
ZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6c2V0T3ZlcnJpZGVUaW1l
ckZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpTZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3Rpbmc6
CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86OnNldFRva2VuUHVibGljS2V5
VVJMRm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGlu
ZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6c2V0VG9rZW5TaWduYXR1
cmVVUkxGb3JUZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6U2V0QXR0cmlidXRpb25SZXBvcnRVUkxzRm9y
VGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6c2V0QXR0cmli
dXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6Ok1hcmtBbGxVbmF0dHJpYnV0
ZWRBc0V4cGlyZWRGb3JUZXN0aW5nOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJ
bmZvOjptYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZz4oV1RGTW92ZShlbmNv
ZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6
Ok1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGlu
ZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6bWFya0F0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nPihXVEZN
b3ZlKGVuY29kZWRNZXNzYWdlKSwgV1RGTW92ZShyZXBseVNlbmRlcikpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9y
VGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6c2V0RXBoZW1l
cmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6U2V0UENNRnJhdWRQcmV2ZW50
aW9uVmFsdWVzRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5m
bzo6c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVk
TWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlN0
YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3Rpbmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8
TWVzc2FnZUluZm86OnN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3Rpbmc+KFdURk1vdmUoZW5j
b2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBl
OjpEZXN0cm95U3RvcmVGb3JUZXN0aW5nOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdlV2l0aFJl
cGx5PE1lc3NhZ2VJbmZvOjpkZXN0cm95U3RvcmVGb3JUZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRN
ZXNzYWdlKSwgV1RGTW92ZShyZXBseVNlbmRlcikpOworICAgICAgICBicmVhazsKKyAgICB9Cit9
CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlckludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyOTJmYTlmMDk1NWIzZTAyMjQ0
NjUwMzcxZWRiNDkzOWMwNzFmYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlckludGVyZmFjZS5oCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPHd0Zi9F
bnVtVHJhaXRzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIGNsYXNzIFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIDogYm9vbCB7IFVuYXR0cmlidXRlZCwgQXR0
cmlidXRlZCB9OworCitjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI7CisKK25h
bWVzcGFjZSBQQ00geworCitjbGFzcyBNYW5hZ2VySW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5NYW5hZ2VySW50ZXJmYWNlKCkgeyB9OworCisgICAgdXNpbmcgQXR0cmlidXRpb25E
ZXN0aW5hdGlvblNpdGUgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25EZXN0aW5hdGlvblNpdGU7CisgICAgdXNpbmcgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRh
OworICAgIHVzaW5nIFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ7CisgICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBTb3VyY2VTaXRlID0gV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGU7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmVV
bmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYsIGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWRpcmVjdERvbWFp
biwgY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJMKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFy
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1pZ3JhdGVQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKFByaXZhdGVDbGlja01lYXN1cmVtZW50
JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKSA9IDA7CisKKyAgICB2
aXJ0dWFsIHZvaWQgdG9TdHJpbmdGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nKT4mJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRPdmVycmlkZVRpbWVyRm9y
VGVzdGluZyhib29sIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFRva2VuUHVibGlj
S2V5VVJMRm9yVGVzdGluZyhVUkwmJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRUb2tlblNp
Z25hdHVyZVVSTEZvclRlc3RpbmcoVVJMJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0
cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZyhVUkwmJiBzb3VyY2VVUkwsIFVSTCYmIGRlc3Rp
bmF0aW9uVVJMKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4
cGlyZWRGb3JUZXN0aW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYXJrQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEVwaGVtZXJhbE1lYXN1cmVt
ZW50Rm9yVGVzdGluZyhib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFBDTUZyYXVkUHJl
dmVudGlvblZhbHVlc0ZvclRlc3RpbmcoU3RyaW5nJiYgdW5saW5rYWJsZVRva2VuLCBTdHJpbmcm
JiBzZWNyZXRUb2tlbiwgU3RyaW5nJiYgc2lnbmF0dXJlLCBTdHJpbmcmJiBrZXlJRCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzdGFydFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nKCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95U3RvcmVGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJikgPSAwOworfTsKKworY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sVmVy
c2lvbktleSB7ICJ2ZXJzaW9uIiB9OworY29uc3RleHByIHVpbnQ2NF90IHByb3RvY29sVmVyc2lv
blZhbHVlIHsgMSB9OworCitjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xNZXNzYWdlVHlw
ZUtleSB7ICJtZXNzYWdlIHR5cGUiIH07CitlbnVtIGNsYXNzIE1lc3NhZ2VUeXBlIDogdWludDhf
dCB7CisgICAgU3RvcmVVbmF0dHJpYnV0ZWQsCisgICAgSGFuZGxlQXR0cmlidXRpb24sCisgICAg
Q2xlYXIsCisgICAgQ2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbiwKKyAgICBNaWdyYXRlUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZSwKKyAgICBUb1N0cmluZ0ZvclRlc3Rp
bmcsCisgICAgU2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcsCisgICAgU2V0VG9rZW5QdWJsaWNL
ZXlVUkxGb3JUZXN0aW5nLAorICAgIFNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZywKKyAg
ICBTZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nLAorICAgIE1hcmtBbGxVbmF0dHJp
YnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nLAorICAgIE1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZywKKyAgICBTZXRFcGhlbWVyYWxNZWFzdXJl
bWVudEZvclRlc3RpbmcsCisgICAgU2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGlu
ZywKKyAgICBTdGFydFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nLAorICAgIERlc3Ryb3lTdG9y
ZUZvclRlc3RpbmcsCit9OworCitjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xFbmNvZGVk
TWVzc2FnZUtleSB7ICJlbmNvZGVkIG1lc3NhZ2UiIH07Cit1c2luZyBFbmNvZGVkTWVzc2FnZSA9
IFZlY3Rvcjx1aW50OF90PjsKKwordm9pZCBkZWNvZGVNZXNzYWdlQW5kU2VuZFRvTWFuYWdlcihN
ZXNzYWdlVHlwZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYpOworYm9vbCBtZXNzYWdlVHlwZVNlbmRzUmVwbHko
TWVzc2FnZVR5cGUpOworCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YktpdDo6UENNOjpNZXNzYWdlVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZSwKKyAgICAgICAgV2ViS2l0OjpQQ006
Ok1lc3NhZ2VUeXBlOjpTdG9yZVVuYXR0cmlidXRlZCwKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1l
c3NhZ2VUeXBlOjpIYW5kbGVBdHRyaWJ1dGlvbiwKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3Nh
Z2VUeXBlOjpDbGVhciwKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpDbGVhckZv
clJlZ2lzdHJhYmxlRG9tYWluLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6Ok1p
Z3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlLAorICAgICAgICBX
ZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlRvU3RyaW5nRm9yVGVzdGluZywKKyAgICAgICAgV2Vi
S2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZywKKyAgICAg
ICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3Rp
bmcsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6U2V0VG9rZW5TaWduYXR1cmVV
UkxGb3JUZXN0aW5nLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlNldEF0dHJp
YnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdl
VHlwZTo6TWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3RpbmcsCisgICAgICAgIFdl
YktpdDo6UENNOjpNZXNzYWdlVHlwZTo6TWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5
cGU6OlNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZywKKyAgICAgICAgV2ViS2l0OjpQ
Q006Ok1lc3NhZ2VUeXBlOjpTZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nLAor
ICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlN0YXJ0VGltZXJJbW1lZGlhdGVseUZv
clRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6RGVzdHJveVN0b3Jl
Rm9yVGVzdGluZworICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NhZTRlNGZmNThjYjYxZjU1ZjViNTE5NWJh
NWUzZDBiYThkYmRkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyUHJveHkuY3BwCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5Lmgi
CisKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaCIKKyNpbmNsdWRlICJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVz
cGFjZSBQQ00geworCit0ZW1wbGF0ZTxNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5hbWUu
Li4gQXJncz4KK3ZvaWQgc2VuZE1lc3NhZ2UoQXJncyYmLi4uIGFyZ3MpCit7CisgICAgRW5jb2Rl
ciBlbmNvZGVyOworICAgIGVuY29kZXIuZW5jb2RlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
Lik7CisgICAgQ29ubmVjdGlvbjo6Y29ubmVjdGlvblRvRGFlbW9uKCkuc2VuZChtZXNzYWdlVHlw
ZSwgZW5jb2Rlci50YWtlQnVmZmVyKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdz
PiBzdHJ1Y3QgUmVwbHlDYWxsZXI7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjw+IHsK
KyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGVjb2RlciYmIGRlY29kZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CisgICAgfQorfTsKK3RlbXBsYXRlPD4gc3RydWN0IFJlcGx5Q2FsbGVy
PFN0cmluZz4geworICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShEZWNvZGVyJiYgZGVjb2Rlciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc3RyaW5nOworICAgICAgICBkZWNv
ZGVyID4+IHN0cmluZzsKKyAgICAgICAgaWYgKCFzdHJpbmcpCisgICAgICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZSgqc3RyaW5nKSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8TWVzc2FnZVR5cGUgbWVzc2FnZVR5
cGUsIHR5cGVuYW1lLi4uIEFyZ3MsIHR5cGVuYW1lLi4uIFJlcGx5QXJncz4KK3ZvaWQgc2VuZE1l
c3NhZ2VXaXRoUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXBseUFyZ3MuLi4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyLCBBcmdzJiYuLi4gYXJncykKK3sKKyAgICBFbmNvZGVyIGVuY29kZXI7
CisgICAgZW5jb2Rlci5lbmNvZGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICBD
b25uZWN0aW9uOjpjb25uZWN0aW9uVG9EYWVtb24oKS5zZW5kV2l0aFJlcGx5KG1lc3NhZ2VUeXBl
LCBlbmNvZGVyLnRha2VCdWZmZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIChhdXRvIHJlcGx5QnVmZmVyKSBtdXRhYmxlIHsKKyAgICAgICAgRGVj
b2RlciBkZWNvZGVyKFdURk1vdmUocmVwbHlCdWZmZXIpKTsKKyAgICAgICAgUmVwbHlDYWxsZXI8
UmVwbHlBcmdzLi4uPjo6Y2FsbFJlcGx5KFdURk1vdmUoZGVjb2RlciksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OnN0b3JlVW5h
dHRyaWJ1dGVkKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgcGNtKQoreworICAg
IHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpTdG9yZVVuYXR0cmlidXRlZD4ocGNtKTsKK30KKwor
dm9pZCBNYW5hZ2VyUHJveHk6OmhhbmRsZUF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYgdHJpZ2dlckRhdGEsIGNvbnN0
IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWRpcmVjdERv
bWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJMKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3Nh
Z2VUeXBlOjpIYW5kbGVBdHRyaWJ1dGlvbj4odHJpZ2dlckRhdGEsIHJlcXVlc3RVUkwsIHJlZGly
ZWN0RG9tYWluLCBmaXJzdFBhcnR5VVJMKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OmNsZWFy
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBz
ZW5kTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlVHlwZTo6Q2xlYXI+KFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OmNsZWFyRm9yUmVnaXN0cmFibGVE
b21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRNZXNzYWdl
V2l0aFJlcGx5PE1lc3NhZ2VUeXBlOjpDbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluPihXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgZG9tYWluKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6Om1p
Z3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50JiYgcGNtLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJp
YnV0aW9uVHlwZSB0eXBlKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpNaWdyYXRl
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZT4ocGNtLCB0eXBlKTsKK30K
Kwordm9pZCBNYW5hZ2VyUHJveHk6OnRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAgc2VuZE1l
c3NhZ2VXaXRoUmVwbHk8TWVzc2FnZVR5cGU6OlRvU3RyaW5nRm9yVGVzdGluZz4oV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6c2V0T3ZlcnJpZGVU
aW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkKK3sKKyAgICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlw
ZTo6U2V0T3ZlcnJpZGVUaW1lckZvclRlc3Rpbmc+KHZhbHVlKTsKK30KKwordm9pZCBNYW5hZ2Vy
UHJveHk6OnNldFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwmJiB1cmwpCit7CisgICAg
c2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlNldFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZz4o
dXJsKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OnNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVz
dGluZyhVUkwmJiB1cmwpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlNldFRva2Vu
U2lnbmF0dXJlVVJMRm9yVGVzdGluZz4odXJsKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OnNl
dEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJMJiYgc291cmNlVVJMLCBVUkwmJiBk
ZXN0aW5hdGlvblVSTCkKK3sKKyAgICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlwZTo6U2V0QXR0cmli
dXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZz4oc291cmNlVVJMLCBkZXN0aW5hdGlvblVSTCk7Cit9
CisKK3ZvaWQgTWFuYWdlclByb3h5OjptYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVz
dGluZygpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6Ok1hcmtBbGxVbmF0dHJpYnV0
ZWRBc0V4cGlyZWRGb3JUZXN0aW5nPigpOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6bWFya0F0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kTWVz
c2FnZVdpdGhSZXBseTxNZXNzYWdlVHlwZTo6TWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3Rp
bmcoYm9vbCB2YWx1ZSkKK3sKKyAgICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlwZTo6U2V0RXBoZW1l
cmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nPih2YWx1ZSk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5
OjpzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFN0cmluZyYmIHVubGlua2Fi
bGVUb2tlbiwgU3RyaW5nJiYgc2VjcmV0VG9rZW4sIFN0cmluZyYmIHNpZ25hdHVyZSwgU3RyaW5n
JiYga2V5SUQpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlNldFBDTUZyYXVkUHJl
dmVudGlvblZhbHVlc0ZvclRlc3Rpbmc+KHVubGlua2FibGVUb2tlbiwgc2VjcmV0VG9rZW4sIHNp
Z25hdHVyZSwga2V5SUQpOworfQorCit2b2lkIE1hbmFnZXJQcm94eTo6c3RhcnRUaW1lckltbWVk
aWF0ZWx5Rm9yVGVzdGluZygpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlN0YXJ0
VGltZXJJbW1lZGlhdGVseUZvclRlc3Rpbmc+KCk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5Ojpk
ZXN0cm95U3RvcmVGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlVHlwZTo6RGVz
dHJveVN0b3JlRm9yVGVzdGluZz4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit9
IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNkNDExOTk0YjRiMDZmMGY2YjVkOTkxNWYyZjJjZGZh
Y2E5NmU2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJv
eHkuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaCIKKyNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBD
TSB7CisKK2NsYXNzIE1hbmFnZXJQcm94eSA6IHB1YmxpYyBNYW5hZ2VySW50ZXJmYWNlIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2b2lkIHN0b3JlVW5hdHRy
aWJ1dGVkKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYpIGZpbmFsOworICAgIHZv
aWQgaGFuZGxlQXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0
dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYmIHJlZGlyZWN0RG9tYWluLCBjb25zdCBVUkwmIGZpcnN0UGFydHlV
UkwpIGZpbmFsOworICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBm
aW5hbDsKKyAgICB2b2lkIGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwor
ICAgIHZvaWQgbWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2Uo
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGUpIGZpbmFsOworCisgICAgdm9pZCB0b1N0cmluZ0ZvclRlc3Rpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lk
IHNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0VG9r
ZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTCYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFRva2Vu
U2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwmJikgZmluYWw7CisgICAgdm9pZCBzZXRBdHRyaWJ1
dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVSTCYmIHNvdXJjZVVSTCwgVVJMJiYgZGVzdGluYXRp
b25VUkwpIGZpbmFsOworICAgIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRl
c3RpbmcoKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZp
bmFsOworICAgIHZvaWQgc2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nKGJvb2wpIGZp
bmFsOworICAgIHZvaWQgc2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhTdHJp
bmcmJiB1bmxpbmthYmxlVG9rZW4sIFN0cmluZyYmIHNlY3JldFRva2VuLCBTdHJpbmcmJiBzaWdu
YXR1cmUsIFN0cmluZyYmIGtleUlEKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0VGltZXJJbW1lZGlh
dGVseUZvclRlc3RpbmcoKSBmaW5hbDsKKyAgICB2b2lkIGRlc3Ryb3lTdG9yZUZvclRlc3Rpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxYjU4NTA2NjU4YTNm
OTUzNWVlZmIxYTYwNWEyNTVkODcyNDc3MWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCkBAIC0wLDAgKzEsMTAxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKworI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRYUENVdGlsaXRpZXMuaCIKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK0Nvbm5lY3Rpb246OkNvbm5lY3Rp
b24oT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4mJiBjb25uZWN0aW9uKQorICAgIDogbV9j
b25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpIHsgfQorCitDb25uZWN0aW9uIENvbm5lY3Rp
b246OmNvbm5lY3Rpb25Ub0RhZW1vbigpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25f
dD4+IGNvbm5lY3Rpb247CisgICAgaWYgKCFjb25uZWN0aW9uLmdldCgpKSB7CisgICAgICAgIGNv
bm5lY3Rpb24uZ2V0KCkgPSBhZG9wdE9TT2JqZWN0KHhwY19jb25uZWN0aW9uX2NyZWF0ZV9tYWNo
X3NlcnZpY2UoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIsIGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIDApKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2
ZW50X2hhbmRsZXIoY29ubmVjdGlvbi5nZXQoKS5nZXQoKSwgXih4cGNfb2JqZWN0X3QgZXZlbnQp
IHsKKyAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgICAgICBp
ZiAoZXZlbnQgPT0gWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5URVJSVVBURUQpIHsKKyAgICAgICAg
ICAgICAgICAvLyBEYWVtb24gY3Jhc2hlZCwgd2Ugd2lsbCBuZWVkIHRvIG1ha2UgYSBuZXcgY29u
bmVjdGlvbiB0byBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgZGFlbW9uLgorICAgICAgICAgICAgICAg
IGNvbm5lY3Rpb24uZ2V0KCkgPSBudWxscHRyOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0pOworICAgICAgICB4cGNf
Y29ubmVjdGlvbl9hY3RpdmF0ZShjb25uZWN0aW9uLmdldCgpLmdldCgpKTsKKyAgICB9CisgICAg
cmV0dXJuIENvbm5lY3Rpb24oT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4oY29ubmVjdGlv
bi5nZXQoKSkpOworfQorCitzdGF0aWMgT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiBkaWN0aW9u
YXJ5RnJvbU1lc3NhZ2UoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYg
bWVzc2FnZSkKK3sKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0
aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgYWRkVmVyc2lvbkFuZEVu
Y29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KFdURk1vdmUobWVzc2FnZSksIGRpY3Rpb25hcnkuZ2V0
KCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFyeS5nZXQoKSwgcHJv
dG9jb2xNZXNzYWdlVHlwZUtleSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1lc3NhZ2VUeXBlKSk7
CisgICAgcmV0dXJuIGRpY3Rpb25hcnk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6c2VuZChNZXNz
YWdlVHlwZSBtZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdlKQoreworICAgIGlm
ICghbV9jb25uZWN0aW9uKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKG1fY29u
bmVjdGlvbi5nZXQoKSwgZGljdGlvbmFyeUZyb21NZXNzYWdlKG1lc3NhZ2VUeXBlLCBXVEZNb3Zl
KG1lc3NhZ2UpKS5nZXQoKSk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseShN
ZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmICghbV9jb25uZWN0aW9uKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICB9CisKKyAgICBh
dXRvIGRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5RnJvbU1lc3NhZ2UobWVzc2FnZVR5cGUsIFdURk1v
dmUobWVzc2FnZSkpOworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZV93aXRoX3JlcGx5
KG1fY29ubmVjdGlvbi5nZXQoKSwgZGljdGlvbmFyeS5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoeHBjX29iamVjdF90IHJlcGx5KSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KHhwY19nZXRfdHlwZShyZXBseSkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkgeworICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoeHBjX2RpY3Rpb25hcnlfZ2V0X3Vp
bnQ2NChyZXBseSwgcHJvdG9jb2xWZXJzaW9uS2V5KSAhPSBwcm90b2NvbFZlcnNpb25WYWx1ZSkg
eworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgfQorICAgICAgICBzaXplX3QgZGF0YVNp
emUgeyAwIH07CisgICAgICAgIGNvbnN0IHZvaWQqIGRhdGEgPSB4cGNfZGljdGlvbmFyeV9nZXRf
ZGF0YShyZXBseSwgcHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSwgJmRhdGFTaXplKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSks
IGRhdGFTaXplIH0pOworICAgIH0pLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgUENNCisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3
b3JrTG9hZGVyQ29jb2EubW0KaW5kZXggZDZiZjA2ZTExMWY2YmI1ZjdlZjI4ZjE5NmQyZWUzODAw
YzdjOGE0Yy4uYjNiYTFlMjQyNDIwOGU3NTQxOGMyNzJlNmI2NTQwNzM0MDM2ZDY0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2Nv
Y29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1tCkBAIC01Nyw2
ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NQQ01SZXF1ZXN0KFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZCwKIAogLSAodm9pZClVUkxTZXNzaW9uOihO
U1VSTFNlc3Npb24gKilzZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRhc2sgKil0YXNrIGRpZFJl
Y2VpdmVDaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2Ug
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNw
b3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSljb21wbGV0
aW9uSGFuZGxlcgogeworICAgIC8vIEZJWE1FOiBBZGQgcGx1Ym1pbmcgc28gdGhhdCB3ZSBjYW4g
dGVsbCB0aGUgZGFlbW9uIHdoaWNoIGNlcnRpZmljYXRlcyB0byBhY2NlcHQgd2l0aG91dCB1c2lu
ZyBOZXR3b3JrU2Vzc2lvbkNvY29hLgogICAgIGlmIChbY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZS5hdXRoZW50aWNhdGlvbk1ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlv
bk1ldGhvZFNlcnZlclRydXN0XQogICAgICAgICAmJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjphbGxv
d3NTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNoYWxsZW5nZSkpCiAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVu
dGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFhQQ1V0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxp
dGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBjNjIyN2I0NzczNGZlZmYyODUxZTUyMzJkZWUyODEzMzkzN2I0
MDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0
aWVzLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitu
YW1lc3BhY2UgUENNIHsKKwordm9pZCBhZGRWZXJzaW9uQW5kRW5jb2RlZE1lc3NhZ2VUb0RpY3Rp
b25hcnkoVmVjdG9yPHVpbnQ4X3Q+JiYsIHhwY19vYmplY3RfdCk7CisKK30gLy8gbmFtZXNwYWNl
IFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBD
VXRpbGl0aWVzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2MzAzMWI1YzM2YjcxMjYxODIxNzA0M2ZmOTdkZmY5
NDc0YzVkMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBD
VXRpbGl0aWVzLm1tCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKwordm9pZCBhZGRWZXJzaW9u
QW5kRW5jb2RlZE1lc3NhZ2VUb0RpY3Rpb25hcnkoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwg
eHBjX29iamVjdF90IGRpY3Rpb25hcnkpCit7CisgICAgQVNTRVJUKHhwY19nZXRfdHlwZShkaWN0
aW9uYXJ5KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRf
dWludDY0KGRpY3Rpb25hcnksIFBDTTo6cHJvdG9jb2xWZXJzaW9uS2V5LCBQQ006OnByb3RvY29s
VmVyc2lvblZhbHVlKTsKKworICAgIGF1dG8gYnVmZmVyU2l6ZSA9IG1lc3NhZ2Uuc2l6ZSgpOwor
ICAgIGF1dG8gcmF3UG9pbnRlciA9IG1lc3NhZ2UucmVsZWFzZUJ1ZmZlcigpLmxlYWtQdHIoKTsK
KyAgICBhdXRvIGRpc3BhdGNoRGF0YSA9IGFkb3B0TlMoZGlzcGF0Y2hfZGF0YV9jcmVhdGUocmF3
UG9pbnRlciwgYnVmZmVyU2l6ZSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAg
ICAgZmFzdEZyZWUocmF3UG9pbnRlcik7CisgICAgfSkpOworICAgIGF1dG8geHBjRGF0YSA9IGFk
b3B0T1NPYmplY3QoeHBjX2RhdGFfY3JlYXRlX3dpdGhfZGlzcGF0Y2hfZGF0YShkaXNwYXRjaERh
dGEuZ2V0KCkpKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUoZGljdGlvbmFyeSwgUENN
Ojpwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5LCB4cGNEYXRhLmdldCgpKTsKKworfQorCit9IC8v
IG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9j
ZXNzLnNiLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldl
YktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgppbmRleCAzYjk3OTQ1NTA3OWU0NTZlMzU0OTNlMWUx
ZTVjYTQ2YjlkN2U4OGVkLi4xOTc0YjhlOWYyNTlhZWVmYzk0NDY0Njg0YjIwNGQzNTBmMzhkNDFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUu
V2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KQEAgLTM1Nyw2
ICszNTcsOCBAQAogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLkFwcFNTTy5zZXJ2aWNlLXhw
YyIpCiApCiAKKyhhbGxvdyBtYWNoLWxvb2t1cCAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS53ZWJr
aXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIpKQorCiAod2l0aC1maWx0ZXIgKHVpZCAwKQogICAg
IChhbGxvdyBtYWNoLWxvb2t1cAogICAgICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5EaXNr
QXJiaXRyYXRpb24uZGlza2FyYml0cmF0aW9uZCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Bcmd1bWVudENvZGVyLmgKaW5kZXggYmNmN2NkMTYzZDliYTkyM2QxODBhMDNmOGE2ZWU0NTBm
NzZjMWExZC4uNTMzZTgwOTcwNTQwNTViODFhNmM1ZWExMDk4MWM1YjRkNDAyODc0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaApAQCAtNDgsNiArNDgsNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBBcmd1bWVudENv
ZGVyIHsKICAgICAgICAgdC5lbmNvZGUoZW5jb2Rlcik7CiAgICAgfQogCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUPiBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIGlmIGNvbnN0ZXhwcihIYXNNb2Rlcm5EZWNv
ZGVyVjxUPikKQEAgLTgyLDYgKzgzLDcgQEAgc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKICAgICAgICAg
ZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKICAgICB9CiAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFQ+IGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAgVCByZXN1bHQ7CkBAIC0xMDAsNiAr
MTAyLDcgQEAgc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZf
dDxzdGQ6OmlzX2VudW1fdjxUPj4+IHsKICAgICAgICAgZW5jb2RlciA8PCBXVEY6OmVudW1Ub1Vu
ZGVybHlpbmdUeXBlPFQ+KHZhbHVlKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBE
ZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFQ+IGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnVuZGVybHlpbmdfdHlwZV90
PFQ+PiB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJz
LmNwcAppbmRleCA4MTBlZTJjZTUxZjI3YzJkYmQ2MDdlNTMyYWEyNmQ2MDU2OWFiMjliLi5mZmY5
ZTVlM2Y2YjNlMmVkNTZiNTY2MWUwMzI3NDllZTYzMjM2ZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0yNywxNiArMjcsMjMgQEAKICNp
bmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgor
I2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oIgorI2luY2x1ZGUgIlBy
aXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5oIgogI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIAordGVtcGxhdGU8dHlwZW5h
bWUgRW5jb2Rlcj4KIHZvaWQgQXJndW1lbnRDb2RlcjxXYWxsVGltZT46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBXYWxsVGltZSYgdGltZSkKIHsKICAgICBlbmNvZGVyIDw8IHRpbWUu
c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpOwogfQordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRD
b2RlcjxXYWxsVGltZT46OmVuY29kZTxFbmNvZGVyPihFbmNvZGVyJiwgY29uc3QgV2FsbFRpbWUm
KTsKK3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+OjplbmNvZGU8V2ViS2l0
OjpQQ006OkVuY29kZXI+KFdlYktpdDo6UENNOjpFbmNvZGVyJiwgY29uc3QgV2FsbFRpbWUmKTsK
IAogV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgQXJndW1lbnRDb2RlcjxXYWxsVGltZT46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBXYWxsVGltZSYgdGltZSkKIHsKQEAgLTQ4LDYgKzU1LDcgQEAg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgQXJndW1lbnRDb2RlcjxXYWxsVGltZT46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBXYWxsVGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordGVtcGxhdGU8
dHlwZW5hbWUgRGVjb2Rlcj4KIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFdhbGxU
aW1lPiBBcmd1bWVudENvZGVyPFdhbGxUaW1lPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
CiAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRpbWU7CkBAIC01Niw2ICs2NCwxMCBAQCBXQVJO
X1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gQXJndW1lbnRDb2RlcjxXYWxs
VGltZT46OmRlY29kZShEZWNvZAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoKnRpbWUpOwogfQordGVtcGxhdGUKK3N0ZDo6
b3B0aW9uYWw8V2FsbFRpbWU+IEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGU8RGVjb2Rl
cj4oRGVjb2RlciYpOwordGVtcGxhdGUKK3N0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IEFyZ3VtZW50
Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGU8V2ViS2l0OjpQQ006OkRlY29kZXI+KFdlYktpdDo6UENN
OjpEZWNvZGVyJik7CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxBdG9tU3RyaW5nPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IEF0b21TdHJpbmcmIGF0b21TdHJpbmcpCiB7CkBAIC0xMzMs
MTIgKzE0NSwxNCBAQCB0ZW1wbGF0ZQogdm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29k
ZTxFbmNvZGVyPihFbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7CiB0ZW1wbGF0ZQogdm9pZCBBcmd1
bWVudENvZGVyPFN0cmluZz46OmVuY29kZTxTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFt
Q29ubmVjdGlvbkVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKK3RlbXBsYXRlCit2b2lkIEFyZ3Vt
ZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlPFdlYktpdDo6UENNOjpFbmNvZGVyPihXZWJLaXQ6OlBD
TTo6RW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIERlY29k
ZXI+CiBzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJpbmdUZXh0
KERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IGxlbmd0aCkKIHsKICAgICAvLyBCZWZvcmUgYWxs
b2NhdGluZyB0aGUgc3RyaW5nLCBtYWtlIHN1cmUgdGhhdCB0aGUgZGVjb2RlciBidWZmZXIgaXMg
YmlnIGVub3VnaC4KLSAgICBpZiAoIWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFp
bjxDaGFyYWN0ZXJUeXBlPihsZW5ndGgpKQorICAgIGlmICghZGVjb2Rlci50ZW1wbGF0ZSBidWZm
ZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPENoYXJhY3RlclR5cGU+KGxlbmd0aCkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgQ2hhcmFjdGVyVHlwZSogYnVmZmVyOwpA
QCAtMTQ5LDI1ICsxNjMsMzIgQEAgc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
ZGVjb2RlU3RyaW5nVGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdAogICAgIHJldHVybiBz
dHJpbmc7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiBXQVJOX1VOVVNFRF9SRVRV
Uk4gc3RkOjpvcHRpb25hbDxTdHJpbmc+IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgdWludDMyX3QgbGVuZ3RoOwotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUobGVuZ3RoKSkKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBsZW5ndGg7Cisg
ICAgZGVjb2RlciA+PiBsZW5ndGg7CisgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgaWYgKGxlbmd0aCA9PSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnQzMl90Pjo6bWF4KCkpIHsKKyAgICBpZiAoKmxlbmd0aCA9PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCkpIHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbnVsbCBzdHJp
bmcuCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpczhC
aXQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpczhCaXQpKQorICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gaXM4Qml0OworICAgIGRlY29kZXIgPj4gaXM4Qml0OworICAgIGlmICghaXM4Qml0KQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIGlmIChpczhCaXQpCi0gICAg
ICAgIHJldHVybiBkZWNvZGVTdHJpbmdUZXh0PExDaGFyPihkZWNvZGVyLCBsZW5ndGgpOwotICAg
IHJldHVybiBkZWNvZGVTdHJpbmdUZXh0PFVDaGFyPihkZWNvZGVyLCBsZW5ndGgpOworICAgIGlm
ICgqaXM4Qml0KQorICAgICAgICByZXR1cm4gZGVjb2RlU3RyaW5nVGV4dDxMQ2hhcj4oZGVjb2Rl
ciwgKmxlbmd0aCk7CisgICAgcmV0dXJuIGRlY29kZVN0cmluZ1RleHQ8VUNoYXI+KGRlY29kZXIs
ICpsZW5ndGgpOwogfQordGVtcGxhdGUKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBBcmd1bWVudENv
ZGVyPFN0cmluZz46OmRlY29kZTxEZWNvZGVyPihEZWNvZGVyJik7Cit0ZW1wbGF0ZQorc3RkOjpv
cHRpb25hbDxTdHJpbmc+IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2RlPFdlYktpdDo6UENN
OjpEZWNvZGVyPihXZWJLaXQ6OlBDTTo6RGVjb2RlciYpOwogCiBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBBcmd1bWVudENvZGVyPFN0cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTdHJp
bmcmIHJlc3VsdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Fy
Z3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVy
cy5oCmluZGV4IGM5N2E2ZjU3NmVmZGFlYWUwNGY2OTgzYmUyNTk0MmNlMjAzOWZlOWYuLmIxODJj
NTRlYjc4OGQzZDY5ODE0YWE4MDczZTRmZjFhYTlmMzkyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtMzAwLDYgKzMwMCw3IEBAIGF1dG8gdHVw
bGVGcm9tVHVwbGVBbmRPYmplY3QoVCYmIG9iamVjdCwgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4m
JiB0dXBsZSkKIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZSwgdHlwZW5hbWUuLi4gVHlwZXM+CiBz
dHJ1Y3QgVHVwbGVEZWNvZGVySW1wbCB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4K
ICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFR5cGUsIFR5cGVzLi4uPj4gZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFR5cGU+
IG9wdGlvbmFsOwpAQCAtMzE3LDYgKzMxOCw3IEBAIHN0cnVjdCBUdXBsZURlY29kZXJJbXBsIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KIHN0cnVjdCBUdXBsZURlY29kZXJJbXBsPFR5cGU+
IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPHN0ZDo6dHVwbGU8VHlwZT4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAg
ICAgICAgc3RkOjpvcHRpb25hbDxUeXBlPiBvcHRpb25hbDsKQEAgLTMyOSw2ICszMzEsNyBAQCBz
dHJ1Y3QgVHVwbGVEZWNvZGVySW1wbDxUeXBlPiB7CiAKIHRlbXBsYXRlPHNpemVfdCBzaXplLCB0
eXBlbmFtZS4uLiBFbGVtZW50cz4KIHN0cnVjdCBUdXBsZURlY29kZXIgeworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIERlY29kZXI+CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxF
bGVtZW50cy4uLj4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAgcmV0
dXJuIFR1cGxlRGVjb2RlckltcGw8RWxlbWVudHMuLi4+OjpkZWNvZGUoZGVjb2Rlcik7CkBAIC0z
MzcsNiArMzQwLDcgQEAgc3RydWN0IFR1cGxlRGVjb2RlciB7CiAKIHRlbXBsYXRlPD4KIHN0cnVj
dCBUdXBsZURlY29kZXI8MD4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTw+PiBkZWNvZGUoRGVjb2RlciYpCiAgICAg
ewogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKCk7CkBAIC0zNTAsNiArMzU0LDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+IHN0cnVjdCBBcmd1bWVudENvZGVyPHN0ZDo6
dHVwbGU8RWxlbWVudHMuLi4+PiB7CiAgICAgICAgIFR1cGxlRW5jb2RlcjxzaXplb2YuLi4oRWxl
bWVudHMpLCBFbGVtZW50cy4uLj46OmVuY29kZShlbmNvZGVyLCB0dXBsZSk7CiAgICAgfQogCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxz
dGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewog
ICAgICAgICByZXR1cm4gVHVwbGVEZWNvZGVyPHNpemVvZi4uLihFbGVtZW50cyksIEVsZW1lbnRz
Li4uPjo6ZGVjb2RlKGRlY29kZXIpOwpAQCAtNzIxLDggKzcyNiwxMCBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBUeXBlcz4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V1RGOjpWYXJpYW50PFR5cGVzLi4u
Pj4gewogfTsKICAgICAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+
IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgV2FsbFRpbWUmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXYWxsVGltZSYpOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIERlY29kZXI+CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCkBAIC03NDAsNiArNzQ3LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxTdHJpbmc+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgU3RyaW5nJik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvV0tNYWluLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
V0tNYWluLmgKaW5kZXggN2E5MjdjNzdkMjZkODU1YjRiNmZlYWRhOTgwM2EwNDdjZWU4YjVjMy4u
NGJlNzlkMmE1YmQwZTcwNGY5YTNiYzQ4M2IyZDI1OGNkNDhlZGI4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLTWFpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9XS01haW4uaApAQCAtMzMsNiArMzMsNyBAQCBleHRlcm4gIkMiIHsK
ICNlbmRpZgogCiBXS19FWFBPUlQgaW50IFdLWFBDU2VydmljZU1haW4oaW50IGFyZ2MsIGNvbnN0
IGNoYXIqKiBhcmd2KSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsK
K1dLX0VYUE9SVCBpbnQgV0tQQ01EYWVtb25NYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiogYXJn
dikgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV0tNYWluLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dL
TWFpbi5tbQppbmRleCBlNDgwNWE0OGQ1MTQwNmFkNTk1NjZiMzc3YmUyNTM5ODJhOWFlYjkwLi40
NjgwMWRiZmZjZTZiODI2Y2QxMGRjYWFkYTMzMGQ2ZjVmZGYxOGI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tNYWluLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9XS01haW4ubW0KQEAgLTI2LDkgKzI2LDE1IEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIldLTWFpbi5oIgogCisjaW1wb3J0ICJQQ01EYWVtb25FbnRyeVBv
aW50LmgiCiAjaW1wb3J0ICJYUENTZXJ2aWNlRW50cnlQb2ludC5oIgogCiBpbnQgV0tYUENTZXJ2
aWNlTWFpbihpbnQgYXJnYywgY29uc3QgY2hhcioqIGFyZ3YpCiB7CiAgICAgcmV0dXJuIFdlYktp
dDo6WFBDU2VydmljZU1haW4oYXJnYywgYXJndik7CiB9CisKK2ludCBXS1BDTURhZW1vbk1haW4o
aW50IGFyZ2MsIGNvbnN0IGNoYXIqKiBhcmd2KQoreworICAgIHJldHVybiBXZWJLaXQ6OlBDTURh
ZW1vbk1haW4oYXJnYywgYXJndik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9Q
Q01EYWVtb25FbnRyeVBvaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhjOTEyMGJmNWNjYmMxNzFmOWE1Y2Q5
ZWQxMmU3Y2QwMzk2ZTM0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkVudHJ5UG9pbnQuaApA
QCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitpbnQgUENNRGFlbW9uTWFpbihpbnQsIGNvbnN0IGNoYXIqKik7CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQ
b2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1v
bkVudHJ5UG9pbnQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2YyMzIxZGU1YjE5YzFjMTY3NDliZmQ2YTYzNDY0
Zjg0ZWQ1MjQ1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkVudHJ5UG9pbnQubW0KQEAgLTAs
MCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBD
TURhZW1vbkVudHJ5UG9pbnQuaCIKKworI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRD
b25uZWN0aW9uLmgiCisjaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRl
cmZhY2UuaCIKKyNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmgi
CisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgorI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KKyNpbXBvcnQgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1J1
bkxvb3AuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KKyNpbXBvcnQgPHd0
Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCisvLyBGSVhNRTogQWRkIGRhZW1vbiBwbGlzdCB0byBy
ZXBvc2l0b3J5LgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIEhhc2hTZXQ8UmV0YWlu
UHRyPHhwY19jb25uZWN0aW9uX3Q+PiYgcGVlcnMoKQoreworICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8UmV0YWluUHRyPHhw
Y19jb25uZWN0aW9uX3Q+Pj4gc2V0OworICAgIHJldHVybiBzZXQuZ2V0KCk7Cit9CisKK3N0YXRp
YyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBDTTo6RW5jb2RlZE1lc3NhZ2UmJik+IHJlcGx5U2Vu
ZGVyKFBDTTo6TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIE9TT2JqZWN0UHRyPHhwY19vYmplY3Rf
dD4mJiByZXF1ZXN0KQoreworICAgIGlmICghUENNOjptZXNzYWdlVHlwZVNlbmRzUmVwbHkobWVz
c2FnZVR5cGUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gW3JlcXVlc3Qg
PSBXVEZNb3ZlKHJlcXVlc3QpXSAoUENNOjpFbmNvZGVkTWVzc2FnZSYmIG1lc3NhZ2UpIHsKKyAg
ICAgICAgYXV0byByZXBseSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlX3Jl
cGx5KHJlcXVlc3QuZ2V0KCkpKTsKKyAgICAgICAgUENNOjphZGRWZXJzaW9uQW5kRW5jb2RlZE1l
c3NhZ2VUb0RpY3Rpb25hcnkoV1RGTW92ZShtZXNzYWdlKSwgcmVwbHkuZ2V0KCkpOworICAgICAg
ICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoeHBjX2RpY3Rpb25hcnlfZ2V0X3JlbW90ZV9j
b25uZWN0aW9uKHJlcXVlc3QuZ2V0KCkpLCByZXBseS5nZXQoKSk7CisgICAgfTsKK30KKworc3Rh
dGljIHZvaWQgY29ubmVjdGlvbkV2ZW50SGFuZGxlcih4cGNfb2JqZWN0X3QgcmVxdWVzdCkKK3sK
KyAgICBpZiAoeHBjX2dldF90eXBlKHJlcXVlc3QpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoeHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXF1ZXN0
LCBQQ006OnByb3RvY29sVmVyc2lvbktleSkgIT0gUENNOjpwcm90b2NvbFZlcnNpb25WYWx1ZSkg
eworICAgICAgICBOU0xvZyhAInJlY2VpdmVkIHJlcXVlc3QgdGhhdCB3YXMgbm90IHRoZSBjdXJy
ZW50IHByb3RvY29sIHZlcnNpb24iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1
dG8gbWVzc2FnZVR5cGUgeyBzdGF0aWNfY2FzdDxQQ006Ok1lc3NhZ2VUeXBlPih4cGNfZGljdGlv
bmFyeV9nZXRfdWludDY0KHJlcXVlc3QsIFBDTTo6cHJvdG9jb2xNZXNzYWdlVHlwZUtleSkpIH07
CisgICAgc2l6ZV90IGRhdGFTaXplIHsgMCB9OworICAgIGNvbnN0IHZvaWQqIGRhdGEgPSB4cGNf
ZGljdGlvbmFyeV9nZXRfZGF0YShyZXF1ZXN0LCBQQ006OnByb3RvY29sRW5jb2RlZE1lc3NhZ2VL
ZXksICZkYXRhU2l6ZSk7CisgICAgUENNOjpFbmNvZGVkTWVzc2FnZSBlbmNvZGVkTWVzc2FnZSB7
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgZGF0YVNpemUgfTsKKyAgICBkZWNv
ZGVNZXNzYWdlQW5kU2VuZFRvTWFuYWdlcihtZXNzYWdlVHlwZSwgV1RGTW92ZShlbmNvZGVkTWVz
c2FnZSksIHJlcGx5U2VuZGVyKG1lc3NhZ2VUeXBlLCByZXF1ZXN0KSk7Cit9CisKK3N0YXRpYyB2
b2lkIHN0YXJ0TGlzdGVuaW5nRm9yTWFjaFNlcnZpY2VDb25uZWN0aW9ucygpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+PiBsaXN0ZW5l
ciA9IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9tYWNoX3NlcnZpY2UoImNvbS5hcHBsZS53ZWJraXQu
YWRhdHRyaWJ1dGlvbmQuc2VydmljZSIsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFhQQ19D
T05ORUNUSU9OX01BQ0hfU0VSVklDRV9MSVNURU5FUik7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0
X2V2ZW50X2hhbmRsZXIobGlzdGVuZXIuZ2V0KCkuZ2V0KCksIF4oeHBjX29iamVjdF90IHBlZXIp
IHsKKyAgICAgICAgaWYgKHhwY19nZXRfdHlwZShwZWVyKSAhPSBYUENfVFlQRV9DT05ORUNUSU9O
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIEZJWE1FOiBBZGQgYW4gZW50aXRs
ZW1lbnQgY2hlY2sgaGVyZSBzbyB0aGF0IG9ubHkgdGhlIG5ldHdvcmsgcHJvY2VzcyBjYW4gc3Vj
Y2Vzc2Z1bGx5IGNvbm5lY3QuCisKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hh
bmRsZXIocGVlciwgXih4cGNfb2JqZWN0X3QgZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChldmVu
dCA9PSBYUENfRVJST1JfQ09OTkVDVElPTl9JTlRFUlJVUFRFRCkgeworICAgICAgICAgICAgICAg
IHBlZXJzKCkucmVtb3ZlKHBlZXIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGNvbm5lY3Rpb25FdmVudEhhbmRsZXIoZXZlbnQpOworICAgICAg
ICB9KTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShwZWVyLCBkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fYWN0aXZhdGUo
cGVlcik7CisgICAgICAgIAorICAgICAgICBwZWVycygpLmFkZChwZWVyKTsKKyAgICB9KTsKKyAg
ICB4cGNfY29ubmVjdGlvbl9hY3RpdmF0ZShsaXN0ZW5lci5nZXQoKS5nZXQoKSk7Cit9CisKK3N0
YXRpYyB2b2lkIHJlZ2lzdGVyU2NoZWR1bGVkQWN0aXZpdHlIYW5kbGVyKCkKK3sKKyAgICB4cGNf
YWN0aXZpdHlfcmVnaXN0ZXIoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuYWN0aXZp
dHkiLCBYUENfQUNUSVZJVFlfQ0hFQ0tfSU4sIF4oeHBjX2FjdGl2aXR5X3QgYWN0aXZpdHkpIHsK
KyAgICAgICAgaWYgKHhwY19hY3Rpdml0eV9nZXRfc3RhdGUoYWN0aXZpdHkpID09IFhQQ19BQ1RJ
VklUWV9TVEFURV9DSEVDS19JTikgeworICAgICAgICAgICAgeHBjX29iamVjdF90IGNyaXRlcmlh
ID0geHBjX2FjdGl2aXR5X2NvcHlfY3JpdGVyaWEoYWN0aXZpdHkpOworCisgICAgICAgICAgICAv
LyBGSVhNRTogc2V0IHZhbHVlcyBoZXJlIHRoYXQgYWxpZ24gd2l0aCB2YWx1ZXMgZnJvbSB0aGUg
cGxpc3QuCisKKyAgICAgICAgICAgIHhwY19hY3Rpdml0eV9zZXRfY3JpdGVyaWEoYWN0aXZpdHks
IGNyaXRlcmlhKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IEZJWE1FOiBBZGQgY29kZSBoZXJlIHRoYXQgZG9lcyBkYWlseSB0YXNrcyBvZiBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXIuCisgICAgfSk7Cit9CisKK3N0YXRpYyB2b2lkIGVudGVyU2Fu
ZGJveCgpCit7CisgICAgLy8gRklYTUU6IEVudGVyIGEgc2FuZGJveCBoZXJlLiBXZSBzaG91bGQg
b25seSBuZWVkIHJlYWQvd3JpdGUgYWNjZXNzIHRvIG91ciBkYXRhYmFzZSBhbmQgbmV0d29yayBh
Y2Nlc3MgYW5kIG5vdGhpbmcgZWxzZS4KK30KKworaW50IFBDTURhZW1vbk1haW4oaW50IGFyZ2Ms
IGNvbnN0IGNoYXIqKiBhcmd2KQoreworICAgIGlmIChhcmdjICE9IDIgfHwgc3RyY21wKGFyZ3Zb
MV0sICJydW5Bc0RhZW1vbiIpKSB7CisgICAgICAgIE5TTG9nKEAiVGhpcyBleGVjdXRhYmxlIGlz
IGludGVuZGVkIHRvIGJlIHJ1biBhcyBhIGRhZW1vbi4iKTsKKyAgICAgICAgcmV0dXJuIC0xOwor
ICAgIH0KKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgZW50ZXJTYW5kYm94KCk7Cisg
ICAgICAgIHN0YXJ0TGlzdGVuaW5nRm9yTWFjaFNlcnZpY2VDb25uZWN0aW9ucygpOworICAgICAg
ICByZWdpc3RlclNjaGVkdWxlZEFjdGl2aXR5SGFuZGxlcigpOworICAgICAgICBXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkKCk7CisgICAgfQorICAgIENGUnVuTG9vcFJ1bigpOworICAgIHJldHVy
biAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDI0MTJiYmZh
ZDhlNWY4MTFiNTFlODJmNjBkMWM1NDYxOWEyMTg4MzkuLmNmYWJjZTA1YjI0ZDA3ODk4MDZmMTRh
YWU5MDg3MWFjMjBhODdkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTAxLDggKzEwMSwxNCBAQCBOZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dENsaWVudEltcGwuY3BwCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcAogTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uY3BwCiBO
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwCiBOZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtM
b2FkZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcAorTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmNwcAorTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVt
b25DbGllbnQuY3BwCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuY3BwCitOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXJQcm94eS5jcHAKIAogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggODkxMzgzNGY2YmI1ZjkzOWU3MjBiMDllZmNiMDJjOTU0NGY4NGFhYS4uMTFlNzI5Njg0ZTRh
MmFkZjBiNWNiODkzYWQ2NzkxZDkwMDU4MjYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAt
NDEsNyArNDEsOSBAQCBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2Nv
YS5tbQogTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9EYWVtb24vRGFlbW9uRW50cnlQ
b2ludC5tbQogTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL05ldHdv
cmtTZXJ2aWNlRW50cnlQb2ludC5tbQogCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2Nv
YS5tbQogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyQ29jb2EubW0KK05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRp
bGl0aWVzLm1tCiAKIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvaW9zL0xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcklPUy5tbQogCkBAIC0xOTEsNiArMTkzLDggQEAgU2hhcmVkL0NvY29hL1dL
TlNVUkxSZXF1ZXN0Lm1tCiBTaGFyZWQvQ29jb2EvV0tPYmplY3QubW0KIFNoYXJlZC9Db2NvYS9X
ZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNDb2NvYS5tbQogCitTaGFyZWQvRW50cnlQb2ludFV0
aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5tbQorCiBTaGFyZWQvRW50
cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1t
CiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VN
YWluLm1tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGNmOWUwZGY1NGJmNjhiMjUwMDFjNmNjMWQ5ZWJjYjczYWUyMTE3M2YuLmY2OGI0
Y2ZiNDg1ZDZmOGJmMzYyOGQwNTZiOWYzZDcwNDA2MjJlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI5MSw2ICsxMjkxLDcgQEAK
IAkJNUNCN0FGRTAyM0M1MkNFNTAwRTQ5Q0YzIC8qIF9XS1Jlc291cmNlTG9hZERlbGVnYXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I3QUZERjIz
QzUyQ0JDMDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0I3QUZFNzIzQzY4MjA3MDBF
NDlDRjMgLyogUmVzb3VyY2VMb2FkSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNCN0FGRTYyM0M2ODFCMDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9h
ZEluZm8uaCAqLzsgfTsKIAkJNUNCN0FGRTgyM0M2OUI2MTAwRTQ5Q0YzIC8qIF9XS1Jlc291cmNl
TG9hZEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQjdBRkUzMjNDNjdEMzcwMEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWRJbmZvLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNUNCOTMxMDkyNkU4
NDM5QTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I5MzEwNzI2RTg0
MUNCMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCAqLzsg
fTsKIAkJNUNCQzlCOEUxQzY1MkNBMDAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCQzlCODkxQzY1MjRB
NTAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oICovOyB9OwogCQk1Q0JENTk1QzIyODBFREY0
MDAyQjIyQUEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM1RDIzODgyMjdBMTg5MjAwMEI5QkRBIC8qIF9X
S0N1c3RvbUhlYWRlckZpZWxkcy5tbSAqLzsgfTsKIAkJNUNEMjg2NTExRTcyMzU5OTAwOTRGREM4
IC8qIFdLQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDRDI4NjREMUU3MjJGNDQwMDk0RkRDOCAvKiBXS0NvbnRlbnRS
dWxlTGlzdFN0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9
OyB9OwpAQCAtNDU1Niw2ICs0NTU3LDIzIEBACiAJCTVDQjkzMEMwMjZFMDU0MkYwMDMyQjFDMCAv
KiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJbXBsLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCOTMwQzEyNkUwNTRCODAwMzJCMUMw
IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCOTMwRjIyNkU3RUVFMDAwMzJCMUMwIC8qIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3Jr
TG9hZGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEY0MjZF
ODAxRTgwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25D
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFl
bW9uQ29ubmVjdGlvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5
MzBGNTI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJv
eHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMw
RjYyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGFlbW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEY3
MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudERhZW1vbkNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
QjkzMEY4MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREZWNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMw
RjkyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RW5jb2Rlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEVuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBGQTI2
RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlckludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5
MzBGQjI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJv
eHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1Q0I5MzBGQzI2RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25u
ZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVD
bGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDQjkzMEZEMjZFODAyMTYwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERl
Y29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREZWNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEZF
MjZFODAyMTYwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRD
b25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEZGMjZFODAy
MTYwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMTA0MjZFODM3RkMwMDMyQjFDMCAv
KiBQQ01EYWVtb25FbnRyeVBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBDTURhZW1vbkVudHJ5UG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNC
OTMxMDUyNkU4MzdGRDAwMzJCMUMwIC8qIFBDTURhZW1vbkVudHJ5UG9pbnQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQQ01EYWVtb25FbnRyeVBvaW50Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzEwNjI2RTgzOUE5MDAzMkIxQzAgLyog
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcklu
dGVyZmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMTA3MjZFODQx
Q0IwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0
aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzEwODI2RTg0MUNC
MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFhQQ1V0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCQzlCODkx
QzY1MjRBNTAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOZXR3b3JrRGF0YVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUNCQzlCOEIxQzY1MjU3MzAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya0RhdGFUYXNr
Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkU5MDhGMjZEN0ZCNjIw
MDVBMkU5NSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI2NSwxMiArOTI4MywyNCBAQAogCQkJ
CTVDQjkzMEJGMjZFMDU0MkUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVu
dC5oICovLAogCQkJCTVDQjkzMEMwMjZFMDU0MkYwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudENsaWVudEltcGwuY3BwICovLAogCQkJCTVDQjkzMEMxMjZFMDU0QjgwMDMyQjFDMCAv
KiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuaCAqLywKKwkJCQk1Q0I5MzBGQzI2
RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmNwcCAq
LywKKwkJCQk1Q0I5MzBGRTI2RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRDb25uZWN0aW9uLmggKi8sCisJCQkJNUNCOTMwRjcyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZh
dGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcCAqLywKKwkJCQk1Q0I5MzBGNjI2RTgw
MjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaCAqLywK
IAkJCQk1QzgyNkQ2QTI2RDQ4MkVBMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRE
YXRhYmFzZS5jcHAgKi8sCiAJCQkJNUM4MjZENjkyNkQ0ODJFQTAwOEFFQzkxIC8qIFByaXZhdGVD
bGlja01lYXN1cmVtZW50RGF0YWJhc2UuaCAqLywKIAkJCQk1Q0JFOTA5MDI2RDdGQjdDMDA1QTJF
OTUgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uY3BwICovLAogCQkJCTVDQkU5
MDhGMjZEN0ZCNjIwMDVBMkU5NSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnSW5mby5o
ICovLAorCQkJCTVDQjkzMEY4MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudERlY29kZXIuY3BwICovLAorCQkJCTVDQjkzMEZEMjZFODAyMTYwMDMyQjFDMCAvKiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaCAqLywKKwkJCQk1Q0I5MzBGOTI2RTgwMjE1MDAz
MkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmNwcCAqLywKKwkJCQk1Q0I5
MzBGRjI2RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmgg
Ki8sCiAJCQkJNkJEMDU4NjQyMjBDRThDMjAwMEJFRDVDIC8qIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlci5jcHAgKi8sCiAJCQkJNkJEMDU4NjMyMjBDRThDMjAwMEJFRDVDIC8qIFByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oICovLAorCQkJCTVDQjkzMTA2MjZFODM5QTkwMDMy
QjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwICovLAor
CQkJCTVDQjkzMEZBMjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXJJbnRlcmZhY2UuaCAqLywKKwkJCQk1Q0I5MzBGQjI2RTgwMjE1MDAzMkIxQzAgLyogUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuY3BwICovLAorCQkJCTVDQjkzMEY1MjZF
ODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oICov
LAogCQkJCTU3RkU2ODhCMjYwQUJCM0QwMEJGNDVFNCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE5ldHdvcmtMb2FkZXIuY3BwICovLAogCQkJCTU3RkU2ODhBMjYwQUJCM0QwMEJGNDVFNCAvKiBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuaCAqLywKIAkJCQk1QzgyNkQ2NzI2
RDQ2QjQzMDA4QUVDOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAgKi8sCkBA
IC05MzU4LDExICs5Mzg4LDI0IEBACiAJCTVDQjkzMEYxMjZFN0VFODkwMDMyQjFDMCAvKiBjb2Nv
YSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUNCOTMw
RjQyNkU4MDFFODAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVj
dGlvbkNvY29hLm1tICovLAogCQkJCTVDQjkzMEYyMjZFN0VFRTAwMDMyQjFDMCAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbSAqLywKKwkJCQk1Q0I5MzEwNzI2
RTg0MUNCMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCAq
LywKKwkJCQk1Q0I5MzEwODI2RTg0MUNCMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRYUENVdGlsaXRpZXMubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNUNCOTMxMDMyNkU4Mzc1QjAwMzJCMUMwIC8qIERh
ZW1vbiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNUNC
OTMxMDQyNkU4MzdGQzAwMzJCMUMwIC8qIFBDTURhZW1vbkVudHJ5UG9pbnQuaCAqLywKKwkJCQk1
Q0I5MzEwNTI2RTgzN0ZEMDAzMkIxQzAgLyogUENNRGFlbW9uRW50cnlQb2ludC5tbSAqLywKKwkJ
CSk7CisJCQluYW1lID0gRGFlbW9uOworCQkJcGF0aCA9IENvY29hL0RhZW1vbjsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTZCRTk2OUJGMUU1NEQ0NTIwMDhCNzQ4MyAvKiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKQEAgLTEwODE4LDYgKzEwODYxLDcgQEAKIAkJQkM4MjgzNjgxNkIzNTg3OTAwQTI3
OEZFIC8qIEVudHJ5UG9pbnRVdGlsaXRpZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTVDQjkzMTAzMjZFODM3NUIwMDMyQjFDMCAvKiBEYWVtb24gKi8s
CiAJCQkJQkM4MjgzNkIxNkIzNTg3OTAwQTI3OEZFIC8qIFhQQ1NlcnZpY2UgKi8sCiAJCQkJNUNF
OTEyMEYyMjkzQzI1RjAwNUJFQzc4IC8qIEF1eGlsaWFyeVByb2Nlc3NNYWluLmNwcCAqLywKIAkJ
CSk7CkBAIC0xMjM2NCw2ICsxMjQwOCw3IEBACiAJCQkJNkJEMDU4NjUyMjBDRThDMjAwMEJFRDVD
IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTdGRTY4OEMyNjBBQkIzRDAwQkY0NUU0IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29y
a0xvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM4MjZENkIyNkQ0ODJFRjAwOEFFQzkxIC8q
IFByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDQjkz
MTA5MjZFODQzOUEwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZGOTUzNjUxOEZGNThGNTAwMURCMkVGIC8qIFByb2Nl
c3NBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUE3QzU4MTEzNkUxOUMwMEZCNzE2
NyAvKiBQcm9jZXNzTGF1bmNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2M0ZENDgyMUVCOTRF
QzAwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovLAo=
</data>
<flag name="commit-queue"
          id="460932"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437709</attachid>
            <date>2021-09-08 21:55:48 -0700</date>
            <delta_ts>2021-09-09 11:25:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230052-20210908215547.patch</filename>
            <type>text/plain</type>
            <size>109122</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJjOTI0NmRiMDI3OTMwZDM0MjA5OWU1
Yzg4MmJiYzVjODA5ZDY2ZTAuLjU1MzZmYjAzOGRiY2I5ZmQ0NDUyYTg2NTU0ZDIxYTNiMjkzOGFi
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDktMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgZGFlbW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzAwNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oOgorCiAyMDIxLTA5LTA3ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IG9yaWdpbiBwYXJ0aXRp
b25pbmcgKHRvcC1vcmlnaW4vZnJhbWUtb3JpZ2luKSBmb3IgQnJvYWRjYXN0Q2hhbm5lbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAwM2YwZDFkMGM1NjI2ODY5Mzk2NWI3ZTkxY2EzMzNlZDc2MThiMTEyLi4xMDc5NGIy
MzE4YzkxMjVmOGIzYzU1OTZkZWZkZWJiN2U2OTlkM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
NSBAQAorMjAyMS0wOS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIEFkZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBkYWVtb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDA1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUg
aW5mcmFzdHJ1Y3R1cmUgdG8gdXNlIGEgZGFlbW9uIGluc3RlYWQgb2YgdGhlIG5ldHdvcmsgcHJv
Y2VzcyB0byBoYW5kbGUgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuCisgICAgICAgIEl0IGRvZXMg
bm90IHN0YXJ0IHVzaW5nIHRoZSBkYWVtb24geWV0LCBzbyB0aGVyZSBpcyBubyBjaGFuZ2UgaW4g
YmVoYXZpb3IuCisgICAgICAgIEkgbWFkZSBhIG5ldyBjbGFzcyBQQ006Ok1hbmFnZXJJbnRlcmZh
Y2Ugd2hpY2ggY2FuIGVpdGhlciBiZSBhIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlciBv
ciBhIFBDTTo6TWFuYWdlclByb3h5LAorICAgICAgICB3aGljaCB3b3VsZCBzZW5kIG1lc3NhZ2Vz
IHRvIHRoZSBkYWVtb24gaW5zdGVhZCBvZiBkb2luZyB0aGUgd29yayBsb2NhbGx5LgorICAgICAg
ICBJIGltcGxlbWVudGVkIHRoZSBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgcGFyYW1ldGVycyB1
c2luZyBzb21lIG9mIHRoZSBJUEMgZW5jb2RpbmcgdGVtcGxhdGVzLgorICAgICAgICBJIGhhdmUg
YW4gZW50cnkgcG9pbnQgZm9yIGFuIGV4ZWN1dGFibGUgYnV0IG5vIGV4ZWN1dGFibGUgeWV0Lgor
ICAgICAgICBJIGhhdmUgdmVyaWZpZWQgdGhhdCBFdmVudEF0dHJpYnV0aW9uIHVuaXQgdGVzdHMg
cGFzcyB3aGVuIHVzaW5nIHRoZSBkYWVtb24sIHNvIHRoZSBpbmZyYXN0cnVjdHVyZSBpcyBnb29k
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpwY21TdG9yZURpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OnByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudENvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0
aW9uOjpjb25uZWN0aW9uVG9EYWVtb24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rp
b246OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rpb246OnNlbmRXaXRoUmVw
bHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhZW1vbkNsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNs
aWVudDo6bG9hZEZyb21OZXR3b3JrKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25DbGll
bnQ6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVt
b25DbGllbnQ6OmZlYXR1cmVFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpE
YWVtb25DbGllbnQ6OmRlYnVnTW9kZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFl
bW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6ZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6RGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RGVjb2Rlcjo6b3BlcmF0b3I+Pik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGVjb2Rlcjo6YnVm
ZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBDTTo6RW5jb2Rlcjo6ZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlBDTTo6RW5jb2Rlcjo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RW5jb2Rlcjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpFbmNvZGVyOjp0YWtlQnVm
ZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UENNOjpNZXNzYWdlSW5mbzo6dG9TdHJpbmdGb3JUZXN0aW5nOjplbmNvZGVS
ZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6bWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
OlBDTTo6aGFuZGxlUENNTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6aGFuZGxlUENN
TWVzc2FnZVdpdGhSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6ZGVjb2RlTWVzc2FnZUFu
ZFNlbmRUb01hbmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpQQ006OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpSZXBseUNhbGxl
cjw+OjpjYWxsUmVwbHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlJlcGx5Q2FsbGVyPFN0cmlu
Zz46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6c2VuZE1lc3NhZ2VXaXRoUmVw
bHkpOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c3RvcmVVbmF0dHJpYnV0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6aGFuZGxlQXR0cmlidXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6Y2xlYXIpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6Y2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbik6
CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjptaWdyYXRlUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFu
YWdlclByb3h5Ojp0b1N0cmluZ0ZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
Q006Ok1hbmFnZXJQcm94eTo6c2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcpOgorICAgICAgICAo
V2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6OnNldFRva2VuU2lnbmF0dXJl
VVJMRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzZXRB
dHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpN
YW5hZ2VyUHJveHk6Om1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6TWFuYWdlclByb3h5OjpzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006Ok1hbmFnZXJQcm94eTo6c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFs
dWVzRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzdGFy
dFRpbWVySW1tZWRpYXRlbHlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5h
Z2VyUHJveHk6OmRlc3Ryb3lTdG9yZUZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
clByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNv
Y29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9EYWVt
b24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OmRpY3Rpb25hcnlGcm9tTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6Q29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENV
dGlsaXRpZXMuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW06
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OmFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2Fn
ZVRvRGljdGlvbmFyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5X
ZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW46CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpkZWNvZGVTdHJpbmdUZXh0KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxTdHJpbmc+OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1v
bi9QQ01EYWVtb25FbnRyeVBvaW50Lmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6cGVlcnMpOgorICAgICAgICAoV2ViS2l0OjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6Y29ubmVjdGlvbkV2ZW50SGFuZGxlcik6Cisg
ICAgICAgIChXZWJLaXQ6OnN0YXJ0TGlzdGVuaW5nRm9yTWFjaFNlcnZpY2VDb25uZWN0aW9ucyk6
CisgICAgICAgIChXZWJLaXQ6OnJlZ2lzdGVyU2NoZWR1bGVkQWN0aXZpdHlIYW5kbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6ZW50ZXJTYW5kYm94KToKKyAgICAgICAgKFdlYktpdDo6UENNRGFlbW9u
TWFpbik6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0w
OS0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlcGxhY2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpzdGFydCB3
aXRoIGFuIGltcGxlbWVudGF0aW9uIHRoYXQgZG9lc24ndCBuZWVkIE5ldHdvcmtTZXNzaW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oIGIvU291cmNlL1dU
Ri93dGYvc3BpL2Rhcndpbi9YUENTUEkuaAppbmRleCAyZjk2NWJhN2ZkMTA5Y2NiOGZlNGE3ZWQ4
NDRkYjIyZGU4NzkxOGYwLi4zYjU5Y2ZjZTcwN2M2MTUyNjQxZDFlMzEwOTRmYTkwNTI5YmU1NmU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmgKQEAgLTM2LDYgKzM2LDcgQEAKIE9TX09C
SkVDVF9ERUNMKHhwY19vYmplY3QpOwogdHlwZWRlZiB4cGNfb2JqZWN0X3QgeHBjX2Nvbm5lY3Rp
b25fdDsKIHR5cGVkZWYgeHBjX29iamVjdF90IHhwY19lbmRwb2ludF90OwordHlwZWRlZiB4cGNf
b2JqZWN0X3QgeHBjX2FjdGl2aXR5X3Q7CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgX3hw
Y19vYmplY3RfdmFsaWRhdGUoeHBjX29iamVjdF90IG9iamVjdCkKIHsKQEAgLTUwLDEyICs1MSwy
MyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIF94cGNfb2JqZWN0X3ZhbGlkYXRlKHhwY19v
YmplY3RfdCBvYmplY3QpCiB0eXBlZGVmIHZvaWQqIHhwY19vYmplY3RfdDsKIHR5cGVkZWYgdm9p
ZCogeHBjX2Nvbm5lY3Rpb25fdDsKIHR5cGVkZWYgdm9pZCogeHBjX2VuZHBvaW50X3Q7Cit0eXBl
ZGVmIHZvaWQqIHhwY19hY3Rpdml0eV90OwogCiAjZGVmaW5lIFhQQ19HTE9CQUxfT0JKRUNUKG9i
amVjdCkgKCYob2JqZWN0KSkKIAogI2VuZGlmIC8vIE9TX09CSkVDVF9VU0VfT0JKQwogCitlbnVt
IHsKKyAgICBYUENfQUNUSVZJVFlfU1RBVEVfQ0hFQ0tfSU4sCisgICAgWFBDX0FDVElWSVRZX1NU
QVRFX1dBSVQsCisgICAgWFBDX0FDVElWSVRZX1NUQVRFX1JVTiwKKyAgICBYUENfQUNUSVZJVFlf
U1RBVEVfREVGRVIsCisgICAgWFBDX0FDVElWSVRZX1NUQVRFX0NPTlRJTlVFLAorICAgIFhQQ19B
Q1RJVklUWV9TVEFURV9ET05FLAorfTsKK3R5cGVkZWYgbG9uZyB4cGNfYWN0aXZpdHlfc3RhdGVf
dDsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IF94cGNfdHlwZV9zKiB4cGNfdHlwZV90OworZXh0ZXJu
ICJDIiBjb25zdCB4cGNfb2JqZWN0X3QgWFBDX0FDVElWSVRZX0NIRUNLX0lOOwogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19oYXNfYXR0cmlidXRlKG5vZXNjYXBlKQogI2RlZmluZSBY
UENfTk9FU0NBUEUgX19hdHRyaWJ1dGVfXygoX19ub2VzY2FwZV9fKSkKQEAgLTcxLDYgKzgzLDcg
QEAgdHlwZWRlZiB2b2lkICgqeHBjX2Nvbm5lY3Rpb25faGFuZGxlcl90KSh4cGNfY29ubmVjdGlv
bl90IGNvbm5lY3Rpb24pOwogCiAjZGVmaW5lIFhQQ19BUlJBWV9BUFBFTkQgKChzaXplX3QpKC0x
KSkKICNkZWZpbmUgWFBDX0NPTk5FQ1RJT05fTUFDSF9TRVJWSUNFX0xJU1RFTkVSICgxIDw8IDAp
CisjZGVmaW5lIFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVEVSUlVQVEVEIFhQQ19HTE9CQUxfT0JK
RUNUKF94cGNfZXJyb3JfY29ubmVjdGlvbl9pbnRlcnJ1cHRlZCkKICNkZWZpbmUgWFBDX0VSUk9S
X0NPTk5FQ1RJT05fSU5WQUxJRCBYUENfR0xPQkFMX09CSkVDVChfeHBjX2Vycm9yX2Nvbm5lY3Rp
b25faW52YWxpZCkKICNkZWZpbmUgWFBDX0VSUk9SX0tFWV9ERVNDUklQVElPTiBfeHBjX2Vycm9y
X2tleV9kZXNjcmlwdGlvbgogI2RlZmluZSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQg
WFBDX0dMT0JBTF9PQkpFQ1QoX3hwY19lcnJvcl90ZXJtaW5hdGlvbl9pbW1pbmVudCkKQEAgLTg0
LDYgKzk3LDE4IEBAIHR5cGVkZWYgdm9pZCAoKnhwY19jb25uZWN0aW9uX2hhbmRsZXJfdCkoeHBj
X2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKTsKIAogZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBf
eHBjX2Vycm9yX2tleV9kZXNjcmlwdGlvbjsKIAorZXh0ZXJuICJDIiB2b2lkIHhwY19jb25uZWN0
aW9uX2FjdGl2YXRlKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbik7CitleHRlcm4gIkMiIGNv
bnN0IHZvaWQqIHhwY19kaWN0aW9uYXJ5X2dldF9kYXRhKHhwY19vYmplY3RfdCB4ZGljdCwgY29u
c3QgY2hhcioga2V5LCBzaXplX3QqIGxlbmd0aCk7CitleHRlcm4gIkMiIHhwY19vYmplY3RfdCB4
cGNfZGF0YV9jcmVhdGVfd2l0aF9kaXNwYXRjaF9kYXRhKGRpc3BhdGNoX2RhdGFfdCBkZGF0YSk7
CitleHRlcm4gIkMiIHhwY19hY3Rpdml0eV9zdGF0ZV90IHhwY19hY3Rpdml0eV9nZXRfc3RhdGUo
eHBjX2FjdGl2aXR5X3QgYWN0aXZpdHkpOworZXh0ZXJuICJDIiB4cGNfb2JqZWN0X3QgeHBjX2Fj
dGl2aXR5X2NvcHlfY3JpdGVyaWEoeHBjX2FjdGl2aXR5X3QgYWN0aXZpdHkpOworZXh0ZXJuICJD
IiB2b2lkIHhwY19hY3Rpdml0eV9zZXRfY3JpdGVyaWEoeHBjX2FjdGl2aXR5X3QgYWN0aXZpdHks
IHhwY19vYmplY3RfdCBjcml0ZXJpYSk7CisjaWYgQ09NUElMRVJfU1VQUE9SVFMoQkxPQ0tTKQor
dHlwZWRlZiB2b2lkICheeHBjX2FjdGl2aXR5X2hhbmRsZXJfdCkoeHBjX2FjdGl2aXR5X3QgYWN0
aXZpdHkpOworZXh0ZXJuICJDIiB2b2lkIHhwY19hY3Rpdml0eV9yZWdpc3Rlcihjb25zdCBjaGFy
ICppZGVudGlmaWVyLCB4cGNfb2JqZWN0X3QgY3JpdGVyaWEsCisgICAgeHBjX2FjdGl2aXR5X2hh
bmRsZXJfdCBoYW5kbGVyKTsKKyNlbmRpZiAvLyBDT01QSUxFUl9TVVBQT1JUUyhCTE9DS1MpCisK
ICNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpAQCAtOTEsNiArMTE2LDkgQEAgZXh0ZXJuIGNvbnN0
IGNoYXIgKiBjb25zdCBfeHBjX2Vycm9yX2tleV9kZXNjcmlwdGlvbjsKICNpbmNsdWRlIDx4cGMv
cHJpdmF0ZS5oPgogI2Vsc2UKIAorZXh0ZXJuICJDIiBjb25zdCBjaGFyICogY29uc3QgWFBDX0FD
VElWSVRZX1JBTkRPTV9JTklUSUFMX0RFTEFZOworZXh0ZXJuICJDIiBjb25zdCBjaGFyICogY29u
c3QgWFBDX0FDVElWSVRZX1JFUVVJUkVfTkVUV09SS19DT05ORUNUSVZJVFk7CisKICNpZiBPU19P
QkpFQ1RfVVNFX09CSkMKIE9TX09CSkVDVF9ERUNMKG9zX3RyYW5zYWN0aW9uKTsKICNlbHNlCkBA
IC0xMDgsNiArMTM2LDcgQEAgZW51bSB7CiAKIFdURl9FWFRFUk5fQ19CRUdJTgogCitleHRlcm4g
Y29uc3Qgc3RydWN0IF94cGNfZGljdGlvbmFyeV9zIF94cGNfZXJyb3JfY29ubmVjdGlvbl9pbnRl
cnJ1cHRlZDsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgX3hwY19kaWN0aW9uYXJ5X3MgX3hwY19lcnJv
cl9jb25uZWN0aW9uX2ludmFsaWQ7CiBleHRlcm4gY29uc3Qgc3RydWN0IF94cGNfZGljdGlvbmFy
eV9zIF94cGNfZXJyb3JfdGVybWluYXRpb25faW1taW5lbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IGYxYjE5OTAy
ZTFhNGVhMDVhZWMyMWRhYjcyN2Y4YjhhZWUwOTI5OTkuLjI5YmFiOWEyOTM5OWQxNjI0OWMxMjk2
ZTY4YWFmNzc4ZjMzMGExNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlBs
dWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5LmgiCiAj
aW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDU0M2NhYjEwMGJjN2JjOTlmNTQw
ZjM5NGJmZjcyM2ZiY2NkYWViM2EuLmRmZGU3OGRhNjFkOWJmYThhM2M1YTRjMWM4Y2E5N2EwMmUz
NTNmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUGluZ0xvYWQuaCIKICNpbmNsdWRl
ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuaCIKICNpbmNsdWRlICJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCkBA
IC05MiwxMSArOTMsMjAgQEAgc3RhdGljIFN0cmluZyBwY21TdG9yZURpcmVjdG9yeShjb25zdCBO
ZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXMKICAgICByZXR1cm4gcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKIH0KIAorc3RhdGljIFVuaXF1ZVJlZjxQQ006
Ok1hbmFnZXJJbnRlcmZhY2U+IG1hbmFnZXJPclByb3h5KE5ldHdvcmtTZXNzaW9uJiBuZXR3b3Jr
U2Vzc2lvbiwgTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICAvLyBGSVhNRTogVHVy
biB0aGlzIG9uIGFuZCByZW1vdmUgTWFuYWdlckludGVyZmFjZSBvbmNlIHJkYXI6Ly84MDcwMTA5
OCBpcyBjbG9zZWQuCisgICAgY29uc3RleHByIGJvb2wgdXNlUENNRGFlbW9uID0gZmFsc2U7CisK
KyAgICBpZiAodXNlUENNRGFlbW9uKQorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxQQ006
Ok1hbmFnZXJQcm94eT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXI+KG1ha2VVbmlxdWVSZWY8UENNOjpDbGllbnRJbXBsPihuZXR3b3Jr
U2Vzc2lvbiwgbmV0d29ya1Byb2Nlc3MpLCBwY21TdG9yZURpcmVjdG9yeShuZXR3b3JrU2Vzc2lv
biwgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5kaXJlY3Rvcnks
IHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMucHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSk7Cit9CisKIE5ldHdvcmtTZXNzaW9uOjpOZXR3
b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogbV9zZXNzaW9uSUQo
cGFyYW1ldGVycy5zZXNzaW9uSUQpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9j
ZXNzKQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgLCBtX3ByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeShwYXJhbWV0ZXJzLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVj
dG9yeSkKICAgICAsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShwYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmRpcmVjdG9yeSkKICAgICAsIG1fc2hv
dWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhwYXJhbWV0ZXJzLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNob3VsZEluY2x1ZGVMb2NhbGhvc3QgPyBT
aG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgOiBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpObykK
ICAgICAsIG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShwYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZURlYnVnTW9kZSA/IEVuYWJs
ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6OlllcyA6IEVuYWJsZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEZWJ1Z01vZGU6Ok5vKQpAQCAtMTA3LDYgKzExNyw3IEBAIE5ldHdvcmtTZXNz
aW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0
IE5ldHdvcmtTZXNzCiAgICAgLCBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKHBh
cmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUpCiAgICAgLCBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbihw
YXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbikKICNlbmRpZgorICAgICwgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudCht
YW5hZ2VyT3JQcm94eSgqdGhpcywgbmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMpKQogICAgICwg
bV9icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkobWFrZVVuaXF1ZVJlZjxOZXR3b3JrQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5PigpKQogICAgICwgbV90ZXN0U3BlZWRNdWx0aXBsaWVyKHBhcmFtZXRl
cnMudGVzdFNwZWVkTXVsdGlwbGllcikKICAgICAsIG1fYWxsb3dzU2VydmVyUHJlY29ubmVjdChw
YXJhbWV0ZXJzLmFsbG93c1NlcnZlclByZWNvbm5lY3QpCkBAIC0xNDEsNyArMTUyLDYgQEAgTmV0
d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vz
cywgY29uc3QgTmV0d29ya1Nlc3MKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBhcmFtZXRlcnMucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlZCk7CiAjZW5kaWYKLSAgICBtX3ByaXZh
dGVDbGlja01lYXN1cmVtZW50ID0gbWFrZVVuaXF1ZTxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXI+KG1ha2VVbmlxdWVSZWY8UENNOjpDbGllbnRJbXBsPigqdGhpcywgbmV0d29ya1Byb2Nl
c3MpLCBwY21TdG9yZURpcmVjdG9yeSgqdGhpcywgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycy5kaXJlY3RvcnksIHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BhcmFtZXRlcnMucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSk7
CiB9CiAKIE5ldHdvcmtTZXNzaW9uOjp+TmV0d29ya1Nlc3Npb24oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDcwYTFiNDkxYjI0M2FhZWZi
M2QyN2JkY2FkMDBhNjA1ZTQyNGY1MGYuLmQ4YWFiM2RiYTQ5Yjc2N2YzZWYwOTk0YmYyY2JlOTUx
ZmE0MTY3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiUHJlZmV0Y2hDYWNoZS5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlckludGVyZmFjZS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oIgogI2luY2x1ZGUgIldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgpAQCAtNjAsNyArNjEsNiBAQCBjbGFzcyBOZXR3b3Jr
UHJvY2VzczsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIE5ldHdvcmtCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnk7CiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hhbm5lbDsKLWNsYXNz
IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjsKIGNsYXNzIFdlYlBhZ2VOZXR3b3JrUGFy
YW1ldGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIGNsYXNzIFdl
YlNvY2tldFRhc2s7CkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBO
ZXR3b3JrTG9hZFNjaGVkdWxlciYgbmV0d29ya0xvYWRTY2hlZHVsZXIoKTsKLSAgICBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXImIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgeyByZXR1
cm4gKm1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7IH0KKyAgICBQQ006Ok1hbmFnZXJJbnRlcmZh
Y2UmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgeyByZXR1cm4gbV9wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC5nZXQoKTsgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgQXBwUHJpdmFjeVJl
cG9ydFRlc3RpbmdEYXRhJiBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKSB7IHJldHVybiBt
X2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTsgfQpAQCAtMTkyLDcgKzE5Miw2IEBAIHByb3Rl
Y3RlZDoKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CiAgICAgV2Vh
a0hhc2hTZXQ8TmV0d29ya0RhdGFUYXNrPiBtX2RhdGFUYXNrU2V0OwogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgU3RyaW5nIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3Rvcnk7CiAgICAgUmVmUHRyPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QgbV9zaG91
bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHsgU2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdDo6WWVzIH07CkBAIC0yMDgsNyArMjA3LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fdGhpcmRQYXJ0eUNOQU1F
RG9tYWluRm9yVGVzdGluZzsKICNlbmRpZgogICAgIGJvb2wgbV9pc1N0YWxlV2hpbGVSZXZhbGlk
YXRlRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcj4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKKyAgICBVbmlxdWVS
ZWY8UENNOjpNYW5hZ2VySW50ZXJmYWNlPiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OwogCiAg
ICAgSGFzaFNldDxSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPj4gbV9rZXB0QWxpdmVMb2FkczsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2M2EwMzYwZGI1MzE5ODFm
ZTY3NGIyNjNhZjQwMzIzMWQ5MTk4NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rp
b24uaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCisjaWYgIVBMQVRGT1JNKENPQ09BKQorCitD
b25uZWN0aW9uIENvbm5lY3Rpb246OmNvbm5lY3Rpb25Ub0RhZW1vbigpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIENvbm5lY3Rpb246OnNlbmQo
TWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5KE1lc3NhZ2VUeXBlLCBFbmNvZGVk
TWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRNZXNzYWdlJiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmM2E5
MTAyMWNiZTQwMjA3ZTUyYTI1YmNmNTA1OTc2YzhmYjZiYjQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworI2lmIFBMQVRG
T1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9z
cGkvZGFyd2luL1hQQ1NQSS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1l
c3BhY2UgUENNIHsKKworZW51bSBjbGFzcyBNZXNzYWdlVHlwZSA6IHVpbnQ4X3Q7Cit1c2luZyBF
bmNvZGVkTWVzc2FnZSA9IFZlY3Rvcjx1aW50OF90PjsKKworY2xhc3MgQ29ubmVjdGlvbiB7Citw
dWJsaWM6CisgICAgc3RhdGljIENvbm5lY3Rpb24gY29ubmVjdGlvblRvRGFlbW9uKCk7CisKKyAg
ICB2b2lkIHNlbmQoTWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYpOworICAgIHZvaWQgc2Vu
ZFdpdGhSZXBseShNZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4mJik7CisKK3ByaXZhdGU6CisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgQ29ubmVjdGlvbihPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiYmKTsK
KworICAgIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IG1fY29ubmVjdGlvbjsKKyNlbmRp
ZgorfTsKKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzNlNTFiZTcwZjBjNmU5MjM0
ODRjYjZmZGRlNTk1OGJmMmViNThkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudERhZW1vbkNsaWVudC5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNs
aWVudC5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK3ZvaWQgRGFlbW9uQ2xpZW50Ojpicm9h
ZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIERhZW1vbkNsaWVudDo6ZmVhdHVyZUVu
YWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERhZW1vbkNsaWVu
dDo6ZGVidWdNb2RlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTc3ODIxMjQy
NmQ4OTcxNmMxYmEzNmQ0NTBhY2Q1ZDM2ZDdmNjY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50
LmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK2NsYXNzIERhZW1v
bkNsaWVudCA6IHB1YmxpYyBDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYWVtb25DbGll
bnQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICB2b2lkIGJyb2FkY2FzdENv
bnNvbGVNZXNzYWdlKEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAg
ICBib29sIGZlYXR1cmVFbmFibGVkKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBkZWJ1Z01vZGVF
bmFibGVkKCkgY29uc3QgZmluYWw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEyMGU4YzJm
Y2NhOTljMTA4NjI1NDA3YTFmMmMzY2M0NTIzM2U0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREZWNvZGVyLmNwcApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RGVj
b2Rlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK2Jvb2wg
RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbkJ5dGVzKHNpemVfdCBieXRlcykg
Y29uc3QKK3sKKyAgICByZXR1cm4gYnl0ZXMgPD0gbV9idWZmZXIuc2l6ZSgpIC0gbV9idWZmZXJQ
b3NpdGlvbjsKK30KKworYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCkKK3sKKyAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW5CeXRlcyhzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1l
bWNweShkYXRhLCBtX2J1ZmZlci5kYXRhKCkgKyBtX2J1ZmZlclBvc2l0aW9uLCBzaXplKTsKKyAg
ICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREZWNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI4Nzc5OWUzMGVlNTMwNzcyYzlkMTQ3Y2MzODdmNTVmNWI4YzM1NTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oCkBAIC0wLDAgKzEsNjgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKworY2xhc3MgRGVj
b2RlciB7CitwdWJsaWM6CisgICAgRGVjb2RlcihWZWN0b3I8dWludDhfdD4mJiBidWZmZXIpCisg
ICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICAKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgIERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDxUPiYg
dCkKKyAgICB7CisgICAgICAgIHQgPSBJUEM6OkFyZ3VtZW50Q29kZXI8c3RkOjpyZW1vdmVfY29u
c3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4sIHZvaWQ+OjpkZWNvZGUoKnRoaXMpOwor
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWlu
KHNpemVfdCBudW1FbGVtZW50cykgY29uc3QKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZSwgIlR5cGUgVCBtdXN0IGhhdmUgYSBmaXhlZCwg
a25vd24gZW5jb2RlZCBzaXplISIpOworCisgICAgICAgIGlmIChudW1FbGVtZW50cyA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLyBzaXplb2YoVCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW5CeXRlcyhudW1FbGVtZW50cyAqIHNpemVvZihUKSk7CisgICAgfQorCisgICAgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCwgc2l6ZV90IGFsaWdubWVudCk7CisgICAgCitwcml2YXRlOgorICAgIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW5CeXRlcyhzaXplX3QpIGNvbnN0
OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOworICAgIHNpemVfdCBtX2J1ZmZlclBv
c2l0aW9uIHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEVuY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5OGIxNWU1MTBlNTk5Mzc0
M2ZlN2U1NjNlZjAxZGQ3OGI5MjRmZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50RW5jb2Rlci5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCit2b2lkIEVuY29kZXI6
OmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwg
c2l6ZV90KQoreworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYThhODNjNjU5MjVkMjYyYWRkMjBiYTVhOGIxOTAzNjVlNTkzMmNiMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmgKQEAgLTAsMCArMSw2MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCitjbGFzcyBFbmNv
ZGVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEVuY29kZXImIG9w
ZXJhdG9yPDwoVCYmIHQpCisgICAgeworICAgICAgICBJUEM6OkFyZ3VtZW50Q29kZXI8c3RkOjpy
ZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4+OjplbmNvZGUoKnRoaXMs
IHN0ZDo6Zm9yd2FyZDxUPih0KSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBlbmNv
ZGUoQXJnJiYgYXJnLCBBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgICp0aGlzIDw8IHN0
ZDo6Zm9yd2FyZDxBcmc+KGFyZyk7CisgICAgICAgIGVuY29kZShzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pOworICAgIH0KKyAgICB2b2lkIGVuY29kZSgpIHsgfQorCisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHRha2VCdWZmZXIoKSB7IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCB7IH0p
OyB9CisKKyAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90Kiwgc2l6
ZV90LCBzaXplX3QgYWxpZ25tZW50KTsKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8dWludDhfdD4g
bV9idWZmZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXIuaAppbmRleCBiYjgyMjJjMmM5ZGJiMDc3MmJkMzllNzlmNDQzMDVm
NDcwYmU5ZjU1Li4yNmU3YzU1OTE0NDdmZWJmNTc4NTFlYWU1ZDJlMGY0NmQ5YmVlMDFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyLmgKQEAgLTI4LDEzICsyOCw5IEBACiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudC5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlckludGVyZmFjZS5oIgogI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RvcmUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VFcnJvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+
CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0pTT05W
YWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDIsMzggKzM4LDMwIEBACiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1lbnVtIGNsYXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXR0cmlidXRpb25UeXBlIDogYm9vbCB7IFVuYXR0cmlidXRlZCwgQXR0cmlidXRlZCB9OwotCi1j
bGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyPiB7CitjbGFzcyBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXIgOiBwdWJsaWMgUENNOjpNYW5hZ2VySW50ZXJmYWNlLCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyPiB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAKLSAgICB1c2luZyBBdHRyaWJ1dGlvbkRl
c3RpbmF0aW9uU2l0ZSA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvbkRlc3RpbmF0aW9uU2l0ZTsKLSAgICB1c2luZyBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0g
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7
Ci0gICAgdXNpbmcgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDsKLSAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIFNvdXJjZVNpdGUgPSBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZTsKLQogICAgIGV4cGxpY2l0IFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlcihVbmlxdWVSZWY8UENNOjpDbGllbnQ+JiYsIGNvbnN0IFN0cmlu
ZyYgc3RvcmFnZURpcmVjdG9yeSk7CiAgICAgflByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
cigpOwogCi0gICAgdm9pZCBzdG9yZVVuYXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCYmKTsKLSAgICB2b2lkIGhhbmRsZUF0dHJpYnV0aW9uKEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEm
JiwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJl
ZGlyZWN0RG9tYWluLCBjb25zdCBVUkwmIGZpcnN0UGFydHlVUkwpOwotICAgIHZvaWQgY2xlYXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGNsZWFyRm9yUmVnaXN0cmFi
bGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwotICAgIHZvaWQgbWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2Fj
eVN0b3JhZ2UoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGUpOworICAgIHZvaWQgc3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQmJikgZmluYWw7CisgICAgdm9pZCBoYW5kbGVBdHRyaWJ1dGlvbihBdHRy
aWJ1dGlvblRyaWdnZXJEYXRhJiYsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiByZWRpcmVjdERvbWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJM
KSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmlu
YWw7CisgICAgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIG1p
Z3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKFByaXZhdGVDbGlj
a01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKSBm
aW5hbDsKIAotICAgIHZvaWQgdG9TdHJpbmdGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nKT4mJikgY29uc3Q7Ci0gICAgdm9pZCBzZXRPdmVycmlkZVRpbWVyRm9yVGVzdGlu
Zyhib29sIHZhbHVlKSB7IG1faXNSdW5uaW5nVGVzdCA9IHZhbHVlOyB9Ci0gICAgdm9pZCBzZXRU
b2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJMJiYpOwotICAgIHZvaWQgc2V0VG9rZW5TaWdu
YXR1cmVVUkxGb3JUZXN0aW5nKFVSTCYmKTsKLSAgICB2b2lkIHNldEF0dHJpYnV0aW9uUmVwb3J0
VVJMc0ZvclRlc3RpbmcoVVJMJiYgc291cmNlVVJMLCBVUkwmJiBkZXN0aW5hdGlvblVSTCk7Ci0g
ICAgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZygpOwotICAgIHZv
aWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0
aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRFcGhlbWVyYWxN
ZWFzdXJlbWVudEZvclRlc3RpbmcoYm9vbCB2YWx1ZSkgeyBtX2lzUnVubmluZ0VwaGVtZXJhbE1l
YXN1cmVtZW50VGVzdCA9IHZhbHVlOyB9Ci0gICAgdm9pZCBzZXRQQ01GcmF1ZFByZXZlbnRpb25W
YWx1ZXNGb3JUZXN0aW5nKFN0cmluZyYmIHVubGlua2FibGVUb2tlbiwgU3RyaW5nJiYgc2VjcmV0
VG9rZW4sIFN0cmluZyYmIHNpZ25hdHVyZSwgU3RyaW5nJiYga2V5SUQpOwotICAgIHZvaWQgc3Rh
cnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZygpOwotICAgIHZvaWQgZGVzdHJveVN0b3JlRm9y
VGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdG9TdHJpbmdG
b3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJikgY29uc3QgZmluYWw7
CisgICAgdm9pZCBzZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhib29sIHZhbHVlKSBmaW5hbCB7
IG1faXNSdW5uaW5nVGVzdCA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRUb2tlblB1YmxpY0tleVVS
TEZvclRlc3RpbmcoVVJMJiYpIGZpbmFsOworICAgIHZvaWQgc2V0VG9rZW5TaWduYXR1cmVVUkxG
b3JUZXN0aW5nKFVSTCYmKSBmaW5hbDsKKyAgICB2b2lkIHNldEF0dHJpYnV0aW9uUmVwb3J0VVJM
c0ZvclRlc3RpbmcoVVJMJiYgc291cmNlVVJMLCBVUkwmJiBkZXN0aW5hdGlvblVSTCkgZmluYWw7
CisgICAgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZygpIGZpbmFs
OworICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGly
ZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9p
ZCBzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcoYm9vbCB2YWx1ZSkgZmluYWwgeyBt
X2lzUnVubmluZ0VwaGVtZXJhbE1lYXN1cmVtZW50VGVzdCA9IHZhbHVlOyB9CisgICAgdm9pZCBz
ZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFN0cmluZyYmIHVubGlua2FibGVU
b2tlbiwgU3RyaW5nJiYgc2VjcmV0VG9rZW4sIFN0cmluZyYmIHNpZ25hdHVyZSwgU3RyaW5nJiYg
a2V5SUQpIGZpbmFsOworICAgIHZvaWQgc3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZygp
IGZpbmFsOworICAgIHZvaWQgZGVzdHJveVN0b3JlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFBDTTo6U3RvcmUmIHN0b3JlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcyYWZk
OWU0NTBmODVhN2ZhNDE0OWFhNjgzYThjMzM5MjhlNzk0MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmNwcApAQCAtMCwwICsxLDI1OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaCIKKworI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2Uu
aCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5oIgorI2luY2x1ZGUgIlBy
aXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01l
YXN1cmVtZW50RW5jb2Rlci5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK25hbWVz
cGFjZSBNZXNzYWdlSW5mbyB7CisKKyNkZWZpbmUgRlVOQ1RJT04obWYpIHN0cnVjdCBtZiB7IHN0
YXRpYyBjb25zdGV4cHIgYXV0byBNZW1iZXJGdW5jdGlvbiA9ICZQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXI6Om1mOworI2RlZmluZSBBUkdVTUVOVFMoLi4uKSB1c2luZyBBcmdzVHVwbGUg
PSBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPjsKKyNkZWZpbmUgUkVQTFkoLi4uKSB1c2luZyBSZXBs
eSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoX19WQV9BUkdTX18pPjsgXAorICAgIHN0YXRpYyBQ
Q006OkVuY29kZWRNZXNzYWdlIGVuY29kZVJlcGx5KF9fVkFfQVJHU19fKTsKKyNkZWZpbmUgRU5E
IH07CisKK0ZVTkNUSU9OKHN0b3JlVW5hdHRyaWJ1dGVkKQorQVJHVU1FTlRTKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50KQorRU5ECisKK0ZVTkNUSU9OKGhhbmRsZUF0dHJpYnV0aW9u
KQorQVJHVU1FTlRTKFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6QXR0cmlidXRpb25U
cmlnZ2VyRGF0YSwgVVJMLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgVVJMKQorRU5ECisK
K0ZVTkNUSU9OKGNsZWFyKQorQVJHVU1FTlRTKCkKK1JFUExZKCkKK0VORAorCitGVU5DVElPTihj
bGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKQorQVJHVU1FTlRTKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluKQorUkVQTFkoKQorRU5ECisKK0ZVTkNUSU9OKG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKQorQVJHVU1FTlRTKFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkKK0VO
RAorCitGVU5DVElPTih0b1N0cmluZ0ZvclRlc3RpbmcpCitBUkdVTUVOVFMoKQorUkVQTFkoU3Ry
aW5nKQorRU5ECisKK0ZVTkNUSU9OKHNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKQorQVJHVU1F
TlRTKGJvb2wpCitFTkQKKworRlVOQ1RJT04oc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5n
KQorQVJHVU1FTlRTKFVSTCkKK0VORAorCitGVU5DVElPTihzZXRUb2tlblNpZ25hdHVyZVVSTEZv
clRlc3RpbmcpCitBUkdVTUVOVFMoVVJMKQorRU5ECisKK0ZVTkNUSU9OKHNldEF0dHJpYnV0aW9u
UmVwb3J0VVJMc0ZvclRlc3RpbmcpCitBUkdVTUVOVFMoVVJMLCBVUkwpCitFTkQKKworRlVOQ1RJ
T04obWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3RpbmcpCitBUkdVTUVOVFMoKQor
RU5ECisKK0ZVTkNUSU9OKG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNF
eHBpcmVkRm9yVGVzdGluZykKK0FSR1VNRU5UUygpCitSRVBMWSgpCitFTkQKKworRlVOQ1RJT04o
c2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nKQorQVJHVU1FTlRTKGJvb2wpCitFTkQK
KworRlVOQ1RJT04oc2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZykKK0FSR1VN
RU5UUyhTdHJpbmcsIFN0cmluZywgU3RyaW5nLCBTdHJpbmcpCitFTkQKKworRlVOQ1RJT04oc3Rh
cnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZykKK0FSR1VNRU5UUygpCitFTkQKKworRlVOQ1RJ
T04oZGVzdHJveVN0b3JlRm9yVGVzdGluZykKK0FSR1VNRU5UUygpCitSRVBMWSgpCitFTkQKKwor
I3VuZGVmIEZVTkNUSU9OCisjdW5kZWYgQVJHVU1FTlRTCisjdW5kZWYgUkVQTFkKKyN1bmRlZiBF
TkQKKworI2RlZmluZSBFTVBUWV9SRVBMWShtZikgUENNOjpFbmNvZGVkTWVzc2FnZSBtZjo6ZW5j
b2RlUmVwbHkoKSB7IHJldHVybiB7IH07IH0KK0VNUFRZX1JFUExZKGNsZWFyKTsKK0VNUFRZX1JF
UExZKGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4pOworRU1QVFlfUkVQTFkobWFya0F0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKTsKK0VNUFRZX1JF
UExZKGRlc3Ryb3lTdG9yZUZvclRlc3RpbmcpOworI3VuZGVmIEVNUFRZX1JFUExZCisKK1BDTTo6
RW5jb2RlZE1lc3NhZ2UgdG9TdHJpbmdGb3JUZXN0aW5nOjplbmNvZGVSZXBseShTdHJpbmcgcmVw
bHkpCit7CisgICAgUENNOjpFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2RlciA8PCByZXBseTsK
KyAgICByZXR1cm4gZW5jb2Rlci50YWtlQnVmZmVyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIE1l
c3NhZ2VJbmZvCisKK2Jvb2wgbWVzc2FnZVR5cGVTZW5kc1JlcGx5KE1lc3NhZ2VUeXBlIG1lc3Nh
Z2VUeXBlKQoreworICAgIHN3aXRjaCAobWVzc2FnZVR5cGUpIHsKKyAgICBjYXNlIE1lc3NhZ2VU
eXBlOjpTdG9yZVVuYXR0cmlidXRlZDoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpIYW5kbGVBdHRy
aWJ1dGlvbjoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpNaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRGcm9tTGVnYWN5U3RvcmFnZToKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTZXRPdmVycmlk
ZVRpbWVyRm9yVGVzdGluZzoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTZXRUb2tlblB1YmxpY0tl
eVVSTEZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6U2V0VG9rZW5TaWduYXR1cmVV
UkxGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OlNldEF0dHJpYnV0aW9uUmVwb3J0
VVJMc0ZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6TWFya0FsbFVuYXR0cmlidXRl
ZEFzRXhwaXJlZEZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6U2V0RXBoZW1lcmFs
TWVhc3VyZW1lbnRGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OlNldFBDTUZyYXVk
UHJldmVudGlvblZhbHVlc0ZvclRlc3Rpbmc6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6U3RhcnRU
aW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZzoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNh
c2UgTWVzc2FnZVR5cGU6Ok1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNF
eHBpcmVkRm9yVGVzdGluZzoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpEZXN0cm95U3RvcmVGb3JU
ZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OlRvU3RyaW5nRm9yVGVzdGluZzoKKyAgICBj
YXNlIE1lc3NhZ2VUeXBlOjpDbGVhcjoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpDbGVhckZvclJl
Z2lzdHJhYmxlRG9tYWluOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyJiBkYWVtb25NYW5hZ2VyKCkKK3sKKyAgICAvLyBGSVhNRTog
R2l2ZSB0aGUgbWFuYWdlciBhIHZhbGlkIHN0b3JhZ2UgZGlyZWN0b3J5LgorICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+IGluc3RhbmNlKG1h
a2VVbmlxdWVSZWY8UENNOjpEYWVtb25DbGllbnQ+KCksIFN0cmluZygpKTsKKyAgICByZXR1cm4g
aW5zdGFuY2UuZ2V0KCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEluZm8+Cit2b2lkIGhhbmRs
ZVBDTU1lc3NhZ2UoUENNOjpFbmNvZGVkTWVzc2FnZSYmIGVuY29kZWRNZXNzYWdlKQoreworICAg
IFBDTTo6RGVjb2RlciBkZWNvZGVyKFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKworICAgIHN0
ZDo6b3B0aW9uYWw8dHlwZW5hbWUgSW5mbzo6QXJnc1R1cGxlPiBhcmd1bWVudHM7CisgICAgZGVj
b2RlciA+PiBhcmd1bWVudHM7CisgICAgaWYgKFVOTElLRUxZKCFhcmd1bWVudHMpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBJUEM6OmNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVu
dHMpLCAmZGFlbW9uTWFuYWdlcigpLCBJbmZvOjpNZW1iZXJGdW5jdGlvbik7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIEluZm8+Cit2b2lkIGhhbmRsZVBDTU1lc3NhZ2VXaXRoUmVwbHkoUENNOjpF
bmNvZGVkTWVzc2FnZSYmIGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBD
TTo6RW5jb2RlZE1lc3NhZ2UmJik+JiYgcmVwbHlTZW5kZXIpCit7CisgICAgUENNOjpEZWNvZGVy
IGRlY29kZXIoV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworCisgICAgc3RkOjpvcHRpb25hbDx0
eXBlbmFtZSBJbmZvOjpBcmdzVHVwbGU+IGFyZ3VtZW50czsKKyAgICBkZWNvZGVyID4+IGFyZ3Vt
ZW50czsKKyAgICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50cykpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHR5cGVuYW1lIEluZm86OlJlcGx5IGNvbXBsZXRpb25IYW5kbGVyIHsgW3JlcGx5U2VuZGVy
ID0gV1RGTW92ZShyZXBseVNlbmRlcildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CisgICAg
ICAgIHJlcGx5U2VuZGVyKEluZm86OmVuY29kZVJlcGx5KGFyZ3MuLi4pKTsKKyAgICB9fTsKKwor
ICAgIElQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCAmZGFlbW9uTWFuYWdlcigpLCBJbmZvOjpNZW1iZXJGdW5jdGlv
bik7Cit9CisKK3ZvaWQgZGVjb2RlTWVzc2FnZUFuZFNlbmRUb01hbmFnZXIoTWVzc2FnZVR5cGUg
bWVzc2FnZVR5cGUsIFZlY3Rvcjx1aW50OF90PiYmIGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJiByZXBseVNlbmRlcikKK3sKKyAgICBB
U1NFUlQobWVzc2FnZVR5cGVTZW5kc1JlcGx5KG1lc3NhZ2VUeXBlKSA9PSAhIXJlcGx5U2VuZGVy
KTsKKyAgICBzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBl
OjpTdG9yZVVuYXR0cmlidXRlZDoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5m
bzo6c3RvcmVVbmF0dHJpYnV0ZWQ+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpIYW5kbGVBdHRyaWJ1dGlvbjoKKyAg
ICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6aGFuZGxlQXR0cmlidXRpb24+KFdU
Rk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1l
c3NhZ2VUeXBlOjpDbGVhcjoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZVdpdGhSZXBseTxNZXNz
YWdlSW5mbzo6Y2xlYXI+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5U2Vu
ZGVyKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6Q2xlYXJG
b3JSZWdpc3RyYWJsZURvbWFpbjoKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZVdpdGhSZXBseTxN
ZXNzYWdlSW5mbzo6Y2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbj4oV1RGTW92ZShlbmNvZGVkTWVz
c2FnZSksIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Q006Ok1lc3NhZ2VUeXBlOjpNaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5
U3RvcmFnZToKKyAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6bWlncmF0ZVBy
aXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2U+KFdURk1vdmUoZW5jb2RlZE1l
c3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpUb1N0
cmluZ0ZvclRlc3Rpbmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2VXaXRoUmVwbHk8TWVzc2Fn
ZUluZm86OnRvU3RyaW5nRm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSksIFdURk1v
dmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VU
eXBlOjpTZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2Fn
ZTxNZXNzYWdlSW5mbzo6c2V0T3ZlcnJpZGVUaW1lckZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2Rl
ZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpT
ZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3Rpbmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8
TWVzc2FnZUluZm86OnNldFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZz4oV1RGTW92ZShlbmNv
ZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6
OlNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2Fn
ZTxNZXNzYWdlSW5mbzo6c2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nPihXVEZNb3ZlKGVu
Y29kZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlw
ZTo6U2V0QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENN
TWVzc2FnZTxNZXNzYWdlSW5mbzo6c2V0QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZz4o
V1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6
TWVzc2FnZVR5cGU6Ok1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nOgorICAg
ICAgICBoYW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJbmZvOjptYXJrQWxsVW5hdHRyaWJ1dGVkQXNF
eHBpcmVkRm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6Ok1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENNTWVzc2Fn
ZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSwgV1RGTW92
ZShyZXBseVNlbmRlcikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5
cGU6OlNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlUENN
TWVzc2FnZTxNZXNzYWdlSW5mbzo6c2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nPihX
VEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpN
ZXNzYWdlVHlwZTo6U2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZzoKKyAgICAg
ICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFs
dWVzRm9yVGVzdGluZz4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3Rp
bmc6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86OnN0YXJ0VGltZXJJbW1l
ZGlhdGVseUZvclRlc3Rpbmc+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpEZXN0cm95U3RvcmVGb3JUZXN0aW5nOgor
ICAgICAgICBoYW5kbGVQQ01NZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjpkZXN0cm95U3Rv
cmVGb3JUZXN0aW5nPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSwgV1RGTW92ZShyZXBseVNlbmRl
cikpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VySW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmEyOTJmYTlmMDk1NWIzZTAyMjQ0NjUwMzcxZWRiNDkzOWMwNzFmYWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oCkBAIC0w
LDAgKzEsMTI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJD
b3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3Ry
YWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitlbnVtIGNsYXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25U
eXBlIDogYm9vbCB7IFVuYXR0cmlidXRlZCwgQXR0cmlidXRlZCB9OworCitjbGFzcyBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXI7CisKK25hbWVzcGFjZSBQQ00geworCitjbGFzcyBNYW5h
Z2VySW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NYW5hZ2VySW50ZXJmYWNlKCkg
eyB9OworCisgICAgdXNpbmcgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgPSBXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGU7CisgICAg
dXNpbmcgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOworICAgIHVzaW5nIFByaXZhdGVDbGlja01l
YXN1cmVtZW50ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgdXNpbmcg
UmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1c2lu
ZyBTb3VyY2VTaXRlID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNp
dGU7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQmJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBdHRyaWJ1dGlvbihBdHRy
aWJ1dGlvblRyaWdnZXJEYXRhJiYsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiByZWRpcmVjdERvbWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJM
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lT
dG9yYWdlKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXR0cmlidXRpb25UeXBlKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgdG9TdHJpbmdGb3JUZXN0
aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJikgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhib29sIHZhbHVlKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwmJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoVVJMJiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGlu
ZyhVUkwmJiBzb3VyY2VVUkwsIFVSTCYmIGRlc3RpbmF0aW9uVVJMKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhw
aXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyhib29sKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoU3Ry
aW5nJiYgdW5saW5rYWJsZVRva2VuLCBTdHJpbmcmJiBzZWNyZXRUb2tlbiwgU3RyaW5nJiYgc2ln
bmF0dXJlLCBTdHJpbmcmJiBrZXlJRCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFRpbWVy
SW1tZWRpYXRlbHlGb3JUZXN0aW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95U3Rv
cmVGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOworfTsKKworY29u
c3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sVmVyc2lvbktleSB7ICJ2ZXJzaW9uIiB9OworY29u
c3RleHByIHVpbnQ2NF90IHByb3RvY29sVmVyc2lvblZhbHVlIHsgMSB9OworCitjb25zdGV4cHIg
Y29uc3QgY2hhciogcHJvdG9jb2xNZXNzYWdlVHlwZUtleSB7ICJtZXNzYWdlIHR5cGUiIH07Citl
bnVtIGNsYXNzIE1lc3NhZ2VUeXBlIDogdWludDhfdCB7CisgICAgU3RvcmVVbmF0dHJpYnV0ZWQs
CisgICAgSGFuZGxlQXR0cmlidXRpb24sCisgICAgQ2xlYXIsCisgICAgQ2xlYXJGb3JSZWdpc3Ry
YWJsZURvbWFpbiwKKyAgICBNaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5
U3RvcmFnZSwKKyAgICBUb1N0cmluZ0ZvclRlc3RpbmcsCisgICAgU2V0T3ZlcnJpZGVUaW1lckZv
clRlc3RpbmcsCisgICAgU2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nLAorICAgIFNldFRv
a2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZywKKyAgICBTZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNG
b3JUZXN0aW5nLAorICAgIE1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nLAor
ICAgIE1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVz
dGluZywKKyAgICBTZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcsCisgICAgU2V0UENN
RnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZywKKyAgICBTdGFydFRpbWVySW1tZWRpYXRl
bHlGb3JUZXN0aW5nLAorICAgIERlc3Ryb3lTdG9yZUZvclRlc3RpbmcsCit9OworCitjb25zdGV4
cHIgY29uc3QgY2hhciogcHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSB7ICJlbmNvZGVkIG1lc3Nh
Z2UiIH07Cit1c2luZyBFbmNvZGVkTWVzc2FnZSA9IFZlY3Rvcjx1aW50OF90PjsKKwordm9pZCBk
ZWNvZGVNZXNzYWdlQW5kU2VuZFRvTWFuYWdlcihNZXNzYWdlVHlwZSwgVmVjdG9yPHVpbnQ4X3Q+
JiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYp
OworYm9vbCBtZXNzYWdlVHlwZVNlbmRzUmVwbHkoTWVzc2FnZVR5cGUpOworCit9IC8vIG5hbWVz
cGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK25hbWVzcGFjZSBXVEYgeworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZT4gewor
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6UENNOjpNZXNz
YWdlVHlwZSwKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTdG9yZVVuYXR0cmli
dXRlZCwKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpIYW5kbGVBdHRyaWJ1dGlv
biwKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpDbGVhciwKKyAgICAgICAgV2Vi
S2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpDbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluLAorICAgICAg
ICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6Ok1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEZyb21MZWdhY3lTdG9yYWdlLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlRv
U3RyaW5nRm9yVGVzdGluZywKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTZXRP
dmVycmlkZVRpbWVyRm9yVGVzdGluZywKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBl
OjpTZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6UENNOjpN
ZXNzYWdlVHlwZTo6U2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nLAorICAgICAgICBXZWJL
aXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3Rpbmcs
CisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6TWFya0FsbFVuYXR0cmlidXRlZEFz
RXhwaXJlZEZvclRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6TWFy
a0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nLAor
ICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlNldEVwaGVtZXJhbE1lYXN1cmVtZW50
Rm9yVGVzdGluZywKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTZXRQQ01GcmF1
ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2Fn
ZVR5cGU6OlN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3RpbmcsCisgICAgICAgIFdlYktpdDo6
UENNOjpNZXNzYWdlVHlwZTo6RGVzdHJveVN0b3JlRm9yVGVzdGluZworICAgID47Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2NhZTRlNGZmNThjYjYxZjU1ZjViNTE5NWJhNWUzZDBiYThkYmRkMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuY3BwCkBAIC0wLDAgKzEsMTU2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmgiCisKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERlY29kZXIuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCit0ZW1wbGF0ZTxNZXNz
YWdlVHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KK3ZvaWQgc2VuZE1lc3NhZ2Uo
QXJncyYmLi4uIGFyZ3MpCit7CisgICAgRW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIuZW5j
b2RlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgQ29ubmVjdGlvbjo6Y29ubmVj
dGlvblRvRGFlbW9uKCkuc2VuZChtZXNzYWdlVHlwZSwgZW5jb2Rlci50YWtlQnVmZmVyKCkpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdHJ1Y3QgUmVwbHlDYWxsZXI7Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjw+IHsKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHko
RGVjb2RlciYmIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQorfTsK
K3RlbXBsYXRlPD4gc3RydWN0IFJlcGx5Q2FsbGVyPFN0cmluZz4geworICAgIHN0YXRpYyB2b2lk
IGNhbGxSZXBseShEZWNvZGVyJiYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gc3RyaW5nOworICAgICAgICBkZWNvZGVyID4+IHN0cmluZzsKKyAgICAgICAgaWYg
KCFzdHJpbmcpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSgqc3RyaW5nKSk7CisgICAgfQorfTsKKwor
dGVtcGxhdGU8TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5cGVuYW1lLi4uIEFyZ3MsIHR5cGVu
YW1lLi4uIFJlcGx5QXJncz4KK3ZvaWQgc2VuZE1lc3NhZ2VXaXRoUmVwbHkoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXBseUFyZ3MuLi4pPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcmdzJiYuLi4g
YXJncykKK3sKKyAgICBFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2Rlci5lbmNvZGUoc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICBDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9EYWVt
b24oKS5zZW5kV2l0aFJlcGx5KG1lc3NhZ2VUeXBlLCBlbmNvZGVyLnRha2VCdWZmZXIoKSwgW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvIHJlcGx5
QnVmZmVyKSBtdXRhYmxlIHsKKyAgICAgICAgRGVjb2RlciBkZWNvZGVyKFdURk1vdmUocmVwbHlC
dWZmZXIpKTsKKyAgICAgICAgUmVwbHlDYWxsZXI8UmVwbHlBcmdzLi4uPjo6Y2FsbFJlcGx5KFdU
Rk1vdmUoZGVjb2RlciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30K
Kwordm9pZCBNYW5hZ2VyUHJveHk6OnN0b3JlVW5hdHRyaWJ1dGVkKFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50JiYgcGNtKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpT
dG9yZVVuYXR0cmlidXRlZD4ocGNtKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OmhhbmRsZUF0
dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRy
aWdnZXJEYXRhJiYgdHJpZ2dlckRhdGEsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiByZWRpcmVjdERvbWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
VVJMKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpIYW5kbGVBdHRyaWJ1dGlvbj4o
dHJpZ2dlckRhdGEsIHJlcXVlc3RVUkwsIHJlZGlyZWN0RG9tYWluLCBmaXJzdFBhcnR5VVJMKTsK
K30KKwordm9pZCBNYW5hZ2VyUHJveHk6OmNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdl
VHlwZTo6Q2xlYXI+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBNYW5h
Z2VyUHJveHk6OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VUeXBlOjpDbGVh
ckZvclJlZ2lzdHJhYmxlRG9tYWluPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZG9tYWlu
KTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6Om1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEZyb21MZWdhY3lTdG9yYWdlKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgcGNt
LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSB0eXBlKQoreworICAgIHNl
bmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpNaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9t
TGVnYWN5U3RvcmFnZT4ocGNtLCB0eXBlKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OnRvU3Ry
aW5nRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIGNvbnN0Cit7CisgICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZVR5cGU6
OlRvU3RyaW5nRm9yVGVzdGluZz4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2
b2lkIE1hbmFnZXJQcm94eTo6c2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkK
K3sKKyAgICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlwZTo6U2V0T3ZlcnJpZGVUaW1lckZvclRlc3Rp
bmc+KHZhbHVlKTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OnNldFRva2VuUHVibGljS2V5VVJM
Rm9yVGVzdGluZyhVUkwmJiB1cmwpCit7CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlNl
dFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZz4odXJsKTsKK30KKwordm9pZCBNYW5hZ2VyUHJv
eHk6OnNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwmJiB1cmwpCit7CisgICAgc2Vu
ZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZz4odXJs
KTsKK30KKwordm9pZCBNYW5hZ2VyUHJveHk6OnNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRl
c3RpbmcoVVJMJiYgc291cmNlVVJMLCBVUkwmJiBkZXN0aW5hdGlvblVSTCkKK3sKKyAgICBzZW5k
TWVzc2FnZTxNZXNzYWdlVHlwZTo6U2V0QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZz4o
c291cmNlVVJMLCBkZXN0aW5hdGlvblVSTCk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjptYXJr
QWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZygpCit7CisgICAgc2VuZE1lc3NhZ2U8
TWVzc2FnZVR5cGU6Ok1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nPigpOwor
fQorCit2b2lkIE1hbmFnZXJQcm94eTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlVHlwZTo6
TWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5n
PihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5Ojpz
ZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcoYm9vbCB2YWx1ZSkKK3sKKyAgICBzZW5k
TWVzc2FnZTxNZXNzYWdlVHlwZTo6U2V0RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nPih2
YWx1ZSk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1
ZXNGb3JUZXN0aW5nKFN0cmluZyYmIHVubGlua2FibGVUb2tlbiwgU3RyaW5nJiYgc2VjcmV0VG9r
ZW4sIFN0cmluZyYmIHNpZ25hdHVyZSwgU3RyaW5nJiYga2V5SUQpCit7CisgICAgc2VuZE1lc3Nh
Z2U8TWVzc2FnZVR5cGU6OlNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3Rpbmc+KHVu
bGlua2FibGVUb2tlbiwgc2VjcmV0VG9rZW4sIHNpZ25hdHVyZSwga2V5SUQpOworfQorCit2b2lk
IE1hbmFnZXJQcm94eTo6c3RhcnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVzdGluZygpCit7CisgICAg
c2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3Rpbmc+
KCk7Cit9CisKK3ZvaWQgTWFuYWdlclByb3h5OjpkZXN0cm95U3RvcmVGb3JUZXN0aW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kTWVz
c2FnZVdpdGhSZXBseTxNZXNzYWdlVHlwZTo6RGVzdHJveVN0b3JlRm9yVGVzdGluZz4oV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNk
NDExOTk0YjRiMDZmMGY2YjVkOTkxNWYyZjJjZGZhY2E5NmU2ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaApAQCAtMCwwICsxLDU5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXJJbnRlcmZhY2UuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIFBDTSB7CisKK2NsYXNzIE1hbmFnZXJQcm94eSA6
IHB1YmxpYyBNYW5hZ2VySW50ZXJmYWNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICB2b2lkIHN0b3JlVW5hdHRyaWJ1dGVkKFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50JiYpIGZpbmFsOworICAgIHZvaWQgaGFuZGxlQXR0cmlidXRpb24oV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29u
c3QgVVJMJiByZXF1ZXN0VVJMLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZGlyZWN0
RG9tYWluLCBjb25zdCBVUkwmIGZpcnN0UGFydHlVUkwpIGZpbmFsOworICAgIHZvaWQgY2xlYXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyRm9yUmVn
aXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgbWlncmF0ZVByaXZhdGVDbGlj
a01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpIGZpbmFsOwor
CisgICAgdm9pZCB0b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcpPiYmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5n
KGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVS
TCYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwm
JikgZmluYWw7CisgICAgdm9pZCBzZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVS
TCYmIHNvdXJjZVVSTCwgVVJMJiYgZGVzdGluYXRpb25VUkwpIGZpbmFsOworICAgIHZvaWQgbWFy
a0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3RpbmcoKSBmaW5hbDsKKyAgICB2b2lkIG1h
cmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgc2V0RXBoZW1lcmFs
TWVhc3VyZW1lbnRGb3JUZXN0aW5nKGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0UENNRnJhdWRQ
cmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhTdHJpbmcmJiB1bmxpbmthYmxlVG9rZW4sIFN0cmlu
ZyYmIHNlY3JldFRva2VuLCBTdHJpbmcmJiBzaWduYXR1cmUsIFN0cmluZyYmIGtleUlEKSBmaW5h
bDsKKyAgICB2b2lkIHN0YXJ0VGltZXJJbW1lZGlhdGVseUZvclRlc3RpbmcoKSBmaW5hbDsKKyAg
ICB2b2lkIGRlc3Ryb3lTdG9yZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KSBmaW5hbDsKK307CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9u
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29h
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYxYjU4NTA2NjU4YTNmOTUzNWVlZmIxYTYwNWEyNTVkODcyNDc3MWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVj
dGlvbkNvY29hLm1tCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKwor
I2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCIKKyNpbXBvcnQg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNl
IFBDTSB7CisKK0Nvbm5lY3Rpb246OkNvbm5lY3Rpb24oT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rp
b25fdD4mJiBjb25uZWN0aW9uKQorICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlv
bikpIHsgfQorCitDb25uZWN0aW9uIENvbm5lY3Rpb246OmNvbm5lY3Rpb25Ub0RhZW1vbigpCit7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8T1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4+IGNvbm5lY3Rpb247CisgICAgaWYgKCFj
b25uZWN0aW9uLmdldCgpKSB7CisgICAgICAgIGNvbm5lY3Rpb24uZ2V0KCkgPSBhZG9wdE9TT2Jq
ZWN0KHhwY19jb25uZWN0aW9uX2NyZWF0ZV9tYWNoX3NlcnZpY2UoImNvbS5hcHBsZS53ZWJraXQu
YWRhdHRyaWJ1dGlvbmQuc2VydmljZSIsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIDApKTsK
KyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIoY29ubmVjdGlvbi5nZXQo
KS5nZXQoKSwgXih4cGNfb2JqZWN0X3QgZXZlbnQpIHsKKyAgICAgICAgICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CisgICAgICAgICAgICBpZiAoZXZlbnQgPT0gWFBDX0VSUk9SX0NPTk5F
Q1RJT05fSU5URVJSVVBURUQpIHsKKyAgICAgICAgICAgICAgICAvLyBEYWVtb24gY3Jhc2hlZCwg
d2Ugd2lsbCBuZWVkIHRvIG1ha2UgYSBuZXcgY29ubmVjdGlvbiB0byBhIG5ldyBpbnN0YW5jZSBv
ZiB0aGUgZGFlbW9uLgorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uZ2V0KCkgPSBudWxscHRy
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIH0pOworICAgICAgICB4cGNfY29ubmVjdGlvbl9hY3RpdmF0ZShjb25uZWN0
aW9uLmdldCgpLmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIENvbm5lY3Rpb24oT1NPYmplY3RQ
dHI8eHBjX2Nvbm5lY3Rpb25fdD4oY29ubmVjdGlvbi5nZXQoKSkpOworfQorCitzdGF0aWMgT1NP
YmplY3RQdHI8eHBjX29iamVjdF90PiBkaWN0aW9uYXJ5RnJvbU1lc3NhZ2UoTWVzc2FnZVR5cGUg
bWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYgbWVzc2FnZSkKK3sKKyAgICBhdXRvIGRpY3Rp
b25hcnkgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxs
cHRyLCAwKSk7CisgICAgYWRkVmVyc2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KFdU
Rk1vdmUobWVzc2FnZSksIGRpY3Rpb25hcnkuZ2V0KCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3Nl
dF91aW50NjQoZGljdGlvbmFyeS5nZXQoKSwgcHJvdG9jb2xNZXNzYWdlVHlwZUtleSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG1lc3NhZ2VUeXBlKSk7CisgICAgcmV0dXJuIGRpY3Rpb25hcnk7Cit9
CisKK3ZvaWQgQ29ubmVjdGlvbjo6c2VuZChNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgRW5jb2Rl
ZE1lc3NhZ2UmJiBtZXNzYWdlKQoreworICAgIGlmICghbV9jb25uZWN0aW9uKSB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgeHBj
X2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbi5nZXQoKSwgZGljdGlvbmFyeUZy
b21NZXNzYWdlKG1lc3NhZ2VUeXBlLCBXVEZNb3ZlKG1lc3NhZ2UpKS5nZXQoKSk7Cit9CisKK3Zv
aWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgRW5j
b2RlZE1lc3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRNZXNz
YWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9jb25uZWN0aW9uKSB7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKKyAgICB9CisKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5
RnJvbU1lc3NhZ2UobWVzc2FnZVR5cGUsIFdURk1vdmUobWVzc2FnZSkpOworICAgIHhwY19jb25u
ZWN0aW9uX3NlbmRfbWVzc2FnZV93aXRoX3JlcGx5KG1fY29ubmVjdGlvbi5nZXQoKSwgZGljdGlv
bmFyeS5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbWFrZUJsb2NrUHRyKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoeHBjX29iamVjdF90
IHJlcGx5KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHhwY19nZXRfdHlwZShyZXBseSkgIT0gWFBD
X1RZUEVfRElDVElPTkFSWSkgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoeHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXBseSwgcHJvdG9jb2xWZXJzaW9u
S2V5KSAhPSBwcm90b2NvbFZlcnNpb25WYWx1ZSkgeworICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAg
ICAgICAgfQorICAgICAgICBzaXplX3QgZGF0YVNpemUgeyAwIH07CisgICAgICAgIGNvbnN0IHZv
aWQqIGRhdGEgPSB4cGNfZGljdGlvbmFyeV9nZXRfZGF0YShyZXBseSwgcHJvdG9jb2xFbmNvZGVk
TWVzc2FnZUtleSwgJmRhdGFTaXplKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGRhdGFTaXplIH0pOworICAgIH0pLmdldCgp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29j
b2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyQ29jb2EubW0KaW5kZXggZDZi
ZjA2ZTExMWY2YmI1ZjdlZjI4ZjE5NmQyZWUzODAwYzdjOGE0Yy4uYjNiYTFlMjQyNDIwOGU3NTQx
OGMyNzJlNmI2NTQwNzM0MDM2ZDY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
TmV0d29ya0xvYWRlckNvY29hLm1tCkBAIC01Nyw2ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIHByb2Nl
c3NQQ01SZXF1ZXN0KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2Fy
cmllZCwKIAogLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIHRhc2s6
KE5TVVJMU2Vzc2lvblRhc2sgKil0YXNrIGRpZFJlY2VpdmVDaGFsbGVuZ2U6KE5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxD
cmVkZW50aWFsICpjcmVkZW50aWFsKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIC8vIEZJWE1F
OiBBZGQgcGx1Ym1pbmcgc28gdGhhdCB3ZSBjYW4gdGVsbCB0aGUgZGFlbW9uIHdoaWNoIGNlcnRp
ZmljYXRlcyB0byBhY2NlcHQgd2l0aG91dCB1c2luZyBOZXR3b3JrU2Vzc2lvbkNvY29hLgogICAg
IGlmIChbY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCBpc0Vx
dWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0XQogICAgICAg
ICAmJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjphbGxvd3NTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVG
b3JIb3N0KGNoYWxsZW5nZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihOU1VS
TFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVk
ZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNjIyN2I0
NzczNGZlZmYyODUxZTUyMzJkZWUyODEzMzkzN2I0MDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1By
aXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmgKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJ
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKwordm9pZCBhZGRW
ZXJzaW9uQW5kRW5jb2RlZE1lc3NhZ2VUb0RpY3Rpb25hcnkoVmVjdG9yPHVpbnQ4X3Q+JiYsIHhw
Y19vYmplY3RfdCk7CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2Nv
Y29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2
MzAzMWI1YzM2YjcxMjYxODIxNzA0M2ZmOTdkZmY5NDc0YzVkMmMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2Nv
Y29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1tCkBAIC0wLDAgKzEsNTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlByaXZhdGVDbGlj
a01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1l
c3BhY2UgUENNIHsKKwordm9pZCBhZGRWZXJzaW9uQW5kRW5jb2RlZE1lc3NhZ2VUb0RpY3Rpb25h
cnkoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgeHBjX29iamVjdF90IGRpY3Rpb25hcnkpCit7
CisgICAgQVNTRVJUKHhwY19nZXRfdHlwZShkaWN0aW9uYXJ5KSA9PSBYUENfVFlQRV9ESUNUSU9O
QVJZKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRpY3Rpb25hcnksIFBDTTo6cHJv
dG9jb2xWZXJzaW9uS2V5LCBQQ006OnByb3RvY29sVmVyc2lvblZhbHVlKTsKKworICAgIGF1dG8g
YnVmZmVyU2l6ZSA9IG1lc3NhZ2Uuc2l6ZSgpOworICAgIGF1dG8gcmF3UG9pbnRlciA9IG1lc3Nh
Z2UucmVsZWFzZUJ1ZmZlcigpLmxlYWtQdHIoKTsKKyAgICBhdXRvIGRpc3BhdGNoRGF0YSA9IGFk
b3B0TlMoZGlzcGF0Y2hfZGF0YV9jcmVhdGUocmF3UG9pbnRlciwgYnVmZmVyU2l6ZSwgZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgZmFzdEZyZWUocmF3UG9pbnRlcik7Cisg
ICAgfSkpOworICAgIGF1dG8geHBjRGF0YSA9IGFkb3B0T1NPYmplY3QoeHBjX2RhdGFfY3JlYXRl
X3dpdGhfZGlzcGF0Y2hfZGF0YShkaXNwYXRjaERhdGEuZ2V0KCkpKTsKKyAgICB4cGNfZGljdGlv
bmFyeV9zZXRfdmFsdWUoZGljdGlvbmFyeSwgUENNOjpwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5
LCB4cGNEYXRhLmdldCgpKTsKKworfQorCit9IC8vIG5hbWVzcGFjZSBQQ00KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvaW9zL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcklPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9pb3MvTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VySU9TLm1tCmluZGV4IGE3ODk1OWJhYmZhYjdhNWZlMTc0NzFmMWQ5Nzk4MWJjNzA3Zjcz
YmUuLmQ4MjkyNTFhMmEzZTE3Y2VlZDYwNWFmY2U5MTljYzFkZTE2ZDI2MjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9pb3MvTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9pb3MvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VySU9TLm1tCkBAIC0yOSw2
ICsyOSw3IEBACiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8V2ViQ29yZS9W
ZXJzaW9uQ2hlY2tzLmg+CisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29t
LmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KaW5kZXgg
M2I5Nzk0NTUwNzllNDU2ZTM1NDkzZTFlMWU1Y2E0NmI5ZDdlODhlZC4uMTk3NGI4ZTlmMjU5YWVl
ZmM5NDQ2NDY4NGIyMDRkMzUwZjM4ZDQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdv
cmtQcm9jZXNzLnNiLmluCkBAIC0zNTcsNiArMzU3LDggQEAKICAgICAoZ2xvYmFsLW5hbWUgImNv
bS5hcHBsZS5BcHBTU08uc2VydmljZS14cGMiKQogKQogCisoYWxsb3cgbWFjaC1sb29rdXAgKGds
b2JhbC1uYW1lICJjb20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiKSkKKwog
KHdpdGgtZmlsdGVyICh1aWQgMCkKICAgICAoYWxsb3cgbWFjaC1sb29rdXAKICAgICAgICAgKGds
b2JhbC1uYW1lICJjb20uYXBwbGUuRGlza0FyYml0cmF0aW9uLmRpc2thcmJpdHJhdGlvbmQiKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCmluZGV4IGJjZjdjZDE2
M2Q5YmE5MjNkMTgwYTAzZjhhNmVlNDUwZjc2YzFhMWQuLjUzM2U4MDk3MDU0MDU1YjgxYTZjNWVh
MTA5ODFjNWI0ZDQwMjg3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
PSB2b2lkPiBzdHJ1Y3QgQXJndW1lbnRDb2RlciB7CiAgICAgICAgIHQuZW5jb2RlKGVuY29kZXIp
OwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAgICBp
ZiBjb25zdGV4cHIoSGFzTW9kZXJuRGVjb2RlclY8VD4pCkBAIC04Miw2ICs4Myw3IEBAIHN0cnVj
dCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0
aG1ldGljX3Y8VD4+PiB7CiAgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihUKSwgYWxpZ25v
ZihUKSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxUPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAg
ICAgIFQgcmVzdWx0OwpAQCAtMTAwLDYgKzEwMiw3IEBAIHN0cnVjdCBBcmd1bWVudENvZGVyPFQs
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtX3Y8VD4+PiB7CiAgICAgICAg
IGVuY29kZXIgPDwgV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZTxUPih2YWx1ZSk7CiAgICAgfQog
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxUPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxUPj4gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKaW5kZXggODEwZWUyY2U1MWYyN2MyZGJkNjA3
ZTUzMmFhMjZkNjA1NjlhYjI5Yi4uZmZmOWU1ZTNmNmIzZTJlZDU2YjU2NjFlMDMyNzQ5ZWU2MzIz
NmQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNw
cApAQCAtMjcsMTYgKzI3LDIzIEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKIAogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERlY29kZXIuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaCIK
ICNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IElQQyB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiB2b2lkIEFyZ3VtZW50Q29kZXI8
V2FsbFRpbWU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2FsbFRpbWUmIHRpbWUp
CiB7CiAgICAgZW5jb2RlciA8PCB0aW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKTsKIH0K
K3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+OjplbmNvZGU8RW5jb2Rlcj4o
RW5jb2RlciYsIGNvbnN0IFdhbGxUaW1lJik7Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVy
PFdhbGxUaW1lPjo6ZW5jb2RlPFdlYktpdDo6UENNOjpFbmNvZGVyPihXZWJLaXQ6OlBDTTo6RW5j
b2RlciYsIGNvbnN0IFdhbGxUaW1lJik7CiAKIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIEFyZ3Vt
ZW50Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2FsbFRpbWUmIHRp
bWUpCiB7CkBAIC00OCw2ICs1NSw3IEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIEFyZ3VtZW50
Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2FsbFRpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiBXQVJOX1VOVVNFRF9S
RVRVUk4gc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gQXJndW1lbnRDb2RlcjxXYWxsVGltZT46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0aW1l
OwpAQCAtNTYsNiArNjQsMTAgQEAgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8V2Fs
bFRpbWU+IEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGUoRGVjb2QKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKCp0
aW1lKTsKIH0KK3RlbXBsYXRlCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBBcmd1bWVudENvZGVy
PFdhbGxUaW1lPjo6ZGVjb2RlPERlY29kZXI+KERlY29kZXImKTsKK3RlbXBsYXRlCitzdGQ6Om9w
dGlvbmFsPFdhbGxUaW1lPiBBcmd1bWVudENvZGVyPFdhbGxUaW1lPjo6ZGVjb2RlPFdlYktpdDo6
UENNOjpEZWNvZGVyPihXZWJLaXQ6OlBDTTo6RGVjb2RlciYpOwogCiB2b2lkIEFyZ3VtZW50Q29k
ZXI8QXRvbVN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBdG9tU3RyaW5n
JiBhdG9tU3RyaW5nKQogewpAQCAtMTMzLDEyICsxNDUsMTQgQEAgdGVtcGxhdGUKIHZvaWQgQXJn
dW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGU8RW5jb2Rlcj4oRW5jb2RlciYsIGNvbnN0IFN0cmlu
ZyYpOwogdGVtcGxhdGUKIHZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGU8U3RyZWFt
Q29ubmVjdGlvbkVuY29kZXI+KFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyJiwgY29uc3QgU3RyaW5n
Jik7Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZTxXZWJLaXQ6
OlBDTTo6RW5jb2Rlcj4oV2ViS2l0OjpQQ006OkVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKIAot
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlLCB0eXBlbmFtZSBEZWNvZGVyPgogc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBsZW5n
dGgpCiB7CiAgICAgLy8gQmVmb3JlIGFsbG9jYXRpbmcgdGhlIHN0cmluZywgbWFrZSBzdXJlIHRo
YXQgdGhlIGRlY29kZXIgYnVmZmVyIGlzIGJpZyBlbm91Z2guCi0gICAgaWYgKCFkZWNvZGVyLmJ1
ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48Q2hhcmFjdGVyVHlwZT4obGVuZ3RoKSkKKyAgICBp
ZiAoIWRlY29kZXIudGVtcGxhdGUgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxDaGFyYWN0
ZXJUeXBlPihsZW5ndGgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAg
IENoYXJhY3RlclR5cGUqIGJ1ZmZlcjsKQEAgLTE0OSwyNSArMTYzLDMyIEBAIHN0YXRpYyBpbmxp
bmUgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRlY29kZVN0cmluZ1RleHQoRGVjb2RlciYgZGVjb2Rl
ciwgdWludDMyX3QKICAgICByZXR1cm4gc3RyaW5nOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBE
ZWNvZGVyPgogV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBBcmd1bWVu
dENvZGVyPFN0cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIHVpbnQzMl90
IGxlbmd0aDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxlbmd0aCkpCisgICAgc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gbGVuZ3RoOworICAgIGRlY29kZXIgPj4gbGVuZ3RoOworICAgIGlmICgh
bGVuZ3RoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIGlmIChsZW5n
dGggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKSB7CisgICAgaWYgKCps
ZW5ndGggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKSB7CiAgICAgICAg
IC8vIFRoaXMgaXMgdGhlIG51bGwgc3RyaW5nLgogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAg
ICAgfQogICAgIAotICAgIGJvb2wgaXM4Qml0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXM4
Qml0KSkKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzOEJpdDsKKyAgICBkZWNvZGVyID4+IGlz
OEJpdDsKKyAgICBpZiAoIWlzOEJpdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAKLSAgICBpZiAoaXM4Qml0KQotICAgICAgICByZXR1cm4gZGVjb2RlU3RyaW5nVGV4dDxMQ2hh
cj4oZGVjb2RlciwgbGVuZ3RoKTsKLSAgICByZXR1cm4gZGVjb2RlU3RyaW5nVGV4dDxVQ2hhcj4o
ZGVjb2RlciwgbGVuZ3RoKTsKKyAgICBpZiAoKmlzOEJpdCkKKyAgICAgICAgcmV0dXJuIGRlY29k
ZVN0cmluZ1RleHQ8TENoYXI+KGRlY29kZXIsICpsZW5ndGgpOworICAgIHJldHVybiBkZWNvZGVT
dHJpbmdUZXh0PFVDaGFyPihkZWNvZGVyLCAqbGVuZ3RoKTsKIH0KK3RlbXBsYXRlCitzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gQXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNvZGU8RGVjb2Rlcj4oRGVj
b2RlciYpOwordGVtcGxhdGUKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBBcmd1bWVudENvZGVyPFN0
cmluZz46OmRlY29kZTxXZWJLaXQ6OlBDTTo6RGVjb2Rlcj4oV2ViS2l0OjpQQ006OkRlY29kZXIm
KTsKIAogV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgU3RyaW5nJiByZXN1bHQpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRleCBjOTdhNmY1NzZlZmRhZWFlMDRmNjk4
M2JlMjU5NDJjZTIwMzlmZTlmLi5iMTgyYzU0ZWI3ODhkM2Q2OTgxNGFhODA3M2U0ZmYxYWE5ZjM5
MmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAg
LTMwMCw2ICszMDAsNyBAQCBhdXRvIHR1cGxlRnJvbVR1cGxlQW5kT2JqZWN0KFQmJiBvYmplY3Qs
IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JiYgdHVwbGUpCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5
cGUsIHR5cGVuYW1lLi4uIFR5cGVzPgogc3RydWN0IFR1cGxlRGVjb2RlckltcGwgeworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjp0
dXBsZTxUeXBlLCBUeXBlcy4uLj4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAg
ICAgICAgc3RkOjpvcHRpb25hbDxUeXBlPiBvcHRpb25hbDsKQEAgLTMxNyw2ICszMTgsNyBAQCBz
dHJ1Y3QgVHVwbGVEZWNvZGVySW1wbCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CiBzdHJ1
Y3QgVHVwbGVEZWNvZGVySW1wbDxUeXBlPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rl
cj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFR5cGU+PiBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VHlwZT4gb3B0aW9u
YWw7CkBAIC0zMjksNiArMzMxLDcgQEAgc3RydWN0IFR1cGxlRGVjb2RlckltcGw8VHlwZT4gewog
CiB0ZW1wbGF0ZTxzaXplX3Qgc2l6ZSwgdHlwZW5hbWUuLi4gRWxlbWVudHM+CiBzdHJ1Y3QgVHVw
bGVEZWNvZGVyIHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+PiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKICAgICB7CiAgICAgICAgIHJldHVybiBUdXBsZURlY29kZXJJbXBsPEVsZW1lbnRzLi4u
Pjo6ZGVjb2RlKGRlY29kZXIpOwpAQCAtMzM3LDYgKzM0MCw3IEBAIHN0cnVjdCBUdXBsZURlY29k
ZXIgewogCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgVHVwbGVEZWNvZGVyPDA+IHsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8
Pj4gZGVjb2RlKERlY29kZXImKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBs
ZSgpOwpAQCAtMzUwLDYgKzM1NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1lbnRzPiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj4gewogICAgICAgICBU
dXBsZUVuY29kZXI8c2l6ZW9mLi4uKEVsZW1lbnRzKSwgRWxlbWVudHMuLi4+OjplbmNvZGUoZW5j
b2RlciwgdHVwbGUpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxFbGVtZW50cy4uLj4+IGRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIFR1cGxlRGVjb2RlcjxzaXpl
b2YuLi4oRWxlbWVudHMpLCBFbGVtZW50cy4uLj46OmRlY29kZShkZWNvZGVyKTsKQEAgLTcyMSw4
ICs3MjYsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHlwZXM+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdURjo6VmFyaWFudDxUeXBlcy4uLj4+IHsKIH07CiAgICAgCiB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdhbGxUaW1lPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rl
cj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdhbGxUaW1lJik7CiAg
ICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2FsbFRp
bWUmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFdhbGxUaW1lPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIApAQCAtNzQwLDYgKzc0Nyw3
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U3RyaW5nPiB7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUo
RGVjb2RlciYsIFN0cmluZyYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiAgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLTWFpbi5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLTWFpbi5oCmluZGV4IDdhOTI3Yzc3ZDI2ZDg1NWI0
YjZmZWFkYTk4MDNhMDQ3Y2VlOGI1YzMuLjRiZTc5ZDJhNWJkMGU3MDRmOWEzYmM0ODNiMmQyNThj
ZDQ4ZWRiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS01h
aW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tNYWluLmgKQEAgLTMz
LDYgKzMzLDcgQEAgZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAogV0tfRVhQT1JUIGludCBXS1hQQ1Nl
cnZpY2VNYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiogYXJndikgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xNSksIGlvcygxMy4wKSk7CitXS19FWFBPUlQgaW50IFdLUENNRGFlbW9uTWFpbihp
bnQgYXJnYywgY29uc3QgY2hhcioqIGFyZ3YpIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLTWFpbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS01haW4ubW0KaW5kZXggZTQ4MDVhNDhkNTE0MDZhZDU5
NTY2YjM3N2JlMjUzOTgyYTlhZWI5MC4uNDY4MDFkYmZmY2U2YjgyNmNkMTBkY2FhZGEzMzBkNmY1
ZmRmMThiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLTWFp
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tNYWluLm1tCkBAIC0y
Niw5ICsyNiwxNSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS01haW4uaCIKIAor
I2ltcG9ydCAiUENNRGFlbW9uRW50cnlQb2ludC5oIgogI2ltcG9ydCAiWFBDU2VydmljZUVudHJ5
UG9pbnQuaCIKIAogaW50IFdLWFBDU2VydmljZU1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqKiBh
cmd2KQogewogICAgIHJldHVybiBXZWJLaXQ6OlhQQ1NlcnZpY2VNYWluKGFyZ2MsIGFyZ3YpOwog
fQorCitpbnQgV0tQQ01EYWVtb25NYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiogYXJndikKK3sK
KyAgICByZXR1cm4gV2ViS2l0OjpQQ01EYWVtb25NYWluKGFyZ2MsIGFyZ3YpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVt
b24vUENNRGFlbW9uRW50cnlQb2ludC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ4YzkxMjBiZjVjY2JjMTcxZjlhNWNkOWVkMTJlN2NkMDM5NmUzNDUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1v
bi9QQ01EYWVtb25FbnRyeVBvaW50LmgKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworaW50IFBDTURhZW1vbk1haW4oaW50
LCBjb25zdCBjaGFyKiopOworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURh
ZW1vbkVudHJ5UG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0
aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmMjMy
MWRlNWIxOWMxYzE2NzQ5YmZkNmE2MzQ2NGY4NGVkNTI0NTcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01E
YWVtb25FbnRyeVBvaW50Lm1tCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJQQ01EYWVtb25FbnRyeVBvaW50LmgiCisKKyNpbXBvcnQg
IlByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oIgorI2ltcG9ydCAiUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgiCisjaW1wb3J0ICJQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oIgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CisjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbXBvcnQgPHd0Zi9IYXNo
U2V0Lmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvRW50
aXRsZW1lbnRzLmg+CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKworLy8gRklY
TUU6IEFkZCBkYWVtb24gcGxpc3QgdG8gcmVwb3NpdG9yeS4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3N0YXRpYyBIYXNoU2V0PFJldGFpblB0cjx4cGNfY29ubmVjdGlvbl90Pj4mIHBlZXJzKCkK
K3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PFJldGFpblB0cjx4cGNfY29ubmVjdGlvbl90Pj4+IHNldDsKKyAgICByZXR1
cm4gc2V0LmdldCgpOworfQorCitzdGF0aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQQ006OkVu
Y29kZWRNZXNzYWdlJiYpPiByZXBseVNlbmRlcihQQ006Ok1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBl
LCBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+JiYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIVBDTTo6
bWVzc2FnZVR5cGVTZW5kc1JlcGx5KG1lc3NhZ2VUeXBlKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KV0gKFBDTTo6RW5jb2Rl
ZE1lc3NhZ2UmJiBtZXNzYWdlKSB7CisgICAgICAgIGF1dG8gcmVwbHkgPSBhZG9wdE9TT2JqZWN0
KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZV9yZXBseShyZXF1ZXN0LmdldCgpKSk7CisgICAgICAgIFBD
TTo6YWRkVmVyc2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KFdURk1vdmUobWVzc2Fn
ZSksIHJlcGx5LmdldCgpKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKHhw
Y19kaWN0aW9uYXJ5X2dldF9yZW1vdGVfY29ubmVjdGlvbihyZXF1ZXN0LmdldCgpKSwgcmVwbHku
Z2V0KCkpOworICAgIH07Cit9CisKK3N0YXRpYyB2b2lkIGNvbm5lY3Rpb25FdmVudEhhbmRsZXIo
eHBjX29iamVjdF90IHJlcXVlc3QpCit7CisgICAgaWYgKHhwY19nZXRfdHlwZShyZXF1ZXN0KSAh
PSBYUENfVFlQRV9ESUNUSU9OQVJZKQorICAgICAgICByZXR1cm47CisgICAgaWYgKHhwY19kaWN0
aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgUENNOjpwcm90b2NvbFZlcnNpb25LZXkpICE9IFBD
TTo6cHJvdG9jb2xWZXJzaW9uVmFsdWUpIHsKKyAgICAgICAgTlNMb2coQCJyZWNlaXZlZCByZXF1
ZXN0IHRoYXQgd2FzIG5vdCB0aGUgY3VycmVudCBwcm90b2NvbCB2ZXJzaW9uIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIG1lc3NhZ2VUeXBlIHsgc3RhdGljX2Nhc3Q8UENN
OjpNZXNzYWdlVHlwZT4oeHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXF1ZXN0LCBQQ006OnBy
b3RvY29sTWVzc2FnZVR5cGVLZXkpKSB9OworICAgIHNpemVfdCBkYXRhU2l6ZSB7IDAgfTsKKyAg
ICBjb25zdCB2b2lkKiBkYXRhID0geHBjX2RpY3Rpb25hcnlfZ2V0X2RhdGEocmVxdWVzdCwgUENN
Ojpwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5LCAmZGF0YVNpemUpOworICAgIFBDTTo6RW5jb2Rl
ZE1lc3NhZ2UgZW5jb2RlZE1lc3NhZ2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSksIGRhdGFTaXplIH07CisgICAgZGVjb2RlTWVzc2FnZUFuZFNlbmRUb01hbmFnZXIobWVzc2Fn
ZVR5cGUsIFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpLCByZXBseVNlbmRlcihtZXNzYWdlVHlwZSwg
cmVxdWVzdCkpOworfQorCitzdGF0aWMgdm9pZCBzdGFydExpc3RlbmluZ0Zvck1hY2hTZXJ2aWNl
Q29ubmVjdGlvbnMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPU09iamVjdFB0cjx4
cGNfY29ubmVjdGlvbl90Pj4gbGlzdGVuZXIgPSB4cGNfY29ubmVjdGlvbl9jcmVhdGVfbWFjaF9z
ZXJ2aWNlKCJjb20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiLCBkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBYUENfQ09OTkVDVElPTl9NQUNIX1NFUlZJQ0VfTElTVEVORVIp
OworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKGxpc3RlbmVyLmdldCgpLmdl
dCgpLCBeKHhwY19vYmplY3RfdCBwZWVyKSB7CisgICAgICAgIGlmICh4cGNfZ2V0X3R5cGUocGVl
cikgIT0gWFBDX1RZUEVfQ09OTkVDVElPTikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAvLyBGSVhNRTogQWRkIGFuIGVudGl0bGVtZW50IGNoZWNrIGhlcmUgc28gdGhhdCBvbmx5IHRo
ZSBuZXR3b3JrIHByb2Nlc3MgY2FuIHN1Y2Nlc3NmdWxseSBjb25uZWN0LgorCisgICAgICAgIHhw
Y19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKHBlZXIsIF4oeHBjX29iamVjdF90IGV2ZW50
KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQgPT0gWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5URVJS
VVBURUQpIHsKKyAgICAgICAgICAgICAgICBwZWVycygpLnJlbW92ZShwZWVyKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb25uZWN0aW9uRXZl
bnRIYW5kbGVyKGV2ZW50KTsKKyAgICAgICAgfSk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX3Nl
dF90YXJnZXRfcXVldWUocGVlciwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CisgICAgICAg
IHhwY19jb25uZWN0aW9uX2FjdGl2YXRlKHBlZXIpOworICAgICAgICAKKyAgICAgICAgcGVlcnMo
KS5hZGQocGVlcik7CisgICAgfSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fYWN0aXZhdGUobGlzdGVu
ZXIuZ2V0KCkuZ2V0KCkpOworfQorCitzdGF0aWMgdm9pZCByZWdpc3RlclNjaGVkdWxlZEFjdGl2
aXR5SGFuZGxlcigpCit7CisgICAgeHBjX2FjdGl2aXR5X3JlZ2lzdGVyKCJjb20uYXBwbGUud2Vi
a2l0LmFkYXR0cmlidXRpb25kLmFjdGl2aXR5IiwgWFBDX0FDVElWSVRZX0NIRUNLX0lOLCBeKHhw
Y19hY3Rpdml0eV90IGFjdGl2aXR5KSB7CisgICAgICAgIGlmICh4cGNfYWN0aXZpdHlfZ2V0X3N0
YXRlKGFjdGl2aXR5KSA9PSBYUENfQUNUSVZJVFlfU1RBVEVfQ0hFQ0tfSU4pIHsKKyAgICAgICAg
ICAgIHhwY19vYmplY3RfdCBjcml0ZXJpYSA9IHhwY19hY3Rpdml0eV9jb3B5X2NyaXRlcmlhKGFj
dGl2aXR5KTsKKworICAgICAgICAgICAgLy8gRklYTUU6IHNldCB2YWx1ZXMgaGVyZSB0aGF0IGFs
aWduIHdpdGggdmFsdWVzIGZyb20gdGhlIHBsaXN0LgorCisgICAgICAgICAgICB4cGNfYWN0aXZp
dHlfc2V0X2NyaXRlcmlhKGFjdGl2aXR5LCBjcml0ZXJpYSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRTogQWRkIGNvZGUgaGVyZSB0aGF0IGRvZXMg
ZGFpbHkgdGFza3Mgb2YgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLgorICAgIH0pOwor
fQorCitzdGF0aWMgdm9pZCBlbnRlclNhbmRib3goKQoreworICAgIC8vIEZJWE1FOiBFbnRlciBh
IHNhbmRib3ggaGVyZS4gV2Ugc2hvdWxkIG9ubHkgbmVlZCByZWFkL3dyaXRlIGFjY2VzcyB0byBv
dXIgZGF0YWJhc2UgYW5kIG5ldHdvcmsgYWNjZXNzIGFuZCBub3RoaW5nIGVsc2UuCit9CisKK2lu
dCBQQ01EYWVtb25NYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiogYXJndikKK3sKKyAgICBpZiAo
YXJnYyAhPSAyIHx8IHN0cmNtcChhcmd2WzFdLCAicnVuQXNEYWVtb24iKSkgeworICAgICAgICBO
U0xvZyhAIlRoaXMgZXhlY3V0YWJsZSBpcyBpbnRlbmRlZCB0byBiZSBydW4gYXMgYSBkYWVtb24u
Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgIGVudGVyU2FuZGJveCgpOworICAgICAgICBzdGFydExpc3RlbmluZ0Zvck1hY2hTZXJ2
aWNlQ29ubmVjdGlvbnMoKTsKKyAgICAgICAgcmVnaXN0ZXJTY2hlZHVsZWRBY3Rpdml0eUhhbmRs
ZXIoKTsKKyAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOworICAgIH0KKyAgICBD
RlJ1bkxvb3BSdW4oKTsKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAppbmRleCAyNDEyYmJmYWQ4ZTVmODExYjUxZTgyZjYwZDFjNTQ2MTlhMjE4ODM5
Li5jZmFiY2UwNWIyNGQwNzg5ODA2ZjE0YWFlOTA4NzFhYzIwYTg3ZGVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
QEAgLTEwMSw4ICsxMDEsMTQgQEAgTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJbXBsLmNwcAogTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5j
cHAKIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RGVidWdJbmZvLmNwcAogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50
ZXJmYWNlLmNwcAogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmNwcAogTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKK05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50
Q29ubmVjdGlvbi5jcHAKK05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcAorTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmNwcAor
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRFbmNvZGVyLmNwcAorTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuY3BwCiAKIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgQG5vLXVuaWZ5CiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDg5MTM4MzRmNmJiNWY5MzllNzIwYjA5ZWZjYjAy
Yzk1NDRmODRhYWEuLjExZTcyOTY4NGU0YTJhZGYwYjVjYjg5M2FkNjc5MWQ5MDA1ODI2MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQxLDcgKzQxLDkgQEAgTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQv
Q29jb2EvRGFlbW9uL0RhZW1vbkVudHJ5UG9pbnQubW0KIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9p
bnQvQ29jb2EvWFBDU2VydmljZS9OZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0KIAorTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW0KIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNv
Y29hLm1tCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5tbQogCiBOZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL2lvcy9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXJJT1MubW0KIApAQCAtMTkxLDYg
KzE5Myw4IEBAIFNoYXJlZC9Db2NvYS9XS05TVVJMUmVxdWVzdC5tbQogU2hhcmVkL0NvY29hL1dL
T2JqZWN0Lm1tCiBTaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2Eu
bW0KIAorU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkVu
dHJ5UG9pbnQubW0KKwogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vydmlj
ZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29j
b2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjZjllMGRmNTRiZjY4YjI1MDAxYzZj
YzFkOWViY2I3M2FlMjExNzNmLi5mNjhiNGNmYjQ4NWQ2ZjhiZjM2MjhkMDU2YjlmM2Q3MDQwNjIy
ZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEyOTEsNiArMTI5MSw3IEBACiAJCTVDQjdBRkUwMjNDNTJDRTUwMEU0OUNGMyAvKiBf
V0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNCN0FGREYyM0M1MkNCQzAwRTQ5Q0YzIC8qIF9XS1Jlc291cmNlTG9h
ZERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNUNCN0FGRTcyM0M2ODIwNzAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZEluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjdBRkU2MjNDNjgx
QjAwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRJbmZvLmggKi87IH07CiAJCTVDQjdBRkU4MjNDNjlC
NjEwMEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I3QUZFMzIzQzY3RDM3MDBFNDlDRjMgLyogX1dL
UmVzb3VyY2VMb2FkSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTVDQjkzMTA5MjZFODQzOUEwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFhQQ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUNCOTMxMDcyNkU4NDFDQjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1
cmVtZW50WFBDVXRpbGl0aWVzLmggKi87IH07CiAJCTVDQkM5QjhFMUM2NTJDQTAwMEE4RkRDRiAv
KiBOZXR3b3JrRGF0YVRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2suaCAq
LzsgfTsKIAkJNUNCRDU5NUMyMjgwRURGNDAwMkIyMkFBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxk
cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNUQy
Mzg4MjI3QTE4OTIwMDBCOUJEQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gKi87IH07CiAJ
CTVDRDI4NjUxMUU3MjM1OTkwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0QyODY0RDFFNzIy
RjQ0MDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3RTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTQ1NTYsNiArNDU1NywyMyBAQAogCQk1
Q0I5MzBDMDI2RTA1NDJGMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJ
bXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVDbGlj
a01lYXN1cmVtZW50Q2xpZW50SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDQjkzMEMxMjZFMDU0QjgwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVu
dEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRDbGllbnRJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjkz
MEYyMjZFN0VFRTAwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2Fk
ZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByaXZh
dGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1Q0I5MzBGNDI2RTgwMUU4MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRjUyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEY2MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1Q0I5MzBGNzI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREYWVtb25DbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBGODI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEY5MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEVuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRkEyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRkIyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRkMyNkU4MDIxNjAwMzJCMUMwIC8qIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I5MzBGRDI2RTgwMjE2MDAzMkIxQzAgLyog
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1Q0I5MzBGRTI2RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1Q0I5MzBGRjI2RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVD
bGlja01lYXN1cmVtZW50RW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
Q0I5MzEwNDI2RTgzN0ZDMDAzMkIxQzAgLyogUENNRGFlbW9uRW50cnlQb2ludC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQQ01EYWVtb25FbnRyeVBvaW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMTA1MjZFODM3RkQwMDMyQjFDMCAvKiBQQ01EYWVt
b25FbnRyeVBvaW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UENNRGFlbW9uRW50cnlQb2ludC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNC
OTMxMDYyNkU4MzlBOTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcklu
dGVyZmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1Q0I5MzEwNzI2RTg0MUNCMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRYUENVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUNCOTMxMDgyNkU4NDFDQjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50WFBDVXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRh
c2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0RhdGFUYXNrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkM5QjhCMUM2NTI1NzMwMEE4RkRDRiAv
KiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IE5ldHdvcmtEYXRhVGFza0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1Q0JFOTA4RjI2RDdGQjYyMDA1QTJFOTUgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnREZWJ1Z0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTkyNjUsMTIgKzkyODMsMjQgQEAKIAkJCQk1Q0I5MzBCRjI2RTA1NDJFMDAzMkIxQzAgLyogUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnQuaCAqLywKIAkJCQk1Q0I5MzBDMDI2RTA1NDJGMDAz
MkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJbXBsLmNwcCAqLywKIAkJCQk1
Q0I5MzBDMTI2RTA1NEI4MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJ
bXBsLmggKi8sCisJCQkJNUNCOTMwRkMyNkU4MDIxNjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01l
YXN1cmVtZW50Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNUNCOTMwRkUyNkU4MDIxNjAwMzJCMUMw
IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oICovLAorCQkJCTVDQjkzMEY3
MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5j
cHAgKi8sCisJCQkJNUNCOTMwRjYyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1
cmVtZW50RGFlbW9uQ2xpZW50LmggKi8sCiAJCQkJNUM4MjZENkEyNkQ0ODJFQTAwOEFFQzkxIC8q
IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwICovLAogCQkJCTVDODI2RDY5MjZE
NDgyRUEwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggKi8sCiAJ
CQkJNUNCRTkwOTAyNkQ3RkI3QzAwNUEyRTk1IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVi
dWdJbmZvLmNwcCAqLywKIAkJCQk1Q0JFOTA4RjI2RDdGQjYyMDA1QTJFOTUgLyogUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREZWJ1Z0luZm8uaCAqLywKKwkJCQk1Q0I5MzBGODI2RTgwMjE1MDAzMkIx
QzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmNwcCAqLywKKwkJCQk1Q0I5MzBG
RDI2RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmggKi8s
CisJCQkJNUNCOTMwRjkyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50
RW5jb2Rlci5jcHAgKi8sCisJCQkJNUNCOTMwRkYyNkU4MDIxNjAwMzJCMUMwIC8qIFByaXZhdGVD
bGlja01lYXN1cmVtZW50RW5jb2Rlci5oICovLAogCQkJCTZCRDA1ODY0MjIwQ0U4QzIwMDBCRUQ1
QyAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwICovLAogCQkJCTZCRDA1ODYz
MjIwQ0U4QzIwMDBCRUQ1QyAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCAqLywK
KwkJCQk1Q0I5MzEwNjI2RTgzOUE5MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VySW50ZXJmYWNlLmNwcCAqLywKKwkJCQk1Q0I5MzBGQTI2RTgwMjE1MDAzMkIxQzAgLyog
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmggKi8sCisJCQkJNUNCOTMw
RkIyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5
LmNwcCAqLywKKwkJCQk1Q0I5MzBGNTI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyUHJveHkuaCAqLywKIAkJCQk1N0ZFNjg4QjI2MEFCQjNEMDBCRjQ1RTQg
LyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmNwcCAqLywKIAkJCQk1N0ZF
Njg4QTI2MEFCQjNEMDBCRjQ1RTQgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9h
ZGVyLmggKi8sCiAJCQkJNUM4MjZENjcyNkQ0NkI0MzAwOEFFQzkxIC8qIFByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RvcmUuY3BwICovLApAQCAtOTM1OCwxMSArOTM4OCwyNCBAQAogCQk1Q0I5MzBG
MTI2RTdFRTg5MDAzMkIxQzAgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTVDQjkzMEY0MjZFODAxRTgwMDMyQjFDMCAvKiBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbSAqLywKIAkJCQk1Q0I5MzBGMjI2
RTdFRUUwMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyQ29j
b2EubW0gKi8sCisJCQkJNUNCOTMxMDcyNkU4NDFDQjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01l
YXN1cmVtZW50WFBDVXRpbGl0aWVzLmggKi8sCisJCQkJNUNCOTMxMDgyNkU4NDFDQjAwMzJCMUMw
IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1tICovLAogCQkJKTsKIAkJ
CXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTVDQjkz
MTAzMjZFODM3NUIwMDMyQjFDMCAvKiBEYWVtb24gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTVDQjkzMTA0MjZFODM3RkMwMDMyQjFDMCAvKiBQQ01EYWVt
b25FbnRyeVBvaW50LmggKi8sCisJCQkJNUNCOTMxMDUyNkU4MzdGRDAwMzJCMUMwIC8qIFBDTURh
ZW1vbkVudHJ5UG9pbnQubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IERhZW1vbjsKKwkJCXBhdGgg
PSBDb2NvYS9EYWVtb247CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk2QkU5
NjlCRjFFNTRENDUyMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xMDgxOCw2ICsxMDg2MSw3IEBA
CiAJCUJDODI4MzY4MTZCMzU4NzkwMEEyNzhGRSAvKiBFbnRyeVBvaW50VXRpbGl0aWVzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1Q0I5MzEwMzI2RTgz
NzVCMDAzMkIxQzAgLyogRGFlbW9uICovLAogCQkJCUJDODI4MzZCMTZCMzU4NzkwMEEyNzhGRSAv
KiBYUENTZXJ2aWNlICovLAogCQkJCTVDRTkxMjBGMjI5M0MyNUYwMDVCRUM3OCAvKiBBdXhpbGlh
cnlQcm9jZXNzTWFpbi5jcHAgKi8sCiAJCQkpOwpAQCAtMTIzNjQsNiArMTI0MDgsNyBAQAogCQkJ
CTZCRDA1ODY1MjIwQ0U4QzIwMDBCRUQ1QyAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkU2ODhDMjYwQUJCM0QwMEJGNDVFNCAvKiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
ODI2RDZCMjZENDgyRUYwMDhBRUM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1Q0I5MzEwOTI2RTg0MzlBMDAzMkIxQzAgLyogUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2Rjk1MzY1
MThGRjU4RjUwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzFBN0M1ODExMzZFMTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xhdW5jaGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0NjNGRDQ4MjFFQjk0RUMwMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9u
UmVhc29uLmggaW4gSGVhZGVycyAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>