<?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>236338</bug_id>
          
          <creation_ts>2022-02-08 15:46:18 -0800</creation_ts>
          <short_desc>Account for the sub grid&apos;s margin/border/padding on descendant items</short_desc>
          <delta_ts>2022-02-17 16:56:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://github.com/web-platform-tests/wpt/pull/32586</see_also>
          <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>
          <dependson>236337</dependson>
          <blocked>202115</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Woodrow">mattwoodrow</reporter>
          <assigned_to name="Matt Woodrow">mattwoodrow</assigned_to>
          <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jean-yves.avenard</cc>
    
    <cc>jfernandez</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>rego</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1838927</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-08 15:46:18 -0800</bug_when>
    <thetext>When children of a sub grid are included into an outer grid&apos;s track sizing algorthim, we need to account for the margin/border/padding of the subgrid element itself as part of their intrinsic size.

https://drafts.csswg.org/css-grid-2/#subgrid-item-contribution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841531</commentid>
    <comment_count>1</comment_count>
      <attachid>451979</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-14 19:24:34 -0800</bug_when>
    <thetext>Created attachment 451979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841532</commentid>
    <comment_count>2</comment_count>
      <attachid>451980</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-14 19:25:14 -0800</bug_when>
    <thetext>Created attachment 451980
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841836</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2022-02-15 11:30:14 -0800</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841899</commentid>
    <comment_count>4</comment_count>
      <attachid>452078</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-15 13:09:29 -0800</bug_when>
    <thetext>Created attachment 452078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841989</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-15 15:47:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/88991969&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842128</commentid>
    <comment_count>6</comment_count>
      <attachid>452078</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2022-02-15 21:51:03 -0800</bug_when>
    <thetext>Comment on attachment 452078
Patch

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

&gt; LayoutTests/imported/w3c/ChangeLog:12
&gt; +        * web-platform-tests/css/css-grid/subgrid/abs-pos-002-expected.html:
&gt; +        * web-platform-tests/css/css-grid/subgrid/abs-pos-003-expected.html:
&gt; +        * web-platform-tests/css/css-grid/subgrid/line-names-008.html:
&gt; +        * web-platform-tests/css/css-grid/subgrid/parent-repeat-auto-fit-001.html:
&gt; +        * web-platform-tests/css/css-grid/subgrid/parent-repeat-auto-fit-002.html:

What&apos;s the plan for getting these changes merged back?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842529</commentid>
    <comment_count>7</comment_count>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-16 14:36:16 -0800</bug_when>
    <thetext>(In reply to Dean Jackson from comment #6)
&gt; Comment on attachment 452078 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=452078&amp;action=review
&gt; 
&gt; &gt; LayoutTests/imported/w3c/ChangeLog:12
&gt; &gt; +        * web-platform-tests/css/css-grid/subgrid/abs-pos-002-expected.html:
&gt; &gt; +        * web-platform-tests/css/css-grid/subgrid/abs-pos-003-expected.html:
&gt; &gt; +        * web-platform-tests/css/css-grid/subgrid/line-names-008.html:
&gt; &gt; +        * web-platform-tests/css/css-grid/subgrid/parent-repeat-auto-fit-001.html:
&gt; &gt; +        * web-platform-tests/css/css-grid/subgrid/parent-repeat-auto-fit-002.html:
&gt; 
&gt; What&apos;s the plan for getting these changes merged back?

For better or for worse, I figured out these test changes weeks before I had any sort of sanely reviewable WebKit changes, so I uploaded most of them directly to WPT.

I&apos;ve linked this bug with the WPT pull request for line-names-008.html, but there&apos;s also two other WPT pull requests covering these changes.

https://github.com/web-platform-tests/wpt/pull/32611
https://github.com/web-platform-tests/wpt/pull/32585

I&apos;m not sure if I can link multiple WPT pull requests to a single bug, and I&apos;m scared to risk trying and breaking things.

Hopefully those extra two will get approved and pushed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843036</commentid>
    <comment_count>8</comment_count>
      <attachid>452407</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-17 12:19:06 -0800</bug_when>
    <thetext>Created attachment 452407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843181</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-17 16:55:56 -0800</bug_when>
    <thetext>Committed r290096 (247446@main): &lt;https://commits.webkit.org/247446@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452407.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451979</attachid>
            <date>2022-02-14 19:24:34 -0800</date>
            <delta_ts>2022-02-15 13:09:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236338-20220215162432.patch</filename>
            <type>text/plain</type>
            <size>34642</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFlMDJmNGE1ZDQzMTc4
MDg0YjVhMmE3YTFjYzYyYWMyYmQ2ZjZlNS4uMTdiOTZjYjI2ZjViNDM5MmU1ZWNmNDdmOGUzODdi
NTFiMDVlMjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIyLTAyLTE0ICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgQWNjb3VudCBmb3Ig
c3ViZ3JpZCBNQlAgd2hlbiBzaXppbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNjMzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZHMgZXh0cmEgbWFyZ2luIHRvIHN1YmdyaWQgaXRlbXMgcGFydGlj
aXBhdGluZyBpbiB0aGUgc2l6aW5nIG9mIGFuIG91dGVyCisgICAgICAgIGdyaWQncyB0cmFja3Mg
dG8gYWNjb3VudCBmb3IgdGhlIG1hcmdpbi9ib3JkZXIvcGFkZGluZyBvZiB0aGUgaW50ZXJtZWRp
YXRlCisgICAgICAgIHN1YmdyaWQgaXRlbSBpdHNlbGYuCisgICAgICAgIEFsc28gY29udHJpYnV0
ZXMgdGhlIHN1YmdyaWQncyBtL2IvcCB0byB0aGUgZWRnZSB0cmFja3MgaXQgY292ZXIsIGV2ZW4K
KyAgICAgICAgaWYgbm8gaW5uZXIgaXRlbXMgb2NjdXB5IHRoYXQgdHJhY2suCisKKyAgICAgICAg
KiByZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmlkTGF5b3V0RnVuY3Rpb25zOjpkaXJlY3Rpb25Gcm9tU2lkZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmlkTGF5b3V0RnVuY3Rpb25zOjpoYXNSZWxhdGl2ZU9ySW50cmluc2ljU2l6ZUZvckNoaWxk
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRMYXlvdXRGdW5jdGlvbnM6OmV4dHJhTWFyZ2luRm9y
U3ViZ3JpZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRMYXlvdXRGdW5jdGlvbnM6Omdh
cERpZmZlcmVuY2VGb3JTdWJncmlkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZExheW91
dEZ1bmN0aW9uczo6bWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZCk6CisgICAgICAgICogcmVuZGVy
aW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRP
dmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVneTo6bG9naWNhbEhlaWdodEZv
ckNoaWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bVN0cmF0ZWd5Ojp1cGRhdGVPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JD
aGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZWZpbml0ZVNpemVTdHJhdGVneTo6bWlu
TG9naWNhbFNpemVGb3JDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZWZpbml0ZVNp
emVTdHJhdGVneTo6bWluQ29udGVudEZvckNoaWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OmFkZFN1YmdyaWRNYXJnaW5Cb3JkZXJQYWRkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRU
cmFja1NpemluZ0FsZ29yaXRobTo6YWNjdW11bGF0ZUludHJpbnNpY1NpemVzRm9yVHJhY2spOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckdyaWQ6OmlzU3ViZ3JpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjptYXlCZVN1YmdyaWRFeGNsdWRpbmdBYnNQb3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6Z3JpZFNwYW5Db3ZlcnNSZWFsVHJhY2tzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckdyaWQ6OmdyaWRBcmVhQnJlYWR0aEZvck91dE9mRmxvd0NoaWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVDb250ZW50UG9zaXRpb25BbmREaXN0
cmlidXRpb25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Z3JpZFNwYW5G
b3JDaGlsZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorCiAyMDIyLTAyLTE1ICBN
YXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CiAKICAgICAgICAgSW5jbHVkZSBz
dWJncmlkIGl0ZW1zIGluIGludHJpbnNpYyBzaXplIGNhbGN1bGF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5jcHAKaW5kZXggYWY2YjFmOGQ1
ZmVjYzhkODQ1NmJmNDYxOWFlOTMzNDVmZmNkODRiYS4uODlkY2M2ZGQzOGM2MDBhZWJlZjQ3ZDY0
MTNlZmVjMzFhOTY1N2IzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dy
aWRMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Hcmlk
TGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtNjYsMTUgKzY2LDgzIEBAIExheW91dFVuaXQgY29tcHV0
ZU1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyR3JpZCYgZ3JpZCwgR3JpZFRy
YWNrU2l6CiAgICAgcmV0dXJuIG1hcmdpblN0YXJ0SXNBdXRvKGNoaWxkLCBmbG93QXdhcmVEaXJl
Y3Rpb24pID8gbWFyZ2luRW5kIDogbWFyZ2luRW5kSXNBdXRvKGNoaWxkLCBmbG93QXdhcmVEaXJl
Y3Rpb24pID8gbWFyZ2luU3RhcnQgOiBtYXJnaW5TdGFydCArIG1hcmdpbkVuZDsKIH0KIAorc3Rh
dGljIGlubGluZSBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uRnJvbVNpZGUoR3Jp
ZFBvc2l0aW9uU2lkZSBzaWRlKQoreworICAgIHJldHVybiBzaWRlID09IENvbHVtblN0YXJ0U2lk
ZSB8fCBzaWRlID09IENvbHVtbkVuZFNpZGUgPyBGb3JDb2x1bW5zIDogRm9yUm93czsKK30KKwor
c3RhdGljIGJvb2wgaGFzUmVsYXRpdmVPckludHJpbnNpY1NpemVGb3JDaGlsZChjb25zdCBSZW5k
ZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAg
IGlmIChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykKKyAgICAgICAgcmV0dXJuIGNoaWxkLmhhc1Jl
bGF0aXZlTG9naWNhbFdpZHRoKCkgfHwgY2hpbGQuc3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5pc0lu
dHJpbnNpY09yQXV0bygpOworICAgIHJldHVybiBjaGlsZC5oYXNSZWxhdGl2ZUxvZ2ljYWxIZWln
aHQoKSB8fCBjaGlsZC5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0ludHJpbnNpY09yQXV0bygp
OworfQorCitzdGF0aWMgTGF5b3V0VW5pdCBleHRyYU1hcmdpbkZvclN1YmdyaWRDaGlsZChjb25z
dCBSZW5kZXJHcmlkJiBwYXJlbnQsIHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgZW5kTGlu
ZSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICB1bnNpZ25lZCBu
dW1UcmFja3MgPSBwYXJlbnQubnVtVHJhY2tzKGRpcmVjdGlvbik7CisgICAgaWYgKCFudW1UcmFj
a3MgfHwgIXBhcmVudC5pc1N1YmdyaWQoZGlyZWN0aW9uKSkKKyAgICAgICAgcmV0dXJuIDBfbHU7
CisKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNwYWNlOworICAgIGlm
ICghaGFzUmVsYXRpdmVPckludHJpbnNpY1NpemVGb3JDaGlsZChwYXJlbnQsIGRpcmVjdGlvbikp
CisgICAgICAgIGF2YWlsYWJsZVNwYWNlID0gcGFyZW50LmF2YWlsYWJsZVNwYWNlRm9yR3V0dGVy
cyhkaXJlY3Rpb24pOworCisgICAgUmVuZGVyR3JpZCYgZ3JhbmRQYXJlbnQgPSBkb3duY2FzdDxS
ZW5kZXJHcmlkPigqcGFyZW50LnBhcmVudCgpKTsKKyAgICBMYXlvdXRVbml0IG1icDsKKyAgICBp
ZiAoIXN0YXJ0TGluZSkKKyAgICAgICAgbWJwICs9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykg
PyBwYXJlbnQuYm9yZGVyU3RhcnQoKSArIHBhcmVudC5tYXJnaW5TdGFydCgpICsgcGFyZW50LnBh
ZGRpbmdTdGFydCgpIDogcGFyZW50LmJvcmRlckJlZm9yZSgpICsgcGFyZW50Lm1hcmdpbkJlZm9y
ZSgpICsgcGFyZW50LnBhZGRpbmdCZWZvcmUoKTsKKyAgICBlbHNlCisgICAgICAgIG1icCArPSAo
cGFyZW50LmdyaWRHYXAoZGlyZWN0aW9uLCBhdmFpbGFibGVTcGFjZSkgLSBncmFuZFBhcmVudC5n
cmlkR2FwKGRpcmVjdGlvbikpIC8gMjsKKworICAgIGlmIChlbmRMaW5lID09IG51bVRyYWNrcykK
KyAgICAgICAgbWJwICs9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBwYXJlbnQuYm9yZGVy
RW5kKCkgKyBwYXJlbnQubWFyZ2luRW5kKCkgKyBwYXJlbnQucGFkZGluZ0VuZCgpIDogcGFyZW50
LmJvcmRlckFmdGVyKCkgKyBwYXJlbnQubWFyZ2luQWZ0ZXIoKSArIHBhcmVudC5wYWRkaW5nQWZ0
ZXIoKTsKKyAgICBlbHNlCisgICAgICAgIG1icCArPSAocGFyZW50LmdyaWRHYXAoZGlyZWN0aW9u
LCBhdmFpbGFibGVTcGFjZSkgLSBncmFuZFBhcmVudC5ncmlkR2FwKGRpcmVjdGlvbikpIC8gMjsK
KworICAgIHJldHVybiBtYnA7Cit9CisKK3N0YXRpYyBMYXlvdXRVbml0IGdhcERpZmZlcmVuY2VG
b3JTdWJncmlkQ2hpbGQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3Qg
UmVuZGVyQm94JiBjaGlsZCkKK3sKKyAgICBjb25zdCBSZW5kZXJHcmlkKiBncmlkID0gZG93bmNh
c3Q8UmVuZGVyR3JpZD4oY2hpbGQucGFyZW50KCkpOworICAgIExheW91dFVuaXQgbWJwOworCisg
ICAgd2hpbGUgKGdyaWQtPmlzU3ViZ3JpZChkaXJlY3Rpb24pKSB7CisgICAgICAgIEdyaWRTcGFu
IHNwYW4gPSBncmlkLT5ncmlkU3BhbkZvckNoaWxkKGNoaWxkLCBkaXJlY3Rpb24pOworCisgICAg
ICAgIG1icCArPSBleHRyYU1hcmdpbkZvclN1YmdyaWRDaGlsZCgqZ3JpZCwgc3Bhbi5zdGFydExp
bmUoKSwgc3Bhbi5lbmRMaW5lKCksIGRpcmVjdGlvbik7CisKKyAgICAgICAgY29uc3QgUmVuZGVy
RWxlbWVudCogcGFyZW50ID0gZ3JpZC0+cGFyZW50KCk7CisgICAgICAgIGlmICghcGFyZW50IHx8
ICFpczxSZW5kZXJHcmlkPihwYXJlbnQpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y29uc3QgUmVuZGVyR3JpZCogcGFyZW50R3JpZCA9IGRvd25jYXN0PFJlbmRlckdyaWQ+KHBhcmVu
dCk7CisgICAgICAgIGRpcmVjdGlvbiA9IGZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKCpncmlk
LCAqcGFyZW50R3JpZCwgZGlyZWN0aW9uKTsKKworICAgICAgICBncmlkID0gcGFyZW50R3JpZDsK
KyAgICB9CisKKyAgICByZXR1cm4gbWJwOworfQorCiBMYXlvdXRVbml0IG1hcmdpbkxvZ2ljYWxT
aXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyR3JpZCYgZ3JpZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uIGRpcmVjdGlvbiwgY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKIHsKKyAgICBMYXlvdXRVbml0
IG1hcmdpbjsKICAgICBpZiAoY2hpbGQubmVlZHNMYXlvdXQoKSkKLSAgICAgICAgcmV0dXJuIGNv
bXB1dGVNYXJnaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKGdyaWQsIGRpcmVjdGlvbiwgY2hpbGQpOwot
ICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBmbG93QXdhcmVEaXJlY3Rpb24gPSBmbG93QXdh
cmVEaXJlY3Rpb25Gb3JDaGlsZChncmlkLCBjaGlsZCwgZGlyZWN0aW9uKTsKLSAgICBib29sIGlz
Um93QXhpcyA9IGZsb3dBd2FyZURpcmVjdGlvbiA9PSBGb3JDb2x1bW5zOwotICAgIExheW91dFVu
aXQgbWFyZ2luU3RhcnQgPSBtYXJnaW5TdGFydElzQXV0byhjaGlsZCwgZmxvd0F3YXJlRGlyZWN0
aW9uKSA/IDBfbHUgOiBpc1Jvd0F4aXMgPyBjaGlsZC5tYXJnaW5TdGFydCgpIDogY2hpbGQubWFy
Z2luQmVmb3JlKCk7Ci0gICAgTGF5b3V0VW5pdCBtYXJnaW5FbmQgPSBtYXJnaW5FbmRJc0F1dG8o
Y2hpbGQsIGZsb3dBd2FyZURpcmVjdGlvbikgPyAwX2x1IDogaXNSb3dBeGlzID8gY2hpbGQubWFy
Z2luRW5kKCkgOiBjaGlsZC5tYXJnaW5BZnRlcigpOwotICAgIHJldHVybiBtYXJnaW5TdGFydCAr
IG1hcmdpbkVuZDsKKyAgICAgICAgbWFyZ2luID0gY29tcHV0ZU1hcmdpbkxvZ2ljYWxTaXplRm9y
Q2hpbGQoZ3JpZCwgZGlyZWN0aW9uLCBjaGlsZCk7CisgICAgZWxzZSB7CisgICAgICAgIEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiBmbG93QXdhcmVEaXJlY3Rpb24gPSBmbG93QXdhcmVEaXJlY3Rp
b25Gb3JDaGlsZChncmlkLCBjaGlsZCwgZGlyZWN0aW9uKTsKKyAgICAgICAgYm9vbCBpc1Jvd0F4
aXMgPSBmbG93QXdhcmVEaXJlY3Rpb24gPT0gRm9yQ29sdW1uczsKKyAgICAgICAgTGF5b3V0VW5p
dCBtYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0SXNBdXRvKGNoaWxkLCBmbG93QXdhcmVEaXJlY3Rp
b24pID8gMF9sdSA6IGlzUm93QXhpcyA/IGNoaWxkLm1hcmdpblN0YXJ0KCkgOiBjaGlsZC5tYXJn
aW5CZWZvcmUoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5FbmQgPSBtYXJnaW5FbmRJc0F1
dG8oY2hpbGQsIGZsb3dBd2FyZURpcmVjdGlvbikgPyAwX2x1IDogaXNSb3dBeGlzID8gY2hpbGQu
bWFyZ2luRW5kKCkgOiBjaGlsZC5tYXJnaW5BZnRlcigpOworICAgICAgICBtYXJnaW4gPSBtYXJn
aW5TdGFydCArIG1hcmdpbkVuZDsKKyAgICB9CisKKyAgICBpZiAoJmdyaWQgIT0gY2hpbGQucGFy
ZW50KCkpCisgICAgICAgIG1hcmdpbiArPSBnYXBEaWZmZXJlbmNlRm9yU3ViZ3JpZENoaWxkKGRp
cmVjdGlvbiwgY2hpbGQpOworCisgICAgcmV0dXJuIG1hcmdpbjsKIH0KIAogYm9vbCBpc09ydGhv
Z29uYWxDaGlsZChjb25zdCBSZW5kZXJHcmlkJiBncmlkLCBjb25zdCBSZW5kZXJFbGVtZW50JiBj
aGlsZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1Npemlu
Z0FsZ29yaXRobS5jcHAKaW5kZXggZjY1YzBmMDBiZmZkM2M5NTgzYzFjNDhhYzQ0YTA4ZTkzMDc2
ZGZmYy4uNjJjMWE2NWNmMDIyNjgwZjAzNThmNjUxYTE4OGU0NTVjMzQ1MmNhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5j
cHAKQEAgLTEyNSw4ICsxMjUsMTMgQEAgc3RhdGljIGJvb2wgc2hvdWxkQ2xlYXJPdmVycmlkaW5n
Q29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjb25zdCBSZW5kZXIKICAgICByZXR1
cm4gaGFzUmVsYXRpdmVPckludHJpbnNpY1NpemVGb3JDaGlsZChjaGlsZCwgZGlyZWN0aW9uKSB8
fCBoYXNSZWxhdGl2ZU1hcmdpbk9yUGFkZGluZ0ZvckNoaWxkKGNoaWxkLCBkaXJlY3Rpb24pOwog
fQogCi1zdGF0aWMgdm9pZCBzZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVG
b3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0
aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHNpemUpCitzdGF0aWMgdm9pZCBzZXRPdmVy
cmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjb25zdCBSZW5kZXJHcmlk
JiBncmlkLCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0
aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHNpemUpCiB7CisgICAgLy8gVGhpcyBmdW5j
dGlvbiBzZXRzIHRoZSBkaW1lbnNpb24gYmFzZWQgb24gdGhlIHdyaXRpbmcgbW9kZSBvZiB0aGUg
Y29udGFpbmluZyBibG9jay4KKyAgICAvLyBGb3Igc3ViZ3JpZHMsIHRoaXMgbWlnaHQgbm90IGJl
IHRoZSBvdXRlcm1vc3QgZ3JpZCwgYnV0IGNvdWxkIGJlIGEgc3ViZ3JpZC4gSWYgdGhlCisgICAg
Ly8gd3JpdGluZyBtb2RlIG9mIHRoZSBDQiBhbmQgdGhlIGdyaWQgZm9yIHdoaWNoIHdlJ3JlIGRv
aW5nIHNpemluZyBkb24ndCBtYXRjaCwgc3dhcAorICAgIC8vIHRoZSBkaXJlY3Rpb25zLgorICAg
IGRpcmVjdGlvbiA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZsb3dBd2FyZURpcmVjdGlvbkZvckNo
aWxkKGdyaWQsICpjaGlsZC5jb250YWluaW5nQmxvY2soKSwgZGlyZWN0aW9uKTsKICAgICBpZiAo
ZGlyZWN0aW9uID09IEZvckNvbHVtbnMpCiAgICAgICAgIGNoaWxkLnNldE92ZXJyaWRpbmdDb250
YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKHNpemUpOwogICAgIGVsc2UKQEAgLTc5NCw3
ICs3OTksNyBAQCBMYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobVN0cmF0ZWd5Ojps
b2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94JiBjaAogICAgIC8vIElmIHxjaGlsZHwgaGFz
IGEgcmVsYXRpdmUgbG9naWNhbCBoZWlnaHQsIHdlIHNob3VsZG4ndCBsZXQgaXQgb3ZlcnJpZGUg
aXRzIGludHJpbnNpYyBoZWlnaHQsIHdoaWNoIGlzCiAgICAgLy8gd2hhdCB3ZSBhcmUgaW50ZXJl
c3RlZCBpbiBoZXJlLiBUaHVzIHdlIG5lZWQgdG8gc2V0IHRoZSBibG9jay1heGlzIG92ZXJyaWRl
IHNpemUgdG8gbnVsbG9wdCAobm8gcG9zc2libGUgcmVzb2x1dGlvbikuCiAgICAgaWYgKHNob3Vs
ZENsZWFyT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQs
IEZvclJvd3MpKSB7Ci0gICAgICAgIHNldE92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50
U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZEJsb2NrRGlyZWN0aW9uLCBzdGQ6Om51bGxvcHQpOwor
ICAgICAgICBzZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZCgq
cmVuZGVyR3JpZCgpLCBjaGlsZCwgY2hpbGRCbG9ja0RpcmVjdGlvbiwgc3RkOjpudWxsb3B0KTsK
ICAgICAgICAgY2hpbGQuc2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKICAgICB9CiAKQEAg
LTk1OSwxMCArOTY0LDExIEBAIGJvb2wgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtU3RyYXRlZ3k6
OnVwZGF0ZU92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6CiB7CiAgICAgaWYgKCFv
dmVycmlkZVNpemUpCiAgICAgICAgIG92ZXJyaWRlU2l6ZSA9IG1fYWxnb3JpdGhtLmdyaWRBcmVh
QnJlYWR0aEZvckNoaWxkKGNoaWxkLCBkaXJlY3Rpb24pOworCiAgICAgaWYgKEdyaWRMYXlvdXRG
dW5jdGlvbnM6Omhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxk
KGNoaWxkLCBkaXJlY3Rpb24pICYmIEdyaWRMYXlvdXRGdW5jdGlvbnM6Om92ZXJyaWRpbmdDb250
YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBkaXJlY3Rpb24pID09IG92ZXJy
aWRlU2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc2V0T3ZlcnJpZGluZ0NvbnRh
aW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGRpcmVjdGlvbiwgb3ZlcnJpZGVT
aXplKTsKKyAgICBzZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGls
ZCgqcmVuZGVyR3JpZCgpLCBjaGlsZCwgZGlyZWN0aW9uLCBvdmVycmlkZVNpemUpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0xMTIyLDcgKzExMjgsNyBAQCBMYXlvdXRVbml0IERlZmluaXRl
U2l6ZVN0cmF0ZWd5OjptaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIGNv
bnN0CiAgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGZsb3dBd2FyZURpcmVjdGlvbiA9IEdy
aWRMYXlvdXRGdW5jdGlvbnM6OmZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKCpyZW5kZXJHcmlk
KCksIGNoaWxkLCBkaXJlY3Rpb24oKSk7CiAgICAgaWYgKGhhc1JlbGF0aXZlTWFyZ2luT3JQYWRk
aW5nRm9yQ2hpbGQoY2hpbGQsIGZsb3dBd2FyZURpcmVjdGlvbikgfHwgKGRpcmVjdGlvbigpICE9
IGNoaWxkSW5saW5lRGlyZWN0aW9uICYmIGhhc1JlbGF0aXZlT3JJbnRyaW5zaWNTaXplRm9yQ2hp
bGQoY2hpbGQsIGZsb3dBd2FyZURpcmVjdGlvbikpKSB7CiAgICAgICAgIGF1dG8gaW5kZWZpbml0
ZVNpemUgPSBkaXJlY3Rpb24oKSA9PSBjaGlsZElubGluZURpcmVjdGlvbiA/IHN0ZDo6bWFrZV9v
cHRpb25hbCgwX2x1KSA6IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgc2V0T3ZlcnJpZGluZ0NvbnRh
aW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGRpcmVjdGlvbigpLCBpbmRlZmlu
aXRlU2l6ZSk7CisgICAgICAgIHNldE92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6
ZUZvckNoaWxkKCpyZW5kZXJHcmlkKCksIGNoaWxkLCBkaXJlY3Rpb24oKSwgaW5kZWZpbml0ZVNp
emUpOwogICAgIH0KICAgICByZXR1cm4gR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtU3RyYXRlZ3k6
Om1pbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkTWluU2l6ZSwgYXZhaWxhYmxlU2l6
ZSk7CiB9CkBAIC0xMTY3LDcgKzExNzMsNyBAQCBMYXlvdXRVbml0IERlZmluaXRlU2l6ZVN0cmF0
ZWd5OjptaW5Db250ZW50Rm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCkgY29uc3QKIHsKICAgICBH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gY2hpbGRJbmxpbmVEaXJlY3Rpb24gPSBHcmlkTGF5b3V0
RnVuY3Rpb25zOjpmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZCgqcmVuZGVyR3JpZCgpLCBjaGls
ZCwgRm9yQ29sdW1ucyk7CiAgICAgaWYgKGRpcmVjdGlvbigpID09IGNoaWxkSW5saW5lRGlyZWN0
aW9uICYmIGNoaWxkLm5lZWRzTGF5b3V0KCkgJiYgc2hvdWxkQ2xlYXJPdmVycmlkaW5nQ29udGFp
bmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjaGlsZCwgRm9yQ29sdW1ucykpCi0gICAgICAg
IHNldE92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBj
aGlsZElubGluZURpcmVjdGlvbiwgTGF5b3V0VW5pdCgpKTsKKyAgICAgICAgc2V0T3ZlcnJpZGlu
Z0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoKnJlbmRlckdyaWQoKSwgY2hpbGQs
IGNoaWxkSW5saW5lRGlyZWN0aW9uLCBMYXlvdXRVbml0KCkpOwogICAgIHJldHVybiBHcmlkVHJh
Y2tTaXppbmdBbGdvcml0aG1TdHJhdGVneTo6bWluQ29udGVudEZvckNoaWxkKGNoaWxkKTsKIH0K
IApAQCAtMTIyMiwxMiArMTIyOCwzMyBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6
aW5pdGlhbGl6ZVRyYWNrU2l6ZXMoKQogICAgIH0KIH0KIAorc3RhdGljIHZvaWQgYWRkU3ViZ3Jp
ZE1hcmdpbkJvcmRlclBhZGRpbmcoVmVjdG9yPEdyaWRUcmFjaz4mIGFsbFRyYWNrcywgR3JpZFNw
YW4mIHNwYW4sIFJlbmRlckdyaWQqIHN1YmdyaWQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBw
YXJlbnREaXJlY3Rpb24pCit7CisgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlv
biA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKCpzdWJn
cmlkLCAqc3ViZ3JpZC0+cGFyZW50KCksIHBhcmVudERpcmVjdGlvbik7CisKKyAgICBpZiAoYWxs
VHJhY2tzW3NwYW4uc3RhcnRMaW5lKCldLmNhY2hlZFRyYWNrU2l6ZSgpLmhhc0ludHJpbnNpY01p
blRyYWNrQnJlYWR0aCgpKSB7CisgICAgICAgIExheW91dFVuaXQgbWJwU3RhcnQgPSAoZGlyZWN0
aW9uID09IEZvckNvbHVtbnMpID8gc3ViZ3JpZC0+bWFyZ2luQW5kQm9yZGVyQW5kUGFkZGluZ1N0
YXJ0KCkgOiBzdWJncmlkLT5tYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nQmVmb3JlKCk7CisgICAg
ICAgIGFsbFRyYWNrc1tzcGFuLnN0YXJ0TGluZSgpXS5zZXRCYXNlU2l6ZShzdGQ6Om1heChhbGxU
cmFja3Nbc3Bhbi5zdGFydExpbmUoKV0uYmFzZVNpemUoKSwgbWJwU3RhcnQpKTsKKyAgICB9Cisg
ICAgaWYgKGFsbFRyYWNrc1tzcGFuLmVuZExpbmUoKSAtIDFdLmNhY2hlZFRyYWNrU2l6ZSgpLmhh
c0ludHJpbnNpY01pblRyYWNrQnJlYWR0aCgpKSB7CisgICAgICAgIExheW91dFVuaXQgbWJwRW5k
ID0gKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IHN1YmdyaWQtPm1hcmdpbkFuZEJvcmRlckFu
ZFBhZGRpbmdFbmQoKSA6IHN1YmdyaWQtPm1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmdBZnRlcigp
OworICAgICAgICBhbGxUcmFja3Nbc3Bhbi5lbmRMaW5lKCkgLSAxXS5zZXRCYXNlU2l6ZShzdGQ6
Om1heChhbGxUcmFja3Nbc3Bhbi5lbmRMaW5lKCkgLSAxXS5iYXNlU2l6ZSgpLCBtYnBFbmQpKTsK
KyAgICB9Cit9CisKIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjphY2N1bXVsYXRlSW50
cmluc2ljU2l6ZXNGb3JUcmFjayhHcmlkVHJhY2smIHRyYWNrLCBHcmlkSXRlcmF0b3ImIGl0ZXJh
dG9yLCBWZWN0b3I8R3JpZEl0ZW1XaXRoU3Bhbj4mIGl0ZW1zU29ydGVkQnlJbmNyZWFzaW5nU3Bh
biwgVmVjdG9yPEdyaWRJdGVtV2l0aFNwYW4+JiBpdGVtc0Nyb3NzaW5nRmxleGlibGVUcmFja3Ms
IEhhc2hTZXQ8UmVuZGVyQm94Kj4mIGl0ZW1zU2V0KQogeworICAgIFZlY3RvcjxHcmlkVHJhY2s+
JiBhbGxUcmFja3MgPSB0cmFja3MobV9kaXJlY3Rpb24pOworCiAgICAgd2hpbGUgKGF1dG8qIGdy
aWRJdGVtID0gaXRlcmF0b3IubmV4dEdyaWRJdGVtKCkpIHsKICAgICAgICAgYm9vbCBpc05ld0Vu
dHJ5ID0gaXRlbXNTZXQuYWRkKGdyaWRJdGVtKS5pc05ld0VudHJ5OwogICAgICAgICBpZiAoaXM8
UmVuZGVyR3JpZD4oZ3JpZEl0ZW0pICYmIGRvd25jYXN0PFJlbmRlckdyaWQ+KGdyaWRJdGVtKS0+
aXNTdWJncmlkSW5QYXJlbnREaXJlY3Rpb24oaXRlcmF0b3IuZGlyZWN0aW9uKCkpKSB7CisgICAg
ICAgICAgICAvLyBDb250cmlidXRlIHRoZSBtYnAgb2Ygd3JhcHBlciB0byB0aGUgZmlyc3QgYW5k
IGxhc3QgdHJhY2tzIHRoYXQgd2Ugc3Bhbi4KICAgICAgICAgICAgIFJlbmRlckdyaWQqIGlubmVy
ID0gZG93bmNhc3Q8UmVuZGVyR3JpZD4oZ3JpZEl0ZW0pOworICAgICAgICAgICAgaWYgKGlzTmV3
RW50cnkpIHsKKyAgICAgICAgICAgICAgICBHcmlkU3BhbiBzcGFuID0gbV9yZW5kZXJHcmlkLT5n
cmlkU3BhbkZvckNoaWxkKCpncmlkSXRlbSwgbV9kaXJlY3Rpb24pOworICAgICAgICAgICAgICAg
IGFkZFN1YmdyaWRNYXJnaW5Cb3JkZXJQYWRkaW5nKGFsbFRyYWNrcywgc3BhbiwgaW5uZXIsIGl0
ZXJhdG9yLmRpcmVjdGlvbigpKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgR3JpZEl0
ZXJhdG9yIGNoaWxkSXRlcmF0b3IgPSBHcmlkSXRlcmF0b3I6OmNyZWF0ZUZvclN1YmdyaWQoKmlu
bmVyLCBpdGVyYXRvcik7CiAgICAgICAgICAgICBhY2N1bXVsYXRlSW50cmluc2ljU2l6ZXNGb3JU
cmFjayh0cmFjaywgY2hpbGRJdGVyYXRvciwgaXRlbXNTb3J0ZWRCeUluY3JlYXNpbmdTcGFuLCBp
dGVtc0Nyb3NzaW5nRmxleGlibGVUcmFja3MsIGl0ZW1zU2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCA1NzQ2M2FkYjhlMTI4OTA3ZjM2YzhkYTk0MWE2ZTM4
Mjg4MzY0YTdjLi44MmU0NGQ5MDQ0ZDI1NDU0NDRlOTg0YjQzNmQ3NWJkNDg5Zjk4YTU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0xNjUwLDE3ICsxNjUwLDE2
IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6cmVzb2x2ZUF1dG9FbmRHcmlkUG9zaXRpb24oR3Jp
ZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjCiAKIGJvb2wgUmVuZGVyR3JpZDo6aXNTdWJncmlk
KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7Ci0gICAgaWYgKGlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGlzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KCkpCisg
ICAgaWYgKCFtYXlCZVN1YmdyaWRFeGNsdWRpbmdBYnNQb3MoZGlyZWN0aW9uKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmICgoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gIXN0eWxl
KCkuZ3JpZFN1YmdyaWRDb2x1bW5zKCkgOiAhc3R5bGUoKS5ncmlkU3ViZ3JpZFJvd3MoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBpczxSZW5kZXJHcmlkPihwYXJlbnQoKSk7
CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckdyaWQ+KHBhcmVudCgpKS0+Z3JpZFNwYW5Db3Zl
cnNSZWFsVHJhY2tzKCp0aGlzLCBkaXJlY3Rpb24pOwogfQogCiBib29sIFJlbmRlckdyaWQ6Omlz
U3ViZ3JpZFJvd3MoKSBjb25zdAogewogICAgIHJldHVybiBpc1N1YmdyaWQoRm9yUm93cyk7CiB9
CisKIGJvb2wgUmVuZGVyR3JpZDo6aXNTdWJncmlkQ29sdW1ucygpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGlzU3ViZ3JpZChGb3JDb2x1bW5zKTsKQEAgLTE2NzIsMjMgKzE2NzEsNDggQEAgYm9vbCBS
ZW5kZXJHcmlkOjppc1N1YmdyaWRJblBhcmVudERpcmVjdGlvbihHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gcGFyZW50RGlyZWMKICAgICByZXR1cm4gaXNTdWJncmlkKGRpcmVjdGlvbik7CiB9CiAK
LUxheW91dFVuaXQgUmVuZGVyR3JpZDo6Z3JpZEFyZWFCcmVhZHRoRm9yT3V0T2ZGbG93Q2hpbGQo
Y29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlv
bikKK2Jvb2wgUmVuZGVyR3JpZDo6bWF5QmVTdWJncmlkRXhjbHVkaW5nQWJzUG9zKEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGNoaWxkLmlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKLSAgICBib29sIGlzUm93QXhpcyA9IGRpcmVjdGlvbiA9
PSBGb3JDb2x1bW5zOwotICAgIEdyaWRTcGFuIHNwYW4gPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6
OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNoaWxkLCBkaXJlY3Rpb24pOwotICAgIGlm
IChzcGFuLmlzSW5kZWZpbml0ZSgpKQotICAgICAgICByZXR1cm4gaXNSb3dBeGlzID8gY2xpZW50
TG9naWNhbFdpZHRoKCkgOiBjbGllbnRMb2dpY2FsSGVpZ2h0KCk7CisgICAgLy8gU2hvdWxkIGV4
Y2x1ZGUgY2FzZXMgd2hlcmUgd2UgZXN0YWJsaXNoIGFuIElGQywgbGlrZSBjb250YWluIGxheW91
dC4KKyAgICBpZiAoaXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/ICFzdHlsZSgpLmdyaWRT
dWJncmlkQ29sdW1ucygpIDogIXN0eWxlKCkuZ3JpZFN1YmdyaWRSb3dzKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWlzPFJlbmRlckdyaWQ+KHBhcmVudCgpKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlbmRlckdyaWQ6Omdy
aWRTcGFuQ292ZXJzUmVhbFRyYWNrcyhjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAoreworICAgIC8vIE9ubHkgb3V0IG9mIGZs
b3cgcG9zaXRpb25lZCBpdGVtcyBjYW4gc3BhbiB0byB0aGUgc3BlY2lhbCBsaW5lIHRoYXQgY292
ZXJzCisgICAgLy8gdGhlIHBhZGRpbmcgYXJlYS4KKyAgICBpZiAoIWNoaWxkLmlzT3V0T2ZGbG93
UG9zaXRpb25lZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHVuc2lnbmVkIGV4cGxp
Y2l0U3RhcnQgPSBtX2dyaWQuZXhwbGljaXRHcmlkU3RhcnQoZGlyZWN0aW9uKTsKLSAgICBpbnQg
c3RhcnRMaW5lID0gc3Bhbi51bnRyYW5zbGF0ZWRTdGFydExpbmUoKSArIGV4cGxpY2l0U3RhcnQ7
Ci0gICAgaW50IGVuZExpbmUgPSBzcGFuLnVudHJhbnNsYXRlZEVuZExpbmUoKSArIGV4cGxpY2l0
U3RhcnQ7CiAgICAgaW50IGxhc3RMaW5lID0gbnVtVHJhY2tzKGRpcmVjdGlvbiwgbV9ncmlkKTsK
LSAgICBHcmlkUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5z
ID8gY2hpbGQuc3R5bGUoKS5ncmlkSXRlbUNvbHVtblN0YXJ0KCkgOiBjaGlsZC5zdHlsZSgpLmdy
aWRJdGVtUm93U3RhcnQoKTsKLSAgICBHcmlkUG9zaXRpb24gZW5kUG9zaXRpb24gPSBkaXJlY3Rp
b24gPT0gRm9yQ29sdW1ucyA/IGNoaWxkLnN0eWxlKCkuZ3JpZEl0ZW1Db2x1bW5FbmQoKSA6IGNo
aWxkLnN0eWxlKCkuZ3JpZEl0ZW1Sb3dFbmQoKTsKKyAgICBpbnQgc3RhcnRMaW5lLCBlbmRMaW5l
OworICAgIGJvb2wgc3RhcnRJc0F1dG8sIGVuZElzQXV0bzsKKyAgICBpZiAoIWNvbXB1dGVHcmlk
U3BhbkZvck91dE9mRmxvd0NoaWxkKGNoaWxkLCBkaXJlY3Rpb24sIHN0YXJ0TGluZSwgc3RhcnRJ
c0F1dG8sIGVuZExpbmUsIGVuZElzQXV0bykpCisgICAgICAgIHJldHVybiBsYXN0TGluZSA+IDA7
CiAKLSAgICBib29sIHN0YXJ0SXNBdXRvID0gc3RhcnRQb3NpdGlvbi5pc0F1dG8oKSB8fCBzdGFy
dExpbmUgPCAwIHx8IHN0YXJ0TGluZSA+IGxhc3RMaW5lOwotICAgIGJvb2wgZW5kSXNBdXRvID0g
ZW5kUG9zaXRpb24uaXNBdXRvKCkgfHwgZW5kTGluZSA8IDAgfHwgZW5kTGluZSA+IGxhc3RMaW5l
OworICAgIC8vIElmIHRoZSByZXN1bHRpbmcgc3BhbiBjb3ZlcnMgb25seSB0aGUgcGFkZGluZyBh
cmVhLCB0aGVuIGl0J3Mgbm90IGEgcmVhbAorICAgIC8vIHRyYWNrIHRoYXQgY291bGQgYmUgdXNl
ZCBmb3IgYSBzdWJncmlkLgorICAgIGlmIChzdGFydElzQXV0byAmJiAhZW5kTGluZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChlbmRJc0F1dG8gJiYgc3RhcnRMaW5lID09IGxhc3RM
aW5lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0xheW91
dFVuaXQgUmVuZGVyR3JpZDo6Z3JpZEFyZWFCcmVhZHRoRm9yT3V0T2ZGbG93Q2hpbGQoY29uc3Qg
UmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sK
KyAgICBpbnQgbGFzdExpbmUgPSBudW1UcmFja3MoZGlyZWN0aW9uLCBtX2dyaWQpOworICAgIGJv
b2wgaXNSb3dBeGlzID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnM7CisgICAgaW50IHN0YXJ0TGlu
ZSwgZW5kTGluZTsKKyAgICBib29sIHN0YXJ0SXNBdXRvLCBlbmRJc0F1dG87CisgICAgaWYgKCFj
b21wdXRlR3JpZFNwYW5Gb3JPdXRPZkZsb3dDaGlsZChjaGlsZCwgZGlyZWN0aW9uLCBzdGFydExp
bmUsIHN0YXJ0SXNBdXRvLCBlbmRMaW5lLCBlbmRJc0F1dG8pKQorICAgICAgICByZXR1cm4gaXNS
b3dBeGlzID8gY2xpZW50TG9naWNhbFdpZHRoKCkgOiBjbGllbnRMb2dpY2FsSGVpZ2h0KCk7CiAK
ICAgICBpZiAoc3RhcnRJc0F1dG8gJiYgZW5kSXNBdXRvKQogICAgICAgICByZXR1cm4gaXNSb3dB
eGlzID8gY2xpZW50TG9naWNhbFdpZHRoKCkgOiBjbGllbnRMb2dpY2FsSGVpZ2h0KCk7CkBAIC0x
ODU0LDYgKzE4NzgsMTEgQEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlQ29udGVudFBvc2l0aW9u
QW5kRGlzdHJpYnV0aW9uT2Zmc2V0KEdyaWRUcmFja1NpemluZ0RpcmUKICAgICBib29sIGlzUm93
QXhpcyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zOwogICAgIGF1dG8mIG9mZnNldCA9CiAgICAg
ICAgIGlzUm93QXhpcyA/IG1fb2Zmc2V0QmV0d2VlbkNvbHVtbnMgOiBtX29mZnNldEJldHdlZW5S
b3dzOworICAgIGlmIChpc1Jvd0F4aXMgPyBpc1N1YmdyaWRDb2x1bW5zKCkgOiBpc1N1YmdyaWRS
b3dzKCkpIHsKKyAgICAgICAgb2Zmc2V0LnBvc2l0aW9uT2Zmc2V0ID0gMF9sdTsKKyAgICAgICAg
b2Zmc2V0LmRpc3RyaWJ1dGlvbk9mZnNldCA9IDBfbHU7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAgICAgYXV0byBjb250ZW50QWxpZ25tZW50RGF0YSA9IGNvbnRlbnRBbGlnbm1lbnQoZGlyZWN0
aW9uKTsKICAgICBhdXRvIHBvc2l0aW9uID0gY29udGVudEFsaWdubWVudERhdGEucG9zaXRpb24o
KTsKICAgICAvLyBJZiA8Y29udGVudC1kaXN0cmlidXRpb24+IHZhbHVlIGNhbid0IGJlIGFwcGxp
ZWQsICdwb3NpdGlvbicgd2lsbCBiZWNvbWUgdGhlIGFzc29jaWF0ZWQKQEAgLTIwOTIsNiArMjEy
MSw3IEBAIEdyaWRTcGFuIFJlbmRlckdyaWQ6OmdyaWRTcGFuRm9yQ2hpbGQoY29uc3QgUmVuZGVy
Qm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyCiAgICAgICAgICAgICBzcGFuLnRyYW5zbGF0
ZVRvKHBhcmVudFNwYW4sIEdyaWRMYXlvdXRGdW5jdGlvbnM6OmlzU3ViZ3JpZFJldmVyc2VkRGly
ZWN0aW9uKCpwYXJlbnQsIGRpcmVjdGlvbiwgKnJlbmRlckdyaWQpKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgc3BhbiA9IHBhcmVudFNwYW47CisKICAgICAgICAgcmVuZGVyR3JpZCA9IHBh
cmVudDsKICAgICB9CiAgICAgcmV0dXJuIHNwYW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuaAppbmRleCA3NDc3ZTI3Y2IxM2RlMGI2MzYzNmMxM2E3ZDNhZjc1MzVlYTcwYzU2Li5h
MzEyOTk0MDk1NGE4OWEzMWUxMmM4NzJiZDI2MGMxZmM3ZGM4ZWMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTkwLDYgKzkwLDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNTdWJncmlkQ29sdW1ucygpIGNvbnN0OwogICAgIGJvb2wgaXNTdWJncmlkKEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbikgY29uc3Q7CiAgICAgYm9vbCBpc1N1YmdyaWRJblBhcmVudERpcmVjdGlv
bihHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gcGFyZW50RGlyZWN0aW9uKSBjb25zdDsKKyAgICBi
b29sIG1heUJlU3ViZ3JpZEV4Y2x1ZGluZ0Fic1BvcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24p
IGNvbnN0OwogCiAgICAgY29uc3QgR3JpZCYgY3VycmVudEdyaWQoKSBjb25zdAogICAgIHsKQEAg
LTEwMyw2ICsxMDQsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBwbGFjZUl0ZW1zKCk7CiAKKyAg
ICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNwYWNlRm9yR3V0dGVycyhHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OworICAgIExheW91dFVuaXQgZ3JpZEdhcChHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OworICAgIExheW91dFVuaXQgZ3JpZEdhcChHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxl
U2l6ZSkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEdyaWRUcmFja1Npemlu
Z0FsZ29yaXRobTsKIApAQCAtMTE5LDggKzEyNCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxm
QWxpZ25tZW50Q2hhbmdlZFRvU3RyZXRjaChHcmlkQXhpcywgY29uc3QgUmVuZGVyU3R5bGUmIG9s
ZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFJlbmRlckJveCYpIGNv
bnN0OwogICAgIGJvb2wgc2VsZkFsaWdubWVudENoYW5nZWRGcm9tU3RyZXRjaChHcmlkQXhpcywg
Y29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUs
IGNvbnN0IFJlbmRlckJveCYpIGNvbnN0OwogCi0gICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBhdmFpbGFibGVTcGFjZUZvckd1dHRlcnMoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25z
dDsKLQogICAgIGJvb2wgZXhwbGljaXRHcmlkRGlkUmVzaXplKGNvbnN0IFJlbmRlclN0eWxlJikg
Y29uc3Q7CiAgICAgYm9vbCBuYW1lZEdyaWRMaW5lc0RlZmluaXRpb25EaWRDaGFuZ2UoY29uc3Qg
UmVuZGVyU3R5bGUmKSBjb25zdDsKICAgICBib29sIGltcGxpY2l0R3JpZExpbmVzRGVmaW5pdGlv
bkRpZENoYW5nZShjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwpAQCAtMjAwLDkgKzIwMyw2IEBA
IHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBjb2x1bW5BeGlzQmFzZWxpbmVPZmZzZXRGb3JDaGls
ZChjb25zdCBSZW5kZXJCb3gmKSBjb25zdDsKICAgICBMYXlvdXRVbml0IHJvd0F4aXNCYXNlbGlu
ZU9mZnNldEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYpIGNvbnN0OwogCi0gICAgTGF5b3V0VW5p
dCBncmlkR2FwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7Ci0gICAgTGF5b3V0VW5p
dCBncmlkR2FwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBhdmFpbGFibGVTaXplKSBjb25zdDsKLQogICAgIHVuc2lnbmVkIG5vbkNvbGxhcHNlZFRy
YWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwogICAgIHVuc2lnbmVkIG51bVRy
YWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IEdyaWQmKSBjb25zdDsKIApAQCAt
MjE3LDYgKzIxNyw3IEBAIHByaXZhdGU6CiAKICAgICBHcmlkU3BhbiBncmlkU3BhbkZvck91dE9m
Rmxvd0NoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29u
c3Q7CiAgICAgYm9vbCBjb21wdXRlR3JpZFNwYW5Gb3JPdXRPZkZsb3dDaGlsZChjb25zdCBSZW5k
ZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGludCYsIGJvb2wmLCBpbnQmLCBib29s
JikgY29uc3Q7CisgICAgYm9vbCBncmlkU3BhbkNvdmVyc1JlYWxUcmFja3MoY29uc3QgUmVuZGVy
Qm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIAogICAgIEdyaWQgbV9ncmlk
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0
aW9uc1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9z
aXRpb25zUmVzb2x2ZXIuY3BwCmluZGV4IGQ5MDQxYTYyM2JkMDYxZGIwNzNmNDkwY2YyY2Q1MWQy
N2Y4MDQ1ZWMuLmY4NjVmZDBjZmVhNGIyMDg2NjQ1M2E3MTQ0NWVlYjU4NDc4MDg4NjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25z
UmVzb2x2ZXIuY3BwCkBAIC0zODIsNyArMzgyLDEwIEBAIHN0YXRpYyB2b2lkIGFkanVzdEdyaWRQ
b3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyQm94JiBncmlkSXRlbSwgR3JpZFRyYWNrU2l6
CiAgICAgaWYgKGZpbmFsUG9zaXRpb24uaXNBdXRvKCkgJiYgaW5pdGlhbFBvc2l0aW9uLmlzU3Bh
bigpICYmICFpbml0aWFsUG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLmlzTnVsbCgpKQogICAgICAg
ICBpbml0aWFsUG9zaXRpb24uc2V0U3BhblBvc2l0aW9uKDEsIFN0cmluZygpKTsKIAotICAgIGlm
IChpc0luZGVmaW5pdGVTcGFuKGluaXRpYWxQb3NpdGlvbiwgZmluYWxQb3NpdGlvbikgJiYgaXM8
UmVuZGVyR3JpZD4oZ3JpZEl0ZW0pICYmIGRvd25jYXN0PFJlbmRlckdyaWQ+KGdyaWRJdGVtKS5p
c1N1YmdyaWQoZGlyZWN0aW9uKSkgeworICAgIC8vIEFic29sdXRlbHkgcG9zaXRpb25lZCBpdGVt
cyBzcGVjaWZ5aW5nIHN1YmdyaWQgbWlnaHQgbm90IGFjdHVhbGx5IGJlIGEgc3ViZ3JpZCBpZiB0
aGVpciBncmlkCisgICAgLy8gc3BhbiBkb2Vzbid0IGNvdmVyIGFueSB0cmFja3MgYW5kIG9ubHkg
dGhlIHBhZGRpbmcgYXJlYS4gV2UgZG9uJ3Qga25vdyBpZiB0aGF0IGlzIHRoZSBjYXNlIHVudGls
CisgICAgLy8gd2UndmUgZmlndXJlZCBvdXQgdGhlaXIgZ3JpZCBwb3NpdGlvbiB0aG91Z2gsIHdo
aWNoIGlzIHdoYXQgd2UncmUgdHJ5aW5nIHRvIGRvIG5vdy4KKyAgICBpZiAoaXNJbmRlZmluaXRl
U3Bhbihpbml0aWFsUG9zaXRpb24sIGZpbmFsUG9zaXRpb24pICYmIGlzPFJlbmRlckdyaWQ+KGdy
aWRJdGVtKSAmJiBkb3duY2FzdDxSZW5kZXJHcmlkPihncmlkSXRlbSkubWF5QmVTdWJncmlkRXhj
bHVkaW5nQWJzUG9zKGRpcmVjdGlvbikpIHsKICAgICAgICAgLy8gSW5kZWZpbml0ZSBzcGFuIGZv
ciBhbiBpdGVtIHRoYXQgaXMgc3ViZ3JpZGRlZCBpbiB0aGlzIGF4aXMuCiAgICAgICAgIGludCBs
aW5lQ291bnQgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGdyaWRJdGVtLnN0eWxlKCkub3Jk
ZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkuc2l6ZSgpIDogZ3JpZEl0ZW0uc3R5bGUoKS5vcmRl
cmVkTmFtZWRHcmlkUm93TGluZXMoKS5zaXplKCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZjkxNmUzYzZkOTYwYzU0
Y2JjNTZkODlkYjRlMTg3OTQzNzcwMWM1Li5lZDljMmQ1MjdmMDBiYzMyMGRkNDUwOGQxMTNjNzE2
NzMzMjBjOTA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDItMTQgIE1hdHQgV29vZHJv
dyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KKworICAgICAgICBBY2NvdW50IGZvciBzdWJncmlk
IE1CUCB3aGVuIHNpemluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2MzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWNjb3VudCBmb3Igc3ViZ3JpZCBNQlAgd2hlbiBzaXppbmcKKworICAgICAgICAq
IFRlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjItMDItMTUgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29k
cm93QGFwcGxlLmNvbT4KIAogICAgICAgICBDb3B5IHRyYWNrIHNpemVzIGZyb20gcGFyZW50IGdy
aWQgaW50byBzdWJncmlkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBiMzIyOTkw
YThhNTczYjMzNmQyZTlmZDZkNTUwYWI1YTc5ZmQ0Mjg3Li4xODJlYjNmYWQyYWQyZTM4ODUzZDky
NWJlZmM2NjUzYmY1YTUyMDMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMi0wMi0xNCAgTWF0dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUu
Y29tPgorCisgICAgICAgIEFjY291bnQgZm9yIHN1YmdyaWQgTUJQIHdoZW4gc2l6aW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYzMzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9hYnMtcG9zLTAwMi1leHBlY3RlZC5odG1sOgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9hYnMtcG9z
LTAwMy1leHBlY3RlZC5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwOC5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9wYXJlbnQtcmVwZWF0LWF1dG8tZml0LTAwMS5o
dG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9w
YXJlbnQtcmVwZWF0LWF1dG8tZml0LTAwMi5odG1sOgorCiAyMDIyLTAyLTE1ICBNYXR0IFdvb2Ry
b3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CiAKICAgICAgICAgTG9va3VwIGxpbmUgbmFtZXMg
Zm9yIHN1YiBncmlkcyB1c2luZyBsaW5lIG5hbWVzIGZyb20gYW5jZXN0b3IgZ3JpZHMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDBjZjBhMGI3MzU0N2YwNGMyN2Y3MzU3NDk5ZTliNDIyMjY0YjllYTUu
LjNhYzYxNjAzYzBlMDQ4MzNjMWRlZDg3OWY0MjRhNDQ1ZjliZWMxYjggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMTQwMywyNyArMTQwMywxNSBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZ3JpZC9tYXNvbnJ5L3RlbnRhdGl2ZS9tYXNvbnJ5LXN1YmdyaWQtMAogCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2F1dG8t
dHJhY2stc2l6aW5nLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1wb3MtMDAyLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1ncmlkL3N1YmdyaWQvYWJzLXBvcy0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9hYnMt
cG9zLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Jhc2VsaW5lLTAwMS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3Jp
ZC9zdWJncmlkL2dyaWQtZ2FwLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAw
Mi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJn
cmlkL2dyaWQtZ2FwLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwNy5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLWxhcmdlci0wMDEuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3Vi
Z3JpZC9ncmlkLWdhcC1sYXJnZXItMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAt
c21hbGxlci0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9pdGVtLXBlcmNlbnRhZ2UtaGVpZ2h0
LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA3Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlk
L3N1YmdyaWQvb3J0aG9nb25hbC13cml0aW5nLW1vZGUtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1Ymdy
aWQvb3J0aG9nb25hbC13cml0aW5nLW1vZGUtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvb3J0
aG9nb25hbC13cml0aW5nLW1vZGUtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvb3J0aG9nb25h
bC13cml0aW5nLW1vZGUtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcGFyZW50LXJlcGVhdC1h
dXRvLWZpdC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9wYXJlbnQtcmVwZWF0LWF1dG8tZml0
LTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3JlcGVhdC1hdXRvLWZpbGwtMDAzLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvcmVwZWF0LWF1dG8tZmlsbC0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3Jp
ZC9zdWJncmlkLW1icC1vdmVyZmxvdy0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9zdWJncmlk
LW1icC1vdmVyZmxvdy0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9zdWJncmlkLW1icC1vdmVy
Zmxvdy0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9h
YnMtcG9zLTAwMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9hYnMtcG9zLTAwMi1leHBlY3RlZC5o
dG1sCmluZGV4IDEzNTQyNjBkNTBiZTE1NWYxOGJlZDdmOTI0MTQzODAwYzY5ZjZiNTEuLjY5ZTA3
MWM3NThiNjU3MjRkNDlhZjIzZWNkN2QzZDc3ZDE5NzBlM2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQv
YWJzLXBvcy0wMDItZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1wb3MtMDAyLWV4cGVj
dGVkLmh0bWwKQEAgLTYxLDcgKzYxLDcgQEAgeCB7CiA8ZGl2IGNsYXNzPSJncmlkIj4KIDxpPjwv
aT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9p
PjxpPjwvaT4KIDxkaXYgY2xhc3M9InN1YmdyaWQiPgotICA8eCBzdHlsZT0iZ3JpZC1jb2x1bW46
MzsgcmlnaHQ6MjdweCI+eDwveD4KKyAgPHggc3R5bGU9ImdyaWQtY29sdW1uOjM7IHJpZ2h0OjMz
cHgiPng8L3g+CiA8L2Rpdj4KIDwvZGl2PgogCkBAIC0xMTcsNyArMTE3LDcgQEAgeCB7CiA8ZGl2
IGNsYXNzPSJncmlkIj4KIDxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9p
PjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT4KIDxkaXYgY2xhc3M9InN1YmdyaWQgaHIiPgot
ICA8eCBzdHlsZT0iZ3JpZC1jb2x1bW46YXV0by8xOyBsZWZ0Oi0yN3B4Ij54PC94PgorICA8eCBz
dHlsZT0iZ3JpZC1jb2x1bW46YXV0by8xOyBsZWZ0Oi0zM3B4Ij54PC94PgogPC9kaXY+CiA8L2Rp
dj4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9hYnMtcG9zLTAwMy1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3Vi
Z3JpZC9hYnMtcG9zLTAwMy1leHBlY3RlZC5odG1sCmluZGV4IDE5MTgwMTA2ZTU0OGM4YTE4M2Jh
OTAzYjdiOWM2ZjNlNDQzZDc5YTkuLjViODdmYjNhOTc2YTY4MjFjYjJjYWNhN2E3ZDVlMDQ5MjBk
YmM2MjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvYWJzLXBvcy0wMDMtZXhwZWN0ZWQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3Jp
ZC9zdWJncmlkL2Ficy1wb3MtMDAzLWV4cGVjdGVkLmh0bWwKQEAgLTQwLDE1ICs0MCw2IEBAIGEg
ewogICBiYWNrZ3JvdW5kOiBwdXJwbGU7CiB9CiAKLS5hID4gLnQxID4geCB7Ci0gIG1hcmdpbjog
LTEwcHggMCAwIC0xMHB4OwotfQotLmEgPiAudDIgPiB4LAotLmMgPiAudDIgPiB4LAotLmMgPiAu
dDEgPiB4IHsKLSAgbWFyZ2luOiAwIDAgMCAtMTBweDsKLX0KLQogPC9zdHlsZT4KIDwvaGVhZD4K
IDxib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwOC5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3Jp
ZC9saW5lLW5hbWVzLTAwOC5odG1sCmluZGV4IDdiOTU5MTIwYzMxYjViNThhYmRkYmU2NjVmODdl
NDViZWE3MDNmMmYuLjU2ZWE5NjEyOTg5YjA2N2NjNTUxOTZkODY4Y2UxMTlmOTAyMDU1MzAgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDguaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUt
bmFtZXMtMDA4Lmh0bWwKQEAgLTE0NiwxNCArMTQ2LDE0IEBAIHggewogICA8L2Rpdj4KIDwvZGl2
PgogCi08ZGl2IGNsYXNzPSJncmlkIiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBl
YXQoMywzMHB4KSBbYV0gMzBweCByZXBlYXQoNywzMHB4KSI+Cis8ZGl2IGNsYXNzPSJncmlkIiBz
dHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzMHB4IFthXSByZXBlYXQoMiwzMHB4KSBbYV0g
MzBweCByZXBlYXQoNywzMHB4KSI+CiA8bj48L24+PG4+PC9uPjxuPjwvbj48bj48L24+PG4+PC9u
PjxuPjwvbj48bj48L24+PG4+PC9uPjxuPjwvbj48bj48L24+CiAgIDxkaXYgY2xhc3M9ImhyIiBz
dHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBzdWJncmlkIFtdIFtdIFtdIFtdIFthXTsgZ3Jp
ZC1jb2x1bW46Mi9zcGFuIDYiPgogICAgIDx4IHN0eWxlPSJncmlkLWNvbHVtbjogYS9zcGFuIGEi
Png8L3g+CiAgIDwvZGl2PgogPC9kaXY+CiAKLTxkaXYgY2xhc3M9ImdyaWQiIHN0eWxlPSJncmlk
LXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLDMwcHgpIFthXSAzMHB4IHJlcGVhdCg3LDMwcHgp
Ij4KKzxkaXYgY2xhc3M9ImdyaWQiIHN0eWxlPSJncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDMwcHgg
W2FdIHJlcGVhdCgyLDMwcHgpIFthXSAzMHB4IHJlcGVhdCg3LDMwcHgpIj4KIDxuPjwvbj48bj48
L24+PG4+PC9uPjxuPjwvbj48bj48L24+PG4+PC9uPjxuPjwvbj48bj48L24+PG4+PC9uPjxuPjwv
bj4KICAgPGRpdiBjbGFzcz0iaHIiIHN0eWxlPSJncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHN1Ymdy
aWQgW10gW10gW10gW10gW2FdOyBncmlkLWNvbHVtbjoyL3NwYW4gNiI+CiAgICAgPHggc3R5bGU9
ImdyaWQtY29sdW1uOiBhL2EgMiI+eDwveD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcGFyZW50LXJl
cGVhdC1hdXRvLWZpdC0wMDEuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcGFyZW50LXJlcGVhdC1hdXRvLWZpdC0w
MDEuaHRtbAppbmRleCAxMjAxMGMzMmYyOWM2NzIyMjg2MWU4YTNlMWYyYmMyMGU2NTBhZjFhLi5l
NTEzMDliYjZhMDU5NjZlODhhMTYyMTExZmU2ZTZlMjhmZDdiOGQxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJn
cmlkL3BhcmVudC1yZXBlYXQtYXV0by1maXQtMDAxLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9wYXJlbnQt
cmVwZWF0LWF1dG8tZml0LTAwMS5odG1sCkBAIC00MzUsOCArNDM1LDggQEAgaHRtbCxib2R5IHsK
IAogPHNjcmlwdD4KICAgY29uc3QgZXhwZWN0ZWRSZXN1bHRzID0gWwotICAgICJbeV0gMHB4IFt6
XSAxcHggW3pdIDFweCBbel0gMXB4IFt6XSAxcHggW3pdIiwKLSAgICAiW3ggeV0gMHB4IFt6XSAx
cHggW3pdIDFweCBbel0gMXB4IFt6XSIsCisgICAgIlt5XSAwcHggW3pdIDFweCBbel0gMXB4IFt6
XSAxcHggW3pdIDFweCBbel0gNDZweCIsCisgICAgIlt4IHldIDBweCBbel0gMXB4IFt6XSAxcHgg
W3pdIDFweCBbel0gMjMuNXB4IDIzLjVweCIsCiAgICAgIlt4XSAxcHggW3ggeV0gMHB4IFt5XSAx
MHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt6XSAxcHggW3pdIDFweCBbel0iLAogICAgICJbeF0gMnB4
IFt4XSAycHggW3ggeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbel0gMXB4IFt6
XSIsCiAgICAgIlt4XSAycHggW3hdIDJweCBbeF0gMnB4IFt4IHldIDEwcHggW3ldIDEwcHggW3ld
IDEwcHggW3ldIDBweCBbel0iLApAQCAtNDU0LDE1ICs0NTQsMTUgQEAgaHRtbCxib2R5IHsKICAg
ICAiW3hdIDJweCBbeF0gMnB4IFt4IHldIDEwcHggW3ldIDEwcHggW3ldIDEwcHggW3ldIDEwcHgg
W3pdIiwKICAgICAiW3hdIDJweCBbeF0gMnB4IFt4XSAycHggW3ggeV0gMTBweCBbeV0gMTBweCBb
eV0gMTBweCBbeV0gMHB4IiwKICAgICAiW3ldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4
IFt6XSAxcHggW3pdIDFweCBbel0iLAotICAgICJbeCB5XSAwcHggW3ldIDBweCBbeV0gMTBweCBb
eV0gMTBweCBbel0gMXB4IFt6XSIsCi0gICAgIlt4XSAycHggW3ggeV0gMHB4IFt5XSAxMHB4IFt5
XSAxMHB4IFt5XSAxMHB4IFt6XSIsCisgICAgIlt4IHldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5
XSAxMHB4IFt6XSAxcHggW3pdIDI5cHgiLAorICAgICJbeF0gMnB4IFt4IHldIDBweCBbeV0gMTBw
eCBbeV0gMTBweCBbeV0gMTBweCBbel0gMThweCIsCiAgICAgIlt4XSAycHggW3hdIDJweCBbeCB5
XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IiwKLSAgICAiW3ldIDBweCBbeV0gMHB4
IFt5XSAxMHB4IFt5XSAxMHB4IFt6XSAxcHggW3pdIiwKLSAgICAiW3ggeV0gMHB4IFt5XSAwcHgg
W3ldIDEwcHggW3ldIDEwcHggW3ldIDEwcHggW3pdIiwKLSAgICAiW3hdIDJweCBbeCB5XSAwcHgg
W3ldIDEwcHggW3ldIDEwcHggW3ldIDEwcHgiLAotICAgICJbeV0gMHB4IFt5XSAwcHggW3ldIDEw
cHggW3ldIDEwcHggW3ldIDEwcHggW3pdIiwKLSAgICAiW3ggeV0gMHB4IFt5XSAwcHggW3ldIDEw
cHggW3ldIDEwcHggW3ldIDEwcHgiLAotICAgICJbeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ld
IDEwcHggW3ldIDEwcHgiLAorICAgICJbeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEwcHgg
W3pdIDFweCBbel0gMjlweCIsCisgICAgIlt4IHldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAx
MHB4IFt5XSAxMHB4IFt6XSAyMHB4IiwKKyAgICAiW3hdIDJweCBbeCB5XSAwcHggW3ldIDEwcHgg
W3ldIDEwcHggW3ldIDEwcHggMThweCIsCisgICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBweCBb
eV0gMTBweCBbeV0gMTBweCBbel0gMjBweCIsCisgICAgIlt4IHldIDBweCBbeV0gMHB4IFt5XSAx
MHB4IFt5XSAxMHB4IFt5XSAxMHB4IDIwcHgiLAorICAgICJbeV0gMHB4IFt5XSAwcHggW3ldIDEw
cHggW3ldIDEwcHggW3ldIDEwcHggMjBweCIsCiAgIF07CiAgIFsuLi5kb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCcuZ3JpZCcpXS5mb3JFYWNoKGZ1bmN0aW9uKGdyaWQsIGkpIHsKICAgICBsZXQg
YWN0dWFsID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZ3JpZClbJ2dyaWQtdGVtcGxhdGUtY29s
dW1ucyddOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9wYXJlbnQtcmVwZWF0LWF1dG8tZml0LTAwMi5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvc3ViZ3JpZC9wYXJlbnQtcmVwZWF0LWF1dG8tZml0LTAwMi5odG1sCmluZGV4IGQ0NmY1
OWI5OWY1NTdmYjQyNGZmMGE3YWIyYTQ5NjJkZTIzMDIzYzEuLjZjNjAyYWI3OTAzM2JiOGM0YzYz
YzQ2OTdiZGFlNjhlOGUyOGMxYzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcGFyZW50LXJlcGVhdC1h
dXRvLWZpdC0wMDIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1yZXBlYXQtYXV0by1maXQtMDAy
Lmh0bWwKQEAgLTQzOSw4ICs0MzksOCBAQCBodG1sLGJvZHkgewogCiA8c2NyaXB0PgogICBjb25z
dCBleHBlY3RlZFJlc3VsdHMgPSBbCi0gICAgIlt5XSAwcHggW3pdIDFweCBbel0gMXB4IFt6XSAx
cHggW3pdIDFweCBbel0iLAotICAgICJbeCB5XSAwcHggW3pdIDFweCBbel0gMXB4IFt6XSAxcHgg
W3pdIiwKKyAgICAiW3ldIDBweCBbel0gMXB4IFt6XSAxcHggW3pdIDFweCBbel0gMXB4IFt6XSA0
NnB4IiwKKyAgICAiW3ggeV0gMHB4IFt6XSAxcHggW3pdIDFweCBbel0gMXB4IFt6XSAyMy41cHgg
MjMuNXB4IiwKICAgICAiW3hdIDFweCBbeCB5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3ldIDEw
cHggW3pdIDFweCBbel0gMXB4IFt6XSIsCiAgICAgIlt4XSAycHggW3hdIDJweCBbeCB5XSAxMHB4
IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt6XSAxcHggW3pdIiwKICAgICAiW3hdIDJweCBb
eF0gMnB4IFt4XSAycHggW3ggeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMHB4IFt6XSIs
CkBAIC00NTgsMTUgKzQ1OCwxNSBAQCBodG1sLGJvZHkgewogICAgICJbeF0gMnB4IFt4XSAycHgg
W3ggeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbel0iLAogICAgICJbeF0gMnB4
IFt4XSAycHggW3hdIDJweCBbeCB5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAwcHgiLAog
ICAgICJbeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3pdIDFweCBbel0gMXB4IFt6
XSIsCi0gICAgIlt4IHldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt6XSAxcHggW3pd
IiwKLSAgICAiW3hdIDJweCBbeCB5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3ldIDEwcHggW3pd
IiwKKyAgICAiW3ggeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3pdIDFweCBbel0g
MjlweCIsCisgICAgIlt4XSAycHggW3ggeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4
IFt6XSAxOHB4IiwKICAgICAiW3hdIDJweCBbeF0gMnB4IFt4IHldIDEwcHggW3ldIDEwcHggW3ld
IDEwcHggW3ldIDEwcHgiLAotICAgICJbeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEwcHgg
W3pdIDFweCBbel0iLAotICAgICJbeCB5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBb
eV0gMTBweCBbel0iLAotICAgICJbeF0gMnB4IFt4IHldIDBweCBbeV0gMTBweCBbeV0gMTBweCBb
eV0gMTBweCIsCi0gICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBw
eCBbel0iLAotICAgICJbeCB5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBw
eCIsCi0gICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCIsCisg
ICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbel0gMXB4IFt6XSAyOXB4IiwK
KyAgICAiW3ggeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3ldIDEwcHggW3pdIDIw
cHgiLAorICAgICJbeF0gMnB4IFt4IHldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCAx
OHB4IiwKKyAgICAiW3ldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt6
XSAyMHB4IiwKKyAgICAiW3ggeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3ldIDEw
cHggMjBweCIsCisgICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBw
eCAyMHB4IiwKICAgXTsKICAgWy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ncmlkJyld
LmZvckVhY2goZnVuY3Rpb24oZ3JpZCwgaSkgewogICAgIGxldCBhY3R1YWwgPSB3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShncmlkKVsnZ3JpZC10ZW1wbGF0ZS1yb3dzJ107Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451980</attachid>
            <date>2022-02-14 19:25:14 -0800</date>
            <delta_ts>2022-02-14 19:25:14 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>ews-patch</filename>
            <type>text/plain</type>
            <size>143089</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3OWQzM2UwZDNkOTEuLmVkOWMyZDUyN2YwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBA
CisyMDIyLTAyLTE0ICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAg
ICAgICAgQWNjb3VudCBmb3Igc3ViZ3JpZCBNQlAgd2hlbiBzaXppbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjMzOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY291bnQgZm9yIHN1YmdyaWQgTUJQ
IHdoZW4gc2l6aW5nCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorCisyMDIyLTAyLTE1
ICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29weSB0
cmFjayBzaXplcyBmcm9tIHBhcmVudCBncmlkIGludG8gc3ViZ3JpZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzM2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhpc3RpbmcgdGVzdCBleHBlY3RhdGlv
bnMgdXBkYXRlZC4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisKKzIwMjItMDItMTUg
IE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KKworICAgICAgICBMb29rdXAg
bGluZSBuYW1lcyBmb3Igc3ViIGdyaWRzIHVzaW5nIGxpbmUgbmFtZXMgZnJvbSBhbmNlc3RvciBn
cmlkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
Mjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIGV4cGVjdGF0aW9ucyBmb3IgbmV3bHkgcGFzc2luZyB0ZXN0cy4gCisKKyAgICAgICAgKiBU
ZXN0RXhwZWN0YXRpb25zOgorCiAyMDIyLTAyLTA3ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNv
bT4KIAogICAgICAgICBFbmFibGUgYWNjZWxlcmF0ZWQgZHJhd2luZyBpbiB0aGUgaU9TIHNpbXVs
YXRvcgpAQCAtNzksNiArMTEyLDE3IEBACiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNl
ci4KIAogICAgICAgICAqIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL211bHRpcGxlLWtleWZy
YW1lcy1hbmltYXRpb24tb3ZlcmxhcC1leHBlY3RlZC50eHQ6CisgICAgICAgIEluY2x1ZGUgc3Vi
Z3JpZCBpdGVtcyBpbiBpbnRyaW5zaWMgc2l6ZSBjYWxjdWxhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhpc3RpbmcgdGVzdCBleHBlY3RhdGlv
bnMgdXBkYXRlZC4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisKKzIwMjItMDItMDgg
IE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KKwogICAgICAgICAqIGNvbXBv
c2l0aW5nL2xheWVyLWNyZWF0aW9uL3RyYW5zbGF0ZS1zY2FsZS1hbmltYXRpb24tb3ZlcmxhcC1l
eHBlY3RlZC50eHQ6CiAKIDIwMjItMDItMTMgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVq
aWlAc29ueS5jb20+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4ZmQzZWIwNzdjM2YuLjNhYzYxNjAz
YzBlMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNDAxLDUzICsxNDAxLDIxIEBAIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL21hc29ucnkvdGVudGF0aXZlL21h
c29ucnktb3JkZXItMDAxCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Z3JpZC9tYXNvbnJ5L3RlbnRhdGl2ZS9tYXNvbnJ5LXN1YmdyaWQtMDAxLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlk
L21hc29ucnkvdGVudGF0aXZlL21hc29ucnktc3ViZ3JpZC0wMDIuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9z
dWJncmlkL2F1dG8tdHJhY2stc2l6aW5nLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1w
b3MtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvYWJzLXBvcy0wMDMuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQv
c3ViZ3JpZC9hYnMtcG9zLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Jhc2VsaW5lLTAwMS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlk
L2dyaWQtZ2FwLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwMy5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQt
Z2FwLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwNi5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3Jp
ZC9zdWJncmlkL2dyaWQtZ2FwLTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAw
OC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwOS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJn
cmlkL2dyaWQtZ2FwLWxhcmdlci0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC1s
YXJnZXItMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtbm9ybWFsLTAwMS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLXNtYWxsZXItMDAxLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1
YmdyaWQvaXRlbS1wZXJjZW50YWdlLWhlaWdodC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9s
aW5lLW5hbWVzLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDAyLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9s
aW5lLW5hbWVzLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA1Lmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9s
aW5lLW5hbWVzLTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA4Lmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1ncmlkL3N1YmdyaWQvb3J0aG9nb25hbC13cml0aW5nLW1vZGUtMDAxLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1n
cmlkL3N1YmdyaWQvb3J0aG9nb25hbC13cml0aW5nLW1vZGUtMDAyLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1
YmdyaWQvb3J0aG9nb25hbC13cml0aW5nLW1vZGUtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQv
b3J0aG9nb25hbC13cml0aW5nLW1vZGUtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcGFyZW50
LXJlcGVhdC1hdXRvLWZpdC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9wYXJlbnQtcmVwZWF0
LWF1dG8tZml0LTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3JlcGVhdC1hdXRvLWZpbGwtMDAx
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcmVwZWF0LWF1dG8tZmlsbC0wMDIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9yZXBlYXQtYXV0by1maWxsLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3Jl
cGVhdC1hdXRvLWZpbGwtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcmVwZWF0LWF1dG8tZmls
bC0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9yZXBlYXQtYXV0by1maWxsLTAwNi5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtZ3JpZC9zdWJncmlkL3JlcGVhdC1hdXRvLWZpbGwtMDA3Lmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1Ymdy
aWQvcmVwZWF0LWF1dG8tZmlsbC0wMDguaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9zdWJncmlkLWl0
ZW0tYmxvY2stc2l6ZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9zdWJncmlkLW1icC1vdmVy
Zmxvdy0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9zdWJncmlkLW1icC1vdmVyZmxvdy0wMDIu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9zdWJncmlkLW1icC1vdmVyZmxvdy0wMDMuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvc3ViZ3JpZC9zdWJncmlkLW1icC1vdmVyZmxvdy0wMDQuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3Vi
Z3JpZC9ncmlkLXN1YmdyaWRkZWQtYXhpcy1hdXRvLXJlcGVhdGVyLWNyYXNoLTAwMS5odG1sIFsg
Q3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3Vi
Z3JpZC9ncmlkLXN1YmdyaWRkZWQtYXhpcy1hdXRvLXJlcGVhdGVyLWNyYXNoLTAwMi5odG1sIFsg
Q3Jhc2ggXQogCiB3ZWJraXQub3JnL2IvMTQ5ODkwIGZhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQt
c2hvcnRoYW5kcy1zdHlsZS1mb3JtYXQuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE5
MTUwOCBmYXN0L2Nzcy1ncmlkLWxheW91dC9jcmFzaC1sYXJnZS1wb3NpdGlvbnMuaHRtbCBbIFNr
aXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggZjE2OTM2NjI0NThhLi4xODJl
YjNmYWQyYWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBA
CisyMDIyLTAyLTE0ICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAg
ICAgICAgQWNjb3VudCBmb3Igc3ViZ3JpZCBNQlAgd2hlbiBzaXppbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjMzOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1wb3MtMDAyLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1wb3MtMDAzLWV4cGVj
dGVkLmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJn
cmlkL2xpbmUtbmFtZXMtMDA4Lmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1yZXBlYXQtYXV0by1maXQtMDAxLmh0bWw6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1yZXBl
YXQtYXV0by1maXQtMDAyLmh0bWw6CisKKzIwMjItMDItMTUgIE1hdHQgV29vZHJvdyAgPG1hdHR3
b29kcm93QGFwcGxlLmNvbT4KKworICAgICAgICBMb29rdXAgbGluZSBuYW1lcyBmb3Igc3ViIGdy
aWRzIHVzaW5nIGxpbmUgbmFtZXMgZnJvbSBhbmNlc3RvciBncmlkcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2Mjg3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1zdWJncmlkZGVkLWF4aXMtYXV0by1yZXBlYXRlci1jcmFz
aC0wMDEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwNS1leHBlY3RlZC5odG1sOgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwNS5odG1s
OgorCisgICAgICAgIE1ha2UgbGluZS1uYW1lcy0wMDUuaHRtbCBzbGlnaHRseSBoYXJkZXIgYnkg
aGF2aW5nIHRoZSBtdWx0aXBsZSBkZWZpbml0aW9ucyBvZiB0aGUgJ2EnIGdyaWQgYXJlYSBiZSBk
aWZmZXJlbnQgYXQgYm90aCBlZGdlcy4KKworMjAyMi0wMi0xNSAgTWF0dCBXb29kcm93ICA8bWF0
dHdvb2Ryb3dAYXBwbGUuY29tPgorCisgICAgICAgIEluaGVyaXQgdHJhY2sgY291bnQgZnJvbSBw
YXJlbnQgZ3JpZCBmb3Igc3ViZ3JpZGRlZCBheGVzIGFuZCBjbGFtcCBpdGVtIHBsYWNlbWVudCB0
byB0aGF0IGV4cGxpY2l0IGdyaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzYxMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0IGNoYW5nZXMgdG8gbWF0Y2ggbGF0ZXN0IHNwZWMsIHN1Ym1pdHRl
ZCB1cHN0cmVhbSBhcyBodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9w
dWxsLzMyNjI5CisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1
YmdyaWQvbGluZS1uYW1lcy0wMDItZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDUtZXhwZWN0ZWQuaHRt
bDoKKwogMjAyMi0wMi0xNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0NTUyBDb250YWluZXIgUXVlcmllc10gSW1wbGVtZW50IGZ1bGwgcXVlcnkgcGFyc2Vy
IGFuZCBldmFsdWF0b3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvYWJzLXBvcy0wMDItZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvYWJzLXBvcy0wMDItZXhwZWN0ZWQuaHRtbAppbmRleCAxMzU0MjYwZDUw
YmUuLjY5ZTA3MWM3NThiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9hYnMtcG9zLTAwMi1leHBlY3Rl
ZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1ncmlkL3N1YmdyaWQvYWJzLXBvcy0wMDItZXhwZWN0ZWQuaHRtbApAQCAtNjEsNyAr
NjEsNyBAQCB4IHsKIDxkaXYgY2xhc3M9ImdyaWQiPgogPGk+PC9pPjxpPjwvaT48aT48L2k+PGk+
PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPgogPGRpdiBjbGFz
cz0ic3ViZ3JpZCI+Ci0gIDx4IHN0eWxlPSJncmlkLWNvbHVtbjozOyByaWdodDoyN3B4Ij54PC94
PgorICA8eCBzdHlsZT0iZ3JpZC1jb2x1bW46MzsgcmlnaHQ6MzNweCI+eDwveD4KIDwvZGl2Pgog
PC9kaXY+CiAKQEAgLTExNyw3ICsxMTcsNyBAQCB4IHsKIDxkaXYgY2xhc3M9ImdyaWQiPgogPGk+
PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48
L2k+PGk+PC9pPgogPGRpdiBjbGFzcz0ic3ViZ3JpZCBociI+Ci0gIDx4IHN0eWxlPSJncmlkLWNv
bHVtbjphdXRvLzE7IGxlZnQ6LTI3cHgiPng8L3g+CisgIDx4IHN0eWxlPSJncmlkLWNvbHVtbjph
dXRvLzE7IGxlZnQ6LTMzcHgiPng8L3g+CiA8L2Rpdj4KIDwvZGl2PgogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9z
dWJncmlkL2Ficy1wb3MtMDAzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1wb3MtMDAzLWV4
cGVjdGVkLmh0bWwKaW5kZXggMTkxODAxMDZlNTQ4Li41Yjg3ZmIzYTk3NmEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlk
L3N1YmdyaWQvYWJzLXBvcy0wMDMtZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1wb3Mt
MDAzLWV4cGVjdGVkLmh0bWwKQEAgLTQwLDE1ICs0MCw2IEBAIGEgewogICBiYWNrZ3JvdW5kOiBw
dXJwbGU7CiB9CiAKLS5hID4gLnQxID4geCB7Ci0gIG1hcmdpbjogLTEwcHggMCAwIC0xMHB4Owot
fQotLmEgPiAudDIgPiB4LAotLmMgPiAudDIgPiB4LAotLmMgPiAudDEgPiB4IHsKLSAgbWFyZ2lu
OiAwIDAgMCAtMTBweDsKLX0KLQogPC9zdHlsZT4KIDwvaGVhZD4KIDxib2R5PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9ncmlkLXN1YmdyaWRkZWQtYXhpcy1hdXRvLXJlcGVhdGVyLWNyYXNoLTAwMS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtc3ViZ3JpZGRlZC1heGlzLWF1dG8tcmVwZWF0ZXIt
Y3Jhc2gtMDAxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmNlNTY5YzdlNTZkOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1zdWJn
cmlkZGVkLWF4aXMtYXV0by1yZXBlYXRlci1jcmFzaC0wMDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNyBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHgxNgorICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4MTYKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAo
OCw4KSBzaXplIDc4NHgwCisgICAgICBSZW5kZXJHcmlkIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0
eDAKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDM5MiwwKSBzaXplIDM5MngwCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtZ3JpZC9zdWJncmlkL2dyaWQtc3ViZ3JpZGRlZC1heGlzLWF1dG8tcmVwZWF0ZXItY3Jhc2gt
MDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1zdWJncmlkZGVkLWF4aXMtYXV0by1yZXBl
YXRlci1jcmFzaC0wMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZGI2M2E1ZjZiMzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlk
LXN1YmdyaWRkZWQtYXhpcy1hdXRvLXJlcGVhdGVyLWNyYXNoLTAwMi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw1IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDgKKyAgUmVuZGVy
QmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDgKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBh
dCAoOCw4KSBzaXplIDc4NHgwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDAyLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDAyLWV4cGVjdGVkLmh0bWwKaW5kZXgg
MDRjNTgzOTU5NmM5Li4yMzk5MzI4YmVjYzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1l
cy0wMDItZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDAyLWV4cGVjdGVk
Lmh0bWwKQEAgLTE0LDcgKzE0LDcgQEAgaHRtbCxib2R5IHsKIAogLmdyaWQgewogICBkaXNwbGF5
OiBncmlkOwotICBncmlkOiBhdXRvIC8gW2FdIDUwcHggNTBweCBbYV0gNTBweCA1MHB4IFthXTsK
KyAgZ3JpZDogYXV0byAvIFthXSA1MHB4IDQwcHggW2FdIDEwcHggNTBweCBbYV07CiAgIHBhZGRp
bmc6IDIwcHggMTBweDsKIH0KIApAQCAtMzIsNyArMzIsNyBAQCB4IHsgYmFja2dyb3VuZDogZ3Jl
eTsgfQogCiA8ZGl2IGNsYXNzPSJncmlkIj4KICAgPGRpdiBjbGFzcz0ic3ViZ3JpZCI+Ci0gICAg
PHggc3R5bGU9ImdyaWQtY29sdW1uOiAxIC8gMyI+PC94PgorICAgIDx4IHN0eWxlPSJncmlkLWNv
bHVtbjogMyAvIDQiPjwveD4KICAgPC9kaXY+CiA8L2Rpdj4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3Jp
ZC9saW5lLW5hbWVzLTAwNS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwNS1l
eHBlY3RlZC5odG1sCmluZGV4IDRjN2Y0YjUwZmQxNi4uNDRiYjBlMGRiYmM2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3Jp
ZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA1LWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5l
LW5hbWVzLTAwNS1leHBlY3RlZC5odG1sCkBAIC0xMTUsNyArMTE1LDcgQEAgeCB7CiA8ZGl2IHN0
eWxlPSJkaXNwbGF5OmdyaWQ7IHdpZHRoOjUwMHB4OyBncmlkLWF1dG8tY29sdW1uczogNTBweDsi
PgogPGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwv
aT48aT48L2k+PGk+PC9pPgogICA8ZGl2IGNsYXNzPSJzdWJncmlkMiI+Ci0gICAgPHggc3R5bGU9
ImdyaWQtY29sdW1uOiBzcGFuIDQgLyAxMSI+eDwveD4KKyAgICA8eCBzdHlsZT0iZ3JpZC1jb2x1
bW46IHNwYW4gMyAvIDExIj54PC94PgogICA8L2Rpdj4KIDwvZGl2PgogCkBAIC0xMjksNyArMTI5
LDcgQEAgeCB7CiA8ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7IGdyaWQ6IGF1dG8gLyByZXBlYXQo
MTAsIDUwcHgpIHJlcGVhdCgxMCwgW2FdIDUwcHgpIFthXSI+CiA8aT48L2k+PGk+PC9pPjxpPjwv
aT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+CiAgIDxk
aXYgc3R5bGU9ImRpc3BsYXk6Z3JpZDsgZ3JpZDphdXRvL3N1YmdyaWQ7IGdyaWQtY29sdW1uOiBz
cGFuIDEwOyBncmlkLXJvdzoyIj4KLSAgICA8eCBzdHlsZT0iZ3JpZC1jb2x1bW46IDEgLyAxMSI+
eDwveD4KKyAgICA8eCBzdHlsZT0iZ3JpZC1jb2x1bW46IDEwIC8gMTEiPng8L3g+CiAgIDwvZGl2
PgogPC9kaXY+CiAKQEAgLTE0MSwxMCArMTQxLDEwIEBAIHggewogPC9kaXY+CiAKIDxkaXYgc3R5
bGU9J2Rpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1hcmVhczogIi4gLiAuIC4gLiAuIGEgYSBh
IGEiJz4KLTxkaXYgc3R5bGU9J2Rpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1hcmVhczogIi4g
LiAuIC4gLiAuIC4gYSBhIGEiOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6c3ViZ3JpZDsgZ3JpZC1j
b2x1bW46c3BhbiAxMDsnPgorPGRpdiBzdHlsZT0nZGlzcGxheTpncmlkOyBncmlkLXRlbXBsYXRl
LWFyZWFzOiAiLiAuIC4gLiAuIC4gLiBhIGEgLiI7IGdyaWQtdGVtcGxhdGUtY29sdW1uczpzdWJn
cmlkOyBncmlkLWNvbHVtbjpzcGFuIDEwOyc+CiA8aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+
PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+CiAgIDxkaXYgc3R5bGU9
ImRpc3BsYXk6Z3JpZDsgZ3JpZDphdXRvL3N1YmdyaWQ7IGdyaWQtY29sdW1uOiA2IC8gc3BhbiA1
OyBncmlkLXJvdzoyIj4KLSAgICA8eCBzdHlsZT0iZ3JpZC1jb2x1bW46IDIgLyA2Ij54PC94Pgor
ICAgIDx4IHN0eWxlPSJncmlkLWNvbHVtbjogMiAvIDUiPng8L3g+CiAgIDwvZGl2PgogPC9kaXY+
CiA8L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDUuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1Ymdy
aWQvbGluZS1uYW1lcy0wMDUuaHRtbAppbmRleCBkN2JjZjdhN2U3YjAuLjI2YmU4OTllOTNlZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwNS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGlu
ZS1uYW1lcy0wMDUuaHRtbApAQCAtMTQzLDcgKzE0Myw3IEBAIHggewogPC9kaXY+CiAKIDxkaXYg
c3R5bGU9J2Rpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1hcmVhczogIi4gLiAuIC4gLiAuIGEg
YSBhIGEiJz4KLTxkaXYgc3R5bGU9J2Rpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1hcmVhczog
Ii4gLiAuIC4gLiAuIC4gYSBhIGEiOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6c3ViZ3JpZDsgZ3Jp
ZC1jb2x1bW46c3BhbiAxMDsnPgorPGRpdiBzdHlsZT0nZGlzcGxheTpncmlkOyBncmlkLXRlbXBs
YXRlLWFyZWFzOiAiLiAuIC4gLiAuIC4gLiBhIGEgLiI7IGdyaWQtdGVtcGxhdGUtY29sdW1uczpz
dWJncmlkOyBncmlkLWNvbHVtbjpzcGFuIDEwOyc+CiA8aT48L2k+PGk+PC9pPjxpPjwvaT48aT48
L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+CiAgIDxkaXYgc3R5
bGU9ImRpc3BsYXk6Z3JpZDsgZ3JpZDphdXRvL3N1YmdyaWQ7IGdyaWQtY29sdW1uOiA2IC8gc3Bh
biA1OyBncmlkLXJvdzoyIj4KICAgICA8eCBzdHlsZT0iZ3JpZC1jb2x1bW46IGEiPng8L3g+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA4Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFt
ZXMtMDA4Lmh0bWwKaW5kZXggN2I5NTkxMjBjMzFiLi41NmVhOTYxMjk4OWIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlk
L3N1YmdyaWQvbGluZS1uYW1lcy0wMDguaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA4
Lmh0bWwKQEAgLTE0NiwxNCArMTQ2LDE0IEBAIHggewogICA8L2Rpdj4KIDwvZGl2PgogCi08ZGl2
IGNsYXNzPSJncmlkIiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywzMHB4
KSBbYV0gMzBweCByZXBlYXQoNywzMHB4KSI+Cis8ZGl2IGNsYXNzPSJncmlkIiBzdHlsZT0iZ3Jp
ZC10ZW1wbGF0ZS1jb2x1bW5zOiAzMHB4IFthXSByZXBlYXQoMiwzMHB4KSBbYV0gMzBweCByZXBl
YXQoNywzMHB4KSI+CiA8bj48L24+PG4+PC9uPjxuPjwvbj48bj48L24+PG4+PC9uPjxuPjwvbj48
bj48L24+PG4+PC9uPjxuPjwvbj48bj48L24+CiAgIDxkaXYgY2xhc3M9ImhyIiBzdHlsZT0iZ3Jp
ZC10ZW1wbGF0ZS1jb2x1bW5zOiBzdWJncmlkIFtdIFtdIFtdIFtdIFthXTsgZ3JpZC1jb2x1bW46
Mi9zcGFuIDYiPgogICAgIDx4IHN0eWxlPSJncmlkLWNvbHVtbjogYS9zcGFuIGEiPng8L3g+CiAg
IDwvZGl2PgogPC9kaXY+CiAKLTxkaXYgY2xhc3M9ImdyaWQiIHN0eWxlPSJncmlkLXRlbXBsYXRl
LWNvbHVtbnM6IHJlcGVhdCgzLDMwcHgpIFthXSAzMHB4IHJlcGVhdCg3LDMwcHgpIj4KKzxkaXYg
Y2xhc3M9ImdyaWQiIHN0eWxlPSJncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDMwcHggW2FdIHJlcGVh
dCgyLDMwcHgpIFthXSAzMHB4IHJlcGVhdCg3LDMwcHgpIj4KIDxuPjwvbj48bj48L24+PG4+PC9u
PjxuPjwvbj48bj48L24+PG4+PC9uPjxuPjwvbj48bj48L24+PG4+PC9uPjxuPjwvbj4KICAgPGRp
diBjbGFzcz0iaHIiIHN0eWxlPSJncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHN1YmdyaWQgW10gW10g
W10gW10gW2FdOyBncmlkLWNvbHVtbjoyL3NwYW4gNiI+CiAgICAgPHggc3R5bGU9ImdyaWQtY29s
dW1uOiBhL2EgMiI+eDwveD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcGFyZW50LXJlcGVhdC1hdXRv
LWZpdC0wMDEuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcGFyZW50LXJlcGVhdC1hdXRvLWZpdC0wMDEuaHRtbApp
bmRleCAxMjAxMGMzMmYyOWMuLmU1MTMwOWJiNmEwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9wYXJl
bnQtcmVwZWF0LWF1dG8tZml0LTAwMS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcGFyZW50LXJlcGVhdC1h
dXRvLWZpdC0wMDEuaHRtbApAQCAtNDM1LDggKzQzNSw4IEBAIGh0bWwsYm9keSB7CiAKIDxzY3Jp
cHQ+CiAgIGNvbnN0IGV4cGVjdGVkUmVzdWx0cyA9IFsKLSAgICAiW3ldIDBweCBbel0gMXB4IFt6
XSAxcHggW3pdIDFweCBbel0gMXB4IFt6XSIsCi0gICAgIlt4IHldIDBweCBbel0gMXB4IFt6XSAx
cHggW3pdIDFweCBbel0iLAorICAgICJbeV0gMHB4IFt6XSAxcHggW3pdIDFweCBbel0gMXB4IFt6
XSAxcHggW3pdIDQ2cHgiLAorICAgICJbeCB5XSAwcHggW3pdIDFweCBbel0gMXB4IFt6XSAxcHgg
W3pdIDIzLjVweCAyMy41cHgiLAogICAgICJbeF0gMXB4IFt4IHldIDBweCBbeV0gMTBweCBbeV0g
MTBweCBbeV0gMTBweCBbel0gMXB4IFt6XSAxcHggW3pdIiwKICAgICAiW3hdIDJweCBbeF0gMnB4
IFt4IHldIDEwcHggW3ldIDEwcHggW3ldIDEwcHggW3ldIDEwcHggW3pdIDFweCBbel0iLAogICAg
ICJbeF0gMnB4IFt4XSAycHggW3hdIDJweCBbeCB5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5
XSAwcHggW3pdIiwKQEAgLTQ1NCwxNSArNDU0LDE1IEBAIGh0bWwsYm9keSB7CiAgICAgIlt4XSAy
cHggW3hdIDJweCBbeCB5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt6XSIsCiAg
ICAgIlt4XSAycHggW3hdIDJweCBbeF0gMnB4IFt4IHldIDEwcHggW3ldIDEwcHggW3ldIDEwcHgg
W3ldIDBweCIsCiAgICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbel0gMXB4
IFt6XSAxcHggW3pdIiwKLSAgICAiW3ggeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEwcHgg
W3pdIDFweCBbel0iLAotICAgICJbeF0gMnB4IFt4IHldIDBweCBbeV0gMTBweCBbeV0gMTBweCBb
eV0gMTBweCBbel0iLAorICAgICJbeCB5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBb
el0gMXB4IFt6XSAyOXB4IiwKKyAgICAiW3hdIDJweCBbeCB5XSAwcHggW3ldIDEwcHggW3ldIDEw
cHggW3ldIDEwcHggW3pdIDE4cHgiLAogICAgICJbeF0gMnB4IFt4XSAycHggW3ggeV0gMTBweCBb
eV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCIsCi0gICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBw
eCBbeV0gMTBweCBbel0gMXB4IFt6XSIsCi0gICAgIlt4IHldIDBweCBbeV0gMHB4IFt5XSAxMHB4
IFt5XSAxMHB4IFt5XSAxMHB4IFt6XSIsCi0gICAgIlt4XSAycHggW3ggeV0gMHB4IFt5XSAxMHB4
IFt5XSAxMHB4IFt5XSAxMHB4IiwKLSAgICAiW3ldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAx
MHB4IFt5XSAxMHB4IFt6XSIsCi0gICAgIlt4IHldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAx
MHB4IFt5XSAxMHB4IiwKLSAgICAiW3ldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5
XSAxMHB4IiwKKyAgICAiW3ldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt6XSAxcHgg
W3pdIDI5cHgiLAorICAgICJbeCB5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0g
MTBweCBbel0gMjBweCIsCisgICAgIlt4XSAycHggW3ggeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4
IFt5XSAxMHB4IDE4cHgiLAorICAgICJbeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEwcHgg
W3ldIDEwcHggW3pdIDIwcHgiLAorICAgICJbeCB5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0g
MTBweCBbeV0gMTBweCAyMHB4IiwKKyAgICAiW3ldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAx
MHB4IFt5XSAxMHB4IDIwcHgiLAogICBdOwogICBbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs
bCgnLmdyaWQnKV0uZm9yRWFjaChmdW5jdGlvbihncmlkLCBpKSB7CiAgICAgbGV0IGFjdHVhbCA9
IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGdyaWQpWydncmlkLXRlbXBsYXRlLWNvbHVtbnMnXTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1ncmlkL3N1YmdyaWQvcGFyZW50LXJlcGVhdC1hdXRvLWZpdC0wMDIuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1
YmdyaWQvcGFyZW50LXJlcGVhdC1hdXRvLWZpdC0wMDIuaHRtbAppbmRleCBkNDZmNTliOTlmNTUu
LjZjNjAyYWI3OTAzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9wYXJlbnQtcmVwZWF0LWF1dG8tZml0
LTAwMi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcGFyZW50LXJlcGVhdC1hdXRvLWZpdC0wMDIuaHRtbApA
QCAtNDM5LDggKzQzOSw4IEBAIGh0bWwsYm9keSB7CiAKIDxzY3JpcHQ+CiAgIGNvbnN0IGV4cGVj
dGVkUmVzdWx0cyA9IFsKLSAgICAiW3ldIDBweCBbel0gMXB4IFt6XSAxcHggW3pdIDFweCBbel0g
MXB4IFt6XSIsCi0gICAgIlt4IHldIDBweCBbel0gMXB4IFt6XSAxcHggW3pdIDFweCBbel0iLAor
ICAgICJbeV0gMHB4IFt6XSAxcHggW3pdIDFweCBbel0gMXB4IFt6XSAxcHggW3pdIDQ2cHgiLAor
ICAgICJbeCB5XSAwcHggW3pdIDFweCBbel0gMXB4IFt6XSAxcHggW3pdIDIzLjVweCAyMy41cHgi
LAogICAgICJbeF0gMXB4IFt4IHldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbel0g
MXB4IFt6XSAxcHggW3pdIiwKICAgICAiW3hdIDJweCBbeF0gMnB4IFt4IHldIDEwcHggW3ldIDEw
cHggW3ldIDEwcHggW3ldIDEwcHggW3pdIDFweCBbel0iLAogICAgICJbeF0gMnB4IFt4XSAycHgg
W3hdIDJweCBbeCB5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAwcHggW3pdIiwKQEAgLTQ1
OCwxNSArNDU4LDE1IEBAIGh0bWwsYm9keSB7CiAgICAgIlt4XSAycHggW3hdIDJweCBbeCB5XSAx
MHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt6XSIsCiAgICAgIlt4XSAycHggW3hdIDJw
eCBbeF0gMnB4IFt4IHldIDEwcHggW3ldIDEwcHggW3ldIDEwcHggW3ldIDBweCIsCiAgICAgIlt5
XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbel0gMXB4IFt6XSAxcHggW3pdIiwKLSAg
ICAiW3ggeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3pdIDFweCBbel0iLAotICAg
ICJbeF0gMnB4IFt4IHldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbel0iLAorICAg
ICJbeCB5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbel0gMXB4IFt6XSAyOXB4IiwK
KyAgICAiW3hdIDJweCBbeCB5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3ldIDEwcHggW3pdIDE4
cHgiLAogICAgICJbeF0gMnB4IFt4XSAycHggW3ggeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBb
eV0gMTBweCIsCi0gICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbel0gMXB4
IFt6XSIsCi0gICAgIlt4IHldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4
IFt6XSIsCi0gICAgIlt4XSAycHggW3ggeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4
IiwKLSAgICAiW3ldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt6XSIs
Ci0gICAgIlt4IHldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IiwKLSAg
ICAiW3ldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IiwKKyAgICAiW3ld
IDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt6XSAxcHggW3pdIDI5cHgiLAorICAgICJb
eCB5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbel0gMjBweCIsCisg
ICAgIlt4XSAycHggW3ggeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IDE4cHgiLAor
ICAgICJbeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3ldIDEwcHggW3pdIDIwcHgi
LAorICAgICJbeCB5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCAyMHB4
IiwKKyAgICAiW3ldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IDIwcHgi
LAogICBdOwogICBbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmdyaWQnKV0uZm9yRWFj
aChmdW5jdGlvbihncmlkLCBpKSB7CiAgICAgbGV0IGFjdHVhbCA9IHdpbmRvdy5nZXRDb21wdXRl
ZFN0eWxlKGdyaWQpWydncmlkLXRlbXBsYXRlLXJvd3MnXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMGM0ODk3
ZTExYjQuLjE3Yjk2Y2IyNmY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NyBAQAorMjAyMi0w
Mi0xNCAgTWF0dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgorCisgICAgICAgIEFj
Y291bnQgZm9yIHN1YmdyaWQgTUJQIHdoZW4gc2l6aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYzMzgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGV4dHJhIG1hcmdpbiB0byBzdWJncmlkIGl0
ZW1zIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHNpemluZyBvZiBhbiBvdXRlcgorICAgICAgICBncmlk
J3MgdHJhY2tzIHRvIGFjY291bnQgZm9yIHRoZSBtYXJnaW4vYm9yZGVyL3BhZGRpbmcgb2YgdGhl
IGludGVybWVkaWF0ZQorICAgICAgICBzdWJncmlkIGl0ZW0gaXRzZWxmLgorICAgICAgICBBbHNv
IGNvbnRyaWJ1dGVzIHRoZSBzdWJncmlkJ3MgbS9iL3AgdG8gdGhlIGVkZ2UgdHJhY2tzIGl0IGNv
dmVyLCBldmVuCisgICAgICAgIGlmIG5vIGlubmVyIGl0ZW1zIG9jY3VweSB0aGF0IHRyYWNrLgor
CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JpZExheW91dEZ1bmN0aW9uczo6ZGlyZWN0aW9uRnJvbVNpZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JpZExheW91dEZ1bmN0aW9uczo6aGFzUmVsYXRpdmVPckludHJpbnNpY1Np
emVGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkTGF5b3V0RnVuY3Rpb25zOjpleHRy
YU1hcmdpbkZvclN1YmdyaWRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkTGF5b3V0RnVu
Y3Rpb25zOjpnYXBEaWZmZXJlbmNlRm9yU3ViZ3JpZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyaWRMYXlvdXRGdW5jdGlvbnM6Om1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtU3RyYXRlZ3k6OmxvZ2lj
YWxIZWlnaHRGb3JDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG1TdHJhdGVneTo6dXBkYXRlT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRl
bnRTaXplRm9yQ2hpbGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVmaW5pdGVTaXplU3Ry
YXRlZ3k6Om1pbkxvZ2ljYWxTaXplRm9yQ2hpbGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGVmaW5pdGVTaXplU3RyYXRlZ3k6Om1pbkNvbnRlbnRGb3JDaGlsZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjphZGRTdWJncmlkTWFyZ2luQm9yZGVyUGFkZGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmFjY3VtdWxhdGVJbnRyaW5zaWNTaXplc0Zv
clRyYWNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJHcmlkOjppc1N1YmdyaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6bWF5QmVTdWJncmlkRXhjbHVkaW5nQWJzUG9zIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckdyaWQ6OmdyaWRTcGFuQ292ZXJzUmVhbFRyYWNrcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpncmlkQXJlYUJyZWFkdGhGb3JPdXRPZkZsb3dD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlQ29udGVudFBvc2l0
aW9uQW5kRGlzdHJpYnV0aW9uT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6
OmdyaWRTcGFuRm9yQ2hpbGQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlk
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RHcmlkUG9zaXRpb25zRnJvbVN0eWxlKToKKworMjAy
Mi0wMi0xNSAgTWF0dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgorCisgICAgICAg
IEluY2x1ZGUgc3ViZ3JpZCBpdGVtcyBpbiBpbnRyaW5zaWMgc2l6ZSBjYWxjdWxhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzM3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcmVzb2x2ZUludHJp
bnNpY1RyYWNrU2l6ZXMgYW5kIGZpbmRVc2VkRmxleEZyYWN0aW9uIG5vdyByZWN1cnNlIGludG8g
c3ViZ3JpZGRlZCBpdGVtcworICAgICAgICB0byBpdGVyYXRlIHRoZSBjaGlsZHJlbiBzYSBpZiB0
aGV5IHdlcmUgZGlyZWN0bHkgcGFydCBvZiB0aGUgb3V0ZXIgZ3JpZC4KKyAgICAgICAgTmV3IGNv
bnN0cnVjdG9yIGFkZGVkIHRvIEdyaWRJdGVyYXRvciBmb3IgY29uc3RydWN0aW5nIGEgbmV3IGl0
ZXJhdG9yIGZvciB0aGUgc3ViZ3JpZCBpdGVtcywKKyAgICAgICAgd2hpY2ggYWRqdXN0cyB0aGUg
cm93L2NvbHVtbiBpbmRpY2VzIGludG8gdGhlIGxvY2FsIGNvb3JkaW5hdGUgc3BhY2Ugb2YgdGhl
IHN1YmdyaWQuCisgICAgICAgIEFkZHMgYSBuZXcgbWV0aG9kIHRvIHJlbmRlckdyaWQgJ3BsYWNl
SXRlbXMnIHNvIHRoYXQgd2UgY2FuIGVuc3VyZSBzdWJncmlkIGl0ZW1zIGhhdmUgZmluaXNoZWQg
cGxhY2VtZW50CisgICAgICAgIHdoZW4gZG9pbmcgc2l6aW5nIGZvciB0aGUgb3V0ZXIgZ3JpZC4K
KworICAgICAgICBFeGlzdGluZyB0ZXN0IGV4cGVjdGF0aW9ucyB1cGRhdGVkLgorCisgICAgICAg
ICogcmVuZGVyaW5nL0dyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEl0ZXJhdG9yOjpH
cmlkSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEl0ZXJhdG9yOjpuZXh0R3JpZEl0
ZW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEl0ZXJhdG9yOjpjcmVhdGVGb3JTdWJncmlkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvR3JpZC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEl0ZXJh
dG9yOjpkaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9HcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3Jp
dGhtOjplc3RpbWF0ZWRHcmlkQXJlYUJyZWFkdGhGb3JDaGlsZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmdyaWRBcmVhQnJlYWR0aEZvckNoaWxk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6aXNJ
bnRyaW5zaWNTaXplZEdyaWRBcmVhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFj
a1NpemluZ0FsZ29yaXRobVN0cmF0ZWd5OjptaW5TaXplRm9yQ2hpbGQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjp1cGRhdGVCYXNlbGluZUFsaWdu
bWVudENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGht
OjpiYXNlbGluZU9mZnNldEZvckNoaWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluZGVm
aW5pdGVTaXplU3RyYXRlZ3k6OmFjY3VtdWxhdGVGbGV4RnJhY3Rpb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5kZWZpbml0ZVNpemVTdHJhdGVneTo6ZmluZFVzZWRGbGV4RnJhY3Rpb24g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjphY2N1
bXVsYXRlSW50cmluc2ljU2l6ZXNGb3JUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJh
Y2tTaXppbmdBbGdvcml0aG06OnJlc29sdmVJbnRyaW5zaWNUcmFja1NpemVzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VJ
dGVtcyk6CisgICAgICAgIChXZWJDb3JlOjppbnNlcnRJbnRvR3JpZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JBeGlzSXRlbU9u
R3JpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRHcmlkSXRl
bXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6aXNTdWJncmlkSW5QYXJlbnREaXJl
Y3Rpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6CisKKzIwMjIt
MDItMTUgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KKworICAgICAgICBD
b3B5IHRyYWNrIHNpemVzIGZyb20gcGFyZW50IGdyaWQgaW50byBzdWJncmlkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYzMzYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3BpZXMgdHJhY2sgc2l6ZXMg
ZnJvbSB0aGUgcGFyZW50IFJlbmRlckdyaWQncyB0cmFjayBzaXppbmcgYWxnb3JpdGhtIGZvciBh
eGVzCisgICAgICAgIHRoYXQgYXJlIHN1YmdyaWRkZWQsIHJhdGhlciB0aGFuIGRvaW5nIGl0cyBv
d24gc2l6aW5nLgorICAgICAgICBBY2NvdW50cyBmb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUg
c3ViZ3JpZCdzIGdyaWQtZ2FwIGFuZCB0aGUgcGFyZW50J3MgZ3JpZCBnYXAsCisgICAgICAgIGFz
IHdlbGwgYXMgc3BhY2Ugb2NjdXBpZWQgYnkgdGhlIHN1YmdyaWQgZWxlbWVudCdzIG1hcmdpbi9i
b3JkZXIvcGFkZGluZy4KKworICAgICAgICBFeGlzdGluZyB0ZXN0IGV4cGVjdGF0aW9ucyB1cGRh
dGVkLgorCisgICAgICAgICogcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OnJ1bik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
R3JpZDo6bGF5b3V0QmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Z3JpZEdh
cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpwb3B1bGF0ZUdyaWRQb3Np
dGlvbnNGb3JEaXJlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6CisK
KzIwMjItMDItMTUgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KKworICAg
ICAgICBMb29rdXAgbGluZSBuYW1lcyBmb3Igc3ViIGdyaWRzIHVzaW5nIGxpbmUgbmFtZXMgZnJv
bSBhbmNlc3RvciBncmlkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2Mjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oOgorICAgICAgICAoV2ViQ29yZTo6
R3JpZFNwYW46OmNsYW1wKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9u
c1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4cGxpY2l0R3JpZFNpemVGb3JTaWRl
KToKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zcG9zZWRTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6
OmNsYW1wZWRJbXBsaWNpdExpbmVGb3JBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTGlu
ZUNvbGxlY3Rpb25CYXNlOjpOYW1lZExpbmVDb2xsZWN0aW9uQmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpOYW1lZExpbmVDb2xsZWN0aW9uQmFzZTo6ZW5zdXJlTG9jYWxTdG9yYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hbWVkTGluZUNvbGxlY3Rpb25CYXNlOjpjb250YWlucyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYW1lZExpbmVDb2xsZWN0aW9uOjpOYW1lZExpbmVDb2xsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTGluZUNvbGxlY3Rpb246Omhhc0V4cGxpY2l0TmFt
ZWRMaW5lcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZExpbmVDb2xsZWN0aW9uOjpo
YXNOYW1lZExpbmVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTGluZUNvbGxlY3Rp
b246Omxhc3RMaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTGluZUNvbGxlY3Rp
b246OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTGluZUNvbGxlY3Rp
b246OmZpcnN0RXhwbGljaXRQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYW1l
ZExpbmVDb2xsZWN0aW9uOjpmaXJzdFBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OmFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6bG9va0Fo
ZWFkRm9yTmFtZWRHcmlkTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpsb29rQmFja0Zvck5hbWVk
R3JpZExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlv
bkZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpkZWZpbml0ZUdyaWRTcGFuV2l0aE5hbWVk
TGluZVNwYW5BZ2FpbnN0T3Bwb3NpdGUpOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZU5hbWVk
R3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OnJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUpOgorCisgICAgICAgIFNwbGl0cyBOYW1l
ZExpbmVDb2xsZWN0aW9uIGludG8gdHdvIGNsYXNzZXMsIHdoZXJlIHRoZSBiYXNlIGNsYXNzIG9u
bHkgaGFuZGxlcworICAgICAgICBhIHNpbmdsZSBncmlkLCBhbmQgdGhlIHN1YmNsYXNzIGhhbmRs
ZXMgaW5oZXJpdGluZyBsaW5lcyBmcm9tIGFuY2VzdG9yIGdyaWRzLgorICAgICAgICBMb29wcyBv
dmVyIGFuY2VzdG9yIGdyaWRzLCBsb29raW5nIGZvciBuYW1lZCBsaW5lcyB0aGF0IGFyZSBzaGFy
ZWQgd2l0aCB0aGUgaW5pdGlhbAorICAgICAgICBncmlkLCBhbmQgaWYgZm91bmQsIGFkZHMgdGhl
bSAodXNpbmcgdGhlIGxvY2FsIGxpbmUgbnVtYmVyKSB0byBhIGxvY2FsIGNvcHkgb2YgdGhlIGxp
bmUKKyAgICAgICAgbmFtZXMgYXJyYXkuCisKKyAgICAgICAgQWxzbyBoYW5kbGVzIHRoZSBjYXNl
cyB3aGVyZSBhIG5hbWVkIGdyaWQgYXJlYSBzcGFucyBvdXRzaWRlIG9mIHRoZSBzdWJncmlkIGFy
ZWEsIGJ5CisgICAgICAgIGNsYW1waW5nIHRoZSBhcmVhIHRvIHRoZSBleHBsaWNpdCBncmlkIChz
aW5jZSBzdWJncmlkIGNhbid0IGdlbmVyYXRlIGltcGxpY2l0IGdyaWQgbGluZXMpLAorICAgICAg
ICBhbmQgdGhlbiBnZW5lcmF0aW5nIG5ldyBpbXBsaWNpdCBncmlkIGxpbmVzLiBUaGVzZSBsaW5l
cyBhcmUgYWRkZWQgdG8gdGhlIHNhbWUgbG9jYWwgbGluZQorICAgICAgICBuYW1lIGFycmF5IGFz
IGlzIHVzZWQgZm9yIGluaGVyaXRlZCBhbmNlc3RvciBsaW5lcy4gVGhpcyBjbGFtcGluZyBhbmQg
cmVnZW5lcmF0aW9uIG9mIGltcGxpY2l0CisgICAgICAgIGxpbmVzIHdvcmtzIGZvciBib3RoIGFy
ZWFzIGRlZmluZWQgb24gdGhlIHN1YmdyaWQsIGFzIHdlbGwgYXMgb24gYW5jZXN0b3JzLgorCisK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmg6CisgICAg
ICAgICogc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUdyaWRUZW1wbGF0ZUNvbHVtbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVHcmlkVGVtcGxhdGVS
b3dzKToKKworICAgICAgICBSZW1vdmVzIHRoZXNlIGNhbGxzIHRvIGFkZCB0aGUgaW1wbGljaXQg
bGluZXMgdG8gdGhlIG5vcm1hbCBsaW5lIGxpc3RzLCBzaW5jZQorICAgICAgICB0aGV5J3JlIGFs
cmVhZHkgaW4gdGhlIGltcGxpY2l0IGxpbmUgbGlzdHMgYW5kIGhhdmluZyB0aGVtIGluIGJvdGgg
c3RvcHMgdXMgZnJvbQorICAgICAgICBiZWluZyBhYmxlIHRvIHJlZ2VuZXJhdGUgdGhlbSBmb3Ig
c3ViZ3JpZHMuCisKKzIwMjItMDItMTUgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxl
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgZ2V0Q29tcHV0ZWRTdHlsZSBmb3Igc3ViZ3JpZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjE0OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgT3Jk
ZXJlZE5hbWVkTGluZXNDb2xsZWN0b3JJblN1YmdyaWRMYXlvdXQgdG8gaXRlcmF0ZSB0aGUgc3Vi
Z3JpZCBuYW1lcyBsaXN0LCBzdG9wcGluZworICAgICAgICBhdCB0aGUgbnVtYmVyIG9mIGFjdHVh
bCB0cmFja3MgaW4gdGhlIGdyaWQuCisKKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3JkZXJlZE5hbWVkTGluZXNDb2xs
ZWN0b3JJblN1YmdyaWRMYXlvdXQ6Ok9yZGVyZWROYW1lZExpbmVzQ29sbGVjdG9ySW5TdWJncmlk
TGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9yZGVyZWROYW1lZExpbmVzQ29sbGVjdG9ySW5H
cmlkTGF5b3V0Ojpjb2xsZWN0TGluZU5hbWVzRm9ySW5kZXggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3JkZXJlZE5hbWVkTGluZXNDb2xsZWN0b3JJblN1YmdyaWRMYXlvdXQ6OmNvbGxlY3RM
aW5lTmFtZXNGb3JJbmRleCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjphZGRWYWx1ZXNGb3JO
YW1lZEdyaWRMaW5lc0F0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVTdWJncmlk
VHJhY2tMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yR3JpZFRyYWNrTGlzdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyR3JpZDo6Y29tcHV0ZUF1dG9SZXBlYXRUcmFja3NDb3VudCBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckdyaWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFBv
c2l0aW9uc1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTGluZUNvbGxlY3Rp
b246OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVH
cmlkVHJhY2tMaXN0KToKKworCisgICAgICAgIEluaGVyaXQgdHJhY2sgY291bnQgZnJvbSBwYXJl
bnQgZ3JpZCBmb3Igc3ViZ3JpZGRlZCBheGVzIGFuZCBjbGFtcCBpdGVtIHBsYWNlbWVudCB0byB0
aGF0IGV4cGxpY2l0IGdyaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzYxMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDaGFuZ2VzIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkPD5D
b3VudCB0byByZXR1cm4gdGhlIG51bWJlciBvZiB0cmFja3MKKyAgICAgICAgc3Bhbm5lZCBpbiB0
aGUgcGFyZW50IGdyaWQsIGZvciBheGVzIHRoYXQgYXJlIGEgc3ViZ3JpZC4KKworICAgICAgICBV
cGRhdGVzIGFkanVzdEdyaWRQb3NpdGlvbnNGb3JTdHlsZSB0byB1c2UgdGhlIG51bWJlciBvZiBs
aW5lcyBzcGVjaWZpZWQgaW4gdGhlCisgICAgICAgIHN1YmdyaWQgcHJvcGVydHksIGZvciBncmlk
IGl0ZW1zIHRoYXQgYXJlIGFsc28gYSBzdWJncmlkIGFuZCBoYXZlIGFuIG90aGVyd2lzZQorICAg
ICAgICBpbmRlZmluaXRlIHNwYW4uCisKKyAgICAgICAgQWRkcyBjbGFtcGluZyBzdXBwb3J0IHRv
IEdyaWQgc28gdGhhdCB3ZSBjYW4gcHJldmVudCBzdWJncmlkcyBmcm9tIGV2ZXIgYWRkaW5nCisg
ICAgICAgIG5ldyBpbXBsaWNpdCB0cmFja3MuCisKKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkOjppbnNlcnQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JpZDo6c2V0Q2xhbXBpbmdGb3JTdWJncmlkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6OmNs
YW1wQW5kVHJhbnNsYXRlVG9JbXBsaWNpdEdyaWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZDo6
c2V0TmVlZHNJdGVtc1BsYWNlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJHcmlkOjpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckdyaWQ6OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmllZE1ham9y
QXhpc0l0ZW1zT25HcmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6Omlz
U3ViZ3JpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjppc1N1YmdyaWRS
b3dzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmlzU3ViZ3JpZENvbHVt
bnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Z3JpZEFyZWFCcmVhZHRo
Rm9yT3V0T2ZGbG93Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6bnVtVHJh
Y2tzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zcG9zZWREaXJlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hp
bGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Z3JpZFNwYW5Gb3JPdXRP
ZkZsb3dDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpncmlkU3Bh
bkZvckNoaWxkIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oOgorICAgICAgICAoV2ViQ29yZTo6R3Jp
ZFNwYW46OmludGVnZXJTcGFuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRTcGFuOjp0
cmFuc2xhdGVUbyk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkU3Bhbjo6Y2xhbXApOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aXNJbmRlZmluaXRlU3Bhbik6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RHcmlk
UG9zaXRpb25zRnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFBv
c2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpleHBsaWNpdEdyaWRTaXplRm9yU2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlTmFt
ZWRHcmlkTGluZVBvc2l0aW9uRnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVO
YW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpyZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6cmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0
eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmg6
CisKKzIwMjItMDItMTUgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbmhlcml0IHRyYWNrIGNvdW50IGZyb20gcGFyZW50IGdyaWQgZm9yIHN1YmdyaWRk
ZWQgYXhlcyBhbmQgY2xhbXAgaXRlbSBwbGFjZW1lbnQgdG8gdGhhdCBleHBsaWNpdCBncmlkLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTIyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlcyBH
cmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZDw+Q291bnQgdG8gcmV0dXJuIHRoZSBu
dW1iZXIgb2YgdHJhY2tzCisgICAgICAgIHNwYW5uZWQgaW4gdGhlIHBhcmVudCBncmlkLCBmb3Ig
YXhlcyB0aGF0IGFyZSBhIHN1YmdyaWQuCisKKyAgICAgICAgVXBkYXRlcyBhZGp1c3RHcmlkUG9z
aXRpb25zRm9yU3R5bGUgdG8gdXNlIHRoZSBudW1iZXIgb2YgbGluZXMgc3BlY2lmaWVkIGluIHRo
ZQorICAgICAgICBzdWJncmlkIHByb3BlcnR5LCBmb3IgZ3JpZCBpdGVtcyB0aGF0IGFyZSBhbHNv
IGEgc3ViZ3JpZCBhbmQgaGF2ZSBhbiBvdGhlcndpc2UKKyAgICAgICAgaW5kZWZpbml0ZSBzcGFu
LgorCisgICAgICAgIEFkZHMgY2xhbXBpbmcgc3VwcG9ydCB0byBHcmlkIHNvIHRoYXQgd2UgY2Fu
IHByZXZlbnQgc3ViZ3JpZHMgZnJvbSBldmVyIGFkZGluZworICAgICAgICBuZXcgaW1wbGljaXQg
dHJhY2tzLgorCisgICAgICAgICogcmVuZGVyaW5nL0dyaWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JpZDo6aW5zZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6OnNldENsYW1waW5nRm9y
U3ViZ3JpZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkOjpjbGFtcEFuZFRyYW5zbGF0ZVRvSW1w
bGljaXRHcmlkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6OnNldE5lZWRzSXRlbXNQbGFjZW1l
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9HcmlkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUludHJp
bnNpY0xvZ2ljYWxXaWR0aHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6
cGxhY2VJdGVtc09uR3JpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpw
b3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjppc1N1YmdyaWQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6aXNTdWJncmlkUm93cyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJHcmlkOjppc1N1YmdyaWRDb2x1bW5zIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckdyaWQ6OmdyaWRBcmVhQnJlYWR0aEZvck91dE9mRmxvd0NoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6Om51bVRyYWNrcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjp0cmFuc3Bvc2VkRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OmNvbXB1dGVHcmlkU3BhbkZvck91dE9mRmxvd0NoaWxkIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckdyaWQ6OmdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Z3JpZFNwYW5Gb3JDaGlsZCBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvR3JpZEFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRTcGFuOjppbnRlZ2VyU3BhbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkU3Bhbjo6dHJhbnNsYXRlVG8pOgorICAgICAg
ICAoV2ViQ29yZTo6R3JpZFNwYW46OmNsYW1wKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
R3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5kZWZpbml0
ZVNwYW4pOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0R3JpZFBvc2l0aW9uc0Zyb21TdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENv
bHVtbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhw
bGljaXRHcmlkUm93Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhwbGljaXRHcmlkU2l6ZUZv
clNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkZy
b21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9u
QWdhaW5zdE9wcG9zaXRlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZUdyaWRQ
b3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29s
dmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFBvc2l0aW9u
c1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5oOgorCiAyMDIyLTAyLTE0ICBQYXRy
aWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBF
bGVtZW50IHRvb2x0aXBzIGluIG92ZXJsYXlzIHNob3VsZCB1c2Ugc2FtZSBlbmNvZGFibGUvZGVj
b2RhYmxlIExhYmVsIHR5cGUgYXMgZ3JpZCBvdmVybGF5cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBkM2JhZDlhZDIzYjQu
Ljc1OTAyNTY4NzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTg5OCw2ICs4OTgsMzggQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2F1dG9SZXBlYXRUcmFja0xpc3RMZW5ndGg7CiB9OwogCitjbGFzcyBPcmRlcmVk
TmFtZWRMaW5lc0NvbGxlY3RvckluU3ViZ3JpZExheW91dCA6IHB1YmxpYyBPcmRlcmVkTmFtZWRM
aW5lc0NvbGxlY3RvciB7CitwdWJsaWM6CisgICAgT3JkZXJlZE5hbWVkTGluZXNDb2xsZWN0b3JJ
blN1YmdyaWRMYXlvdXQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBib29sIGlzUm93QXhpcywg
dW5zaWduZWQgdG90YWxUcmFja3NDb3VudCkKKyAgICAgICAgOiBPcmRlcmVkTmFtZWRMaW5lc0Nv
bGxlY3RvcihzdHlsZSwgaXNSb3dBeGlzKQorICAgICAgICAsIG1faW5zZXJ0aW9uUG9pbnQoaXNS
b3dBeGlzID8gc3R5bGUuZ3JpZEF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoKSA6IHN0
eWxlLmdyaWRBdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50KCkpCisgICAgICAgICwgbV9hdXRv
UmVwZWF0VHJhY2tMaXN0TGVuZ3RoKChpc1Jvd0F4aXMgPyBzdHlsZS5hdXRvUmVwZWF0T3JkZXJl
ZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkgOiBzdHlsZS5hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3Jp
ZFJvd0xpbmVzKCkpLnNpemUoKSkKKyAgICAgICAgLCBtX3RvdGFsVHJhY2tzKHRvdGFsVHJhY2tz
Q291bnQpCisgICAgeworICAgICAgICBpZiAoIW1fYXV0b1JlcGVhdFRyYWNrTGlzdExlbmd0aCkg
eworICAgICAgICAgICAgbV9hdXRvUmVwZWF0VG90YWxUcmFja3MgPSAwOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vICsxIHRvIGNvbnZlcnQgZnJvbSB0cmFja3Mg
dG8gbGluZXMKKyAgICAgICAgdW5zaWduZWQgbmFtZWQgPSAoaXNSb3dBeGlzID8gc3R5bGUub3Jk
ZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkgOiBzdHlsZS5vcmRlcmVkTmFtZWRHcmlkUm93TGlu
ZXMoKSkuc2l6ZSgpOworICAgICAgICBpZiAobmFtZWQgPj0gbV90b3RhbFRyYWNrcyArIDEpIHsK
KyAgICAgICAgICAgIG1fYXV0b1JlcGVhdFRvdGFsVHJhY2tzID0gMDsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBtX2F1dG9SZXBlYXRUb3RhbFRyYWNrcyA9IChtX3Rv
dGFsVHJhY2tzICsgMSAtIG5hbWVkKSAvIG1fYXV0b1JlcGVhdFRyYWNrTGlzdExlbmd0aDsKKyAg
ICAgICAgbV9hdXRvUmVwZWF0VG90YWxUcmFja3MgKj0gbV9hdXRvUmVwZWF0VHJhY2tMaXN0TGVu
Z3RoOworICAgIH0KKworICAgIHZvaWQgY29sbGVjdExpbmVOYW1lc0ZvckluZGV4KENTU0dyaWRM
aW5lTmFtZXNWYWx1ZSYsIHVuc2lnbmVkIGluZGV4KSBjb25zdCBvdmVycmlkZTsKKworICAgIGlu
dCBuYW1lZEdyaWRMaW5lQ291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3RvdGFsVHJh
Y2tzICsgMTsgfQorcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX2luc2VydGlvblBvaW50OworICAg
IHVuc2lnbmVkIG1fYXV0b1JlcGVhdFRvdGFsVHJhY2tzOworICAgIHVuc2lnbmVkIG1fYXV0b1Jl
cGVhdFRyYWNrTGlzdExlbmd0aDsKKyAgICB1bnNpZ25lZCBtX3RvdGFsVHJhY2tzOworfTsKKwog
dm9pZCBPcmRlcmVkTmFtZWRMaW5lc0NvbGxlY3Rvcjo6YXBwZW5kTGluZXMoQ1NTR3JpZExpbmVO
YW1lc1ZhbHVlJiBsaW5lTmFtZXNWYWx1ZSwgdW5zaWduZWQgaW5kZXgsIE5hbWVkTGluZXNUeXBl
IHR5cGUpIGNvbnN0CiB7CiAgICAgYXV0byBpdGVyID0gdHlwZSA9PSBOYW1lZExpbmVzID8gbV9v
cmRlcmVkTmFtZWRHcmlkTGluZXMuZmluZChpbmRleCkgOiBtX29yZGVyZWROYW1lZEF1dG9SZXBl
YXRHcmlkTGluZXMuZmluZChpbmRleCk7CkBAIC05NTUsOSArOTg3LDMwIEBAIHZvaWQgT3JkZXJl
ZE5hbWVkTGluZXNDb2xsZWN0b3JJbkdyaWRMYXlvdXQ6OmNvbGxlY3RMaW5lTmFtZXNGb3JJbmRl
eChDU1NHcmlkTGluCiAgICAgYXBwZW5kTGluZXMobGluZU5hbWVzVmFsdWUsIGF1dG9SZXBlYXRJ
bmRleEluRmlyc3RSZXBldGl0aW9uLCBBdXRvUmVwZWF0TmFtZWRMaW5lcyk7CiB9CiAKK3ZvaWQg
T3JkZXJlZE5hbWVkTGluZXNDb2xsZWN0b3JJblN1YmdyaWRMYXlvdXQ6OmNvbGxlY3RMaW5lTmFt
ZXNGb3JJbmRleChDU1NHcmlkTGluZU5hbWVzVmFsdWUmIGxpbmVOYW1lc1ZhbHVlLCB1bnNpZ25l
ZCBpKSBjb25zdAoreworICAgIGlmICghbV9hdXRvUmVwZWF0VHJhY2tMaXN0TGVuZ3RoIHx8IGkg
PCBtX2luc2VydGlvblBvaW50KSB7CisgICAgICAgIGFwcGVuZExpbmVzKGxpbmVOYW1lc1ZhbHVl
LCBpLCBOYW1lZExpbmVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChpID49
IG1faW5zZXJ0aW9uUG9pbnQgKyBtX2F1dG9SZXBlYXRUb3RhbFRyYWNrcykgeworICAgICAgICBh
cHBlbmRMaW5lcyhsaW5lTmFtZXNWYWx1ZSwgaSAtIG1fYXV0b1JlcGVhdFRvdGFsVHJhY2tzLCBO
YW1lZExpbmVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9hdXRvUmVw
ZWF0VG90YWxUcmFja3MpIHsKKyAgICAgICAgYXBwZW5kTGluZXMobGluZU5hbWVzVmFsdWUsIGks
IE5hbWVkTGluZXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdW5zaWduZWQgYXV0
b1JlcGVhdEluZGV4SW5GaXJzdFJlcGV0aXRpb24gPSAoaSAtIG1faW5zZXJ0aW9uUG9pbnQpICUg
bV9hdXRvUmVwZWF0VHJhY2tMaXN0TGVuZ3RoOworICAgIGFwcGVuZExpbmVzKGxpbmVOYW1lc1Zh
bHVlLCBhdXRvUmVwZWF0SW5kZXhJbkZpcnN0UmVwZXRpdGlvbiwgQXV0b1JlcGVhdE5hbWVkTGlu
ZXMpOworfQorCiBzdGF0aWMgdm9pZCBhZGRWYWx1ZXNGb3JOYW1lZEdyaWRMaW5lc0F0SW5kZXgo
T3JkZXJlZE5hbWVkTGluZXNDb2xsZWN0b3ImIGNvbGxlY3RvciwgdW5zaWduZWQgaSwgQ1NTVmFs
dWVMaXN0JiBsaXN0LCBib29sIHJlbmRlckVtcHR5ID0gZmFsc2UpCiB7Ci0gICAgaWYgKGNvbGxl
Y3Rvci5pc0VtcHR5KCkpCisgICAgaWYgKGNvbGxlY3Rvci5pc0VtcHR5KCkgJiYgIXJlbmRlckVt
cHR5KQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGxpbmVOYW1lcyA9IENTU0dyaWRMaW5l
TmFtZXNWYWx1ZTo6Y3JlYXRlKCk7CkBAIC0xMDM1LDkgKzEwODgsMTUgQEAgc3RhdGljIFJlZjxD
U1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBk
aXJlY3Rpb24sIFIKIAogICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIGEgZ3JpZCBjb250YWluZXIs
IHRoZSByZXNvbHZlZCB2YWx1ZSBpcyB0aGUgdXNlZCB2YWx1ZSwKICAgICAvLyBzcGVjaWZ5aW5n
IHRyYWNrIHNpemVzIGluIHBpeGVscyBhbmQgZXhwYW5kaW5nIHRoZSByZXBlYXQoKSBub3RhdGlv
bi4KLSAgICBpZiAoaXNSZW5kZXJHcmlkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRv
IGhhbmRsZSBjb21wdXRlZCBzdWJncmlkIGhlcmUuCisgICAgLy8gSWYgc3ViZ3JpZCB3YXMgc3Bl
Y2lmaWVkLCBidXQgdGhlIGVsZW1lbnQgaXNuJ3QgYSBzdWJncmlkIChkdWUgdG8gbm90IGhhdmlu
ZworICAgIC8vIGFuIGFwcHJvcHJpYXRlIGdyaWQgcGFyZW50PyksIHRoZW4gd2UgZmFsbCBiYWNr
IHRvIHVzaW5nIHRoZSBzcGVjaWZpZWQgdmFsdWUuCisgICAgaWYgKGlzUmVuZGVyR3JpZCAmJiAo
IWlzU3ViZ3JpZCB8fCBkb3duY2FzdDxSZW5kZXJHcmlkPihyZW5kZXJlciktPmlzU3ViZ3JpZChk
aXJlY3Rpb24pKSkgewogICAgICAgICBhdXRvKiBncmlkID0gZG93bmNhc3Q8UmVuZGVyR3JpZD4o
cmVuZGVyZXIpOworICAgICAgICBpZiAoaXNTdWJncmlkKSB7CisgICAgICAgICAgICBPcmRlcmVk
TmFtZWRMaW5lc0NvbGxlY3RvckluU3ViZ3JpZExheW91dCBjb2xsZWN0b3Ioc3R5bGUsIGlzUm93
QXhpcywgZ3JpZC0+bnVtVHJhY2tzKGRpcmVjdGlvbikpOworICAgICAgICAgICAgcG9wdWxhdGVT
dWJncmlkTGluZU5hbWVMaXN0KGxpc3QuZ2V0KCksIGNvbGxlY3Rvcik7CisgICAgICAgICAgICBy
ZXR1cm4gbGlzdDsKKyAgICAgICAgfQogICAgICAgICBPcmRlcmVkTmFtZWRMaW5lc0NvbGxlY3Rv
ckluR3JpZExheW91dCBjb2xsZWN0b3Ioc3R5bGUsIGlzUm93QXhpcywgZ3JpZC0+YXV0b1JlcGVh
dENvdW50Rm9yRGlyZWN0aW9uKGRpcmVjdGlvbiksIGF1dG9SZXBlYXRUcmFja1NpemVzLnNpemUo
KSk7CiAgICAgICAgIC8vIE5hbWVkIGdyaWQgbGluZSBpbmRpY2VzIGFyZSByZWxhdGl2ZSB0byB0
aGUgZXhwbGljaXQgZ3JpZCwgYnV0IHdlIGFyZSBpbmNsdWRpbmcgYWxsIHRyYWNrcy4KICAgICAg
ICAgLy8gU28gd2UgbmVlZCB0byBzdWJ0cmFjdCB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgaW1wbGlj
aXQgdHJhY2tzIGluIG9yZGVyIHRvIGdldCB0aGUgcHJvcGVyIGxpbmUgaW5kZXguCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvR3JpZC5jcHAKaW5kZXggNTYwMmQ3YzJkNGQ1Li4yNmQxZDhhYmYzZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKQEAgLTYxLDE3ICs2MSwyNCBAQCB2b2lkIEdyaWQ6OmVu
c3VyZUdyaWRTaXplKHVuc2lnbmVkIG1heGltdW1Sb3dTaXplLCB1bnNpZ25lZCBtYXhpbXVtQ29s
dW1uU2l6ZSkKICAgICB9CiB9CiAKLXZvaWQgR3JpZDo6aW5zZXJ0KFJlbmRlckJveCYgY2hpbGQs
IGNvbnN0IEdyaWRBcmVhJiBhcmVhKQorR3JpZEFyZWEgR3JpZDo6aW5zZXJ0KFJlbmRlckJveCYg
Y2hpbGQsIGNvbnN0IEdyaWRBcmVhJiBhcmVhKQogewotICAgIEFTU0VSVChhcmVhLnJvd3MuaXNU
cmFuc2xhdGVkRGVmaW5pdGUoKSAmJiBhcmVhLmNvbHVtbnMuaXNUcmFuc2xhdGVkRGVmaW5pdGUo
KSk7Ci0gICAgZW5zdXJlR3JpZFNpemUoYXJlYS5yb3dzLmVuZExpbmUoKSwgYXJlYS5jb2x1bW5z
LmVuZExpbmUoKSk7CisgICAgR3JpZEFyZWEgY2xhbXBlZCA9IGFyZWE7CisgICAgaWYgKG1fbWF4
Um93cykKKyAgICAgICAgY2xhbXBlZC5yb3dzLmNsYW1wKG1fbWF4Um93cyk7CisgICAgaWYgKG1f
bWF4Q29sdW1ucykKKyAgICAgICAgY2xhbXBlZC5jb2x1bW5zLmNsYW1wKG1fbWF4Q29sdW1ucyk7
CiAKLSAgICBmb3IgKGF1dG8gcm93IDogYXJlYS5yb3dzKSB7Ci0gICAgICAgIGZvciAoYXV0byBj
b2x1bW4gOiBhcmVhLmNvbHVtbnMpCisgICAgQVNTRVJUKGNsYW1wZWQucm93cy5pc1RyYW5zbGF0
ZWREZWZpbml0ZSgpICYmIGNsYW1wZWQuY29sdW1ucy5pc1RyYW5zbGF0ZWREZWZpbml0ZSgpKTsK
KyAgICBlbnN1cmVHcmlkU2l6ZShjbGFtcGVkLnJvd3MuZW5kTGluZSgpLCBjbGFtcGVkLmNvbHVt
bnMuZW5kTGluZSgpKTsKKworICAgIGZvciAoYXV0byByb3cgOiBjbGFtcGVkLnJvd3MpIHsKKyAg
ICAgICAgZm9yIChhdXRvIGNvbHVtbiA6IGNsYW1wZWQuY29sdW1ucykKICAgICAgICAgICAgIG1f
Z3JpZFtyb3ddW2NvbHVtbl0uYXBwZW5kKGNoaWxkKTsKICAgICB9CiAKLSAgICBzZXRHcmlkSXRl
bUFyZWEoY2hpbGQsIGFyZWEpOworICAgIHNldEdyaWRJdGVtQXJlYShjaGlsZCwgY2xhbXBlZCk7
CisgICAgcmV0dXJuIGNsYW1wZWQ7CiB9CiAKIHZvaWQgR3JpZDo6c2V0RXhwbGljaXRHcmlkU3Rh
cnQodW5zaWduZWQgcm93U3RhcnQsIHVuc2lnbmVkIGNvbHVtblN0YXJ0KQpAQCAtODUsNiArOTIs
MjYgQEAgdW5zaWduZWQgR3JpZDo6ZXhwbGljaXRHcmlkU3RhcnQoR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKICAgICByZXR1cm4gZGlyZWN0aW9uID09IEZvclJvd3Mg
PyBtX2V4cGxpY2l0Um93U3RhcnQgOiBtX2V4cGxpY2l0Q29sdW1uU3RhcnQ7CiB9CiAKK3ZvaWQg
R3JpZDo6c2V0Q2xhbXBpbmdGb3JTdWJncmlkKHVuc2lnbmVkIG1heFJvd3MsIHVuc2lnbmVkIG1h
eENvbHVtbnMpCit7CisgICAgbV9tYXhSb3dzID0gbWF4Um93czsKKyAgICBtX21heENvbHVtbnMg
PSBtYXhDb2x1bW5zOworfQorCit2b2lkIEdyaWQ6OmNsYW1wQW5kVHJhbnNsYXRlVG9JbXBsaWNp
dEdyaWQoR3JpZEFyZWEmIGFyZWEpCit7CisgICAgaWYgKCFhcmVhLnJvd3MuaXNJbmRlZmluaXRl
KCkpIHsKKyAgICAgICAgaWYgKG1fbWF4Um93cykKKyAgICAgICAgICAgIGFyZWEucm93cy5jbGFt
cChtX21heFJvd3MpOworICAgICAgICBhcmVhLnJvd3MudHJhbnNsYXRlKGV4cGxpY2l0R3JpZFN0
YXJ0KEZvclJvd3MpKTsKKyAgICB9CisgICAgaWYgKCFhcmVhLmNvbHVtbnMuaXNJbmRlZmluaXRl
KCkpIHsKKyAgICAgICAgaWYgKG1fbWF4Q29sdW1ucykKKyAgICAgICAgICAgIGFyZWEuY29sdW1u
cy5jbGFtcChtX21heENvbHVtbnMpOworICAgICAgICBhcmVhLmNvbHVtbnMudHJhbnNsYXRlKGV4
cGxpY2l0R3JpZFN0YXJ0KEZvckNvbHVtbnMpKTsKKyAgICB9Cit9CisKIEdyaWRBcmVhIEdyaWQ6
OmdyaWRJdGVtQXJlYShjb25zdCBSZW5kZXJCb3gmIGl0ZW0pIGNvbnN0CiB7CiAgICAgQVNTRVJU
KG1fZ3JpZEl0ZW1BcmVhLmNvbnRhaW5zKCZpdGVtKSk7CkBAIC0xNjEsNiArMTg4LDggQEAgdm9p
ZCBHcmlkOjpzZXROZWVkc0l0ZW1zUGxhY2VtZW50KGJvb2wgbmVlZHNJdGVtc1BsYWNlbWVudCkK
ICAgICBtX2F1dG9SZXBlYXRFbXB0eVJvd3MgPSBudWxscHRyOwogICAgIG1fYXV0b1JlcGVhdENv
bHVtbnMgPSAwOwogICAgIG1fYXV0b1JlcGVhdFJvd3MgPSAwOworICAgIG1fbWF4Q29sdW1ucyA9
IDA7CisgICAgbV9tYXhSb3dzID0gMDsKIH0KIAogR3JpZEl0ZXJhdG9yOjpHcmlkSXRlcmF0b3Io
Y29uc3QgR3JpZCYgZ3JpZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgdW5z
aWduZWQgZml4ZWRUcmFja0luZGV4LCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tJbmRleCkKQEAgLTE2
OCw2ICsxOTcsMjIgQEAgR3JpZEl0ZXJhdG9yOjpHcmlkSXRlcmF0b3IoY29uc3QgR3JpZCYgZ3Jp
ZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwKICAgICAsIG1fZGlyZWN0aW9u
KGRpcmVjdGlvbikKICAgICAsIG1fcm93SW5kZXgoKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/
IHZhcnlpbmdUcmFja0luZGV4IDogZml4ZWRUcmFja0luZGV4KQogICAgICwgbV9jb2x1bW5JbmRl
eCgoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gZml4ZWRUcmFja0luZGV4IDogdmFyeWluZ1Ry
YWNrSW5kZXgpCisgICAgLCBtX3ZhcnlpbmdNYXgoKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/
ICh1bnNpZ25lZClncmlkLm1fZ3JpZC5zaXplKCkgOiAodW5zaWduZWQpZ3JpZC5tX2dyaWRbMF0u
c2l6ZSgpKQorICAgICwgbV9jaGlsZEluZGV4KDApCisKK3sKKyAgICBBU1NFUlQoIW1fZ3JpZC5p
c0VtcHR5KCkpOworICAgIEFTU0VSVCghbV9ncmlkWzBdLmlzRW1wdHkoKSk7CisgICAgQVNTRVJU
KG1fcm93SW5kZXggPCBtX2dyaWQuc2l6ZSgpKTsKKyAgICBBU1NFUlQobV9jb2x1bW5JbmRleCA8
IG1fZ3JpZFswXS5zaXplKCkpOworfQorCitHcmlkSXRlcmF0b3I6OkdyaWRJdGVyYXRvcihjb25z
dCBHcmlkJiBncmlkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25l
ZCByb3dJbmRleCwgdW5zaWduZWQgY29sdW1uSW5kZXgsIHVuc2lnbmVkIHZhcnlpbmdNYXgpCisg
ICAgOiBtX2dyaWQoZ3JpZC5tX2dyaWQpCisgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCisg
ICAgLCBtX3Jvd0luZGV4KHJvd0luZGV4KQorICAgICwgbV9jb2x1bW5JbmRleChjb2x1bW5JbmRl
eCkKKyAgICAsIG1fdmFyeWluZ01heCh2YXJ5aW5nTWF4KQogICAgICwgbV9jaGlsZEluZGV4KDAp
CiB7CiAgICAgQVNTRVJUKCFtX2dyaWQuaXNFbXB0eSgpKTsKQEAgLTE4MiwxMiArMjI3LDExIEBA
IFJlbmRlckJveCogR3JpZEl0ZXJhdG9yOjpuZXh0R3JpZEl0ZW0oKQogICAgIEFTU0VSVCghbV9n
cmlkWzBdLmlzRW1wdHkoKSk7CiAKICAgICB1bnNpZ25lZCYgdmFyeWluZ1RyYWNrSW5kZXggPSAo
bV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX3Jvd0luZGV4IDogbV9jb2x1bW5JbmRleDsK
LSAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFja0luZGV4ID0gKG1fZGlyZWN0aW9u
ID09IEZvckNvbHVtbnMpID8gbV9ncmlkLnNpemUoKSA6IG1fZ3JpZFswXS5zaXplKCk7Ci0gICAg
Zm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsgKyt2YXJ5
aW5nVHJhY2tJbmRleCkgeworCisgICAgZm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgbV92YXJ5
aW5nTWF4OyArK3ZhcnlpbmdUcmFja0luZGV4KSB7CiAgICAgICAgIGNvbnN0IGF1dG8mIGNoaWxk
cmVuID0gbV9ncmlkW21fcm93SW5kZXhdW21fY29sdW1uSW5kZXhdOwogICAgICAgICBpZiAobV9j
aGlsZEluZGV4IDwgY2hpbGRyZW4uc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVu
W21fY2hpbGRJbmRleCsrXS5nZXQoKTsKLQogICAgICAgICBtX2NoaWxkSW5kZXggPSAwOwogICAg
IH0KICAgICByZXR1cm4gMDsKQEAgLTI0MCw0ICsyODQsNTUgQEAgc3RkOjp1bmlxdWVfcHRyPEdy
aWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJh
Y2tTcGEKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorR3JpZEl0ZXJhdG9yIEdyaWRJdGVyYXRv
cjo6Y3JlYXRlRm9yU3ViZ3JpZChjb25zdCBSZW5kZXJHcmlkJiBzdWJncmlkLCBjb25zdCBHcmlk
SXRlcmF0b3ImIG91dGVyKQoreworICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBpbm5lckRp
cmVjdGlvbiA9IG91dGVyLmRpcmVjdGlvbigpOworICAgIEFTU0VSVChzdWJncmlkLmlzU3ViZ3Jp
ZEluUGFyZW50RGlyZWN0aW9uKGlubmVyRGlyZWN0aW9uKSk7CisgICAgR3JpZFNwYW4gc3BhblJv
d3MgPSBkb3duY2FzdDxSZW5kZXJHcmlkPihzdWJncmlkLnBhcmVudCgpKS0+Z3JpZFNwYW5Gb3JD
aGlsZChzdWJncmlkLCBGb3JSb3dzKTsKKyAgICBHcmlkU3BhbiBzcGFuQ29sdW1ucyA9IGRvd25j
YXN0PFJlbmRlckdyaWQ+KHN1YmdyaWQucGFyZW50KCkpLT5ncmlkU3BhbkZvckNoaWxkKHN1Ymdy
aWQsIEZvckNvbHVtbnMpOworCisgICAgLy8gVHJhbnNsYXRlIHRoZSBjdXJyZW50IHJvdy9jb2x1
bW4gaW5kaWNlcyBpbnRvIHRoZSBjb29yZGluYXRlCisgICAgLy8gc3BhY2Ugb2YgdGhlIHN1Ymdy
aWQuCisgICAgdW5zaWduZWQgcm93SW5kZXggPSBvdXRlci5tX3Jvd0luZGV4IC0gc3BhblJvd3Mu
c3RhcnRMaW5lKCk7CisgICAgdW5zaWduZWQgY29sSW5kZXggPSBvdXRlci5tX2NvbHVtbkluZGV4
LSBzcGFuQ29sdW1ucy5zdGFydExpbmUoKTsKKworICAgIC8vIElmIHRoZSBjaGlsZCBncmlkIGlz
IHRyYW5zcG9zZWQsIHRoZW4gc3dhcCByb3cvY29sdW1uIGRlZmluaXRpb25zLgorICAgIGlmIChz
dWJncmlkLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgIT0gc3ViZ3JpZC5wYXJlbnQoKS0+aXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSkgeworICAgICAgICB1bnNpZ25lZCB0ZW1wID0gcm93SW5k
ZXg7CisgICAgICAgIHJvd0luZGV4ID0gY29sSW5kZXg7CisgICAgICAgIGNvbEluZGV4ID0gdGVt
cDsKKyAgICAgICAgaW5uZXJEaXJlY3Rpb24gPSAoaW5uZXJEaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cykgPyBGb3JSb3dzIDogRm9yQ29sdW1uczsKKyAgICB9CisgICAgQVNTRVJUKHN1YmdyaWQuaXNT
dWJncmlkKGlubmVyRGlyZWN0aW9uKSk7CisKKyAgICB1bnNpZ25lZCByb3dNYXggPSBzdWJncmlk
LmN1cnJlbnRHcmlkKCkubnVtVHJhY2tzKEZvclJvd3MpOworICAgIHVuc2lnbmVkIGNvbE1heCA9
IHN1YmdyaWQuY3VycmVudEdyaWQoKS5udW1UcmFja3MoRm9yQ29sdW1ucyk7CisKKyAgICBpZiAo
c3ViZ3JpZC5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSAhPSBzdWJncmlkLnBh
cmVudCgpLT5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkKKyAgICAgICAgcm93
SW5kZXggPSByb3dNYXggLSByb3dJbmRleCAtIDE7CisgICAgaWYgKHN1YmdyaWQuc3R5bGUoKS5p
c0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpICE9IHN1YmdyaWQucGFyZW50KCktPnN0eWxlKCku
aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkKKyAgICAgICAgY29sSW5kZXggPSBjb2xNYXgg
LSBjb2xJbmRleCAtIDE7CisKKyAgICAvLyBJZiB3ZSdyZSBhbHNvIGEgc3ViZ3JpZCBpbiB0aGUg
b3RoZXIgYXhpcywgdGhlbiB3ZSBjYW4ganVzdCBpdGVyYXRlIHRoZSBzaW5nbGUKKyAgICAvLyB0
cmFjayBpbiB0aGUgc3ViZ3JpZCB3aGljaCBjb3JyZXNwb25kcyB0byBhIHRyYWNrIGluIHRoZSBv
dXRlciBncmlkLiBPdGhlcndpc2Ugd2UgbmVlZAorICAgIC8vIHRvIGl0ZXJhdGUgYWxsIHRyYWNr
cyBpbiB0aGF0IGF4aXMgd2l0aGluIHRoZSBzdWJncmlkLgorICAgIHVuc2lnbmVkIHZhcnlpbmdN
YXg7CisgICAgaWYgKHN1YmdyaWQuaXNTdWJncmlkKChpbm5lckRpcmVjdGlvbiA9PSBGb3JDb2x1
bW5zKSA/IEZvclJvd3MgOiBGb3JDb2x1bW5zKSkgeworICAgICAgICBpZiAoaW5uZXJEaXJlY3Rp
b24gPT0gRm9yQ29sdW1ucykKKyAgICAgICAgICAgIHZhcnlpbmdNYXggPSBzdGQ6Om1pbihyb3dN
YXgsIHJvd0luZGV4ICsgMSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhcnlpbmdNYXgg
PSBzdGQ6Om1pbihjb2xNYXgsIGNvbEluZGV4ICsgMSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKGlubmVyRGlyZWN0aW9uID09IEZvckNvbHVtbnMpIHsKKyAgICAgICAgICAgIHJvd0luZGV4
ID0gMDsKKyAgICAgICAgICAgIHZhcnlpbmdNYXggPSByb3dNYXg7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBjb2xJbmRleCA9IDA7CisgICAgICAgICAgICB2YXJ5aW5nTWF4ID0gY29s
TWF4OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEdyaWRJdGVyYXRvcihzdWJncmlk
LmN1cnJlbnRHcmlkKCksIGlubmVyRGlyZWN0aW9uLCByb3dJbmRleCwgY29sSW5kZXgsIHZhcnlp
bmdNYXgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQu
aAppbmRleCA3MmNhZGY2OGVmNGQuLjZkMDU2ZGM3MWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0dyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3Jp
ZC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBudW1UcmFja3MoR3Jp
ZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIAogICAgIHZvaWQgZW5zdXJlR3JpZFNpemUo
dW5zaWduZWQgbWF4aW11bVJvd1NpemUsIHVuc2lnbmVkIG1heGltdW1Db2x1bW5TaXplKTsKLSAg
ICB2b2lkIGluc2VydChSZW5kZXJCb3gmLCBjb25zdCBHcmlkQXJlYSYpOworICAgIEdyaWRBcmVh
IGluc2VydChSZW5kZXJCb3gmLCBjb25zdCBHcmlkQXJlYSYpOwogCiAgICAgLy8gTm90ZSB0aGF0
IGVhY2ggaW4gZmxvdyBjaGlsZCBvZiBhIGdyaWQgY29udGFpbmVyIGJlY29tZXMgYSBncmlkIGl0
ZW0uIFRoaXMgbWVhbnMgdGhhdAogICAgIC8vIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGZhbHNl
IGZvciBhIGdyaWQgY29udGFpbmVyIHdpdGggb25seSBvdXQgb2YgZmxvdyBjaGlsZHJlbi4KQEAg
LTY3LDYgKzY3LDEwIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzKEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAgICAgdm9pZCBzZXRBdXRvUmVwZWF0VHJh
Y2tzKHVuc2lnbmVkIGF1dG9SZXBlYXRSb3dzLCB1bnNpZ25lZCBhdXRvUmVwZWF0Q29sdW1ucyk7
CiAKKyAgICB2b2lkIHNldENsYW1waW5nRm9yU3ViZ3JpZCh1bnNpZ25lZCBtYXhSb3dzLCB1bnNp
Z25lZCBtYXhDb2x1bW5zKTsKKworICAgIHZvaWQgY2xhbXBBbmRUcmFuc2xhdGVUb0ltcGxpY2l0
R3JpZChHcmlkQXJlYSYpOworCiAgICAgdm9pZCBzZXRBdXRvUmVwZWF0RW1wdHlDb2x1bW5zKHN0
ZDo6dW5pcXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNldD4pOwogICAgIHZvaWQgc2V0QXV0b1Jl
cGVhdEVtcHR5Um93cyhzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KTsKIApA
QCAtOTIsNiArOTYsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fYXV0b1JlcGVhdENvbHVt
bnMgeyAwIH07CiAgICAgdW5zaWduZWQgbV9hdXRvUmVwZWF0Um93cyB7IDAgfTsKIAorICAgIHVu
c2lnbmVkIG1fbWF4Q29sdW1ucyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX21heFJvd3MgeyAwIH07
CisKICAgICBib29sIG1fbmVlZHNJdGVtc1BsYWNlbWVudCB7IHRydWUgfTsKIAogICAgIEdyaWRB
c01hdHJpeCBtX2dyaWQ7CkBAIC0xMDksMTUgKzExNiwyNSBAQCBwdWJsaWM6CiAgICAgLy8gR3Jp
ZEl0ZXJhdG9yKG1fZ3JpZCwgRm9yQ29sdW1ucywgMSkgd2lsbCB3YWxrIG92ZXIgdGhlIHJvd3Mg
b2YgdGhlIDJuZCBjb2x1bW4uCiAgICAgR3JpZEl0ZXJhdG9yKGNvbnN0IEdyaWQmLCBHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24sIHVuc2lnbmVkIGZpeGVkVHJhY2tJbmRleCwgdW5zaWduZWQgdmFy
eWluZ1RyYWNrSW5kZXggPSAwKTsKIAorICAgIHN0YXRpYyBHcmlkSXRlcmF0b3IgY3JlYXRlRm9y
U3ViZ3JpZChjb25zdCBSZW5kZXJHcmlkJiBzdWJncmlkLCBjb25zdCBHcmlkSXRlcmF0b3ImIG91
dGVyKTsKKwogICAgIFJlbmRlckJveCogbmV4dEdyaWRJdGVtKCk7CiAgICAgYm9vbCBpc0VtcHR5
QXJlYUVub3VnaCh1bnNpZ25lZCByb3dTcGFuLCB1bnNpZ25lZCBjb2x1bW5TcGFuKSBjb25zdDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IG5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVk
IGZpeGVkVHJhY2tTcGFuLCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tTcGFuKTsKIAorICAgIEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fZGlyZWN0aW9uOworICAgIH0KKwogcHJpdmF0ZToKKyAgICBHcmlkSXRlcmF0b3IoY29u
c3QgR3JpZCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgdW5zaWduZWQgcm93SW5kZXgsIHVu
c2lnbmVkIGNvbHVtbkluZGV4LCB1bnNpZ25lZCB2YXJ5aW5nTWF4KTsKKwogICAgIGNvbnN0IEdy
aWRBc01hdHJpeCYgbV9ncmlkOwogICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBtX2RpcmVj
dGlvbjsKICAgICB1bnNpZ25lZCBtX3Jvd0luZGV4OwogICAgIHVuc2lnbmVkIG1fY29sdW1uSW5k
ZXg7CisgICAgdW5zaWduZWQgbV92YXJ5aW5nTWF4OwogICAgIHVuc2lnbmVkIG1fY2hpbGRJbmRl
eDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0
RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rp
b25zLmNwcAppbmRleCBkNGY3ODhkYzcwZDIuLjg5ZGNjNmRkMzhjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtNjYsMTggKzY2
LDg2IEBAIExheW91dFVuaXQgY29tcHV0ZU1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY29uc3Qg
UmVuZGVyR3JpZCYgZ3JpZCwgR3JpZFRyYWNrU2l6CiAgICAgcmV0dXJuIG1hcmdpblN0YXJ0SXNB
dXRvKGNoaWxkLCBmbG93QXdhcmVEaXJlY3Rpb24pID8gbWFyZ2luRW5kIDogbWFyZ2luRW5kSXNB
dXRvKGNoaWxkLCBmbG93QXdhcmVEaXJlY3Rpb24pID8gbWFyZ2luU3RhcnQgOiBtYXJnaW5TdGFy
dCArIG1hcmdpbkVuZDsKIH0KIAorc3RhdGljIGlubGluZSBHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uRnJvbVNpZGUoR3JpZFBvc2l0aW9uU2lkZSBzaWRlKQoreworICAgIHJldHVy
biBzaWRlID09IENvbHVtblN0YXJ0U2lkZSB8fCBzaWRlID09IENvbHVtbkVuZFNpZGUgPyBGb3JD
b2x1bW5zIDogRm9yUm93czsKK30KKworc3RhdGljIGJvb2wgaGFzUmVsYXRpdmVPckludHJpbnNp
Y1NpemVGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uKQoreworICAgIGlmIChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykKKyAg
ICAgICAgcmV0dXJuIGNoaWxkLmhhc1JlbGF0aXZlTG9naWNhbFdpZHRoKCkgfHwgY2hpbGQuc3R5
bGUoKS5sb2dpY2FsV2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpOworICAgIHJldHVybiBjaGls
ZC5oYXNSZWxhdGl2ZUxvZ2ljYWxIZWlnaHQoKSB8fCBjaGlsZC5zdHlsZSgpLmxvZ2ljYWxIZWln
aHQoKS5pc0ludHJpbnNpY09yQXV0bygpOworfQorCitzdGF0aWMgTGF5b3V0VW5pdCBleHRyYU1h
cmdpbkZvclN1YmdyaWRDaGlsZChjb25zdCBSZW5kZXJHcmlkJiBwYXJlbnQsIHVuc2lnbmVkIHN0
YXJ0TGluZSwgdW5zaWduZWQgZW5kTGluZSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVj
dGlvbikKK3sKKyAgICB1bnNpZ25lZCBudW1UcmFja3MgPSBwYXJlbnQubnVtVHJhY2tzKGRpcmVj
dGlvbik7CisgICAgaWYgKCFudW1UcmFja3MgfHwgIXBhcmVudC5pc1N1YmdyaWQoZGlyZWN0aW9u
KSkKKyAgICAgICAgcmV0dXJuIDBfbHU7CisKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IGF2YWlsYWJsZVNwYWNlOworICAgIGlmICghaGFzUmVsYXRpdmVPckludHJpbnNpY1NpemVGb3JD
aGlsZChwYXJlbnQsIGRpcmVjdGlvbikpCisgICAgICAgIGF2YWlsYWJsZVNwYWNlID0gcGFyZW50
LmF2YWlsYWJsZVNwYWNlRm9yR3V0dGVycyhkaXJlY3Rpb24pOworCisgICAgUmVuZGVyR3JpZCYg
Z3JhbmRQYXJlbnQgPSBkb3duY2FzdDxSZW5kZXJHcmlkPigqcGFyZW50LnBhcmVudCgpKTsKKyAg
ICBMYXlvdXRVbml0IG1icDsKKyAgICBpZiAoIXN0YXJ0TGluZSkKKyAgICAgICAgbWJwICs9IChk
aXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBwYXJlbnQuYm9yZGVyU3RhcnQoKSArIHBhcmVudC5t
YXJnaW5TdGFydCgpICsgcGFyZW50LnBhZGRpbmdTdGFydCgpIDogcGFyZW50LmJvcmRlckJlZm9y
ZSgpICsgcGFyZW50Lm1hcmdpbkJlZm9yZSgpICsgcGFyZW50LnBhZGRpbmdCZWZvcmUoKTsKKyAg
ICBlbHNlCisgICAgICAgIG1icCArPSAocGFyZW50LmdyaWRHYXAoZGlyZWN0aW9uLCBhdmFpbGFi
bGVTcGFjZSkgLSBncmFuZFBhcmVudC5ncmlkR2FwKGRpcmVjdGlvbikpIC8gMjsKKworICAgIGlm
IChlbmRMaW5lID09IG51bVRyYWNrcykKKyAgICAgICAgbWJwICs9IChkaXJlY3Rpb24gPT0gRm9y
Q29sdW1ucykgPyBwYXJlbnQuYm9yZGVyRW5kKCkgKyBwYXJlbnQubWFyZ2luRW5kKCkgKyBwYXJl
bnQucGFkZGluZ0VuZCgpIDogcGFyZW50LmJvcmRlckFmdGVyKCkgKyBwYXJlbnQubWFyZ2luQWZ0
ZXIoKSArIHBhcmVudC5wYWRkaW5nQWZ0ZXIoKTsKKyAgICBlbHNlCisgICAgICAgIG1icCArPSAo
cGFyZW50LmdyaWRHYXAoZGlyZWN0aW9uLCBhdmFpbGFibGVTcGFjZSkgLSBncmFuZFBhcmVudC5n
cmlkR2FwKGRpcmVjdGlvbikpIC8gMjsKKworICAgIHJldHVybiBtYnA7Cit9CisKK3N0YXRpYyBM
YXlvdXRVbml0IGdhcERpZmZlcmVuY2VGb3JTdWJncmlkQ2hpbGQoR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKK3sKKyAgICBjb25zdCBS
ZW5kZXJHcmlkKiBncmlkID0gZG93bmNhc3Q8UmVuZGVyR3JpZD4oY2hpbGQucGFyZW50KCkpOwor
ICAgIExheW91dFVuaXQgbWJwOworCisgICAgd2hpbGUgKGdyaWQtPmlzU3ViZ3JpZChkaXJlY3Rp
b24pKSB7CisgICAgICAgIEdyaWRTcGFuIHNwYW4gPSBncmlkLT5ncmlkU3BhbkZvckNoaWxkKGNo
aWxkLCBkaXJlY3Rpb24pOworCisgICAgICAgIG1icCArPSBleHRyYU1hcmdpbkZvclN1YmdyaWRD
aGlsZCgqZ3JpZCwgc3Bhbi5zdGFydExpbmUoKSwgc3Bhbi5lbmRMaW5lKCksIGRpcmVjdGlvbik7
CisKKyAgICAgICAgY29uc3QgUmVuZGVyRWxlbWVudCogcGFyZW50ID0gZ3JpZC0+cGFyZW50KCk7
CisgICAgICAgIGlmICghcGFyZW50IHx8ICFpczxSZW5kZXJHcmlkPihwYXJlbnQpKQorICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY29uc3QgUmVuZGVyR3JpZCogcGFyZW50R3JpZCA9IGRv
d25jYXN0PFJlbmRlckdyaWQ+KHBhcmVudCk7CisgICAgICAgIGRpcmVjdGlvbiA9IGZsb3dBd2Fy
ZURpcmVjdGlvbkZvckNoaWxkKCpncmlkLCAqcGFyZW50R3JpZCwgZGlyZWN0aW9uKTsKKworICAg
ICAgICBncmlkID0gcGFyZW50R3JpZDsKKyAgICB9CisKKyAgICByZXR1cm4gbWJwOworfQorCiBM
YXlvdXRVbml0IG1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyR3JpZCYgZ3Jp
ZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgUmVuZGVyQm94JiBj
aGlsZCkKIHsKKyAgICBMYXlvdXRVbml0IG1hcmdpbjsKICAgICBpZiAoY2hpbGQubmVlZHNMYXlv
dXQoKSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVNYXJnaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKGdy
aWQsIGRpcmVjdGlvbiwgY2hpbGQpOwotICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBmbG93
QXdhcmVEaXJlY3Rpb24gPSBmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZChncmlkLCBjaGlsZCwg
ZGlyZWN0aW9uKTsKLSAgICBib29sIGlzUm93QXhpcyA9IGZsb3dBd2FyZURpcmVjdGlvbiA9PSBG
b3JDb2x1bW5zOwotICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnQgPSBtYXJnaW5TdGFydElzQXV0
byhjaGlsZCwgZmxvd0F3YXJlRGlyZWN0aW9uKSA/IDBfbHUgOiBpc1Jvd0F4aXMgPyBjaGlsZC5t
YXJnaW5TdGFydCgpIDogY2hpbGQubWFyZ2luQmVmb3JlKCk7Ci0gICAgTGF5b3V0VW5pdCBtYXJn
aW5FbmQgPSBtYXJnaW5FbmRJc0F1dG8oY2hpbGQsIGZsb3dBd2FyZURpcmVjdGlvbikgPyAwX2x1
IDogaXNSb3dBeGlzID8gY2hpbGQubWFyZ2luRW5kKCkgOiBjaGlsZC5tYXJnaW5BZnRlcigpOwot
ICAgIHJldHVybiBtYXJnaW5TdGFydCArIG1hcmdpbkVuZDsKKyAgICAgICAgbWFyZ2luID0gY29t
cHV0ZU1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQoZ3JpZCwgZGlyZWN0aW9uLCBjaGlsZCk7Cisg
ICAgZWxzZSB7CisgICAgICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBmbG93QXdhcmVEaXJl
Y3Rpb24gPSBmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZChncmlkLCBjaGlsZCwgZGlyZWN0aW9u
KTsKKyAgICAgICAgYm9vbCBpc1Jvd0F4aXMgPSBmbG93QXdhcmVEaXJlY3Rpb24gPT0gRm9yQ29s
dW1uczsKKyAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0SXNBdXRv
KGNoaWxkLCBmbG93QXdhcmVEaXJlY3Rpb24pID8gMF9sdSA6IGlzUm93QXhpcyA/IGNoaWxkLm1h
cmdpblN0YXJ0KCkgOiBjaGlsZC5tYXJnaW5CZWZvcmUoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBt
YXJnaW5FbmQgPSBtYXJnaW5FbmRJc0F1dG8oY2hpbGQsIGZsb3dBd2FyZURpcmVjdGlvbikgPyAw
X2x1IDogaXNSb3dBeGlzID8gY2hpbGQubWFyZ2luRW5kKCkgOiBjaGlsZC5tYXJnaW5BZnRlcigp
OworICAgICAgICBtYXJnaW4gPSBtYXJnaW5TdGFydCArIG1hcmdpbkVuZDsKKyAgICB9CisKKyAg
ICBpZiAoJmdyaWQgIT0gY2hpbGQucGFyZW50KCkpCisgICAgICAgIG1hcmdpbiArPSBnYXBEaWZm
ZXJlbmNlRm9yU3ViZ3JpZENoaWxkKGRpcmVjdGlvbiwgY2hpbGQpOworCisgICAgcmV0dXJuIG1h
cmdpbjsKIH0KIAotYm9vbCBpc09ydGhvZ29uYWxDaGlsZChjb25zdCBSZW5kZXJHcmlkJiBncmlk
LCBjb25zdCBSZW5kZXJCb3gmIGNoaWxkKQorYm9vbCBpc09ydGhvZ29uYWxDaGlsZChjb25zdCBS
ZW5kZXJHcmlkJiBncmlkLCBjb25zdCBSZW5kZXJFbGVtZW50JiBjaGlsZCkKIHsKICAgICByZXR1
cm4gY2hpbGQuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAhPSBncmlkLmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCk7CiB9CkBAIC04Nyw3ICsxNTUsNyBAQCBib29sIGlzQXNwZWN0UmF0aW9CbG9j
a1NpemVEZXBlbmRlbnRDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkKQogICAgIHJldHVybiAo
Y2hpbGQuc3R5bGUoKS5oYXNBc3BlY3RSYXRpbygpIHx8IGNoaWxkLmhhc0ludHJpbnNpY0FzcGVj
dFJhdGlvKCkpICYmIChjaGlsZC5oYXNSZWxhdGl2ZUxvZ2ljYWxIZWlnaHQoKSB8fCBjaGlsZC5o
YXNTdHJldGNoZWRMb2dpY2FsSGVpZ2h0KCkpOwogfQogCi1HcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoY29uc3QgUmVuZGVyR3JpZCYgZ3JpZCwgY29u
c3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikK
K0dyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZChjb25z
dCBSZW5kZXJHcmlkJiBncmlkLCBjb25zdCBSZW5kZXJFbGVtZW50JiBjaGlsZCwgR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICByZXR1cm4gIWlzT3J0aG9nb25hbENo
aWxkKGdyaWQsIGNoaWxkKSA/IGRpcmVjdGlvbiA6IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/
IEZvclJvd3MgOiBGb3JDb2x1bW5zKTsKIH0KQEAgLTEwMiw2ICsxNzAsMTkgQEAgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JD
aGlsZChjb25zdCBSZW4KICAgICByZXR1cm4gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjaGls
ZC5vdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpIDogY2hpbGQu
b3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiB9CiAKK2Jv
b2wgaXNGbGlwcGVkRGlyZWN0aW9uKGNvbnN0IFJlbmRlckdyaWQmIGdyaWQsIEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgaWYgKGRpcmVjdGlvbiA9PSBGb3JDb2x1
bW5zKQorICAgICAgICByZXR1cm4gIWdyaWQuc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCk7CisgICAgcmV0dXJuIGdyaWQuc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgp
OworfQorCitib29sIGlzU3ViZ3JpZFJldmVyc2VkRGlyZWN0aW9uKGNvbnN0IFJlbmRlckdyaWQm
IGdyaWQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBvdXRlckRpcmVjdGlvbiwgY29uc3QgUmVu
ZGVyR3JpZCYgc3ViZ3JpZCkKK3sKKyAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gY2hpbGRE
aXJlY3Rpb24gPSBmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZChncmlkLCBzdWJncmlkLCBvdXRl
ckRpcmVjdGlvbik7CisgICAgcmV0dXJuIGlzRmxpcHBlZERpcmVjdGlvbihncmlkLCBvdXRlckRp
cmVjdGlvbikgIT0gaXNGbGlwcGVkRGlyZWN0aW9uKHN1YmdyaWQsIGNoaWxkRGlyZWN0aW9uKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgR3JpZExheW91dEZ1bmN0aW9ucwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91
dEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlv
bnMuaAppbmRleCA1ZGIzZjVmOTgyOTUuLjI2ZWJkY2E5MDAxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5oCkBAIC0zMCw2ICszMCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRl
ckJveDsKIGNsYXNzIFJlbmRlckdyaWQ7CiAKQEAgLTM5LDEyICs0MCwxNSBAQCBuYW1lc3BhY2Ug
R3JpZExheW91dEZ1bmN0aW9ucyB7CiAKIExheW91dFVuaXQgY29tcHV0ZU1hcmdpbkxvZ2ljYWxT
aXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyR3JpZCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwg
Y29uc3QgUmVuZGVyQm94Jik7CiBMYXlvdXRVbml0IG1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQo
Y29uc3QgUmVuZGVyR3JpZCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgUmVuZGVy
Qm94Jik7Ci1ib29sIGlzT3J0aG9nb25hbENoaWxkKGNvbnN0IFJlbmRlckdyaWQmLCBjb25zdCBS
ZW5kZXJCb3gmKTsKK2Jvb2wgaXNPcnRob2dvbmFsQ2hpbGQoY29uc3QgUmVuZGVyR3JpZCYsIGNv
bnN0IFJlbmRlckVsZW1lbnQmKTsKIGJvb2wgaXNBc3BlY3RSYXRpb0Jsb2NrU2l6ZURlcGVuZGVu
dENoaWxkKGNvbnN0IFJlbmRlckJveCYpOwotR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGZsb3dB
d2FyZURpcmVjdGlvbkZvckNoaWxkKGNvbnN0IFJlbmRlckdyaWQmLCBjb25zdCBSZW5kZXJCb3gm
LCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pOworR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGZs
b3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKGNvbnN0IFJlbmRlckdyaWQmLCBjb25zdCBSZW5kZXJF
bGVtZW50JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKTsKIGJvb2wgaGFzT3ZlcnJpZGluZ0Nv
bnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uKTsKIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGlu
Z0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3Jp
ZFRyYWNrU2l6aW5nRGlyZWN0aW9uKTsKIAorYm9vbCBpc0ZsaXBwZWREaXJlY3Rpb24oY29uc3Qg
UmVuZGVyR3JpZCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7Citib29sIGlzU3ViZ3JpZFJl
dmVyc2VkRGlyZWN0aW9uKGNvbnN0IFJlbmRlckdyaWQmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gb3V0ZXJEaXJlY3Rpb24sIGNvbnN0IFJlbmRlckdyaWQmIHN1YmdyaWQpOworCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKaW5kZXggMjQ0Nzc4NWY3ZTQxLi42MmMxYTY1
Y2YwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tT
aXppbmdBbGdvcml0aG0uY3BwCkBAIC0xMjUsOCArMTI1LDEzIEBAIHN0YXRpYyBib29sIHNob3Vs
ZENsZWFyT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY29uc3Qg
UmVuZGVyCiAgICAgcmV0dXJuIGhhc1JlbGF0aXZlT3JJbnRyaW5zaWNTaXplRm9yQ2hpbGQoY2hp
bGQsIGRpcmVjdGlvbikgfHwgaGFzUmVsYXRpdmVNYXJnaW5PclBhZGRpbmdGb3JDaGlsZChjaGls
ZCwgZGlyZWN0aW9uKTsKIH0KIAotc3RhdGljIHZvaWQgc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdC
bG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uIGRpcmVjdGlvbiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBzaXplKQorc3Rh
dGljIHZvaWQgc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQo
Y29uc3QgUmVuZGVyR3JpZCYgZ3JpZCwgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uIGRpcmVjdGlvbiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBzaXplKQogewor
ICAgIC8vIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgZGltZW5zaW9uIGJhc2VkIG9uIHRoZSB3cml0
aW5nIG1vZGUgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2suCisgICAgLy8gRm9yIHN1YmdyaWRzLCB0
aGlzIG1pZ2h0IG5vdCBiZSB0aGUgb3V0ZXJtb3N0IGdyaWQsIGJ1dCBjb3VsZCBiZSBhIHN1Ymdy
aWQuIElmIHRoZQorICAgIC8vIHdyaXRpbmcgbW9kZSBvZiB0aGUgQ0IgYW5kIHRoZSBncmlkIGZv
ciB3aGljaCB3ZSdyZSBkb2luZyBzaXppbmcgZG9uJ3QgbWF0Y2gsIHN3YXAKKyAgICAvLyB0aGUg
ZGlyZWN0aW9ucy4KKyAgICBkaXJlY3Rpb24gPSBHcmlkTGF5b3V0RnVuY3Rpb25zOjpmbG93QXdh
cmVEaXJlY3Rpb25Gb3JDaGlsZChncmlkLCAqY2hpbGQuY29udGFpbmluZ0Jsb2NrKCksIGRpcmVj
dGlvbik7CiAgICAgaWYgKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKQogICAgICAgICBjaGlsZC5z
ZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aChzaXplKTsKICAg
ICBlbHNlCkBAIC01ODcsNyArNTkyLDcgQEAgdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06
OmRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2sqPiYgdHJhY2sKIAogc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmVzdGltYXRl
ZEdyaWRBcmVhQnJlYWR0aEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7Ci0gICAgY29uc3QgR3JpZFNwYW4m
IHNwYW4gPSBtX2dyaWQuZ3JpZEl0ZW1TcGFuKGNoaWxkLCBkaXJlY3Rpb24pOworICAgIGNvbnN0
IEdyaWRTcGFuJiBzcGFuID0gbV9yZW5kZXJHcmlkLT5ncmlkU3BhbkZvckNoaWxkKGNoaWxkLCBk
aXJlY3Rpb24pOwogICAgIExheW91dFVuaXQgZ3JpZEFyZWFTaXplOwogICAgIGJvb2wgZ3JpZEFy
ZWFJc0luZGVmaW5pdGUgPSBmYWxzZTsKICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2
YWlsYWJsZVNpemUgPSBhdmFpbGFibGVTcGFjZShkaXJlY3Rpb24pOwpAQCAtNjI4LDcgKzYzMyw3
IEBAIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpn
cmlkQXJlYUJyZWFkdGhGb3JDaGlsZChjb25zCiAgICAgfQogCiAgICAgY29uc3QgVmVjdG9yPEdy
aWRUcmFjaz4mIGFsbFRyYWNrcyA9IHRyYWNrcyhkaXJlY3Rpb24pOwotICAgIGNvbnN0IEdyaWRT
cGFuJiBzcGFuID0gbV9ncmlkLmdyaWRJdGVtU3BhbihjaGlsZCwgZGlyZWN0aW9uKTsKKyAgICBj
b25zdCBHcmlkU3BhbiYgc3BhbiA9IG1fcmVuZGVyR3JpZC0+Z3JpZFNwYW5Gb3JDaGlsZChjaGls
ZCwgZGlyZWN0aW9uKTsKICAgICBMYXlvdXRVbml0IGdyaWRBcmVhQnJlYWR0aDsKICAgICBmb3Ig
KGF1dG8gdHJhY2tQb3NpdGlvbiA6IHNwYW4pCiAgICAgICAgIGdyaWRBcmVhQnJlYWR0aCArPSBh
bGxUcmFja3NbdHJhY2tQb3NpdGlvbl0uYmFzZVNpemUoKTsKQEAgLTY1MCw3ICs2NTUsNyBAQCBi
b29sIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6aXNJbnRyaW5zaWNTaXplZEdyaWRBcmVhKGNv
bnN0IFJlbmRlckJveCYgY2hpbGQsCiB7CiAgICAgQVNTRVJUKHdhc1NldHVwKCkpOwogICAgIEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24gPSBncmlkRGlyZWN0aW9uRm9yQXhpcyhh
eGlzKTsKLSAgICBjb25zdCBHcmlkU3BhbiYgc3BhbiA9IG1fZ3JpZC5ncmlkSXRlbVNwYW4oY2hp
bGQsIGRpcmVjdGlvbik7CisgICAgY29uc3QgR3JpZFNwYW4mIHNwYW4gPSBtX3JlbmRlckdyaWQt
PmdyaWRTcGFuRm9yQ2hpbGQoY2hpbGQsIGRpcmVjdGlvbik7CiAgICAgZm9yIChhdXRvIHRyYWNr
UG9zaXRpb24gOiBzcGFuKSB7CiAgICAgICAgIGNvbnN0IGF1dG8mIHRyYWNrU2l6ZSA9IHJhd0dy
aWRUcmFja1NpemUoZGlyZWN0aW9uLCB0cmFja1Bvc2l0aW9uKTsKICAgICAgICAgLy8gV2UgY29u
c2lkZXIgZnIgdW5pdHMgYXMgJ2F1dG8nIGZvciB0aGUgbWluIHNpemluZyBmdW5jdGlvbi4KQEAg
LTc5NCw3ICs3OTksNyBAQCBMYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobVN0cmF0
ZWd5Ojpsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94JiBjaAogICAgIC8vIElmIHxjaGls
ZHwgaGFzIGEgcmVsYXRpdmUgbG9naWNhbCBoZWlnaHQsIHdlIHNob3VsZG4ndCBsZXQgaXQgb3Zl
cnJpZGUgaXRzIGludHJpbnNpYyBoZWlnaHQsIHdoaWNoIGlzCiAgICAgLy8gd2hhdCB3ZSBhcmUg
aW50ZXJlc3RlZCBpbiBoZXJlLiBUaHVzIHdlIG5lZWQgdG8gc2V0IHRoZSBibG9jay1heGlzIG92
ZXJyaWRlIHNpemUgdG8gbnVsbG9wdCAobm8gcG9zc2libGUgcmVzb2x1dGlvbikuCiAgICAgaWYg
KHNob3VsZENsZWFyT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQo
Y2hpbGQsIEZvclJvd3MpKSB7Ci0gICAgICAgIHNldE92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tD
b250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZEJsb2NrRGlyZWN0aW9uLCBzdGQ6Om51bGxv
cHQpOworICAgICAgICBzZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JD
aGlsZCgqcmVuZGVyR3JpZCgpLCBjaGlsZCwgY2hpbGRCbG9ja0RpcmVjdGlvbiwgc3RkOjpudWxs
b3B0KTsKICAgICAgICAgY2hpbGQuc2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKICAgICB9
CiAKQEAgLTg1OSw3ICs4NjQsNyBAQCBMYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bVN0cmF0ZWd5OjptaW5TaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCkgYwogCiAgICAgaWYg
KGNoaWxkTWluU2l6ZS5pc0F1dG8oKSAmJiBvdmVyZmxvd0lzVmlzaWJsZSkgewogICAgICAgICBh
dXRvIG1pblNpemUgPSBtaW5Db250ZW50Rm9yQ2hpbGQoY2hpbGQpOwotICAgICAgICBjb25zdCBH
cmlkU3BhbiYgc3BhbiA9IG1fYWxnb3JpdGhtLmdyaWQoKS5ncmlkSXRlbVNwYW4oY2hpbGQsIGRp
cmVjdGlvbigpKTsKKyAgICAgICAgY29uc3QgR3JpZFNwYW4mIHNwYW4gPSBtX2FsZ29yaXRobS5t
X3JlbmRlckdyaWQtPmdyaWRTcGFuRm9yQ2hpbGQoY2hpbGQsIGRpcmVjdGlvbigpKTsKIAogICAg
ICAgICBMYXlvdXRVbml0IG1heEJyZWFkdGg7CiAgICAgICAgIGF1dG8gYWxsVHJhY2tzID0gbV9h
bGdvcml0aG0udHJhY2tzKGRpcmVjdGlvbigpKTsKQEAgLTkxOCw3ICs5MjMsNyBAQCB2b2lkIEdy
aWRUcmFja1NpemluZ0FsZ29yaXRobTo6dXBkYXRlQmFzZWxpbmVBbGlnbm1lbnRDb250ZXh0KGNv
bnN0IFJlbmRlckJveCYgYwogICAgIEFTU0VSVCghY2hpbGQubmVlZHNMYXlvdXQoKSk7CiAKICAg
ICBJdGVtUG9zaXRpb24gYWxpZ24gPSBtX3JlbmRlckdyaWQtPnNlbGZBbGlnbm1lbnRGb3JDaGls
ZChiYXNlbGluZUF4aXMsIGNoaWxkKS5wb3NpdGlvbigpOwotICAgIGNvbnN0IGF1dG8mIHNwYW4g
PSBtX2dyaWQuZ3JpZEl0ZW1TcGFuKGNoaWxkLCBncmlkRGlyZWN0aW9uRm9yQXhpcyhiYXNlbGlu
ZUF4aXMpKTsKKyAgICBjb25zdCBhdXRvJiBzcGFuID0gbV9yZW5kZXJHcmlkLT5ncmlkU3BhbkZv
ckNoaWxkKGNoaWxkLCBncmlkRGlyZWN0aW9uRm9yQXhpcyhiYXNlbGluZUF4aXMpKTsKICAgICBt
X2Jhc2VsaW5lQWxpZ25tZW50LnVwZGF0ZUJhc2VsaW5lQWxpZ25tZW50Q29udGV4dChhbGlnbiwg
c3Bhbi5zdGFydExpbmUoKSwgY2hpbGQsIGJhc2VsaW5lQXhpcyk7CiB9CiAKQEAgLTkyOCw3ICs5
MzMsNyBAQCBMYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6YmFzZWxpbmVPZmZz
ZXRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaQogICAgICAgICByZXR1cm4gTGF5b3V0VW5p
dCgpOwogCiAgICAgSXRlbVBvc2l0aW9uIGFsaWduID0gbV9yZW5kZXJHcmlkLT5zZWxmQWxpZ25t
ZW50Rm9yQ2hpbGQoYmFzZWxpbmVBeGlzLCBjaGlsZCkucG9zaXRpb24oKTsKLSAgICBjb25zdCBh
dXRvJiBzcGFuID0gbV9ncmlkLmdyaWRJdGVtU3BhbihjaGlsZCwgZ3JpZERpcmVjdGlvbkZvckF4
aXMoYmFzZWxpbmVBeGlzKSk7CisgICAgY29uc3QgYXV0byYgc3BhbiA9IG1fcmVuZGVyR3JpZC0+
Z3JpZFNwYW5Gb3JDaGlsZChjaGlsZCwgZ3JpZERpcmVjdGlvbkZvckF4aXMoYmFzZWxpbmVBeGlz
KSk7CiAgICAgcmV0dXJuIG1fYmFzZWxpbmVBbGlnbm1lbnQuYmFzZWxpbmVPZmZzZXRGb3JDaGls
ZChhbGlnbiwgc3Bhbi5zdGFydExpbmUoKSwgY2hpbGQsIGJhc2VsaW5lQXhpcyk7CiB9CiAKQEAg
LTk1OSwxMCArOTY0LDExIEBAIGJvb2wgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtU3RyYXRlZ3k6
OnVwZGF0ZU92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6CiB7CiAgICAgaWYgKCFv
dmVycmlkZVNpemUpCiAgICAgICAgIG92ZXJyaWRlU2l6ZSA9IG1fYWxnb3JpdGhtLmdyaWRBcmVh
QnJlYWR0aEZvckNoaWxkKGNoaWxkLCBkaXJlY3Rpb24pOworCiAgICAgaWYgKEdyaWRMYXlvdXRG
dW5jdGlvbnM6Omhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxk
KGNoaWxkLCBkaXJlY3Rpb24pICYmIEdyaWRMYXlvdXRGdW5jdGlvbnM6Om92ZXJyaWRpbmdDb250
YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBkaXJlY3Rpb24pID09IG92ZXJy
aWRlU2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc2V0T3ZlcnJpZGluZ0NvbnRh
aW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGRpcmVjdGlvbiwgb3ZlcnJpZGVT
aXplKTsKKyAgICBzZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGls
ZCgqcmVuZGVyR3JpZCgpLCBjaGlsZCwgZGlyZWN0aW9uLCBvdmVycmlkZVNpemUpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC05OTAsNiArOTk2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHJl
Y29tcHV0ZVVzZWRGbGV4RnJhY3Rpb25JZk5lZWRlZChkb3VibGUmIGZsZXhGcmFjdGlvbiwgTGF5
b3V0VW5pdCYgdG90YWxHcm93dGgpIGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgZnJl
ZVNwYWNlRm9yU3RyZXRjaEF1dG9UcmFja3NTdGVwKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9v
bCBpc0NvbXB1dGluZ1NpemVDb250YWlubWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNo
b3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCpyZW5kZXJHcmlkKCkpOyB9CisgICAgdm9pZCBhY2N1
bXVsYXRlRmxleEZyYWN0aW9uKGRvdWJsZSYgZmxleEZyYWN0aW9uLCBHcmlkSXRlcmF0b3ImLCBH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gb3V0ZXJtb3N0RGlyZWN0aW9uLCBIYXNoU2V0PFJlbmRl
ckJveCo+JiBpdGVtc1NldCkgY29uc3Q7CiB9OwogCiB2b2lkIEluZGVmaW5pdGVTaXplU3RyYXRl
Z3k6OmxheW91dEdyaWRJdGVtRm9yTWluU2l6ZUNvbXB1dGF0aW9uKFJlbmRlckJveCYgY2hpbGQs
IGJvb2wgb3ZlcnJpZGVTaXplSGFzQ2hhbmdlZCkgY29uc3QKQEAgLTEwMTMsNiArMTAyMCwyOCBA
QCBzdGF0aWMgaW5saW5lIGRvdWJsZSBub3JtYWxpemVkRmxleEZyYWN0aW9uKGNvbnN0IEdyaWRU
cmFjayYgdHJhY2spCiAgICAgcmV0dXJuIHRyYWNrLmJhc2VTaXplKCkgLyBzdGQ6Om1heDxkb3Vi
bGU+KDEsIGZsZXhGYWN0b3IpOwogfQogCit2b2lkIEluZGVmaW5pdGVTaXplU3RyYXRlZ3k6OmFj
Y3VtdWxhdGVGbGV4RnJhY3Rpb24oZG91YmxlJiBmbGV4RnJhY3Rpb24sIEdyaWRJdGVyYXRvciYg
aXRlcmF0b3IsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBvdXRlcm1vc3REaXJlY3Rpb24sIEhh
c2hTZXQ8UmVuZGVyQm94Kj4mIGl0ZW1zU2V0KSBjb25zdAoreworICAgIHdoaWxlIChhdXRvKiBn
cmlkSXRlbSA9IGl0ZXJhdG9yLm5leHRHcmlkSXRlbSgpKSB7CisgICAgICAgIGlmIChpczxSZW5k
ZXJHcmlkPihncmlkSXRlbSkgJiYgZG93bmNhc3Q8UmVuZGVyR3JpZD4oZ3JpZEl0ZW0pLT5pc1N1
YmdyaWRJblBhcmVudERpcmVjdGlvbihpdGVyYXRvci5kaXJlY3Rpb24oKSkpIHsKKyAgICAgICAg
ICAgIFJlbmRlckdyaWQqIGlubmVyID0gZG93bmNhc3Q8UmVuZGVyR3JpZD4oZ3JpZEl0ZW0pOwor
CisgICAgICAgICAgICBHcmlkSXRlcmF0b3IgY2hpbGRJdGVyYXRvciA9IEdyaWRJdGVyYXRvcjo6
Y3JlYXRlRm9yU3ViZ3JpZCgqaW5uZXIsIGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGFjY3VtdWxh
dGVGbGV4RnJhY3Rpb24oZmxleEZyYWN0aW9uLCBjaGlsZEl0ZXJhdG9yLCBvdXRlcm1vc3REaXJl
Y3Rpb24sIGl0ZW1zU2V0KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAg
ICAgIC8vIERvIG5vdCBpbmNsdWRlIGFscmVhZHkgcHJvY2Vzc2VkIGl0ZW1zLgorICAgICAgICBp
ZiAoIWl0ZW1zU2V0LmFkZChncmlkSXRlbSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIEdyaWRTcGFuIHNwYW4gPSBtX2FsZ29yaXRobS5yZW5kZXJHcmlkKCkt
PmdyaWRTcGFuRm9yQ2hpbGQoKmdyaWRJdGVtLCBvdXRlcm1vc3REaXJlY3Rpb24pOworCisgICAg
ICAgIC8vIFJlbW92aW5nIGd1dHRlcnMgZnJvbSB0aGUgbWF4LWNvbnRlbnQgY29udHJpYnV0aW9u
IG9mIHRoZSBpdGVtLCBzbyB0aGV5IGFyZSBub3QgdGFrZW4gaW50byBhY2NvdW50IGluIEZpbmRG
clVuaXRTaXplKCkuCisgICAgICAgIExheW91dFVuaXQgbGVmdE92ZXJTcGFjZSA9IG1heENvbnRl
bnRGb3JDaGlsZCgqZ3JpZEl0ZW0pIC0gcmVuZGVyR3JpZCgpLT5ndXR0ZXJzU2l6ZShtX2FsZ29y
aXRobS5ncmlkKCksIG91dGVybW9zdERpcmVjdGlvbiwgc3Bhbi5zdGFydExpbmUoKSwgc3Bhbi5p
bnRlZ2VyU3BhbigpLCBhdmFpbGFibGVTcGFjZSgpKTsKKyAgICAgICAgZmxleEZyYWN0aW9uID0g
c3RkOjptYXgoZmxleEZyYWN0aW9uLCBmaW5kRnJVbml0U2l6ZShzcGFuLCBsZWZ0T3ZlclNwYWNl
KSk7CisgICAgfQorfQorCiBkb3VibGUgSW5kZWZpbml0ZVNpemVTdHJhdGVneTo6ZmluZFVzZWRG
bGV4RnJhY3Rpb24oVmVjdG9yPHVuc2lnbmVkPiYgZmxleGlibGVTaXplZFRyYWNrc0luZGV4LCBH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IGZyZWVTcGFjZSkgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJlZVNwYWNlKTsKQEAg
LTEwMzIsMTcgKzEwNjEsNyBAQCBkb3VibGUgSW5kZWZpbml0ZVNpemVTdHJhdGVneTo6ZmluZFVz
ZWRGbGV4RnJhY3Rpb24oVmVjdG9yPHVuc2lnbmVkPiYgZmxleGlibGVTaQogICAgIEhhc2hTZXQ8
UmVuZGVyQm94Kj4gaXRlbXNTZXQ7CiAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFja0luZGV4IDog
ZmxleGlibGVTaXplZFRyYWNrc0luZGV4KSB7CiAgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRv
cihncmlkLCBkaXJlY3Rpb24sIHRyYWNrSW5kZXgpOwotICAgICAgICB3aGlsZSAoYXV0byogZ3Jp
ZEl0ZW0gPSBpdGVyYXRvci5uZXh0R3JpZEl0ZW0oKSkgewotICAgICAgICAgICAgLy8gRG8gbm90
IGluY2x1ZGUgYWxyZWFkeSBwcm9jZXNzZWQgaXRlbXMuCi0gICAgICAgICAgICBpZiAoIWl0ZW1z
U2V0LmFkZChncmlkSXRlbSkuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICAgICAgY29uc3QgR3JpZFNwYW4mIHNwYW4gPSBncmlkLmdyaWRJdGVtU3Bhbigq
Z3JpZEl0ZW0sIGRpcmVjdGlvbik7Ci0KLSAgICAgICAgICAgIC8vIFJlbW92aW5nIGd1dHRlcnMg
ZnJvbSB0aGUgbWF4LWNvbnRlbnQgY29udHJpYnV0aW9uIG9mIHRoZSBpdGVtLCBzbyB0aGV5IGFy
ZSBub3QgdGFrZW4gaW50byBhY2NvdW50IGluIEZpbmRGclVuaXRTaXplKCkuCi0gICAgICAgICAg
ICBMYXlvdXRVbml0IGxlZnRPdmVyU3BhY2UgPSBtYXhDb250ZW50Rm9yQ2hpbGQoKmdyaWRJdGVt
KSAtIHJlbmRlckdyaWQoKS0+Z3V0dGVyc1NpemUobV9hbGdvcml0aG0uZ3JpZCgpLCBkaXJlY3Rp
b24sIHNwYW4uc3RhcnRMaW5lKCksIHNwYW4uaW50ZWdlclNwYW4oKSwgYXZhaWxhYmxlU3BhY2Uo
KSk7Ci0gICAgICAgICAgICBmbGV4RnJhY3Rpb24gPSBzdGQ6Om1heChmbGV4RnJhY3Rpb24sIGZp
bmRGclVuaXRTaXplKHNwYW4sIGxlZnRPdmVyU3BhY2UpKTsKLSAgICAgICAgfQorICAgICAgICBh
Y2N1bXVsYXRlRmxleEZyYWN0aW9uKGZsZXhGcmFjdGlvbiwgaXRlcmF0b3IsIGRpcmVjdGlvbiwg
aXRlbXNTZXQpOwogICAgIH0KIAogICAgIHJldHVybiBmbGV4RnJhY3Rpb247CkBAIC0xMTA5LDcg
KzExMjgsNyBAQCBMYXlvdXRVbml0IERlZmluaXRlU2l6ZVN0cmF0ZWd5OjptaW5Mb2dpY2FsU2l6
ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIGNvbnN0CiAgICAgR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uIGZsb3dBd2FyZURpcmVjdGlvbiA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZsb3dBd2Fy
ZURpcmVjdGlvbkZvckNoaWxkKCpyZW5kZXJHcmlkKCksIGNoaWxkLCBkaXJlY3Rpb24oKSk7CiAg
ICAgaWYgKGhhc1JlbGF0aXZlTWFyZ2luT3JQYWRkaW5nRm9yQ2hpbGQoY2hpbGQsIGZsb3dBd2Fy
ZURpcmVjdGlvbikgfHwgKGRpcmVjdGlvbigpICE9IGNoaWxkSW5saW5lRGlyZWN0aW9uICYmIGhh
c1JlbGF0aXZlT3JJbnRyaW5zaWNTaXplRm9yQ2hpbGQoY2hpbGQsIGZsb3dBd2FyZURpcmVjdGlv
bikpKSB7CiAgICAgICAgIGF1dG8gaW5kZWZpbml0ZVNpemUgPSBkaXJlY3Rpb24oKSA9PSBjaGls
ZElubGluZURpcmVjdGlvbiA/IHN0ZDo6bWFrZV9vcHRpb25hbCgwX2x1KSA6IHN0ZDo6bnVsbG9w
dDsKLSAgICAgICAgc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hp
bGQoY2hpbGQsIGRpcmVjdGlvbigpLCBpbmRlZmluaXRlU2l6ZSk7CisgICAgICAgIHNldE92ZXJy
aWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKCpyZW5kZXJHcmlkKCksIGNo
aWxkLCBkaXJlY3Rpb24oKSwgaW5kZWZpbml0ZVNpemUpOwogICAgIH0KICAgICByZXR1cm4gR3Jp
ZFRyYWNrU2l6aW5nQWxnb3JpdGhtU3RyYXRlZ3k6Om1pbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY2hp
bGQsIGNoaWxkTWluU2l6ZSwgYXZhaWxhYmxlU2l6ZSk7CiB9CkBAIC0xMTU0LDcgKzExNzMsNyBA
QCBMYXlvdXRVbml0IERlZmluaXRlU2l6ZVN0cmF0ZWd5OjptaW5Db250ZW50Rm9yQ2hpbGQoUmVu
ZGVyQm94JiBjaGlsZCkgY29uc3QKIHsKICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gY2hp
bGRJbmxpbmVEaXJlY3Rpb24gPSBHcmlkTGF5b3V0RnVuY3Rpb25zOjpmbG93QXdhcmVEaXJlY3Rp
b25Gb3JDaGlsZCgqcmVuZGVyR3JpZCgpLCBjaGlsZCwgRm9yQ29sdW1ucyk7CiAgICAgaWYgKGRp
cmVjdGlvbigpID09IGNoaWxkSW5saW5lRGlyZWN0aW9uICYmIGNoaWxkLm5lZWRzTGF5b3V0KCkg
JiYgc2hvdWxkQ2xlYXJPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGls
ZChjaGlsZCwgRm9yQ29sdW1ucykpCi0gICAgICAgIHNldE92ZXJyaWRpbmdDb250YWluaW5nQmxv
Y2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZElubGluZURpcmVjdGlvbiwgTGF5b3V0
VW5pdCgpKTsKKyAgICAgICAgc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXpl
Rm9yQ2hpbGQoKnJlbmRlckdyaWQoKSwgY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uLCBMYXlv
dXRVbml0KCkpOwogICAgIHJldHVybiBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVneTo6
bWluQ29udGVudEZvckNoaWxkKGNoaWxkKTsKIH0KIApAQCAtMTIwOSw2ICsxMjI4LDUxIEBAIHZv
aWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjppbml0aWFsaXplVHJhY2tTaXplcygpCiAgICAg
fQogfQogCitzdGF0aWMgdm9pZCBhZGRTdWJncmlkTWFyZ2luQm9yZGVyUGFkZGluZyhWZWN0b3I8
R3JpZFRyYWNrPiYgYWxsVHJhY2tzLCBHcmlkU3BhbiYgc3BhbiwgUmVuZGVyR3JpZCogc3ViZ3Jp
ZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIHBhcmVudERpcmVjdGlvbikKK3sKKyAgICBHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxv
d0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoKnN1YmdyaWQsICpzdWJncmlkLT5wYXJlbnQoKSwgcGFy
ZW50RGlyZWN0aW9uKTsKKworICAgIGlmIChhbGxUcmFja3Nbc3Bhbi5zdGFydExpbmUoKV0uY2Fj
aGVkVHJhY2tTaXplKCkuaGFzSW50cmluc2ljTWluVHJhY2tCcmVhZHRoKCkpIHsKKyAgICAgICAg
TGF5b3V0VW5pdCBtYnBTdGFydCA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBzdWJncmlk
LT5tYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nU3RhcnQoKSA6IHN1YmdyaWQtPm1hcmdpbkFuZEJv
cmRlckFuZFBhZGRpbmdCZWZvcmUoKTsKKyAgICAgICAgYWxsVHJhY2tzW3NwYW4uc3RhcnRMaW5l
KCldLnNldEJhc2VTaXplKHN0ZDo6bWF4KGFsbFRyYWNrc1tzcGFuLnN0YXJ0TGluZSgpXS5iYXNl
U2l6ZSgpLCBtYnBTdGFydCkpOworICAgIH0KKyAgICBpZiAoYWxsVHJhY2tzW3NwYW4uZW5kTGlu
ZSgpIC0gMV0uY2FjaGVkVHJhY2tTaXplKCkuaGFzSW50cmluc2ljTWluVHJhY2tCcmVhZHRoKCkp
IHsKKyAgICAgICAgTGF5b3V0VW5pdCBtYnBFbmQgPSAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMp
ID8gc3ViZ3JpZC0+bWFyZ2luQW5kQm9yZGVyQW5kUGFkZGluZ0VuZCgpIDogc3ViZ3JpZC0+bWFy
Z2luQW5kQm9yZGVyQW5kUGFkZGluZ0FmdGVyKCk7CisgICAgICAgIGFsbFRyYWNrc1tzcGFuLmVu
ZExpbmUoKSAtIDFdLnNldEJhc2VTaXplKHN0ZDo6bWF4KGFsbFRyYWNrc1tzcGFuLmVuZExpbmUo
KSAtIDFdLmJhc2VTaXplKCksIG1icEVuZCkpOworICAgIH0KK30KKwordm9pZCBHcmlkVHJhY2tT
aXppbmdBbGdvcml0aG06OmFjY3VtdWxhdGVJbnRyaW5zaWNTaXplc0ZvclRyYWNrKEdyaWRUcmFj
ayYgdHJhY2ssIEdyaWRJdGVyYXRvciYgaXRlcmF0b3IsIFZlY3RvcjxHcmlkSXRlbVdpdGhTcGFu
PiYgaXRlbXNTb3J0ZWRCeUluY3JlYXNpbmdTcGFuLCBWZWN0b3I8R3JpZEl0ZW1XaXRoU3Bhbj4m
IGl0ZW1zQ3Jvc3NpbmdGbGV4aWJsZVRyYWNrcywgSGFzaFNldDxSZW5kZXJCb3gqPiYgaXRlbXNT
ZXQpCit7CisgICAgVmVjdG9yPEdyaWRUcmFjaz4mIGFsbFRyYWNrcyA9IHRyYWNrcyhtX2RpcmVj
dGlvbik7CisKKyAgICB3aGlsZSAoYXV0byogZ3JpZEl0ZW0gPSBpdGVyYXRvci5uZXh0R3JpZEl0
ZW0oKSkgeworICAgICAgICBib29sIGlzTmV3RW50cnkgPSBpdGVtc1NldC5hZGQoZ3JpZEl0ZW0p
LmlzTmV3RW50cnk7CisgICAgICAgIGlmIChpczxSZW5kZXJHcmlkPihncmlkSXRlbSkgJiYgZG93
bmNhc3Q8UmVuZGVyR3JpZD4oZ3JpZEl0ZW0pLT5pc1N1YmdyaWRJblBhcmVudERpcmVjdGlvbihp
dGVyYXRvci5kaXJlY3Rpb24oKSkpIHsKKyAgICAgICAgICAgIC8vIENvbnRyaWJ1dGUgdGhlIG1i
cCBvZiB3cmFwcGVyIHRvIHRoZSBmaXJzdCBhbmQgbGFzdCB0cmFja3MgdGhhdCB3ZSBzcGFuLgor
ICAgICAgICAgICAgUmVuZGVyR3JpZCogaW5uZXIgPSBkb3duY2FzdDxSZW5kZXJHcmlkPihncmlk
SXRlbSk7CisgICAgICAgICAgICBpZiAoaXNOZXdFbnRyeSkgeworICAgICAgICAgICAgICAgIEdy
aWRTcGFuIHNwYW4gPSBtX3JlbmRlckdyaWQtPmdyaWRTcGFuRm9yQ2hpbGQoKmdyaWRJdGVtLCBt
X2RpcmVjdGlvbik7CisgICAgICAgICAgICAgICAgYWRkU3ViZ3JpZE1hcmdpbkJvcmRlclBhZGRp
bmcoYWxsVHJhY2tzLCBzcGFuLCBpbm5lciwgaXRlcmF0b3IuZGlyZWN0aW9uKCkpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBHcmlkSXRlcmF0b3IgY2hpbGRJdGVyYXRvciA9IEdyaWRJ
dGVyYXRvcjo6Y3JlYXRlRm9yU3ViZ3JpZCgqaW5uZXIsIGl0ZXJhdG9yKTsKKyAgICAgICAgICAg
IGFjY3VtdWxhdGVJbnRyaW5zaWNTaXplc0ZvclRyYWNrKHRyYWNrLCBjaGlsZEl0ZXJhdG9yLCBp
dGVtc1NvcnRlZEJ5SW5jcmVhc2luZ1NwYW4sIGl0ZW1zQ3Jvc3NpbmdGbGV4aWJsZVRyYWNrcywg
aXRlbXNTZXQpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KCFpc05ld0VudHJ5KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIEdyaWRTcGFuIHNw
YW4gPSBtX3JlbmRlckdyaWQtPmdyaWRTcGFuRm9yQ2hpbGQoKmdyaWRJdGVtLCBtX2RpcmVjdGlv
bik7CisKKyAgICAgICAgaWYgKHNwYW5uaW5nSXRlbUNyb3NzZXNGbGV4aWJsZVNpemVkVHJhY2tz
KHNwYW4pKQorICAgICAgICAgICAgaXRlbXNDcm9zc2luZ0ZsZXhpYmxlVHJhY2tzLmFwcGVuZChH
cmlkSXRlbVdpdGhTcGFuKCpncmlkSXRlbSwgc3BhbikpOworICAgICAgICBlbHNlIGlmIChzcGFu
LmludGVnZXJTcGFuKCkgPT0gMSkKKyAgICAgICAgICAgIHNpemVUcmFja1RvRml0Tm9uU3Bhbm5p
bmdJdGVtKHNwYW4sICpncmlkSXRlbSwgdHJhY2spOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBpdGVtc1NvcnRlZEJ5SW5jcmVhc2luZ1NwYW4uYXBwZW5kKEdyaWRJdGVtV2l0aFNwYW4oKmdy
aWRJdGVtLCBzcGFuKSk7CisgICAgfQorfQorCiB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bTo6cmVzb2x2ZUludHJpbnNpY1RyYWNrU2l6ZXMoKQogewogICAgIFZlY3RvcjxHcmlkVHJhY2s+
JiBhbGxUcmFja3MgPSB0cmFja3MobV9kaXJlY3Rpb24pOwpAQCAtMTIyOCwyMiArMTI5MiwxMyBA
QCB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6cmVzb2x2ZUludHJpbnNpY1RyYWNrU2l6
ZXMoKQogICAgIFZlY3RvcjxHcmlkSXRlbVdpdGhTcGFuPiBpdGVtc1NvcnRlZEJ5SW5jcmVhc2lu
Z1NwYW47CiAgICAgVmVjdG9yPEdyaWRJdGVtV2l0aFNwYW4+IGl0ZW1zQ3Jvc3NpbmdGbGV4aWJs
ZVRyYWNrczsKICAgICBIYXNoU2V0PFJlbmRlckJveCo+IGl0ZW1zU2V0OworCiAgICAgaWYgKG1f
Z3JpZC5oYXNHcmlkSXRlbXMoKSkgewogICAgICAgICBmb3IgKGF1dG8gdHJhY2tJbmRleCA6IG1f
Y29udGVudFNpemVkVHJhY2tzSW5kZXgpIHsKICAgICAgICAgICAgIEdyaWRJdGVyYXRvciBpdGVy
YXRvcihtX2dyaWQsIG1fZGlyZWN0aW9uLCB0cmFja0luZGV4KTsKICAgICAgICAgICAgIEdyaWRU
cmFjayYgdHJhY2sgPSBhbGxUcmFja3NbdHJhY2tJbmRleF07CiAKLSAgICAgICAgICAgIHdoaWxl
IChhdXRvKiBncmlkSXRlbSA9IGl0ZXJhdG9yLm5leHRHcmlkSXRlbSgpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGl0ZW1zU2V0LmFkZChncmlkSXRlbSkuaXNOZXdFbnRyeSkgewotICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHcmlkU3BhbiYgc3BhbiA9IG1fZ3JpZC5ncmlkSXRlbVNwYW4oKmdy
aWRJdGVtLCBtX2RpcmVjdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzcGFubmluZ0l0
ZW1Dcm9zc2VzRmxleGlibGVTaXplZFRyYWNrcyhzcGFuKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGl0ZW1zQ3Jvc3NpbmdGbGV4aWJsZVRyYWNrcy5hcHBlbmQoR3JpZEl0ZW1XaXRoU3Bhbigq
Z3JpZEl0ZW0sIHNwYW4pKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3Bhbi5pbnRl
Z2VyU3BhbigpID09IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXplVHJhY2tUb0ZpdE5v
blNwYW5uaW5nSXRlbShzcGFuLCAqZ3JpZEl0ZW0sIHRyYWNrKTsKLSAgICAgICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNTb3J0ZWRCeUluY3JlYXNpbmdT
cGFuLmFwcGVuZChHcmlkSXRlbVdpdGhTcGFuKCpncmlkSXRlbSwgc3BhbikpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFjY3VtdWxhdGVJbnRyaW5zaWNT
aXplc0ZvclRyYWNrKHRyYWNrLCBpdGVyYXRvciwgaXRlbXNTb3J0ZWRCeUluY3JlYXNpbmdTcGFu
LCBpdGVtc0Nyb3NzaW5nRmxleGlibGVUcmFja3MsIGl0ZW1zU2V0KTsKICAgICAgICAgfQogICAg
ICAgICBzdGQ6OnNvcnQoaXRlbXNTb3J0ZWRCeUluY3JlYXNpbmdTcGFuLmJlZ2luKCksIGl0ZW1z
U29ydGVkQnlJbmNyZWFzaW5nU3Bhbi5lbmQoKSk7CiAgICAgfQpAQCAtMTM5OSwxMSArMTQ1NCw3
MCBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y29tcHV0ZUJhc2VsaW5lQWxpZ25t
ZW50Q29udGV4dCgpCiAgICAgfQogfQogCitzdGF0aWMgdm9pZCByZW1vdmVTdWJncmlkTWFyZ2lu
Qm9yZGVyUGFkZGluZ0Zyb21UcmFja3MoVmVjdG9yPEdyaWRUcmFjaz4mIHRyYWNrcywgTGF5b3V0
VW5pdCBtYnAsIGJvb2wgZm9yd2FyZHMpCit7CisgICAgaW50IG51bVRyYWNrcyA9IHRyYWNrcy5z
aXplKCk7CisgICAgaW50IGkgPSBmb3J3YXJkcyA/IDAgOiBudW1UcmFja3MgLSAxOworICAgIHdo
aWxlIChtYnAgPiAwICYmIChmb3J3YXJkcyA/IGkgPCBudW1UcmFja3MgOiBpID49IDApKSB7Cisg
ICAgICAgIExheW91dFVuaXQgc2l6ZSA9IHRyYWNrc1tpXS5iYXNlU2l6ZSgpOworICAgICAgICBp
ZiAoc2l6ZSA+IG1icCkgeworICAgICAgICAgICAgc2l6ZSAtPSBtYnA7CisgICAgICAgICAgICBt
YnAgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbWJwIC09IHNpemU7CisgICAg
ICAgICAgICBzaXplID0gMDsKKyAgICAgICAgfQorICAgICAgICB0cmFja3NbaV0uc2V0QmFzZVNp
emUoc2l6ZSk7CisKKyAgICAgICAgZm9yd2FyZHMgPyBpKysgOiBpLS07CisgICAgfQorfQorCiti
b29sIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y29weVVzZWRUcmFja1NpemVzRm9yU3ViZ3Jp
ZCgpCit7CisgICAgUmVuZGVyR3JpZCogb3V0ZXIgPSBkb3duY2FzdDxSZW5kZXJHcmlkPihtX3Jl
bmRlckdyaWQtPnBhcmVudCgpKTsKKyAgICBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0mIHBhcmVu
dEFsZ28gPSBvdXRlci0+bV90cmFja1NpemluZ0FsZ29yaXRobTsKKyAgICBHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24gZGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGly
ZWN0aW9uRm9yQ2hpbGQoKm1fcmVuZGVyR3JpZCwgKm91dGVyLCBtX2RpcmVjdGlvbik7CisgICAg
VmVjdG9yPEdyaWRUcmFjaz4mIHBhcmVudFRyYWNrcyA9IHBhcmVudEFsZ28udHJhY2tzKGRpcmVj
dGlvbik7CisgICAgR3JpZFNwYW4gc3BhbiA9IG91dGVyLT5ncmlkU3BhbkZvckNoaWxkKCptX3Jl
bmRlckdyaWQsIGRpcmVjdGlvbik7CisKKyAgICBpZiAoIXBhcmVudFRyYWNrcy5zaXplKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCBudW1UcmFja3MgPSB0cmFja3MobV9kaXJl
Y3Rpb24pLnNpemUoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVRyYWNrczsgaSsrKQor
ICAgICAgICB0cmFja3MobV9kaXJlY3Rpb24pW2ldID0gcGFyZW50VHJhY2tzW2kgKyBzcGFuLnN0
YXJ0TGluZSgpXTsKKworICAgIGlmIChHcmlkTGF5b3V0RnVuY3Rpb25zOjppc1N1YmdyaWRSZXZl
cnNlZERpcmVjdGlvbigqb3V0ZXIsIGRpcmVjdGlvbiwgKm1fcmVuZGVyR3JpZCkpCisgICAgICAg
IHRyYWNrcyhtX2RpcmVjdGlvbikucmV2ZXJzZSgpOworCisgICAgTGF5b3V0VW5pdCBzdGFydE1C
UCA9IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IG1fcmVuZGVyR3JpZC0+bWFyZ2luQW5k
Qm9yZGVyQW5kUGFkZGluZ1N0YXJ0KCkgOiBtX3JlbmRlckdyaWQtPm1hcmdpbkFuZEJvcmRlckFu
ZFBhZGRpbmdCZWZvcmUoKTsKKyAgICByZW1vdmVTdWJncmlkTWFyZ2luQm9yZGVyUGFkZGluZ0Zy
b21UcmFja3ModHJhY2tzKG1fZGlyZWN0aW9uKSwgc3RhcnRNQlAsIHRydWUpOworICAgIExheW91
dFVuaXQgZW5kTUJQID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gbV9yZW5kZXJHcmlk
LT5tYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nRW5kKCkgOiBtX3JlbmRlckdyaWQtPm1hcmdpbkFu
ZEJvcmRlckFuZFBhZGRpbmdBZnRlcigpOworICAgIHJlbW92ZVN1YmdyaWRNYXJnaW5Cb3JkZXJQ
YWRkaW5nRnJvbVRyYWNrcyh0cmFja3MobV9kaXJlY3Rpb24pLCBlbmRNQlAsIGZhbHNlKTsKKwor
ICAgIExheW91dFVuaXQgZ2FwRGlmZmVyZW5jZSA9IChtX3JlbmRlckdyaWQtPmdyaWRHYXAobV9k
aXJlY3Rpb24pIC0gb3V0ZXItPmdyaWRHYXAoZGlyZWN0aW9uKSkgLyAyOworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbnVtVHJhY2tzOyBpKyspIHsKKyAgICAgICAgTGF5b3V0VW5pdCBzaXplID0g
dHJhY2tzKG1fZGlyZWN0aW9uKVtpXS5iYXNlU2l6ZSgpOworICAgICAgICBpZiAoaSkKKyAgICAg
ICAgICAgIHNpemUgLT0gZ2FwRGlmZmVyZW5jZTsKKyAgICAgICAgaWYgKGkgIT0gbnVtVHJhY2tz
IC0gMSkKKyAgICAgICAgICAgIHNpemUgLT0gZ2FwRGlmZmVyZW5jZTsKKyAgICAgICAgdHJhY2tz
KG1fZGlyZWN0aW9uKVtpXS5zZXRCYXNlU2l6ZShzdGQ6Om1heChzaXplLCAwX2x1KSk7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6
cnVuKCkKIHsKICAgICBBU1NFUlQod2FzU2V0dXAoKSk7CiAgICAgU3RhdGVNYWNoaW5lIHN0YXRl
TWFjaGluZSgqdGhpcyk7CiAKKyAgICBpZiAobV9yZW5kZXJHcmlkLT5pc1N1YmdyaWQobV9kaXJl
Y3Rpb24pKSB7CisgICAgICAgIGlmIChjb3B5VXNlZFRyYWNrU2l6ZXNGb3JTdWJncmlkKCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8gU3RlcCAxLgogICAgIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5pdGlhbEZyZWVTcGFjZSA9IGZyZWVTcGFjZShtX2Rp
cmVjdGlvbik7CiAgICAgaW5pdGlhbGl6ZVRyYWNrU2l6ZXMoKTsKQEAgLTE0NTMsNiArMTU2Nywx
MSBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6cmVzZXQoKQogI2lmIEFTU0VSVF9F
TkFCTEVECiBib29sIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6dHJhY2tzQXJlV2lkZXJUaGFu
TWluVHJhY2tCcmVhZHRoKCkgY29uc3QKIHsKKyAgICAvLyBTdWJncmlkcyBpbmhlcml0IHRoZWly
IHNpemluZyBkaXJlY3RseSBmcm9tIHRoZSBwYXJlbnQsIHNvIG1heSBiZSB1bnJlbGF0ZWQKKyAg
ICAvLyB0byB0aGVpciBpbml0aWFsIGJhc2Ugc2l6ZS4KKyAgICBpZiAobV9yZW5kZXJHcmlkLT5p
c1N1YmdyaWQobV9kaXJlY3Rpb24pKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIGNvbnN0
IFZlY3RvcjxHcmlkVHJhY2s+JiBhbGxUcmFja3MgPSB0cmFja3MobV9kaXJlY3Rpb24pOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYWxsVHJhY2tzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGNvbnN0IGF1dG8mIHRyYWNrU2l6ZSA9IGFsbFRyYWNrc1tpXS5jYWNoZWRUcmFja1NpemUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdv
cml0aG0uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0
aG0uaAppbmRleCBhZTFkZDZjN2FjZGIuLmMwN2U1Mzg2ODE0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uaApAQCAtNTUsNiAr
NTUsNyBAQCBlbnVtIGNsYXNzIFNwYWNlRGlzdHJpYnV0aW9uTGltaXQgOiB1aW50OF90ICB7CiB9
OwogCiBjbGFzcyBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVneTsKK2NsYXNzIEdyaWRJ
dGVtV2l0aFNwYW47CiAKIGNsYXNzIEdyaWRUcmFjayB7CiBwdWJsaWM6CkBAIC0xMjEsNiArMTIy
LDggQEAgcHVibGljOgogICAgIC8vIGFuZCBlbmNhcHN1bGF0ZSBhbnkgYWNjZXNzIGluIHRoZSBh
bGdvcml0aG0gY2xhc3MuCiAgICAgR3JpZCYgbXV0YWJsZUdyaWQoKSBjb25zdCB7IHJldHVybiBt
X2dyaWQ7IH0KIAorICAgIGNvbnN0IFJlbmRlckdyaWQqIHJlbmRlckdyaWQoKSB7IHJldHVybiBt
X3JlbmRlckdyaWQ7IH07CisKICAgICBMYXlvdXRVbml0IG1pbkNvbnRlbnRTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9taW5Db250ZW50U2l6ZTsgfTsKICAgICBMYXlvdXRVbml0IG1heENvbnRlbnRT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXhDb250ZW50U2l6ZTsgfTsKIApAQCAtMTkzLDYgKzE5
NiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RyZXRjaEZsZXhpYmxlVHJhY2tzKHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKTsKICAgICB2b2lkIHN0cmV0Y2hBdXRvVHJhY2tz
KCk7CiAKKyAgICB2b2lkIGFjY3VtdWxhdGVJbnRyaW5zaWNTaXplc0ZvclRyYWNrKEdyaWRUcmFj
ayYsIEdyaWRJdGVyYXRvciYsIFZlY3RvcjxHcmlkSXRlbVdpdGhTcGFuPiYgaXRlbXNTb3J0ZWRC
eUluY3JlYXNpbmdTcGFuLCBWZWN0b3I8R3JpZEl0ZW1XaXRoU3Bhbj4mIGl0ZW1zQ3Jvc3NpbmdG
bGV4aWJsZVRyYWNrcywgSGFzaFNldDxSZW5kZXJCb3gqPiYgaXRlbXNTZXQpOworCisgICAgYm9v
bCBjb3B5VXNlZFRyYWNrU2l6ZXNGb3JTdWJncmlkKCk7CisKICAgICAvLyBTdGF0ZSBtYWNoaW5l
LgogICAgIHZvaWQgYWR2YW5jZU5leHRTdGF0ZSgpOwogICAgIGJvb2wgaXNWYWxpZFRyYW5zaXRp
b24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmgKaW5kZXggMjJkNmIyZGJhYjgyLi45N2I5NjVhMzBmZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0xNzcsNiArMTc3
LDExIEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSBj
b25zdCB7IHJldHVybiBib3JkZXJCZWZvcmUoKSArIHBhZGRpbmdCZWZvcmUoKTsgfQogICAgIExh
eW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZ0FmdGVyKCkgY29uc3QgeyByZXR1cm4gYm9yZGVyQWZ0
ZXIoKSArIHBhZGRpbmdBZnRlcigpOyB9CiAKKyAgICBMYXlvdXRVbml0IG1hcmdpbkFuZEJvcmRl
ckFuZFBhZGRpbmdTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1hcmdpblN0YXJ0KCkgKyBib3JkZXJT
dGFydCgpICsgcGFkZGluZ1N0YXJ0KCk7IH0KKyAgICBMYXlvdXRVbml0IG1hcmdpbkFuZEJvcmRl
ckFuZFBhZGRpbmdFbmQoKSBjb25zdCB7IHJldHVybiBtYXJnaW5FbmQoKSArIGJvcmRlckVuZCgp
ICsgcGFkZGluZ0VuZCgpOyB9CisgICAgTGF5b3V0VW5pdCBtYXJnaW5BbmRCb3JkZXJBbmRQYWRk
aW5nQmVmb3JlKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQmVmb3JlKCkgKyBib3JkZXJCZWZvcmUo
KSArIHBhZGRpbmdCZWZvcmUoKTsgfQorICAgIExheW91dFVuaXQgbWFyZ2luQW5kQm9yZGVyQW5k
UGFkZGluZ0FmdGVyKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQWZ0ZXIoKSArIGJvcmRlckFmdGVy
KCkgKyBwYWRkaW5nQWZ0ZXIoKTsgfQorCiAgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbEJvcmRlckFu
ZFBhZGRpbmdFeHRlbnQoKSBjb25zdCB7IHJldHVybiBib3JkZXJUb3AoKSArIGJvcmRlckJvdHRv
bSgpICsgcGFkZGluZ1RvcCgpICsgcGFkZGluZ0JvdHRvbSgpOyB9CiAgICAgTGF5b3V0VW5pdCBo
b3Jpem9udGFsQm9yZGVyQW5kUGFkZGluZ0V4dGVudCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckxl
ZnQoKSArIGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCk7IH0K
ICAgICBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgYm9yZGVyQW5kUGFkZGluZ0FmdGVyKCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCA3ZmZiNjIzNzQ4
ZjAuLjgyZTQ0ZDkwNDRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNw
cApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6c3R5bGVEaWRDaGFuZ2UoU3R5
bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBpZiAoZXhwbGljaXRHcmlkRGlkUmVzaXplKCpvbGRTdHlsZSkgfHwgbmFt
ZWRHcmlkTGluZXNEZWZpbml0aW9uRGlkQ2hhbmdlKCpvbGRTdHlsZSkgfHwgb2xkU3R5bGUtPmdy
aWRBdXRvRmxvdygpICE9IHN0eWxlKCkuZ3JpZEF1dG9GbG93KCkKKyAgICBpZiAoZXhwbGljaXRH
cmlkRGlkUmVzaXplKCpvbGRTdHlsZSkgfHwgbmFtZWRHcmlkTGluZXNEZWZpbml0aW9uRGlkQ2hh
bmdlKCpvbGRTdHlsZSkgfHwgaW1wbGljaXRHcmlkTGluZXNEZWZpbml0aW9uRGlkQ2hhbmdlKCpv
bGRTdHlsZSkgfHwgb2xkU3R5bGUtPmdyaWRBdXRvRmxvdygpICE9IHN0eWxlKCkuZ3JpZEF1dG9G
bG93KCkKICAgICAgICAgfHwgKHN0eWxlKCkuZ3JpZEF1dG9SZXBlYXRDb2x1bW5zKCkuc2l6ZSgp
IHx8IHN0eWxlKCkuZ3JpZEF1dG9SZXBlYXRSb3dzKCkuc2l6ZSgpKSkKICAgICAgICAgZGlydHlH
cmlkKCk7CiB9CkBAIC0xMzEsNiArMTMxLDEyIEBAIGJvb2wgUmVuZGVyR3JpZDo6bmFtZWRHcmlk
TGluZXNEZWZpbml0aW9uRGlkQ2hhbmdlKGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSkKICAg
ICAgICAgfHwgb2xkU3R5bGUubmFtZWRHcmlkQ29sdW1uTGluZXMoKSAhPSBzdHlsZSgpLm5hbWVk
R3JpZENvbHVtbkxpbmVzKCk7CiB9CiAKK2Jvb2wgUmVuZGVyR3JpZDo6aW1wbGljaXRHcmlkTGlu
ZXNEZWZpbml0aW9uRGlkQ2hhbmdlKGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSkgY29uc3QK
K3sKKyAgICByZXR1cm4gb2xkU3R5bGUuaW1wbGljaXROYW1lZEdyaWRSb3dMaW5lcygpICE9IHN0
eWxlKCkuaW1wbGljaXROYW1lZEdyaWRSb3dMaW5lcygpCisgICAgICAgIHx8IG9sZFN0eWxlLmlt
cGxpY2l0TmFtZWRHcmlkQ29sdW1uTGluZXMoKSAhPSBzdHlsZSgpLmltcGxpY2l0TmFtZWRHcmlk
Q29sdW1uTGluZXMoKTsKK30KKwogLy8gVGhpcyBtZXRob2Qgb3B0aW1pemVzIHRoZSBndXR0ZXJz
IGNvbXB1dGF0aW9uIGJ5IHNraXBpbmcgdGhlIGF2YWlsYWJsZSBzaXplCiAvLyBjYWxsIGlmIGdh
cHMgYXJlIGZpeGVkIHNpemUgKGl0J3Mgb25seSBuZWVkZWQgZm9yIHBlcmNlbnRhZ2VzKS4KIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyR3JpZDo6YXZhaWxhYmxlU3BhY2VGb3JHdXR0
ZXJzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CkBAIC0zMjMsNyAr
MzI5LDYgQEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRy
ZW4sIExheW91dFVuaXQpCiAgICAgICAgIH0KIAogICAgICAgICBsYXlvdXRHcmlkSXRlbXMoKTsK
LSAgICAgICAgbV90cmFja1NpemluZ0FsZ29yaXRobS5yZXNldCgpOwogCiAgICAgICAgIGVuZEFu
ZENvbW1pdFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCk7CiAKQEAgLTMz
NCw2ICszMzksNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRD
aGlsZHJlbiwgTGF5b3V0VW5pdCkKICAgICAgICAgbV9vdXRPZkZsb3dJdGVtUm93LmNsZWFyKCk7
CiAKICAgICAgICAgbGF5b3V0UG9zaXRpb25lZE9iamVjdHMocmVsYXlvdXRDaGlsZHJlbiB8fCBp
c0RvY3VtZW50RWxlbWVudFJlbmRlcmVyKCkpOworICAgICAgICBtX3RyYWNrU2l6aW5nQWxnb3Jp
dGhtLnJlc2V0KCk7CiAKICAgICAgICAgY29tcHV0ZU92ZXJmbG93KGNsaWVudExvZ2ljYWxSaWdo
dEFuZEJvdHRvbUFmdGVyUmVwb3NpdGlvbmluZygpLmhlaWdodCgpKTsKICAgICB9CkBAIC0zNTYs
OCArMzYyLDE1IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6Z3JpZEdhcChHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsCiB7CiAgICAgQVNTRVJUKCFhdmFp
bGFibGVTaXplIHx8ICphdmFpbGFibGVTaXplID49IDApOwogICAgIGNvbnN0IEdhcExlbmd0aCYg
Z2FwTGVuZ3RoID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnM/IHN0eWxlKCkuY29sdW1uR2FwKCkg
OiBzdHlsZSgpLnJvd0dhcCgpOwotICAgIGlmIChnYXBMZW5ndGguaXNOb3JtYWwoKSkKKyAgICBp
ZiAoZ2FwTGVuZ3RoLmlzTm9ybWFsKCkpIHsKKyAgICAgICAgaWYgKGlzU3ViZ3JpZChkaXJlY3Rp
b24pKSB7CisgICAgICAgICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gcGFyZW50RGlyZWN0
aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoKnRo
aXMsICpwYXJlbnQoKSwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAgIGlmICghYXZhaWxhYmxlU2l6
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyR3JpZD4ocGFyZW50KCkp
LT5ncmlkR2FwKHBhcmVudERpcmVjdGlvbiwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgIHJl
dHVybiBkb3duY2FzdDxSZW5kZXJHcmlkPihwYXJlbnQoKSktPmdyaWRHYXAocGFyZW50RGlyZWN0
aW9uKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gMF9sdTsKKyAgICB9CiAKICAgICByZXR1
cm4gdmFsdWVGb3JMZW5ndGgoZ2FwTGVuZ3RoLmxlbmd0aCgpLCBhdmFpbGFibGVTaXplLnZhbHVl
X29yKDApKTsKIH0KQEAgLTQ0Niw4ICs0NTksNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVJ
bnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5bwog
ICAgIExheW91dFVuaXQgY2hpbGRNYXhXaWR0aDsKICAgICBib29sIGhhZEV4Y2x1ZGVkQ2hpbGRy
ZW4gPSBjb21wdXRlUHJlZmVycmVkV2lkdGhzRm9yRXhjbHVkZWRDaGlsZHJlbihjaGlsZE1pbldp
ZHRoLCBjaGlsZE1heFdpZHRoKTsKIAotICAgIEdyaWQgZ3JpZChjb25zdF9jYXN0PFJlbmRlckdy
aWQmPigqdGhpcykpOwotICAgIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSBhbGdvcml0aG0odGhp
cywgZ3JpZCk7CisgICAgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtIGFsZ29yaXRobSh0aGlzLCBj
b25zdF9jYXN0PEdyaWQmPihtX2dyaWQpKTsKICAgICBwbGFjZUl0ZW1zT25HcmlkKGFsZ29yaXRo
bSwgc3RkOjpudWxsb3B0KTsKIAogICAgIHBlcmZvcm1HcmlkSXRlbXNQcmVMYXlvdXQoYWxnb3Jp
dGhtKTsKQEAgLTQ5Niw2ICs1MDgsOSBAQCB1bnNpZ25lZCBSZW5kZXJHcmlkOjpjb21wdXRlQXV0
b1JlcGVhdFRyYWNrc0NvdW50KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlYwogewogICAg
IEFTU0VSVCghYXZhaWxhYmxlU2l6ZSB8fCBhdmFpbGFibGVTaXplLnZhbHVlKCkgIT0gLTEpOwog
ICAgIGJvb2wgaXNSb3dBeGlzID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnM7CisgICAgaWYgKGlz
Um93QXhpcyA/IGlzU3ViZ3JpZENvbHVtbnMoKSA6IGlzU3ViZ3JpZFJvd3MoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKICAgICBjb25zdCBhdXRvJiBhdXRvUmVwZWF0VHJhY2tzID0gaXNSb3dBeGlz
ID8gc3R5bGUoKS5ncmlkQXV0b1JlcGVhdENvbHVtbnMoKSA6IHN0eWxlKCkuZ3JpZEF1dG9SZXBl
YXRSb3dzKCk7CiAgICAgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrTGlzdExlbmd0aCA9IGF1dG9S
ZXBlYXRUcmFja3Muc2l6ZSgpOwogCkBAIC02MzIsNiArNjQ3LDI2IEBAIHVuc2lnbmVkIFJlbmRl
ckdyaWQ6OmNsYW1wQXV0b1JlcGVhdFRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGly
ZWN0aW9uLCB1CiAgICAgcmV0dXJuIHN0ZDo6bWluKGF1dG9SZXBlYXRUcmFja3MsIG1heFRyYWNr
cyAtIGluc2VydGlvblBvaW50KTsKIH0KIAordm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zKCkK
K3sKKyAgICB1cGRhdGVMb2dpY2FsV2lkdGgoKTsKKworICAgIExheW91dFVuaXQgYXZhaWxhYmxl
U3BhY2VGb3JDb2x1bW5zID0gYXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7CisgICAgcGxhY2VJdGVt
c09uR3JpZChtX3RyYWNrU2l6aW5nQWxnb3JpdGhtLCBhdmFpbGFibGVTcGFjZUZvckNvbHVtbnMp
OworfQorCitzdGF0aWMgR3JpZEFyZWEgaW5zZXJ0SW50b0dyaWQoR3JpZCYgZ3JpZCwgUmVuZGVy
Qm94JiBjaGlsZCwgY29uc3QgR3JpZEFyZWEmIGFyZWEpCit7CisgICAgR3JpZEFyZWEgY2xhbXBl
ZCA9IGdyaWQuaW5zZXJ0KGNoaWxkLCBhcmVhKTsKKyAgICBpZiAoIWlzPFJlbmRlckdyaWQ+KGNo
aWxkKSkKKyAgICAgICAgcmV0dXJuIGNsYW1wZWQ7CisKKyAgICBSZW5kZXJHcmlkJiByZW5kZXJH
cmlkID0gZG93bmNhc3Q8UmVuZGVyR3JpZD4oY2hpbGQpOworICAgIGlmIChyZW5kZXJHcmlkLmlz
U3ViZ3JpZFJvd3MoKSB8fCByZW5kZXJHcmlkLmlzU3ViZ3JpZENvbHVtbnMoKSkKKyAgICAgICAg
cmVuZGVyR3JpZC5wbGFjZUl0ZW1zKCk7CisgICAgcmV0dXJuIGNsYW1wZWQ7Cit9CisKIC8vIEZJ
WE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBwYXNzIHRoZSBhdmFpbGFibGUgbG9naWNhbCB3aWR0
aCBhcyBhcmd1bWVudC4gVGhlIHByb2JsZW0gaXMgdGhhdAogLy8gYXZhaWxhYmxlTG9naWNhbFdp
ZHRoKCkgZG9lcyBhbHdheXMgcmV0dXJuIGEgdmFsdWUgZXZlbiBpZiB3ZSBjYW5ub3QgcmVzb2x2
ZSBpdCBsaWtlIHdoZW4KIC8vIGNvbXB1dGluZyB0aGUgaW50cmluc2ljIHNpemUgKHByZWZlcnJl
ZCB3aWR0aHMpLiBUaGF0J3Mgd2h5IHdlIHBhc3MgdGhlIHJlc3BvbnNpYmlsaXR5IHRvIHRoZQpA
QCAtNjQxLDcgKzY3Niw2IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZChHcmlk
VHJhY2tTaXppbmdBbGdvcml0aG0mIGFsZ29yaXRobSwgc3RkOjpvcHRpCiAgICAgR3JpZCYgZ3Jp
ZCA9IGFsZ29yaXRobS5tdXRhYmxlR3JpZCgpOwogICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRDb2x1
bW5zID0gY29tcHV0ZUF1dG9SZXBlYXRUcmFja3NDb3VudChGb3JDb2x1bW5zLCBhdmFpbGFibGVM
b2dpY2FsV2lkdGgpOwogICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRSb3dzID0gY29tcHV0ZUF1dG9S
ZXBlYXRUcmFja3NDb3VudChGb3JSb3dzLCBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yUGVyY2Vu
dGFnZUNvbXB1dGF0aW9uKCkpOwotCiAgICAgYXV0b1JlcGVhdFJvd3MgPSBjbGFtcEF1dG9SZXBl
YXRUcmFja3MoRm9yUm93cywgYXV0b1JlcGVhdFJvd3MpOwogICAgIGF1dG9SZXBlYXRDb2x1bW5z
ID0gY2xhbXBBdXRvUmVwZWF0VHJhY2tzKEZvckNvbHVtbnMsIGF1dG9SZXBlYXRDb2x1bW5zKTsK
IApAQCAtNjcwLDEwICs3MDQsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQo
R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtJiBhbGdvcml0aG0sIHN0ZDo6b3B0aQogICAgICAgICAg
ICAgY2hpbGQtPnNldE92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdo
dChzdGQ6Om51bGxvcHQpOwogCiAgICAgICAgIEdyaWRBcmVhIGFyZWEgPSBncmlkLmdyaWRJdGVt
QXJlYSgqY2hpbGQpOwotICAgICAgICBpZiAoIWFyZWEucm93cy5pc0luZGVmaW5pdGUoKSkKLSAg
ICAgICAgICAgIGFyZWEucm93cy50cmFuc2xhdGUoZ3JpZC5leHBsaWNpdEdyaWRTdGFydChGb3JS
b3dzKSk7Ci0gICAgICAgIGlmICghYXJlYS5jb2x1bW5zLmlzSW5kZWZpbml0ZSgpKQotICAgICAg
ICAgICAgYXJlYS5jb2x1bW5zLnRyYW5zbGF0ZShncmlkLmV4cGxpY2l0R3JpZFN0YXJ0KEZvckNv
bHVtbnMpKTsKKyAgICAgICAgZ3JpZC5jbGFtcEFuZFRyYW5zbGF0ZVRvSW1wbGljaXRHcmlkKGFy
ZWEpOwogCiAgICAgICAgIGlmIChhcmVhLnJvd3MuaXNJbmRlZmluaXRlKCkgfHwgYXJlYS5jb2x1
bW5zLmlzSW5kZWZpbml0ZSgpKSB7CiAgICAgICAgICAgICBncmlkLnNldEdyaWRJdGVtQXJlYSgq
Y2hpbGQsIGFyZWEpOwpAQCAtNjg1LDEzICs3MTYsMTMgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFj
ZUl0ZW1zT25HcmlkKEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSYgYWxnb3JpdGhtLCBzdGQ6Om9w
dGkKICAgICAgICAgICAgICAgICBzcGVjaWZpZWRNYWpvckF4aXNBdXRvR3JpZEl0ZW1zLmFwcGVu
ZChjaGlsZCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBncmlk
Lmluc2VydCgqY2hpbGQsIHsgYXJlYS5yb3dzLCBhcmVhLmNvbHVtbnMgfSk7CisgICAgICAgIGlu
c2VydEludG9HcmlkKGdyaWQsICpjaGlsZCwgeyBhcmVhLnJvd3MsIGFyZWEuY29sdW1ucyB9KTsK
ICAgICB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGlmIChncmlkLmhhc0dyaWRJdGVtcygp
KSB7Ci0gICAgICAgIEFTU0VSVChncmlkLm51bVRyYWNrcyhGb3JSb3dzKSA+PSBHcmlkUG9zaXRp
b25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KHN0eWxlKCksIGdyaWQuYXV0b1JlcGVh
dFRyYWNrcyhGb3JSb3dzKSkpOwotICAgICAgICBBU1NFUlQoZ3JpZC5udW1UcmFja3MoRm9yQ29s
dW1ucykgPj0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudChz
dHlsZSgpLCBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9yQ29sdW1ucykpKTsKKyAgICAgICAgQVNT
RVJUKGdyaWQubnVtVHJhY2tzKEZvclJvd3MpID49IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhw
bGljaXRHcmlkUm93Q291bnQoKnRoaXMpKTsKKyAgICAgICAgQVNTRVJUKGdyaWQubnVtVHJhY2tz
KEZvckNvbHVtbnMpID49IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1u
Q291bnQoKnRoaXMpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtNzQ1LDMzICs3NzYsMzYgQEAgdm9p
ZCBSZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoR3JpZCYg
Z3JpZCkgY29uc3QKICAgICBPcmRlckl0ZXJhdG9yUG9wdWxhdG9yIHBvcHVsYXRvcihncmlkLm9y
ZGVySXRlcmF0b3IoKSk7CiAgICAgdW5zaWduZWQgZXhwbGljaXRSb3dTdGFydCA9IDA7CiAgICAg
dW5zaWduZWQgZXhwbGljaXRDb2x1bW5TdGFydCA9IDA7Ci0gICAgdW5zaWduZWQgYXV0b1JlcGVh
dFJvd3MgPSBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9yUm93cyk7Ci0gICAgdW5zaWduZWQgYXV0
b1JlcGVhdENvbHVtbnMgPSBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9yQ29sdW1ucyk7Ci0gICAg
dW5zaWduZWQgbWF4aW11bVJvd0luZGV4ID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNp
dEdyaWRSb3dDb3VudChzdHlsZSgpLCBhdXRvUmVwZWF0Um93cyk7Ci0gICAgdW5zaWduZWQgbWF4
aW11bUNvbHVtbkluZGV4ID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1
bW5Db3VudChzdHlsZSgpLCBhdXRvUmVwZWF0Q29sdW1ucyk7CisgICAgdW5zaWduZWQgbWF4aW11
bVJvd0luZGV4ID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudCgq
dGhpcyk7CisgICAgdW5zaWduZWQgbWF4aW11bUNvbHVtbkluZGV4ID0gR3JpZFBvc2l0aW9uc1Jl
c29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudCgqdGhpcyk7CiAKICAgICBmb3IgKFJlbmRl
ckJveCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0
U2libGluZ0JveCgpKSB7CiAgICAgICAgIGlmICghcG9wdWxhdG9yLmNvbGxlY3RDaGlsZCgqY2hp
bGQpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBHcmlkU3BhbiBy
b3dQb3NpdGlvbnMgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25z
RnJvbVN0eWxlKHN0eWxlKCksICpjaGlsZCwgRm9yUm93cywgYXV0b1JlcGVhdFJvd3MpOwotICAg
ICAgICBpZiAoIXJvd1Bvc2l0aW9ucy5pc0luZGVmaW5pdGUoKSkgewotICAgICAgICAgICAgZXhw
bGljaXRSb3dTdGFydCA9IHN0ZDo6bWF4PGludD4oZXhwbGljaXRSb3dTdGFydCwgLXJvd1Bvc2l0
aW9ucy51bnRyYW5zbGF0ZWRTdGFydExpbmUoKSk7Ci0gICAgICAgICAgICBtYXhpbXVtUm93SW5k
ZXggPSBzdGQ6Om1heDxpbnQ+KG1heGltdW1Sb3dJbmRleCwgcm93UG9zaXRpb25zLnVudHJhbnNs
YXRlZEVuZExpbmUoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBHcm93IHRo
ZSBncmlkIGZvciBpdGVtcyB3aXRoIGEgZGVmaW5pdGUgcm93IHNwYW4sIGdldHRpbmcgdGhlIGxh
cmdlc3Qgc3VjaCBzcGFuLgotICAgICAgICAgICAgdW5zaWduZWQgc3BhblNpemUgPSBHcmlkUG9z
aXRpb25zUmVzb2x2ZXI6OnNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oKmNoaWxkLCBGb3JSb3dz
KTsKLSAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0ZDo6bWF4KG1heGltdW1Sb3dJbmRl
eCwgc3BhblNpemUpOworICAgICAgICBHcmlkU3BhbiByb3dQb3NpdGlvbnMgPSBHcmlkUG9zaXRp
b25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKCpjaGlsZCwgRm9yUm93
cyk7CisgICAgICAgIGlmICghaXNTdWJncmlkUm93cygpKSB7CisgICAgICAgICAgICBpZiAoIXJv
d1Bvc2l0aW9ucy5pc0luZGVmaW5pdGUoKSkgeworICAgICAgICAgICAgICAgIGV4cGxpY2l0Um93
U3RhcnQgPSBzdGQ6Om1heDxpbnQ+KGV4cGxpY2l0Um93U3RhcnQsIC1yb3dQb3NpdGlvbnMudW50
cmFuc2xhdGVkU3RhcnRMaW5lKCkpOworICAgICAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9
IHN0ZDo6bWF4PGludD4obWF4aW11bVJvd0luZGV4LCByb3dQb3NpdGlvbnMudW50cmFuc2xhdGVk
RW5kTGluZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gR3Jv
dyB0aGUgZ3JpZCBmb3IgaXRlbXMgd2l0aCBhIGRlZmluaXRlIHJvdyBzcGFuLCBnZXR0aW5nIHRo
ZSBsYXJnZXN0IHN1Y2ggc3Bhbi4KKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBzcGFuU2l6ZSA9
IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbSgqY2hpbGQs
IEZvclJvd3MpOworICAgICAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0ZDo6bWF4KG1h
eGltdW1Sb3dJbmRleCwgc3BhblNpemUpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAg
ICAgICAgR3JpZFNwYW4gY29sdW1uUG9zaXRpb25zID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpy
ZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShzdHlsZSgpLCAqY2hpbGQsIEZvckNvbHVtbnMs
IGF1dG9SZXBlYXRDb2x1bW5zKTsKLSAgICAgICAgaWYgKCFjb2x1bW5Qb3NpdGlvbnMuaXNJbmRl
ZmluaXRlKCkpIHsKLSAgICAgICAgICAgIGV4cGxpY2l0Q29sdW1uU3RhcnQgPSBzdGQ6Om1heDxp
bnQ+KGV4cGxpY2l0Q29sdW1uU3RhcnQsIC1jb2x1bW5Qb3NpdGlvbnMudW50cmFuc2xhdGVkU3Rh
cnRMaW5lKCkpOwotICAgICAgICAgICAgbWF4aW11bUNvbHVtbkluZGV4ID0gc3RkOjptYXg8aW50
PihtYXhpbXVtQ29sdW1uSW5kZXgsIGNvbHVtblBvc2l0aW9ucy51bnRyYW5zbGF0ZWRFbmRMaW5l
KCkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gR3JvdyB0aGUgZ3JpZCBmb3Ig
aXRlbXMgd2l0aCBhIGRlZmluaXRlIGNvbHVtbiBzcGFuLCBnZXR0aW5nIHRoZSBsYXJnZXN0IHN1
Y2ggc3Bhbi4KLSAgICAgICAgICAgIHVuc2lnbmVkIHNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jl
c29sdmVyOjpzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKCpjaGlsZCwgRm9yQ29sdW1ucyk7Ci0g
ICAgICAgICAgICBtYXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1heChtYXhpbXVtQ29sdW1uSW5k
ZXgsIHNwYW5TaXplKTsKKyAgICAgICAgR3JpZFNwYW4gY29sdW1uUG9zaXRpb25zID0gR3JpZFBv
c2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZSgqY2hpbGQsIEZv
ckNvbHVtbnMpOworCisgICAgICAgIGlmICghaXNTdWJncmlkQ29sdW1ucygpKSB7CisgICAgICAg
ICAgICBpZiAoIWNvbHVtblBvc2l0aW9ucy5pc0luZGVmaW5pdGUoKSkgeworICAgICAgICAgICAg
ICAgIGV4cGxpY2l0Q29sdW1uU3RhcnQgPSBzdGQ6Om1heDxpbnQ+KGV4cGxpY2l0Q29sdW1uU3Rh
cnQsIC1jb2x1bW5Qb3NpdGlvbnMudW50cmFuc2xhdGVkU3RhcnRMaW5lKCkpOworICAgICAgICAg
ICAgICAgIG1heGltdW1Db2x1bW5JbmRleCA9IHN0ZDo6bWF4PGludD4obWF4aW11bUNvbHVtbklu
ZGV4LCBjb2x1bW5Qb3NpdGlvbnMudW50cmFuc2xhdGVkRW5kTGluZSgpKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gR3JvdyB0aGUgZ3JpZCBmb3IgaXRlbXMgd2l0
aCBhIGRlZmluaXRlIGNvbHVtbiBzcGFuLCBnZXR0aW5nIHRoZSBsYXJnZXN0IHN1Y2ggc3Bhbi4K
KyAgICAgICAgICAgICAgICB1bnNpZ25lZCBzcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNvbHZl
cjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbSgqY2hpbGQsIEZvckNvbHVtbnMpOworICAgICAg
ICAgICAgICAgIG1heGltdW1Db2x1bW5JbmRleCA9IHN0ZDo6bWF4KG1heGltdW1Db2x1bW5JbmRl
eCwgc3BhblNpemUpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgZ3JpZC5z
ZXRHcmlkSXRlbUFyZWEoKmNoaWxkLCB7IHJvd1Bvc2l0aW9ucywgY29sdW1uUG9zaXRpb25zIH0p
OwpAQCAtNzc5LDYgKzgxMyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdy
aWRBbmRPcmRlckl0ZXJhdG9yKEdyaWQmIGdyaWQpIGNvbnN0CiAKICAgICBncmlkLnNldEV4cGxp
Y2l0R3JpZFN0YXJ0KGV4cGxpY2l0Um93U3RhcnQsIGV4cGxpY2l0Q29sdW1uU3RhcnQpOwogICAg
IGdyaWQuZW5zdXJlR3JpZFNpemUobWF4aW11bVJvd0luZGV4ICsgZXhwbGljaXRSb3dTdGFydCwg
bWF4aW11bUNvbHVtbkluZGV4ICsgZXhwbGljaXRDb2x1bW5TdGFydCk7CisgICAgZ3JpZC5zZXRD
bGFtcGluZ0ZvclN1YmdyaWQoaXNTdWJncmlkUm93cygpID8gbWF4aW11bVJvd0luZGV4IDogMCwg
aXNTdWJncmlkQ29sdW1ucygpID8gbWF4aW11bUNvbHVtbkluZGV4IDogMCk7CiB9CiAKIHN0ZDo6
dW5pcXVlX3B0cjxHcmlkQXJlYT4gUmVuZGVyR3JpZDo6Y3JlYXRlRW1wdHlHcmlkQXJlYUF0U3Bl
Y2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQoR3JpZCYgZ3JpZCwgY29uc3QgUmVuZGVyQm94JiBn
cmlkSXRlbSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIHNwZWNpZmllZERpcmVjdGlvbiwgY29u
c3QgR3JpZFNwYW4mIHNwZWNpZmllZFBvc2l0aW9ucykgY29uc3QKQEAgLTgxMiw3ICs4NDcsNyBA
QCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoR3Jp
ZCYgZ3JpZCwgY29uc3QgVmVjdG9yPFJlbgogICAgICAgICBpZiAoIWVtcHR5R3JpZEFyZWEpCiAg
ICAgICAgICAgICBlbXB0eUdyaWRBcmVhID0gY3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVk
UG9zaXRpb25zT3V0c2lkZUdyaWQoZ3JpZCwgKmF1dG9HcmlkSXRlbSwgYXV0b1BsYWNlbWVudE1h
am9yQXhpc0RpcmVjdGlvbigpLCBtYWpvckF4aXNQb3NpdGlvbnMpOwogCi0gICAgICAgIGdyaWQu
aW5zZXJ0KCphdXRvR3JpZEl0ZW0sICplbXB0eUdyaWRBcmVhKTsKKyAgICAgICAgKmVtcHR5R3Jp
ZEFyZWEgPSBpbnNlcnRJbnRvR3JpZChncmlkLCAqYXV0b0dyaWRJdGVtLCAqZW1wdHlHcmlkQXJl
YSk7CiAKICAgICAgICAgaWYgKCFpc0dyaWRBdXRvRmxvd0RlbnNlKQogICAgICAgICAgICAgbWlu
b3JBeGlzQ3Vyc29ycy5zZXQobWFqb3JBeGlzSW5pdGlhbFBvc2l0aW9uLCBpc0ZvckNvbHVtbnMg
PyBlbXB0eUdyaWRBcmVhLT5yb3dzLnN0YXJ0TGluZSgpIDogZW1wdHlHcmlkQXJlYS0+Y29sdW1u
cy5zdGFydExpbmUoKSk7CkBAIC04ODQsNyArOTE5LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFj
ZUF1dG9NYWpvckF4aXNJdGVtT25HcmlkKEdyaWQmIGdyaWQsIFJlbmRlckJveCYgZ3JpZEl0ZW0s
IEEKICAgICAgICAgICAgIGVtcHR5R3JpZEFyZWEgPSBjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVj
aWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChncmlkLCBncmlkSXRlbSwgYXV0b1BsYWNlbWVudE1p
bm9yQXhpc0RpcmVjdGlvbigpLCBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4o
MCwgbWlub3JBeGlzU3BhblNpemUpKTsKICAgICB9CiAKLSAgICBncmlkLmluc2VydChncmlkSXRl
bSwgKmVtcHR5R3JpZEFyZWEpOworICAgICplbXB0eUdyaWRBcmVhID0gaW5zZXJ0SW50b0dyaWQo
Z3JpZCwgZ3JpZEl0ZW0sICplbXB0eUdyaWRBcmVhKTsKICAgICBhdXRvUGxhY2VtZW50Q3Vyc29y
LmZpcnN0ID0gZW1wdHlHcmlkQXJlYS0+cm93cy5zdGFydExpbmUoKTsKICAgICBhdXRvUGxhY2Vt
ZW50Q3Vyc29yLnNlY29uZCA9IGVtcHR5R3JpZEFyZWEtPmNvbHVtbnMuc3RhcnRMaW5lKCk7CiB9
CkBAIC05OTcsMTMgKzEwMzIsMTUgQEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRHcmlkSXRlbXMo
KQogICAgIHBvcHVsYXRlR3JpZFBvc2l0aW9uc0ZvckRpcmVjdGlvbihGb3JSb3dzKTsKIAogICAg
IGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPm5leHRTaWJsaW5nQm94KCkpIHsKLSAgICAgICAgCiAgICAgICAgIGlmIChtX2dyaWQu
b3JkZXJJdGVyYXRvcigpLnNob3VsZFNraXBDaGlsZCgqY2hpbGQpKSB7CiAgICAgICAgICAgICBp
ZiAoY2hpbGQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgICAgIHByZXBh
cmVDaGlsZEZvclBvc2l0aW9uZWRMYXlvdXQoKmNoaWxkKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGlzPFJlbmRlckdyaWQ+KGNoaWxkKSAmJiAoZG93
bmNhc3Q8UmVuZGVyR3JpZD4oY2hpbGQpLT5pc1N1YmdyaWRDb2x1bW5zKCkgfHwgZG93bmNhc3Q8
UmVuZGVyR3JpZD4oY2hpbGQpLT5pc1N1YmdyaWRSb3dzKCkpKQorICAgICAgICAgICAgY2hpbGQt
PnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CisKICAgICAgICAgLy8gU2V0dGluZyB0aGUg
ZGVmaW5pdGUgZ3JpZCBhcmVhJ3Mgc2l6ZXMuIEl0IG1heSBpbXBseSB0aGF0IHRoZQogICAgICAg
ICAvLyBpdGVtIG11c3QgcGVyZm9ybSBhIGxheW91dCBpZiBpdHMgYXJlYSBkaWZmZXJzIGZyb20g
dGhlIG9uZQogICAgICAgICAvLyB1c2VkIGR1cmluZyB0aGUgdHJhY2sgc2l6aW5nIGFsZ29yaXRo
bS4KQEAgLTExMTcsNiArMTE1NCw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cG9wdWxhdGVHcmlkUG9z
aXRpb25zRm9yRGlyZWN0aW9uKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlCiAgICAgICAg
IC8vIGNvbXB1dGUgdGhlIGdhcCBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSB0cmFja3Mgd2l0aG91
dCBleGFtaW5pbmcgdGhlIHN1cnJvdW5kaW5nIG9uZXMuCiAgICAgICAgIExheW91dFVuaXQgZ2Fw
ID0gIWhhc0NvbGxhcHNlZFRyYWNrcyA/IGdyaWRHYXAoZGlyZWN0aW9uKSA6IDBfbHU7CiAgICAg
ICAgIHVuc2lnbmVkIG5leHRUb0xhc3RMaW5lID0gbnVtYmVyT2ZMaW5lcyAtIDI7CisKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5leHRUb0xhc3RMaW5lOyArK2kpCiAgICAgICAg
ICAgICBwb3NpdGlvbnNbaSArIDFdID0gcG9zaXRpb25zW2ldICsgb2Zmc2V0LmRpc3RyaWJ1dGlv
bk9mZnNldCArIHRyYWNrc1tpXS5iYXNlU2l6ZSgpICsgZ2FwOwogICAgICAgICBwb3NpdGlvbnNb
bGFzdExpbmVdID0gcG9zaXRpb25zW25leHRUb0xhc3RMaW5lXSArIHRyYWNrc1tuZXh0VG9MYXN0
TGluZV0uYmFzZVNpemUoKTsKQEAgLTE2MTAsMjMgKzE2NDgsNzEgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJHcmlkOjpyZXNvbHZlQXV0b0VuZEdyaWRQb3NpdGlvbihHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWMKICAgICByZXR1cm4gY2xpZW50TG9naWNhbFdpZHRoKCk7CiB9CiAKLUxheW91dFVu
aXQgUmVuZGVyR3JpZDo6Z3JpZEFyZWFCcmVhZHRoRm9yT3V0T2ZGbG93Q2hpbGQoY29uc3QgUmVu
ZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK2Jvb2wg
UmVuZGVyR3JpZDo6aXNTdWJncmlkKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24p
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGNoaWxkLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKLSAg
ICBib29sIGlzUm93QXhpcyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zOwotICAgIEdyaWRTcGFu
IHNwYW4gPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0
eWxlKHN0eWxlKCksIGNoaWxkLCBkaXJlY3Rpb24sIGF1dG9SZXBlYXRDb3VudEZvckRpcmVjdGlv
bihkaXJlY3Rpb24pKTsKLSAgICBpZiAoc3Bhbi5pc0luZGVmaW5pdGUoKSkKLSAgICAgICAgcmV0
dXJuIGlzUm93QXhpcyA/IGNsaWVudExvZ2ljYWxXaWR0aCgpIDogY2xpZW50TG9naWNhbEhlaWdo
dCgpOworICAgIGlmICghbWF5QmVTdWJncmlkRXhjbHVkaW5nQWJzUG9zKGRpcmVjdGlvbikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyR3JpZD4ocGFy
ZW50KCkpLT5ncmlkU3BhbkNvdmVyc1JlYWxUcmFja3MoKnRoaXMsIGRpcmVjdGlvbik7Cit9CisK
K2Jvb2wgUmVuZGVyR3JpZDo6aXNTdWJncmlkUm93cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlz
U3ViZ3JpZChGb3JSb3dzKTsKK30KKworYm9vbCBSZW5kZXJHcmlkOjppc1N1YmdyaWRDb2x1bW5z
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNTdWJncmlkKEZvckNvbHVtbnMpOworfQorCitib29s
IFJlbmRlckdyaWQ6OmlzU3ViZ3JpZEluUGFyZW50RGlyZWN0aW9uKEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiBwYXJlbnREaXJlY3Rpb24pIGNvbnN0Cit7CisgICAgR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uIGRpcmVjdGlvbiA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZsb3dBd2FyZURpcmVjdGlv
bkZvckNoaWxkKCp0aGlzLCAqcGFyZW50KCksIHBhcmVudERpcmVjdGlvbik7CisgICAgcmV0dXJu
IGlzU3ViZ3JpZChkaXJlY3Rpb24pOworfQorCitib29sIFJlbmRlckdyaWQ6Om1heUJlU3ViZ3Jp
ZEV4Y2x1ZGluZ0Fic1BvcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25z
dAoreworICAgIC8vIFNob3VsZCBleGNsdWRlIGNhc2VzIHdoZXJlIHdlIGVzdGFibGlzaCBhbiBJ
RkMsIGxpa2UgY29udGFpbiBsYXlvdXQuCisgICAgaWYgKGlzRXhjbHVkZWRGcm9tTm9ybWFsTGF5
b3V0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZGlyZWN0aW9uID09IEZvckNv
bHVtbnMgPyAhc3R5bGUoKS5ncmlkU3ViZ3JpZENvbHVtbnMoKSA6ICFzdHlsZSgpLmdyaWRTdWJn
cmlkUm93cygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFpczxSZW5kZXJHcmlk
PihwYXJlbnQoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBSZW5kZXJHcmlkOjpncmlkU3BhbkNvdmVyc1JlYWxUcmFja3MoY29uc3QgUmVuZGVy
Qm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK3sK
KyAgICAvLyBPbmx5IG91dCBvZiBmbG93IHBvc2l0aW9uZWQgaXRlbXMgY2FuIHNwYW4gdG8gdGhl
IHNwZWNpYWwgbGluZSB0aGF0IGNvdmVycworICAgIC8vIHRoZSBwYWRkaW5nIGFyZWEuCisgICAg
aWYgKCFjaGlsZC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICB1bnNpZ25lZCBleHBsaWNpdFN0YXJ0ID0gbV9ncmlkLmV4cGxpY2l0R3JpZFN0YXJ0
KGRpcmVjdGlvbik7Ci0gICAgaW50IHN0YXJ0TGluZSA9IHNwYW4udW50cmFuc2xhdGVkU3RhcnRM
aW5lKCkgKyBleHBsaWNpdFN0YXJ0OwotICAgIGludCBlbmRMaW5lID0gc3Bhbi51bnRyYW5zbGF0
ZWRFbmRMaW5lKCkgKyBleHBsaWNpdFN0YXJ0OwogICAgIGludCBsYXN0TGluZSA9IG51bVRyYWNr
cyhkaXJlY3Rpb24sIG1fZ3JpZCk7Ci0gICAgR3JpZFBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBk
aXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNoaWxkLnN0eWxlKCkuZ3JpZEl0ZW1Db2x1bW5TdGFy
dCgpIDogY2hpbGQuc3R5bGUoKS5ncmlkSXRlbVJvd1N0YXJ0KCk7Ci0gICAgR3JpZFBvc2l0aW9u
IGVuZFBvc2l0aW9uID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjaGlsZC5zdHlsZSgpLmdy
aWRJdGVtQ29sdW1uRW5kKCkgOiBjaGlsZC5zdHlsZSgpLmdyaWRJdGVtUm93RW5kKCk7CisgICAg
aW50IHN0YXJ0TGluZSwgZW5kTGluZTsKKyAgICBib29sIHN0YXJ0SXNBdXRvLCBlbmRJc0F1dG87
CisgICAgaWYgKCFjb21wdXRlR3JpZFNwYW5Gb3JPdXRPZkZsb3dDaGlsZChjaGlsZCwgZGlyZWN0
aW9uLCBzdGFydExpbmUsIHN0YXJ0SXNBdXRvLCBlbmRMaW5lLCBlbmRJc0F1dG8pKQorICAgICAg
ICByZXR1cm4gbGFzdExpbmUgPiAwOworCisgICAgLy8gSWYgdGhlIHJlc3VsdGluZyBzcGFuIGNv
dmVycyBvbmx5IHRoZSBwYWRkaW5nIGFyZWEsIHRoZW4gaXQncyBub3QgYSByZWFsCisgICAgLy8g
dHJhY2sgdGhhdCBjb3VsZCBiZSB1c2VkIGZvciBhIHN1YmdyaWQuCisgICAgaWYgKHN0YXJ0SXNB
dXRvICYmICFlbmRMaW5lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGVuZElzQXV0
byAmJiBzdGFydExpbmUgPT0gbGFzdExpbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KIAotICAgIGJvb2wgc3RhcnRJc0F1dG8gPSBzdGFydFBvc2l0aW9uLmlz
QXV0bygpIHx8IHN0YXJ0TGluZSA8IDAgfHwgc3RhcnRMaW5lID4gbGFzdExpbmU7Ci0gICAgYm9v
bCBlbmRJc0F1dG8gPSBlbmRQb3NpdGlvbi5pc0F1dG8oKSB8fCBlbmRMaW5lIDwgMCB8fCBlbmRM
aW5lID4gbGFzdExpbmU7CitMYXlvdXRVbml0IFJlbmRlckdyaWQ6OmdyaWRBcmVhQnJlYWR0aEZv
ck91dE9mRmxvd0NoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgaW50IGxhc3RMaW5lID0gbnVtVHJhY2tzKGRpcmVj
dGlvbiwgbV9ncmlkKTsKKyAgICBib29sIGlzUm93QXhpcyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1
bW5zOworICAgIGludCBzdGFydExpbmUsIGVuZExpbmU7CisgICAgYm9vbCBzdGFydElzQXV0bywg
ZW5kSXNBdXRvOworICAgIGlmICghY29tcHV0ZUdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoY2hp
bGQsIGRpcmVjdGlvbiwgc3RhcnRMaW5lLCBzdGFydElzQXV0bywgZW5kTGluZSwgZW5kSXNBdXRv
KSkKKyAgICAgICAgcmV0dXJuIGlzUm93QXhpcyA/IGNsaWVudExvZ2ljYWxXaWR0aCgpIDogY2xp
ZW50TG9naWNhbEhlaWdodCgpOwogCiAgICAgaWYgKHN0YXJ0SXNBdXRvICYmIGVuZElzQXV0bykK
ICAgICAgICAgcmV0dXJuIGlzUm93QXhpcyA/IGNsaWVudExvZ2ljYWxXaWR0aCgpIDogY2xpZW50
TG9naWNhbEhlaWdodCgpOwpAQCAtMTc5Miw2ICsxODc4LDExIEBAIHZvaWQgUmVuZGVyR3JpZDo6
Y29tcHV0ZUNvbnRlbnRQb3NpdGlvbkFuZERpc3RyaWJ1dGlvbk9mZnNldChHcmlkVHJhY2tTaXpp
bmdEaXJlCiAgICAgYm9vbCBpc1Jvd0F4aXMgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1uczsKICAg
ICBhdXRvJiBvZmZzZXQgPQogICAgICAgICBpc1Jvd0F4aXMgPyBtX29mZnNldEJldHdlZW5Db2x1
bW5zIDogbV9vZmZzZXRCZXR3ZWVuUm93czsKKyAgICBpZiAoaXNSb3dBeGlzID8gaXNTdWJncmlk
Q29sdW1ucygpIDogaXNTdWJncmlkUm93cygpKSB7CisgICAgICAgIG9mZnNldC5wb3NpdGlvbk9m
ZnNldCA9IDBfbHU7CisgICAgICAgIG9mZnNldC5kaXN0cmlidXRpb25PZmZzZXQgPSAwX2x1Owor
ICAgICAgICByZXR1cm47CisgICAgfQogICAgIGF1dG8gY29udGVudEFsaWdubWVudERhdGEgPSBj
b250ZW50QWxpZ25tZW50KGRpcmVjdGlvbik7CiAgICAgYXV0byBwb3NpdGlvbiA9IGNvbnRlbnRB
bGlnbm1lbnREYXRhLnBvc2l0aW9uKCk7CiAgICAgLy8gSWYgPGNvbnRlbnQtZGlzdHJpYnV0aW9u
PiB2YWx1ZSBjYW4ndCBiZSBhcHBsaWVkLCAncG9zaXRpb24nIHdpbGwgYmVjb21lIHRoZSBhc3Nv
Y2lhdGVkCkBAIC0xOTIwLDcgKzIwMTEsNyBAQCB1bnNpZ25lZCBSZW5kZXJHcmlkOjpudW1UcmFj
a3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgR3JpZCYgZwogICAg
ICAgICByZXR1cm4gZ3JpZC5udW1UcmFja3MoRm9yUm93cyk7CiAKICAgICAvLyBGSVhNRTogVGhp
cyBzdGlsbCByZXF1aXJlcyBrbm93bGVkZ2UgYWJvdXQgbV9ncmlkIGludGVybmFscy4KLSAgICBy
ZXR1cm4gZ3JpZC5udW1UcmFja3MoRm9yUm93cykgPyBncmlkLm51bVRyYWNrcyhGb3JDb2x1bW5z
KSA6IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQoc3R5bGUo
KSwgZ3JpZC5hdXRvUmVwZWF0VHJhY2tzKEZvckNvbHVtbnMpKTsKKyAgICByZXR1cm4gZ3JpZC5u
dW1UcmFja3MoRm9yUm93cykgPyBncmlkLm51bVRyYWNrcyhGb3JDb2x1bW5zKSA6IEdyaWRQb3Np
dGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQoKnRoaXMpOwogfQogCiB2b2lk
IFJlbmRlckdyaWQ6OnBhaW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQcmlu
dFJlY3QpCkBAIC0xOTc3LDQgKzIwNjgsNjMgQEAgYm9vbCBSZW5kZXJHcmlkOjpoYXNBdXRvU2l6
ZUluUm93QXhpcyhjb25zdCBSZW5kZXJCb3gmIGNoaWxkKSBjb25zdAogICAgIHJldHVybiBpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQuc3R5bGUoKS53aWR0aCgpLmlzQXV0bygpIDog
Y2hpbGQuc3R5bGUoKS5oZWlnaHQoKS5pc0F1dG8oKTsKIH0KIAorYm9vbCBSZW5kZXJHcmlkOjpj
b21wdXRlR3JpZFNwYW5Gb3JPdXRPZkZsb3dDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBpbnQmIHN0YXJ0TGluZSwgYm9vbCYg
c3RhcnRJc0F1dG8sIGludCYgZW5kTGluZSwgYm9vbCYgZW5kSXNBdXRvKSBjb25zdAoreworICAg
IEFTU0VSVChjaGlsZC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7CisgICAgaW50IGxhc3RMaW5l
ID0gbnVtVHJhY2tzKGRpcmVjdGlvbiwgbV9ncmlkKTsKKyAgICBHcmlkU3BhbiBzcGFuID0gR3Jp
ZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjaGlsZCwg
ZGlyZWN0aW9uKTsKKyAgICBpZiAoc3Bhbi5pc0luZGVmaW5pdGUoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgdW5zaWduZWQgZXhwbGljaXRTdGFydCA9IG1fZ3JpZC5leHBsaWNpdEdy
aWRTdGFydChkaXJlY3Rpb24pOworICAgIHN0YXJ0TGluZSA9IHNwYW4udW50cmFuc2xhdGVkU3Rh
cnRMaW5lKCkgKyBleHBsaWNpdFN0YXJ0OworICAgIGVuZExpbmUgPSBzcGFuLnVudHJhbnNsYXRl
ZEVuZExpbmUoKSArIGV4cGxpY2l0U3RhcnQ7CisKKyAgICBHcmlkUG9zaXRpb24gc3RhcnRQb3Np
dGlvbiA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY2hpbGQuc3R5bGUoKS5ncmlkSXRlbUNv
bHVtblN0YXJ0KCkgOiBjaGlsZC5zdHlsZSgpLmdyaWRJdGVtUm93U3RhcnQoKTsKKyAgICBHcmlk
UG9zaXRpb24gZW5kUG9zaXRpb24gPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNoaWxkLnN0
eWxlKCkuZ3JpZEl0ZW1Db2x1bW5FbmQoKSA6IGNoaWxkLnN0eWxlKCkuZ3JpZEl0ZW1Sb3dFbmQo
KTsKKworICAgIHN0YXJ0SXNBdXRvID0gc3RhcnRQb3NpdGlvbi5pc0F1dG8oKSB8fCBzdGFydExp
bmUgPCAwIHx8IHN0YXJ0TGluZSA+IGxhc3RMaW5lOworICAgIGVuZElzQXV0byA9IGVuZFBvc2l0
aW9uLmlzQXV0bygpIHx8IGVuZExpbmUgPCAwIHx8IGVuZExpbmUgPiBsYXN0TGluZTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworR3JpZFNwYW4gUmVuZGVyR3JpZDo6Z3JpZFNwYW5Gb3JPdXRPZkZs
b3dDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24g
ZGlyZWN0aW9uKSBjb25zdAoreworICAgIGludCBsYXN0TGluZSA9IG51bVRyYWNrcyhkaXJlY3Rp
b24sIG1fZ3JpZCk7CisgICAgaW50IHN0YXJ0TGluZSwgZW5kTGluZTsKKyAgICBib29sIHN0YXJ0
SXNBdXRvLCBlbmRJc0F1dG87CisgICAgaWYgKCFjb21wdXRlR3JpZFNwYW5Gb3JPdXRPZkZsb3dD
aGlsZChjaGlsZCwgZGlyZWN0aW9uLCBzdGFydExpbmUsIHN0YXJ0SXNBdXRvLCBlbmRMaW5lLCBl
bmRJc0F1dG8pKQorICAgICAgICByZXR1cm4gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdy
aWRTcGFuKDAsIGxhc3RMaW5lKTsKKyAgICByZXR1cm4gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZp
bml0ZUdyaWRTcGFuKHN0YXJ0SXNBdXRvID8gMCA6IHN0YXJ0TGluZSwgZW5kSXNBdXRvID8gbGFz
dExpbmUgOiBlbmRMaW5lKTsKK30KKworR3JpZFNwYW4gUmVuZGVyR3JpZDo6Z3JpZFNwYW5Gb3JD
aGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGly
ZWN0aW9uKSBjb25zdAoreworICAgIEFTU0VSVChpczxSZW5kZXJHcmlkPihjaGlsZC5wYXJlbnQo
KSkpOworCisgICAgUmVuZGVyR3JpZCogcmVuZGVyR3JpZCA9IGRvd25jYXN0PFJlbmRlckdyaWQ+
KGNoaWxkLnBhcmVudCgpKTsKKyAgICAvLyB8ZGlyZWN0aW9ufCBpcyBzcGVjaWZpZWQgcmVsYXRp
dmUgdG8gdGhpcyBncmlkLCBzd2l0Y2ggaXQgaWYgfGNoaWxkfCdzIGRpcmVjdCBwYXJlbnQgZ3Jp
ZAorICAgIC8vIGlzIHVzaW5nIGEgZGlmZmVyZW50IHdyaXRpbmcgbW9kZS4KKyAgICBkaXJlY3Rp
b24gPSBHcmlkTGF5b3V0RnVuY3Rpb25zOjpmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZCgqdGhp
cywgKnJlbmRlckdyaWQsIGRpcmVjdGlvbik7CisgICAgR3JpZFNwYW4gc3BhbiA9IGNoaWxkLmlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpID8gcmVuZGVyR3JpZC0+Z3JpZFNwYW5Gb3JPdXRPZkZsb3dD
aGlsZChjaGlsZCwgZGlyZWN0aW9uKSA6IHJlbmRlckdyaWQtPmN1cnJlbnRHcmlkKCkuZ3JpZEl0
ZW1TcGFuKGNoaWxkLCBkaXJlY3Rpb24pOworCisgICAgd2hpbGUgKHJlbmRlckdyaWQgIT0gdGhp
cykgeworICAgICAgICBBU1NFUlQoaXM8UmVuZGVyR3JpZD4ocmVuZGVyR3JpZC0+cGFyZW50KCkp
KTsKKyAgICAgICAgUmVuZGVyR3JpZCogcGFyZW50ID0gZG93bmNhc3Q8UmVuZGVyR3JpZD4ocmVu
ZGVyR3JpZC0+cGFyZW50KCkpOworCisgICAgICAgIGJvb2wgaXNTdWJncmlkID0gZGlyZWN0aW9u
ID09IEZvckNvbHVtbnMgPyByZW5kZXJHcmlkLT5pc1N1YmdyaWRDb2x1bW5zKCkgOiByZW5kZXJH
cmlkLT5pc1N1YmdyaWRSb3dzKCk7CisKKyAgICAgICAgZGlyZWN0aW9uID0gR3JpZExheW91dEZ1
bmN0aW9uczo6Zmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoKnBhcmVudCwgKnJlbmRlckdyaWQs
IGRpcmVjdGlvbik7CisKKyAgICAgICAgR3JpZFNwYW4gcGFyZW50U3BhbiA9IHJlbmRlckdyaWQt
PmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpID8gcGFyZW50LT5ncmlkU3BhbkZvck91dE9mRmxvd0No
aWxkKCpyZW5kZXJHcmlkLCBkaXJlY3Rpb24pIDogIHBhcmVudC0+Y3VycmVudEdyaWQoKS5ncmlk
SXRlbVNwYW4oKnJlbmRlckdyaWQsIGRpcmVjdGlvbik7CisgICAgICAgIGlmIChpc1N1YmdyaWQp
CisgICAgICAgICAgICBzcGFuLnRyYW5zbGF0ZVRvKHBhcmVudFNwYW4sIEdyaWRMYXlvdXRGdW5j
dGlvbnM6OmlzU3ViZ3JpZFJldmVyc2VkRGlyZWN0aW9uKCpwYXJlbnQsIGRpcmVjdGlvbiwgKnJl
bmRlckdyaWQpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3BhbiA9IHBhcmVudFNwYW47
CisKKyAgICAgICAgcmVuZGVyR3JpZCA9IHBhcmVudDsKKyAgICB9CisgICAgcmV0dXJuIHNwYW47
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
R3JpZC5oCmluZGV4IGUyMzBiMTNkYThhMi4uYTMxMjk5NDA5NTRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTgyLDcgKzgyLDM1IEBAIHB1YmxpYzoKIAogICAgIFN0
eWxlQ29udGVudEFsaWdubWVudERhdGEgY29udGVudEFsaWdubWVudChHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24pIGNvbnN0OwogCisgICAgLy8gQ29tcHV0ZXMgdGhlIHNwYW4gcmVsYXRpdmUgdG8g
dGhpcyBSZW5kZXJHcmlkLCBldmVuIGlmIHRoZSBSZW5kZXJCb3ggaXMgYSBjaGlsZAorICAgIC8v
IG9mIGEgZGVzY2VuZGFudCBzdWJncmlkLgorICAgIEdyaWRTcGFuIGdyaWRTcGFuRm9yQ2hpbGQo
Y29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKKworICAg
IGJvb2wgaXNTdWJncmlkUm93cygpIGNvbnN0OworICAgIGJvb2wgaXNTdWJncmlkQ29sdW1ucygp
IGNvbnN0OworICAgIGJvb2wgaXNTdWJncmlkKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29u
c3Q7CisgICAgYm9vbCBpc1N1YmdyaWRJblBhcmVudERpcmVjdGlvbihHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24gcGFyZW50RGlyZWN0aW9uKSBjb25zdDsKKyAgICBib29sIG1heUJlU3ViZ3JpZEV4
Y2x1ZGluZ0Fic1BvcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OworCisgICAgY29u
c3QgR3JpZCYgY3VycmVudEdyaWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZ3Jp
ZDsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBudW1UcmFja3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uIGRpcmVjdGlvbikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBudW1UcmFja3MoZGly
ZWN0aW9uLCBtX2dyaWQpOworICAgIH0KKworICAgIHZvaWQgcGxhY2VJdGVtcygpOworCisgICAg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTcGFjZUZvckd1dHRlcnMoR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGdyaWRHYXAoR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGdyaWRHYXAoR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNp
emUpIGNvbnN0OworCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBHcmlkVHJhY2tTaXppbmdB
bGdvcml0aG07CisKICAgICBJdGVtUG9zaXRpb24gc2VsZkFsaWdubWVudE5vcm1hbEJlaGF2aW9y
KGNvbnN0IFJlbmRlckJveCogY2hpbGQgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNoaWxkKTsKQEAgLTk2LDEwICsxMjQsOSBAQCBwcml2YXRlOgogICAg
IGJvb2wgc2VsZkFsaWdubWVudENoYW5nZWRUb1N0cmV0Y2goR3JpZEF4aXMsIGNvbnN0IFJlbmRl
clN0eWxlJiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlLCBjb25zdCBSZW5k
ZXJCb3gmKSBjb25zdDsKICAgICBib29sIHNlbGZBbGlnbm1lbnRDaGFuZ2VkRnJvbVN0cmV0Y2go
R3JpZEF4aXMsIGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUm
IG5ld1N0eWxlLCBjb25zdCBSZW5kZXJCb3gmKSBjb25zdDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gYXZhaWxhYmxlU3BhY2VGb3JHdXR0ZXJzKEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbikgY29uc3Q7Ci0KICAgICBib29sIGV4cGxpY2l0R3JpZERpZFJlc2l6ZShjb25zdCBSZW5k
ZXJTdHlsZSYpIGNvbnN0OwogICAgIGJvb2wgbmFtZWRHcmlkTGluZXNEZWZpbml0aW9uRGlkQ2hh
bmdlKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CisgICAgYm9vbCBpbXBsaWNpdEdyaWRMaW5l
c0RlZmluaXRpb25EaWRDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIAogICAgIHVu
c2lnbmVkIGNvbXB1dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNpemUpIGNvbnN0OwogCkBA
IC0xNTAsOCArMTc3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExvZ2ljYWxQb3NpdGlvbkZv
ckNoaWxkKFJlbmRlckJveCYpIGNvbnN0OwogICAgIHZvaWQgc2V0TG9naWNhbE9mZnNldEZvckNo
aWxkKFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAgICAgTGF5
b3V0VW5pdCBsb2dpY2FsT2Zmc2V0Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKLSAgICBHcmlkQXJlYSBjYWNoZWRHcmlkQXJlYShjb25z
dCBSZW5kZXJCb3gmKSBjb25zdDsKLSAgICBHcmlkU3BhbiBjYWNoZWRHcmlkU3Bhbihjb25zdCBS
ZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwogCiAgICAgTGF5b3V0
VW5pdCBncmlkQXJlYUJyZWFkdGhGb3JDaGlsZEluY2x1ZGluZ0FsaWdubWVudE9mZnNldHMoY29u
c3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIApAQCAtMTc4
LDkgKzIwMyw2IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBjb2x1bW5BeGlzQmFzZWxpbmVP
ZmZzZXRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmKSBjb25zdDsKICAgICBMYXlvdXRVbml0IHJv
d0F4aXNCYXNlbGluZU9mZnNldEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYpIGNvbnN0OwogCi0g
ICAgTGF5b3V0VW5pdCBncmlkR2FwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7Ci0g
ICAgTGF5b3V0VW5pdCBncmlkR2FwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdDsKLQogICAgIHVuc2lnbmVkIG5v
bkNvbGxhcHNlZFRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwogICAgIHVu
c2lnbmVkIG51bVRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IEdyaWQmKSBj
b25zdDsKIApAQCAtMTkzLDYgKzIxNSwxMCBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFJlbmRl
ckJveCo+IGNvbXB1dGVBc3BlY3RSYXRpb0RlcGVuZGVudEFuZEJhc2VsaW5lSXRlbXMoKTsKIAor
ICAgIEdyaWRTcGFuIGdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoY29uc3QgUmVuZGVyQm94Jiwg
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKKyAgICBib29sIGNvbXB1dGVHcmlkU3Bh
bkZvck91dE9mRmxvd0NoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbiwgaW50JiwgYm9vbCYsIGludCYsIGJvb2wmKSBjb25zdDsKKyAgICBib29sIGdyaWRTcGFu
Q292ZXJzUmVhbFRyYWNrcyhjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24pIGNvbnN0OworCiAgICAgR3JpZCBtX2dyaWQ7CiAKICAgICBHcmlkVHJhY2tTaXppbmdBbGdv
cml0aG0gbV90cmFja1NpemluZ0FsZ29yaXRobTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0dyaWRBcmVhLmgKaW5kZXggYjdlYmQxZDk2MWRlLi5iYTI2ZDE3NzkyZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oCkBAIC02NSw3ICs2NSw3IEBAIHB1
YmxpYzoKIAogICAgIHVuc2lnbmVkIGludGVnZXJTcGFuKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IEFTU0VSVChpc1RyYW5zbGF0ZWREZWZpbml0ZSgpKTsKKyAgICAgICAgQVNTRVJUKGlzVHJhbnNs
YXRlZERlZmluaXRlKCkgfHwgbV90eXBlID09IFVudHJhbnNsYXRlZERlZmluaXRlKTsKICAgICAg
ICAgcmV0dXJuIG1fZW5kTGluZSAtIG1fc3RhcnRMaW5lOwogICAgIH0KIApAQCAtMTQxLDYgKzE0
MSw0MCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX2VuZExpbmUgPiAwKTsKICAgICB9CiAK
KyAgICAvLyBNb3ZlcyB0aGlzIHNwYW4gdG8gYmUgaW4gdGhlIHNhbWUgY29vcmRpbmF0ZSBzcGFj
ZSBhcyB8cGFyZW50fC4KKyAgICAvLyBJZiByZXZlcnNlIGlzIHNwZWNpZmllZCwgdGhlbiBzd2Fw
cyB0aGUgZGlyZWN0aW9uIHRvIGhhbmRsZSBSVEwvTFRSIGNoYW5nZXMuCisgICAgdm9pZCB0cmFu
c2xhdGVUbyhjb25zdCBHcmlkU3BhbiYgcGFyZW50LCBib29sIHJldmVyc2UpCisgICAgeworICAg
ICAgICBBU1NFUlQobV90eXBlID09IFRyYW5zbGF0ZWREZWZpbml0ZSk7CisgICAgICAgIEFTU0VS
VChwYXJlbnQubV90eXBlID09IFRyYW5zbGF0ZWREZWZpbml0ZSk7CisgICAgICAgIGlmIChyZXZl
cnNlKSB7CisgICAgICAgICAgICBpbnQgc3RhcnQgPSBtX3N0YXJ0TGluZTsKKyAgICAgICAgICAg
IG1fc3RhcnRMaW5lID0gcGFyZW50LmludGVnZXJTcGFuKCkgLSBtX2VuZExpbmUgKyBwYXJlbnQu
c3RhcnRMaW5lKCk7CisgICAgICAgICAgICBtX2VuZExpbmUgPSBwYXJlbnQuaW50ZWdlclNwYW4o
KSAtIHN0YXJ0ICsgcGFyZW50LnN0YXJ0TGluZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgbV9zdGFydExpbmUgKz0gcGFyZW50Lm1fc3RhcnRMaW5lOworICAgICAgICAgICAgbV9l
bmRMaW5lICs9IHBhcmVudC5tX3N0YXJ0TGluZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZv
aWQgY2xhbXAoaW50IG1heCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgIT0gSW5kZWZp
bml0ZSk7CisgICAgICAgIG1fc3RhcnRMaW5lID0gc3RkOjptYXgobV9zdGFydExpbmUsIDApOwor
ICAgICAgICBtX2VuZExpbmUgPSBzdGQ6Om1heChzdGQ6Om1pbihtX2VuZExpbmUsIG1heCksIDEp
OworICAgICAgICBpZiAobV9zdGFydExpbmUgPj0gbV9lbmRMaW5lKQorICAgICAgICAgICAgbV9z
dGFydExpbmUgPSBtX2VuZExpbmUgLSAxOworICAgIH0KKworICAgIHZvaWQgY2xhbXAoaW50IG1p
biwgaW50IG1heCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgIT0gSW5kZWZpbml0ZSk7
CisgICAgICAgIG1fc3RhcnRMaW5lID0gc3RkOjptYXgobV9zdGFydExpbmUsIG1pbik7CisgICAg
ICAgIG1fZW5kTGluZSA9IHN0ZDo6bWluKG1fZW5kTGluZSwgbWF4KTsKKyAgICAgICAgaWYgKG1f
c3RhcnRMaW5lID49IG1fZW5kTGluZSkKKyAgICAgICAgICAgIG1fc3RhcnRMaW5lID0gbV9lbmRM
aW5lOworICAgIH0KKwogcHJpdmF0ZToKIAogICAgIGVudW0gR3JpZFNwYW5UeXBlIHtVbnRyYW5z
bGF0ZWREZWZpbml0ZSwgVHJhbnNsYXRlZERlZmluaXRlLCBJbmRlZmluaXRlfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZl
ci5jcHAKaW5kZXggMzNjNzAzYzVmMDZmLi5mODY1ZmQwY2ZlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJHcmlkQXJlYS5oIgogI2luY2x1ZGUgIlJl
bmRlckJveC5oIgorI2luY2x1ZGUgIlJlbmRlckdyaWQuaCIKICNpbmNsdWRlIDxjc3RkbGliPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Nyw0MyArNTgsMTMwIEBAIHN0YXRpYyBjb25zdCBT
dHJpbmcgaW1wbGljaXROYW1lZEdyaWRMaW5lRm9yU2lkZShjb25zdCBTdHJpbmcmIGxpbmVOYW1l
LCBHcmlkUG9zCiAgICAgcmV0dXJuIGxpbmVOYW1lICsgKGlzU3RhcnRTaWRlKHNpZGUpID8gIi1z
dGFydCIgOiAiLWVuZCIpOwogfQogCi1OYW1lZExpbmVDb2xsZWN0aW9uOjpOYW1lZExpbmVDb2xs
ZWN0aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZWRMaW5lLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25l
ZCBsYXN0TGluZSwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KQotICAgIDogbV9sYXN0
TGluZShsYXN0TGluZSkKLSAgICAsIG1fYXV0b1JlcGVhdFRvdGFsVHJhY2tzKGF1dG9SZXBlYXRU
cmFja3NDb3VudCkKK3N0YXRpYyB1bnNpZ25lZCBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShjb25z
dCBSZW5kZXJHcmlkJiBncmlkQ29udGFpbmVyLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpCiB7Cisg
ICAgcmV0dXJuIGlzQ29sdW1uU2lkZShzaWRlKSA/IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhw
bGljaXRHcmlkQ29sdW1uQ291bnQoZ3JpZENvbnRhaW5lcikgOiBHcmlkUG9zaXRpb25zUmVzb2x2
ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KGdyaWRDb250YWluZXIpOworfQorCitzdGF0aWMgaW5s
aW5lIEdyaWRQb3NpdGlvblNpZGUgdHJhbnNwb3NlZFNpZGUoR3JpZFBvc2l0aW9uU2lkZSBzaWRl
KQoreworICAgIGlmIChzaWRlID09IENvbHVtblN0YXJ0U2lkZSkKKyAgICAgICAgcmV0dXJuIFJv
d1N0YXJ0U2lkZTsKKyAgICBpZiAoc2lkZSA9PSBDb2x1bW5FbmRTaWRlKQorICAgICAgICByZXR1
cm4gUm93RW5kU2lkZTsKKyAgICBpZiAoc2lkZSA9PSBSb3dTdGFydFNpZGUpCisgICAgICAgIHJl
dHVybiBDb2x1bW5TdGFydFNpZGU7CisgICAgcmV0dXJuIENvbHVtbkVuZFNpZGU7Cit9CisKK3N0
YXRpYyBpbnQgY2xhbXBlZEltcGxpY2l0TGluZUZvckFyZWEoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGludCBtaW4sIGludCBtYXgsIGJvb2wgaXNSb3dBeGlz
LCBib29sIGlzU3RhcnRTaWRlKQoreworICAgIGNvbnN0IE5hbWVkR3JpZEFyZWFNYXAmIGFyZWFz
ID0gc3R5bGUubmFtZWRHcmlkQXJlYSgpOworICAgIE5hbWVkR3JpZEFyZWFNYXA6OmNvbnN0X2l0
ZXJhdG9yIGdyaWRBcmVhSXQgPSBhcmVhcy5maW5kKG5hbWUpOworICAgIGlmIChncmlkQXJlYUl0
ICE9IGFyZWFzLmVuZCgpKSB7CisgICAgICAgIGNvbnN0IEdyaWRBcmVhJiBncmlkQXJlYSA9IGdy
aWRBcmVhSXQtPnZhbHVlOworICAgICAgICBHcmlkU3BhbiBncmlkU3BhbiA9IGlzUm93QXhpcyA/
IGdyaWRBcmVhLmNvbHVtbnMgOiBncmlkQXJlYS5yb3dzOworICAgICAgICBncmlkU3Bhbi5jbGFt
cChtaW4sIG1heCk7CisgICAgICAgIGlmIChncmlkU3Bhbi5lbmRMaW5lKCkgPiBncmlkU3Bhbi5z
dGFydExpbmUoKSkKKyAgICAgICAgICAgIHJldHVybiBpc1N0YXJ0U2lkZSA/IGdyaWRTcGFuLnN0
YXJ0TGluZSgpIDogZ3JpZFNwYW4uZW5kTGluZSgpOworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9
CisKK05hbWVkTGluZUNvbGxlY3Rpb25CYXNlOjpOYW1lZExpbmVDb2xsZWN0aW9uQmFzZShjb25z
dCBSZW5kZXJHcmlkJiBpbml0aWFsR3JpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBHcmlkUG9zaXRp
b25TaWRlIHNpZGUsIGJvb2wgbmFtZUlzQXJlYU5hbWUpCisgICAgOiBtX3N1YmdyaWQoZmFsc2Up
Cit7CisgICAgU3RyaW5nIGxpbmVOYW1lID0gbmFtZUlzQXJlYU5hbWUgPyBpbXBsaWNpdE5hbWVk
R3JpZExpbmVGb3JTaWRlKG5hbWUsIHNpZGUpIDogbmFtZTsKKyAgICBHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24gZGlyZWN0aW9uID0gZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSk7CisgICAgY29uc3Qg
UmVuZGVyR3JpZCogZ3JpZCA9ICZpbml0aWFsR3JpZDsKKyAgICBjb25zdCBSZW5kZXJTdHlsZSog
Z3JpZENvbnRhaW5lclN0eWxlID0gJmdyaWQtPnN0eWxlKCk7CiAgICAgYm9vbCBpc1Jvd0F4aXMg
PSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1uczsKLSAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYg
Z3JpZExpbmVOYW1lcyA9IGlzUm93QXhpcyA/IGdyaWRDb250YWluZXJTdHlsZS5uYW1lZEdyaWRD
b2x1bW5MaW5lcygpIDogZ3JpZENvbnRhaW5lclN0eWxlLm5hbWVkR3JpZFJvd0xpbmVzKCk7Ci0g
ICAgY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIGF1dG9SZXBlYXRHcmlkTGluZU5hbWVzID0gaXNS
b3dBeGlzID8gZ3JpZENvbnRhaW5lclN0eWxlLmF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5l
cygpIDogZ3JpZENvbnRhaW5lclN0eWxlLmF1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcygpOwot
ICAgIGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBpbXBsaWNpdEdyaWRMaW5lTmFtZXMgPSBpc1Jv
d0F4aXMgPyBncmlkQ29udGFpbmVyU3R5bGUuaW1wbGljaXROYW1lZEdyaWRDb2x1bW5MaW5lcygp
IDogZ3JpZENvbnRhaW5lclN0eWxlLmltcGxpY2l0TmFtZWRHcmlkUm93TGluZXMoKTsKIAotICAg
IGF1dG8gbGluZXNJdGVyYXRvciA9IGdyaWRMaW5lTmFtZXMuZmluZChuYW1lZExpbmUpOworICAg
IG1fbGFzdExpbmUgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lkZSgqZ3JpZCwgc2lkZSk7CisKKyAg
ICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgZ3JpZExpbmVOYW1lcyA9IGlzUm93QXhpcyA/IGdy
aWRDb250YWluZXJTdHlsZS0+bmFtZWRHcmlkQ29sdW1uTGluZXMoKSA6IGdyaWRDb250YWluZXJT
dHlsZS0+bmFtZWRHcmlkUm93TGluZXMoKTsKKyAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYg
YXV0b1JlcGVhdEdyaWRMaW5lTmFtZXMgPSBpc1Jvd0F4aXMgPyBncmlkQ29udGFpbmVyU3R5bGUt
PmF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcygpIDogZ3JpZENvbnRhaW5lclN0eWxlLT5h
dXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMoKTsKKyAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01h
cCYgaW1wbGljaXRHcmlkTGluZU5hbWVzID0gaXNSb3dBeGlzID8gZ3JpZENvbnRhaW5lclN0eWxl
LT5pbXBsaWNpdE5hbWVkR3JpZENvbHVtbkxpbmVzKCkgOiBncmlkQ29udGFpbmVyU3R5bGUtPmlt
cGxpY2l0TmFtZWRHcmlkUm93TGluZXMoKTsKKworICAgIGF1dG8gbGluZXNJdGVyYXRvciA9IGdy
aWRMaW5lTmFtZXMuZmluZChsaW5lTmFtZSk7CiAgICAgbV9uYW1lZExpbmVzSW5kZXhlcyA9IGxp
bmVzSXRlcmF0b3IgPT0gZ3JpZExpbmVOYW1lcy5lbmQoKSA/IG51bGxwdHIgOiAmbGluZXNJdGVy
YXRvci0+dmFsdWU7CiAKLSAgICBhdXRvIGF1dG9SZXBlYXRMaW5lc0l0ZXJhdG9yID0gYXV0b1Jl
cGVhdEdyaWRMaW5lTmFtZXMuZmluZChuYW1lZExpbmUpOworICAgIGF1dG8gYXV0b1JlcGVhdExp
bmVzSXRlcmF0b3IgPSBhdXRvUmVwZWF0R3JpZExpbmVOYW1lcy5maW5kKGxpbmVOYW1lKTsKICAg
ICBtX2F1dG9SZXBlYXROYW1lZExpbmVzSW5kZXhlcyA9IGF1dG9SZXBlYXRMaW5lc0l0ZXJhdG9y
ID09IGF1dG9SZXBlYXRHcmlkTGluZU5hbWVzLmVuZCgpID8gbnVsbHB0ciA6ICZhdXRvUmVwZWF0
TGluZXNJdGVyYXRvci0+dmFsdWU7CiAKLSAgICBhdXRvIGltcGxpY2l0R3JpZExpbmVzSXRlcmF0
b3IgPSBpbXBsaWNpdEdyaWRMaW5lTmFtZXMuZmluZChuYW1lZExpbmUpOworICAgIGF1dG8gaW1w
bGljaXRHcmlkTGluZXNJdGVyYXRvciA9IGltcGxpY2l0R3JpZExpbmVOYW1lcy5maW5kKGxpbmVO
YW1lKTsKICAgICBtX2ltcGxpY2l0TmFtZWRMaW5lc0luZGV4ZXMgPSBpbXBsaWNpdEdyaWRMaW5l
c0l0ZXJhdG9yID09IGltcGxpY2l0R3JpZExpbmVOYW1lcy5lbmQoKSA/IG51bGxwdHIgOiAmaW1w
bGljaXRHcmlkTGluZXNJdGVyYXRvci0+dmFsdWU7CisgICAgbV9zdWJncmlkID0gaXNSb3dBeGlz
ID8gZ3JpZC0+aXNTdWJncmlkQ29sdW1ucygpIDogZ3JpZC0+aXNTdWJncmlkUm93cygpOworCisg
ICAgbV9hdXRvUmVwZWF0VG90YWxUcmFja3MgPSBncmlkLT5hdXRvUmVwZWF0Q291bnRGb3JEaXJl
Y3Rpb24oZGlyZWN0aW9uKTsKKyAgICBtX2F1dG9SZXBlYXRUcmFja0xpc3RMZW5ndGggPSBpc1Jv
d0F4aXMgPyBncmlkQ29udGFpbmVyU3R5bGUtPmdyaWRBdXRvUmVwZWF0Q29sdW1ucygpLnNpemUo
KSA6IGdyaWRDb250YWluZXJTdHlsZS0+Z3JpZEF1dG9SZXBlYXRSb3dzKCkuc2l6ZSgpOworICAg
IG1fYXV0b1JlcGVhdExpbmVzID0gMDsKKyAgICBtX2luc2VydGlvblBvaW50ID0gaXNSb3dBeGlz
ID8gZ3JpZENvbnRhaW5lclN0eWxlLT5ncmlkQXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2lu
dCgpIDogZ3JpZENvbnRhaW5lclN0eWxlLT5ncmlkQXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2lu
dCgpOworCisgICAgaWYgKCFtX3N1YmdyaWQpIHsKKyAgICAgICAgaWYgKGlzUm93QXhpcyA/IGdy
aWRDb250YWluZXJTdHlsZS0+Z3JpZFN1YmdyaWRDb2x1bW5zKCkgOiBncmlkQ29udGFpbmVyU3R5
bGUtPmdyaWRTdWJncmlkUm93cygpKSB7CisgICAgICAgICAgICAvLyBJZiBzdWJncmlkIHdhcyBz
cGVjaWZpZWQsIGJ1dCB0aGUgZ3JpZCB3YXNuJ3QgYWJsZSB0byBhY3R1YWxseSBiZWNvbWUgYSBz
dWJncmlkLCB0aGUgdXNlZAorICAgICAgICAgICAgLy8gdmFsdWUgb2YgdGhlIHN0eWxlIHNob3Vs
ZCBiZSB0aGUgaW5pdGlhbCAnbm9uZScgdmFsdWVzLgorICAgICAgICAgICAgbV9uYW1lZExpbmVz
SW5kZXhlcyA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2F1dG9SZXBlYXROYW1lZExpbmVzSW5k
ZXhlcyA9IG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAg
IG1faW5zZXJ0aW9uUG9pbnQgPSBpc1Jvd0F4aXMgPyBncmlkQ29udGFpbmVyU3R5bGUuZ3JpZEF1
dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoKSA6IGdyaWRDb250YWluZXJTdHlsZS5ncmlk
QXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludCgpOwotCi0gICAgbV9hdXRvUmVwZWF0VHJhY2tM
aXN0TGVuZ3RoID0gaXNSb3dBeGlzID8gZ3JpZENvbnRhaW5lclN0eWxlLmdyaWRBdXRvUmVwZWF0
Q29sdW1ucygpLnNpemUoKSA6IGdyaWRDb250YWluZXJTdHlsZS5ncmlkQXV0b1JlcGVhdFJvd3Mo
KS5zaXplKCk7Ci19CisgICAgaWYgKG1faW1wbGljaXROYW1lZExpbmVzSW5kZXhlcykgeworICAg
ICAgICAvLyBUaGUgaW1wbGljaXQgbGluZXMgbGlzdCB3YXMgY3JlYXRlZCBiYXNlZCBvbiB0aGUg
YXJlYXMgc3BlY2lmaWVkIGZvciB0aGUgZ3JpZCBhcmVhcyBwcm9wZXJ0eSwgYnV0IHRoZQorICAg
ICAgICAvLyBzdWJncmlkIG1pZ2h0IGhhdmUgaW5oZXJpdGVkIGxlc3MgdHJhY2tzIHRoYW4gbmVl
ZGVkIHRvIGNvdmVyIHRoZSBzcGVjaWZpZWQgYXJlYS4gV2Ugd2FudCB0byBjbGFtcAorICAgICAg
ICAvLyB0aGUgc3BlY2lmaWVkIGFyZWEgZG93biB0byBleHBsaWNpdCBncmlkIHdlIGFjdHVhbGx5
IGhhdmUsIGFuZCB0aGVuIGdlbmVyYXRlIGltcGxpY2l0IC1zdGFydC8tZW5kCisgICAgICAgIC8v
IGxpbmVzIGZvciB0aGUgbmV3IGFyZWEuCisgICAgICAgIEFTU0VSVChtX2ltcGxpY2l0TmFtZWRM
aW5lc0luZGV4ZXMtPnNpemUoKSA9PSAxKTsKKyAgICAgICAgbV9pbXBsaWNpdE5hbWVkTGluZXNJ
bmRleGVzID0gJm1faW5oZXJpdGVkTmFtZWRMaW5lc0luZGV4ZXM7CisKKyAgICAgICAgLy8gRmlu
ZCB0aGUgYXJlYSBuYW1lIHRoYXQgY3JlYXRlcyB0aGUgaW1wbGljaXQgbGluZSB3ZSdyZSBsb29r
aW5nIGZvci4gSWYgdGhlIGlucHV0IHdhcyBhbiBhcmVhIG5hbWUsCisgICAgICAgIC8vIHRoZW4g
d2UgY2FuIHVzZSB0aGF0LCBvdGhlcndpc2Ugd2UgbmVlZCB0byBjaG9vc2UgdGhlIHN1YnN0cmlu
ZyBhbmQgaW5mZXIgd2hpY2ggc2lkZSB0aGUgaW5wdXQgc3BlY2lmaWVkLgorICAgICAgICAvLyBJ
dCdzIHBvc3NpYmxlIGZvciBhdXRob3JzIHRvIG1hbnVhbGx5IG5hbWUgYSAqLXN0YXJ0IGltcGxp
Y2l0IGxpbmUgbmFtZSBmb3IgdGhlIGVuZCBsaW5lIHNlYXJjaCwgYW5kIHZpY2UtdmVyc2EsCisg
ICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gcmVtZW1iZXIgd2hpY2ggc2lkZSB3ZSBpbmZlcnJlZCBm
cm9tIHRoZSBuYW1lLCBzZXBhcmF0ZWx5IGZyb20gdGhlIHNpZGUgd2UncmUgc2VhcmNoaW5nIGZv
ci4KKyAgICAgICAgU3RyaW5nIGFyZWFOYW1lID0gbmFtZTsKKyAgICAgICAgYm9vbCBzdGFydFNp
ZGUgPSBpc1N0YXJ0U2lkZShzaWRlKTsKKyAgICAgICAgaWYgKCFuYW1lSXNBcmVhTmFtZSkgewor
ICAgICAgICAgICAgc2l6ZV90IHN1ZmZpeCA9IG5hbWUuZmluZCgiLXN0YXJ0Iik7CisgICAgICAg
ICAgICBpZiAoc3VmZml4ID09IG5vdEZvdW5kKSB7CisgICAgICAgICAgICAgICAgc3VmZml4ID0g
bmFtZS5maW5kKCItZW5kIik7CisgICAgICAgICAgICAgICAgQVNTRVJUKHN1ZmZpeCAhPSBub3RG
b3VuZCk7CisgICAgICAgICAgICAgICAgc3RhcnRTaWRlID0gZmFsc2U7CisgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICBzdGFydFNpZGUgPSB0cnVlOworICAgICAgICAgICAgYXJl
YU5hbWUgPSBuYW1lLnN1YnN0cmluZygwLCBzdWZmaXgpOworICAgICAgICB9CisgICAgICAgIGlu
dCBpbXBsaWNpdExpbmUgPSBjbGFtcGVkSW1wbGljaXRMaW5lRm9yQXJlYSgqZ3JpZENvbnRhaW5l
clN0eWxlLCBhcmVhTmFtZSwgMCwgbV9sYXN0TGluZSwgaXNSb3dBeGlzLCBzdGFydFNpZGUpOwor
ICAgICAgICBpZiAoaW1wbGljaXRMaW5lICE9IC0xKQorICAgICAgICAgICAgbV9pbmhlcml0ZWRO
YW1lZExpbmVzSW5kZXhlcy5hcHBlbmQoaW1wbGljaXRMaW5lKTsKKyAgICB9CiAKLWJvb2wgTmFt
ZWRMaW5lQ29sbGVjdGlvbjo6aGFzRXhwbGljaXROYW1lZExpbmVzKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9uYW1lZExpbmVzSW5kZXhlcyB8fCBtX2F1dG9SZXBlYXROYW1lZExpbmVzSW5kZXhl
czsKKyAgICBBU1NFUlQoIW1fYXV0b1JlcGVhdFRvdGFsVHJhY2tzKTsKKyAgICBtX2F1dG9SZXBl
YXRUcmFja0xpc3RMZW5ndGggPSAoaXNSb3dBeGlzID8gZ3JpZENvbnRhaW5lclN0eWxlLT5hdXRv
UmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkgOiBncmlkQ29udGFpbmVyU3R5bGUt
PmF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoKSkuc2l6ZSgpOworICAgIGlmICht
X2F1dG9SZXBlYXRUcmFja0xpc3RMZW5ndGgpIHsKKyAgICAgICAgdW5zaWduZWQgbmFtZWRMaW5l
cyA9IChpc1Jvd0F4aXMgPyBncmlkQ29udGFpbmVyU3R5bGUtPm9yZGVyZWROYW1lZEdyaWRDb2x1
bW5MaW5lcygpIDogZ3JpZENvbnRhaW5lclN0eWxlLT5vcmRlcmVkTmFtZWRHcmlkUm93TGluZXMo
KSkuc2l6ZSgpOworICAgICAgICB1bnNpZ25lZCB0b3RhbExpbmVzID0gbV9sYXN0TGluZSArIDE7
CisgICAgICAgIGlmIChuYW1lZExpbmVzIDwgdG90YWxMaW5lcykgeworICAgICAgICAgICAgLy8g
YXV0byByZXBlYXQgaW4gYSBzdWJncmlkIHNwZWNpZmllcyB0aGUgbGluZSBuYW1lcyB0aGF0IHNo
b3VsZCBiZSByZXBlYXRlZCwgbm90CisgICAgICAgICAgICAvLyB0aGUgdHJhY2tzLgorICAgICAg
ICAgICAgbV9hdXRvUmVwZWF0TGluZXMgPSAodG90YWxMaW5lcyAtIG5hbWVkTGluZXMpIC8gbV9h
dXRvUmVwZWF0VHJhY2tMaXN0TGVuZ3RoOworICAgICAgICAgICAgbV9hdXRvUmVwZWF0TGluZXMg
Kj0gbV9hdXRvUmVwZWF0VHJhY2tMaXN0TGVuZ3RoOworICAgICAgICB9CisgICAgfQogfQogCi1i
b29sIE5hbWVkTGluZUNvbGxlY3Rpb246Omhhc05hbWVkTGluZXMoKSBjb25zdAordm9pZCBOYW1l
ZExpbmVDb2xsZWN0aW9uQmFzZTo6ZW5zdXJlTG9jYWxTdG9yYWdlKCkKIHsKLSAgICByZXR1cm4g
aGFzRXhwbGljaXROYW1lZExpbmVzKCkgfHwgbV9pbXBsaWNpdE5hbWVkTGluZXNJbmRleGVzOwot
fQorICAgIGlmIChtX2ltcGxpY2l0TmFtZWRMaW5lc0luZGV4ZXMgIT0gJm1faW5oZXJpdGVkTmFt
ZWRMaW5lc0luZGV4ZXMpIHsKKyAgICAgICAgaWYgKG1faW1wbGljaXROYW1lZExpbmVzSW5kZXhl
cykKKyAgICAgICAgICAgIG1faW5oZXJpdGVkTmFtZWRMaW5lc0luZGV4ZXMuYXBwZW5kVmVjdG9y
KCptX2ltcGxpY2l0TmFtZWRMaW5lc0luZGV4ZXMpOworICAgICAgICBtX2ltcGxpY2l0TmFtZWRM
aW5lc0luZGV4ZXMgPSAmbV9pbmhlcml0ZWROYW1lZExpbmVzSW5kZXhlczsKKyAgICB9Cit9Owog
Ci1ib29sIE5hbWVkTGluZUNvbGxlY3Rpb246OmNvbnRhaW5zKHVuc2lnbmVkIGxpbmUpIGNvbnN0
Citib29sIE5hbWVkTGluZUNvbGxlY3Rpb25CYXNlOjpjb250YWlucyh1bnNpZ25lZCBsaW5lKSBj
b25zdAogewotICAgIEFTU0VSVChoYXNOYW1lZExpbmVzKCkpOwotCiAgICAgaWYgKGxpbmUgPiBt
X2xhc3RMaW5lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwMSwxMiArMTg5LDIwIEBA
IGJvb2wgTmFtZWRMaW5lQ29sbGVjdGlvbjo6Y29udGFpbnModW5zaWduZWQgbGluZSkgY29uc3QK
ICAgICAgICAgcmV0dXJuIGluZGV4ZXMgJiYgaW5kZXhlcy0+ZmluZChsaW5lKSAhPSBub3RGb3Vu
ZDsKICAgICB9OwogCi0gICAgaWYgKGNvbnRhaW5zKG1faW1wbGljaXROYW1lZExpbmVzSW5kZXhl
cywgbGluZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAgaWYgKCFtX2F1dG9SZXBlYXRU
cmFja0xpc3RMZW5ndGggfHwgbGluZSA8IG1faW5zZXJ0aW9uUG9pbnQpCiAgICAgICAgIHJldHVy
biBjb250YWlucyhtX25hbWVkTGluZXNJbmRleGVzLCBsaW5lKTsKIAorICAgIGlmIChtX3N1Ymdy
aWQpIHsKKyAgICAgICAgaWYgKGxpbmUgPj0gbV9pbnNlcnRpb25Qb2ludCArIG1fYXV0b1JlcGVh
dExpbmVzKQorICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5zKG1fbmFtZWRMaW5lc0luZGV4ZXMs
IGxpbmUgLSBtX2F1dG9SZXBlYXRMaW5lcyk7CisKKyAgICAgICAgaWYgKCFtX2F1dG9SZXBlYXRM
aW5lcykKKyAgICAgICAgICAgIHJldHVybiBjb250YWlucyhtX25hbWVkTGluZXNJbmRleGVzLCBs
aW5lKTsKKworICAgICAgICB1bnNpZ25lZCBhdXRvUmVwZWF0SW5kZXhJbkZpcnN0UmVwZXRpdGlv
biA9IChsaW5lIC0gbV9pbnNlcnRpb25Qb2ludCkgJSBtX2F1dG9SZXBlYXRUcmFja0xpc3RMZW5n
dGg7CisgICAgICAgIHJldHVybiBjb250YWlucyhtX2F1dG9SZXBlYXROYW1lZExpbmVzSW5kZXhl
cywgYXV0b1JlcGVhdEluZGV4SW5GaXJzdFJlcGV0aXRpb24pOworICAgIH0KKwogICAgIEFTU0VS
VChtX2F1dG9SZXBlYXRUb3RhbFRyYWNrcyk7CiAKICAgICBpZiAobGluZSA+IG1faW5zZXJ0aW9u
UG9pbnQgKyBtX2F1dG9SZXBlYXRUb3RhbFRyYWNrcykKQEAgLTEyNCwxMyArMjIwLDExNiBAQCBi
b29sIE5hbWVkTGluZUNvbGxlY3Rpb246OmNvbnRhaW5zKHVuc2lnbmVkIGxpbmUpIGNvbnN0CiAg
ICAgcmV0dXJuIGNvbnRhaW5zKG1fYXV0b1JlcGVhdE5hbWVkTGluZXNJbmRleGVzLCBhdXRvUmVw
ZWF0SW5kZXhJbkZpcnN0UmVwZXRpdGlvbik7CiB9CiAKLXVuc2lnbmVkIE5hbWVkTGluZUNvbGxl
Y3Rpb246OmZpcnN0RXhwbGljaXRQb3NpdGlvbigpIGNvbnN0CitOYW1lZExpbmVDb2xsZWN0aW9u
OjpOYW1lZExpbmVDb2xsZWN0aW9uKGNvbnN0IFJlbmRlckdyaWQmIGluaXRpYWxHcmlkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIEdyaWRQb3NpdGlvblNpZGUgc2lkZSwgYm9vbCBuYW1lSXNBcmVhTmFt
ZSkKKyAgICA6IE5hbWVkTGluZUNvbGxlY3Rpb25CYXNlKGluaXRpYWxHcmlkLCBuYW1lLCBzaWRl
LCBuYW1lSXNBcmVhTmFtZSkKK3sKKyAgICBpZiAoIW1fbGFzdExpbmUpCisgICAgICAgIHJldHVy
bjsKKyAgICBHcmlkU3BhbiBzZWFyY2ggPSBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3Jp
ZFNwYW4oMCwgbV9sYXN0TGluZSk7CisgICAgR3JpZFBvc2l0aW9uU2lkZSBjdXJyZW50U2lkZSA9
IHNpZGU7CisgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiA9IGRpcmVjdGlv
bkZyb21TaWRlKGN1cnJlbnRTaWRlKTsKKyAgICBib29sIGluaXRpYWxGbGlwcGVkID0gR3JpZExh
eW91dEZ1bmN0aW9uczo6aXNGbGlwcGVkRGlyZWN0aW9uKGluaXRpYWxHcmlkLCBkaXJlY3Rpb24p
OworICAgIGNvbnN0IFJlbmRlckdyaWQqIGdyaWQgPSAmaW5pdGlhbEdyaWQ7CisgICAgYm9vbCBp
c1Jvd0F4aXMgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1uczsKKworICAgIC8vIElmIHdlJ3JlIGEg
c3ViZ3JpZCwgd2Ugd2FudCB0byBpbmhlcml0IHRoZSBsaW5lIG5hbWVzIGZyb20gYW55IGFuY2Vz
dG9yIGdyaWRzLgorICAgIHdoaWxlIChpc1Jvd0F4aXMgPyBncmlkLT5pc1N1YmdyaWRDb2x1bW5z
KCkgOiBncmlkLT5pc1N1YmdyaWRSb3dzKCkpIHsKKyAgICAgICAgY29uc3QgUmVuZGVyR3JpZCog
cGFyZW50ID0gZG93bmNhc3Q8UmVuZGVyR3JpZD4oZ3JpZC0+cGFyZW50KCkpOworCisgICAgICAg
IC8vIFRyYW5zbGF0ZSBvdXIgZXhwbGljaXQgZ3JpZCBzZXQgb2YgbGluZXMgaW50byB0aGUgY29v
cmRpbmF0ZSBzcGFjZSBvZiB0aGUKKyAgICAgICAgLy8gcGFyZW50IGdyaWQsIGFkanVzdGluZyBk
aXJlY3Rpb24vc2lkZSBhcyBuZWVkZWQuCisgICAgICAgIGlmIChncmlkLT5pc0hvcml6b250YWxX
cml0aW5nTW9kZSgpICE9IHBhcmVudC0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgeworICAg
ICAgICAgICAgaXNSb3dBeGlzID0gIWlzUm93QXhpczsKKyAgICAgICAgICAgIGN1cnJlbnRTaWRl
ID0gdHJhbnNwb3NlZFNpZGUoY3VycmVudFNpZGUpOworICAgICAgICB9CisgICAgICAgIGRpcmVj
dGlvbiA9IGRpcmVjdGlvbkZyb21TaWRlKGN1cnJlbnRTaWRlKTsKKworICAgICAgICBHcmlkU3Bh
biBzcGFuID0gcGFyZW50LT5ncmlkU3BhbkZvckNoaWxkKCpncmlkLCBkaXJlY3Rpb24pOworICAg
ICAgICBzZWFyY2gudHJhbnNsYXRlVG8oc3BhbiwgR3JpZExheW91dEZ1bmN0aW9uczo6aXNTdWJn
cmlkUmV2ZXJzZWREaXJlY3Rpb24oKnBhcmVudCwgZGlyZWN0aW9uLCAqZ3JpZCkpOworCisgICAg
ICAgIGF1dG8gY29udmVydFRvSW5pdGlhbFNwYWNlID0gWyZdKHVuc2lnbmVkIGkpIHsKKyAgICAg
ICAgICAgIGkgLT0gc2VhcmNoLnN0YXJ0TGluZSgpOworICAgICAgICAgICAgaWYgKEdyaWRMYXlv
dXRGdW5jdGlvbnM6OmlzRmxpcHBlZERpcmVjdGlvbigqcGFyZW50LCBkaXJlY3Rpb24pICE9IGlu
aXRpYWxGbGlwcGVkKQorICAgICAgICAgICAgICAgIGkgPSBtX2xhc3RMaW5lIC0gaTsKKyAgICAg
ICAgICAgIHJldHVybiBpOworICAgICAgICB9OworCisgICAgICAgIC8vIENyZWF0ZSBhIGxpbmUg
Y29sbGVjdGlvbiBmb3IgdGhlIHBhcmVudCBncmlkLCBhbmQgY2hlY2sgdG8gc2VlIGlmIGFueSBv
ZiBvdXIgbGluZXMKKyAgICAgICAgLy8gYXJlIHByZXNlbnQuIElmIHdlIGZpbmQgYW55LCBhZGQg
dGhlbSB0byBhIGxvY2FsbHkgc3RvcmVkIGxpbmUgbmFtZSBsaXN0ICh3aXRoIG51bWJlcmluZwor
ICAgICAgICAvLyByZWxhdGl2ZSB0byBvdXIgZ3JpZCkuCisgICAgICAgIGJvb2wgYXBwZW5kZWQg
PSBmYWxzZTsKKyAgICAgICAgTmFtZWRMaW5lQ29sbGVjdGlvbkJhc2UgcGFyZW50Q29sbGVjdGlv
bigqcGFyZW50LCBuYW1lLCBjdXJyZW50U2lkZSwgbmFtZUlzQXJlYU5hbWUpOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBzZWFyY2guc3RhcnRMaW5lKCk7IGkgPD0gc2VhcmNoLmVuZExpbmUo
KTsgaSsrKSB7CisgICAgICAgICAgICBpZiAocGFyZW50Q29sbGVjdGlvbi5jb250YWlucyhpKSkg
eworICAgICAgICAgICAgICAgIGVuc3VyZUxvY2FsU3RvcmFnZSgpOworICAgICAgICAgICAgICAg
IGFwcGVuZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtX2luaGVyaXRlZE5hbWVkTGluZXNJ
bmRleGVzLmFwcGVuZChjb252ZXJ0VG9Jbml0aWFsU3BhY2UoaSkpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKG5hbWVJc0FyZWFOYW1lKSB7CisgICAgICAgICAgICAv
LyBXZSBub3cgbmVlZCB0byBsb29rIGF0IHRoZSBncmlkIGFyZWFzIGZvciB0aGUgcGFyZW50IChu
b3QgdGhlIGltcGxpY2l0CisgICAgICAgICAgICAvLyBsaW5lcyBmb3IgdGhlIHBhcmVudCEpLCBh
bmQgaW5zZXJ0IHRoZSBvbmVzIHRoYXQgaW50ZXJzZWN0IGFzIGltcGxpY2l0CisgICAgICAgICAg
ICAvLyBsaW5lcyAoYnV0IGluIG91ciBzaW5nbGUgY29tYmluZWQgbGlzdCkuCisgICAgICAgICAg
ICBpbnQgaW1wbGljaXRMaW5lID0gY2xhbXBlZEltcGxpY2l0TGluZUZvckFyZWEocGFyZW50LT5z
dHlsZSgpLCBuYW1lLCBzZWFyY2guc3RhcnRMaW5lKCksIHNlYXJjaC5lbmRMaW5lKCksIGlzUm93
QXhpcywgaXNTdGFydFNpZGUoc2lkZSkpOworICAgICAgICAgICAgaWYgKGltcGxpY2l0TGluZSAh
PSAtMSkgeworICAgICAgICAgICAgICAgIGVuc3VyZUxvY2FsU3RvcmFnZSgpOworICAgICAgICAg
ICAgICAgIGFwcGVuZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtX2luaGVyaXRlZE5hbWVk
TGluZXNJbmRleGVzLmFwcGVuZChjb252ZXJ0VG9Jbml0aWFsU3BhY2UoaW1wbGljaXRMaW5lKSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXBwZW5kZWQpIHsKKyAg
ICAgICAgICAgIC8vIFJlLXNvcnQgbV9pbmhlcml0ZWROYW1lZExpbmVzSW5kZXhlcworICAgICAg
ICAgICAgc3RkOjpzb3J0KG1faW5oZXJpdGVkTmFtZWRMaW5lc0luZGV4ZXMuYmVnaW4oKSwgbV9p
bmhlcml0ZWROYW1lZExpbmVzSW5kZXhlcy5lbmQoKSk7CisgICAgICAgIH0KKworICAgICAgICBn
cmlkID0gcGFyZW50OworICAgIH0KK30KKworYm9vbCBOYW1lZExpbmVDb2xsZWN0aW9uOjpoYXNF
eHBsaWNpdE5hbWVkTGluZXMoKSBjb25zdAoreworICAgIGlmIChtX25hbWVkTGluZXNJbmRleGVz
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbV9hdXRvUmVwZWF0TmFtZWRMaW5l
c0luZGV4ZXMgJiYgKCFtX3N1YmdyaWQgfHwgbV9hdXRvUmVwZWF0TGluZXMpOworfQorCitib29s
IE5hbWVkTGluZUNvbGxlY3Rpb246Omhhc05hbWVkTGluZXMoKSBjb25zdAoreworICAgIHJldHVy
biBoYXNFeHBsaWNpdE5hbWVkTGluZXMoKSB8fCBtX2ltcGxpY2l0TmFtZWRMaW5lc0luZGV4ZXM7
Cit9CisKK3Vuc2lnbmVkIE5hbWVkTGluZUNvbGxlY3Rpb246Omxhc3RMaW5lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9sYXN0TGluZTsKK30KKworYm9vbCBOYW1lZExpbmVDb2xsZWN0aW9uOjpj
b250YWlucyh1bnNpZ25lZCBsaW5lKSBjb25zdAoreworICAgIEFTU0VSVChoYXNOYW1lZExpbmVz
KCkpOworCisgICAgaWYgKGxpbmUgPiBtX2xhc3RMaW5lKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBhdXRvIGNvbnRhaW5zID0gW10oY29uc3QgVmVjdG9yPHVuc2lnbmVkPiogaW5kZXhl
cywgdW5zaWduZWQgbGluZSkgeworICAgICAgICByZXR1cm4gaW5kZXhlcyAmJiBpbmRleGVzLT5m
aW5kKGxpbmUpICE9IG5vdEZvdW5kOworICAgIH07CisKKyAgICBpZiAoY29udGFpbnMobV9pbXBs
aWNpdE5hbWVkTGluZXNJbmRleGVzLCBsaW5lKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICByZXR1cm4gTmFtZWRMaW5lQ29sbGVjdGlvbkJhc2U6OmNvbnRhaW5zKGxpbmUpOworfQorCitp
bnQgTmFtZWRMaW5lQ29sbGVjdGlvbjo6Zmlyc3RFeHBsaWNpdFBvc2l0aW9uKCkgY29uc3QKIHsK
ICAgICBBU1NFUlQoaGFzRXhwbGljaXROYW1lZExpbmVzKCkpOwogICAgIHVuc2lnbmVkIGZpcnN0
TGluZSA9IDA7CisgICAgdW5zaWduZWQgYXV0b1JlcGVhdHMgPSBtX3N1YmdyaWQgPyBtX2F1dG9S
ZXBlYXRMaW5lcyA6IG1fYXV0b1JlcGVhdFRvdGFsVHJhY2tzOwogCiAgICAgLy8gSWYgdGhlcmUg
aXMgbm8gYXV0byByZXBlYXQoKSwgdGhlcmUgbXVzdCBiZSBzb21lIG5hbWVkIGxpbmUgb3V0c2lk
ZSwgcmV0dXJuIHRoZSAxc3Qgb25lLiBBbHNvIHJldHVybiBpdCBpZiBpdCBwcmVjZWRlcyB0aGUg
YXV0by1yZXBlYXQoKS4KLSAgICBpZiAoIW1fYXV0b1JlcGVhdFRyYWNrTGlzdExlbmd0aCB8fCAo
bV9uYW1lZExpbmVzSW5kZXhlcyAmJiBtX25hbWVkTGluZXNJbmRleGVzLT5hdChmaXJzdExpbmUp
IDw9IG1faW5zZXJ0aW9uUG9pbnQpKQorICAgIGlmICghYXV0b1JlcGVhdHMgfHwgKG1fbmFtZWRM
aW5lc0luZGV4ZXMgJiYgbV9uYW1lZExpbmVzSW5kZXhlcy0+YXQoZmlyc3RMaW5lKSA8PSBtX2lu
c2VydGlvblBvaW50KSkKICAgICAgICAgcmV0dXJuIG1fbmFtZWRMaW5lc0luZGV4ZXMtPmF0KGZp
cnN0TGluZSk7CiAKICAgICAvLyBSZXR1cm4gdGhlIDFzdCBuYW1lZCBsaW5lIGluc2lkZSB0aGUg
YXV0byByZXBlYXQoKSwgaWYgYW55LgpAQCAtMTM4LDEwICszMzcsMTIgQEAgdW5zaWduZWQgTmFt
ZWRMaW5lQ29sbGVjdGlvbjo6Zmlyc3RFeHBsaWNpdFBvc2l0aW9uKCkgY29uc3QKICAgICAgICAg
cmV0dXJuIG1fYXV0b1JlcGVhdE5hbWVkTGluZXNJbmRleGVzLT5hdChmaXJzdExpbmUpICsgbV9p
bnNlcnRpb25Qb2ludDsKIAogICAgIC8vIFRoZSAxc3QgbmFtZWQgbGluZSBtdXN0IGJlIGFmdGVy
IHRoZSBhdXRvIHJlcGVhdCgpLgotICAgIHJldHVybiBtX25hbWVkTGluZXNJbmRleGVzLT5hdChm
aXJzdExpbmUpICsgbV9hdXRvUmVwZWF0VG90YWxUcmFja3MgLSAxOworICAgIGlmIChtX3N1Ymdy
aWQpCisgICAgICAgIHJldHVybiBtX25hbWVkTGluZXNJbmRleGVzLT5hdChmaXJzdExpbmUpICsg
YXV0b1JlcGVhdHM7CisgICAgcmV0dXJuIG1fbmFtZWRMaW5lc0luZGV4ZXMtPmF0KGZpcnN0TGlu
ZSkgKyBhdXRvUmVwZWF0cyAtIDE7CiB9CiAKLXVuc2lnbmVkIE5hbWVkTGluZUNvbGxlY3Rpb246
OmZpcnN0UG9zaXRpb24oKSBjb25zdAoraW50IE5hbWVkTGluZUNvbGxlY3Rpb246OmZpcnN0UG9z
aXRpb24oKSBjb25zdAogewogICAgIEFTU0VSVChoYXNOYW1lZExpbmVzKCkpOwogICAgIHVuc2ln
bmVkIGZpcnN0TGluZSA9IDA7CkBAIC0xNDksNyArMzUwLDE5IEBAIHVuc2lnbmVkIE5hbWVkTGlu
ZUNvbGxlY3Rpb246OmZpcnN0UG9zaXRpb24oKSBjb25zdAogICAgICAgICByZXR1cm4gZmlyc3RF
eHBsaWNpdFBvc2l0aW9uKCk7CiAgICAgaWYgKCFoYXNFeHBsaWNpdE5hbWVkTGluZXMoKSkKICAg
ICAgICAgcmV0dXJuIG1faW1wbGljaXROYW1lZExpbmVzSW5kZXhlcy0+YXQoZmlyc3RMaW5lKTsK
LSAgICByZXR1cm4gc3RkOjptaW4oZmlyc3RFeHBsaWNpdFBvc2l0aW9uKCksIG1faW1wbGljaXRO
YW1lZExpbmVzSW5kZXhlcy0+YXQoZmlyc3RMaW5lKSk7CisgICAgcmV0dXJuIHN0ZDo6bWluPGlu
dD4oZmlyc3RFeHBsaWNpdFBvc2l0aW9uKCksIG1faW1wbGljaXROYW1lZExpbmVzSW5kZXhlcy0+
YXQoZmlyc3RMaW5lKSk7Cit9CisKKy8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtZ3Jp
ZC0yLyNpbmRlZmluaXRlLWdyaWQtc3Bhbgorc3RhdGljIGJvb2wgaXNJbmRlZmluaXRlU3BhbihH
cmlkUG9zaXRpb24mIGluaXRpYWxQb3NpdGlvbiwgR3JpZFBvc2l0aW9uJiBmaW5hbFBvc2l0aW9u
KQoreworICAgIGlmICghaW5pdGlhbFBvc2l0aW9uLmlzQXV0bygpICYmICFmaW5hbFBvc2l0aW9u
LmlzQXV0bygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaW5pdGlhbFBvc2l0
aW9uLmlzU3BhbigpIHx8IGZpbmFsUG9zaXRpb24uaXNTcGFuKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgdm9pZCBhZGp1c3RHcmlkUG9z
aXRpb25zRnJvbVN0eWxlKGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24sIEdyaWRQb3NpdGlvbiYgaW5pdGlhbFBvc2l0aW9uLCBHcmlk
UG9zaXRpb24mIGZpbmFsUG9zaXRpb24pCkBAIC0xNjgsMjQgKzM4MSw1MyBAQCBzdGF0aWMgdm9p
ZCBhZGp1c3RHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0s
IEdyaWRUcmFja1NpegogICAgICAgICBmaW5hbFBvc2l0aW9uLnNldFNwYW5Qb3NpdGlvbigxLCBT
dHJpbmcoKSk7CiAgICAgaWYgKGZpbmFsUG9zaXRpb24uaXNBdXRvKCkgJiYgaW5pdGlhbFBvc2l0
aW9uLmlzU3BhbigpICYmICFpbml0aWFsUG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLmlzTnVsbCgp
KQogICAgICAgICBpbml0aWFsUG9zaXRpb24uc2V0U3BhblBvc2l0aW9uKDEsIFN0cmluZygpKTsK
LX0KIAotdW5zaWduZWQgR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5D
b3VudChjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCB1bnNpZ25lZCBhdXRv
UmVwZWF0VHJhY2tzQ291bnQpCi17Ci0gICAgcmV0dXJuIHN0ZDo6bWluPHVuc2lnbmVkPihzdGQ6
Om1heChncmlkQ29udGFpbmVyU3R5bGUuZ3JpZENvbHVtbnMoKS5zaXplKCkgKyBhdXRvUmVwZWF0
VHJhY2tzQ291bnQsIGdyaWRDb250YWluZXJTdHlsZS5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQo
KSksIEdyaWRQb3NpdGlvbjo6bWF4KCkpOworICAgIC8vIEFic29sdXRlbHkgcG9zaXRpb25lZCBp
dGVtcyBzcGVjaWZ5aW5nIHN1YmdyaWQgbWlnaHQgbm90IGFjdHVhbGx5IGJlIGEgc3ViZ3JpZCBp
ZiB0aGVpciBncmlkCisgICAgLy8gc3BhbiBkb2Vzbid0IGNvdmVyIGFueSB0cmFja3MgYW5kIG9u
bHkgdGhlIHBhZGRpbmcgYXJlYS4gV2UgZG9uJ3Qga25vdyBpZiB0aGF0IGlzIHRoZSBjYXNlIHVu
dGlsCisgICAgLy8gd2UndmUgZmlndXJlZCBvdXQgdGhlaXIgZ3JpZCBwb3NpdGlvbiB0aG91Z2gs
IHdoaWNoIGlzIHdoYXQgd2UncmUgdHJ5aW5nIHRvIGRvIG5vdy4KKyAgICBpZiAoaXNJbmRlZmlu
aXRlU3Bhbihpbml0aWFsUG9zaXRpb24sIGZpbmFsUG9zaXRpb24pICYmIGlzPFJlbmRlckdyaWQ+
KGdyaWRJdGVtKSAmJiBkb3duY2FzdDxSZW5kZXJHcmlkPihncmlkSXRlbSkubWF5QmVTdWJncmlk
RXhjbHVkaW5nQWJzUG9zKGRpcmVjdGlvbikpIHsKKyAgICAgICAgLy8gSW5kZWZpbml0ZSBzcGFu
IGZvciBhbiBpdGVtIHRoYXQgaXMgc3ViZ3JpZGRlZCBpbiB0aGlzIGF4aXMuCisgICAgICAgIGlu
dCBsaW5lQ291bnQgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGdyaWRJdGVtLnN0eWxlKCku
b3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkuc2l6ZSgpIDogZ3JpZEl0ZW0uc3R5bGUoKS5v
cmRlcmVkTmFtZWRHcmlkUm93TGluZXMoKS5zaXplKCk7CisKKyAgICAgICAgaWYgKGluaXRpYWxQ
b3NpdGlvbi5pc0F1dG8oKSkgeworICAgICAgICAgICAgLy8gU2V0IGluaXRpYWwgcG9zaXRpb24g
dG8gc3BhbiA8bGluZSBuYW1lcyAtIDE+CisgICAgICAgICAgICBpbml0aWFsUG9zaXRpb24uc2V0
U3BhblBvc2l0aW9uKHN0ZDo6bWF4KDEsIGxpbmVDb3VudCAtIDEpLCAiIik7CisgICAgICAgICAg
ICBpZiAoZmluYWxQb3NpdGlvbi5pc1NwYW4oKSkKKyAgICAgICAgICAgICAgICBmaW5hbFBvc2l0
aW9uLnNldEF1dG9Qb3NpdGlvbigpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8g
U2V0IGZpbmFsIHBvc2l0aW9uIHRvIHNwYW4gPGxpbmUgbmFtZXMgLSAxPgorICAgICAgICAgICAg
ZmluYWxQb3NpdGlvbi5zZXRTcGFuUG9zaXRpb24oc3RkOjptYXgoMSwgbGluZUNvdW50IC0gMSks
ICIiKTsKKyAgICAgICAgICAgIGlmIChpbml0aWFsUG9zaXRpb24uaXNTcGFuKCkpCisgICAgICAg
ICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnNldEF1dG9Qb3NpdGlvbigpOworICAgICAgICB9Cisg
ICAgfQogfQogCi11bnNpZ25lZCBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJv
d0NvdW50KGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIHVuc2lnbmVkIGF1
dG9SZXBlYXRUcmFja3NDb3VudCkKK3Vuc2lnbmVkIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhw
bGljaXRHcmlkQ29sdW1uQ291bnQoY29uc3QgUmVuZGVyR3JpZCYgZ3JpZENvbnRhaW5lcikKIHsK
LSAgICByZXR1cm4gc3RkOjptaW48dW5zaWduZWQ+KHN0ZDo6bWF4KGdyaWRDb250YWluZXJTdHls
ZS5ncmlkUm93cygpLnNpemUoKSArIGF1dG9SZXBlYXRUcmFja3NDb3VudCwgZ3JpZENvbnRhaW5l
clN0eWxlLm5hbWVkR3JpZEFyZWFSb3dDb3VudCgpKSwgR3JpZFBvc2l0aW9uOjptYXgoKSk7Cisg
ICAgYm9vbCBzcGVjaWZpZWRTdWJncmlkID0gZ3JpZENvbnRhaW5lci5zdHlsZSgpLmdyaWRTdWJn
cmlkQ29sdW1ucygpOworICAgIGlmIChzcGVjaWZpZWRTdWJncmlkICYmIGdyaWRDb250YWluZXIu
aXNTdWJncmlkQ29sdW1ucygpKSB7CisgICAgICAgIGNvbnN0IFJlbmRlckdyaWQmIHBhcmVudCA9
ICpkb3duY2FzdDxSZW5kZXJHcmlkPihncmlkQ29udGFpbmVyLnBhcmVudCgpKTsKKyAgICAgICAg
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6
OmZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKHBhcmVudCwgZ3JpZENvbnRhaW5lciwgRm9yQ29s
dW1ucyk7CisgICAgICAgIHJldHVybiBwYXJlbnQuZ3JpZFNwYW5Gb3JDaGlsZChncmlkQ29udGFp
bmVyLCBkaXJlY3Rpb24pLmludGVnZXJTcGFuKCk7CisgICAgfQorICAgIGF1dG8gc3BlY2lmaWVk
Q29sdW1ucyA9IHNwZWNpZmllZFN1YmdyaWQgPyAwIDogZ3JpZENvbnRhaW5lci5zdHlsZSgpLmdy
aWRDb2x1bW5zKCkuc2l6ZSgpOworICAgIHJldHVybiBzdGQ6Om1pbjx1bnNpZ25lZD4oc3RkOjpt
YXgoc3BlY2lmaWVkQ29sdW1ucyArIGdyaWRDb250YWluZXIuYXV0b1JlcGVhdENvdW50Rm9yRGly
ZWN0aW9uKEZvckNvbHVtbnMpLCBncmlkQ29udGFpbmVyLnN0eWxlKCkubmFtZWRHcmlkQXJlYUNv
bHVtbkNvdW50KCkpLCBHcmlkUG9zaXRpb246Om1heCgpKTsKIH0KIAotc3RhdGljIHVuc2lnbmVk
IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVy
U3R5bGUsIEdyaWRQb3NpdGlvblNpZGUgc2lkZSwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0Nv
dW50KQordW5zaWduZWQgR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3Vu
dChjb25zdCBSZW5kZXJHcmlkJiBncmlkQ29udGFpbmVyKQogewotICAgIHJldHVybiBpc0NvbHVt
blNpZGUoc2lkZSkgPyBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNv
dW50KGdyaWRDb250YWluZXJTdHlsZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KSA6IEdyaWRQb3Np
dGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkUm93Q291bnQoZ3JpZENvbnRhaW5lclN0eWxlLCBh
dXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgIGJvb2wgc3BlY2lmaWVkU3ViZ3JpZCA9IGdyaWRD
b250YWluZXIuc3R5bGUoKS5ncmlkU3ViZ3JpZFJvd3MoKTsKKyAgICBpZiAoc3BlY2lmaWVkU3Vi
Z3JpZCAmJiBncmlkQ29udGFpbmVyLmlzU3ViZ3JpZFJvd3MoKSkgeworICAgICAgICBjb25zdCBS
ZW5kZXJHcmlkJiBwYXJlbnQgPSAqZG93bmNhc3Q8UmVuZGVyR3JpZD4oZ3JpZENvbnRhaW5lci5w
YXJlbnQoKSk7CisgICAgICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24gPSBH
cmlkTGF5b3V0RnVuY3Rpb25zOjpmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZChwYXJlbnQsIGdy
aWRDb250YWluZXIsIEZvclJvd3MpOworICAgICAgICByZXR1cm4gcGFyZW50LmdyaWRTcGFuRm9y
Q2hpbGQoZ3JpZENvbnRhaW5lciwgZGlyZWN0aW9uKS5pbnRlZ2VyU3BhbigpOworICAgIH0KKyAg
ICBhdXRvIHNwZWNpZmllZFJvd3MgPSBzcGVjaWZpZWRTdWJncmlkID8gMCA6IGdyaWRDb250YWlu
ZXIuc3R5bGUoKS5ncmlkUm93cygpLnNpemUoKTsKKyAgICByZXR1cm4gc3RkOjptaW48dW5zaWdu
ZWQ+KHN0ZDo6bWF4KHNwZWNpZmllZFJvd3MgKyBncmlkQ29udGFpbmVyLmF1dG9SZXBlYXRDb3Vu
dEZvckRpcmVjdGlvbihGb3JSb3dzKSwgZ3JpZENvbnRhaW5lci5zdHlsZSgpLm5hbWVkR3JpZEFy
ZWFSb3dDb3VudCgpKSwgR3JpZFBvc2l0aW9uOjptYXgoKSk7CiB9CiAKLXN0YXRpYyB1bnNpZ25l
ZCBsb29rQWhlYWRGb3JOYW1lZEdyaWRMaW5lKGludCBzdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZM
aW5lcywgdW5zaWduZWQgZ3JpZExhc3RMaW5lLCBOYW1lZExpbmVDb2xsZWN0aW9uJiBsaW5lc0Nv
bGxlY3Rpb24pCitzdGF0aWMgdW5zaWduZWQgbG9va0FoZWFkRm9yTmFtZWRHcmlkTGluZShpbnQg
c3RhcnQsIHVuc2lnbmVkIG51bWJlck9mTGluZXMsIE5hbWVkTGluZUNvbGxlY3Rpb24mIGxpbmVz
Q29sbGVjdGlvbikKIHsKICAgICBBU1NFUlQobnVtYmVyT2ZMaW5lcyk7CiAKQEAgLTE5NCwxMCAr
NDM2LDEwIEBAIHN0YXRpYyB1bnNpZ25lZCBsb29rQWhlYWRGb3JOYW1lZEdyaWRMaW5lKGludCBz
dGFydCwgdW5zaWduZWQgbnVtYmVyT2ZMaW5lcywgdW5zCiAgICAgdW5zaWduZWQgZW5kID0gc3Rk
OjptYXgoc3RhcnQsIDApOwogCiAgICAgaWYgKCFsaW5lc0NvbGxlY3Rpb24uaGFzTmFtZWRMaW5l
cygpKQotICAgICAgICByZXR1cm4gc3RkOjptYXgoZW5kLCBncmlkTGFzdExpbmUgKyAxKSArIG51
bWJlck9mTGluZXMgLSAxOworICAgICAgICByZXR1cm4gc3RkOjptYXgoZW5kLCBsaW5lc0NvbGxl
Y3Rpb24ubGFzdExpbmUoKSArIDEpICsgbnVtYmVyT2ZMaW5lcyAtIDE7CiAKICAgICBmb3IgKDsg
bnVtYmVyT2ZMaW5lczsgKytlbmQpIHsKLSAgICAgICAgaWYgKGVuZCA+IGdyaWRMYXN0TGluZSB8
fCBsaW5lc0NvbGxlY3Rpb24uY29udGFpbnMoZW5kKSkKKyAgICAgICAgaWYgKGVuZCA+IGxpbmVz
Q29sbGVjdGlvbi5sYXN0TGluZSgpIHx8IGxpbmVzQ29sbGVjdGlvbi5jb250YWlucyhlbmQpKQog
ICAgICAgICAgICAgbnVtYmVyT2ZMaW5lcy0tOwogICAgIH0KIApAQCAtMjA1LDEzICs0NDcsMTQg
QEAgc3RhdGljIHVuc2lnbmVkIGxvb2tBaGVhZEZvck5hbWVkR3JpZExpbmUoaW50IHN0YXJ0LCB1
bnNpZ25lZCBudW1iZXJPZkxpbmVzLCB1bnMKICAgICByZXR1cm4gZW5kIC0gMTsKIH0KIAotc3Rh
dGljIGludCBsb29rQmFja0Zvck5hbWVkR3JpZExpbmUoaW50IGVuZCwgdW5zaWduZWQgbnVtYmVy
T2ZMaW5lcywgaW50IGdyaWRMYXN0TGluZSwgTmFtZWRMaW5lQ29sbGVjdGlvbiYgbGluZXNDb2xs
ZWN0aW9uKQorc3RhdGljIGludCBsb29rQmFja0Zvck5hbWVkR3JpZExpbmUoaW50IGVuZCwgdW5z
aWduZWQgbnVtYmVyT2ZMaW5lcywgTmFtZWRMaW5lQ29sbGVjdGlvbiYgbGluZXNDb2xsZWN0aW9u
KQogewogICAgIEFTU0VSVChudW1iZXJPZkxpbmVzKTsKIAorCiAgICAgLy8gT25seSBpbXBsaWNp
dCBsaW5lcyBvbiB0aGUgc2VhcmNoIGRpcmVjdGlvbiBhcmUgYXNzdW1lZCB0byBoYXZlIHRoZSBn
aXZlbiBuYW1lLCBzbyB3ZSBjYW4gc3RhcnQgdG8gbG9vayBmcm9tIGxhc3QgbGluZS4KICAgICAv
LyBTZWU6IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtZ3JpZC8jZ3JpZC1wbGFjZW1lbnQt
c3Bhbi1pbnQKLSAgICBpbnQgc3RhcnQgPSBzdGQ6Om1pbihlbmQsIGdyaWRMYXN0TGluZSk7Cisg
ICAgaW50IHN0YXJ0ID0gc3RkOjptaW48aW50PihlbmQsIGxpbmVzQ29sbGVjdGlvbi5sYXN0TGlu
ZSgpKTsKIAogICAgIGlmICghbGluZXNDb2xsZWN0aW9uLmhhc05hbWVkTGluZXMoKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWluKHN0YXJ0LCAtMSkgLSBudW1iZXJPZkxpbmVzICsgMTsKQEAgLTIy
NCw0NSArNDY3LDQzIEBAIHN0YXRpYyBpbnQgbG9va0JhY2tGb3JOYW1lZEdyaWRMaW5lKGludCBl
bmQsIHVuc2lnbmVkIG51bWJlck9mTGluZXMsIGludCBncmlkTGFzCiAgICAgcmV0dXJuIHN0YXJ0
ICsgMTsKIH0KIAotc3RhdGljIGludCByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uRnJvbVN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGNvbnN0IEdyaWRQb3Np
dGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSwgdW5zaWduZWQgYXV0b1JlcGVh
dFRyYWNrc0NvdW50KQorc3RhdGljIGludCByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uRnJv
bVN0eWxlKGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWluZXIsIGNvbnN0IEdyaWRQb3NpdGlv
biYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkKIHsKICAgICBBU1NFUlQoIXBvc2l0
aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwoKSk7CiAKLSAgICB1bnNpZ25lZCBsYXN0TGluZSA9
IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXJTdHlsZSwgc2lkZSwgYXV0b1Jl
cGVhdFRyYWNrc0NvdW50KTsKLSAgICBOYW1lZExpbmVDb2xsZWN0aW9uIGxpbmVzQ29sbGVjdGlv
bihncmlkQ29udGFpbmVyU3R5bGUsIHBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKSwgZGlyZWN0aW9u
RnJvbVNpZGUoc2lkZSksIGxhc3RMaW5lLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgIE5h
bWVkTGluZUNvbGxlY3Rpb24gbGluZXNDb2xsZWN0aW9uKGdyaWRDb250YWluZXIsIHBvc2l0aW9u
Lm5hbWVkR3JpZExpbmUoKSwgc2lkZSk7CiAKICAgICBpZiAocG9zaXRpb24uaXNQb3NpdGl2ZSgp
KQotICAgICAgICByZXR1cm4gbG9va0FoZWFkRm9yTmFtZWRHcmlkTGluZSgwLCBzdGQ6OmFicyhw
b3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSksIGxhc3RMaW5lLCBsaW5lc0NvbGxlY3Rpb24pOwot
ICAgIHJldHVybiBsb29rQmFja0Zvck5hbWVkR3JpZExpbmUobGFzdExpbmUsIHN0ZDo6YWJzKHBv
c2l0aW9uLmludGVnZXJQb3NpdGlvbigpKSwgbGFzdExpbmUsIGxpbmVzQ29sbGVjdGlvbik7Cisg
ICAgICAgIHJldHVybiBsb29rQWhlYWRGb3JOYW1lZEdyaWRMaW5lKDAsIHN0ZDo6YWJzKHBvc2l0
aW9uLmludGVnZXJQb3NpdGlvbigpKSwgbGluZXNDb2xsZWN0aW9uKTsKKyAgICByZXR1cm4gbG9v
a0JhY2tGb3JOYW1lZEdyaWRMaW5lKGxpbmVzQ29sbGVjdGlvbi5sYXN0TGluZSgpLCBzdGQ6OmFi
cyhwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSksIGxpbmVzQ29sbGVjdGlvbik7CiB9CiAKLXN0
YXRpYyBHcmlkU3BhbiBkZWZpbml0ZUdyaWRTcGFuV2l0aE5hbWVkTGluZVNwYW5BZ2FpbnN0T3Bw
b3NpdGUoaW50IG9wcG9zaXRlTGluZSwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3Jp
ZFBvc2l0aW9uU2lkZSBzaWRlLCB1bnNpZ25lZCBsYXN0TGluZSwgTmFtZWRMaW5lQ29sbGVjdGlv
biYgbGluZXNDb2xsZWN0aW9uKQorc3RhdGljIEdyaWRTcGFuIGRlZmluaXRlR3JpZFNwYW5XaXRo
TmFtZWRMaW5lU3BhbkFnYWluc3RPcHBvc2l0ZShpbnQgb3Bwb3NpdGVMaW5lLCBjb25zdCBHcmlk
UG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUsIE5hbWVkTGluZUNvbGxl
Y3Rpb24mIGxpbmVzQ29sbGVjdGlvbikKIHsKICAgICBpbnQgc3RhcnQsIGVuZDsKICAgICBpZiAo
c2lkZSA9PSBSb3dTdGFydFNpZGUgfHwgc2lkZSA9PSBDb2x1bW5TdGFydFNpZGUpIHsKLSAgICAg
ICAgc3RhcnQgPSBsb29rQmFja0Zvck5hbWVkR3JpZExpbmUob3Bwb3NpdGVMaW5lIC0gMSwgcG9z
aXRpb24uc3BhblBvc2l0aW9uKCksIGxhc3RMaW5lLCBsaW5lc0NvbGxlY3Rpb24pOworICAgICAg
ICBzdGFydCA9IGxvb2tCYWNrRm9yTmFtZWRHcmlkTGluZShvcHBvc2l0ZUxpbmUgLSAxLCBwb3Np
dGlvbi5zcGFuUG9zaXRpb24oKSwgbGluZXNDb2xsZWN0aW9uKTsKICAgICAgICAgZW5kID0gb3Bw
b3NpdGVMaW5lOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHN0YXJ0ID0gb3Bwb3NpdGVMaW5lOwot
ICAgICAgICBlbmQgPSBsb29rQWhlYWRGb3JOYW1lZEdyaWRMaW5lKG9wcG9zaXRlTGluZSArIDEs
IHBvc2l0aW9uLnNwYW5Qb3NpdGlvbigpLCBsYXN0TGluZSwgbGluZXNDb2xsZWN0aW9uKTsKKyAg
ICAgICAgZW5kID0gbG9va0FoZWFkRm9yTmFtZWRHcmlkTGluZShvcHBvc2l0ZUxpbmUgKyAxLCBw
b3NpdGlvbi5zcGFuUG9zaXRpb24oKSwgbGluZXNDb2xsZWN0aW9uKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gR3JpZFNwYW46OnVudHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4oc3RhcnQsIGVuZCk7
CiB9CiAKLXN0YXRpYyBHcmlkU3BhbiByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5z
dE9wcG9zaXRlUG9zaXRpb24oY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwg
aW50IG9wcG9zaXRlTGluZSwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0
aW9uU2lkZSBzaWRlLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpCitzdGF0aWMgR3Jp
ZFNwYW4gcmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9u
KGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWluZXIsIGludCBvcHBvc2l0ZUxpbmUsIGNvbnN0
IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkKIHsKICAgICBB
U1NFUlQocG9zaXRpb24uaXNTcGFuKCkpOwogICAgIEFTU0VSVCghcG9zaXRpb24ubmFtZWRHcmlk
TGluZSgpLmlzTnVsbCgpKTsKICAgICAvLyBOZWdhdGl2ZSBwb3NpdGlvbnMgYXJlIG5vdCBhbGxv
d2VkIHBlciB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgc2hvdWxkIGhhdmUgYmVlbiBoYW5kbGVkIGR1
cmluZyBwYXJzaW5nLgogICAgIEFTU0VSVChwb3NpdGlvbi5zcGFuUG9zaXRpb24oKSA+IDApOwog
Ci0gICAgdW5zaWduZWQgbGFzdExpbmUgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShncmlkQ29u
dGFpbmVyU3R5bGUsIHNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7Ci0gICAgTmFtZWRMaW5l
Q29sbGVjdGlvbiBsaW5lc0NvbGxlY3Rpb24oZ3JpZENvbnRhaW5lclN0eWxlLCBwb3NpdGlvbi5u
YW1lZEdyaWRMaW5lKCksIGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpLCBsYXN0TGluZSwgYXV0b1Jl
cGVhdFRyYWNrc0NvdW50KTsKLSAgICByZXR1cm4gZGVmaW5pdGVHcmlkU3BhbldpdGhOYW1lZExp
bmVTcGFuQWdhaW5zdE9wcG9zaXRlKG9wcG9zaXRlTGluZSwgcG9zaXRpb24sIHNpZGUsIGxhc3RM
aW5lLCBsaW5lc0NvbGxlY3Rpb24pOworICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gbGluZXNDb2xs
ZWN0aW9uKGdyaWRDb250YWluZXIsIHBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKSwgc2lkZSk7Cisg
ICAgcmV0dXJuIGRlZmluaXRlR3JpZFNwYW5XaXRoTmFtZWRMaW5lU3BhbkFnYWluc3RPcHBvc2l0
ZShvcHBvc2l0ZUxpbmUsIHBvc2l0aW9uLCBzaWRlLCBsaW5lc0NvbGxlY3Rpb24pOwogfQogCi1z
dGF0aWMgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9u
KGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGludCBvcHBvc2l0ZUxpbmUs
IGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSwgdW5z
aWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KQorc3RhdGljIEdyaWRTcGFuIHJlc29sdmVHcmlk
UG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihjb25zdCBSZW5kZXJHcmlkJiBncmlkQ29u
dGFpbmVyLCBpbnQgb3Bwb3NpdGVMaW5lLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBH
cmlkUG9zaXRpb25TaWRlIHNpZGUpCiB7CiAgICAgaWYgKHBvc2l0aW9uLmlzQXV0bygpKSB7CiAg
ICAgICAgIGlmIChpc1N0YXJ0U2lkZShzaWRlKSkKQEAgLTI3NSw3ICs1MTYsNyBAQCBzdGF0aWMg
R3JpZFNwYW4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGNvbnN0
IFJlbmRlclN0eWxlJiBncgogCiAgICAgaWYgKCFwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNO
dWxsKCkpIHsKICAgICAgICAgLy8gc3BhbiAyICdjJyAtPiB3ZSBuZWVkIHRvIGZpbmQgdGhlIGFw
cHJvcHJpYXRlIGdyaWQgbGluZSBiZWZvcmUgLyBhZnRlciBvdXIgb3Bwb3NpdGUgcG9zaXRpb24u
Ci0gICAgICAgIHJldHVybiByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9z
aXRlUG9zaXRpb24oZ3JpZENvbnRhaW5lclN0eWxlLCBvcHBvc2l0ZUxpbmUsIHBvc2l0aW9uLCBz
aWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgICAgICByZXR1cm4gcmVzb2x2ZU5hbWVk
R3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGdyaWRDb250YWluZXIsIG9w
cG9zaXRlTGluZSwgcG9zaXRpb24sIHNpZGUpOwogICAgIH0KIAogICAgIC8vICdzcGFuIDEnIGlz
IGNvbnRhaW5lZCBpbnNpZGUgYSBzaW5nbGUgZ3JpZCB0cmFjayByZWdhcmRsZXNzIG9mIHRoZSBk
aXJlY3Rpb24uCkBAIC0zMTUsMjEgKzU1NiwyMSBAQCB1bnNpZ25lZCBHcmlkUG9zaXRpb25zUmVz
b2x2ZXI6OnNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oY29uc3QgUmVuZGVyQm94JiBncmlkSQog
ICAgIHJldHVybiBwb3NpdGlvbi5zcGFuUG9zaXRpb24oKTsKIH0KIAotc3RhdGljIGludCByZXNv
bHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVy
U3R5bGUsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lk
ZSwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KQorc3RhdGljIGludCByZXNvbHZlR3Jp
ZFBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWluZXIsIGNvbnN0
IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkKIHsKICAgICBz
d2l0Y2ggKHBvc2l0aW9uLnR5cGUoKSkgewogICAgIGNhc2UgRXhwbGljaXRQb3NpdGlvbjogewog
ICAgICAgICBBU1NFUlQocG9zaXRpb24uaW50ZWdlclBvc2l0aW9uKCkpOwogCiAgICAgICAgIGlm
ICghcG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJu
IHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUoZ3JpZENvbnRhaW5lclN0eWxl
LCBwb3NpdGlvbiwgc2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICAgICAgICAgIHJl
dHVybiByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uRnJvbVN0eWxlKGdyaWRDb250YWluZXIs
IHBvc2l0aW9uLCBzaWRlKTsKIAogICAgICAgICAvLyBIYW5kbGUgPGludGVnZXI+IGV4cGxpY2l0
IHBvc2l0aW9uLgogICAgICAgICBpZiAocG9zaXRpb24uaXNQb3NpdGl2ZSgpKQogICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpIC0gMTsKIAogICAgICAgICB1bnNp
Z25lZCByZXNvbHZlZFBvc2l0aW9uID0gc3RkOjphYnMocG9zaXRpb24uaW50ZWdlclBvc2l0aW9u
KCkpIC0gMTsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZUcmFjayA9IGV4cGxpY2l0R3Jp
ZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXJTdHlsZSwgc2lkZSwgYXV0b1JlcGVhdFRyYWNrc0Nv
dW50KTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZUcmFjayA9IGV4cGxpY2l0R3JpZFNp
emVGb3JTaWRlKGdyaWRDb250YWluZXIsIHNpZGUpOwogCiAgICAgICAgIHJldHVybiBlbmRPZlRy
YWNrIC0gcmVzb2x2ZWRQb3NpdGlvbjsKICAgICB9CkBAIC0zNDEsMTkgKzU4MiwxOCBAQCBzdGF0
aWMgaW50IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIGdy
aWRDb250YWluZXJTdHlsZSwgYwogICAgICAgICBTdHJpbmcgbmFtZWRHcmlkTGluZSA9IHBvc2l0
aW9uLm5hbWVkR3JpZExpbmUoKTsKICAgICAgICAgQVNTRVJUKCFwb3NpdGlvbi5uYW1lZEdyaWRM
aW5lKCkuaXNOdWxsKCkpOwogCi0gICAgICAgIHVuc2lnbmVkIGxhc3RMaW5lID0gZXhwbGljaXRH
cmlkU2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5lclN0eWxlLCBzaWRlLCBhdXRvUmVwZWF0VHJhY2tz
Q291bnQpOwotICAgICAgICBOYW1lZExpbmVDb2xsZWN0aW9uIGltcGxpY2l0TGluZXMoZ3JpZENv
bnRhaW5lclN0eWxlLCBpbXBsaWNpdE5hbWVkR3JpZExpbmVGb3JTaWRlKG5hbWVkR3JpZExpbmUs
IHNpZGUpLCBkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSwgbGFzdExpbmUsIGF1dG9SZXBlYXRUcmFj
a3NDb3VudCk7CisgICAgICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gaW1wbGljaXRMaW5lcyhncmlk
Q29udGFpbmVyLCBuYW1lZEdyaWRMaW5lLCBzaWRlLCB0cnVlKTsKICAgICAgICAgaWYgKGltcGxp
Y2l0TGluZXMuaGFzTmFtZWRMaW5lcygpKQogICAgICAgICAgICAgcmV0dXJuIGltcGxpY2l0TGlu
ZXMuZmlyc3RQb3NpdGlvbigpOwogCiAgICAgICAgIC8vIE90aGVyd2lzZSwgaWYgdGhlcmUgaXMg
YSBuYW1lZCBsaW5lIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLCBjb250cmlidXRlcyB0aGUgZmly
c3Qgc3VjaCBsaW5lIHRvIHRoZSBncmlkCiAgICAgICAgIC8vIGl0ZW0ncyBwbGFjZW1lbnQuCi0g
ICAgICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gZXhwbGljaXRMaW5lcyhncmlkQ29udGFpbmVyU3R5
bGUsIG5hbWVkR3JpZExpbmUsIGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpLCBsYXN0TGluZSwgYXV0
b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICAgICAgTmFtZWRMaW5lQ29sbGVjdGlvbiBleHBsaWNp
dExpbmVzKGdyaWRDb250YWluZXIsIG5hbWVkR3JpZExpbmUsIHNpZGUpOwogICAgICAgICBpZiAo
ZXhwbGljaXRMaW5lcy5oYXNOYW1lZExpbmVzKCkpCiAgICAgICAgICAgICByZXR1cm4gZXhwbGlj
aXRMaW5lcy5maXJzdFBvc2l0aW9uKCk7CiAKICAgICAgICAgLy8gSWYgbm9uZSBvZiB0aGUgYWJv
dmUgd29ya3Mgc3BlY3MgbWFuZGF0ZSB0byBhc3N1bWUgdGhhdCBhbGwgdGhlIGxpbmVzIGluIHRo
ZSBpbXBsaWNpdCBncmlkIGhhdmUgdGhpcyBuYW1lLgotICAgICAgICByZXR1cm4gbGFzdExpbmUg
KyAxOworICAgICAgICByZXR1cm4gZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5l
ciwgc2lkZSkgKyAxOwogICAgIH0KICAgICBjYXNlIEF1dG9Qb3NpdGlvbjoKICAgICBjYXNlIFNw
YW5Qb3NpdGlvbjoKQEAgLTM2NSw4ICs2MDUsMTEgQEAgc3RhdGljIGludCByZXNvbHZlR3JpZFBv
c2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGMK
ICAgICByZXR1cm4gMDsKIH0KIAotR3JpZFNwYW4gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNv
bHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5l
clN0eWxlLCBjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpCitHcmlkU3BhbiBH
cmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNvbnN0
IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24p
CiB7CisgICAgYXV0byogZ3JpZENvbnRhaW5lciA9IGRvd25jYXN0PFJlbmRlckdyaWQ+KGdyaWRJ
dGVtLmNvbnRhaW5pbmdCbG9jaygpKTsKKyAgICBBU1NFUlQoZ3JpZENvbnRhaW5lcik7CisKICAg
ICBHcmlkUG9zaXRpb24gaW5pdGlhbFBvc2l0aW9uLCBmaW5hbFBvc2l0aW9uOwogICAgIGFkanVz
dEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoZ3JpZEl0ZW0sIGRpcmVjdGlvbiwgaW5pdGlhbFBvc2l0
aW9uLCBmaW5hbFBvc2l0aW9uKTsKIApAQCAtMzc5LDE4ICs2MjIsMTggQEAgR3JpZFNwYW4gR3Jp
ZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSYKIAogICAgIGlmIChpbml0aWFsUG9zaXRpb24uc2hvdWxkQmVSZXNvbHZlZEFn
YWluc3RPcHBvc2l0ZVBvc2l0aW9uKCkpIHsKICAgICAgICAgLy8gSW5mZXIgdGhlIHBvc2l0aW9u
IGZyb20gdGhlIGZpbmFsIHBvc2l0aW9uICgnYXV0byAvIDEnIG9yICdzcGFuIDIgLyAzJyBjYXNl
KS4KLSAgICAgICAgYXV0byBlbmRMaW5lID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShn
cmlkQ29udGFpbmVyU3R5bGUsIGZpbmFsUG9zaXRpb24sIGZpbmFsU2lkZSwgYXV0b1JlcGVhdFRy
YWNrc0NvdW50KTsKLSAgICAgICAgcmV0dXJuIHJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bw
b3NpdGVQb3NpdGlvbihncmlkQ29udGFpbmVyU3R5bGUsIGVuZExpbmUsIGluaXRpYWxQb3NpdGlv
biwgaW5pdGlhbFNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgICAgIGF1dG8gZW5k
TGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoKmdyaWRDb250YWluZXIsIGZpbmFs
UG9zaXRpb24sIGZpbmFsU2lkZSk7CisgICAgICAgIHJldHVybiByZXNvbHZlR3JpZFBvc2l0aW9u
QWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oKmdyaWRDb250YWluZXIsIGVuZExpbmUsIGluaXRpYWxQ
b3NpdGlvbiwgaW5pdGlhbFNpZGUpOwogICAgIH0KIAogICAgIGlmIChmaW5hbFBvc2l0aW9uLnNo
b3VsZEJlUmVzb2x2ZWRBZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbigpKSB7CiAgICAgICAgIC8vIElu
ZmVyIG91ciBwb3NpdGlvbiBmcm9tIHRoZSBpbml0aWFsIHBvc2l0aW9uICgnMSAvIGF1dG8nIG9y
ICczIC8gc3BhbiAyJyBjYXNlKS4KLSAgICAgICAgYXV0byBzdGFydExpbmUgPSByZXNvbHZlR3Jp
ZFBvc2l0aW9uRnJvbVN0eWxlKGdyaWRDb250YWluZXJTdHlsZSwgaW5pdGlhbFBvc2l0aW9uLCBp
bml0aWFsU2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKLSAgICAgICAgcmV0dXJuIHJlc29s
dmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihncmlkQ29udGFpbmVyU3R5bGUs
IHN0YXJ0TGluZSwgZmluYWxQb3NpdGlvbiwgZmluYWxTaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291
bnQpOworICAgICAgICBhdXRvIHN0YXJ0TGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5
bGUoKmdyaWRDb250YWluZXIsIGluaXRpYWxQb3NpdGlvbiwgaW5pdGlhbFNpZGUpOworICAgICAg
ICByZXR1cm4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKCpncmlk
Q29udGFpbmVyLCBzdGFydExpbmUsIGZpbmFsUG9zaXRpb24sIGZpbmFsU2lkZSk7CiAgICAgfQog
Ci0gICAgaW50IHN0YXJ0TGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoZ3JpZENv
bnRhaW5lclN0eWxlLCBpbml0aWFsUG9zaXRpb24sIGluaXRpYWxTaWRlLCBhdXRvUmVwZWF0VHJh
Y2tzQ291bnQpOwotICAgIGludCBlbmRMaW5lID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHls
ZShncmlkQ29udGFpbmVyU3R5bGUsIGZpbmFsUG9zaXRpb24sIGZpbmFsU2lkZSwgYXV0b1JlcGVh
dFRyYWNrc0NvdW50KTsKKyAgICBpbnQgc3RhcnRMaW5lID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZy
b21TdHlsZSgqZ3JpZENvbnRhaW5lciwgaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFsU2lkZSk7Cisg
ICAgaW50IGVuZExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKCpncmlkQ29udGFp
bmVyLCBmaW5hbFBvc2l0aW9uLCBmaW5hbFNpZGUpOwogCiAgICAgaWYgKHN0YXJ0TGluZSA+IGVu
ZExpbmUpCiAgICAgICAgIHN0ZDo6c3dhcChzdGFydExpbmUsIGVuZExpbmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5o
CmluZGV4IDYyM2I2MmM2YzI0MS4uYmFmMjA0YjI3MGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5oCkBAIC0zNiw2
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JpZFNwYW47CiBjbGFzcyBS
ZW5kZXJCb3g7CitjbGFzcyBSZW5kZXJHcmlkOwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKIGVudW0g
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIHsKQEAgLTQzLDI4ICs0NCw0NSBAQCBlbnVtIEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiB7CiAgICAgRm9yUm93cwogfTsKIAotY2xhc3MgTmFtZWRMaW5l
Q29sbGVjdGlvbiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmFtZWRMaW5lQ29sbGVjdGlv
bik7CitjbGFzcyBOYW1lZExpbmVDb2xsZWN0aW9uQmFzZSB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoTmFtZWRMaW5lQ29sbGVjdGlvbkJhc2UpOwogcHVibGljOgotICAgIE5hbWVkTGluZUNv
bGxlY3Rpb24oY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBTdHJpbmcmIG5hbWVkTGluZSwgR3Jp
ZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCB1bnNpZ25lZCBsYXN0TGluZSwgdW5zaWduZWQgYXV0b1Jl
cGVhdFRyYWNrc0NvdW50KTsKLQotICAgIGJvb2wgaGFzTmFtZWRMaW5lcygpIGNvbnN0OwotICAg
IHVuc2lnbmVkIGZpcnN0UG9zaXRpb24oKSBjb25zdDsKKyAgICBOYW1lZExpbmVDb2xsZWN0aW9u
QmFzZShjb25zdCBSZW5kZXJHcmlkJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBHcmlkUG9zaXRpb25T
aWRlLCBib29sIG5hbWVJc0FyZWFOYW1lKTsKIAogICAgIGJvb2wgY29udGFpbnModW5zaWduZWQg
bGluZSkgY29uc3Q7Citwcm90ZWN0ZWQ6CiAKLXByaXZhdGU6Ci0gICAgYm9vbCBoYXNFeHBsaWNp
dE5hbWVkTGluZXMoKSBjb25zdDsKLSAgICB1bnNpZ25lZCBmaXJzdEV4cGxpY2l0UG9zaXRpb24o
KSBjb25zdDsKKyAgICB2b2lkIGVuc3VyZUxvY2FsU3RvcmFnZSgpOwogCiAgICAgY29uc3QgVmVj
dG9yPHVuc2lnbmVkPiogbV9uYW1lZExpbmVzSW5kZXhlcyB7IG51bGxwdHIgfTsKICAgICBjb25z
dCBWZWN0b3I8dW5zaWduZWQ+KiBtX2F1dG9SZXBlYXROYW1lZExpbmVzSW5kZXhlcyB7IG51bGxw
dHIgfTsKICAgICBjb25zdCBWZWN0b3I8dW5zaWduZWQ+KiBtX2ltcGxpY2l0TmFtZWRMaW5lc0lu
ZGV4ZXMgeyBudWxscHRyIH07CiAKKyAgICBWZWN0b3I8dW5zaWduZWQ+IG1faW5oZXJpdGVkTmFt
ZWRMaW5lc0luZGV4ZXM7CisKICAgICB1bnNpZ25lZCBtX2luc2VydGlvblBvaW50OwogICAgIHVu
c2lnbmVkIG1fbGFzdExpbmU7CiAgICAgdW5zaWduZWQgbV9hdXRvUmVwZWF0VG90YWxUcmFja3M7
CisgICAgdW5zaWduZWQgbV9hdXRvUmVwZWF0TGluZXM7CiAgICAgdW5zaWduZWQgbV9hdXRvUmVw
ZWF0VHJhY2tMaXN0TGVuZ3RoOworICAgIGJvb2wgbV9zdWJncmlkOworfTsKKworY2xhc3MgTmFt
ZWRMaW5lQ29sbGVjdGlvbiA6IHB1YmxpYyBOYW1lZExpbmVDb2xsZWN0aW9uQmFzZSB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTmFtZWRMaW5lQ29sbGVjdGlvbik7CitwdWJsaWM6CisgICAg
TmFtZWRMaW5lQ29sbGVjdGlvbihjb25zdCBSZW5kZXJHcmlkJiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBHcmlkUG9zaXRpb25TaWRlLCBib29sIG5hbWVJc0FyZWFOYW1lID0gZmFsc2UpOworCisgICAg
Ym9vbCBoYXNOYW1lZExpbmVzKCkgY29uc3Q7CisgICAgaW50IGZpcnN0UG9zaXRpb24oKSBjb25z
dDsKKworICAgIGJvb2wgY29udGFpbnModW5zaWduZWQgbGluZSkgY29uc3Q7CisKKyAgICB1bnNp
Z25lZCBsYXN0TGluZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIGJvb2wgaGFzRXhwbGljaXRO
YW1lZExpbmVzKCkgY29uc3Q7CisgICAgaW50IGZpcnN0RXhwbGljaXRQb3NpdGlvbigpIGNvbnN0
OwogfTsKIAogLy8gQ2xhc3Mgd2l0aCBhbGwgdGhlIGNvZGUgcmVsYXRlZCB0byBncmlkIGl0ZW1z
IHBvc2l0aW9ucyByZXNvbHV0aW9uLgpAQCAtNzMsOSArOTEsOSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEdyaWRQb3NpdGlvblNpZGUgaW5pdGlhbFBvc2l0aW9uU2lkZShHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24pOwogICAgIHN0YXRpYyBHcmlkUG9zaXRpb25TaWRlIGZpbmFsUG9zaXRpb25TaWRl
KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7CiAgICAgc3RhdGljIHVuc2lnbmVkIHNwYW5TaXpl
Rm9yQXV0b1BsYWNlZEl0ZW0oY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uKTsKLSAgICBzdGF0aWMgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24sIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7Ci0gICAgc3RhdGljIHVuc2ln
bmVkIGV4cGxpY2l0R3JpZENvbHVtbkNvdW50KGNvbnN0IFJlbmRlclN0eWxlJiwgdW5zaWduZWQg
YXV0b1JlcGVhdENvbHVtbnNDb3VudCk7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGV4cGxpY2l0R3Jp
ZFJvd0NvdW50KGNvbnN0IFJlbmRlclN0eWxlJiwgdW5zaWduZWQgYXV0b1JlcGVhdFJvd3NDb3Vu
dCk7CisgICAgc3RhdGljIEdyaWRTcGFuIHJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNv
bnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7CisgICAgc3RhdGljIHVu
c2lnbmVkIGV4cGxpY2l0R3JpZENvbHVtbkNvdW50KGNvbnN0IFJlbmRlckdyaWQmKTsKKyAgICBz
dGF0aWMgdW5zaWduZWQgZXhwbGljaXRHcmlkUm93Q291bnQoY29uc3QgUmVuZGVyR3JpZCYpOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1
aWxkZXJDdXN0b20uaAppbmRleCAyYWE0MjRmMmJiYWQuLmU4ODRlNWJjZmFjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTE5MzQsMTAgKzE5MzQsNiBA
QCBpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlR3JpZFRlbXBsYXRlQ29sdW1u
cyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdAogICAgIEJ1aWxkZXJDb252ZXJ0ZXI6OlRyYWNrc0Rh
dGEgdHJhY2tzRGF0YTsKICAgICBpZiAoIUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFj
a0xpc3QodmFsdWUsIHRyYWNrc0RhdGEsIGJ1aWxkZXJTdGF0ZSkpCiAgICAgICAgIHJldHVybjsK
LSAgICBjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVhcyA9IGJ1aWxkZXJTdGF0
ZS5zdHlsZSgpLm5hbWVkR3JpZEFyZWEoKTsKLSAgICBpZiAoIW5hbWVkR3JpZEFyZWFzLmlzRW1w
dHkoKSkKLSAgICAgICAgQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRM
aW5lc0Zyb21HcmlkQXJlYShuYW1lZEdyaWRBcmVhcywgdHJhY2tzRGF0YS5tX25hbWVkR3JpZExp
bmVzLCBGb3JDb2x1bW5zKTsKLQogICAgIFNFVF9UUkFDS1NfREFUQSh0cmFja3NEYXRhLCBidWls
ZGVyU3RhdGUuc3R5bGUoKSwgQ29sdW1uKTsKIH0KIApAQCAtMTk1Nyw5ICsxOTUzLDYgQEAgaW5s
aW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUdyaWRUZW1wbGF0ZVJvd3MoQnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUKICAgICBCdWlsZGVyQ29udmVydGVyOjpUcmFja3NEYXRhIHRy
YWNrc0RhdGE7CiAgICAgaWYgKCFCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0
KHZhbHVlLCB0cmFja3NEYXRhLCBidWlsZGVyU3RhdGUpKQogICAgICAgICByZXR1cm47Ci0gICAg
Y29uc3QgTmFtZWRHcmlkQXJlYU1hcCYgbmFtZWRHcmlkQXJlYXMgPSBidWlsZGVyU3RhdGUuc3R5
bGUoKS5uYW1lZEdyaWRBcmVhKCk7Ci0gICAgaWYgKCFuYW1lZEdyaWRBcmVhcy5pc0VtcHR5KCkp
Ci0gICAgICAgIEJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNG
cm9tR3JpZEFyZWEobmFtZWRHcmlkQXJlYXMsIHRyYWNrc0RhdGEubV9uYW1lZEdyaWRMaW5lcywg
Rm9yUm93cyk7CiAKICAgICBTRVRfVFJBQ0tTX0RBVEEodHJhY2tzRGF0YSwgYnVpbGRlclN0YXRl
LnN0eWxlKCksIFJvdyk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452078</attachid>
            <date>2022-02-15 13:09:29 -0800</date>
            <delta_ts>2022-02-15 21:51:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236338-20220216100928.patch</filename>
            <type>text/plain</type>
            <size>34860</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNlMGFjMDg4NDBkMzIx
OWMyNjgxMmEzNDg2MDRjZDQ5Yjk4MjNjMi4uMGQwNzA3MGRkZWQ0ZTM1NWMzNTQ1YjM5ZTlkZjYw
ZTQ0OWFjNDI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIyLTAyLTE0ICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgQWNjb3VudCBmb3Ig
c3ViZ3JpZCBNQlAgd2hlbiBzaXppbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNjMzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZHMgZXh0cmEgbWFyZ2luIHRvIHN1YmdyaWQgaXRlbXMgcGFydGlj
aXBhdGluZyBpbiB0aGUgc2l6aW5nIG9mIGFuIG91dGVyCisgICAgICAgIGdyaWQncyB0cmFja3Mg
dG8gYWNjb3VudCBmb3IgdGhlIG1hcmdpbi9ib3JkZXIvcGFkZGluZyBvZiB0aGUgaW50ZXJtZWRp
YXRlCisgICAgICAgIHN1YmdyaWQgaXRlbSBpdHNlbGYuCisgICAgICAgIEFsc28gY29udHJpYnV0
ZXMgdGhlIHN1YmdyaWQncyBtL2IvcCB0byB0aGUgZWRnZSB0cmFja3MgaXQgY292ZXIsIGV2ZW4K
KyAgICAgICAgaWYgbm8gaW5uZXIgaXRlbXMgb2NjdXB5IHRoYXQgdHJhY2suCisKKyAgICAgICAg
KiByZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmlkTGF5b3V0RnVuY3Rpb25zOjpkaXJlY3Rpb25Gcm9tU2lkZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmlkTGF5b3V0RnVuY3Rpb25zOjpoYXNSZWxhdGl2ZU9ySW50cmluc2ljU2l6ZUZvckNoaWxk
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRMYXlvdXRGdW5jdGlvbnM6OmV4dHJhTWFyZ2luRm9y
U3ViZ3JpZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRMYXlvdXRGdW5jdGlvbnM6Omdh
cERpZmZlcmVuY2VGb3JTdWJncmlkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZExheW91
dEZ1bmN0aW9uczo6bWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZCk6CisgICAgICAgICogcmVuZGVy
aW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRP
dmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVneTo6bG9naWNhbEhlaWdodEZv
ckNoaWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bVN0cmF0ZWd5Ojp1cGRhdGVPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JD
aGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZWZpbml0ZVNpemVTdHJhdGVneTo6bWlu
TG9naWNhbFNpemVGb3JDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZWZpbml0ZVNp
emVTdHJhdGVneTo6bWluQ29udGVudEZvckNoaWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OmFkZFN1YmdyaWRNYXJnaW5Cb3JkZXJQYWRkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRU
cmFja1NpemluZ0FsZ29yaXRobTo6YWNjdW11bGF0ZUludHJpbnNpY1NpemVzRm9yVHJhY2spOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckdyaWQ6OmlzU3ViZ3JpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjptYXlCZVN1YmdyaWRFeGNsdWRpbmdBYnNQb3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6Z3JpZFNwYW5Db3ZlcnNSZWFsVHJhY2tzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckdyaWQ6OmdyaWRBcmVhQnJlYWR0aEZvck91dE9mRmxvd0NoaWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVDb250ZW50UG9zaXRpb25BbmREaXN0
cmlidXRpb25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Z3JpZFNwYW5G
b3JDaGlsZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorCiAyMDIyLTAyLTE1ICBN
YXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CiAKICAgICAgICAgSW5jbHVkZSBz
dWIgZ3JpZCBpdGVtcyBpbiB0aGUgdHJhY2sgc2l6aW5nIGFsZ29yaXRobSBvZiB0aGUgb3V0ZXIg
Z3JpZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5j
dGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMu
Y3BwCmluZGV4IGViODE1ODdlODQxNmRjNjc1ZjI4OWFkYmFjOGU5ZTg2NzFkODVkNzQuLjhlYThl
NTRjNmM1M2M0NjM3ZjJmZTU0MDNkNTlmYzM2NjYzYTY3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTY2LDE1ICs2Niw4MyBA
QCBMYXlvdXRVbml0IGNvbXB1dGVNYXJnaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKGNvbnN0IFJlbmRl
ckdyaWQmIGdyaWQsIEdyaWRUcmFja1NpegogICAgIHJldHVybiBtYXJnaW5TdGFydElzQXV0byhj
aGlsZCwgZmxvd0F3YXJlRGlyZWN0aW9uKSA/IG1hcmdpbkVuZCA6IG1hcmdpbkVuZElzQXV0byhj
aGlsZCwgZmxvd0F3YXJlRGlyZWN0aW9uKSA/IG1hcmdpblN0YXJ0IDogbWFyZ2luU3RhcnQgKyBt
YXJnaW5FbmQ7CiB9CiAKK3N0YXRpYyBpbmxpbmUgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRp
cmVjdGlvbkZyb21TaWRlKEdyaWRQb3NpdGlvblNpZGUgc2lkZSkKK3sKKyAgICByZXR1cm4gc2lk
ZSA9PSBDb2x1bW5TdGFydFNpZGUgfHwgc2lkZSA9PSBDb2x1bW5FbmRTaWRlID8gRm9yQ29sdW1u
cyA6IEZvclJvd3M7Cit9CisKK3N0YXRpYyBib29sIGhhc1JlbGF0aXZlT3JJbnRyaW5zaWNTaXpl
Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
IGRpcmVjdGlvbikKK3sKKyAgICBpZiAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpCisgICAgICAg
IHJldHVybiBjaGlsZC5oYXNSZWxhdGl2ZUxvZ2ljYWxXaWR0aCgpIHx8IGNoaWxkLnN0eWxlKCku
bG9naWNhbFdpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKTsKKyAgICByZXR1cm4gY2hpbGQuaGFz
UmVsYXRpdmVMb2dpY2FsSGVpZ2h0KCkgfHwgY2hpbGQuc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCku
aXNJbnRyaW5zaWNPckF1dG8oKTsKK30KKworc3RhdGljIExheW91dFVuaXQgZXh0cmFNYXJnaW5G
b3JTdWJncmlkKGNvbnN0IFJlbmRlckdyaWQmIHBhcmVudCwgdW5zaWduZWQgc3RhcnRMaW5lLCB1
bnNpZ25lZCBlbmRMaW5lLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQorewor
ICAgIHVuc2lnbmVkIG51bVRyYWNrcyA9IHBhcmVudC5udW1UcmFja3MoZGlyZWN0aW9uKTsKKyAg
ICBpZiAoIW51bVRyYWNrcyB8fCAhcGFyZW50LmlzU3ViZ3JpZChkaXJlY3Rpb24pKQorICAgICAg
ICByZXR1cm4gMF9sdTsKKworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxl
U3BhY2U7CisgICAgaWYgKCFoYXNSZWxhdGl2ZU9ySW50cmluc2ljU2l6ZUZvckNoaWxkKHBhcmVu
dCwgZGlyZWN0aW9uKSkKKyAgICAgICAgYXZhaWxhYmxlU3BhY2UgPSBwYXJlbnQuYXZhaWxhYmxl
U3BhY2VGb3JHdXR0ZXJzKGRpcmVjdGlvbik7CisKKyAgICBSZW5kZXJHcmlkJiBncmFuZFBhcmVu
dCA9IGRvd25jYXN0PFJlbmRlckdyaWQ+KCpwYXJlbnQucGFyZW50KCkpOworICAgIExheW91dFVu
aXQgbWJwOworICAgIGlmICghc3RhcnRMaW5lKQorICAgICAgICBtYnAgKz0gKGRpcmVjdGlvbiA9
PSBGb3JDb2x1bW5zKSA/IHBhcmVudC5tYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nU3RhcnQoKSA6
IHBhcmVudC5tYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nQmVmb3JlKCk7CisgICAgZWxzZQorICAg
ICAgICBtYnAgKz0gKHBhcmVudC5ncmlkR2FwKGRpcmVjdGlvbiwgYXZhaWxhYmxlU3BhY2UpIC0g
Z3JhbmRQYXJlbnQuZ3JpZEdhcChkaXJlY3Rpb24pKSAvIDI7CisKKyAgICBpZiAoZW5kTGluZSA9
PSBudW1UcmFja3MpCisgICAgICAgIG1icCArPSAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8g
cGFyZW50Lm1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmdFbmQoKSA6IHBhcmVudC5tYXJnaW5BbmRC
b3JkZXJBbmRQYWRkaW5nQWZ0ZXIoKTsKKyAgICBlbHNlCisgICAgICAgIG1icCArPSAocGFyZW50
LmdyaWRHYXAoZGlyZWN0aW9uLCBhdmFpbGFibGVTcGFjZSkgLSBncmFuZFBhcmVudC5ncmlkR2Fw
KGRpcmVjdGlvbikpIC8gMjsKKworICAgIHJldHVybiBtYnA7Cit9CisKK3N0YXRpYyBMYXlvdXRV
bml0IGV4dHJhTWFyZ2luRm9yU3ViZ3JpZEFuY2VzdG9ycyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uLCBjb25zdCBSZW5kZXJCb3gmIGNoaWxkKQoreworICAgIGNvbnN0IFJlbmRl
ckdyaWQqIGdyaWQgPSBkb3duY2FzdDxSZW5kZXJHcmlkPihjaGlsZC5wYXJlbnQoKSk7CisgICAg
TGF5b3V0VW5pdCBtYnA7CisKKyAgICB3aGlsZSAoZ3JpZC0+aXNTdWJncmlkKGRpcmVjdGlvbikp
IHsKKyAgICAgICAgR3JpZFNwYW4gc3BhbiA9IGdyaWQtPmdyaWRTcGFuRm9yQ2hpbGQoY2hpbGQs
IGRpcmVjdGlvbik7CisKKyAgICAgICAgbWJwICs9IGV4dHJhTWFyZ2luRm9yU3ViZ3JpZCgqZ3Jp
ZCwgc3Bhbi5zdGFydExpbmUoKSwgc3Bhbi5lbmRMaW5lKCksIGRpcmVjdGlvbik7CisKKyAgICAg
ICAgY29uc3QgUmVuZGVyRWxlbWVudCogcGFyZW50ID0gZ3JpZC0+cGFyZW50KCk7CisgICAgICAg
IGlmICghcGFyZW50IHx8ICFpczxSZW5kZXJHcmlkPihwYXJlbnQpKQorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY29uc3QgUmVuZGVyR3JpZCogcGFyZW50R3JpZCA9IGRvd25jYXN0PFJl
bmRlckdyaWQ+KHBhcmVudCk7CisgICAgICAgIGRpcmVjdGlvbiA9IGZsb3dBd2FyZURpcmVjdGlv
bkZvclBhcmVudCgqZ3JpZCwgKnBhcmVudEdyaWQsIGRpcmVjdGlvbik7CisKKyAgICAgICAgZ3Jp
ZCA9IHBhcmVudEdyaWQ7CisgICAgfQorCisgICAgcmV0dXJuIG1icDsKK30KKwogTGF5b3V0VW5p
dCBtYXJnaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKGNvbnN0IFJlbmRlckdyaWQmIGdyaWQsIEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IFJlbmRlckJveCYgY2hpbGQpCiB7
CisgICAgTGF5b3V0VW5pdCBtYXJnaW47CiAgICAgaWYgKGNoaWxkLm5lZWRzTGF5b3V0KCkpCi0g
ICAgICAgIHJldHVybiBjb21wdXRlTWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZChncmlkLCBkaXJl
Y3Rpb24sIGNoaWxkKTsKLSAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZmxvd0F3YXJlRGly
ZWN0aW9uID0gZmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoZ3JpZCwgY2hpbGQsIGRpcmVjdGlv
bik7Ci0gICAgYm9vbCBpc1Jvd0F4aXMgPSBmbG93QXdhcmVEaXJlY3Rpb24gPT0gRm9yQ29sdW1u
czsKLSAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0ID0gbWFyZ2luU3RhcnRJc0F1dG8oY2hpbGQs
IGZsb3dBd2FyZURpcmVjdGlvbikgPyAwX2x1IDogaXNSb3dBeGlzID8gY2hpbGQubWFyZ2luU3Rh
cnQoKSA6IGNoaWxkLm1hcmdpbkJlZm9yZSgpOwotICAgIExheW91dFVuaXQgbWFyZ2luRW5kID0g
bWFyZ2luRW5kSXNBdXRvKGNoaWxkLCBmbG93QXdhcmVEaXJlY3Rpb24pID8gMF9sdSA6IGlzUm93
QXhpcyA/IGNoaWxkLm1hcmdpbkVuZCgpIDogY2hpbGQubWFyZ2luQWZ0ZXIoKTsKLSAgICByZXR1
cm4gbWFyZ2luU3RhcnQgKyBtYXJnaW5FbmQ7CisgICAgICAgIG1hcmdpbiA9IGNvbXB1dGVNYXJn
aW5Mb2dpY2FsU2l6ZUZvckNoaWxkKGdyaWQsIGRpcmVjdGlvbiwgY2hpbGQpOworICAgIGVsc2Ug
eworICAgICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZmxvd0F3YXJlRGlyZWN0aW9uID0g
Zmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoZ3JpZCwgY2hpbGQsIGRpcmVjdGlvbik7CisgICAg
ICAgIGJvb2wgaXNSb3dBeGlzID0gZmxvd0F3YXJlRGlyZWN0aW9uID09IEZvckNvbHVtbnM7Cisg
ICAgICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnQgPSBtYXJnaW5TdGFydElzQXV0byhjaGlsZCwg
Zmxvd0F3YXJlRGlyZWN0aW9uKSA/IDBfbHUgOiBpc1Jvd0F4aXMgPyBjaGlsZC5tYXJnaW5TdGFy
dCgpIDogY2hpbGQubWFyZ2luQmVmb3JlKCk7CisgICAgICAgIExheW91dFVuaXQgbWFyZ2luRW5k
ID0gbWFyZ2luRW5kSXNBdXRvKGNoaWxkLCBmbG93QXdhcmVEaXJlY3Rpb24pID8gMF9sdSA6IGlz
Um93QXhpcyA/IGNoaWxkLm1hcmdpbkVuZCgpIDogY2hpbGQubWFyZ2luQWZ0ZXIoKTsKKyAgICAg
ICAgbWFyZ2luID0gbWFyZ2luU3RhcnQgKyBtYXJnaW5FbmQ7CisgICAgfQorCisgICAgaWYgKCZn
cmlkICE9IGNoaWxkLnBhcmVudCgpKQorICAgICAgICBtYXJnaW4gKz0gZXh0cmFNYXJnaW5Gb3JT
dWJncmlkQW5jZXN0b3JzKGRpcmVjdGlvbiwgY2hpbGQpOworCisgICAgcmV0dXJuIG1hcmdpbjsK
IH0KIAogYm9vbCBpc09ydGhvZ29uYWxDaGlsZChjb25zdCBSZW5kZXJHcmlkJiBncmlkLCBjb25z
dCBSZW5kZXJCb3gmIGNoaWxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcAppbmRleCBkZTA0NzFlMDFmZjBkNzM2MGU5MmUw
OTIxMDRkZGEwOGU3ZTU4NWIzLi4yODMyOTZjMTI2NzBkOGY0ZDEwNmYyZmY4NDZmOTYzMGY2N2Q3
YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5n
QWxnb3JpdGhtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtLmNwcApAQCAtMTI1LDggKzEyNSwxMyBAQCBzdGF0aWMgYm9vbCBzaG91bGRD
bGVhck92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNvbnN0IFJl
bmRlcgogICAgIHJldHVybiBoYXNSZWxhdGl2ZU9ySW50cmluc2ljU2l6ZUZvckNoaWxkKGNoaWxk
LCBkaXJlY3Rpb24pIHx8IGhhc1JlbGF0aXZlTWFyZ2luT3JQYWRkaW5nRm9yQ2hpbGQoY2hpbGQs
IGRpcmVjdGlvbik7CiB9CiAKLXN0YXRpYyB2b2lkIHNldE92ZXJyaWRpbmdDb250YWluaW5nQmxv
Y2tDb250ZW50U2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gc2l6ZSkKK3N0YXRp
YyB2b2lkIHNldE92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNv
bnN0IFJlbmRlckdyaWQmIGdyaWQsIFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gc2l6ZSkKIHsKKyAg
ICAvLyBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIGRpbWVuc2lvbiBiYXNlZCBvbiB0aGUgd3JpdGlu
ZyBtb2RlIG9mIHRoZSBjb250YWluaW5nIGJsb2NrLgorICAgIC8vIEZvciBzdWJncmlkcywgdGhp
cyBtaWdodCBub3QgYmUgdGhlIG91dGVybW9zdCBncmlkLCBidXQgY291bGQgYmUgYSBzdWJncmlk
LiBJZiB0aGUKKyAgICAvLyB3cml0aW5nIG1vZGUgb2YgdGhlIENCIGFuZCB0aGUgZ3JpZCBmb3Ig
d2hpY2ggd2UncmUgZG9pbmcgc2l6aW5nIGRvbid0IG1hdGNoLCBzd2FwCisgICAgLy8gdGhlIGRp
cmVjdGlvbnMuCisgICAgZGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJl
RGlyZWN0aW9uRm9yQ2hpbGQoZ3JpZCwgKmNoaWxkLmNvbnRhaW5pbmdCbG9jaygpLCBkaXJlY3Rp
b24pOwogICAgIGlmIChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykKICAgICAgICAgY2hpbGQuc2V0
T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoc2l6ZSk7CiAgICAg
ZWxzZQpAQCAtNzk0LDcgKzc5OSw3IEBAIExheW91dFVuaXQgR3JpZFRyYWNrU2l6aW5nQWxnb3Jp
dGhtU3RyYXRlZ3k6OmxvZ2ljYWxIZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gmIGNoCiAgICAgLy8g
SWYgfGNoaWxkfCBoYXMgYSByZWxhdGl2ZSBsb2dpY2FsIGhlaWdodCwgd2Ugc2hvdWxkbid0IGxl
dCBpdCBvdmVycmlkZSBpdHMgaW50cmluc2ljIGhlaWdodCwgd2hpY2ggaXMKICAgICAvLyB3aGF0
IHdlIGFyZSBpbnRlcmVzdGVkIGluIGhlcmUuIFRodXMgd2UgbmVlZCB0byBzZXQgdGhlIGJsb2Nr
LWF4aXMgb3ZlcnJpZGUgc2l6ZSB0byBudWxsb3B0IChubyBwb3NzaWJsZSByZXNvbHV0aW9uKS4K
ICAgICBpZiAoc2hvdWxkQ2xlYXJPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVG
b3JDaGlsZChjaGlsZCwgRm9yUm93cykpIHsKLSAgICAgICAgc2V0T3ZlcnJpZGluZ0NvbnRhaW5p
bmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkQmxvY2tEaXJlY3Rpb24sIHN0
ZDo6bnVsbG9wdCk7CisgICAgICAgIHNldE92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50
U2l6ZUZvckNoaWxkKCpyZW5kZXJHcmlkKCksIGNoaWxkLCBjaGlsZEJsb2NrRGlyZWN0aW9uLCBz
dGQ6Om51bGxvcHQpOwogICAgICAgICBjaGlsZC5zZXROZWVkc0xheW91dChNYXJrT25seVRoaXMp
OwogICAgIH0KIApAQCAtOTU5LDEwICs5NjQsMTEgQEAgYm9vbCBHcmlkVHJhY2tTaXppbmdBbGdv
cml0aG1TdHJhdGVneTo6dXBkYXRlT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXoK
IHsKICAgICBpZiAoIW92ZXJyaWRlU2l6ZSkKICAgICAgICAgb3ZlcnJpZGVTaXplID0gbV9hbGdv
cml0aG0uZ3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQoY2hpbGQsIGRpcmVjdGlvbik7CisKICAgICBp
ZiAoR3JpZExheW91dEZ1bmN0aW9uczo6aGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRl
bnRTaXplRm9yQ2hpbGQoY2hpbGQsIGRpcmVjdGlvbikgJiYgR3JpZExheW91dEZ1bmN0aW9uczo6
b3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGRpcmVj
dGlvbikgPT0gb3ZlcnJpZGVTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzZXRP
dmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjaGlsZCwgZGlyZWN0
aW9uLCBvdmVycmlkZVNpemUpOworICAgIHNldE92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250
ZW50U2l6ZUZvckNoaWxkKCpyZW5kZXJHcmlkKCksIGNoaWxkLCBkaXJlY3Rpb24sIG92ZXJyaWRl
U2l6ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExMjIsNyArMTEyOCw3IEBAIExheW91
dFVuaXQgRGVmaW5pdGVTaXplU3RyYXRlZ3k6Om1pbkxvZ2ljYWxTaXplRm9yQ2hpbGQoUmVuZGVy
Qm94JiBjaGlsZCwgY29uc3QKICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZmxvd0F3YXJl
RGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hp
bGQoKnJlbmRlckdyaWQoKSwgY2hpbGQsIGRpcmVjdGlvbigpKTsKICAgICBpZiAoaGFzUmVsYXRp
dmVNYXJnaW5PclBhZGRpbmdGb3JDaGlsZChjaGlsZCwgZmxvd0F3YXJlRGlyZWN0aW9uKSB8fCAo
ZGlyZWN0aW9uKCkgIT0gY2hpbGRJbmxpbmVEaXJlY3Rpb24gJiYgaGFzUmVsYXRpdmVPckludHJp
bnNpY1NpemVGb3JDaGlsZChjaGlsZCwgZmxvd0F3YXJlRGlyZWN0aW9uKSkpIHsKICAgICAgICAg
YXV0byBpbmRlZmluaXRlU2l6ZSA9IGRpcmVjdGlvbigpID09IGNoaWxkSW5saW5lRGlyZWN0aW9u
ID8gc3RkOjptYWtlX29wdGlvbmFsKDBfbHUpIDogc3RkOjpudWxsb3B0OwotICAgICAgICBzZXRP
dmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjaGlsZCwgZGlyZWN0
aW9uKCksIGluZGVmaW5pdGVTaXplKTsKKyAgICAgICAgc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdC
bG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoKnJlbmRlckdyaWQoKSwgY2hpbGQsIGRpcmVjdGlvbigp
LCBpbmRlZmluaXRlU2l6ZSk7CiAgICAgfQogICAgIHJldHVybiBHcmlkVHJhY2tTaXppbmdBbGdv
cml0aG1TdHJhdGVneTo6bWluTG9naWNhbFNpemVGb3JDaGlsZChjaGlsZCwgY2hpbGRNaW5TaXpl
LCBhdmFpbGFibGVTaXplKTsKIH0KQEAgLTExNjcsNyArMTE3Myw3IEBAIExheW91dFVuaXQgRGVm
aW5pdGVTaXplU3RyYXRlZ3k6Om1pbkNvbnRlbnRGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkKSBj
b25zdAogewogICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBjaGlsZElubGluZURpcmVjdGlv
biA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKCpyZW5k
ZXJHcmlkKCksIGNoaWxkLCBGb3JDb2x1bW5zKTsKICAgICBpZiAoZGlyZWN0aW9uKCkgPT0gY2hp
bGRJbmxpbmVEaXJlY3Rpb24gJiYgY2hpbGQubmVlZHNMYXlvdXQoKSAmJiBzaG91bGRDbGVhck92
ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBGb3JDb2x1
bW5zKSkKLSAgICAgICAgc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9y
Q2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uLCBMYXlvdXRVbml0KCkpOworICAgICAg
ICBzZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZCgqcmVuZGVy
R3JpZCgpLCBjaGlsZCwgY2hpbGRJbmxpbmVEaXJlY3Rpb24sIExheW91dFVuaXQoKSk7CiAgICAg
cmV0dXJuIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobVN0cmF0ZWd5OjptaW5Db250ZW50Rm9yQ2hp
bGQoY2hpbGQpOwogfQogCkBAIC0xMjIyLDEyICsxMjI4LDM3IEBAIHZvaWQgR3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtOjppbml0aWFsaXplVHJhY2tTaXplcygpCiAgICAgfQogfQogCisvLyBodHRw
czovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWdyaWQtMi8jc3ViZ3JpZC1lZGdlLXBsYWNlaG9sZGVy
cworLy8gRklYTUU6IFRoaXMgaXMgYSBzaW1wbGlmaWNhdGlvbiBvZiB0aGUgc3BlY2lmaWVkIGJl
aGF2aW91ciwgd2hlcmUgd2UgYWRkIHRoZSBoeXBvdGhldGljYWwKKy8vIGl0ZW1zIGRpcmVjdGx5
IHRvIHRoZSBlZGdlIHRyYWNrcyBhcyBpZiB0aGV5IGhhZCBhIHNwYW4gb2YgMS4gVGhpcyBtYXRj
aGVzIHRoZSBjdXJyZW50IEdlY2tvCisvLyBiZWhhdmlvci4KK3N0YXRpYyB2b2lkIGFkZFN1Ymdy
aWRNYXJnaW5Cb3JkZXJQYWRkaW5nKFZlY3RvcjxHcmlkVHJhY2s+JiBhbGxUcmFja3MsIEdyaWRT
cGFuJiBzcGFuLCBSZW5kZXJHcmlkKiBzdWJncmlkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24g
cGFyZW50RGlyZWN0aW9uKQoreworICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rp
b24gPSBHcmlkTGF5b3V0RnVuY3Rpb25zOjpmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZCgqZG93
bmNhc3Q8UmVuZGVyR3JpZD4oc3ViZ3JpZC0+cGFyZW50KCkpLCAqc3ViZ3JpZCwgcGFyZW50RGly
ZWN0aW9uKTsKKworICAgIGlmIChhbGxUcmFja3Nbc3Bhbi5zdGFydExpbmUoKV0uY2FjaGVkVHJh
Y2tTaXplKCkuaGFzSW50cmluc2ljTWluVHJhY2tCcmVhZHRoKCkpIHsKKyAgICAgICAgTGF5b3V0
VW5pdCBtYnBTdGFydCA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBzdWJncmlkLT5tYXJn
aW5BbmRCb3JkZXJBbmRQYWRkaW5nU3RhcnQoKSA6IHN1YmdyaWQtPm1hcmdpbkFuZEJvcmRlckFu
ZFBhZGRpbmdCZWZvcmUoKTsKKyAgICAgICAgYWxsVHJhY2tzW3NwYW4uc3RhcnRMaW5lKCldLnNl
dEJhc2VTaXplKHN0ZDo6bWF4KGFsbFRyYWNrc1tzcGFuLnN0YXJ0TGluZSgpXS5iYXNlU2l6ZSgp
LCBtYnBTdGFydCkpOworICAgIH0KKyAgICBpZiAoYWxsVHJhY2tzW3NwYW4uZW5kTGluZSgpIC0g
MV0uY2FjaGVkVHJhY2tTaXplKCkuaGFzSW50cmluc2ljTWluVHJhY2tCcmVhZHRoKCkpIHsKKyAg
ICAgICAgTGF5b3V0VW5pdCBtYnBFbmQgPSAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gc3Vi
Z3JpZC0+bWFyZ2luQW5kQm9yZGVyQW5kUGFkZGluZ0VuZCgpIDogc3ViZ3JpZC0+bWFyZ2luQW5k
Qm9yZGVyQW5kUGFkZGluZ0FmdGVyKCk7CisgICAgICAgIGFsbFRyYWNrc1tzcGFuLmVuZExpbmUo
KSAtIDFdLnNldEJhc2VTaXplKHN0ZDo6bWF4KGFsbFRyYWNrc1tzcGFuLmVuZExpbmUoKSAtIDFd
LmJhc2VTaXplKCksIG1icEVuZCkpOworICAgIH0KK30KKwogdm9pZCBHcmlkVHJhY2tTaXppbmdB
bGdvcml0aG06OmFjY3VtdWxhdGVJbnRyaW5zaWNTaXplc0ZvclRyYWNrKEdyaWRUcmFjayYgdHJh
Y2ssIEdyaWRJdGVyYXRvciYgaXRlcmF0b3IsIFZlY3RvcjxHcmlkSXRlbVdpdGhTcGFuPiYgaXRl
bXNTb3J0ZWRCeUluY3JlYXNpbmdTcGFuLCBWZWN0b3I8R3JpZEl0ZW1XaXRoU3Bhbj4mIGl0ZW1z
Q3Jvc3NpbmdGbGV4aWJsZVRyYWNrcywgSGFzaFNldDxSZW5kZXJCb3gqPiYgaXRlbXNTZXQpCiB7
CisgICAgVmVjdG9yPEdyaWRUcmFjaz4mIGFsbFRyYWNrcyA9IHRyYWNrcyhtX2RpcmVjdGlvbik7
CisKICAgICB3aGlsZSAoYXV0byogZ3JpZEl0ZW0gPSBpdGVyYXRvci5uZXh0R3JpZEl0ZW0oKSkg
ewogICAgICAgICBib29sIGlzTmV3RW50cnkgPSBpdGVtc1NldC5hZGQoZ3JpZEl0ZW0pLmlzTmV3
RW50cnk7CiAgICAgICAgIGlmIChpczxSZW5kZXJHcmlkPihncmlkSXRlbSkgJiYgZG93bmNhc3Q8
UmVuZGVyR3JpZD4oZ3JpZEl0ZW0pLT5pc1N1YmdyaWRJblBhcmVudERpcmVjdGlvbihpdGVyYXRv
ci5kaXJlY3Rpb24oKSkpIHsKKyAgICAgICAgICAgIC8vIENvbnRyaWJ1dGUgdGhlIG1icCBvZiB3
cmFwcGVyIHRvIHRoZSBmaXJzdCBhbmQgbGFzdCB0cmFja3MgdGhhdCB3ZSBzcGFuLgogICAgICAg
ICAgICAgUmVuZGVyR3JpZCogaW5uZXIgPSBkb3duY2FzdDxSZW5kZXJHcmlkPihncmlkSXRlbSk7
CisgICAgICAgICAgICBpZiAoaXNOZXdFbnRyeSkgeworICAgICAgICAgICAgICAgIEdyaWRTcGFu
IHNwYW4gPSBtX3JlbmRlckdyaWQtPmdyaWRTcGFuRm9yQ2hpbGQoKmdyaWRJdGVtLCBtX2RpcmVj
dGlvbik7CisgICAgICAgICAgICAgICAgYWRkU3ViZ3JpZE1hcmdpbkJvcmRlclBhZGRpbmcoYWxs
VHJhY2tzLCBzcGFuLCBpbm5lciwgaXRlcmF0b3IuZGlyZWN0aW9uKCkpOworICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBHcmlkSXRlcmF0b3IgY2hpbGRJdGVyYXRvciA9IEdyaWRJdGVyYXRv
cjo6Y3JlYXRlRm9yU3ViZ3JpZCgqaW5uZXIsIGl0ZXJhdG9yKTsKICAgICAgICAgICAgIGFjY3Vt
dWxhdGVJbnRyaW5zaWNTaXplc0ZvclRyYWNrKHRyYWNrLCBjaGlsZEl0ZXJhdG9yLCBpdGVtc1Nv
cnRlZEJ5SW5jcmVhc2luZ1NwYW4sIGl0ZW1zQ3Jvc3NpbmdGbGV4aWJsZVRyYWNrcywgaXRlbXNT
ZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDIxN2VhNzk2
ZWVjZmE4MzJlZDg2MzBkMzQ2MmUzMWIwZWM3YmRmYzQuLjZmOWMzY2Y0NWZmNDBkYmI3MTMxZDBj
Mjg3ZGJkM2QwM2I3ZTZlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5j
cHAKQEAgLTE2NTAsMTcgKzE2NTAsMTYgQEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpyZXNvbHZl
QXV0b0VuZEdyaWRQb3NpdGlvbihHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWMKIAogYm9v
bCBSZW5kZXJHcmlkOjppc1N1YmdyaWQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlv
bikgY29uc3QKIHsKLSAgICBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgaXNFeGNsdWRl
ZEZyb21Ob3JtYWxMYXlvdXQoKSkKKyAgICBpZiAoIW1heUJlU3ViZ3JpZEV4Y2x1ZGluZ0Fic1Bv
cyhkaXJlY3Rpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKChkaXJlY3Rpb24g
PT0gRm9yQ29sdW1ucykgPyAhc3R5bGUoKS5ncmlkU3ViZ3JpZENvbHVtbnMoKSA6ICFzdHlsZSgp
LmdyaWRTdWJncmlkUm93cygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGlz
PFJlbmRlckdyaWQ+KHBhcmVudCgpKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyR3JpZD4o
cGFyZW50KCkpLT5ncmlkU3BhbkNvdmVyc1JlYWxUcmFja3MoKnRoaXMsIGRpcmVjdGlvbik7CiB9
CiAKIGJvb2wgUmVuZGVyR3JpZDo6aXNTdWJncmlkUm93cygpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGlzU3ViZ3JpZChGb3JSb3dzKTsKIH0KKwogYm9vbCBSZW5kZXJHcmlkOjppc1N1YmdyaWRDb2x1
bW5zKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNTdWJncmlkKEZvckNvbHVtbnMpOwpAQCAtMTY3
NCwyMyArMTY3Myw0OCBAQCBib29sIFJlbmRlckdyaWQ6OmlzU3ViZ3JpZEluUGFyZW50RGlyZWN0
aW9uKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBwYXJlbnREaXJlYwogICAgIHJldHVybiBpc1N1
YmdyaWQoZGlyZWN0aW9uKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpncmlkQXJlYUJy
ZWFkdGhGb3JPdXRPZkZsb3dDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQorYm9vbCBSZW5kZXJHcmlkOjptYXlCZVN1YmdyaWRF
eGNsdWRpbmdBYnNQb3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QK
IHsKLSAgICBBU1NFUlQoY2hpbGQuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOwotICAgIGJvb2wg
aXNSb3dBeGlzID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnM7Ci0gICAgR3JpZFNwYW4gc3BhbiA9
IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hp
bGQsIGRpcmVjdGlvbik7Ci0gICAgaWYgKHNwYW4uaXNJbmRlZmluaXRlKCkpCi0gICAgICAgIHJl
dHVybiBpc1Jvd0F4aXMgPyBjbGllbnRMb2dpY2FsV2lkdGgoKSA6IGNsaWVudExvZ2ljYWxIZWln
aHQoKTsKKyAgICAvLyBTaG91bGQgZXhjbHVkZSBjYXNlcyB3aGVyZSB3ZSBlc3RhYmxpc2ggYW4g
SUZDLCBsaWtlIGNvbnRhaW4gbGF5b3V0LgorICAgIGlmIChpc0V4Y2x1ZGVkRnJvbU5vcm1hbExh
eW91dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGRpcmVjdGlvbiA9PSBGb3JD
b2x1bW5zID8gIXN0eWxlKCkuZ3JpZFN1YmdyaWRDb2x1bW5zKCkgOiAhc3R5bGUoKS5ncmlkU3Vi
Z3JpZFJvd3MoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghaXM8UmVuZGVyR3Jp
ZD4ocGFyZW50KCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgUmVuZGVyR3JpZDo6Z3JpZFNwYW5Db3ZlcnNSZWFsVHJhY2tzKGNvbnN0IFJlbmRl
ckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Cit7
CisgICAgLy8gT25seSBvdXQgb2YgZmxvdyBwb3NpdGlvbmVkIGl0ZW1zIGNhbiBzcGFuIHRvIHRo
ZSBzcGVjaWFsIGxpbmUgdGhhdCBjb3ZlcnMKKyAgICAvLyB0aGUgcGFkZGluZyBhcmVhLgorICAg
IGlmICghY2hpbGQuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgdW5zaWduZWQgZXhwbGljaXRTdGFydCA9IG1fZ3JpZC5leHBsaWNpdEdyaWRTdGFy
dChkaXJlY3Rpb24pOwotICAgIGludCBzdGFydExpbmUgPSBzcGFuLnVudHJhbnNsYXRlZFN0YXJ0
TGluZSgpICsgZXhwbGljaXRTdGFydDsKLSAgICBpbnQgZW5kTGluZSA9IHNwYW4udW50cmFuc2xh
dGVkRW5kTGluZSgpICsgZXhwbGljaXRTdGFydDsKICAgICBpbnQgbGFzdExpbmUgPSBudW1UcmFj
a3MoZGlyZWN0aW9uLCBtX2dyaWQpOwotICAgIEdyaWRQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0g
ZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjaGlsZC5zdHlsZSgpLmdyaWRJdGVtQ29sdW1uU3Rh
cnQoKSA6IGNoaWxkLnN0eWxlKCkuZ3JpZEl0ZW1Sb3dTdGFydCgpOwotICAgIEdyaWRQb3NpdGlv
biBlbmRQb3NpdGlvbiA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY2hpbGQuc3R5bGUoKS5n
cmlkSXRlbUNvbHVtbkVuZCgpIDogY2hpbGQuc3R5bGUoKS5ncmlkSXRlbVJvd0VuZCgpOworICAg
IGludCBzdGFydExpbmUsIGVuZExpbmU7CisgICAgYm9vbCBzdGFydElzQXV0bywgZW5kSXNBdXRv
OworICAgIGlmICghY29tcHV0ZUdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoY2hpbGQsIGRpcmVj
dGlvbiwgc3RhcnRMaW5lLCBzdGFydElzQXV0bywgZW5kTGluZSwgZW5kSXNBdXRvKSkKKyAgICAg
ICAgcmV0dXJuIGxhc3RMaW5lID4gMDsKKworICAgIC8vIElmIHRoZSByZXN1bHRpbmcgc3BhbiBj
b3ZlcnMgb25seSB0aGUgcGFkZGluZyBhcmVhLCB0aGVuIGl0J3Mgbm90IGEgcmVhbAorICAgIC8v
IHRyYWNrIHRoYXQgY291bGQgYmUgdXNlZCBmb3IgYSBzdWJncmlkLgorICAgIGlmIChzdGFydElz
QXV0byAmJiAhZW5kTGluZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChlbmRJc0F1
dG8gJiYgc3RhcnRMaW5lID09IGxhc3RMaW5lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIHRydWU7Cit9CiAKLSAgICBib29sIHN0YXJ0SXNBdXRvID0gc3RhcnRQb3NpdGlvbi5p
c0F1dG8oKSB8fCBzdGFydExpbmUgPCAwIHx8IHN0YXJ0TGluZSA+IGxhc3RMaW5lOwotICAgIGJv
b2wgZW5kSXNBdXRvID0gZW5kUG9zaXRpb24uaXNBdXRvKCkgfHwgZW5kTGluZSA8IDAgfHwgZW5k
TGluZSA+IGxhc3RMaW5lOworTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpncmlkQXJlYUJyZWFkdGhG
b3JPdXRPZkZsb3dDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIGludCBsYXN0TGluZSA9IG51bVRyYWNrcyhkaXJl
Y3Rpb24sIG1fZ3JpZCk7CisgICAgYm9vbCBpc1Jvd0F4aXMgPSBkaXJlY3Rpb24gPT0gRm9yQ29s
dW1uczsKKyAgICBpbnQgc3RhcnRMaW5lLCBlbmRMaW5lOworICAgIGJvb2wgc3RhcnRJc0F1dG8s
IGVuZElzQXV0bzsKKyAgICBpZiAoIWNvbXB1dGVHcmlkU3BhbkZvck91dE9mRmxvd0NoaWxkKGNo
aWxkLCBkaXJlY3Rpb24sIHN0YXJ0TGluZSwgc3RhcnRJc0F1dG8sIGVuZExpbmUsIGVuZElzQXV0
bykpCisgICAgICAgIHJldHVybiBpc1Jvd0F4aXMgPyBjbGllbnRMb2dpY2FsV2lkdGgoKSA6IGNs
aWVudExvZ2ljYWxIZWlnaHQoKTsKIAogICAgIGlmIChzdGFydElzQXV0byAmJiBlbmRJc0F1dG8p
CiAgICAgICAgIHJldHVybiBpc1Jvd0F4aXMgPyBjbGllbnRMb2dpY2FsV2lkdGgoKSA6IGNsaWVu
dExvZ2ljYWxIZWlnaHQoKTsKQEAgLTE4NTYsNiArMTg4MCwxMSBAQCB2b2lkIFJlbmRlckdyaWQ6
OmNvbXB1dGVDb250ZW50UG9zaXRpb25BbmREaXN0cmlidXRpb25PZmZzZXQoR3JpZFRyYWNrU2l6
aW5nRGlyZQogICAgIGJvb2wgaXNSb3dBeGlzID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnM7CiAg
ICAgYXV0byYgb2Zmc2V0ID0KICAgICAgICAgaXNSb3dBeGlzID8gbV9vZmZzZXRCZXR3ZWVuQ29s
dW1ucyA6IG1fb2Zmc2V0QmV0d2VlblJvd3M7CisgICAgaWYgKGlzUm93QXhpcyA/IGlzU3ViZ3Jp
ZENvbHVtbnMoKSA6IGlzU3ViZ3JpZFJvd3MoKSkgeworICAgICAgICBvZmZzZXQucG9zaXRpb25P
ZmZzZXQgPSAwX2x1OworICAgICAgICBvZmZzZXQuZGlzdHJpYnV0aW9uT2Zmc2V0ID0gMF9sdTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBhdXRvIGNvbnRlbnRBbGlnbm1lbnREYXRhID0g
Y29udGVudEFsaWdubWVudChkaXJlY3Rpb24pOwogICAgIGF1dG8gcG9zaXRpb24gPSBjb250ZW50
QWxpZ25tZW50RGF0YS5wb3NpdGlvbigpOwogICAgIC8vIElmIDxjb250ZW50LWRpc3RyaWJ1dGlv
bj4gdmFsdWUgY2FuJ3QgYmUgYXBwbGllZCwgJ3Bvc2l0aW9uJyB3aWxsIGJlY29tZSB0aGUgYXNz
b2NpYXRlZApAQCAtMjA5NCw2ICsyMTIzLDcgQEAgR3JpZFNwYW4gUmVuZGVyR3JpZDo6Z3JpZFNw
YW5Gb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXIKICAg
ICAgICAgICAgIHNwYW4udHJhbnNsYXRlVG8ocGFyZW50U3BhbiwgR3JpZExheW91dEZ1bmN0aW9u
czo6aXNTdWJncmlkUmV2ZXJzZWREaXJlY3Rpb24oKnBhcmVudCwgZGlyZWN0aW9uLCAqcmVuZGVy
R3JpZCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzcGFuID0gcGFyZW50U3BhbjsKKwog
ICAgICAgICByZW5kZXJHcmlkID0gcGFyZW50OwogICAgIH0KICAgICByZXR1cm4gc3BhbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4IDc0NzdlMjdjYjEzZGUwYjYzNjM2
YzEzYTdkM2FmNzUzNWVhNzBjNTYuLmEzMTI5OTQwOTU0YTg5YTMxZTEyYzg3MmJkMjYwYzFmYzdk
YzhlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaApAQCAtOTAsNiArOTAs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1N1YmdyaWRDb2x1bW5zKCkgY29uc3Q7CiAgICAgYm9v
bCBpc1N1YmdyaWQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKICAgICBib29sIGlz
U3ViZ3JpZEluUGFyZW50RGlyZWN0aW9uKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBwYXJlbnRE
aXJlY3Rpb24pIGNvbnN0OworICAgIGJvb2wgbWF5QmVTdWJncmlkRXhjbHVkaW5nQWJzUG9zKEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAKICAgICBjb25zdCBHcmlkJiBjdXJyZW50
R3JpZCgpIGNvbnN0CiAgICAgewpAQCAtMTAzLDYgKzEwNCwxMCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHBsYWNlSXRlbXMoKTsKIAorICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxh
YmxlU3BhY2VGb3JHdXR0ZXJzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CisgICAg
TGF5b3V0VW5pdCBncmlkR2FwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CisgICAg
TGF5b3V0VW5pdCBncmlkR2FwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOwogCkBAIC0xMTksOCArMTI0LDYgQEAg
cHJpdmF0ZToKICAgICBib29sIHNlbGZBbGlnbm1lbnRDaGFuZ2VkVG9TdHJldGNoKEdyaWRBeGlz
LCBjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHls
ZSwgY29uc3QgUmVuZGVyQm94JikgY29uc3Q7CiAgICAgYm9vbCBzZWxmQWxpZ25tZW50Q2hhbmdl
ZEZyb21TdHJldGNoKEdyaWRBeGlzLCBjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgUmVuZGVyQm94JikgY29uc3Q7CiAKLSAgICBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNwYWNlRm9yR3V0dGVycyhHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwotCiAgICAgYm9vbCBleHBsaWNpdEdyaWREaWRSZXNp
emUoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKICAgICBib29sIG5hbWVkR3JpZExpbmVzRGVm
aW5pdGlvbkRpZENoYW5nZShjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogICAgIGJvb2wgaW1w
bGljaXRHcmlkTGluZXNEZWZpbml0aW9uRGlkQ2hhbmdlKGNvbnN0IFJlbmRlclN0eWxlJikgY29u
c3Q7CkBAIC0yMDAsOSArMjAzLDYgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IGNvbHVtbkF4
aXNCYXNlbGluZU9mZnNldEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYpIGNvbnN0OwogICAgIExh
eW91dFVuaXQgcm93QXhpc0Jhc2VsaW5lT2Zmc2V0Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94Jikg
Y29uc3Q7CiAKLSAgICBMYXlvdXRVbml0IGdyaWRHYXAoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
KSBjb25zdDsKLSAgICBMYXlvdXRVbml0IGdyaWRHYXAoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNpemUpIGNvbnN0OwotCiAgICAg
dW5zaWduZWQgbm9uQ29sbGFwc2VkVHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29u
c3Q7CiAgICAgdW5zaWduZWQgbnVtVHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29u
c3QgR3JpZCYpIGNvbnN0OwogCkBAIC0yMTcsNiArMjE3LDcgQEAgcHJpdmF0ZToKIAogICAgIEdy
aWRTcGFuIGdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKICAgICBib29sIGNvbXB1dGVHcmlkU3BhbkZvck91
dE9mRmxvd0NoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwg
aW50JiwgYm9vbCYsIGludCYsIGJvb2wmKSBjb25zdDsKKyAgICBib29sIGdyaWRTcGFuQ292ZXJz
UmVhbFRyYWNrcyhjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNv
bnN0OwogCiAgICAgR3JpZCBtX2dyaWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5jcHAKaW5kZXggZDkwNDFhNjIz
YmQwNjFkYjA3M2Y0OTBjZjJjZDUxZDI3ZjgwNDVlYy4uZjg2NWZkMGNmZWE0YjIwODY2NDUzYTcx
NDQ1ZWViNTg0NzgwODg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5jcHAKQEAgLTM4Miw3ICszODIsMTAgQEAg
c3RhdGljIHZvaWQgYWRqdXN0R3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJCb3gm
IGdyaWRJdGVtLCBHcmlkVHJhY2tTaXoKICAgICBpZiAoZmluYWxQb3NpdGlvbi5pc0F1dG8oKSAm
JiBpbml0aWFsUG9zaXRpb24uaXNTcGFuKCkgJiYgIWluaXRpYWxQb3NpdGlvbi5uYW1lZEdyaWRM
aW5lKCkuaXNOdWxsKCkpCiAgICAgICAgIGluaXRpYWxQb3NpdGlvbi5zZXRTcGFuUG9zaXRpb24o
MSwgU3RyaW5nKCkpOwogCi0gICAgaWYgKGlzSW5kZWZpbml0ZVNwYW4oaW5pdGlhbFBvc2l0aW9u
LCBmaW5hbFBvc2l0aW9uKSAmJiBpczxSZW5kZXJHcmlkPihncmlkSXRlbSkgJiYgZG93bmNhc3Q8
UmVuZGVyR3JpZD4oZ3JpZEl0ZW0pLmlzU3ViZ3JpZChkaXJlY3Rpb24pKSB7CisgICAgLy8gQWJz
b2x1dGVseSBwb3NpdGlvbmVkIGl0ZW1zIHNwZWNpZnlpbmcgc3ViZ3JpZCBtaWdodCBub3QgYWN0
dWFsbHkgYmUgYSBzdWJncmlkIGlmIHRoZWlyIGdyaWQKKyAgICAvLyBzcGFuIGRvZXNuJ3QgY292
ZXIgYW55IHRyYWNrcyBhbmQgb25seSB0aGUgcGFkZGluZyBhcmVhLiBXZSBkb24ndCBrbm93IGlm
IHRoYXQgaXMgdGhlIGNhc2UgdW50aWwKKyAgICAvLyB3ZSd2ZSBmaWd1cmVkIG91dCB0aGVpciBn
cmlkIHBvc2l0aW9uIHRob3VnaCwgd2hpY2ggaXMgd2hhdCB3ZSdyZSB0cnlpbmcgdG8gZG8gbm93
LgorICAgIGlmIChpc0luZGVmaW5pdGVTcGFuKGluaXRpYWxQb3NpdGlvbiwgZmluYWxQb3NpdGlv
bikgJiYgaXM8UmVuZGVyR3JpZD4oZ3JpZEl0ZW0pICYmIGRvd25jYXN0PFJlbmRlckdyaWQ+KGdy
aWRJdGVtKS5tYXlCZVN1YmdyaWRFeGNsdWRpbmdBYnNQb3MoZGlyZWN0aW9uKSkgewogICAgICAg
ICAvLyBJbmRlZmluaXRlIHNwYW4gZm9yIGFuIGl0ZW0gdGhhdCBpcyBzdWJncmlkZGVkIGluIHRo
aXMgYXhpcy4KICAgICAgICAgaW50IGxpbmVDb3VudCA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5z
ID8gZ3JpZEl0ZW0uc3R5bGUoKS5vcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKS5zaXplKCkg
OiBncmlkSXRlbS5zdHlsZSgpLm9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpLnNpemUoKTsKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDg2NTkwYmIyY2E3YTk4MmY0NWE4N2EwYzVlNjk0MDhlMTBhY2M1OGEuLmI5YjkyMTQ3
MGVlYTZkZmI5OWE1YWU3Njc0YjAzODc0YTlhNTNlMWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAyMi0wMi0xNCAgTWF0dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgorCisgICAg
ICAgIEFjY291bnQgZm9yIHN1YmdyaWQgTUJQIHdoZW4gc2l6aW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYzMzgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2NvdW50IGZvciBzdWJncmlkIE1CUCB3
aGVuIHNpemluZworCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMi0wMi0xNSAg
TWF0dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgogCiAgICAgICAgIEluY2x1ZGUg
c3ViIGdyaWQgaXRlbXMgaW4gdGhlIHRyYWNrIHNpemluZyBhbGdvcml0aG0gb2YgdGhlIG91dGVy
IGdyaWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGIzMjI5OTBhOGE1NzNiMzM2
ZDJlOWZkNmQ1NTBhYjVhNzlmZDQyODcuLjE4MmViM2ZhZDJhZDJlMzg4NTNkOTI1YmVmYzY2NTNi
ZjVhNTIwMzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDIyLTAyLTE0ICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAg
ICAgICAgQWNjb3VudCBmb3Igc3ViZ3JpZCBNQlAgd2hlbiBzaXppbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjMzOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1wb3MtMDAyLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1wb3MtMDAzLWV4cGVj
dGVkLmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJn
cmlkL2xpbmUtbmFtZXMtMDA4Lmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1yZXBlYXQtYXV0by1maXQtMDAxLmh0bWw6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1yZXBl
YXQtYXV0by1maXQtMDAyLmh0bWw6CisKIDIwMjItMDItMTUgIE1hdHQgV29vZHJvdyAgPG1hdHR3
b29kcm93QGFwcGxlLmNvbT4KIAogICAgICAgICBMb29rdXAgbGluZSBuYW1lcyBmb3Igc3ViIGdy
aWRzIHVzaW5nIGxpbmUgbmFtZXMgZnJvbSBhbmNlc3RvciBncmlkcwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggMGNmMGEwYjczNTQ3ZjA0YzI3ZjczNTc0OTllOWI0MjIyNjRiOWVhNS4uM2FjNjE2MDNj
MGUwNDgzM2MxZGVkODc5ZjQyNGE0NDVmOWJlYzFiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0x
NDAzLDI3ICsxNDAzLDE1IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL21hc29ucnkvdGVudGF0aXZlL21hc29ucnktc3ViZ3JpZC0wCiAKIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvYXV0by10cmFjay1zaXpp
bmctMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvYWJzLXBvcy0wMDIuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQv
c3ViZ3JpZC9hYnMtcG9zLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1wb3MtMDA0Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1ncmlkL3N1YmdyaWQvYmFzZWxpbmUtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQv
Z3JpZC1nYXAtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtMDAyLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1n
YXAtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtMDA3Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlk
L3N1YmdyaWQvZ3JpZC1nYXAtbGFyZ2VyLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQt
Z2FwLWxhcmdlci0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC1zbWFsbGVyLTAw
MS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2l0ZW0tcGVyY2VudGFnZS1oZWlnaHQtMDAxLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9v
cnRob2dvbmFsLXdyaXRpbmctbW9kZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9vcnRob2dv
bmFsLXdyaXRpbmctbW9kZS0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9vcnRob2dvbmFsLXdy
aXRpbmctbW9kZS0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9vcnRob2dvbmFsLXdyaXRpbmct
bW9kZS0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9wYXJlbnQtcmVwZWF0LWF1dG8tZml0LTAw
MS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1yZXBlYXQtYXV0by1maXQtMDAyLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1ncmlkL3N1YmdyaWQvcmVwZWF0LWF1dG8tZmlsbC0wMDMuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3Vi
Z3JpZC9yZXBlYXQtYXV0by1maWxsLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3N1YmdyaWQt
bWJwLW92ZXJmbG93LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3N1YmdyaWQtbWJwLW92ZXJm
bG93LTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3N1YmdyaWQtbWJwLW92ZXJmbG93LTAwMy5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1wb3MtMDAy
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1wb3MtMDAyLWV4cGVjdGVkLmh0bWwKaW5kZXgg
MTM1NDI2MGQ1MGJlMTU1ZjE4YmVkN2Y5MjQxNDM4MDBjNjlmNmI1MS4uNjllMDcxYzc1OGI2NTcy
NGQ0OWFmMjNlY2Q3ZDNkNzdkMTk3MGUzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9hYnMtcG9zLTAw
Mi1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvYWJzLXBvcy0wMDItZXhwZWN0ZWQuaHRtbApA
QCAtNjEsNyArNjEsNyBAQCB4IHsKIDxkaXYgY2xhc3M9ImdyaWQiPgogPGk+PC9pPjxpPjwvaT48
aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPgog
PGRpdiBjbGFzcz0ic3ViZ3JpZCI+Ci0gIDx4IHN0eWxlPSJncmlkLWNvbHVtbjozOyByaWdodDoy
N3B4Ij54PC94PgorICA8eCBzdHlsZT0iZ3JpZC1jb2x1bW46MzsgcmlnaHQ6MzNweCI+eDwveD4K
IDwvZGl2PgogPC9kaXY+CiAKQEAgLTExNyw3ICsxMTcsNyBAQCB4IHsKIDxkaXYgY2xhc3M9Imdy
aWQiPgogPGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxp
PjwvaT48aT48L2k+PGk+PC9pPgogPGRpdiBjbGFzcz0ic3ViZ3JpZCBociI+Ci0gIDx4IHN0eWxl
PSJncmlkLWNvbHVtbjphdXRvLzE7IGxlZnQ6LTI3cHgiPng8L3g+CisgIDx4IHN0eWxlPSJncmlk
LWNvbHVtbjphdXRvLzE7IGxlZnQ6LTMzcHgiPng8L3g+CiA8L2Rpdj4KIDwvZGl2PgogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtZ3JpZC9zdWJncmlkL2Ficy1wb3MtMDAzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1w
b3MtMDAzLWV4cGVjdGVkLmh0bWwKaW5kZXggMTkxODAxMDZlNTQ4YzhhMTgzYmE5MDNiN2I5YzZm
M2U0NDNkNzlhOS4uNWI4N2ZiM2E5NzZhNjgyMWNiMmNhY2E3YTdkNWUwNDkyMGRiYzYyNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWdyaWQvc3ViZ3JpZC9hYnMtcG9zLTAwMy1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQv
YWJzLXBvcy0wMDMtZXhwZWN0ZWQuaHRtbApAQCAtNDAsMTUgKzQwLDYgQEAgYSB7CiAgIGJhY2tn
cm91bmQ6IHB1cnBsZTsKIH0KIAotLmEgPiAudDEgPiB4IHsKLSAgbWFyZ2luOiAtMTBweCAwIDAg
LTEwcHg7Ci19Ci0uYSA+IC50MiA+IHgsCi0uYyA+IC50MiA+IHgsCi0uYyA+IC50MSA+IHggewot
ICBtYXJnaW46IDAgMCAwIC0xMHB4OwotfQotCiA8L3N0eWxlPgogPC9oZWFkPgogPGJvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA4Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFt
ZXMtMDA4Lmh0bWwKaW5kZXggN2I5NTkxMjBjMzFiNWI1OGFiZGRiZTY2NWY4N2U0NWJlYTcwM2Yy
Zi4uNTZlYTk2MTI5ODliMDY3Y2M1NTE5NmQ4NjhjZTExOWY5MDIwNTUzMCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQv
c3ViZ3JpZC9saW5lLW5hbWVzLTAwOC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDgu
aHRtbApAQCAtMTQ2LDE0ICsxNDYsMTQgQEAgeCB7CiAgIDwvZGl2PgogPC9kaXY+CiAKLTxkaXYg
Y2xhc3M9ImdyaWQiIHN0eWxlPSJncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLDMwcHgp
IFthXSAzMHB4IHJlcGVhdCg3LDMwcHgpIj4KKzxkaXYgY2xhc3M9ImdyaWQiIHN0eWxlPSJncmlk
LXRlbXBsYXRlLWNvbHVtbnM6IDMwcHggW2FdIHJlcGVhdCgyLDMwcHgpIFthXSAzMHB4IHJlcGVh
dCg3LDMwcHgpIj4KIDxuPjwvbj48bj48L24+PG4+PC9uPjxuPjwvbj48bj48L24+PG4+PC9uPjxu
Pjwvbj48bj48L24+PG4+PC9uPjxuPjwvbj4KICAgPGRpdiBjbGFzcz0iaHIiIHN0eWxlPSJncmlk
LXRlbXBsYXRlLWNvbHVtbnM6IHN1YmdyaWQgW10gW10gW10gW10gW2FdOyBncmlkLWNvbHVtbjoy
L3NwYW4gNiI+CiAgICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiBhL3NwYW4gYSI+eDwveD4KICAg
PC9kaXY+CiA8L2Rpdj4KIAotPGRpdiBjbGFzcz0iZ3JpZCIgc3R5bGU9ImdyaWQtdGVtcGxhdGUt
Y29sdW1uczogcmVwZWF0KDMsMzBweCkgW2FdIDMwcHggcmVwZWF0KDcsMzBweCkiPgorPGRpdiBj
bGFzcz0iZ3JpZCIgc3R5bGU9ImdyaWQtdGVtcGxhdGUtY29sdW1uczogMzBweCBbYV0gcmVwZWF0
KDIsMzBweCkgW2FdIDMwcHggcmVwZWF0KDcsMzBweCkiPgogPG4+PC9uPjxuPjwvbj48bj48L24+
PG4+PC9uPjxuPjwvbj48bj48L24+PG4+PC9uPjxuPjwvbj48bj48L24+PG4+PC9uPgogICA8ZGl2
IGNsYXNzPSJociIgc3R5bGU9ImdyaWQtdGVtcGxhdGUtY29sdW1uczogc3ViZ3JpZCBbXSBbXSBb
XSBbXSBbYV07IGdyaWQtY29sdW1uOjIvc3BhbiA2Ij4KICAgICA8eCBzdHlsZT0iZ3JpZC1jb2x1
bW46IGEvYSAyIj54PC94PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9wYXJlbnQtcmVwZWF0LWF1dG8t
Zml0LTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9wYXJlbnQtcmVwZWF0LWF1dG8tZml0LTAwMS5odG1sCmlu
ZGV4IDEyMDEwYzMyZjI5YzY3MjIyODYxZThhM2UxZjJiYzIwZTY1MGFmMWEuLmU1MTMwOWJiNmEw
NTk2NmU4OGExNjIxMTFmZTZlNmUyOGZkN2I4ZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcGFyZW50
LXJlcGVhdC1hdXRvLWZpdC0wMDEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1yZXBlYXQtYXV0
by1maXQtMDAxLmh0bWwKQEAgLTQzNSw4ICs0MzUsOCBAQCBodG1sLGJvZHkgewogCiA8c2NyaXB0
PgogICBjb25zdCBleHBlY3RlZFJlc3VsdHMgPSBbCi0gICAgIlt5XSAwcHggW3pdIDFweCBbel0g
MXB4IFt6XSAxcHggW3pdIDFweCBbel0iLAotICAgICJbeCB5XSAwcHggW3pdIDFweCBbel0gMXB4
IFt6XSAxcHggW3pdIiwKKyAgICAiW3ldIDBweCBbel0gMXB4IFt6XSAxcHggW3pdIDFweCBbel0g
MXB4IFt6XSA0NnB4IiwKKyAgICAiW3ggeV0gMHB4IFt6XSAxcHggW3pdIDFweCBbel0gMXB4IFt6
XSAyMy41cHggMjMuNXB4IiwKICAgICAiW3hdIDFweCBbeCB5XSAwcHggW3ldIDEwcHggW3ldIDEw
cHggW3ldIDEwcHggW3pdIDFweCBbel0gMXB4IFt6XSIsCiAgICAgIlt4XSAycHggW3hdIDJweCBb
eCB5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt6XSAxcHggW3pdIiwKICAgICAi
W3hdIDJweCBbeF0gMnB4IFt4XSAycHggW3ggeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0g
MHB4IFt6XSIsCkBAIC00NTQsMTUgKzQ1NCwxNSBAQCBodG1sLGJvZHkgewogICAgICJbeF0gMnB4
IFt4XSAycHggW3ggeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbel0iLAogICAg
ICJbeF0gMnB4IFt4XSAycHggW3hdIDJweCBbeCB5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5
XSAwcHgiLAogICAgICJbeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3pdIDFweCBb
el0gMXB4IFt6XSIsCi0gICAgIlt4IHldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt6
XSAxcHggW3pdIiwKLSAgICAiW3hdIDJweCBbeCB5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3ld
IDEwcHggW3pdIiwKKyAgICAiW3ggeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3pd
IDFweCBbel0gMjlweCIsCisgICAgIlt4XSAycHggW3ggeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4
IFt5XSAxMHB4IFt6XSAxOHB4IiwKICAgICAiW3hdIDJweCBbeF0gMnB4IFt4IHldIDEwcHggW3ld
IDEwcHggW3ldIDEwcHggW3ldIDEwcHgiLAotICAgICJbeV0gMHB4IFt5XSAwcHggW3ldIDEwcHgg
W3ldIDEwcHggW3pdIDFweCBbel0iLAotICAgICJbeCB5XSAwcHggW3ldIDBweCBbeV0gMTBweCBb
eV0gMTBweCBbeV0gMTBweCBbel0iLAotICAgICJbeF0gMnB4IFt4IHldIDBweCBbeV0gMTBweCBb
eV0gMTBweCBbeV0gMTBweCIsCi0gICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBw
eCBbeV0gMTBweCBbel0iLAotICAgICJbeCB5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBw
eCBbeV0gMTBweCIsCi0gICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0g
MTBweCIsCisgICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbel0gMXB4IFt6
XSAyOXB4IiwKKyAgICAiW3ggeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3ldIDEw
cHggW3pdIDIwcHgiLAorICAgICJbeF0gMnB4IFt4IHldIDBweCBbeV0gMTBweCBbeV0gMTBweCBb
eV0gMTBweCAxOHB4IiwKKyAgICAiW3ldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5
XSAxMHB4IFt6XSAyMHB4IiwKKyAgICAiW3ggeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEw
cHggW3ldIDEwcHggMjBweCIsCisgICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBw
eCBbeV0gMTBweCAyMHB4IiwKICAgXTsKICAgWy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
Jy5ncmlkJyldLmZvckVhY2goZnVuY3Rpb24oZ3JpZCwgaSkgewogICAgIGxldCBhY3R1YWwgPSB3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkKVsnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJ107CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1yZXBlYXQtYXV0by1maXQtMDAyLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJn
cmlkL3BhcmVudC1yZXBlYXQtYXV0by1maXQtMDAyLmh0bWwKaW5kZXggZDQ2ZjU5Yjk5ZjU1N2Zi
NDI0ZmYwYTdhYjJhNDk2MmRlMjMwMjNjMS4uNmM2MDJhYjc5MDMzYmI4YzRjNjNjNDY5N2JkYWU2
OGU4ZTI4YzFjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9wYXJlbnQtcmVwZWF0LWF1dG8tZml0LTAw
Mi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1ncmlkL3N1YmdyaWQvcGFyZW50LXJlcGVhdC1hdXRvLWZpdC0wMDIuaHRtbApAQCAt
NDM5LDggKzQzOSw4IEBAIGh0bWwsYm9keSB7CiAKIDxzY3JpcHQ+CiAgIGNvbnN0IGV4cGVjdGVk
UmVzdWx0cyA9IFsKLSAgICAiW3ldIDBweCBbel0gMXB4IFt6XSAxcHggW3pdIDFweCBbel0gMXB4
IFt6XSIsCi0gICAgIlt4IHldIDBweCBbel0gMXB4IFt6XSAxcHggW3pdIDFweCBbel0iLAorICAg
ICJbeV0gMHB4IFt6XSAxcHggW3pdIDFweCBbel0gMXB4IFt6XSAxcHggW3pdIDQ2cHgiLAorICAg
ICJbeCB5XSAwcHggW3pdIDFweCBbel0gMXB4IFt6XSAxcHggW3pdIDIzLjVweCAyMy41cHgiLAog
ICAgICJbeF0gMXB4IFt4IHldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbel0gMXB4
IFt6XSAxcHggW3pdIiwKICAgICAiW3hdIDJweCBbeF0gMnB4IFt4IHldIDEwcHggW3ldIDEwcHgg
W3ldIDEwcHggW3ldIDEwcHggW3pdIDFweCBbel0iLAogICAgICJbeF0gMnB4IFt4XSAycHggW3hd
IDJweCBbeCB5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAwcHggW3pdIiwKQEAgLTQ1OCwx
NSArNDU4LDE1IEBAIGh0bWwsYm9keSB7CiAgICAgIlt4XSAycHggW3hdIDJweCBbeCB5XSAxMHB4
IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt6XSIsCiAgICAgIlt4XSAycHggW3hdIDJweCBb
eF0gMnB4IFt4IHldIDEwcHggW3ldIDEwcHggW3ldIDEwcHggW3ldIDBweCIsCiAgICAgIlt5XSAw
cHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbel0gMXB4IFt6XSAxcHggW3pdIiwKLSAgICAi
W3ggeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3pdIDFweCBbel0iLAotICAgICJb
eF0gMnB4IFt4IHldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbel0iLAorICAgICJb
eCB5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbel0gMXB4IFt6XSAyOXB4IiwKKyAg
ICAiW3hdIDJweCBbeCB5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3ldIDEwcHggW3pdIDE4cHgi
LAogICAgICJbeF0gMnB4IFt4XSAycHggW3ggeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0g
MTBweCIsCi0gICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbel0gMXB4IFt6
XSIsCi0gICAgIlt4IHldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt6
XSIsCi0gICAgIlt4XSAycHggW3ggeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IiwK
LSAgICAiW3ldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt6XSIsCi0g
ICAgIlt4IHldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IiwKLSAgICAi
W3ldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IiwKKyAgICAiW3ldIDBw
eCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt6XSAxcHggW3pdIDI5cHgiLAorICAgICJbeCB5
XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbel0gMjBweCIsCisgICAg
Ilt4XSAycHggW3ggeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IDE4cHgiLAorICAg
ICJbeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3ldIDEwcHggW3pdIDIwcHgiLAor
ICAgICJbeCB5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCAyMHB4IiwK
KyAgICAiW3ldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IDIwcHgiLAog
ICBdOwogICBbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmdyaWQnKV0uZm9yRWFjaChm
dW5jdGlvbihncmlkLCBpKSB7CiAgICAgbGV0IGFjdHVhbCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGdyaWQpWydncmlkLXRlbXBsYXRlLXJvd3MnXTsK
</data>
<flag name="review"
          id="479011"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452407</attachid>
            <date>2022-02-17 12:19:06 -0800</date>
            <delta_ts>2022-02-17 16:55:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236338-20220218091905.patch</filename>
            <type>text/plain</type>
            <size>34128</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODVhNmMxNGJiN2Q2YWEw
YThkNzY5MzVmYjExMDQ3ZWY5MjdhNTBiNi4uOTFkNDJjOTY5ZTJkZDFjY2ViMTE2ZGI1YTY0NWMz
YjVkYjE5MmJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIyLTAyLTE0ICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgQWNjb3VudCBmb3Ig
c3ViZ3JpZCBNQlAgd2hlbiBzaXppbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNjMzOAorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nv
bi4KKworICAgICAgICBBZGRzIGV4dHJhIG1hcmdpbiB0byBzdWJncmlkIGl0ZW1zIHBhcnRpY2lw
YXRpbmcgaW4gdGhlIHNpemluZyBvZiBhbiBvdXRlcgorICAgICAgICBncmlkJ3MgdHJhY2tzIHRv
IGFjY291bnQgZm9yIHRoZSBtYXJnaW4vYm9yZGVyL3BhZGRpbmcgb2YgdGhlIGludGVybWVkaWF0
ZQorICAgICAgICBzdWJncmlkIGl0ZW0gaXRzZWxmLgorICAgICAgICBBbHNvIGNvbnRyaWJ1dGVz
IHRoZSBzdWJncmlkJ3MgbS9iL3AgdG8gdGhlIGVkZ2UgdHJhY2tzIGl0IGNvdmVyLCBldmVuCisg
ICAgICAgIGlmIG5vIGlubmVyIGl0ZW1zIG9jY3VweSB0aGF0IHRyYWNrLgorCisgICAgICAgICog
cmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jp
ZExheW91dEZ1bmN0aW9uczo6ZGlyZWN0aW9uRnJvbVNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JpZExheW91dEZ1bmN0aW9uczo6aGFzUmVsYXRpdmVPckludHJpbnNpY1NpemVGb3JDaGlsZCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmlkTGF5b3V0RnVuY3Rpb25zOjpleHRyYU1hcmdpbkZvclN1
YmdyaWRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkTGF5b3V0RnVuY3Rpb25zOjpnYXBE
aWZmZXJlbmNlRm9yU3ViZ3JpZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRMYXlvdXRG
dW5jdGlvbnM6Om1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0T3Zl
cnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtU3RyYXRlZ3k6OmxvZ2ljYWxIZWlnaHRGb3JD
aGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1T
dHJhdGVneTo6dXBkYXRlT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hp
bGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVmaW5pdGVTaXplU3RyYXRlZ3k6Om1pbkxv
Z2ljYWxTaXplRm9yQ2hpbGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVmaW5pdGVTaXpl
U3RyYXRlZ3k6Om1pbkNvbnRlbnRGb3JDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjph
ZGRTdWJncmlkTWFyZ2luQm9yZGVyUGFkZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJh
Y2tTaXppbmdBbGdvcml0aG06OmFjY3VtdWxhdGVJbnRyaW5zaWNTaXplc0ZvclRyYWNrKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJHcmlkOjppc1N1YmdyaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6
bWF5QmVTdWJncmlkRXhjbHVkaW5nQWJzUG9zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckdyaWQ6OmdyaWRTcGFuQ292ZXJzUmVhbFRyYWNrcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJHcmlkOjpncmlkQXJlYUJyZWFkdGhGb3JPdXRPZkZsb3dDaGlsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlQ29udGVudFBvc2l0aW9uQW5kRGlzdHJp
YnV0aW9uT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmdyaWRTcGFuRm9y
Q2hpbGQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphZGp1c3RHcmlkUG9zaXRpb25zRnJvbVN0eWxlKToKKwogMjAyMi0wMi0xNSAgTWF0
dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgogCiAgICAgICAgIEluY2x1ZGUgc3Vi
IGdyaWQgaXRlbXMgaW4gdGhlIHRyYWNrIHNpemluZyBhbGdvcml0aG0gb2YgdGhlIG91dGVyIGdy
aWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rp
b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmNw
cAppbmRleCAwYTE2ZjgyOTE2MTI1ODA1MDI5NDM5MzQxODkwMzdiZTkwOTE5ZDJhLi4zNzNjZDAy
NWY5Y2JiNzZkYmZjNTU1OTU4N2YwZTkwZDBkZjJjYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC02NiwxNSArNjYsODMgQEAg
TGF5b3V0VW5pdCBjb21wdXRlTWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZChjb25zdCBSZW5kZXJH
cmlkJiBncmlkLCBHcmlkVHJhY2tTaXoKICAgICByZXR1cm4gbWFyZ2luU3RhcnRJc0F1dG8oY2hp
bGQsIGZsb3dBd2FyZURpcmVjdGlvbikgPyBtYXJnaW5FbmQgOiBtYXJnaW5FbmRJc0F1dG8oY2hp
bGQsIGZsb3dBd2FyZURpcmVjdGlvbikgPyBtYXJnaW5TdGFydCA6IG1hcmdpblN0YXJ0ICsgbWFy
Z2luRW5kOwogfQogCitzdGF0aWMgaW5saW5lIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJl
Y3Rpb25Gcm9tU2lkZShHcmlkUG9zaXRpb25TaWRlIHNpZGUpCit7CisgICAgcmV0dXJuIHNpZGUg
PT0gQ29sdW1uU3RhcnRTaWRlIHx8IHNpZGUgPT0gQ29sdW1uRW5kU2lkZSA/IEZvckNvbHVtbnMg
OiBGb3JSb3dzOworfQorCitzdGF0aWMgYm9vbCBoYXNSZWxhdGl2ZU9ySW50cmluc2ljU2l6ZUZv
ckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBk
aXJlY3Rpb24pCit7CisgICAgaWYgKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKQorICAgICAgICBy
ZXR1cm4gY2hpbGQuaGFzUmVsYXRpdmVMb2dpY2FsV2lkdGgoKSB8fCBjaGlsZC5zdHlsZSgpLmxv
Z2ljYWxXaWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCk7CisgICAgcmV0dXJuIGNoaWxkLmhhc1Jl
bGF0aXZlTG9naWNhbEhlaWdodCgpIHx8IGNoaWxkLnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlz
SW50cmluc2ljT3JBdXRvKCk7Cit9CisKK3N0YXRpYyBMYXlvdXRVbml0IGV4dHJhTWFyZ2luRm9y
U3ViZ3JpZChjb25zdCBSZW5kZXJHcmlkJiBwYXJlbnQsIHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5z
aWduZWQgZW5kTGluZSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAg
ICB1bnNpZ25lZCBudW1UcmFja3MgPSBwYXJlbnQubnVtVHJhY2tzKGRpcmVjdGlvbik7CisgICAg
aWYgKCFudW1UcmFja3MgfHwgIXBhcmVudC5pc1N1YmdyaWQoZGlyZWN0aW9uKSkKKyAgICAgICAg
cmV0dXJuIDBfbHU7CisKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNw
YWNlOworICAgIGlmICghaGFzUmVsYXRpdmVPckludHJpbnNpY1NpemVGb3JDaGlsZChwYXJlbnQs
IGRpcmVjdGlvbikpCisgICAgICAgIGF2YWlsYWJsZVNwYWNlID0gcGFyZW50LmF2YWlsYWJsZVNw
YWNlRm9yR3V0dGVycyhkaXJlY3Rpb24pOworCisgICAgUmVuZGVyR3JpZCYgZ3JhbmRQYXJlbnQg
PSBkb3duY2FzdDxSZW5kZXJHcmlkPigqcGFyZW50LnBhcmVudCgpKTsKKyAgICBMYXlvdXRVbml0
IG1icDsKKyAgICBpZiAoIXN0YXJ0TGluZSkKKyAgICAgICAgbWJwICs9IChkaXJlY3Rpb24gPT0g
Rm9yQ29sdW1ucykgPyBwYXJlbnQubWFyZ2luQW5kQm9yZGVyQW5kUGFkZGluZ1N0YXJ0KCkgOiBw
YXJlbnQubWFyZ2luQW5kQm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpOworICAgIGVsc2UKKyAgICAg
ICAgbWJwICs9IChwYXJlbnQuZ3JpZEdhcChkaXJlY3Rpb24sIGF2YWlsYWJsZVNwYWNlKSAtIGdy
YW5kUGFyZW50LmdyaWRHYXAoZGlyZWN0aW9uKSkgLyAyOworCisgICAgaWYgKGVuZExpbmUgPT0g
bnVtVHJhY2tzKQorICAgICAgICBtYnAgKz0gKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IHBh
cmVudC5tYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nRW5kKCkgOiBwYXJlbnQubWFyZ2luQW5kQm9y
ZGVyQW5kUGFkZGluZ0FmdGVyKCk7CisgICAgZWxzZQorICAgICAgICBtYnAgKz0gKHBhcmVudC5n
cmlkR2FwKGRpcmVjdGlvbiwgYXZhaWxhYmxlU3BhY2UpIC0gZ3JhbmRQYXJlbnQuZ3JpZEdhcChk
aXJlY3Rpb24pKSAvIDI7CisKKyAgICByZXR1cm4gbWJwOworfQorCitzdGF0aWMgTGF5b3V0VW5p
dCBleHRyYU1hcmdpbkZvclN1YmdyaWRBbmNlc3RvcnMoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
IGRpcmVjdGlvbiwgY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKK3sKKyAgICBjb25zdCBSZW5kZXJH
cmlkKiBncmlkID0gZG93bmNhc3Q8UmVuZGVyR3JpZD4oY2hpbGQucGFyZW50KCkpOworICAgIExh
eW91dFVuaXQgbWJwOworCisgICAgd2hpbGUgKGdyaWQtPmlzU3ViZ3JpZChkaXJlY3Rpb24pKSB7
CisgICAgICAgIEdyaWRTcGFuIHNwYW4gPSBncmlkLT5ncmlkU3BhbkZvckNoaWxkKGNoaWxkLCBk
aXJlY3Rpb24pOworCisgICAgICAgIG1icCArPSBleHRyYU1hcmdpbkZvclN1YmdyaWQoKmdyaWQs
IHNwYW4uc3RhcnRMaW5lKCksIHNwYW4uZW5kTGluZSgpLCBkaXJlY3Rpb24pOworCisgICAgICAg
IGNvbnN0IFJlbmRlckVsZW1lbnQqIHBhcmVudCA9IGdyaWQtPnBhcmVudCgpOworICAgICAgICBp
ZiAoIXBhcmVudCB8fCAhaXM8UmVuZGVyR3JpZD4ocGFyZW50KSkKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGNvbnN0IFJlbmRlckdyaWQqIHBhcmVudEdyaWQgPSBkb3duY2FzdDxSZW5k
ZXJHcmlkPihwYXJlbnQpOworICAgICAgICBkaXJlY3Rpb24gPSBmbG93QXdhcmVEaXJlY3Rpb25G
b3JQYXJlbnQoKmdyaWQsICpwYXJlbnRHcmlkLCBkaXJlY3Rpb24pOworCisgICAgICAgIGdyaWQg
PSBwYXJlbnRHcmlkOworICAgIH0KKworICAgIHJldHVybiBtYnA7Cit9CisKIExheW91dFVuaXQg
bWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZChjb25zdCBSZW5kZXJHcmlkJiBncmlkLCBHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBSZW5kZXJCb3gmIGNoaWxkKQogewor
ICAgIExheW91dFVuaXQgbWFyZ2luOwogICAgIGlmIChjaGlsZC5uZWVkc0xheW91dCgpKQotICAg
ICAgICByZXR1cm4gY29tcHV0ZU1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQoZ3JpZCwgZGlyZWN0
aW9uLCBjaGlsZCk7Ci0gICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGZsb3dBd2FyZURpcmVj
dGlvbiA9IGZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKGdyaWQsIGNoaWxkLCBkaXJlY3Rpb24p
OwotICAgIGJvb2wgaXNSb3dBeGlzID0gZmxvd0F3YXJlRGlyZWN0aW9uID09IEZvckNvbHVtbnM7
Ci0gICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0SXNBdXRvKGNoaWxkLCBm
bG93QXdhcmVEaXJlY3Rpb24pID8gMF9sdSA6IGlzUm93QXhpcyA/IGNoaWxkLm1hcmdpblN0YXJ0
KCkgOiBjaGlsZC5tYXJnaW5CZWZvcmUoKTsKLSAgICBMYXlvdXRVbml0IG1hcmdpbkVuZCA9IG1h
cmdpbkVuZElzQXV0byhjaGlsZCwgZmxvd0F3YXJlRGlyZWN0aW9uKSA/IDBfbHUgOiBpc1Jvd0F4
aXMgPyBjaGlsZC5tYXJnaW5FbmQoKSA6IGNoaWxkLm1hcmdpbkFmdGVyKCk7Ci0gICAgcmV0dXJu
IG1hcmdpblN0YXJ0ICsgbWFyZ2luRW5kOworICAgICAgICBtYXJnaW4gPSBjb21wdXRlTWFyZ2lu
TG9naWNhbFNpemVGb3JDaGlsZChncmlkLCBkaXJlY3Rpb24sIGNoaWxkKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGZsb3dBd2FyZURpcmVjdGlvbiA9IGZs
b3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKGdyaWQsIGNoaWxkLCBkaXJlY3Rpb24pOworICAgICAg
ICBib29sIGlzUm93QXhpcyA9IGZsb3dBd2FyZURpcmVjdGlvbiA9PSBGb3JDb2x1bW5zOworICAg
ICAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0ID0gbWFyZ2luU3RhcnRJc0F1dG8oY2hpbGQsIGZs
b3dBd2FyZURpcmVjdGlvbikgPyAwX2x1IDogaXNSb3dBeGlzID8gY2hpbGQubWFyZ2luU3RhcnQo
KSA6IGNoaWxkLm1hcmdpbkJlZm9yZSgpOworICAgICAgICBMYXlvdXRVbml0IG1hcmdpbkVuZCA9
IG1hcmdpbkVuZElzQXV0byhjaGlsZCwgZmxvd0F3YXJlRGlyZWN0aW9uKSA/IDBfbHUgOiBpc1Jv
d0F4aXMgPyBjaGlsZC5tYXJnaW5FbmQoKSA6IGNoaWxkLm1hcmdpbkFmdGVyKCk7CisgICAgICAg
IG1hcmdpbiA9IG1hcmdpblN0YXJ0ICsgbWFyZ2luRW5kOworICAgIH0KKworICAgIGlmICgmZ3Jp
ZCAhPSBjaGlsZC5wYXJlbnQoKSkKKyAgICAgICAgbWFyZ2luICs9IGV4dHJhTWFyZ2luRm9yU3Vi
Z3JpZEFuY2VzdG9ycyhkaXJlY3Rpb24sIGNoaWxkKTsKKworICAgIHJldHVybiBtYXJnaW47CiB9
CiAKIGJvb2wgaXNPcnRob2dvbmFsQ2hpbGQoY29uc3QgUmVuZGVyR3JpZCYgZ3JpZCwgY29uc3Qg
UmVuZGVyQm94JiBjaGlsZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9H
cmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dy
aWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKaW5kZXggNTc3OWQxOGVmZjVmMzQyMWU2NWQ4Nzg5
ZjNkNmFmNmMzNmE0OTA0Ny4uMzJiNTE4NWViYzdiODgzOTI2ODJmYmRiYzE0ZDA1NDc2NGFhOTE1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0Fs
Z29yaXRobS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1Npemlu
Z0FsZ29yaXRobS5jcHAKQEAgLTEyNSw4ICsxMjUsMTMgQEAgc3RhdGljIGJvb2wgc2hvdWxkQ2xl
YXJPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjb25zdCBSZW5k
ZXIKICAgICByZXR1cm4gaGFzUmVsYXRpdmVPckludHJpbnNpY1NpemVGb3JDaGlsZChjaGlsZCwg
ZGlyZWN0aW9uKSB8fCBoYXNSZWxhdGl2ZU1hcmdpbk9yUGFkZGluZ0ZvckNoaWxkKGNoaWxkLCBk
aXJlY3Rpb24pOwogfQogCi1zdGF0aWMgdm9pZCBzZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2Nr
Q29udGVudFNpemVGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHNpemUpCitzdGF0aWMg
dm9pZCBzZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjb25z
dCBSZW5kZXJHcmlkJiBncmlkLCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHNpemUpCiB7CisgICAg
Ly8gVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBkaW1lbnNpb24gYmFzZWQgb24gdGhlIHdyaXRpbmcg
bW9kZSBvZiB0aGUgY29udGFpbmluZyBibG9jay4KKyAgICAvLyBGb3Igc3ViZ3JpZHMsIHRoaXMg
bWlnaHQgbm90IGJlIHRoZSBvdXRlcm1vc3QgZ3JpZCwgYnV0IGNvdWxkIGJlIGEgc3ViZ3JpZC4g
SWYgdGhlCisgICAgLy8gd3JpdGluZyBtb2RlIG9mIHRoZSBDQiBhbmQgdGhlIGdyaWQgZm9yIHdo
aWNoIHdlJ3JlIGRvaW5nIHNpemluZyBkb24ndCBtYXRjaCwgc3dhcAorICAgIC8vIHRoZSBkaXJl
Y3Rpb25zLgorICAgIGRpcmVjdGlvbiA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZsb3dBd2FyZURp
cmVjdGlvbkZvckNoaWxkKGdyaWQsICpjaGlsZC5jb250YWluaW5nQmxvY2soKSwgZGlyZWN0aW9u
KTsKICAgICBpZiAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpCiAgICAgICAgIGNoaWxkLnNldE92
ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKHNpemUpOwogICAgIGVs
c2UKQEAgLTc5NCw3ICs3OTksNyBAQCBMYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bVN0cmF0ZWd5Ojpsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94JiBjaAogICAgIC8vIElm
IHxjaGlsZHwgaGFzIGEgcmVsYXRpdmUgbG9naWNhbCBoZWlnaHQsIHdlIHNob3VsZG4ndCBsZXQg
aXQgb3ZlcnJpZGUgaXRzIGludHJpbnNpYyBoZWlnaHQsIHdoaWNoIGlzCiAgICAgLy8gd2hhdCB3
ZSBhcmUgaW50ZXJlc3RlZCBpbiBoZXJlLiBUaHVzIHdlIG5lZWQgdG8gc2V0IHRoZSBibG9jay1h
eGlzIG92ZXJyaWRlIHNpemUgdG8gbnVsbG9wdCAobm8gcG9zc2libGUgcmVzb2x1dGlvbikuCiAg
ICAgaWYgKHNob3VsZENsZWFyT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9y
Q2hpbGQoY2hpbGQsIEZvclJvd3MpKSB7Ci0gICAgICAgIHNldE92ZXJyaWRpbmdDb250YWluaW5n
QmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZEJsb2NrRGlyZWN0aW9uLCBzdGQ6
Om51bGxvcHQpOworICAgICAgICBzZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNp
emVGb3JDaGlsZCgqcmVuZGVyR3JpZCgpLCBjaGlsZCwgY2hpbGRCbG9ja0RpcmVjdGlvbiwgc3Rk
OjpudWxsb3B0KTsKICAgICAgICAgY2hpbGQuc2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsK
ICAgICB9CiAKQEAgLTk1OSwxMCArOTY0LDExIEBAIGJvb2wgR3JpZFRyYWNrU2l6aW5nQWxnb3Jp
dGhtU3RyYXRlZ3k6OnVwZGF0ZU92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6CiB7
CiAgICAgaWYgKCFvdmVycmlkZVNpemUpCiAgICAgICAgIG92ZXJyaWRlU2l6ZSA9IG1fYWxnb3Jp
dGhtLmdyaWRBcmVhQnJlYWR0aEZvckNoaWxkKGNoaWxkLCBkaXJlY3Rpb24pOworCiAgICAgaWYg
KEdyaWRMYXlvdXRGdW5jdGlvbnM6Omhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50
U2l6ZUZvckNoaWxkKGNoaWxkLCBkaXJlY3Rpb24pICYmIEdyaWRMYXlvdXRGdW5jdGlvbnM6Om92
ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBkaXJlY3Rp
b24pID09IG92ZXJyaWRlU2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc2V0T3Zl
cnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGRpcmVjdGlv
biwgb3ZlcnJpZGVTaXplKTsKKyAgICBzZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVu
dFNpemVGb3JDaGlsZCgqcmVuZGVyR3JpZCgpLCBjaGlsZCwgZGlyZWN0aW9uLCBvdmVycmlkZVNp
emUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMTIyLDcgKzExMjgsNyBAQCBMYXlvdXRV
bml0IERlZmluaXRlU2l6ZVN0cmF0ZWd5OjptaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKFJlbmRlckJv
eCYgY2hpbGQsIGNvbnN0CiAgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGZsb3dBd2FyZURp
cmVjdGlvbiA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxk
KCpyZW5kZXJHcmlkKCksIGNoaWxkLCBkaXJlY3Rpb24oKSk7CiAgICAgaWYgKGhhc1JlbGF0aXZl
TWFyZ2luT3JQYWRkaW5nRm9yQ2hpbGQoY2hpbGQsIGZsb3dBd2FyZURpcmVjdGlvbikgfHwgKGRp
cmVjdGlvbigpICE9IGNoaWxkSW5saW5lRGlyZWN0aW9uICYmIGhhc1JlbGF0aXZlT3JJbnRyaW5z
aWNTaXplRm9yQ2hpbGQoY2hpbGQsIGZsb3dBd2FyZURpcmVjdGlvbikpKSB7CiAgICAgICAgIGF1
dG8gaW5kZWZpbml0ZVNpemUgPSBkaXJlY3Rpb24oKSA9PSBjaGlsZElubGluZURpcmVjdGlvbiA/
IHN0ZDo6bWFrZV9vcHRpb25hbCgwX2x1KSA6IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgc2V0T3Zl
cnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGRpcmVjdGlv
bigpLCBpbmRlZmluaXRlU2l6ZSk7CisgICAgICAgIHNldE92ZXJyaWRpbmdDb250YWluaW5nQmxv
Y2tDb250ZW50U2l6ZUZvckNoaWxkKCpyZW5kZXJHcmlkKCksIGNoaWxkLCBkaXJlY3Rpb24oKSwg
aW5kZWZpbml0ZVNpemUpOwogICAgIH0KICAgICByZXR1cm4gR3JpZFRyYWNrU2l6aW5nQWxnb3Jp
dGhtU3RyYXRlZ3k6Om1pbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkTWluU2l6ZSwg
YXZhaWxhYmxlU2l6ZSk7CiB9CkBAIC0xMTY3LDcgKzExNzMsNyBAQCBMYXlvdXRVbml0IERlZmlu
aXRlU2l6ZVN0cmF0ZWd5OjptaW5Db250ZW50Rm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCkgY29u
c3QKIHsKICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gY2hpbGRJbmxpbmVEaXJlY3Rpb24g
PSBHcmlkTGF5b3V0RnVuY3Rpb25zOjpmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZCgqcmVuZGVy
R3JpZCgpLCBjaGlsZCwgRm9yQ29sdW1ucyk7CiAgICAgaWYgKGRpcmVjdGlvbigpID09IGNoaWxk
SW5saW5lRGlyZWN0aW9uICYmIGNoaWxkLm5lZWRzTGF5b3V0KCkgJiYgc2hvdWxkQ2xlYXJPdmVy
cmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjaGlsZCwgRm9yQ29sdW1u
cykpCi0gICAgICAgIHNldE92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNo
aWxkKGNoaWxkLCBjaGlsZElubGluZURpcmVjdGlvbiwgTGF5b3V0VW5pdCgpKTsKKyAgICAgICAg
c2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoKnJlbmRlckdy
aWQoKSwgY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uLCBMYXlvdXRVbml0KCkpOwogICAgIHJl
dHVybiBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVneTo6bWluQ29udGVudEZvckNoaWxk
KGNoaWxkKTsKIH0KIApAQCAtMTIyMiwxMiArMTIyOCw0OSBAQCB2b2lkIEdyaWRUcmFja1Npemlu
Z0FsZ29yaXRobTo6aW5pdGlhbGl6ZVRyYWNrU2l6ZXMoKQogICAgIH0KIH0KIAorc3RhdGljIExh
eW91dFVuaXQgbWFyZ2luQW5kQm9yZGVyQW5kUGFkZGluZ0ZvckVkZ2UoY29uc3QgUmVuZGVyR3Jp
ZCYgZ3JpZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBzdGFydEVk
Z2UpCit7CisgICAgaWYgKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKQorICAgICAgICByZXR1cm4g
c3RhcnRFZGdlID8gZ3JpZC5tYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nU3RhcnQoKSA6IGdyaWQu
bWFyZ2luQW5kQm9yZGVyQW5kUGFkZGluZ0VuZCgpOworICAgIHJldHVybiBzdGFydEVkZ2UgPyBn
cmlkLm1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSA6IGdyaWQubWFyZ2luQW5kQm9y
ZGVyQW5kUGFkZGluZ0FmdGVyKCk7Cit9CisKKy8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9j
c3MtZ3JpZC0yLyNzdWJncmlkLWVkZ2UtcGxhY2Vob2xkZXJzCisvLyBGSVhNRTogVGhpcyBpcyBh
IHNpbXBsaWZpY2F0aW9uIG9mIHRoZSBzcGVjaWZpZWQgYmVoYXZpb3VyLCB3aGVyZSB3ZSBhZGQg
dGhlIGh5cG90aGV0aWNhbAorLy8gaXRlbXMgZGlyZWN0bHkgdG8gdGhlIGVkZ2UgdHJhY2tzIGFz
IGlmIHRoZXkgaGFkIGEgc3BhbiBvZiAxLiBUaGlzIG1hdGNoZXMgdGhlIGN1cnJlbnQgR2Vja28K
Ky8vIGJlaGF2aW9yLgorc3RhdGljIHZvaWQgYWRkU3ViZ3JpZE1hcmdpbkJvcmRlclBhZGRpbmco
Y29uc3QgUmVuZGVyR3JpZCogb3V0ZXJtb3N0LCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gb3V0
ZXJtb3N0RGlyZWN0aW9uLCBWZWN0b3I8R3JpZFRyYWNrPiYgYWxsVHJhY2tzLCBHcmlkU3BhbiYg
c3BhbiwgUmVuZGVyR3JpZCogc3ViZ3JpZCkKK3sKKyAgICAvLyBDb252ZXJ0IHRoZSBkaXJlY3Rp
b24gaW50byB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiBzdWJncmlkICh3aGljaCBtYXkgbm90IGJl
IGEgZGlyZWN0IGNoaWxkCisgICAgLy8gb2YgdGhlIG91dGVybW9zdCBncmlkIGZvciB3aGljaCB3
ZSdyZSBydW5uaW5nIHRoZSB0cmFjayBzaXppbmcgYWxnb3JpdGhtKS4KKyAgICBHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJl
RGlyZWN0aW9uRm9yQ2hpbGQoKm91dGVybW9zdCwgKnN1YmdyaWQsIG91dGVybW9zdERpcmVjdGlv
bik7CisgICAgYm9vbCByZXZlcnNlZCA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmlzU3ViZ3JpZFJl
dmVyc2VkRGlyZWN0aW9uKCpvdXRlcm1vc3QsIG91dGVybW9zdERpcmVjdGlvbiwgKnN1YmdyaWQp
OworCisgICAgaWYgKGFsbFRyYWNrc1tzcGFuLnN0YXJ0TGluZSgpXS5jYWNoZWRUcmFja1NpemUo
KS5oYXNJbnRyaW5zaWNNaW5UcmFja0JyZWFkdGgoKSkgeworICAgICAgICAvLyBJZiB0aGUgc3Vi
Z3JpZCBoYXMgYSByZXZlcnNlZCBmbG93IGRpcmVjdGlvbiByZWxhdGl2ZSB0byB0aGUgb3V0ZXJt
b3N0IGdyaWQsIHRoZW4KKyAgICAgICAgLy8gd2Ugd2FudCB0aGUgTUJQIGZyb20gdGhlIGVuZCBl
ZGdlIGluIGl0cyBsb2NhbCBjb29yZGluYXRlIHNwYWNlLgorICAgICAgICBMYXlvdXRVbml0IG1i
cFN0YXJ0ID0gbWFyZ2luQW5kQm9yZGVyQW5kUGFkZGluZ0ZvckVkZ2UoKnN1YmdyaWQsIGRpcmVj
dGlvbiwgIXJldmVyc2VkKTsKKyAgICAgICAgYWxsVHJhY2tzW3NwYW4uc3RhcnRMaW5lKCldLnNl
dEJhc2VTaXplKHN0ZDo6bWF4KGFsbFRyYWNrc1tzcGFuLnN0YXJ0TGluZSgpXS5iYXNlU2l6ZSgp
LCBtYnBTdGFydCkpOworICAgIH0KKyAgICBpZiAoYWxsVHJhY2tzW3NwYW4uZW5kTGluZSgpIC0g
MV0uY2FjaGVkVHJhY2tTaXplKCkuaGFzSW50cmluc2ljTWluVHJhY2tCcmVhZHRoKCkpIHsKKyAg
ICAgICAgTGF5b3V0VW5pdCBtYnBFbmQgPSBtYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nRm9yRWRn
ZSgqc3ViZ3JpZCwgZGlyZWN0aW9uLCByZXZlcnNlZCk7CisgICAgICAgIGFsbFRyYWNrc1tzcGFu
LmVuZExpbmUoKSAtIDFdLnNldEJhc2VTaXplKHN0ZDo6bWF4KGFsbFRyYWNrc1tzcGFuLmVuZExp
bmUoKSAtIDFdLmJhc2VTaXplKCksIG1icEVuZCkpOworICAgIH0KK30KKwogdm9pZCBHcmlkVHJh
Y2tTaXppbmdBbGdvcml0aG06OmFjY3VtdWxhdGVJbnRyaW5zaWNTaXplc0ZvclRyYWNrKEdyaWRU
cmFjayYgdHJhY2ssIEdyaWRJdGVyYXRvciYgaXRlcmF0b3IsIFZlY3RvcjxHcmlkSXRlbVdpdGhT
cGFuPiYgaXRlbXNTb3J0ZWRCeUluY3JlYXNpbmdTcGFuLCBWZWN0b3I8R3JpZEl0ZW1XaXRoU3Bh
bj4mIGl0ZW1zQ3Jvc3NpbmdGbGV4aWJsZVRyYWNrcywgSGFzaFNldDxSZW5kZXJCb3gqPiYgaXRl
bXNTZXQpCiB7CisgICAgVmVjdG9yPEdyaWRUcmFjaz4mIGFsbFRyYWNrcyA9IHRyYWNrcyhtX2Rp
cmVjdGlvbik7CisKICAgICB3aGlsZSAoYXV0byogZ3JpZEl0ZW0gPSBpdGVyYXRvci5uZXh0R3Jp
ZEl0ZW0oKSkgewogICAgICAgICBib29sIGlzTmV3RW50cnkgPSBpdGVtc1NldC5hZGQoZ3JpZEl0
ZW0pLmlzTmV3RW50cnk7CiAgICAgICAgIGlmIChpczxSZW5kZXJHcmlkPihncmlkSXRlbSkgJiYg
ZG93bmNhc3Q8UmVuZGVyR3JpZD4oZ3JpZEl0ZW0pLT5pc1N1YmdyaWRJblBhcmVudERpcmVjdGlv
bihpdGVyYXRvci5kaXJlY3Rpb24oKSkpIHsKKyAgICAgICAgICAgIC8vIENvbnRyaWJ1dGUgdGhl
IG1icCBvZiB3cmFwcGVyIHRvIHRoZSBmaXJzdCBhbmQgbGFzdCB0cmFja3MgdGhhdCB3ZSBzcGFu
LgogICAgICAgICAgICAgUmVuZGVyR3JpZCogaW5uZXIgPSBkb3duY2FzdDxSZW5kZXJHcmlkPihn
cmlkSXRlbSk7CisgICAgICAgICAgICBpZiAoaXNOZXdFbnRyeSkgeworICAgICAgICAgICAgICAg
IEdyaWRTcGFuIHNwYW4gPSBtX3JlbmRlckdyaWQtPmdyaWRTcGFuRm9yQ2hpbGQoKmdyaWRJdGVt
LCBtX2RpcmVjdGlvbik7CisgICAgICAgICAgICAgICAgYWRkU3ViZ3JpZE1hcmdpbkJvcmRlclBh
ZGRpbmcobV9yZW5kZXJHcmlkLCBtX2RpcmVjdGlvbiwgYWxsVHJhY2tzLCBzcGFuLCBpbm5lcik7
CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEdyaWRJdGVyYXRvciBjaGlsZEl0ZXJhdG9y
ID0gR3JpZEl0ZXJhdG9yOjpjcmVhdGVGb3JTdWJncmlkKCppbm5lciwgaXRlcmF0b3IpOwogICAg
ICAgICAgICAgYWNjdW11bGF0ZUludHJpbnNpY1NpemVzRm9yVHJhY2sodHJhY2ssIGNoaWxkSXRl
cmF0b3IsIGl0ZW1zU29ydGVkQnlJbmNyZWFzaW5nU3BhbiwgaXRlbXNDcm9zc2luZ0ZsZXhpYmxl
VHJhY2tzLCBpdGVtc1NldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAK
aW5kZXggYzU2MTNjMjQwMjI4ZDhlMzc4MDJjM2ZmN2YwYzMyNTRmN2ExYTVjNi4uNzE0NjdjYTg5
OGZlZjYyNTQ3MTgyMTQyNDlkNGVkNGMyY2MzNGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmNwcApAQCAtMTY1MywxMSArMTY1Myw5IEBAIExheW91dFVuaXQgUmVuZGVy
R3JpZDo6cmVzb2x2ZUF1dG9FbmRHcmlkUG9zaXRpb24oR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
IGRpcmVjCiAKIGJvb2wgUmVuZGVyR3JpZDo6aXNTdWJncmlkKEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7Ci0gICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
IHx8IGlzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KCkpCisgICAgaWYgKCFtYXlCZVN1YmdyaWRF
eGNsdWRpbmdBYnNQb3MoZGlyZWN0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICgoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gIXN0eWxlKCkuZ3JpZFN1YmdyaWRDb2x1bW5z
KCkgOiAhc3R5bGUoKS5ncmlkU3ViZ3JpZFJvd3MoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBpczxSZW5kZXJHcmlkPihwYXJlbnQoKSk7CisgICAgcmV0dXJuIGRvd25jYXN0
PFJlbmRlckdyaWQ+KHBhcmVudCgpKS0+Z3JpZFNwYW5Db3ZlcnNSZWFsVHJhY2tzKCp0aGlzLCBk
aXJlY3Rpb24pOwogfQogCiBib29sIFJlbmRlckdyaWQ6OmlzU3ViZ3JpZEluUGFyZW50RGlyZWN0
aW9uKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBwYXJlbnREaXJlY3Rpb24pIGNvbnN0CkBAIC0x
NjY4LDYgKzE2NjYsMTggQEAgYm9vbCBSZW5kZXJHcmlkOjppc1N1YmdyaWRJblBhcmVudERpcmVj
dGlvbihHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gcGFyZW50RGlyZWMKICAgICByZXR1cm4gaXNT
dWJncmlkKGRpcmVjdGlvbik7CiB9CiAKK2Jvb2wgUmVuZGVyR3JpZDo6bWF5QmVTdWJncmlkRXhj
bHVkaW5nQWJzUG9zKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Cit7
CisgICAgLy8gU2hvdWxkIGV4Y2x1ZGUgY2FzZXMgd2hlcmUgd2UgZXN0YWJsaXNoIGFuIElGQywg
bGlrZSBjb250YWluIGxheW91dC4KKyAgICBpZiAoaXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChkaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cyA/ICFzdHlsZSgpLmdyaWRTdWJncmlkQ29sdW1ucygpIDogIXN0eWxlKCkuZ3JpZFN1YmdyaWRS
b3dzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWlzPFJlbmRlckdyaWQ+KHBh
cmVudCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiBM
YXlvdXRVbml0IFJlbmRlckdyaWQ6OmdyaWRBcmVhQnJlYWR0aEZvck91dE9mRmxvd0NoaWxkKGNv
bnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24p
CiB7CiAgICAgQVNTRVJUKGNoaWxkLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKQEAgLTE4NTIs
NiArMTg2MiwxMSBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVDb250ZW50UG9zaXRpb25BbmRE
aXN0cmlidXRpb25PZmZzZXQoR3JpZFRyYWNrU2l6aW5nRGlyZQogICAgIGJvb2wgaXNSb3dBeGlz
ID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnM7CiAgICAgYXV0byYgb2Zmc2V0ID0KICAgICAgICAg
aXNSb3dBeGlzID8gbV9vZmZzZXRCZXR3ZWVuQ29sdW1ucyA6IG1fb2Zmc2V0QmV0d2VlblJvd3M7
CisgICAgaWYgKGlzUm93QXhpcyA/IGlzU3ViZ3JpZENvbHVtbnMoKSA6IGlzU3ViZ3JpZFJvd3Mo
KSkgeworICAgICAgICBvZmZzZXQucG9zaXRpb25PZmZzZXQgPSAwX2x1OworICAgICAgICBvZmZz
ZXQuZGlzdHJpYnV0aW9uT2Zmc2V0ID0gMF9sdTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAg
ICBhdXRvIGNvbnRlbnRBbGlnbm1lbnREYXRhID0gY29udGVudEFsaWdubWVudChkaXJlY3Rpb24p
OwogICAgIGF1dG8gcG9zaXRpb24gPSBjb250ZW50QWxpZ25tZW50RGF0YS5wb3NpdGlvbigpOwog
ICAgIC8vIElmIDxjb250ZW50LWRpc3RyaWJ1dGlvbj4gdmFsdWUgY2FuJ3QgYmUgYXBwbGllZCwg
J3Bvc2l0aW9uJyB3aWxsIGJlY29tZSB0aGUgYXNzb2NpYXRlZApAQCAtMjA5NSw0ICsyMTEwLDI2
IEBAIEdyaWRTcGFuIFJlbmRlckdyaWQ6OmdyaWRTcGFuRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94
JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyCiAgICAgcmV0dXJuIHNwYW47CiB9CiAKK2Jvb2wg
UmVuZGVyR3JpZDo6Z3JpZFNwYW5Db3ZlcnNSZWFsVHJhY2tzKGNvbnN0IFJlbmRlckJveCYgY2hp
bGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Cit7CisgICAgLy8g
T25seSBvdXQgb2YgZmxvdyBwb3NpdGlvbmVkIGl0ZW1zIGNhbiBzcGFuIHRvIHRoZSBzcGVjaWFs
IGxpbmUgdGhhdCBjb3ZlcnMKKyAgICAvLyB0aGUgcGFkZGluZyBhcmVhLgorICAgIGlmICghY2hp
bGQuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
aW50IGxhc3RMaW5lID0gbnVtVHJhY2tzKGRpcmVjdGlvbiwgbV9ncmlkKTsKKyAgICBpbnQgc3Rh
cnRMaW5lLCBlbmRMaW5lOworICAgIGJvb2wgc3RhcnRJc0F1dG8sIGVuZElzQXV0bzsKKyAgICBp
ZiAoIWNvbXB1dGVHcmlkUG9zaXRpb25zRm9yT3V0T2ZGbG93Q2hpbGQoY2hpbGQsIGRpcmVjdGlv
biwgc3RhcnRMaW5lLCBzdGFydElzQXV0bywgZW5kTGluZSwgZW5kSXNBdXRvKSkKKyAgICAgICAg
cmV0dXJuIGxhc3RMaW5lID4gMDsKKworICAgIC8vIElmIHRoZSByZXN1bHRpbmcgc3BhbiBjb3Zl
cnMgb25seSB0aGUgcGFkZGluZyBhcmVhLCB0aGVuIGl0J3Mgbm90IGEgcmVhbAorICAgIC8vIHRy
YWNrIHRoYXQgY291bGQgYmUgdXNlZCBmb3IgYSBzdWJncmlkLgorICAgIGlmIChzdGFydElzQXV0
byAmJiAhZW5kTGluZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChlbmRJc0F1dG8g
JiYgc3RhcnRMaW5lID09IGxhc3RMaW5lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5oCmluZGV4IDdhODQ4NDI2NDFmNGI3ZDgwNWJiYTQyODg5ZWJiNjc5ZmI1
ZjcwYWIuLmM4ZmEzYWFjZjQ5N2U4ZWJkYWViMzgyM2ZkMDJjYzU4NmY1MDhiYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaApAQCAtOTYsNiArOTYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBpc1N1YmdyaWQoRm9yQ29sdW1ucyk7CiAgICAgfQogICAgIGJvb2wgaXNT
dWJncmlkSW5QYXJlbnREaXJlY3Rpb24oR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIHBhcmVudERp
cmVjdGlvbikgY29uc3Q7CisgICAgYm9vbCBtYXlCZVN1YmdyaWRFeGNsdWRpbmdBYnNQb3MoR3Jp
ZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIAogICAgIGNvbnN0IEdyaWQmIGN1cnJlbnRH
cmlkKCkgY29uc3QKICAgICB7CkBAIC0xMDksNiArMTEwLDEwIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgcGxhY2VJdGVtcygpOwogCisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFi
bGVTcGFjZUZvckd1dHRlcnMoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKKyAgICBM
YXlvdXRVbml0IGdyaWRHYXAoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKKyAgICBM
YXlvdXRVbml0IGdyaWRHYXAoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IGF2YWlsYWJsZVNpemUpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG07CiAKQEAgLTEyNSw4ICsxMzAsNiBAQCBw
cml2YXRlOgogICAgIGJvb2wgc2VsZkFsaWdubWVudENoYW5nZWRUb1N0cmV0Y2goR3JpZEF4aXMs
IGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxl
LCBjb25zdCBSZW5kZXJCb3gmKSBjb25zdDsKICAgICBib29sIHNlbGZBbGlnbm1lbnRDaGFuZ2Vk
RnJvbVN0cmV0Y2goR3JpZEF4aXMsIGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUmIG5ld1N0eWxlLCBjb25zdCBSZW5kZXJCb3gmKSBjb25zdDsKIAotICAgIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU3BhY2VGb3JHdXR0ZXJzKEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbikgY29uc3Q7Ci0KICAgICBib29sIGV4cGxpY2l0R3JpZERpZFJlc2l6
ZShjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogICAgIGJvb2wgbmFtZWRHcmlkTGluZXNEZWZp
bml0aW9uRGlkQ2hhbmdlKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAgICAgYm9vbCBpbXBs
aWNpdEdyaWRMaW5lc0RlZmluaXRpb25EaWRDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25z
dDsKQEAgLTIwNiw5ICsyMDksNiBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQgY29sdW1uQXhp
c0Jhc2VsaW5lT2Zmc2V0Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JikgY29uc3Q7CiAgICAgTGF5
b3V0VW5pdCByb3dBeGlzQmFzZWxpbmVPZmZzZXRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmKSBj
b25zdDsKIAotICAgIExheW91dFVuaXQgZ3JpZEdhcChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24p
IGNvbnN0OwotICAgIExheW91dFVuaXQgZ3JpZEdhcChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24s
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6ZSkgY29uc3Q7Ci0KICAgICB1
bnNpZ25lZCBub25Db2xsYXBzZWRUcmFja3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25z
dDsKICAgICB1bnNpZ25lZCBudW1UcmFja3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25z
dCBHcmlkJikgY29uc3Q7CiAKQEAgLTIyMiw3ICsyMjIsOSBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxSZW5kZXJCb3gqPiBjb21wdXRlQXNwZWN0UmF0aW9EZXBlbmRlbnRBbmRCYXNlbGluZUl0ZW1z
KCk7CiAKICAgICBHcmlkU3BhbiBncmlkU3BhbkZvck91dE9mRmxvd0NoaWxkKGNvbnN0IFJlbmRl
ckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CisKICAgICBib29sIGNvbXB1
dGVHcmlkUG9zaXRpb25zRm9yT3V0T2ZGbG93Q2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uLCBpbnQmLCBib29sJiwgaW50JiwgYm9vbCYpIGNvbnN0OworICAg
IGJvb2wgZ3JpZFNwYW5Db3ZlcnNSZWFsVHJhY2tzKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAKICAgICBHcmlkIG1fZ3JpZDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVy
LmNwcAppbmRleCAzODc2YjYwYjZiZmJhNmI4ZTlhMzYwNDU5NzFlNTAwMjVmNGU1ODI1Li4zZGJj
YzgyMzQ1MWJlM2Q4NTI3NzA2YWVjZGVlZWY5OTljYzU0YTFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcApA
QCAtMzgwLDcgKzM4MCwxMCBAQCBzdGF0aWMgdm9pZCBhZGp1c3RHcmlkUG9zaXRpb25zRnJvbVN0
eWxlKGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpegogICAgIGlmIChmaW5h
bFBvc2l0aW9uLmlzQXV0bygpICYmIGluaXRpYWxQb3NpdGlvbi5pc1NwYW4oKSAmJiAhaW5pdGlh
bFBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwoKSkKICAgICAgICAgaW5pdGlhbFBvc2l0
aW9uLnNldFNwYW5Qb3NpdGlvbigxLCBTdHJpbmcoKSk7CiAKLSAgICBpZiAoaXNJbmRlZmluaXRl
U3Bhbihpbml0aWFsUG9zaXRpb24sIGZpbmFsUG9zaXRpb24pICYmIGlzPFJlbmRlckdyaWQ+KGdy
aWRJdGVtKSAmJiBkb3duY2FzdDxSZW5kZXJHcmlkPihncmlkSXRlbSkuaXNTdWJncmlkKGRpcmVj
dGlvbikpIHsKKyAgICAvLyBBYnNvbHV0ZWx5IHBvc2l0aW9uZWQgaXRlbXMgc3BlY2lmeWluZyBz
dWJncmlkIG1pZ2h0IG5vdCBhY3R1YWxseSBiZSBhIHN1YmdyaWQgaWYgdGhlaXIgZ3JpZAorICAg
IC8vIHNwYW4gZG9lc24ndCBjb3ZlciBhbnkgdHJhY2tzIGFuZCBvbmx5IHRoZSBwYWRkaW5nIGFy
ZWEuIFdlIGRvbid0IGtub3cgaWYgdGhhdCBpcyB0aGUgY2FzZSB1bnRpbAorICAgIC8vIHdlJ3Zl
IGZpZ3VyZWQgb3V0IHRoZWlyIGdyaWQgcG9zaXRpb24gdGhvdWdoLCB3aGljaCBpcyB3aGF0IHdl
J3JlIHRyeWluZyB0byBkbyBub3cuCisgICAgaWYgKGlzSW5kZWZpbml0ZVNwYW4oaW5pdGlhbFBv
c2l0aW9uLCBmaW5hbFBvc2l0aW9uKSAmJiBpczxSZW5kZXJHcmlkPihncmlkSXRlbSkgJiYgZG93
bmNhc3Q8UmVuZGVyR3JpZD4oZ3JpZEl0ZW0pLm1heUJlU3ViZ3JpZEV4Y2x1ZGluZ0Fic1Bvcyhk
aXJlY3Rpb24pKSB7CiAgICAgICAgIC8vIEluZGVmaW5pdGUgc3BhbiBmb3IgYW4gaXRlbSB0aGF0
IGlzIHN1YmdyaWRkZWQgaW4gdGhpcyBheGlzLgogICAgICAgICBpbnQgbGluZUNvdW50ID0gKGlz
Rm9yQ29sdW1ucyA/IGdyaWRJdGVtLnN0eWxlKCkub3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVz
KCkgOiBncmlkSXRlbS5zdHlsZSgpLm9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpKS5zaXplKCk7
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA5ZGQ1YWZmNjEzYzE0N2RhZmFjMTJiNmMwNmVhMGMxZGYxN2I4NGQ0Li5hYjg2
YzBhOWRkYThiZmRmODlhMDRjM2MyMjFkY2UzM2ZkOWZlMGEzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjItMDItMTQgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KKwor
ICAgICAgICBBY2NvdW50IGZvciBzdWJncmlkIE1CUCB3aGVuIHNpemluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzM4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgIEFjY291bnQgZm9yIHN1YmdyaWQgTUJQ
IHdoZW4gc2l6aW5nCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorCiAyMDIyLTAyLTE1
ICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CiAKICAgICAgICAgSW5jbHVk
ZSBzdWIgZ3JpZCBpdGVtcyBpbiB0aGUgdHJhY2sgc2l6aW5nIGFsZ29yaXRobSBvZiB0aGUgb3V0
ZXIgZ3JpZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggYjdiNjJjN2NmOGMyZjcx
MGRlYzYzY2YxMmFjOWQwYjNkZDhiMGMwNy4uMDllMjMzNjBkOGJiZTBkMjM4ZGFjMmFjZDNmMDdh
Njk4NTkwYmIwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMjItMDItMTQgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KKwor
ICAgICAgICBBY2NvdW50IGZvciBzdWJncmlkIE1CUCB3aGVuIHNpemluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzM4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1wb3MtMDAyLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1wb3MtMDAzLWV4cGVj
dGVkLmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJn
cmlkL2xpbmUtbmFtZXMtMDA4Lmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1yZXBlYXQtYXV0by1maXQtMDAxLmh0bWw6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1yZXBl
YXQtYXV0by1maXQtMDAyLmh0bWw6CisKIDIwMjItMDItMTcgIE1hdHQgV29vZHJvdyAgPG1hdHR3
b29kcm93QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYWJzLXBvcyBicmVhZHRoIGlzc3VlIHdo
ZW4gdXNpbmcgJ2F1dG8nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2MzA4MGFlZWE3NjU3ZmMxMWE0
Nzc1MDg0YTE3MTQ1MzE0MmU0NDE5Li40NTIwMThmODYxY2UwZGIzNTdkN2U3ZGU2Y2M0ZmQ1ZTNj
MzUyNjNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEzOTMsMjkgKzEzOTMsMTQgQEAgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvbWFzb25yeS90ZW50YXRpdmUv
bWFzb25yeS1zdWJncmlkLTAKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL21hc29ucnkvdGVudGF0aXZlL21hc29ucnktc3ViZ3JpZC0wMDIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Z3JpZC9zdWJncmlkL2F1dG8tdHJhY2stc2l6aW5nLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlk
L2Ficy1wb3MtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvYWJzLXBvcy0wMDMuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvc3ViZ3JpZC9hYnMtcG9zLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Jhc2VsaW5l
LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwMS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9z
dWJncmlkL2dyaWQtZ2FwLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwMy5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlk
L2dyaWQtZ2FwLTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLWxhcmdlci0wMDEu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC1sYXJnZXItMDAyLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlk
L3N1YmdyaWQvZ3JpZC1nYXAtc21hbGxlci0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9pdGVt
LXBlcmNlbnRhZ2UtaGVpZ2h0LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMt
MDA3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDguaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQv
c3ViZ3JpZC9vcnRob2dvbmFsLXdyaXRpbmctbW9kZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3Jp
ZC9vcnRob2dvbmFsLXdyaXRpbmctbW9kZS0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9vcnRo
b2dvbmFsLXdyaXRpbmctbW9kZS0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9vcnRob2dvbmFs
LXdyaXRpbmctbW9kZS0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9wYXJlbnQtcmVwZWF0LWF1
dG8tZml0LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1yZXBlYXQtYXV0by1maXQt
MDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcmVwZWF0LWF1dG8tZmlsbC0wMDMuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvc3ViZ3JpZC9yZXBlYXQtYXV0by1maWxsLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlk
L3N1YmdyaWQtbWJwLW92ZXJmbG93LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3N1YmdyaWQt
bWJwLW92ZXJmbG93LTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3N1YmdyaWQtbWJwLW92ZXJm
bG93LTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Fi
cy1wb3MtMDAyLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1wb3MtMDAyLWV4cGVjdGVkLmh0
bWwKaW5kZXggMTM1NDI2MGQ1MGJlMTU1ZjE4YmVkN2Y5MjQxNDM4MDBjNjlmNmI1MS4uNjllMDcx
Yzc1OGI2NTcyNGQ0OWFmMjNlY2Q3ZDNkNzdkMTk3MGUzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9h
YnMtcG9zLTAwMi1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvYWJzLXBvcy0wMDItZXhwZWN0
ZWQuaHRtbApAQCAtNjEsNyArNjEsNyBAQCB4IHsKIDxkaXYgY2xhc3M9ImdyaWQiPgogPGk+PC9p
PjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+
PGk+PC9pPgogPGRpdiBjbGFzcz0ic3ViZ3JpZCI+Ci0gIDx4IHN0eWxlPSJncmlkLWNvbHVtbjoz
OyByaWdodDoyN3B4Ij54PC94PgorICA8eCBzdHlsZT0iZ3JpZC1jb2x1bW46MzsgcmlnaHQ6MzNw
eCI+eDwveD4KIDwvZGl2PgogPC9kaXY+CiAKQEAgLTExNyw3ICsxMTcsNyBAQCB4IHsKIDxkaXYg
Y2xhc3M9ImdyaWQiPgogPGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+
PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPgogPGRpdiBjbGFzcz0ic3ViZ3JpZCBociI+Ci0g
IDx4IHN0eWxlPSJncmlkLWNvbHVtbjphdXRvLzE7IGxlZnQ6LTI3cHgiPng8L3g+CisgIDx4IHN0
eWxlPSJncmlkLWNvbHVtbjphdXRvLzE7IGxlZnQ6LTMzcHgiPng8L3g+CiA8L2Rpdj4KIDwvZGl2
PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1wb3MtMDAzLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJn
cmlkL2Ficy1wb3MtMDAzLWV4cGVjdGVkLmh0bWwKaW5kZXggMTkxODAxMDZlNTQ4YzhhMTgzYmE5
MDNiN2I5YzZmM2U0NDNkNzlhOS4uNWI4N2ZiM2E5NzZhNjgyMWNiMmNhY2E3YTdkNWUwNDkyMGRi
YzYyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9hYnMtcG9zLTAwMy1leHBlY3RlZC5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlk
L3N1YmdyaWQvYWJzLXBvcy0wMDMtZXhwZWN0ZWQuaHRtbApAQCAtNDAsMTUgKzQwLDYgQEAgYSB7
CiAgIGJhY2tncm91bmQ6IHB1cnBsZTsKIH0KIAotLmEgPiAudDEgPiB4IHsKLSAgbWFyZ2luOiAt
MTBweCAwIDAgLTEwcHg7Ci19Ci0uYSA+IC50MiA+IHgsCi0uYyA+IC50MiA+IHgsCi0uYyA+IC50
MSA+IHggewotICBtYXJnaW46IDAgMCAwIC0xMHB4OwotfQotCiA8L3N0eWxlPgogPC9oZWFkPgog
PGJvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA4Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlk
L2xpbmUtbmFtZXMtMDA4Lmh0bWwKaW5kZXggN2I5NTkxMjBjMzFiNWI1OGFiZGRiZTY2NWY4N2U0
NWJlYTcwM2YyZi4uNTZlYTk2MTI5ODliMDY3Y2M1NTE5NmQ4NjhjZTExOWY5MDIwNTUzMCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwOC5odG1sCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1u
YW1lcy0wMDguaHRtbApAQCAtMTQ2LDE0ICsxNDYsMTQgQEAgeCB7CiAgIDwvZGl2PgogPC9kaXY+
CiAKLTxkaXYgY2xhc3M9ImdyaWQiIHN0eWxlPSJncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVh
dCgzLDMwcHgpIFthXSAzMHB4IHJlcGVhdCg3LDMwcHgpIj4KKzxkaXYgY2xhc3M9ImdyaWQiIHN0
eWxlPSJncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDMwcHggW2FdIHJlcGVhdCgyLDMwcHgpIFthXSAz
MHB4IHJlcGVhdCg3LDMwcHgpIj4KIDxuPjwvbj48bj48L24+PG4+PC9uPjxuPjwvbj48bj48L24+
PG4+PC9uPjxuPjwvbj48bj48L24+PG4+PC9uPjxuPjwvbj4KICAgPGRpdiBjbGFzcz0iaHIiIHN0
eWxlPSJncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHN1YmdyaWQgW10gW10gW10gW10gW2FdOyBncmlk
LWNvbHVtbjoyL3NwYW4gNiI+CiAgICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiBhL3NwYW4gYSI+
eDwveD4KICAgPC9kaXY+CiA8L2Rpdj4KIAotPGRpdiBjbGFzcz0iZ3JpZCIgc3R5bGU9ImdyaWQt
dGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsMzBweCkgW2FdIDMwcHggcmVwZWF0KDcsMzBweCki
PgorPGRpdiBjbGFzcz0iZ3JpZCIgc3R5bGU9ImdyaWQtdGVtcGxhdGUtY29sdW1uczogMzBweCBb
YV0gcmVwZWF0KDIsMzBweCkgW2FdIDMwcHggcmVwZWF0KDcsMzBweCkiPgogPG4+PC9uPjxuPjwv
bj48bj48L24+PG4+PC9uPjxuPjwvbj48bj48L24+PG4+PC9uPjxuPjwvbj48bj48L24+PG4+PC9u
PgogICA8ZGl2IGNsYXNzPSJociIgc3R5bGU9ImdyaWQtdGVtcGxhdGUtY29sdW1uczogc3ViZ3Jp
ZCBbXSBbXSBbXSBbXSBbYV07IGdyaWQtY29sdW1uOjIvc3BhbiA2Ij4KICAgICA8eCBzdHlsZT0i
Z3JpZC1jb2x1bW46IGEvYSAyIj54PC94PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9wYXJlbnQtcmVw
ZWF0LWF1dG8tZml0LTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9wYXJlbnQtcmVwZWF0LWF1dG8tZml0LTAw
MS5odG1sCmluZGV4IDEyMDEwYzMyZjI5YzY3MjIyODYxZThhM2UxZjJiYzIwZTY1MGFmMWEuLmU1
MTMwOWJiNmEwNTk2NmU4OGExNjIxMTFmZTZlNmUyOGZkN2I4ZDEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1Ymdy
aWQvcGFyZW50LXJlcGVhdC1hdXRvLWZpdC0wMDEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1y
ZXBlYXQtYXV0by1maXQtMDAxLmh0bWwKQEAgLTQzNSw4ICs0MzUsOCBAQCBodG1sLGJvZHkgewog
CiA8c2NyaXB0PgogICBjb25zdCBleHBlY3RlZFJlc3VsdHMgPSBbCi0gICAgIlt5XSAwcHggW3pd
IDFweCBbel0gMXB4IFt6XSAxcHggW3pdIDFweCBbel0iLAotICAgICJbeCB5XSAwcHggW3pdIDFw
eCBbel0gMXB4IFt6XSAxcHggW3pdIiwKKyAgICAiW3ldIDBweCBbel0gMXB4IFt6XSAxcHggW3pd
IDFweCBbel0gMXB4IFt6XSA0NnB4IiwKKyAgICAiW3ggeV0gMHB4IFt6XSAxcHggW3pdIDFweCBb
el0gMXB4IFt6XSAyMy41cHggMjMuNXB4IiwKICAgICAiW3hdIDFweCBbeCB5XSAwcHggW3ldIDEw
cHggW3ldIDEwcHggW3ldIDEwcHggW3pdIDFweCBbel0gMXB4IFt6XSIsCiAgICAgIlt4XSAycHgg
W3hdIDJweCBbeCB5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt6XSAxcHggW3pd
IiwKICAgICAiW3hdIDJweCBbeF0gMnB4IFt4XSAycHggW3ggeV0gMTBweCBbeV0gMTBweCBbeV0g
MTBweCBbeV0gMHB4IFt6XSIsCkBAIC00NTQsMTUgKzQ1NCwxNSBAQCBodG1sLGJvZHkgewogICAg
ICJbeF0gMnB4IFt4XSAycHggW3ggeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBb
el0iLAogICAgICJbeF0gMnB4IFt4XSAycHggW3hdIDJweCBbeCB5XSAxMHB4IFt5XSAxMHB4IFt5
XSAxMHB4IFt5XSAwcHgiLAogICAgICJbeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEwcHgg
W3pdIDFweCBbel0gMXB4IFt6XSIsCi0gICAgIlt4IHldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5
XSAxMHB4IFt6XSAxcHggW3pdIiwKLSAgICAiW3hdIDJweCBbeCB5XSAwcHggW3ldIDEwcHggW3ld
IDEwcHggW3ldIDEwcHggW3pdIiwKKyAgICAiW3ggeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ld
IDEwcHggW3pdIDFweCBbel0gMjlweCIsCisgICAgIlt4XSAycHggW3ggeV0gMHB4IFt5XSAxMHB4
IFt5XSAxMHB4IFt5XSAxMHB4IFt6XSAxOHB4IiwKICAgICAiW3hdIDJweCBbeF0gMnB4IFt4IHld
IDEwcHggW3ldIDEwcHggW3ldIDEwcHggW3ldIDEwcHgiLAotICAgICJbeV0gMHB4IFt5XSAwcHgg
W3ldIDEwcHggW3ldIDEwcHggW3pdIDFweCBbel0iLAotICAgICJbeCB5XSAwcHggW3ldIDBweCBb
eV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbel0iLAotICAgICJbeF0gMnB4IFt4IHldIDBweCBb
eV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCIsCi0gICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBw
eCBbeV0gMTBweCBbeV0gMTBweCBbel0iLAotICAgICJbeCB5XSAwcHggW3ldIDBweCBbeV0gMTBw
eCBbeV0gMTBweCBbeV0gMTBweCIsCi0gICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0g
MTBweCBbeV0gMTBweCIsCisgICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBb
el0gMXB4IFt6XSAyOXB4IiwKKyAgICAiW3ggeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEw
cHggW3ldIDEwcHggW3pdIDIwcHgiLAorICAgICJbeF0gMnB4IFt4IHldIDBweCBbeV0gMTBweCBb
eV0gMTBweCBbeV0gMTBweCAxOHB4IiwKKyAgICAiW3ldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5
XSAxMHB4IFt5XSAxMHB4IFt6XSAyMHB4IiwKKyAgICAiW3ggeV0gMHB4IFt5XSAwcHggW3ldIDEw
cHggW3ldIDEwcHggW3ldIDEwcHggMjBweCIsCisgICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBw
eCBbeV0gMTBweCBbeV0gMTBweCAyMHB4IiwKICAgXTsKICAgWy4uLmRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3JBbGwoJy5ncmlkJyldLmZvckVhY2goZnVuY3Rpb24oZ3JpZCwgaSkgewogICAgIGxldCBh
Y3R1YWwgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkKVsnZ3JpZC10ZW1wbGF0ZS1jb2x1
bW5zJ107CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1yZXBlYXQtYXV0by1maXQtMDAyLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Z3JpZC9zdWJncmlkL3BhcmVudC1yZXBlYXQtYXV0by1maXQtMDAyLmh0bWwKaW5kZXggZDQ2ZjU5
Yjk5ZjU1N2ZiNDI0ZmYwYTdhYjJhNDk2MmRlMjMwMjNjMS4uNmM2MDJhYjc5MDMzYmI4YzRjNjNj
NDY5N2JkYWU2OGU4ZTI4YzFjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9wYXJlbnQtcmVwZWF0LWF1
dG8tZml0LTAwMi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcGFyZW50LXJlcGVhdC1hdXRvLWZpdC0wMDIu
aHRtbApAQCAtNDM5LDggKzQzOSw4IEBAIGh0bWwsYm9keSB7CiAKIDxzY3JpcHQ+CiAgIGNvbnN0
IGV4cGVjdGVkUmVzdWx0cyA9IFsKLSAgICAiW3ldIDBweCBbel0gMXB4IFt6XSAxcHggW3pdIDFw
eCBbel0gMXB4IFt6XSIsCi0gICAgIlt4IHldIDBweCBbel0gMXB4IFt6XSAxcHggW3pdIDFweCBb
el0iLAorICAgICJbeV0gMHB4IFt6XSAxcHggW3pdIDFweCBbel0gMXB4IFt6XSAxcHggW3pdIDQ2
cHgiLAorICAgICJbeCB5XSAwcHggW3pdIDFweCBbel0gMXB4IFt6XSAxcHggW3pdIDIzLjVweCAy
My41cHgiLAogICAgICJbeF0gMXB4IFt4IHldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBw
eCBbel0gMXB4IFt6XSAxcHggW3pdIiwKICAgICAiW3hdIDJweCBbeF0gMnB4IFt4IHldIDEwcHgg
W3ldIDEwcHggW3ldIDEwcHggW3ldIDEwcHggW3pdIDFweCBbel0iLAogICAgICJbeF0gMnB4IFt4
XSAycHggW3hdIDJweCBbeCB5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAwcHggW3pdIiwK
QEAgLTQ1OCwxNSArNDU4LDE1IEBAIGh0bWwsYm9keSB7CiAgICAgIlt4XSAycHggW3hdIDJweCBb
eCB5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt6XSIsCiAgICAgIlt4XSAycHgg
W3hdIDJweCBbeF0gMnB4IFt4IHldIDEwcHggW3ldIDEwcHggW3ldIDEwcHggW3ldIDBweCIsCiAg
ICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbel0gMXB4IFt6XSAxcHggW3pd
IiwKLSAgICAiW3ggeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3pdIDFweCBbel0i
LAotICAgICJbeF0gMnB4IFt4IHldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbel0i
LAorICAgICJbeCB5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbel0gMXB4IFt6XSAy
OXB4IiwKKyAgICAiW3hdIDJweCBbeCB5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3ldIDEwcHgg
W3pdIDE4cHgiLAogICAgICJbeF0gMnB4IFt4XSAycHggW3ggeV0gMTBweCBbeV0gMTBweCBbeV0g
MTBweCBbeV0gMTBweCIsCi0gICAgIlt5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBb
el0gMXB4IFt6XSIsCi0gICAgIlt4IHldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5
XSAxMHB4IFt6XSIsCi0gICAgIlt4XSAycHggW3ggeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5
XSAxMHB4IiwKLSAgICAiW3ldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4
IFt6XSIsCi0gICAgIlt4IHldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4
IiwKLSAgICAiW3ldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IiwKKyAg
ICAiW3ldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt6XSAxcHggW3pdIDI5cHgiLAor
ICAgICJbeCB5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBweCBbel0gMjBw
eCIsCisgICAgIlt4XSAycHggW3ggeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4IDE4
cHgiLAorICAgICJbeV0gMHB4IFt5XSAwcHggW3ldIDEwcHggW3ldIDEwcHggW3ldIDEwcHggW3pd
IDIwcHgiLAorICAgICJbeCB5XSAwcHggW3ldIDBweCBbeV0gMTBweCBbeV0gMTBweCBbeV0gMTBw
eCAyMHB4IiwKKyAgICAiW3ldIDBweCBbeV0gMHB4IFt5XSAxMHB4IFt5XSAxMHB4IFt5XSAxMHB4
IDIwcHgiLAogICBdOwogICBbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmdyaWQnKV0u
Zm9yRWFjaChmdW5jdGlvbihncmlkLCBpKSB7CiAgICAgbGV0IGFjdHVhbCA9IHdpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKGdyaWQpWydncmlkLXRlbXBsYXRlLXJvd3MnXTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>