<?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>236336</bug_id>
          
          <creation_ts>2022-02-08 15:39:43 -0800</creation_ts>
          <short_desc>Copy sub grid track sizes from the parent grid</short_desc>
          <delta_ts>2022-02-17 01:54:39 -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>
          
          
          <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>236287</dependson>
          <blocked>202115</blocked>
    
    <blocked>236337</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>obrufau</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>1838922</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-08 15:39:43 -0800</bug_when>
    <thetext>Axes that are sub gridded shouldn&apos;t do their own track sizing, they should inherit the computed track sizes directly from their parent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838936</commentid>
    <comment_count>1</comment_count>
      <attachid>451318</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-08 16:10:00 -0800</bug_when>
    <thetext>Created attachment 451318
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841496</commentid>
    <comment_count>2</comment_count>
      <attachid>451968</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-14 17:24:58 -0800</bug_when>
    <thetext>Created attachment 451968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841498</commentid>
    <comment_count>3</comment_count>
      <attachid>451969</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-14 17:26:07 -0800</bug_when>
    <thetext>Created attachment 451969
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841499</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2022-02-14 17:27:54 -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>1841880</commentid>
    <comment_count>5</comment_count>
      <attachid>452074</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-15 12:39:08 -0800</bug_when>
    <thetext>Created attachment 452074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841982</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-15 15:40:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/88991551&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842127</commentid>
    <comment_count>7</comment_count>
      <attachid>452074</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2022-02-15 21:41:15 -0800</bug_when>
    <thetext>Comment on attachment 452074
Patch

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

&gt; Source/WebCore/rendering/GridLayoutFunctions.cpp:102
&gt; +    return !isOrthogonalParent(grid, parent) ? direction : (direction == ForColumns ? ForRows : ForColumns);

Nit: I think this would read better as a positive test

return isOrthogonalParent ? (direction == ForColumns ? ForRows : ForColumns) : direction;

But that&apos;s a minor opinion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842640</commentid>
    <comment_count>8</comment_count>
      <attachid>452074</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-02-16 18:16:40 -0800</bug_when>
    <thetext>Comment on attachment 452074
Patch

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

&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:1402
&gt; +static void removeSubgridMarginBorderPaddingFromTracks(Vector&lt;GridTrack&gt;&amp; tracks, LayoutUnit mbp, bool forwards)

I don&apos;t really get the reasoning for shrinking the track sizes.
What should happen is https://drafts.csswg.org/css-grid/#subgrid-item-contribution

&gt; The subgrid’s own grid items participate in the sizing of its in the subgridded dimension(s) and are aligned to it in those dimensions.
&gt; In this process, the sum of the subgrid’s margin, padding, and borders at each edge are applied as an extra layer of (potentially negative) margin to the items at those edges. This extra layer of “margin” accumulates through multiple levels of subgrids.

Seems a different thing.

&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:1432
&gt; +    int numTracks = tracks(m_direction).size();

Maybe do

    Vector&lt;GridTrack&gt;&amp; allTracks = tracks(direction);

to avoid calling tracks(m_direction) continuously.

&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:1515
&gt; +    // Subgrids inherit their sizing directly from the parent, so may be unrelated

But doesn&apos;t the condition hold anyways? Or maybe not, if you shrink them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842644</commentid>
    <comment_count>9</comment_count>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-16 18:25:46 -0800</bug_when>
    <thetext>(In reply to Oriol Brufau from comment #8)
&gt; Comment on attachment 452074 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=452074&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:1402
&gt; &gt; +static void removeSubgridMarginBorderPaddingFromTracks(Vector&lt;GridTrack&gt;&amp; tracks, LayoutUnit mbp, bool forwards)
&gt; 
&gt; I don&apos;t really get the reasoning for shrinking the track sizes.
&gt; What should happen is
&gt; https://drafts.csswg.org/css-grid/#subgrid-item-contribution
&gt; 
&gt; &gt; The subgrid’s own grid items participate in the sizing of its in the subgridded dimension(s) and are aligned to it in those dimensions.
&gt; &gt; In this process, the sum of the subgrid’s margin, padding, and borders at each edge are applied as an extra layer of (potentially negative) margin to the items at those edges. This extra layer of “margin” accumulates through multiple levels of subgrids.
&gt; 
&gt; Seems a different thing.

That is implemented over the next two parts. First we add recursion into sub grids as part of doing sizing for the outer grid (236337) and then we add the subgrid elements margin/border/padding as extra size to those inner items (236338).

The track shrinking needs to happen since the tracks will now be sized to be big enough to hold the subgrid items as well as the M/B/P. If we just copy those sizes directly, then any &apos;auto&apos; sized subgrid items would compute width/heights that cover the subgrids M/B/P area.

It appears that this is how Firefox implements the same functionality, https://searchfox.org/mozilla-central/rev/832f67743873852018eef35995c42e4dac3de4df/layout/generic/nsGridContainerFrame.cpp#3482


&gt; 
&gt; &gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:1432
&gt; &gt; +    int numTracks = tracks(m_direction).size();
&gt; 
&gt; Maybe do
&gt; 
&gt;     Vector&lt;GridTrack&gt;&amp; allTracks = tracks(direction);
&gt; 
&gt; to avoid calling tracks(m_direction) continuously.
&gt; 
&gt; &gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:1515
&gt; &gt; +    // Subgrids inherit their sizing directly from the parent, so may be unrelated
&gt; 
&gt; But doesn&apos;t the condition hold anyways? Or maybe not, if you shrink them.

Yeah indeed, the shrinking causes this condition to fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842675</commentid>
    <comment_count>10</comment_count>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-16 20:18:11 -0800</bug_when>
    <thetext>(In reply to Matt Woodrow from comment #9)
&gt; 
&gt; That is implemented over the next two parts. First we add recursion into sub
&gt; grids as part of doing sizing for the outer grid (236337) and then we add
&gt; the subgrid elements margin/border/padding as extra size to those inner
&gt; items (236338).
&gt; 
&gt; The track shrinking needs to happen since the tracks will now be sized to be
&gt; big enough to hold the subgrid items as well as the M/B/P. If we just copy
&gt; those sizes directly, then any &apos;auto&apos; sized subgrid items would compute
&gt; width/heights that cover the subgrids M/B/P area.
&gt; 
&gt; It appears that this is how Firefox implements the same functionality,
&gt; https://searchfox.org/mozilla-central/rev/
&gt; 832f67743873852018eef35995c42e4dac3de4df/layout/generic/nsGridContainerFrame.
&gt; cpp#3482
&gt; 

I also tried an alternative approach, where I copied the track sizes directly into the child grid.

When laying out the child items inside the subgrid and calling setOverridingContainingBlockContentLogicalWidth/Height, we then needed to subtract any contributions from the subgrid&apos;s MBP from the track sizes before telling the child how much space it has. That got significantly more complicated than this approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842679</commentid>
    <comment_count>11</comment_count>
      <attachid>452299</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-16 20:24:25 -0800</bug_when>
    <thetext>Created attachment 452299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842718</commentid>
    <comment_count>12</comment_count>
      <attachid>452299</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-02-16 22:42:28 -0800</bug_when>
    <thetext>Comment on attachment 452299
Patch

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

&gt; Source/WebCore/rendering/GridLayoutFunctions.h:33
&gt; +class RenderElement;

nit: should be alphabetically ordered.

&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:1423
&gt; +    RenderGrid* outer = downcast&lt;RenderGrid&gt;(m_renderGrid-&gt;parent());

downcast is fallible; so an assertion should be added or test if it could ever be null

&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:1427
&gt; +    GridSpan span = outer-&gt;gridSpanForChild(*m_renderGrid, direction);

could be defined after the test to avoid unnecessary method call.

&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:1461
&gt; +    if (m_renderGrid-&gt;isSubgrid(m_direction)) {

nit: this would have been nicer with a &amp;&amp;

&gt; Source/WebCore/rendering/RenderGrid.cpp:366
&gt; +        if (isSubgrid(direction)) {

to avoid multiple level of nesting, returning earlier if !isSubgrid</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842733</commentid>
    <comment_count>13</comment_count>
      <attachid>452325</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-16 23:30:50 -0800</bug_when>
    <thetext>Created attachment 452325
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842784</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-17 01:54:33 -0800</bug_when>
    <thetext>Committed r290007 (247393@main): &lt;https://commits.webkit.org/247393@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452325.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451318</attachid>
            <date>2022-02-08 16:10:00 -0800</date>
            <delta_ts>2022-02-14 17:24:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236336-20220209130959.patch</filename>
            <type>text/plain</type>
            <size>10927</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThkNGMzMDUxZGQ0NWVl
MDViZGE5MWJhMDI3ZWQxODJkOTQxMGQ4Yy4uZGFhNzI5MTI3ZjA5ZTgxMmE1NzM0OGQwOTcxNTVh
ZGU1Nzc4NjM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIyLTAyLTA4ICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29weSB0cmFjayBz
aXplcyBmcm9tIHBhcmVudCBncmlkIGludG8gc3ViZ3JpZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29waWVzIHRyYWNrIHNpemVzIGZyb20gdGhlIHBh
cmVudCBSZW5kZXJHcmlkJ3MgdHJhY2sgc2l6aW5nIGFsZ29yaXRobSBmb3IgYXhlcworICAgICAg
ICB0aGF0IGFyZSBzdWJncmlkZGVkLCByYXRoZXIgdGhhbiBkb2luZyBpdHMgb3duIHNpemluZy4K
KyAgICAgICAgQWNjb3VudHMgZm9yIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHN1YmdyaWQncyBn
cmlkLWdhcCBhbmQgdGhlIHBhcmVudCdzIGdyaWQgZ2FwCisgICAgICAgIHdoZW4gY29udmVydGlu
ZyBmcm9tIHRyYWNrIHNpemVzIGludG8gbGluZSBwb3NpdGlvbnMgaW4gUmVuZGVyR3JpZC4KKwor
ICAgICAgICBFeGlzdGluZyB0ZXN0IGV4cGVjdGF0aW9ucyB1cGRhdGVkLgorCisgICAgICAgICog
cmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OnJ1bik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6bGF5b3V0QmxvY2sp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Z3JpZEdhcCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJHcmlkOjpwb3B1bGF0ZUdyaWRQb3NpdGlvbnNGb3JEaXJlY3Rpb24p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6CisKIDIwMjItMDItMDcgIE1hdHQg
V29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KIAogICAgICAgICBMb29rdXAgbGluZSBu
YW1lcyBmb3Igc3ViIGdyaWRzIHVzaW5nIGxpbmUgbmFtZXMgZnJvbSBhbmNlc3RvciBncmlkcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29y
aXRobS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3Jp
dGhtLmNwcAppbmRleCAyNDQ3Nzg1ZjdlNDEyMThjOTdmMmI1MGJkMDMzZjI2OWUwODBlMTZiLi4w
OWU5OWVkNGZkMDBiZDJiOWUwYjdjZWU4NTdlNWUxZGYyMDQ0NmVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcApAQCAt
MTQwNCw2ICsxNDA0LDIzIEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpydW4oKQog
ICAgIEFTU0VSVCh3YXNTZXR1cCgpKTsKICAgICBTdGF0ZU1hY2hpbmUgc3RhdGVNYWNoaW5lKCp0
aGlzKTsKIAorICAgIGlmIChtX3JlbmRlckdyaWQtPmlzU3ViZ3JpZChtX2RpcmVjdGlvbikpIHsK
KyAgICAgICAgUmVuZGVyR3JpZCogb3V0ZXIgPSBkb3duY2FzdDxSZW5kZXJHcmlkPihtX3JlbmRl
ckdyaWQtPnBhcmVudCgpKTsKKyAgICAgICAgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtJiBwYXJl
bnRBbGdvID0gb3V0ZXItPm1fdHJhY2tTaXppbmdBbGdvcml0aG07CisgICAgICAgIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24gPSBHcmlkTGF5b3V0RnVuY3Rpb25zOjpmbG93QXdh
cmVEaXJlY3Rpb25Gb3JDaGlsZCgqbV9yZW5kZXJHcmlkLCAqb3V0ZXIsIG1fZGlyZWN0aW9uKTsK
KyAgICAgICAgVmVjdG9yPEdyaWRUcmFjaz4mIHBhcmVudFRyYWNrcyA9IHBhcmVudEFsZ28udHJh
Y2tzKGRpcmVjdGlvbik7CisgICAgICAgIEdyaWRTcGFuIHNwYW4gPSBvdXRlci0+Z3JpZFNwYW5G
b3JDaGlsZCgqbV9yZW5kZXJHcmlkLCBkaXJlY3Rpb24pOworCisgICAgICAgIGlmIChwYXJlbnRU
cmFja3Muc2l6ZSgpKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYWNr
cyhtX2RpcmVjdGlvbikuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICAgICAgdHJhY2tzKG1fZGly
ZWN0aW9uKVtpXSA9IHBhcmVudFRyYWNrc1tpICsgc3Bhbi5zdGFydExpbmUoKV07CisKKyAgICAg
ICAgICAgIGlmIChtX3JlbmRlckdyaWQtPnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
ICE9IG91dGVyLT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKKyAgICAgICAgICAg
ICAgICB0cmFja3MobV9kaXJlY3Rpb24pLnJldmVyc2UoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIC8vIFN0ZXAgMS4KICAgICBjb25zdCBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IGluaXRpYWxGcmVlU3BhY2UgPSBmcmVlU3BhY2UobV9kaXJlY3Rpb24p
OwogICAgIGluaXRpYWxpemVUcmFja1NpemVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5jcHAKaW5kZXggNTg1ZmRjMDZkZGZkODMxOGYyMTAzM2E2ZjYxOWY2ODcwNDFiMGE0
ZC4uMmQ1ZTlmMGY2ODczMjI4NmRiYjhmZTA0Njg4ZTU1MTRmZTk3OTBjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMzA3LDcgKzMwNyw2IEBAIHZvaWQgUmVu
ZGVyR3JpZDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQog
ICAgICAgICB9CiAKICAgICAgICAgbGF5b3V0R3JpZEl0ZW1zKCk7Ci0gICAgICAgIG1fdHJhY2tT
aXppbmdBbGdvcml0aG0ucmVzZXQoKTsKIAogICAgICAgICBlbmRBbmRDb21taXRVcGRhdGVTY3Jv
bGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbigpOwogCkBAIC0zMTgsNiArMzE3LDcgQEAgdm9p
ZCBSZW5kZXJHcmlkOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVu
aXQpCiAgICAgICAgIG1fb3V0T2ZGbG93SXRlbVJvdy5jbGVhcigpOwogCiAgICAgICAgIGxheW91
dFBvc2l0aW9uZWRPYmplY3RzKHJlbGF5b3V0Q2hpbGRyZW4gfHwgaXNEb2N1bWVudEVsZW1lbnRS
ZW5kZXJlcigpKTsKKyAgICAgICAgbV90cmFja1NpemluZ0FsZ29yaXRobS5yZXNldCgpOwogCiAg
ICAgICAgIGNvbXB1dGVPdmVyZmxvdyhjbGllbnRMb2dpY2FsUmlnaHRBbmRCb3R0b21BZnRlclJl
cG9zaXRpb25pbmcoKS5oZWlnaHQoKSk7CiAgICAgfQpAQCAtMzQwLDggKzM0MCwxNSBAQCBMYXlv
dXRVbml0IFJlbmRlckdyaWQ6OmdyaWRHYXAoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVj
dGlvbiwgc3RkOjpvcHRpb25hbAogewogICAgIEFTU0VSVCghYXZhaWxhYmxlU2l6ZSB8fCAqYXZh
aWxhYmxlU2l6ZSA+PSAwKTsKICAgICBjb25zdCBHYXBMZW5ndGgmIGdhcExlbmd0aCA9IGRpcmVj
dGlvbiA9PSBGb3JDb2x1bW5zPyBzdHlsZSgpLmNvbHVtbkdhcCgpIDogc3R5bGUoKS5yb3dHYXAo
KTsKLSAgICBpZiAoZ2FwTGVuZ3RoLmlzTm9ybWFsKCkpCisgICAgaWYgKGdhcExlbmd0aC5pc05v
cm1hbCgpKSB7CisgICAgICAgIGlmIChpc1N1YmdyaWQoZGlyZWN0aW9uKSkgeworICAgICAgICAg
ICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIHBhcmVudERpcmVjdGlvbiA9IEdyaWRMYXlvdXRG
dW5jdGlvbnM6OmZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKCp0aGlzLCAqcGFyZW50KCksIGRp
cmVjdGlvbik7CisgICAgICAgICAgICBpZiAoIWF2YWlsYWJsZVNpemUpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckdyaWQ+KHBhcmVudCgpKS0+Z3JpZEdhcChwYXJlbnRE
aXJlY3Rpb24sIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVu
ZGVyR3JpZD4ocGFyZW50KCkpLT5ncmlkR2FwKHBhcmVudERpcmVjdGlvbik7CisgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIDBfbHU7CisgICAgfQogCiAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3Ro
KGdhcExlbmd0aC5sZW5ndGgoKSwgYXZhaWxhYmxlU2l6ZS52YWx1ZV9vcigwKSk7CiB9CkBAIC0x
MDg2LDggKzEwOTMsOSBAQCB2b2lkIFJlbmRlckdyaWQ6OnBvcHVsYXRlR3JpZFBvc2l0aW9uc0Zv
ckRpcmVjdGlvbihHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZQogICAgIGNvbnN0IGF1dG8m
IG9mZnNldCA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gbV9vZmZzZXRCZXR3ZWVuQ29sdW1u
cyA6IG1fb2Zmc2V0QmV0d2VlblJvd3M7CiAgICAgYXV0byYgcG9zaXRpb25zID0gaXNSb3dBeGlz
ID8gbV9jb2x1bW5Qb3NpdGlvbnMgOiBtX3Jvd1Bvc2l0aW9uczsKICAgICBwb3NpdGlvbnMucmVz
aXplKG51bWJlck9mTGluZXMpOworICAgIGJvb2wgaXNTdWJncmlkID0gZGlyZWN0aW9uID09IEZv
ckNvbHVtbnMgPyBpc1N1YmdyaWRDb2x1bW5zKCkgOiBpc1N1YmdyaWRSb3dzKCk7CiAKLSAgICBh
dXRvIGJvcmRlckFuZFBhZGRpbmcgPSBpc1Jvd0F4aXMgPyBib3JkZXJBbmRQYWRkaW5nTG9naWNh
bExlZnQoKSA6IGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKTsKKyAgICBhdXRvIGJvcmRlckFuZFBh
ZGRpbmcgPSBpc1Jvd0F4aXMgPyBib3JkZXJBbmRQYWRkaW5nU3RhcnQoKSA6IGJvcmRlckFuZFBh
ZGRpbmdCZWZvcmUoKTsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTog
SWRlYWxseSBzY3JvbGxiYXJMb2dpY2FsV2lkdGgoKSBzaG91bGQgcmV0dXJuIHplcm8gaW4gaU9T
IHNvIHdlIGRvbid0IG5lZWQgdGhpcwogICAgIC8vIChzZWUgYnVnIGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE5MTg1NykuCkBAIC0xMDk3LDE1ICsxMTA1LDQ4IEBAIHZvaWQgUmVuZGVyR3JpZDo6cG9w
dWxhdGVHcmlkUG9zaXRpb25zRm9yRGlyZWN0aW9uKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBk
aXJlCiAgICAgICAgIGJvcmRlckFuZFBhZGRpbmcgKz0gc2Nyb2xsYmFyTG9naWNhbFdpZHRoKCk7
CiAjZW5kaWYKIAotICAgIHBvc2l0aW9uc1swXSA9IGJvcmRlckFuZFBhZGRpbmcgKyBvZmZzZXQu
cG9zaXRpb25PZmZzZXQ7CisgICAgaWYgKGlzU3ViZ3JpZCkKKyAgICAgICAgcG9zaXRpb25zWzBd
ID0gMF9sdTsKKyAgICBlbHNlCisgICAgICAgIHBvc2l0aW9uc1swXSA9IGJvcmRlckFuZFBhZGRp
bmcgKyBvZmZzZXQucG9zaXRpb25PZmZzZXQ7CiAgICAgaWYgKG51bWJlck9mTGluZXMgPiAxKSB7
CiAgICAgICAgIC8vIElmIHdlIGhhdmUgY29sbGFwc2VkIHRyYWNrcyB3ZSBqdXN0IGlnbm9yZSBn
YXBzIGhlcmUgYW5kIGFkZCB0aGVtIGxhdGVyIGFzIHdlIG1pZ2h0IG5vdAogICAgICAgICAvLyBj
b21wdXRlIHRoZSBnYXAgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgdHJhY2tzIHdpdGhvdXQgZXhh
bWluaW5nIHRoZSBzdXJyb3VuZGluZyBvbmVzLgogICAgICAgICBMYXlvdXRVbml0IGdhcCA9ICFo
YXNDb2xsYXBzZWRUcmFja3MgPyBncmlkR2FwKGRpcmVjdGlvbikgOiAwX2x1OwogICAgICAgICB1
bnNpZ25lZCBuZXh0VG9MYXN0TGluZSA9IG51bWJlck9mTGluZXMgLSAyOworCisgICAgICAgIGF1
dG8gYWRqdXN0ZWRUcmFja1NpemUgPSBbJl0odW5zaWduZWQgaSkgeworICAgICAgICAgICAgTGF5
b3V0VW5pdCBzaXplID0gdHJhY2tzW2ldLmJhc2VTaXplKCk7CisgICAgICAgICAgICBpZiAoIWlz
U3ViZ3JpZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZTsKKworICAgICAgICAgICAgLy8g
aHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1ncmlkLTIvI3N1YmdyaWQtaXRlbS1jb250cmli
dXRpb24KKyAgICAgICAgICAgIC8vIEFjY3VtdWxhdGUgaGFsZiB0aGUgZGlmZmVyZW5jZSBpbiBn
YXAgc2l6ZXMgZnJvbSBhbGwgYW5jZXN0b3IgZ3JpZHMsCisgICAgICAgICAgICAvLyBhbmQgYWRq
dXN0IHRoZSBzaXplIG9mIGFsbCB0cmFjayBlZGdlcywgZXhjZXB0IHRoZSBvdXRlcm1vc3QgdHdv
LgorICAgICAgICAgICAgTGF5b3V0VW5pdCBnYXBEaWZmZXJlbmNlOworICAgICAgICAgICAgTGF5
b3V0VW5pdCBnYXAgPSBncmlkR2FwKGRpcmVjdGlvbik7CisgICAgICAgICAgICBSZW5kZXJHcmlk
KiBncmlkID0gdGhpczsKKyAgICAgICAgICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBvdXRl
ckRpcmVjdGlvbiA9IGRpcmVjdGlvbjsKKyAgICAgICAgICAgIHdoaWxlIChncmlkLT5pc1N1Ymdy
aWQob3V0ZXJEaXJlY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgUmVuZGVyR3JpZCogb3V0ZXIg
PSBkb3duY2FzdDxSZW5kZXJHcmlkPihncmlkLT5wYXJlbnQoKSk7CisgICAgICAgICAgICAgICAg
b3V0ZXJEaXJlY3Rpb24gPSBHcmlkTGF5b3V0RnVuY3Rpb25zOjpmbG93QXdhcmVEaXJlY3Rpb25G
b3JDaGlsZCgqZ3JpZCwgKm91dGVyLCBvdXRlckRpcmVjdGlvbik7CisKKyAgICAgICAgICAgICAg
ICBMYXlvdXRVbml0IG91dGVyR2FwID0gb3V0ZXItPmdyaWRHYXAob3V0ZXJEaXJlY3Rpb24pOwor
ICAgICAgICAgICAgICAgIGdhcERpZmZlcmVuY2UgKz0gKGdhcCAtIG91dGVyR2FwKSAvIDI7Cisg
ICAgICAgICAgICAgICAgZ2FwID0gb3V0ZXJHYXA7CisgICAgICAgICAgICAgICAgZ3JpZCA9IG91
dGVyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFpKQorICAgICAgICAgICAgICAg
IHNpemUgLT0gZ2FwRGlmZmVyZW5jZTsKKyAgICAgICAgICAgIGlmIChpICE9IG5leHRUb0xhc3RM
aW5lKQorICAgICAgICAgICAgICAgIHNpemUgLT0gZ2FwRGlmZmVyZW5jZTsKKyAgICAgICAgICAg
IHNpemUgPSBzdGQ6Om1heChzaXplLCAwX2x1KTsKKyAgICAgICAgICAgIHJldHVybiBzaXplOwor
ICAgICAgICB9OworCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuZXh0VG9MYXN0
TGluZTsgKytpKQotICAgICAgICAgICAgcG9zaXRpb25zW2kgKyAxXSA9IHBvc2l0aW9uc1tpXSAr
IG9mZnNldC5kaXN0cmlidXRpb25PZmZzZXQgKyB0cmFja3NbaV0uYmFzZVNpemUoKSArIGdhcDsK
LSAgICAgICAgcG9zaXRpb25zW2xhc3RMaW5lXSA9IHBvc2l0aW9uc1tuZXh0VG9MYXN0TGluZV0g
KyB0cmFja3NbbmV4dFRvTGFzdExpbmVdLmJhc2VTaXplKCk7CisgICAgICAgICAgICBwb3NpdGlv
bnNbaSArIDFdID0gcG9zaXRpb25zW2ldICsgb2Zmc2V0LmRpc3RyaWJ1dGlvbk9mZnNldCArIGFk
anVzdGVkVHJhY2tTaXplKGkpICsgZ2FwOworICAgICAgICBwb3NpdGlvbnNbbGFzdExpbmVdID0g
cG9zaXRpb25zW25leHRUb0xhc3RMaW5lXSArIGFkanVzdGVkVHJhY2tTaXplKG5leHRUb0xhc3RM
aW5lKTsKIAogICAgICAgICAvLyBBZGp1c3QgY29sbGFwc2VkIGdhcHMuIENvbGxhcHNlZCB0cmFj
a3MgY2F1c2UgdGhlIHN1cnJvdW5kaW5nIGd1dHRlcnMgdG8gY29sbGFwc2UgKHRoZXkKICAgICAg
ICAgLy8gY29pbmNpZGUgZXhhY3RseSkgZXhjZXB0IG9uIHRoZSBlZGdlcyBvZiB0aGUgZ3JpZCB3
aGVyZSB0aGV5IGJlY29tZSAwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5k
ZXggM2FjNjA2NmIxZjdkODZmMmVjMWZlMTU0MjhjNjkwY2E5MmVkZjc4Ni4uOGI1NDkxNWQ2ZjE2
ZGYzNGYzMzBkMTdlMWEyZjZkZjczNmZkMTc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5oCkBAIC0xMDEsNiArMTAxLDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOworCiAgICAgSXRlbVBv
c2l0aW9uIHNlbGZBbGlnbm1lbnROb3JtYWxCZWhhdmlvcihjb25zdCBSZW5kZXJCb3gqIGNoaWxk
ID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEFTU0VSVChjaGlsZCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYTU3MmI5YWM2NzUyNzAwN2ZmYmMzMzkxNDAyMmY0ODg1OGU3ZWE4YS4uNDk2NDlm
MmM0NDU0Zjk1MTQxOTU5NmVlMjg0MzRmZThlNzg2NTY3YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIyLTAyLTA4ICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAg
ICAgICAgQ29weSB0cmFjayBzaXplcyBmcm9tIHBhcmVudCBncmlkIGludG8gc3ViZ3JpZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzM2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhpc3RpbmcgdGVz
dCBleHBlY3RhdGlvbnMgdXBkYXRlZC4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisK
IDIwMjItMDItMDcgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KIAogICAg
ICAgICBMb29rdXAgbGluZSBuYW1lcyBmb3Igc3ViIGdyaWRzIHVzaW5nIGxpbmUgbmFtZXMgZnJv
bSBhbmNlc3RvciBncmlkcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggM2NiN2E3NTlhMjc0MjMzNzcx
OGYyYjI3ODk1M2FjZDA4Y2Q3OGI0NC4uYWQ0ZDZjZTYzMWI3ZTAzMjQ4NmI2MWY3YTgwOGU1ODYw
MzUwMDAyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNDIxLDYgKzE0MjEsNyBAQCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9tYXNvbnJ5L3RlbnRhdGl2ZS9t
YXNvbnJ5LW9yZGVyLTAwMQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvbWFzb25yeS90ZW50YXRpdmUvbWFzb25yeS1zdWJncmlkLTAwMS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3Jp
ZC9tYXNvbnJ5L3RlbnRhdGl2ZS9tYXNvbnJ5LXN1YmdyaWQtMDAyLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIAoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQv
c3ViZ3JpZC9hdXRvLXRyYWNrLXNpemluZy0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9hYnMt
cG9zLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1wb3MtMDAzLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlk
L3N1YmdyaWQvYWJzLXBvcy0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpAQCAtMTQzOSw4
ICsxNDQwLDggQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQv
c3ViZ3JpZC9ncmlkLWdhcC1sYXJnZXItMDAyLmh0bWwgWwogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC1ub3JtYWwtMDAxLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtc21hbGxlci0wMDEuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3Vi
Z3JpZC9pdGVtLXBlcmNlbnRhZ2UtaGVpZ2h0LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xp
bmUtbmFtZXMtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDcuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL29y
dGhvZ29uYWwtd3JpdGluZy1tb2RlLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL29ydGhvZ29u
YWwtd3JpdGluZy1tb2RlLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL29ydGhvZ29uYWwtd3Jp
dGluZy1tb2RlLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451968</attachid>
            <date>2022-02-14 17:24:58 -0800</date>
            <delta_ts>2022-02-15 12:39:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236336-20220215142456.patch</filename>
            <type>text/plain</type>
            <size>13817</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ5ODc5YTBlN2YxNTVm
OWZiNGU0NDBmNzRlNDU5ZGY3NmQxMTcxYy4uMGRhYzg5MTQxMTZiOWQxZGE0OTVlZjIxZmYyZGQ3
Y2NjYzMyMDJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIyLTAyLTE1ICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29weSB0cmFjayBz
aXplcyBmcm9tIHBhcmVudCBncmlkIGludG8gc3ViZ3JpZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29waWVzIHRyYWNrIHNpemVzIGZyb20gdGhlIHBh
cmVudCBSZW5kZXJHcmlkJ3MgdHJhY2sgc2l6aW5nIGFsZ29yaXRobSBmb3IgYXhlcworICAgICAg
ICB0aGF0IGFyZSBzdWJncmlkZGVkLCByYXRoZXIgdGhhbiBkb2luZyBpdHMgb3duIHNpemluZy4K
KyAgICAgICAgQWNjb3VudHMgZm9yIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHN1YmdyaWQncyBn
cmlkLWdhcCBhbmQgdGhlIHBhcmVudCdzIGdyaWQgZ2FwLAorICAgICAgICBhcyB3ZWxsIGFzIHNw
YWNlIG9jY3VwaWVkIGJ5IHRoZSBzdWJncmlkIGVsZW1lbnQncyBtYXJnaW4vYm9yZGVyL3BhZGRp
bmcuCisKKyAgICAgICAgRXhpc3RpbmcgdGVzdCBleHBlY3RhdGlvbnMgdXBkYXRlZC4KKworICAg
ICAgICAqIHJlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpydW4pOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmxheW91
dEJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmdyaWRHYXAgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cG9wdWxhdGVHcmlkUG9zaXRpb25zRm9yRGly
ZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5oOgorCiAyMDIyLTAyLTE1
ICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CiAKICAgICAgICAgTG9va3Vw
IGxpbmUgbmFtZXMgZm9yIHN1YiBncmlkcyB1c2luZyBsaW5lIG5hbWVzIGZyb20gYW5jZXN0b3Ig
Z3JpZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1Npemlu
Z0FsZ29yaXRobS5jcHAKaW5kZXggMjQ0Nzc4NWY3ZTQxMjE4Yzk3ZjJiNTBiZDAzM2YyNjllMDgw
ZTE2Yi4uN2RlM2JiODJiNzg3OTYzMzM1MjlmNDBiYzc5ZDQ5ZTkzMzI3YmE3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5j
cHAKQEAgLTEzOTksMTEgKzEzOTksNzAgQEAgdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06
OmNvbXB1dGVCYXNlbGluZUFsaWdubWVudENvbnRleHQoKQogICAgIH0KIH0KIAorc3RhdGljIHZv
aWQgcmVtb3ZlU3ViZ3JpZE1hcmdpbkJvcmRlclBhZGRpbmdGcm9tVHJhY2tzKFZlY3RvcjxHcmlk
VHJhY2s+JiB0cmFja3MsIExheW91dFVuaXQgbWJwLCBib29sIGZvcndhcmRzKQoreworICAgIGlu
dCBudW1UcmFja3MgPSB0cmFja3Muc2l6ZSgpOworICAgIGludCBpID0gZm9yd2FyZHMgPyAwIDog
bnVtVHJhY2tzIC0gMTsKKyAgICB3aGlsZSAobWJwID4gMCAmJiAoZm9yd2FyZHMgPyBpIDwgbnVt
VHJhY2tzIDogaSA+PSAwKSkgeworICAgICAgICBMYXlvdXRVbml0IHNpemUgPSB0cmFja3NbaV0u
YmFzZVNpemUoKTsKKyAgICAgICAgaWYgKHNpemUgPiBtYnApIHsKKyAgICAgICAgICAgIHNpemUg
LT0gbWJwOworICAgICAgICAgICAgbWJwID0gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1icCAtPSBzaXplOworICAgICAgICAgICAgc2l6ZSA9IDA7CisgICAgICAgIH0KKyAgICAg
ICAgdHJhY2tzW2ldLnNldEJhc2VTaXplKHNpemUpOworCisgICAgICAgIGZvcndhcmRzID8gaSsr
IDogaS0tOworICAgIH0KK30KKworYm9vbCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmNvcHlV
c2VkVHJhY2tTaXplc0ZvclN1YmdyaWQoKQoreworICAgIFJlbmRlckdyaWQqIG91dGVyID0gZG93
bmNhc3Q8UmVuZGVyR3JpZD4obV9yZW5kZXJHcmlkLT5wYXJlbnQoKSk7CisgICAgR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtJiBwYXJlbnRBbGdvID0gb3V0ZXItPm1fdHJhY2tTaXppbmdBbGdvcml0
aG07CisgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiA9IEdyaWRMYXlvdXRG
dW5jdGlvbnM6OmZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKCptX3JlbmRlckdyaWQsICpvdXRl
ciwgbV9kaXJlY3Rpb24pOworICAgIFZlY3RvcjxHcmlkVHJhY2s+JiBwYXJlbnRUcmFja3MgPSBw
YXJlbnRBbGdvLnRyYWNrcyhkaXJlY3Rpb24pOworICAgIEdyaWRTcGFuIHNwYW4gPSBvdXRlci0+
Z3JpZFNwYW5Gb3JDaGlsZCgqbV9yZW5kZXJHcmlkLCBkaXJlY3Rpb24pOworCisgICAgaWYgKCFw
YXJlbnRUcmFja3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgbnVt
VHJhY2tzID0gdHJhY2tzKG1fZGlyZWN0aW9uKS5zaXplKCk7CisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1UcmFja3M7IGkrKykKKyAgICAgICAgdHJhY2tzKG1fZGlyZWN0aW9uKVtpXSA9IHBh
cmVudFRyYWNrc1tpICsgc3Bhbi5zdGFydExpbmUoKV07CisKKyAgICBpZiAoR3JpZExheW91dEZ1
bmN0aW9uczo6aXNTdWJncmlkUmV2ZXJzZWREaXJlY3Rpb24oKm91dGVyLCBkaXJlY3Rpb24sICpt
X3JlbmRlckdyaWQpKQorICAgICAgICB0cmFja3MobV9kaXJlY3Rpb24pLnJldmVyc2UoKTsKKwor
ICAgIExheW91dFVuaXQgc3RhcnRNQlAgPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBt
X3JlbmRlckdyaWQtPm1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmdTdGFydCgpIDogbV9yZW5kZXJH
cmlkLT5tYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nQmVmb3JlKCk7CisgICAgcmVtb3ZlU3ViZ3Jp
ZE1hcmdpbkJvcmRlclBhZGRpbmdGcm9tVHJhY2tzKHRyYWNrcyhtX2RpcmVjdGlvbiksIHN0YXJ0
TUJQLCB0cnVlKTsKKyAgICBMYXlvdXRVbml0IGVuZE1CUCA9IChtX2RpcmVjdGlvbiA9PSBGb3JD
b2x1bW5zKSA/IG1fcmVuZGVyR3JpZC0+bWFyZ2luQW5kQm9yZGVyQW5kUGFkZGluZ0VuZCgpIDog
bV9yZW5kZXJHcmlkLT5tYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nQWZ0ZXIoKTsKKyAgICByZW1v
dmVTdWJncmlkTWFyZ2luQm9yZGVyUGFkZGluZ0Zyb21UcmFja3ModHJhY2tzKG1fZGlyZWN0aW9u
KSwgZW5kTUJQLCBmYWxzZSk7CisKKyAgICBMYXlvdXRVbml0IGdhcERpZmZlcmVuY2UgPSAobV9y
ZW5kZXJHcmlkLT5ncmlkR2FwKG1fZGlyZWN0aW9uKSAtIG91dGVyLT5ncmlkR2FwKGRpcmVjdGlv
bikpIC8gMjsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVRyYWNrczsgaSsrKSB7CisgICAg
ICAgIExheW91dFVuaXQgc2l6ZSA9IHRyYWNrcyhtX2RpcmVjdGlvbilbaV0uYmFzZVNpemUoKTsK
KyAgICAgICAgaWYgKGkpCisgICAgICAgICAgICBzaXplIC09IGdhcERpZmZlcmVuY2U7CisgICAg
ICAgIGlmIChpICE9IG51bVRyYWNrcyAtIDEpCisgICAgICAgICAgICBzaXplIC09IGdhcERpZmZl
cmVuY2U7CisgICAgICAgIHRyYWNrcyhtX2RpcmVjdGlvbilbaV0uc2V0QmFzZVNpemUoc3RkOjpt
YXgoc2l6ZSwgMF9sdSkpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBHcmlk
VHJhY2tTaXppbmdBbGdvcml0aG06OnJ1bigpCiB7CiAgICAgQVNTRVJUKHdhc1NldHVwKCkpOwog
ICAgIFN0YXRlTWFjaGluZSBzdGF0ZU1hY2hpbmUoKnRoaXMpOwogCisgICAgaWYgKG1fcmVuZGVy
R3JpZC0+aXNTdWJncmlkKG1fZGlyZWN0aW9uKSkgeworICAgICAgICBpZiAoY29weVVzZWRUcmFj
a1NpemVzRm9yU3ViZ3JpZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIC8v
IFN0ZXAgMS4KICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGluaXRpYWxGcmVl
U3BhY2UgPSBmcmVlU3BhY2UobV9kaXJlY3Rpb24pOwogICAgIGluaXRpYWxpemVUcmFja1NpemVz
KCk7CkBAIC0xNDUzLDYgKzE1MTIsMTEgQEAgdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06
OnJlc2V0KCkKICNpZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBHcmlkVHJhY2tTaXppbmdBbGdvcml0
aG06OnRyYWNrc0FyZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0aCgpIGNvbnN0CiB7CisgICAgLy8g
U3ViZ3JpZHMgaW5oZXJpdCB0aGVpciBzaXppbmcgZGlyZWN0bHkgZnJvbSB0aGUgcGFyZW50LCBz
byBtYXkgYmUgdW5yZWxhdGVkCisgICAgLy8gdG8gdGhlaXIgaW5pdGlhbCBiYXNlIHNpemUuCisg
ICAgaWYgKG1fcmVuZGVyR3JpZC0+aXNTdWJncmlkKG1fZGlyZWN0aW9uKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKICAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYgYWxsVHJhY2tzID0gdHJh
Y2tzKG1fZGlyZWN0aW9uKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFsbFRyYWNrcy5z
aXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBhdXRvJiB0cmFja1NpemUgPSBhbGxUcmFja3Nb
aV0uY2FjaGVkVHJhY2tTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmgKaW5kZXggYWUxZGQ2YzdhY2RiZGI4N2RmZmMxZjdh
YzYyMzhkM2VlOGQ3YWU2NS4uNTk0ZDVmYWU5YWFjYWVlY2E1MGQ5MDM5ZGUxNjZlMzQ0MzM1ZDEx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0Fs
Z29yaXRobS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdB
bGdvcml0aG0uaApAQCAtMTkzLDYgKzE5Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdHJldGNo
RmxleGlibGVUcmFja3Moc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2UpOwogICAg
IHZvaWQgc3RyZXRjaEF1dG9UcmFja3MoKTsKIAorICAgIGJvb2wgY29weVVzZWRUcmFja1NpemVz
Rm9yU3ViZ3JpZCgpOworCiAgICAgLy8gU3RhdGUgbWFjaGluZS4KICAgICB2b2lkIGFkdmFuY2VO
ZXh0U3RhdGUoKTsKICAgICBib29sIGlzVmFsaWRUcmFuc2l0aW9uKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IDIyZDZi
MmRiYWI4MmJlYWE3MGEwYTE4MThkOWQxYjI3NGU3ZmNlZmIuLjk3Yjk2NWEzMGZkZDc2NjMxOGJi
M2Q4YTVjMDljMzRjNWE4M2JlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0xNzcsNiArMTc3LDExIEBAIHB1YmxpYzoKICAgICBM
YXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSBjb25zdCB7IHJldHVybiBib3JkZXJC
ZWZvcmUoKSArIHBhZGRpbmdCZWZvcmUoKTsgfQogICAgIExheW91dFVuaXQgYm9yZGVyQW5kUGFk
ZGluZ0FmdGVyKCkgY29uc3QgeyByZXR1cm4gYm9yZGVyQWZ0ZXIoKSArIHBhZGRpbmdBZnRlcigp
OyB9CiAKKyAgICBMYXlvdXRVbml0IG1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmdTdGFydCgpIGNv
bnN0IHsgcmV0dXJuIG1hcmdpblN0YXJ0KCkgKyBib3JkZXJTdGFydCgpICsgcGFkZGluZ1N0YXJ0
KCk7IH0KKyAgICBMYXlvdXRVbml0IG1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmdFbmQoKSBjb25z
dCB7IHJldHVybiBtYXJnaW5FbmQoKSArIGJvcmRlckVuZCgpICsgcGFkZGluZ0VuZCgpOyB9Cisg
ICAgTGF5b3V0VW5pdCBtYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgY29uc3QgeyBy
ZXR1cm4gbWFyZ2luQmVmb3JlKCkgKyBib3JkZXJCZWZvcmUoKSArIHBhZGRpbmdCZWZvcmUoKTsg
fQorICAgIExheW91dFVuaXQgbWFyZ2luQW5kQm9yZGVyQW5kUGFkZGluZ0FmdGVyKCkgY29uc3Qg
eyByZXR1cm4gbWFyZ2luQWZ0ZXIoKSArIGJvcmRlckFmdGVyKCkgKyBwYWRkaW5nQWZ0ZXIoKTsg
fQorCiAgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSBjb25z
dCB7IHJldHVybiBib3JkZXJUb3AoKSArIGJvcmRlckJvdHRvbSgpICsgcGFkZGluZ1RvcCgpICsg
cGFkZGluZ0JvdHRvbSgpOyB9CiAgICAgTGF5b3V0VW5pdCBob3Jpem9udGFsQm9yZGVyQW5kUGFk
ZGluZ0V4dGVudCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCkg
KyBwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCk7IH0KICAgICBMYXlvdXRVbml0IGJvcmRl
ckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYm9yZGVyQW5kUGFkZGlu
Z0JlZm9yZSgpICsgYm9yZGVyQW5kUGFkZGluZ0FmdGVyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCA5YWFmNWM0YWI1MzhlMTUwMjNhNDQyNGFjMjZlNWRh
YTM2NGMzZDdkLi5hZmYwMDdhNTBlOWE3M2MyYzhlZGU2MmFlZGI3ZmZjZTMzYWE4ODNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0zMjksNyArMzI5LDYgQEAg
dm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91
dFVuaXQpCiAgICAgICAgIH0KIAogICAgICAgICBsYXlvdXRHcmlkSXRlbXMoKTsKLSAgICAgICAg
bV90cmFja1NpemluZ0FsZ29yaXRobS5yZXNldCgpOwogCiAgICAgICAgIGVuZEFuZENvbW1pdFVw
ZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCk7CiAKQEAgLTM0MCw2ICszMzks
NyBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwg
TGF5b3V0VW5pdCkKICAgICAgICAgbV9vdXRPZkZsb3dJdGVtUm93LmNsZWFyKCk7CiAKICAgICAg
ICAgbGF5b3V0UG9zaXRpb25lZE9iamVjdHMocmVsYXlvdXRDaGlsZHJlbiB8fCBpc0RvY3VtZW50
RWxlbWVudFJlbmRlcmVyKCkpOworICAgICAgICBtX3RyYWNrU2l6aW5nQWxnb3JpdGhtLnJlc2V0
KCk7CiAKICAgICAgICAgY29tcHV0ZU92ZXJmbG93KGNsaWVudExvZ2ljYWxSaWdodEFuZEJvdHRv
bUFmdGVyUmVwb3NpdGlvbmluZygpLmhlaWdodCgpKTsKICAgICB9CkBAIC0zNjIsOCArMzYyLDE1
IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6Z3JpZEdhcChHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsCiB7CiAgICAgQVNTRVJUKCFhdmFpbGFibGVTaXpl
IHx8ICphdmFpbGFibGVTaXplID49IDApOwogICAgIGNvbnN0IEdhcExlbmd0aCYgZ2FwTGVuZ3Ro
ID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnM/IHN0eWxlKCkuY29sdW1uR2FwKCkgOiBzdHlsZSgp
LnJvd0dhcCgpOwotICAgIGlmIChnYXBMZW5ndGguaXNOb3JtYWwoKSkKKyAgICBpZiAoZ2FwTGVu
Z3RoLmlzTm9ybWFsKCkpIHsKKyAgICAgICAgaWYgKGlzU3ViZ3JpZChkaXJlY3Rpb24pKSB7Cisg
ICAgICAgICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gcGFyZW50RGlyZWN0aW9uID0gR3Jp
ZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoKnRoaXMsICpwYXJl
bnQoKSwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAgIGlmICghYXZhaWxhYmxlU2l6ZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyR3JpZD4ocGFyZW50KCkpLT5ncmlkR2Fw
KHBhcmVudERpcmVjdGlvbiwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgIHJldHVybiBkb3du
Y2FzdDxSZW5kZXJHcmlkPihwYXJlbnQoKSktPmdyaWRHYXAocGFyZW50RGlyZWN0aW9uKTsKKyAg
ICAgICAgfQogICAgICAgICByZXR1cm4gMF9sdTsKKyAgICB9CiAKICAgICByZXR1cm4gdmFsdWVG
b3JMZW5ndGgoZ2FwTGVuZ3RoLmxlbmd0aCgpLCBhdmFpbGFibGVTaXplLnZhbHVlX29yKDApKTsK
IH0KQEAgLTExMjUsNiArMTEzMiw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cG9wdWxhdGVHcmlkUG9z
aXRpb25zRm9yRGlyZWN0aW9uKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlCiAgICAgICAg
IC8vIGNvbXB1dGUgdGhlIGdhcCBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSB0cmFja3Mgd2l0aG91
dCBleGFtaW5pbmcgdGhlIHN1cnJvdW5kaW5nIG9uZXMuCiAgICAgICAgIExheW91dFVuaXQgZ2Fw
ID0gIWhhc0NvbGxhcHNlZFRyYWNrcyA/IGdyaWRHYXAoZGlyZWN0aW9uKSA6IDBfbHU7CiAgICAg
ICAgIHVuc2lnbmVkIG5leHRUb0xhc3RMaW5lID0gbnVtYmVyT2ZMaW5lcyAtIDI7CisKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5leHRUb0xhc3RMaW5lOyArK2kpCiAgICAgICAg
ICAgICBwb3NpdGlvbnNbaSArIDFdID0gcG9zaXRpb25zW2ldICsgb2Zmc2V0LmRpc3RyaWJ1dGlv
bk9mZnNldCArIHRyYWNrc1tpXS5iYXNlU2l6ZSgpICsgZ2FwOwogICAgICAgICBwb3NpdGlvbnNb
bGFzdExpbmVdID0gcG9zaXRpb25zW25leHRUb0xhc3RMaW5lXSArIHRyYWNrc1tuZXh0VG9MYXN0
TGluZV0uYmFzZVNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4
IDUxODAyNjcyOTI4NGY3NDdhNmEzY2M4ODVhYjk2YTIxY2IxNjAyYjQuLmJkMGE2ZGY3ZjE0NzY3
NDllZjM4YWI1ZTcxM2Y5MTk2N2JkNjE0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuaApAQCAtMTAxLDYgKzEwMSw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Cisg
ICAgZnJpZW5kIGNsYXNzIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTsKKwogICAgIEl0ZW1Qb3Np
dGlvbiBzZWxmQWxpZ25tZW50Tm9ybWFsQmVoYXZpb3IoY29uc3QgUmVuZGVyQm94KiBjaGlsZCA9
IG51bGxwdHIpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBBU1NFUlQoY2hpbGQpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGZkNjY3Y2RhNWYwODVmNTg3MTU0YWVjYTc0OWU1NTNkMzRjMWMyNDkuLmViNTg1NDkz
M2M0MzBiYjZmNDNkZDA5ODVkNzNlNjQxZmM5NmM3MzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAyMi0wMi0xNSAgTWF0dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgorCisgICAg
ICAgIENvcHkgdHJhY2sgc2l6ZXMgZnJvbSBwYXJlbnQgZ3JpZCBpbnRvIHN1YmdyaWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjMzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4aXN0aW5nIHRlc3Qg
ZXhwZWN0YXRpb25zIHVwZGF0ZWQuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorCiAy
MDIyLTAyLTE1ICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CiAKICAgICAg
ICAgTG9va3VwIGxpbmUgbmFtZXMgZm9yIHN1YiBncmlkcyB1c2luZyBsaW5lIG5hbWVzIGZyb20g
YW5jZXN0b3IgZ3JpZHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDM2MTU5NTFlM2U4YTUyMjUzMjRk
YWE4NTAyYzZjNTI2NDc4YmVkYTQuLjQ2MzNhYTdiOTZhYTY4ZGExZWU0NGFjZDljYzkwMTVjODI2
YjUwMTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTQwMSw2ICsxNDAxLDcgQEAgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvbWFzb25yeS90ZW50YXRpdmUvbWFz
b25yeS1vcmRlci0wMDEKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1n
cmlkL21hc29ucnkvdGVudGF0aXZlL21hc29ucnktc3ViZ3JpZC0wMDEuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQv
bWFzb25yeS90ZW50YXRpdmUvbWFzb25yeS1zdWJncmlkLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiAKK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1
YmdyaWQvYXV0by10cmFjay1zaXppbmctMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvYWJzLXBv
cy0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9hYnMtcG9zLTAwMy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9z
dWJncmlkL2Ficy1wb3MtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAgLTE0MDksMTcg
KzE0MTAsMTEgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQv
c3ViZ3JpZC9ncmlkLWdhcC0wMDEuaHRtbCBbIEltYWdlT24KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtMDAyLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1n
cmlkL3N1YmdyaWQvZ3JpZC1nYXAtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAt
MDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtMDA1Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1
YmdyaWQvZ3JpZC1nYXAtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtMDA3Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtMDA4Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQv
Z3JpZC1nYXAtMDA5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtbGFyZ2VyLTAwMS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLWxhcmdlci0wMDIuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQv
c3ViZ3JpZC9ncmlkLWdhcC1ub3JtYWwtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1n
YXAtc21hbGxlci0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9pdGVtLXBlcmNlbnRhZ2UtaGVp
Z2h0LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDAyLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1n
cmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9vcnRob2dv
bmFsLXdyaXRpbmctbW9kZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9vcnRob2dvbmFsLXdy
aXRpbmctbW9kZS0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpAQCAtMTQyOCw2ICsxNDIz
LDcgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3Jp
ZC9vcnRob2dvbmFsLXdyaXRpbmctbW9kZS0wMDQKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcGFyZW50LXJlcGVhdC1hdXRvLWZpdC0wMDEuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWdyaWQvc3ViZ3JpZC9wYXJlbnQtcmVwZWF0LWF1dG8tZml0LTAwMi5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Z3JpZC9zdWJncmlkL3JlcGVhdC1hdXRvLWZpbGwtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQv
cmVwZWF0LWF1dG8tZmlsbC0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9zdWJncmlkLWl0ZW0t
YmxvY2stc2l6ZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9zdWJncmlkLW1icC1vdmVyZmxv
dy0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9zdWJncmlkLW1icC1vdmVyZmxvdy0wMDIuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451969</attachid>
            <date>2022-02-14 17:26:07 -0800</date>
            <delta_ts>2022-02-16 20:24:15 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>ews-patch</filename>
            <type>text/plain</type>
            <size>97687</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3OWQzM2UwZDNkOTEuLmViNTg1NDkzM2M0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDIyLTAyLTE1ICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAg
ICAgICAgQ29weSB0cmFjayBzaXplcyBmcm9tIHBhcmVudCBncmlkIGludG8gc3ViZ3JpZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzM2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhpc3RpbmcgdGVz
dCBleHBlY3RhdGlvbnMgdXBkYXRlZC4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisK
KzIwMjItMDItMTUgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KKworICAg
ICAgICBMb29rdXAgbGluZSBuYW1lcyBmb3Igc3ViIGdyaWRzIHVzaW5nIGxpbmUgbmFtZXMgZnJv
bSBhbmNlc3RvciBncmlkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2Mjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIGV4cGVjdGF0aW9ucyBmb3IgbmV3bHkgcGFzc2luZyB0ZXN0cy4gCisK
KyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorCiAyMDIyLTAyLTA3ICBKb24gTGVlICA8am9u
bGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgYWNjZWxlcmF0ZWQgZHJhd2luZyBpbiB0
aGUgaU9TIHNpbXVsYXRvcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOGZkM2ViMDc3YzNmLi40NjMz
YWE3Yjk2YWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTQwMSw2ICsxNDAxLDcgQEAgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvbWFzb25yeS90ZW50YXRpdmUv
bWFzb25yeS1vcmRlci0wMDEKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL21hc29ucnkvdGVudGF0aXZlL21hc29ucnktc3ViZ3JpZC0wMDEuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvbWFzb25yeS90ZW50YXRpdmUvbWFzb25yeS1zdWJncmlkLTAwMi5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiAKK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlk
L3N1YmdyaWQvYXV0by10cmFjay1zaXppbmctMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvYWJz
LXBvcy0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9hYnMtcG9zLTAwMy5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3Jp
ZC9zdWJncmlkL2Ficy1wb3MtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAgLTE0MDks
NDUgKzE0MTAsMjUgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9ncmlkLWdhcC0wMDEuaHRtbCBbIEltYWdlT24KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtMDAyLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1n
YXAtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtMDA1Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlk
L3N1YmdyaWQvZ3JpZC1nYXAtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtMDA3
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtMDA4Lmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1Ymdy
aWQvZ3JpZC1nYXAtMDA5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtbGFyZ2VyLTAw
MS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLWxhcmdlci0wMDIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9ncmlkLWdhcC1ub3JtYWwtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3Jp
ZC1nYXAtc21hbGxlci0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9pdGVtLXBlcmNlbnRhZ2Ut
aGVpZ2h0LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDAxLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5l
LW5hbWVzLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA0Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5l
LW5hbWVzLTAwNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA3Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDguaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9vcnRo
b2dvbmFsLXdyaXRpbmctbW9kZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9vcnRob2dvbmFs
LXdyaXRpbmctbW9kZS0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9vcnRob2dvbmFsLXdyaXRp
bmctbW9kZS0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9vcnRob2dvbmFsLXdyaXRpbmctbW9k
ZS0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9wYXJlbnQtcmVwZWF0LWF1dG8tZml0LTAwMS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1yZXBlYXQtYXV0by1maXQtMDAyLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvcmVwZWF0LWF1dG8tZmlsbC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3Jp
ZC9yZXBlYXQtYXV0by1maWxsLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3JlcGVhdC1hdXRv
LWZpbGwtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcmVwZWF0LWF1dG8tZmlsbC0wMDQuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWdyaWQvc3ViZ3JpZC9yZXBlYXQtYXV0by1maWxsLTAwNS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9z
dWJncmlkL3JlcGVhdC1hdXRvLWZpbGwtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcmVwZWF0
LWF1dG8tZmlsbC0wMDcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9yZXBlYXQtYXV0by1maWxsLTAw
OC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3N1YmdyaWQtaXRlbS1ibG9jay1zaXplLTAwMS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9zdWJncmlkL3N1YmdyaWQtbWJwLW92ZXJmbG93LTAwMS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3Jp
ZC9zdWJncmlkL3N1YmdyaWQtbWJwLW92ZXJmbG93LTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlk
L3N1YmdyaWQtbWJwLW92ZXJmbG93LTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3N1YmdyaWQt
bWJwLW92ZXJmbG93LTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtc3ViZ3JpZGRlZC1h
eGlzLWF1dG8tcmVwZWF0ZXItY3Jhc2gtMDAxLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtc3ViZ3JpZGRlZC1h
eGlzLWF1dG8tcmVwZWF0ZXItY3Jhc2gtMDAyLmh0bWwgWyBDcmFzaCBdCiAKIHdlYmtpdC5vcmcv
Yi8xNDk4OTAgZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1zaG9ydGhhbmRzLXN0eWxlLWZvcm1h
dC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTkxNTA4IGZhc3QvY3NzLWdyaWQtbGF5
b3V0L2NyYXNoLWxhcmdlLXBvc2l0aW9ucy5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwppbmRleCBmMTY5MzY2MjQ1OGEuLmIzMjI5OTBhOGE1NyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjItMDItMTUgIE1hdHQgV29v
ZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KKworICAgICAgICBMb29rdXAgbGluZSBuYW1l
cyBmb3Igc3ViIGdyaWRzIHVzaW5nIGxpbmUgbmFtZXMgZnJvbSBhbmNlc3RvciBncmlkcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2Mjg3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1zdWJncmlkZGVkLWF4aXMtYXV0by1y
ZXBlYXRlci1jcmFzaC0wMDEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwNS1leHBlY3RlZC5odG1sOgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5h
bWVzLTAwNS5odG1sOgorCisgICAgICAgIE1ha2UgbGluZS1uYW1lcy0wMDUuaHRtbCBzbGlnaHRs
eSBoYXJkZXIgYnkgaGF2aW5nIHRoZSBtdWx0aXBsZSBkZWZpbml0aW9ucyBvZiB0aGUgJ2EnIGdy
aWQgYXJlYSBiZSBkaWZmZXJlbnQgYXQgYm90aCBlZGdlcy4KKworMjAyMi0wMi0xNSAgTWF0dCBX
b29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgorCisgICAgICAgIEluaGVyaXQgdHJhY2sg
Y291bnQgZnJvbSBwYXJlbnQgZ3JpZCBmb3Igc3ViZ3JpZGRlZCBheGVzIGFuZCBjbGFtcCBpdGVt
IHBsYWNlbWVudCB0byB0aGF0IGV4cGxpY2l0IGdyaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYxMjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IGNoYW5nZXMgdG8gbWF0Y2ggbGF0ZXN0IHNw
ZWMsIHN1Ym1pdHRlZCB1cHN0cmVhbSBhcyBodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdC9wdWxsLzMyNjI5CisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDItZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDUt
ZXhwZWN0ZWQuaHRtbDoKKwogMjAyMi0wMi0xNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0NTUyBDb250YWluZXIgUXVlcmllc10gSW1wbGVtZW50IGZ1bGwg
cXVlcnkgcGFyc2VyIGFuZCBldmFsdWF0b3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1zdWJn
cmlkZGVkLWF4aXMtYXV0by1yZXBlYXRlci1jcmFzaC0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3Jp
ZC9ncmlkLXN1YmdyaWRkZWQtYXhpcy1hdXRvLXJlcGVhdGVyLWNyYXNoLTAwMS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jZTU2OWM3ZTU2ZDkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtc3ViZ3JpZGRlZC1heGlzLWF1dG8tcmVw
ZWF0ZXItY3Jhc2gtMDAxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK2xheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTYKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNp
emUgODAweDE2CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4MAorICAg
ICAgUmVuZGVyR3JpZCB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgwCisgICAgICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgzOTIsMCkgc2l6ZSAzOTJ4MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlk
LXN1YmdyaWRkZWQtYXhpcy1hdXRvLXJlcGVhdGVyLWNyYXNoLTAwMi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9z
dWJncmlkL2dyaWQtc3ViZ3JpZGRlZC1heGlzLWF1dG8tcmVwZWF0ZXItY3Jhc2gtMDAyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmRiNjNhNWY2
YjM0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1zdWJncmlkZGVkLWF4aXMtYXV0
by1yZXBlYXRlci1jcmFzaC0wMDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg4CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCww
KSBzaXplIDgwMHg4CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4MApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3Jp
ZC9saW5lLW5hbWVzLTAwMi1leHBlY3RlZC5odG1sCmluZGV4IDA0YzU4Mzk1OTZjOS4uMjM5OTMy
OGJlY2M0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDAyLWV4cGVjdGVkLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwMi1leHBlY3RlZC5odG1sCkBAIC0xNCw3ICsxNCw3
IEBAIGh0bWwsYm9keSB7CiAKIC5ncmlkIHsKICAgZGlzcGxheTogZ3JpZDsKLSAgZ3JpZDogYXV0
byAvIFthXSA1MHB4IDUwcHggW2FdIDUwcHggNTBweCBbYV07CisgIGdyaWQ6IGF1dG8gLyBbYV0g
NTBweCA0MHB4IFthXSAxMHB4IDUwcHggW2FdOwogICBwYWRkaW5nOiAyMHB4IDEwcHg7CiB9CiAK
QEAgLTMyLDcgKzMyLDcgQEAgeCB7IGJhY2tncm91bmQ6IGdyZXk7IH0KIAogPGRpdiBjbGFzcz0i
Z3JpZCI+CiAgIDxkaXYgY2xhc3M9InN1YmdyaWQiPgotICAgIDx4IHN0eWxlPSJncmlkLWNvbHVt
bjogMSAvIDMiPjwveD4KKyAgICA8eCBzdHlsZT0iZ3JpZC1jb2x1bW46IDMgLyA0Ij48L3g+CiAg
IDwvZGl2PgogPC9kaXY+CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDUtZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDUtZXhwZWN0ZWQuaHRtbAppbmRleCA0
YzdmNGI1MGZkMTYuLjQ0YmIwZTBkYmJjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVz
LTAwNS1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDUtZXhwZWN0ZWQu
aHRtbApAQCAtMTE1LDcgKzExNSw3IEBAIHggewogPGRpdiBzdHlsZT0iZGlzcGxheTpncmlkOyB3
aWR0aDo1MDBweDsgZ3JpZC1hdXRvLWNvbHVtbnM6IDUwcHg7Ij4KIDxpPjwvaT48aT48L2k+PGk+
PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT4KICAg
PGRpdiBjbGFzcz0ic3ViZ3JpZDIiPgotICAgIDx4IHN0eWxlPSJncmlkLWNvbHVtbjogc3BhbiA0
IC8gMTEiPng8L3g+CisgICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiBzcGFuIDMgLyAxMSI+eDwv
eD4KICAgPC9kaXY+CiA8L2Rpdj4KIApAQCAtMTI5LDcgKzEyOSw3IEBAIHggewogPGRpdiBzdHls
ZT0iZGlzcGxheTpncmlkOyBncmlkOiBhdXRvIC8gcmVwZWF0KDEwLCA1MHB4KSByZXBlYXQoMTAs
IFthXSA1MHB4KSBbYV0iPgogPGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48
L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPgogICA8ZGl2IHN0eWxlPSJkaXNwbGF5Omdy
aWQ7IGdyaWQ6YXV0by9zdWJncmlkOyBncmlkLWNvbHVtbjogc3BhbiAxMDsgZ3JpZC1yb3c6MiI+
Ci0gICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiAxIC8gMTEiPng8L3g+CisgICAgPHggc3R5bGU9
ImdyaWQtY29sdW1uOiAxMCAvIDExIj54PC94PgogICA8L2Rpdj4KIDwvZGl2PgogCkBAIC0xNDEs
MTAgKzE0MSwxMCBAQCB4IHsKIDwvZGl2PgogCiA8ZGl2IHN0eWxlPSdkaXNwbGF5OmdyaWQ7IGdy
aWQtdGVtcGxhdGUtYXJlYXM6ICIuIC4gLiAuIC4gLiBhIGEgYSBhIic+Ci08ZGl2IHN0eWxlPSdk
aXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtYXJlYXM6ICIuIC4gLiAuIC4gLiAuIGEgYSBhIjsg
Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnN1YmdyaWQ7IGdyaWQtY29sdW1uOnNwYW4gMTA7Jz4KKzxk
aXYgc3R5bGU9J2Rpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1hcmVhczogIi4gLiAuIC4gLiAu
IC4gYSBhIC4iOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6c3ViZ3JpZDsgZ3JpZC1jb2x1bW46c3Bh
biAxMDsnPgogPGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9p
PjxpPjwvaT48aT48L2k+PGk+PC9pPgogICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7IGdyaWQ6
YXV0by9zdWJncmlkOyBncmlkLWNvbHVtbjogNiAvIHNwYW4gNTsgZ3JpZC1yb3c6MiI+Ci0gICAg
PHggc3R5bGU9ImdyaWQtY29sdW1uOiAyIC8gNiI+eDwveD4KKyAgICA8eCBzdHlsZT0iZ3JpZC1j
b2x1bW46IDIgLyA1Ij54PC94PgogICA8L2Rpdj4KIDwvZGl2PgogPC9kaXY+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3Jp
ZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA1Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA1Lmh0
bWwKaW5kZXggZDdiY2Y3YTdlN2IwLi4yNmJlODk5ZTkzZWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQv
bGluZS1uYW1lcy0wMDUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA1Lmh0bWwKQEAg
LTE0Myw3ICsxNDMsNyBAQCB4IHsKIDwvZGl2PgogCiA8ZGl2IHN0eWxlPSdkaXNwbGF5OmdyaWQ7
IGdyaWQtdGVtcGxhdGUtYXJlYXM6ICIuIC4gLiAuIC4gLiBhIGEgYSBhIic+Ci08ZGl2IHN0eWxl
PSdkaXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtYXJlYXM6ICIuIC4gLiAuIC4gLiAuIGEgYSBh
IjsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnN1YmdyaWQ7IGdyaWQtY29sdW1uOnNwYW4gMTA7Jz4K
KzxkaXYgc3R5bGU9J2Rpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1hcmVhczogIi4gLiAuIC4g
LiAuIC4gYSBhIC4iOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6c3ViZ3JpZDsgZ3JpZC1jb2x1bW46
c3BhbiAxMDsnPgogPGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+
PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPgogICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7IGdy
aWQ6YXV0by9zdWJncmlkOyBncmlkLWNvbHVtbjogNiAvIHNwYW4gNTsgZ3JpZC1yb3c6MiI+CiAg
ICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiBhIj54PC94PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDMwYzQ4OTdl
MTFiNC4uMGRhYzg5MTQxMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjE1IEBACisyMDIyLTAy
LTE1ICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29w
eSB0cmFjayBzaXplcyBmcm9tIHBhcmVudCBncmlkIGludG8gc3ViZ3JpZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzM2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29waWVzIHRyYWNrIHNpemVzIGZy
b20gdGhlIHBhcmVudCBSZW5kZXJHcmlkJ3MgdHJhY2sgc2l6aW5nIGFsZ29yaXRobSBmb3IgYXhl
cworICAgICAgICB0aGF0IGFyZSBzdWJncmlkZGVkLCByYXRoZXIgdGhhbiBkb2luZyBpdHMgb3du
IHNpemluZy4KKyAgICAgICAgQWNjb3VudHMgZm9yIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHN1
YmdyaWQncyBncmlkLWdhcCBhbmQgdGhlIHBhcmVudCdzIGdyaWQgZ2FwLAorICAgICAgICBhcyB3
ZWxsIGFzIHNwYWNlIG9jY3VwaWVkIGJ5IHRoZSBzdWJncmlkIGVsZW1lbnQncyBtYXJnaW4vYm9y
ZGVyL3BhZGRpbmcuCisKKyAgICAgICAgRXhpc3RpbmcgdGVzdCBleHBlY3RhdGlvbnMgdXBkYXRl
ZC4KKworICAgICAgICAqIHJlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpydW4pOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdy
aWQ6OmxheW91dEJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmdyaWRHYXAg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cG9wdWxhdGVHcmlkUG9zaXRp
b25zRm9yRGlyZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5oOgorCisy
MDIyLTAyLTE1ICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAg
ICAgTG9va3VwIGxpbmUgbmFtZXMgZm9yIHN1YiBncmlkcyB1c2luZyBsaW5lIG5hbWVzIGZyb20g
YW5jZXN0b3IgZ3JpZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNjI4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
aWRTcGFuOjpjbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNS
ZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHBsaWNpdEdyaWRTaXplRm9yU2lkZSk6
CisgICAgICAgIChXZWJDb3JlOjp0cmFuc3Bvc2VkU2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpj
bGFtcGVkSW1wbGljaXRMaW5lRm9yQXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZExpbmVD
b2xsZWN0aW9uQmFzZTo6TmFtZWRMaW5lQ29sbGVjdGlvbkJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TmFtZWRMaW5lQ29sbGVjdGlvbkJhc2U6OmVuc3VyZUxvY2FsU3RvcmFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpOYW1lZExpbmVDb2xsZWN0aW9uQmFzZTo6Y29udGFpbnMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TmFtZWRMaW5lQ29sbGVjdGlvbjo6TmFtZWRMaW5lQ29sbGVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpOYW1lZExpbmVDb2xsZWN0aW9uOjpoYXNFeHBsaWNpdE5hbWVk
TGluZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRMaW5lQ29sbGVjdGlvbjo6aGFz
TmFtZWRMaW5lcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZExpbmVDb2xsZWN0aW9u
OjpsYXN0TGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZExpbmVDb2xsZWN0aW9u
Ojpjb250YWlucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZExpbmVDb2xsZWN0aW9u
OjpmaXJzdEV4cGxpY2l0UG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRM
aW5lQ29sbGVjdGlvbjo6Zmlyc3RQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjph
ZGp1c3RHcmlkUG9zaXRpb25zRnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Omxvb2tBaGVh
ZEZvck5hbWVkR3JpZExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6bG9va0JhY2tGb3JOYW1lZEdy
aWRMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25G
cm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVmaW5pdGVHcmlkU3BhbldpdGhOYW1lZExp
bmVTcGFuQWdhaW5zdE9wcG9zaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVOYW1lZEdy
aWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpyZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKToKKworICAgICAgICBTcGxpdHMgTmFtZWRM
aW5lQ29sbGVjdGlvbiBpbnRvIHR3byBjbGFzc2VzLCB3aGVyZSB0aGUgYmFzZSBjbGFzcyBvbmx5
IGhhbmRsZXMKKyAgICAgICAgYSBzaW5nbGUgZ3JpZCwgYW5kIHRoZSBzdWJjbGFzcyBoYW5kbGVz
IGluaGVyaXRpbmcgbGluZXMgZnJvbSBhbmNlc3RvciBncmlkcy4KKyAgICAgICAgTG9vcHMgb3Zl
ciBhbmNlc3RvciBncmlkcywgbG9va2luZyBmb3IgbmFtZWQgbGluZXMgdGhhdCBhcmUgc2hhcmVk
IHdpdGggdGhlIGluaXRpYWwKKyAgICAgICAgZ3JpZCwgYW5kIGlmIGZvdW5kLCBhZGRzIHRoZW0g
KHVzaW5nIHRoZSBsb2NhbCBsaW5lIG51bWJlcikgdG8gYSBsb2NhbCBjb3B5IG9mIHRoZSBsaW5l
CisgICAgICAgIG5hbWVzIGFycmF5LgorCisgICAgICAgIEFsc28gaGFuZGxlcyB0aGUgY2FzZXMg
d2hlcmUgYSBuYW1lZCBncmlkIGFyZWEgc3BhbnMgb3V0c2lkZSBvZiB0aGUgc3ViZ3JpZCBhcmVh
LCBieQorICAgICAgICBjbGFtcGluZyB0aGUgYXJlYSB0byB0aGUgZXhwbGljaXQgZ3JpZCAoc2lu
Y2Ugc3ViZ3JpZCBjYW4ndCBnZW5lcmF0ZSBpbXBsaWNpdCBncmlkIGxpbmVzKSwKKyAgICAgICAg
YW5kIHRoZW4gZ2VuZXJhdGluZyBuZXcgaW1wbGljaXQgZ3JpZCBsaW5lcy4gVGhlc2UgbGluZXMg
YXJlIGFkZGVkIHRvIHRoZSBzYW1lIGxvY2FsIGxpbmUKKyAgICAgICAgbmFtZSBhcnJheSBhcyBp
cyB1c2VkIGZvciBpbmhlcml0ZWQgYW5jZXN0b3IgbGluZXMuIFRoaXMgY2xhbXBpbmcgYW5kIHJl
Z2VuZXJhdGlvbiBvZiBpbXBsaWNpdAorICAgICAgICBsaW5lcyB3b3JrcyBmb3IgYm90aCBhcmVh
cyBkZWZpbmVkIG9uIHRoZSBzdWJncmlkLCBhcyB3ZWxsIGFzIG9uIGFuY2VzdG9ycy4KKworCisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5oOgorICAgICAg
ICAqIHN0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVHcmlkVGVtcGxhdGVDb2x1bW5zKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlR3JpZFRlbXBsYXRlUm93
cyk6CisKKyAgICAgICAgUmVtb3ZlcyB0aGVzZSBjYWxscyB0byBhZGQgdGhlIGltcGxpY2l0IGxp
bmVzIHRvIHRoZSBub3JtYWwgbGluZSBsaXN0cywgc2luY2UKKyAgICAgICAgdGhleSdyZSBhbHJl
YWR5IGluIHRoZSBpbXBsaWNpdCBsaW5lIGxpc3RzIGFuZCBoYXZpbmcgdGhlbSBpbiBib3RoIHN0
b3BzIHVzIGZyb20KKyAgICAgICAgYmVpbmcgYWJsZSB0byByZWdlbmVyYXRlIHRoZW0gZm9yIHN1
YmdyaWRzLgorCisyMDIyLTAyLTE1ICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IGdldENvbXB1dGVkU3R5bGUgZm9yIHN1YmdyaWRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYxNDgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIE9yZGVy
ZWROYW1lZExpbmVzQ29sbGVjdG9ySW5TdWJncmlkTGF5b3V0IHRvIGl0ZXJhdGUgdGhlIHN1Ymdy
aWQgbmFtZXMgbGlzdCwgc3RvcHBpbmcKKyAgICAgICAgYXQgdGhlIG51bWJlciBvZiBhY3R1YWwg
dHJhY2tzIGluIHRoZSBncmlkLgorCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9yZGVyZWROYW1lZExpbmVzQ29sbGVj
dG9ySW5TdWJncmlkTGF5b3V0OjpPcmRlcmVkTmFtZWRMaW5lc0NvbGxlY3RvckluU3ViZ3JpZExh
eW91dCk6CisgICAgICAgIChXZWJDb3JlOjpPcmRlcmVkTmFtZWRMaW5lc0NvbGxlY3RvckluR3Jp
ZExheW91dDo6Y29sbGVjdExpbmVOYW1lc0ZvckluZGV4IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok9yZGVyZWROYW1lZExpbmVzQ29sbGVjdG9ySW5TdWJncmlkTGF5b3V0Ojpjb2xsZWN0TGlu
ZU5hbWVzRm9ySW5kZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6YWRkVmFsdWVzRm9yTmFt
ZWRHcmlkTGluZXNBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlU3ViZ3JpZFRy
YWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckdyaWRUcmFja0xpc3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OmNvbXB1dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQgY29uc3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJHcmlkLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3Np
dGlvbnNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZExpbmVDb2xsZWN0aW9u
Ojpjb250YWlucyBjb25zdCk6CisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3Jp
ZFRyYWNrTGlzdCk6CisKKworICAgICAgICBJbmhlcml0IHRyYWNrIGNvdW50IGZyb20gcGFyZW50
IGdyaWQgZm9yIHN1YmdyaWRkZWQgYXhlcyBhbmQgY2xhbXAgaXRlbSBwbGFjZW1lbnQgdG8gdGhh
dCBleHBsaWNpdCBncmlkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2MTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQ2hhbmdlcyBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZDw+Q291
bnQgdG8gcmV0dXJuIHRoZSBudW1iZXIgb2YgdHJhY2tzCisgICAgICAgIHNwYW5uZWQgaW4gdGhl
IHBhcmVudCBncmlkLCBmb3IgYXhlcyB0aGF0IGFyZSBhIHN1YmdyaWQuCisKKyAgICAgICAgVXBk
YXRlcyBhZGp1c3RHcmlkUG9zaXRpb25zRm9yU3R5bGUgdG8gdXNlIHRoZSBudW1iZXIgb2YgbGlu
ZXMgc3BlY2lmaWVkIGluIHRoZQorICAgICAgICBzdWJncmlkIHByb3BlcnR5LCBmb3IgZ3JpZCBp
dGVtcyB0aGF0IGFyZSBhbHNvIGEgc3ViZ3JpZCBhbmQgaGF2ZSBhbiBvdGhlcndpc2UKKyAgICAg
ICAgaW5kZWZpbml0ZSBzcGFuLgorCisgICAgICAgIEFkZHMgY2xhbXBpbmcgc3VwcG9ydCB0byBH
cmlkIHNvIHRoYXQgd2UgY2FuIHByZXZlbnQgc3ViZ3JpZHMgZnJvbSBldmVyIGFkZGluZworICAg
ICAgICBuZXcgaW1wbGljaXQgdHJhY2tzLgorCisgICAgICAgICogcmVuZGVyaW5nL0dyaWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JpZDo6aW5zZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
aWQ6OnNldENsYW1waW5nRm9yU3ViZ3JpZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkOjpjbGFt
cEFuZFRyYW5zbGF0ZVRvSW1wbGljaXRHcmlkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6OnNl
dE5lZWRzSXRlbXNQbGFjZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9HcmlkLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
R3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4
aXNJdGVtc09uR3JpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjppc1N1
YmdyaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6aXNTdWJncmlkUm93
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjppc1N1YmdyaWRDb2x1bW5z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmdyaWRBcmVhQnJlYWR0aEZv
ck91dE9mRmxvd0NoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6Om51bVRyYWNr
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc3Bvc2VkRGlyZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVHcmlkU3BhbkZvck91dE9mRmxvd0NoaWxk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmdyaWRTcGFuRm9yT3V0T2ZG
bG93Q2hpbGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Z3JpZFNwYW5G
b3JDaGlsZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRT
cGFuOjppbnRlZ2VyU3BhbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkU3Bhbjo6dHJh
bnNsYXRlVG8pOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFNwYW46OmNsYW1wKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmlzSW5kZWZpbml0ZVNwYW4pOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0R3JpZFBv
c2l0aW9uc0Zyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkUG9zaXRpb25zUmVzb2x2
ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3Np
dGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkUm93Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZU5hbWVk
R3JpZExpbmVQb3NpdGlvbkZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlTmFt
ZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6cmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHls
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5oOgor
CisyMDIyLTAyLTE1ICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAg
ICAgICAgSW5oZXJpdCB0cmFjayBjb3VudCBmcm9tIHBhcmVudCBncmlkIGZvciBzdWJncmlkZGVk
IGF4ZXMgYW5kIGNsYW1wIGl0ZW0gcGxhY2VtZW50IHRvIHRoYXQgZXhwbGljaXQgZ3JpZC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZXMgR3Jp
ZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWQ8PkNvdW50IHRvIHJldHVybiB0aGUgbnVt
YmVyIG9mIHRyYWNrcworICAgICAgICBzcGFubmVkIGluIHRoZSBwYXJlbnQgZ3JpZCwgZm9yIGF4
ZXMgdGhhdCBhcmUgYSBzdWJncmlkLgorCisgICAgICAgIFVwZGF0ZXMgYWRqdXN0R3JpZFBvc2l0
aW9uc0ZvclN0eWxlIHRvIHVzZSB0aGUgbnVtYmVyIG9mIGxpbmVzIHNwZWNpZmllZCBpbiB0aGUK
KyAgICAgICAgc3ViZ3JpZCBwcm9wZXJ0eSwgZm9yIGdyaWQgaXRlbXMgdGhhdCBhcmUgYWxzbyBh
IHN1YmdyaWQgYW5kIGhhdmUgYW4gb3RoZXJ3aXNlCisgICAgICAgIGluZGVmaW5pdGUgc3Bhbi4K
KworICAgICAgICBBZGRzIGNsYW1waW5nIHN1cHBvcnQgdG8gR3JpZCBzbyB0aGF0IHdlIGNhbiBw
cmV2ZW50IHN1YmdyaWRzIGZyb20gZXZlciBhZGRpbmcKKyAgICAgICAgbmV3IGltcGxpY2l0IHRy
YWNrcy4KKworICAgICAgICAqIHJlbmRlcmluZy9HcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyaWQ6Omluc2VydCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkOjpzZXRDbGFtcGluZ0ZvclN1
YmdyaWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZDo6Y2xhbXBBbmRUcmFuc2xhdGVUb0ltcGxp
Y2l0R3JpZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkOjpzZXROZWVkc0l0ZW1zUGxhY2VtZW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5z
aWNMb2dpY2FsV2lkdGhzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBs
YWNlSXRlbXNPbkdyaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cG9w
dWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6aXNTdWJncmlkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmlzU3ViZ3JpZFJvd3MgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyR3JpZDo6aXNTdWJncmlkQ29sdW1ucyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJHcmlkOjpncmlkQXJlYUJyZWFkdGhGb3JPdXRPZkZsb3dDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpudW1UcmFja3MgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6dHJhbnNwb3NlZERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJH
cmlkOjpjb21wdXRlR3JpZFNwYW5Gb3JPdXRPZkZsb3dDaGlsZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJHcmlkOjpncmlkU3BhbkZvck91dE9mRmxvd0NoaWxkIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmdyaWRTcGFuRm9yQ2hpbGQgY29uc3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L0dyaWRBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmlkU3Bhbjo6aW50ZWdlclNwYW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFNwYW46OnRyYW5zbGF0ZVRvKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyaWRTcGFuOjpjbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dy
aWRQb3NpdGlvbnNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0luZGVmaW5pdGVT
cGFuKToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1
bW5Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxp
Y2l0R3JpZFJvd0NvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OmV4cGxpY2l0R3JpZFNpemVGb3JT
aWRlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9t
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFn
YWluc3RPcHBvc2l0ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVHcmlkUG9z
aXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZl
R3JpZFBvc2l0aW9uRnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbnNS
ZXNvbHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuaDoKKwogMjAyMi0wMi0xNCAgUGF0cmlj
ayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRWxl
bWVudCB0b29sdGlwcyBpbiBvdmVybGF5cyBzaG91bGQgdXNlIHNhbWUgZW5jb2RhYmxlL2RlY29k
YWJsZSBMYWJlbCB0eXBlIGFzIGdyaWQgb3ZlcmxheXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggZDNiYWQ5YWQyM2I0Li43
NTkwMjU2ODc1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwCkBAIC04OTgsNiArODk4LDM4IEBAIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV9hdXRvUmVwZWF0VHJhY2tMaXN0TGVuZ3RoOwogfTsKIAorY2xhc3MgT3JkZXJlZE5h
bWVkTGluZXNDb2xsZWN0b3JJblN1YmdyaWRMYXlvdXQgOiBwdWJsaWMgT3JkZXJlZE5hbWVkTGlu
ZXNDb2xsZWN0b3IgeworcHVibGljOgorICAgIE9yZGVyZWROYW1lZExpbmVzQ29sbGVjdG9ySW5T
dWJncmlkTGF5b3V0KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgYm9vbCBpc1Jvd0F4aXMsIHVu
c2lnbmVkIHRvdGFsVHJhY2tzQ291bnQpCisgICAgICAgIDogT3JkZXJlZE5hbWVkTGluZXNDb2xs
ZWN0b3Ioc3R5bGUsIGlzUm93QXhpcykKKyAgICAgICAgLCBtX2luc2VydGlvblBvaW50KGlzUm93
QXhpcyA/IHN0eWxlLmdyaWRBdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50KCkgOiBzdHls
ZS5ncmlkQXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludCgpKQorICAgICAgICAsIG1fYXV0b1Jl
cGVhdFRyYWNrTGlzdExlbmd0aCgoaXNSb3dBeGlzID8gc3R5bGUuYXV0b1JlcGVhdE9yZGVyZWRO
YW1lZEdyaWRDb2x1bW5MaW5lcygpIDogc3R5bGUuYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRS
b3dMaW5lcygpKS5zaXplKCkpCisgICAgICAgICwgbV90b3RhbFRyYWNrcyh0b3RhbFRyYWNrc0Nv
dW50KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2F1dG9SZXBlYXRUcmFja0xpc3RMZW5ndGgpIHsK
KyAgICAgICAgICAgIG1fYXV0b1JlcGVhdFRvdGFsVHJhY2tzID0gMDsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyArMSB0byBjb252ZXJ0IGZyb20gdHJhY2tzIHRv
IGxpbmVzCisgICAgICAgIHVuc2lnbmVkIG5hbWVkID0gKGlzUm93QXhpcyA/IHN0eWxlLm9yZGVy
ZWROYW1lZEdyaWRDb2x1bW5MaW5lcygpIDogc3R5bGUub3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVz
KCkpLnNpemUoKTsKKyAgICAgICAgaWYgKG5hbWVkID49IG1fdG90YWxUcmFja3MgKyAxKSB7Cisg
ICAgICAgICAgICBtX2F1dG9SZXBlYXRUb3RhbFRyYWNrcyA9IDA7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgbV9hdXRvUmVwZWF0VG90YWxUcmFja3MgPSAobV90b3Rh
bFRyYWNrcyArIDEgLSBuYW1lZCkgLyBtX2F1dG9SZXBlYXRUcmFja0xpc3RMZW5ndGg7CisgICAg
ICAgIG1fYXV0b1JlcGVhdFRvdGFsVHJhY2tzICo9IG1fYXV0b1JlcGVhdFRyYWNrTGlzdExlbmd0
aDsKKyAgICB9CisKKyAgICB2b2lkIGNvbGxlY3RMaW5lTmFtZXNGb3JJbmRleChDU1NHcmlkTGlu
ZU5hbWVzVmFsdWUmLCB1bnNpZ25lZCBpbmRleCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBpbnQg
bmFtZWRHcmlkTGluZUNvdW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90b3RhbFRyYWNr
cyArIDE7IH0KK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbV9pbnNlcnRpb25Qb2ludDsKKyAgICB1
bnNpZ25lZCBtX2F1dG9SZXBlYXRUb3RhbFRyYWNrczsKKyAgICB1bnNpZ25lZCBtX2F1dG9SZXBl
YXRUcmFja0xpc3RMZW5ndGg7CisgICAgdW5zaWduZWQgbV90b3RhbFRyYWNrczsKK307CisKIHZv
aWQgT3JkZXJlZE5hbWVkTGluZXNDb2xsZWN0b3I6OmFwcGVuZExpbmVzKENTU0dyaWRMaW5lTmFt
ZXNWYWx1ZSYgbGluZU5hbWVzVmFsdWUsIHVuc2lnbmVkIGluZGV4LCBOYW1lZExpbmVzVHlwZSB0
eXBlKSBjb25zdAogewogICAgIGF1dG8gaXRlciA9IHR5cGUgPT0gTmFtZWRMaW5lcyA/IG1fb3Jk
ZXJlZE5hbWVkR3JpZExpbmVzLmZpbmQoaW5kZXgpIDogbV9vcmRlcmVkTmFtZWRBdXRvUmVwZWF0
R3JpZExpbmVzLmZpbmQoaW5kZXgpOwpAQCAtOTU1LDkgKzk4NywzMCBAQCB2b2lkIE9yZGVyZWRO
YW1lZExpbmVzQ29sbGVjdG9ySW5HcmlkTGF5b3V0Ojpjb2xsZWN0TGluZU5hbWVzRm9ySW5kZXgo
Q1NTR3JpZExpbgogICAgIGFwcGVuZExpbmVzKGxpbmVOYW1lc1ZhbHVlLCBhdXRvUmVwZWF0SW5k
ZXhJbkZpcnN0UmVwZXRpdGlvbiwgQXV0b1JlcGVhdE5hbWVkTGluZXMpOwogfQogCit2b2lkIE9y
ZGVyZWROYW1lZExpbmVzQ29sbGVjdG9ySW5TdWJncmlkTGF5b3V0Ojpjb2xsZWN0TGluZU5hbWVz
Rm9ySW5kZXgoQ1NTR3JpZExpbmVOYW1lc1ZhbHVlJiBsaW5lTmFtZXNWYWx1ZSwgdW5zaWduZWQg
aSkgY29uc3QKK3sKKyAgICBpZiAoIW1fYXV0b1JlcGVhdFRyYWNrTGlzdExlbmd0aCB8fCBpIDwg
bV9pbnNlcnRpb25Qb2ludCkgeworICAgICAgICBhcHBlbmRMaW5lcyhsaW5lTmFtZXNWYWx1ZSwg
aSwgTmFtZWRMaW5lcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoaSA+PSBt
X2luc2VydGlvblBvaW50ICsgbV9hdXRvUmVwZWF0VG90YWxUcmFja3MpIHsKKyAgICAgICAgYXBw
ZW5kTGluZXMobGluZU5hbWVzVmFsdWUsIGkgLSBtX2F1dG9SZXBlYXRUb3RhbFRyYWNrcywgTmFt
ZWRMaW5lcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fYXV0b1JlcGVh
dFRvdGFsVHJhY2tzKSB7CisgICAgICAgIGFwcGVuZExpbmVzKGxpbmVOYW1lc1ZhbHVlLCBpLCBO
YW1lZExpbmVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVuc2lnbmVkIGF1dG9S
ZXBlYXRJbmRleEluRmlyc3RSZXBldGl0aW9uID0gKGkgLSBtX2luc2VydGlvblBvaW50KSAlIG1f
YXV0b1JlcGVhdFRyYWNrTGlzdExlbmd0aDsKKyAgICBhcHBlbmRMaW5lcyhsaW5lTmFtZXNWYWx1
ZSwgYXV0b1JlcGVhdEluZGV4SW5GaXJzdFJlcGV0aXRpb24sIEF1dG9SZXBlYXROYW1lZExpbmVz
KTsKK30KKwogc3RhdGljIHZvaWQgYWRkVmFsdWVzRm9yTmFtZWRHcmlkTGluZXNBdEluZGV4KE9y
ZGVyZWROYW1lZExpbmVzQ29sbGVjdG9yJiBjb2xsZWN0b3IsIHVuc2lnbmVkIGksIENTU1ZhbHVl
TGlzdCYgbGlzdCwgYm9vbCByZW5kZXJFbXB0eSA9IGZhbHNlKQogewotICAgIGlmIChjb2xsZWN0
b3IuaXNFbXB0eSgpKQorICAgIGlmIChjb2xsZWN0b3IuaXNFbXB0eSgpICYmICFyZW5kZXJFbXB0
eSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBsaW5lTmFtZXMgPSBDU1NHcmlkTGluZU5h
bWVzVmFsdWU6OmNyZWF0ZSgpOwpAQCAtMTAzNSw5ICsxMDg4LDE1IEBAIHN0YXRpYyBSZWY8Q1NT
VmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGly
ZWN0aW9uLCBSCiAKICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBhIGdyaWQgY29udGFpbmVyLCB0
aGUgcmVzb2x2ZWQgdmFsdWUgaXMgdGhlIHVzZWQgdmFsdWUsCiAgICAgLy8gc3BlY2lmeWluZyB0
cmFjayBzaXplcyBpbiBwaXhlbHMgYW5kIGV4cGFuZGluZyB0aGUgcmVwZWF0KCkgbm90YXRpb24u
Ci0gICAgaWYgKGlzUmVuZGVyR3JpZCkgewotICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBo
YW5kbGUgY29tcHV0ZWQgc3ViZ3JpZCBoZXJlLgorICAgIC8vIElmIHN1YmdyaWQgd2FzIHNwZWNp
ZmllZCwgYnV0IHRoZSBlbGVtZW50IGlzbid0IGEgc3ViZ3JpZCAoZHVlIHRvIG5vdCBoYXZpbmcK
KyAgICAvLyBhbiBhcHByb3ByaWF0ZSBncmlkIHBhcmVudD8pLCB0aGVuIHdlIGZhbGwgYmFjayB0
byB1c2luZyB0aGUgc3BlY2lmaWVkIHZhbHVlLgorICAgIGlmIChpc1JlbmRlckdyaWQgJiYgKCFp
c1N1YmdyaWQgfHwgZG93bmNhc3Q8UmVuZGVyR3JpZD4ocmVuZGVyZXIpLT5pc1N1YmdyaWQoZGly
ZWN0aW9uKSkpIHsKICAgICAgICAgYXV0byogZ3JpZCA9IGRvd25jYXN0PFJlbmRlckdyaWQ+KHJl
bmRlcmVyKTsKKyAgICAgICAgaWYgKGlzU3ViZ3JpZCkgeworICAgICAgICAgICAgT3JkZXJlZE5h
bWVkTGluZXNDb2xsZWN0b3JJblN1YmdyaWRMYXlvdXQgY29sbGVjdG9yKHN0eWxlLCBpc1Jvd0F4
aXMsIGdyaWQtPm51bVRyYWNrcyhkaXJlY3Rpb24pKTsKKyAgICAgICAgICAgIHBvcHVsYXRlU3Vi
Z3JpZExpbmVOYW1lTGlzdChsaXN0LmdldCgpLCBjb2xsZWN0b3IpOworICAgICAgICAgICAgcmV0
dXJuIGxpc3Q7CisgICAgICAgIH0KICAgICAgICAgT3JkZXJlZE5hbWVkTGluZXNDb2xsZWN0b3JJ
bkdyaWRMYXlvdXQgY29sbGVjdG9yKHN0eWxlLCBpc1Jvd0F4aXMsIGdyaWQtPmF1dG9SZXBlYXRD
b3VudEZvckRpcmVjdGlvbihkaXJlY3Rpb24pLCBhdXRvUmVwZWF0VHJhY2tTaXplcy5zaXplKCkp
OwogICAgICAgICAvLyBOYW1lZCBncmlkIGxpbmUgaW5kaWNlcyBhcmUgcmVsYXRpdmUgdG8gdGhl
IGV4cGxpY2l0IGdyaWQsIGJ1dCB3ZSBhcmUgaW5jbHVkaW5nIGFsbCB0cmFja3MuCiAgICAgICAg
IC8vIFNvIHdlIG5lZWQgdG8gc3VidHJhY3QgdGhlIG51bWJlciBvZiBsZWFkaW5nIGltcGxpY2l0
IHRyYWNrcyBpbiBvcmRlciB0byBnZXQgdGhlIHByb3BlciBsaW5lIGluZGV4LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0dyaWQuY3BwCmluZGV4IDU2MDJkN2MyZDRkNS4uMzdjYTkzZjAzYTcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0dyaWQuY3BwCkBAIC02MSwxNyArNjEsMjQgQEAgdm9pZCBHcmlkOjplbnN1
cmVHcmlkU2l6ZSh1bnNpZ25lZCBtYXhpbXVtUm93U2l6ZSwgdW5zaWduZWQgbWF4aW11bUNvbHVt
blNpemUpCiAgICAgfQogfQogCi12b2lkIEdyaWQ6Omluc2VydChSZW5kZXJCb3gmIGNoaWxkLCBj
b25zdCBHcmlkQXJlYSYgYXJlYSkKK0dyaWRBcmVhIEdyaWQ6Omluc2VydChSZW5kZXJCb3gmIGNo
aWxkLCBjb25zdCBHcmlkQXJlYSYgYXJlYSkKIHsKLSAgICBBU1NFUlQoYXJlYS5yb3dzLmlzVHJh
bnNsYXRlZERlZmluaXRlKCkgJiYgYXJlYS5jb2x1bW5zLmlzVHJhbnNsYXRlZERlZmluaXRlKCkp
OwotICAgIGVuc3VyZUdyaWRTaXplKGFyZWEucm93cy5lbmRMaW5lKCksIGFyZWEuY29sdW1ucy5l
bmRMaW5lKCkpOworICAgIEdyaWRBcmVhIGNsYW1wZWQgPSBhcmVhOworICAgIGlmIChtX21heFJv
d3MpCisgICAgICAgIGNsYW1wZWQucm93cy5jbGFtcChtX21heFJvd3MpOworICAgIGlmIChtX21h
eENvbHVtbnMpCisgICAgICAgIGNsYW1wZWQuY29sdW1ucy5jbGFtcChtX21heENvbHVtbnMpOwog
Ci0gICAgZm9yIChhdXRvIHJvdyA6IGFyZWEucm93cykgewotICAgICAgICBmb3IgKGF1dG8gY29s
dW1uIDogYXJlYS5jb2x1bW5zKQorICAgIEFTU0VSVChjbGFtcGVkLnJvd3MuaXNUcmFuc2xhdGVk
RGVmaW5pdGUoKSAmJiBjbGFtcGVkLmNvbHVtbnMuaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSk7Cisg
ICAgZW5zdXJlR3JpZFNpemUoY2xhbXBlZC5yb3dzLmVuZExpbmUoKSwgY2xhbXBlZC5jb2x1bW5z
LmVuZExpbmUoKSk7CisKKyAgICBmb3IgKGF1dG8gcm93IDogY2xhbXBlZC5yb3dzKSB7CisgICAg
ICAgIGZvciAoYXV0byBjb2x1bW4gOiBjbGFtcGVkLmNvbHVtbnMpCiAgICAgICAgICAgICBtX2dy
aWRbcm93XVtjb2x1bW5dLmFwcGVuZChjaGlsZCk7CiAgICAgfQogCi0gICAgc2V0R3JpZEl0ZW1B
cmVhKGNoaWxkLCBhcmVhKTsKKyAgICBzZXRHcmlkSXRlbUFyZWEoY2hpbGQsIGNsYW1wZWQpOwor
ICAgIHJldHVybiBjbGFtcGVkOwogfQogCiB2b2lkIEdyaWQ6OnNldEV4cGxpY2l0R3JpZFN0YXJ0
KHVuc2lnbmVkIHJvd1N0YXJ0LCB1bnNpZ25lZCBjb2x1bW5TdGFydCkKQEAgLTg1LDYgKzkyLDI2
IEBAIHVuc2lnbmVkIEdyaWQ6OmV4cGxpY2l0R3JpZFN0YXJ0KEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbiBkaXJlY3Rpb24pIGNvbnN0CiAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JSb3dzID8g
bV9leHBsaWNpdFJvd1N0YXJ0IDogbV9leHBsaWNpdENvbHVtblN0YXJ0OwogfQogCit2b2lkIEdy
aWQ6OnNldENsYW1waW5nRm9yU3ViZ3JpZCh1bnNpZ25lZCBtYXhSb3dzLCB1bnNpZ25lZCBtYXhD
b2x1bW5zKQoreworICAgIG1fbWF4Um93cyA9IG1heFJvd3M7CisgICAgbV9tYXhDb2x1bW5zID0g
bWF4Q29sdW1uczsKK30KKwordm9pZCBHcmlkOjpjbGFtcEFuZFRyYW5zbGF0ZVRvSW1wbGljaXRH
cmlkKEdyaWRBcmVhJiBhcmVhKQoreworICAgIGlmICghYXJlYS5yb3dzLmlzSW5kZWZpbml0ZSgp
KSB7CisgICAgICAgIGlmIChtX21heFJvd3MpCisgICAgICAgICAgICBhcmVhLnJvd3MuY2xhbXAo
bV9tYXhSb3dzKTsKKyAgICAgICAgYXJlYS5yb3dzLnRyYW5zbGF0ZShleHBsaWNpdEdyaWRTdGFy
dChGb3JSb3dzKSk7CisgICAgfQorICAgIGlmICghYXJlYS5jb2x1bW5zLmlzSW5kZWZpbml0ZSgp
KSB7CisgICAgICAgIGlmIChtX21heENvbHVtbnMpCisgICAgICAgICAgICBhcmVhLmNvbHVtbnMu
Y2xhbXAobV9tYXhDb2x1bW5zKTsKKyAgICAgICAgYXJlYS5jb2x1bW5zLnRyYW5zbGF0ZShleHBs
aWNpdEdyaWRTdGFydChGb3JDb2x1bW5zKSk7CisgICAgfQorfQorCiBHcmlkQXJlYSBHcmlkOjpn
cmlkSXRlbUFyZWEoY29uc3QgUmVuZGVyQm94JiBpdGVtKSBjb25zdAogewogICAgIEFTU0VSVCht
X2dyaWRJdGVtQXJlYS5jb250YWlucygmaXRlbSkpOwpAQCAtMTYxLDYgKzE4OCw4IEBAIHZvaWQg
R3JpZDo6c2V0TmVlZHNJdGVtc1BsYWNlbWVudChib29sIG5lZWRzSXRlbXNQbGFjZW1lbnQpCiAg
ICAgbV9hdXRvUmVwZWF0RW1wdHlSb3dzID0gbnVsbHB0cjsKICAgICBtX2F1dG9SZXBlYXRDb2x1
bW5zID0gMDsKICAgICBtX2F1dG9SZXBlYXRSb3dzID0gMDsKKyAgICBtX21heENvbHVtbnMgPSAw
OworICAgIG1fbWF4Um93cyA9IDA7CiB9CiAKIEdyaWRJdGVyYXRvcjo6R3JpZEl0ZXJhdG9yKGNv
bnN0IEdyaWQmIGdyaWQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHVuc2ln
bmVkIGZpeGVkVHJhY2tJbmRleCwgdW5zaWduZWQgdmFyeWluZ1RyYWNrSW5kZXgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0dyaWQuaAppbmRleCA3MmNhZGY2OGVmNGQuLjExZDllNjhmYjgxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvR3JpZC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBu
dW1UcmFja3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIAogICAgIHZvaWQgZW5z
dXJlR3JpZFNpemUodW5zaWduZWQgbWF4aW11bVJvd1NpemUsIHVuc2lnbmVkIG1heGltdW1Db2x1
bW5TaXplKTsKLSAgICB2b2lkIGluc2VydChSZW5kZXJCb3gmLCBjb25zdCBHcmlkQXJlYSYpOwor
ICAgIEdyaWRBcmVhIGluc2VydChSZW5kZXJCb3gmLCBjb25zdCBHcmlkQXJlYSYpOwogCiAgICAg
Ly8gTm90ZSB0aGF0IGVhY2ggaW4gZmxvdyBjaGlsZCBvZiBhIGdyaWQgY29udGFpbmVyIGJlY29t
ZXMgYSBncmlkIGl0ZW0uIFRoaXMgbWVhbnMgdGhhdAogICAgIC8vIHRoaXMgbWV0aG9kIHdpbGwg
cmV0dXJuIGZhbHNlIGZvciBhIGdyaWQgY29udGFpbmVyIHdpdGggb25seSBvdXQgb2YgZmxvdyBj
aGlsZHJlbi4KQEAgLTY3LDYgKzY3LDEwIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBhdXRvUmVw
ZWF0VHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAgICAgdm9pZCBzZXRB
dXRvUmVwZWF0VHJhY2tzKHVuc2lnbmVkIGF1dG9SZXBlYXRSb3dzLCB1bnNpZ25lZCBhdXRvUmVw
ZWF0Q29sdW1ucyk7CiAKKyAgICB2b2lkIHNldENsYW1waW5nRm9yU3ViZ3JpZCh1bnNpZ25lZCBt
YXhSb3dzLCB1bnNpZ25lZCBtYXhDb2x1bW5zKTsKKworICAgIHZvaWQgY2xhbXBBbmRUcmFuc2xh
dGVUb0ltcGxpY2l0R3JpZChHcmlkQXJlYSYpOworCiAgICAgdm9pZCBzZXRBdXRvUmVwZWF0RW1w
dHlDb2x1bW5zKHN0ZDo6dW5pcXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNldD4pOwogICAgIHZv
aWQgc2V0QXV0b1JlcGVhdEVtcHR5Um93cyhzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5k
ZXhTZXQ+KTsKIApAQCAtOTIsNiArOTYsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fYXV0
b1JlcGVhdENvbHVtbnMgeyAwIH07CiAgICAgdW5zaWduZWQgbV9hdXRvUmVwZWF0Um93cyB7IDAg
fTsKIAorICAgIHVuc2lnbmVkIG1fbWF4Q29sdW1ucyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX21h
eFJvd3MgeyAwIH07CisKICAgICBib29sIG1fbmVlZHNJdGVtc1BsYWNlbWVudCB7IHRydWUgfTsK
IAogICAgIEdyaWRBc01hdHJpeCBtX2dyaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvR3JpZExheW91dEZ1bmN0aW9ucy5jcHAKaW5kZXggZDRmNzg4ZGM3MGQyLi5hZjZiMWY4ZDVm
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rp
b25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9u
cy5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgTGF5b3V0VW5pdCBtYXJnaW5Mb2dpY2FsU2l6ZUZvckNo
aWxkKGNvbnN0IFJlbmRlckdyaWQmIGdyaWQsIEdyaWRUcmFja1NpemluZ0RpcmUKICAgICByZXR1
cm4gbWFyZ2luU3RhcnQgKyBtYXJnaW5FbmQ7CiB9CiAKLWJvb2wgaXNPcnRob2dvbmFsQ2hpbGQo
Y29uc3QgUmVuZGVyR3JpZCYgZ3JpZCwgY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKK2Jvb2wgaXNP
cnRob2dvbmFsQ2hpbGQoY29uc3QgUmVuZGVyR3JpZCYgZ3JpZCwgY29uc3QgUmVuZGVyRWxlbWVu
dCYgY2hpbGQpCiB7CiAgICAgcmV0dXJuIGNoaWxkLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
IT0gZ3JpZC5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogfQpAQCAtODcsNyArODcsNyBAQCBi
b29sIGlzQXNwZWN0UmF0aW9CbG9ja1NpemVEZXBlbmRlbnRDaGlsZChjb25zdCBSZW5kZXJCb3gm
IGNoaWxkKQogICAgIHJldHVybiAoY2hpbGQuc3R5bGUoKS5oYXNBc3BlY3RSYXRpbygpIHx8IGNo
aWxkLmhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkpICYmIChjaGlsZC5oYXNSZWxhdGl2ZUxvZ2lj
YWxIZWlnaHQoKSB8fCBjaGlsZC5oYXNTdHJldGNoZWRMb2dpY2FsSGVpZ2h0KCkpOwogfQogCi1H
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoY29uc3Qg
UmVuZGVyR3JpZCYgZ3JpZCwgY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uIGRpcmVjdGlvbikKK0dyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBmbG93QXdhcmVE
aXJlY3Rpb25Gb3JDaGlsZChjb25zdCBSZW5kZXJHcmlkJiBncmlkLCBjb25zdCBSZW5kZXJFbGVt
ZW50JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBy
ZXR1cm4gIWlzT3J0aG9nb25hbENoaWxkKGdyaWQsIGNoaWxkKSA/IGRpcmVjdGlvbiA6IChkaXJl
Y3Rpb24gPT0gRm9yQ29sdW1ucyA/IEZvclJvd3MgOiBGb3JDb2x1bW5zKTsKIH0KQEAgLTEwMiw2
ICsxMDIsMTkgQEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBvdmVycmlkaW5nQ29udGFpbmlu
Z0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjb25zdCBSZW4KICAgICByZXR1cm4gZGlyZWN0aW9u
ID09IEZvckNvbHVtbnMgPyBjaGlsZC5vdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExv
Z2ljYWxXaWR0aCgpIDogY2hpbGQub3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dp
Y2FsSGVpZ2h0KCk7CiB9CiAKK2Jvb2wgaXNGbGlwcGVkRGlyZWN0aW9uKGNvbnN0IFJlbmRlckdy
aWQmIGdyaWQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgaWYg
KGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKQorICAgICAgICByZXR1cm4gIWdyaWQuc3R5bGUoKS5p
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CisgICAgcmV0dXJuIGdyaWQuc3R5bGUoKS5pc0ZsaXBw
ZWRCbG9ja3NXcml0aW5nTW9kZSgpOworfQorCitib29sIGlzU3ViZ3JpZFJldmVyc2VkRGlyZWN0
aW9uKGNvbnN0IFJlbmRlckdyaWQmIGdyaWQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBvdXRl
ckRpcmVjdGlvbiwgY29uc3QgUmVuZGVyR3JpZCYgc3ViZ3JpZCkKK3sKKyAgICBHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24gY2hpbGREaXJlY3Rpb24gPSBmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGls
ZChncmlkLCBzdWJncmlkLCBvdXRlckRpcmVjdGlvbik7CisgICAgcmV0dXJuIGlzRmxpcHBlZERp
cmVjdGlvbihncmlkLCBvdXRlckRpcmVjdGlvbikgIT0gaXNGbGlwcGVkRGlyZWN0aW9uKHN1Ymdy
aWQsIGNoaWxkRGlyZWN0aW9uKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgR3JpZExheW91dEZ1bmN0
aW9ucwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuaAppbmRleCA1ZGIzZjVmOTgyOTUuLjI2ZWJkY2E5MDAx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlv
bnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5o
CkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVuZGVy
RWxlbWVudDsKIGNsYXNzIFJlbmRlckJveDsKIGNsYXNzIFJlbmRlckdyaWQ7CiAKQEAgLTM5LDEy
ICs0MCwxNSBAQCBuYW1lc3BhY2UgR3JpZExheW91dEZ1bmN0aW9ucyB7CiAKIExheW91dFVuaXQg
Y29tcHV0ZU1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyR3JpZCYsIEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgUmVuZGVyQm94Jik7CiBMYXlvdXRVbml0IG1hcmdp
bkxvZ2ljYWxTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyR3JpZCYsIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiwgY29uc3QgUmVuZGVyQm94Jik7Ci1ib29sIGlzT3J0aG9nb25hbENoaWxkKGNvbnN0
IFJlbmRlckdyaWQmLCBjb25zdCBSZW5kZXJCb3gmKTsKK2Jvb2wgaXNPcnRob2dvbmFsQ2hpbGQo
Y29uc3QgUmVuZGVyR3JpZCYsIGNvbnN0IFJlbmRlckVsZW1lbnQmKTsKIGJvb2wgaXNBc3BlY3RS
YXRpb0Jsb2NrU2l6ZURlcGVuZGVudENoaWxkKGNvbnN0IFJlbmRlckJveCYpOwotR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uIGZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKGNvbnN0IFJlbmRlckdy
aWQmLCBjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pOworR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uIGZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKGNvbnN0IFJlbmRl
ckdyaWQmLCBjb25zdCBSZW5kZXJFbGVtZW50JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKTsK
IGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY29u
c3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKTsKIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQo
Y29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKTsKIAorYm9vbCBpc0Zs
aXBwZWREaXJlY3Rpb24oY29uc3QgUmVuZGVyR3JpZCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlv
bik7Citib29sIGlzU3ViZ3JpZFJldmVyc2VkRGlyZWN0aW9uKGNvbnN0IFJlbmRlckdyaWQmLCBH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gb3V0ZXJEaXJlY3Rpb24sIGNvbnN0IFJlbmRlckdyaWQm
IHN1YmdyaWQpOworCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKaW5kZXgg
MjQ0Nzc4NWY3ZTQxLi43ZGUzYmI4MmI3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCkBAIC0xMzk5LDExICsxMzk5
LDcwIEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpjb21wdXRlQmFzZWxpbmVBbGln
bm1lbnRDb250ZXh0KCkKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIHJlbW92ZVN1YmdyaWRNYXJn
aW5Cb3JkZXJQYWRkaW5nRnJvbVRyYWNrcyhWZWN0b3I8R3JpZFRyYWNrPiYgdHJhY2tzLCBMYXlv
dXRVbml0IG1icCwgYm9vbCBmb3J3YXJkcykKK3sKKyAgICBpbnQgbnVtVHJhY2tzID0gdHJhY2tz
LnNpemUoKTsKKyAgICBpbnQgaSA9IGZvcndhcmRzID8gMCA6IG51bVRyYWNrcyAtIDE7CisgICAg
d2hpbGUgKG1icCA+IDAgJiYgKGZvcndhcmRzID8gaSA8IG51bVRyYWNrcyA6IGkgPj0gMCkpIHsK
KyAgICAgICAgTGF5b3V0VW5pdCBzaXplID0gdHJhY2tzW2ldLmJhc2VTaXplKCk7CisgICAgICAg
IGlmIChzaXplID4gbWJwKSB7CisgICAgICAgICAgICBzaXplIC09IG1icDsKKyAgICAgICAgICAg
IG1icCA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtYnAgLT0gc2l6ZTsKKyAg
ICAgICAgICAgIHNpemUgPSAwOworICAgICAgICB9CisgICAgICAgIHRyYWNrc1tpXS5zZXRCYXNl
U2l6ZShzaXplKTsKKworICAgICAgICBmb3J3YXJkcyA/IGkrKyA6IGktLTsKKyAgICB9Cit9CisK
K2Jvb2wgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpjb3B5VXNlZFRyYWNrU2l6ZXNGb3JTdWJn
cmlkKCkKK3sKKyAgICBSZW5kZXJHcmlkKiBvdXRlciA9IGRvd25jYXN0PFJlbmRlckdyaWQ+KG1f
cmVuZGVyR3JpZC0+cGFyZW50KCkpOworICAgIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSYgcGFy
ZW50QWxnbyA9IG91dGVyLT5tX3RyYWNrU2l6aW5nQWxnb3JpdGhtOworICAgIEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBkaXJlY3Rpb24gPSBHcmlkTGF5b3V0RnVuY3Rpb25zOjpmbG93QXdhcmVE
aXJlY3Rpb25Gb3JDaGlsZCgqbV9yZW5kZXJHcmlkLCAqb3V0ZXIsIG1fZGlyZWN0aW9uKTsKKyAg
ICBWZWN0b3I8R3JpZFRyYWNrPiYgcGFyZW50VHJhY2tzID0gcGFyZW50QWxnby50cmFja3MoZGly
ZWN0aW9uKTsKKyAgICBHcmlkU3BhbiBzcGFuID0gb3V0ZXItPmdyaWRTcGFuRm9yQ2hpbGQoKm1f
cmVuZGVyR3JpZCwgZGlyZWN0aW9uKTsKKworICAgIGlmICghcGFyZW50VHJhY2tzLnNpemUoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50IG51bVRyYWNrcyA9IHRyYWNrcyhtX2Rp
cmVjdGlvbikuc2l6ZSgpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVHJhY2tzOyBpKysp
CisgICAgICAgIHRyYWNrcyhtX2RpcmVjdGlvbilbaV0gPSBwYXJlbnRUcmFja3NbaSArIHNwYW4u
c3RhcnRMaW5lKCldOworCisgICAgaWYgKEdyaWRMYXlvdXRGdW5jdGlvbnM6OmlzU3ViZ3JpZFJl
dmVyc2VkRGlyZWN0aW9uKCpvdXRlciwgZGlyZWN0aW9uLCAqbV9yZW5kZXJHcmlkKSkKKyAgICAg
ICAgdHJhY2tzKG1fZGlyZWN0aW9uKS5yZXZlcnNlKCk7CisKKyAgICBMYXlvdXRVbml0IHN0YXJ0
TUJQID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gbV9yZW5kZXJHcmlkLT5tYXJnaW5B
bmRCb3JkZXJBbmRQYWRkaW5nU3RhcnQoKSA6IG1fcmVuZGVyR3JpZC0+bWFyZ2luQW5kQm9yZGVy
QW5kUGFkZGluZ0JlZm9yZSgpOworICAgIHJlbW92ZVN1YmdyaWRNYXJnaW5Cb3JkZXJQYWRkaW5n
RnJvbVRyYWNrcyh0cmFja3MobV9kaXJlY3Rpb24pLCBzdGFydE1CUCwgdHJ1ZSk7CisgICAgTGF5
b3V0VW5pdCBlbmRNQlAgPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX3JlbmRlckdy
aWQtPm1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmdFbmQoKSA6IG1fcmVuZGVyR3JpZC0+bWFyZ2lu
QW5kQm9yZGVyQW5kUGFkZGluZ0FmdGVyKCk7CisgICAgcmVtb3ZlU3ViZ3JpZE1hcmdpbkJvcmRl
clBhZGRpbmdGcm9tVHJhY2tzKHRyYWNrcyhtX2RpcmVjdGlvbiksIGVuZE1CUCwgZmFsc2UpOwor
CisgICAgTGF5b3V0VW5pdCBnYXBEaWZmZXJlbmNlID0gKG1fcmVuZGVyR3JpZC0+Z3JpZEdhcCht
X2RpcmVjdGlvbikgLSBvdXRlci0+Z3JpZEdhcChkaXJlY3Rpb24pKSAvIDI7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBudW1UcmFja3M7IGkrKykgeworICAgICAgICBMYXlvdXRVbml0IHNpemUg
PSB0cmFja3MobV9kaXJlY3Rpb24pW2ldLmJhc2VTaXplKCk7CisgICAgICAgIGlmIChpKQorICAg
ICAgICAgICAgc2l6ZSAtPSBnYXBEaWZmZXJlbmNlOworICAgICAgICBpZiAoaSAhPSBudW1UcmFj
a3MgLSAxKQorICAgICAgICAgICAgc2l6ZSAtPSBnYXBEaWZmZXJlbmNlOworICAgICAgICB0cmFj
a3MobV9kaXJlY3Rpb24pW2ldLnNldEJhc2VTaXplKHN0ZDo6bWF4KHNpemUsIDBfbHUpKTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGht
OjpydW4oKQogewogICAgIEFTU0VSVCh3YXNTZXR1cCgpKTsKICAgICBTdGF0ZU1hY2hpbmUgc3Rh
dGVNYWNoaW5lKCp0aGlzKTsKIAorICAgIGlmIChtX3JlbmRlckdyaWQtPmlzU3ViZ3JpZChtX2Rp
cmVjdGlvbikpIHsKKyAgICAgICAgaWYgKGNvcHlVc2VkVHJhY2tTaXplc0ZvclN1YmdyaWQoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBTdGVwIDEuCiAgICAgY29uc3Qg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbml0aWFsRnJlZVNwYWNlID0gZnJlZVNwYWNlKG1f
ZGlyZWN0aW9uKTsKICAgICBpbml0aWFsaXplVHJhY2tTaXplcygpOwpAQCAtMTQ1Myw2ICsxNTEy
LDExIEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpyZXNldCgpCiAjaWYgQVNTRVJU
X0VOQUJMRUQKIGJvb2wgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjp0cmFja3NBcmVXaWRlclRo
YW5NaW5UcmFja0JyZWFkdGgoKSBjb25zdAogeworICAgIC8vIFN1YmdyaWRzIGluaGVyaXQgdGhl
aXIgc2l6aW5nIGRpcmVjdGx5IGZyb20gdGhlIHBhcmVudCwgc28gbWF5IGJlIHVucmVsYXRlZAor
ICAgIC8vIHRvIHRoZWlyIGluaXRpYWwgYmFzZSBzaXplLgorICAgIGlmIChtX3JlbmRlckdyaWQt
PmlzU3ViZ3JpZChtX2RpcmVjdGlvbikpCisgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgY29u
c3QgVmVjdG9yPEdyaWRUcmFjaz4mIGFsbFRyYWNrcyA9IHRyYWNrcyhtX2RpcmVjdGlvbik7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbGxUcmFja3Muc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgY29uc3QgYXV0byYgdHJhY2tTaXplID0gYWxsVHJhY2tzW2ldLmNhY2hlZFRyYWNrU2l6ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0Fs
Z29yaXRobS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29y
aXRobS5oCmluZGV4IGFlMWRkNmM3YWNkYi4uNTk0ZDVmYWU5YWFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5oCkBAIC0xOTMs
NiArMTkzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0cmV0Y2hGbGV4aWJsZVRyYWNrcyhzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGZyZWVTcGFjZSk7CiAgICAgdm9pZCBzdHJldGNoQXV0b1Ry
YWNrcygpOwogCisgICAgYm9vbCBjb3B5VXNlZFRyYWNrU2l6ZXNGb3JTdWJncmlkKCk7CisKICAg
ICAvLyBTdGF0ZSBtYWNoaW5lLgogICAgIHZvaWQgYWR2YW5jZU5leHRTdGF0ZSgpOwogICAgIGJv
b2wgaXNWYWxpZFRyYW5zaXRpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXggMjJkNmIyZGJhYjgyLi45N2I5NjVhMzBm
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5oCkBAIC0xNzcsNiArMTc3LDExIEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IGJvcmRlckFu
ZFBhZGRpbmdCZWZvcmUoKSBjb25zdCB7IHJldHVybiBib3JkZXJCZWZvcmUoKSArIHBhZGRpbmdC
ZWZvcmUoKTsgfQogICAgIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZ0FmdGVyKCkgY29uc3Qg
eyByZXR1cm4gYm9yZGVyQWZ0ZXIoKSArIHBhZGRpbmdBZnRlcigpOyB9CiAKKyAgICBMYXlvdXRV
bml0IG1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmdTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1hcmdp
blN0YXJ0KCkgKyBib3JkZXJTdGFydCgpICsgcGFkZGluZ1N0YXJ0KCk7IH0KKyAgICBMYXlvdXRV
bml0IG1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmdFbmQoKSBjb25zdCB7IHJldHVybiBtYXJnaW5F
bmQoKSArIGJvcmRlckVuZCgpICsgcGFkZGluZ0VuZCgpOyB9CisgICAgTGF5b3V0VW5pdCBtYXJn
aW5BbmRCb3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQmVmb3Jl
KCkgKyBib3JkZXJCZWZvcmUoKSArIHBhZGRpbmdCZWZvcmUoKTsgfQorICAgIExheW91dFVuaXQg
bWFyZ2luQW5kQm9yZGVyQW5kUGFkZGluZ0FmdGVyKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQWZ0
ZXIoKSArIGJvcmRlckFmdGVyKCkgKyBwYWRkaW5nQWZ0ZXIoKTsgfQorCiAgICAgTGF5b3V0VW5p
dCB2ZXJ0aWNhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSBjb25zdCB7IHJldHVybiBib3JkZXJU
b3AoKSArIGJvcmRlckJvdHRvbSgpICsgcGFkZGluZ1RvcCgpICsgcGFkZGluZ0JvdHRvbSgpOyB9
CiAgICAgTGF5b3V0VW5pdCBob3Jpem9udGFsQm9yZGVyQW5kUGFkZGluZ0V4dGVudCgpIGNvbnN0
IHsgcmV0dXJuIGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nTGVmdCgpICsg
cGFkZGluZ1JpZ2h0KCk7IH0KICAgICBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmdMb2dpY2Fs
SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgYm9yZGVy
QW5kUGFkZGluZ0FmdGVyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNw
cAppbmRleCA3ZmZiNjIzNzQ4ZjAuLmFmZjAwN2E1MGU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6
c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBv
bGRTdHlsCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoZXhwbGljaXRHcmlkRGlkUmVzaXpl
KCpvbGRTdHlsZSkgfHwgbmFtZWRHcmlkTGluZXNEZWZpbml0aW9uRGlkQ2hhbmdlKCpvbGRTdHls
ZSkgfHwgb2xkU3R5bGUtPmdyaWRBdXRvRmxvdygpICE9IHN0eWxlKCkuZ3JpZEF1dG9GbG93KCkK
KyAgICBpZiAoZXhwbGljaXRHcmlkRGlkUmVzaXplKCpvbGRTdHlsZSkgfHwgbmFtZWRHcmlkTGlu
ZXNEZWZpbml0aW9uRGlkQ2hhbmdlKCpvbGRTdHlsZSkgfHwgaW1wbGljaXRHcmlkTGluZXNEZWZp
bml0aW9uRGlkQ2hhbmdlKCpvbGRTdHlsZSkgfHwgb2xkU3R5bGUtPmdyaWRBdXRvRmxvdygpICE9
IHN0eWxlKCkuZ3JpZEF1dG9GbG93KCkKICAgICAgICAgfHwgKHN0eWxlKCkuZ3JpZEF1dG9SZXBl
YXRDb2x1bW5zKCkuc2l6ZSgpIHx8IHN0eWxlKCkuZ3JpZEF1dG9SZXBlYXRSb3dzKCkuc2l6ZSgp
KSkKICAgICAgICAgZGlydHlHcmlkKCk7CiB9CkBAIC0xMzEsNiArMTMxLDEyIEBAIGJvb2wgUmVu
ZGVyR3JpZDo6bmFtZWRHcmlkTGluZXNEZWZpbml0aW9uRGlkQ2hhbmdlKGNvbnN0IFJlbmRlclN0
eWxlJiBvbGRTdHlsZSkKICAgICAgICAgfHwgb2xkU3R5bGUubmFtZWRHcmlkQ29sdW1uTGluZXMo
KSAhPSBzdHlsZSgpLm5hbWVkR3JpZENvbHVtbkxpbmVzKCk7CiB9CiAKK2Jvb2wgUmVuZGVyR3Jp
ZDo6aW1wbGljaXRHcmlkTGluZXNEZWZpbml0aW9uRGlkQ2hhbmdlKGNvbnN0IFJlbmRlclN0eWxl
JiBvbGRTdHlsZSkgY29uc3QKK3sKKyAgICByZXR1cm4gb2xkU3R5bGUuaW1wbGljaXROYW1lZEdy
aWRSb3dMaW5lcygpICE9IHN0eWxlKCkuaW1wbGljaXROYW1lZEdyaWRSb3dMaW5lcygpCisgICAg
ICAgIHx8IG9sZFN0eWxlLmltcGxpY2l0TmFtZWRHcmlkQ29sdW1uTGluZXMoKSAhPSBzdHlsZSgp
LmltcGxpY2l0TmFtZWRHcmlkQ29sdW1uTGluZXMoKTsKK30KKwogLy8gVGhpcyBtZXRob2Qgb3B0
aW1pemVzIHRoZSBndXR0ZXJzIGNvbXB1dGF0aW9uIGJ5IHNraXBpbmcgdGhlIGF2YWlsYWJsZSBz
aXplCiAvLyBjYWxsIGlmIGdhcHMgYXJlIGZpeGVkIHNpemUgKGl0J3Mgb25seSBuZWVkZWQgZm9y
IHBlcmNlbnRhZ2VzKS4KIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyR3JpZDo6YXZh
aWxhYmxlU3BhY2VGb3JHdXR0ZXJzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24p
IGNvbnN0CkBAIC0zMjMsNyArMzI5LDYgQEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRCbG9jayhi
b29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAgICAgICAgIH0KIAogICAgICAgICBs
YXlvdXRHcmlkSXRlbXMoKTsKLSAgICAgICAgbV90cmFja1NpemluZ0FsZ29yaXRobS5yZXNldCgp
OwogCiAgICAgICAgIGVuZEFuZENvbW1pdFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5z
YWN0aW9uKCk7CiAKQEAgLTMzNCw2ICszMzksNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEJs
b2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKICAgICAgICAgbV9vdXRPZkZs
b3dJdGVtUm93LmNsZWFyKCk7CiAKICAgICAgICAgbGF5b3V0UG9zaXRpb25lZE9iamVjdHMocmVs
YXlvdXRDaGlsZHJlbiB8fCBpc0RvY3VtZW50RWxlbWVudFJlbmRlcmVyKCkpOworICAgICAgICBt
X3RyYWNrU2l6aW5nQWxnb3JpdGhtLnJlc2V0KCk7CiAKICAgICAgICAgY29tcHV0ZU92ZXJmbG93
KGNsaWVudExvZ2ljYWxSaWdodEFuZEJvdHRvbUFmdGVyUmVwb3NpdGlvbmluZygpLmhlaWdodCgp
KTsKICAgICB9CkBAIC0zNTYsOCArMzYyLDE1IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6Z3Jp
ZEdhcChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsCiB7
CiAgICAgQVNTRVJUKCFhdmFpbGFibGVTaXplIHx8ICphdmFpbGFibGVTaXplID49IDApOwogICAg
IGNvbnN0IEdhcExlbmd0aCYgZ2FwTGVuZ3RoID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnM/IHN0
eWxlKCkuY29sdW1uR2FwKCkgOiBzdHlsZSgpLnJvd0dhcCgpOwotICAgIGlmIChnYXBMZW5ndGgu
aXNOb3JtYWwoKSkKKyAgICBpZiAoZ2FwTGVuZ3RoLmlzTm9ybWFsKCkpIHsKKyAgICAgICAgaWYg
KGlzU3ViZ3JpZChkaXJlY3Rpb24pKSB7CisgICAgICAgICAgICBHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gcGFyZW50RGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGly
ZWN0aW9uRm9yQ2hpbGQoKnRoaXMsICpwYXJlbnQoKSwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAg
IGlmICghYXZhaWxhYmxlU2l6ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVu
ZGVyR3JpZD4ocGFyZW50KCkpLT5ncmlkR2FwKHBhcmVudERpcmVjdGlvbiwgc3RkOjpudWxsb3B0
KTsKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJHcmlkPihwYXJlbnQoKSktPmdy
aWRHYXAocGFyZW50RGlyZWN0aW9uKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gMF9sdTsK
KyAgICB9CiAKICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgoZ2FwTGVuZ3RoLmxlbmd0aCgpLCBh
dmFpbGFibGVTaXplLnZhbHVlX29yKDApKTsKIH0KQEAgLTQ0Niw4ICs0NTksNyBAQCB2b2lkIFJl
bmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxv
Z2ljYWxXaWR0aCwgTGF5bwogICAgIExheW91dFVuaXQgY2hpbGRNYXhXaWR0aDsKICAgICBib29s
IGhhZEV4Y2x1ZGVkQ2hpbGRyZW4gPSBjb21wdXRlUHJlZmVycmVkV2lkdGhzRm9yRXhjbHVkZWRD
aGlsZHJlbihjaGlsZE1pbldpZHRoLCBjaGlsZE1heFdpZHRoKTsKIAotICAgIEdyaWQgZ3JpZChj
b25zdF9jYXN0PFJlbmRlckdyaWQmPigqdGhpcykpOwotICAgIEdyaWRUcmFja1NpemluZ0FsZ29y
aXRobSBhbGdvcml0aG0odGhpcywgZ3JpZCk7CisgICAgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGht
IGFsZ29yaXRobSh0aGlzLCBjb25zdF9jYXN0PEdyaWQmPihtX2dyaWQpKTsKICAgICBwbGFjZUl0
ZW1zT25HcmlkKGFsZ29yaXRobSwgc3RkOjpudWxsb3B0KTsKIAogICAgIHBlcmZvcm1HcmlkSXRl
bXNQcmVMYXlvdXQoYWxnb3JpdGhtKTsKQEAgLTQ5Niw2ICs1MDgsOSBAQCB1bnNpZ25lZCBSZW5k
ZXJHcmlkOjpjb21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbiBkaXJlYwogewogICAgIEFTU0VSVCghYXZhaWxhYmxlU2l6ZSB8fCBhdmFpbGFibGVTaXpl
LnZhbHVlKCkgIT0gLTEpOwogICAgIGJvb2wgaXNSb3dBeGlzID0gZGlyZWN0aW9uID09IEZvckNv
bHVtbnM7CisgICAgaWYgKGlzUm93QXhpcyA/IGlzU3ViZ3JpZENvbHVtbnMoKSA6IGlzU3ViZ3Jp
ZFJvd3MoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBjb25zdCBhdXRvJiBhdXRvUmVwZWF0
VHJhY2tzID0gaXNSb3dBeGlzID8gc3R5bGUoKS5ncmlkQXV0b1JlcGVhdENvbHVtbnMoKSA6IHN0
eWxlKCkuZ3JpZEF1dG9SZXBlYXRSb3dzKCk7CiAgICAgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNr
TGlzdExlbmd0aCA9IGF1dG9SZXBlYXRUcmFja3Muc2l6ZSgpOwogCkBAIC02NDEsNyArNjU2LDYg
QEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKEdyaWRUcmFja1NpemluZ0FsZ29y
aXRobSYgYWxnb3JpdGhtLCBzdGQ6Om9wdGkKICAgICBHcmlkJiBncmlkID0gYWxnb3JpdGhtLm11
dGFibGVHcmlkKCk7CiAgICAgdW5zaWduZWQgYXV0b1JlcGVhdENvbHVtbnMgPSBjb21wdXRlQXV0
b1JlcGVhdFRyYWNrc0NvdW50KEZvckNvbHVtbnMsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAg
ICAgdW5zaWduZWQgYXV0b1JlcGVhdFJvd3MgPSBjb21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50
KEZvclJvd3MsIGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRGb3JQZXJjZW50YWdlQ29tcHV0YXRpb24o
KSk7Ci0KICAgICBhdXRvUmVwZWF0Um93cyA9IGNsYW1wQXV0b1JlcGVhdFRyYWNrcyhGb3JSb3dz
LCBhdXRvUmVwZWF0Um93cyk7CiAgICAgYXV0b1JlcGVhdENvbHVtbnMgPSBjbGFtcEF1dG9SZXBl
YXRUcmFja3MoRm9yQ29sdW1ucywgYXV0b1JlcGVhdENvbHVtbnMpOwogCkBAIC02NzAsMTAgKzY4
NCw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZChHcmlkVHJhY2tTaXppbmdB
bGdvcml0aG0mIGFsZ29yaXRobSwgc3RkOjpvcHRpCiAgICAgICAgICAgICBjaGlsZC0+c2V0T3Zl
cnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KHN0ZDo6bnVsbG9wdCk7
CiAKICAgICAgICAgR3JpZEFyZWEgYXJlYSA9IGdyaWQuZ3JpZEl0ZW1BcmVhKCpjaGlsZCk7Ci0g
ICAgICAgIGlmICghYXJlYS5yb3dzLmlzSW5kZWZpbml0ZSgpKQotICAgICAgICAgICAgYXJlYS5y
b3dzLnRyYW5zbGF0ZShncmlkLmV4cGxpY2l0R3JpZFN0YXJ0KEZvclJvd3MpKTsKLSAgICAgICAg
aWYgKCFhcmVhLmNvbHVtbnMuaXNJbmRlZmluaXRlKCkpCi0gICAgICAgICAgICBhcmVhLmNvbHVt
bnMudHJhbnNsYXRlKGdyaWQuZXhwbGljaXRHcmlkU3RhcnQoRm9yQ29sdW1ucykpOworICAgICAg
ICBncmlkLmNsYW1wQW5kVHJhbnNsYXRlVG9JbXBsaWNpdEdyaWQoYXJlYSk7CiAKICAgICAgICAg
aWYgKGFyZWEucm93cy5pc0luZGVmaW5pdGUoKSB8fCBhcmVhLmNvbHVtbnMuaXNJbmRlZmluaXRl
KCkpIHsKICAgICAgICAgICAgIGdyaWQuc2V0R3JpZEl0ZW1BcmVhKCpjaGlsZCwgYXJlYSk7CkBA
IC02OTAsOCArNzAxLDggQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKEdyaWRU
cmFja1NpemluZ0FsZ29yaXRobSYgYWxnb3JpdGhtLCBzdGQ6Om9wdGkKIAogI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgaWYgKGdyaWQuaGFzR3JpZEl0ZW1zKCkpIHsKLSAgICAgICAgQVNTRVJUKGdy
aWQubnVtVHJhY2tzKEZvclJvd3MpID49IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRH
cmlkUm93Q291bnQoc3R5bGUoKSwgZ3JpZC5hdXRvUmVwZWF0VHJhY2tzKEZvclJvd3MpKSk7Ci0g
ICAgICAgIEFTU0VSVChncmlkLm51bVRyYWNrcyhGb3JDb2x1bW5zKSA+PSBHcmlkUG9zaXRpb25z
UmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KHN0eWxlKCksIGdyaWQuYXV0b1JlcGVh
dFRyYWNrcyhGb3JDb2x1bW5zKSkpOworICAgICAgICBBU1NFUlQoZ3JpZC5udW1UcmFja3MoRm9y
Um93cykgPj0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudCgqdGhp
cykpOworICAgICAgICBBU1NFUlQoZ3JpZC5udW1UcmFja3MoRm9yQ29sdW1ucykgPj0gR3JpZFBv
c2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudCgqdGhpcykpOwogICAgIH0K
ICNlbmRpZgogCkBAIC03NDUsMzMgKzc1NiwzNiBAQCB2b2lkIFJlbmRlckdyaWQ6OnBvcHVsYXRl
RXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcihHcmlkJiBncmlkKSBjb25zdAogICAgIE9yZGVy
SXRlcmF0b3JQb3B1bGF0b3IgcG9wdWxhdG9yKGdyaWQub3JkZXJJdGVyYXRvcigpKTsKICAgICB1
bnNpZ25lZCBleHBsaWNpdFJvd1N0YXJ0ID0gMDsKICAgICB1bnNpZ25lZCBleHBsaWNpdENvbHVt
blN0YXJ0ID0gMDsKLSAgICB1bnNpZ25lZCBhdXRvUmVwZWF0Um93cyA9IGdyaWQuYXV0b1JlcGVh
dFRyYWNrcyhGb3JSb3dzKTsKLSAgICB1bnNpZ25lZCBhdXRvUmVwZWF0Q29sdW1ucyA9IGdyaWQu
YXV0b1JlcGVhdFRyYWNrcyhGb3JDb2x1bW5zKTsKLSAgICB1bnNpZ25lZCBtYXhpbXVtUm93SW5k
ZXggPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KHN0eWxlKCks
IGF1dG9SZXBlYXRSb3dzKTsKLSAgICB1bnNpZ25lZCBtYXhpbXVtQ29sdW1uSW5kZXggPSBHcmlk
UG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KHN0eWxlKCksIGF1dG9S
ZXBlYXRDb2x1bW5zKTsKKyAgICB1bnNpZ25lZCBtYXhpbXVtUm93SW5kZXggPSBHcmlkUG9zaXRp
b25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KCp0aGlzKTsKKyAgICB1bnNpZ25lZCBt
YXhpbXVtQ29sdW1uSW5kZXggPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENv
bHVtbkNvdW50KCp0aGlzKTsKIAogICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGZpcnN0Q2hp
bGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpIHsKICAgICAg
ICAgaWYgKCFwb3B1bGF0b3IuY29sbGVjdENoaWxkKCpjaGlsZCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgCi0gICAgICAgIEdyaWRTcGFuIHJvd1Bvc2l0aW9ucyA9IEdyaWRQb3Np
dGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoc3R5bGUoKSwgKmNo
aWxkLCBGb3JSb3dzLCBhdXRvUmVwZWF0Um93cyk7Ci0gICAgICAgIGlmICghcm93UG9zaXRpb25z
LmlzSW5kZWZpbml0ZSgpKSB7Ci0gICAgICAgICAgICBleHBsaWNpdFJvd1N0YXJ0ID0gc3RkOjpt
YXg8aW50PihleHBsaWNpdFJvd1N0YXJ0LCAtcm93UG9zaXRpb25zLnVudHJhbnNsYXRlZFN0YXJ0
TGluZSgpKTsKLSAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0ZDo6bWF4PGludD4obWF4
aW11bVJvd0luZGV4LCByb3dQb3NpdGlvbnMudW50cmFuc2xhdGVkRW5kTGluZSgpKTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEdyb3cgdGhlIGdyaWQgZm9yIGl0ZW1zIHdpdGgg
YSBkZWZpbml0ZSByb3cgc3BhbiwgZ2V0dGluZyB0aGUgbGFyZ2VzdCBzdWNoIHNwYW4uCi0gICAg
ICAgICAgICB1bnNpZ25lZCBzcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNp
emVGb3JBdXRvUGxhY2VkSXRlbSgqY2hpbGQsIEZvclJvd3MpOwotICAgICAgICAgICAgbWF4aW11
bVJvd0luZGV4ID0gc3RkOjptYXgobWF4aW11bVJvd0luZGV4LCBzcGFuU2l6ZSk7CisgICAgICAg
IEdyaWRTcGFuIHJvd1Bvc2l0aW9ucyA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdy
aWRQb3NpdGlvbnNGcm9tU3R5bGUoKmNoaWxkLCBGb3JSb3dzKTsKKyAgICAgICAgaWYgKCFpc1N1
YmdyaWRSb3dzKCkpIHsKKyAgICAgICAgICAgIGlmICghcm93UG9zaXRpb25zLmlzSW5kZWZpbml0
ZSgpKSB7CisgICAgICAgICAgICAgICAgZXhwbGljaXRSb3dTdGFydCA9IHN0ZDo6bWF4PGludD4o
ZXhwbGljaXRSb3dTdGFydCwgLXJvd1Bvc2l0aW9ucy51bnRyYW5zbGF0ZWRTdGFydExpbmUoKSk7
CisgICAgICAgICAgICAgICAgbWF4aW11bVJvd0luZGV4ID0gc3RkOjptYXg8aW50PihtYXhpbXVt
Um93SW5kZXgsIHJvd1Bvc2l0aW9ucy51bnRyYW5zbGF0ZWRFbmRMaW5lKCkpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBHcm93IHRoZSBncmlkIGZvciBpdGVtcyB3
aXRoIGEgZGVmaW5pdGUgcm93IHNwYW4sIGdldHRpbmcgdGhlIGxhcmdlc3Qgc3VjaCBzcGFuLgor
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVy
OjpzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKCpjaGlsZCwgRm9yUm93cyk7CisgICAgICAgICAg
ICAgICAgbWF4aW11bVJvd0luZGV4ID0gc3RkOjptYXgobWF4aW11bVJvd0luZGV4LCBzcGFuU2l6
ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBHcmlkU3BhbiBjb2x1bW5Q
b3NpdGlvbnMgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJv
bVN0eWxlKHN0eWxlKCksICpjaGlsZCwgRm9yQ29sdW1ucywgYXV0b1JlcGVhdENvbHVtbnMpOwot
ICAgICAgICBpZiAoIWNvbHVtblBvc2l0aW9ucy5pc0luZGVmaW5pdGUoKSkgewotICAgICAgICAg
ICAgZXhwbGljaXRDb2x1bW5TdGFydCA9IHN0ZDo6bWF4PGludD4oZXhwbGljaXRDb2x1bW5TdGFy
dCwgLWNvbHVtblBvc2l0aW9ucy51bnRyYW5zbGF0ZWRTdGFydExpbmUoKSk7Ci0gICAgICAgICAg
ICBtYXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1heDxpbnQ+KG1heGltdW1Db2x1bW5JbmRleCwg
Y29sdW1uUG9zaXRpb25zLnVudHJhbnNsYXRlZEVuZExpbmUoKSk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAvLyBHcm93IHRoZSBncmlkIGZvciBpdGVtcyB3aXRoIGEgZGVmaW5pdGUg
Y29sdW1uIHNwYW4sIGdldHRpbmcgdGhlIGxhcmdlc3Qgc3VjaCBzcGFuLgotICAgICAgICAgICAg
dW5zaWduZWQgc3BhblNpemUgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnNwYW5TaXplRm9yQXV0
b1BsYWNlZEl0ZW0oKmNoaWxkLCBGb3JDb2x1bW5zKTsKLSAgICAgICAgICAgIG1heGltdW1Db2x1
bW5JbmRleCA9IHN0ZDo6bWF4KG1heGltdW1Db2x1bW5JbmRleCwgc3BhblNpemUpOworICAgICAg
ICBHcmlkU3BhbiBjb2x1bW5Qb3NpdGlvbnMgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29s
dmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKCpjaGlsZCwgRm9yQ29sdW1ucyk7CisKKyAgICAgICAg
aWYgKCFpc1N1YmdyaWRDb2x1bW5zKCkpIHsKKyAgICAgICAgICAgIGlmICghY29sdW1uUG9zaXRp
b25zLmlzSW5kZWZpbml0ZSgpKSB7CisgICAgICAgICAgICAgICAgZXhwbGljaXRDb2x1bW5TdGFy
dCA9IHN0ZDo6bWF4PGludD4oZXhwbGljaXRDb2x1bW5TdGFydCwgLWNvbHVtblBvc2l0aW9ucy51
bnRyYW5zbGF0ZWRTdGFydExpbmUoKSk7CisgICAgICAgICAgICAgICAgbWF4aW11bUNvbHVtbklu
ZGV4ID0gc3RkOjptYXg8aW50PihtYXhpbXVtQ29sdW1uSW5kZXgsIGNvbHVtblBvc2l0aW9ucy51
bnRyYW5zbGF0ZWRFbmRMaW5lKCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAvLyBHcm93IHRoZSBncmlkIGZvciBpdGVtcyB3aXRoIGEgZGVmaW5pdGUgY29sdW1uIHNw
YW4sIGdldHRpbmcgdGhlIGxhcmdlc3Qgc3VjaCBzcGFuLgorICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpzcGFuU2l6ZUZvckF1dG9QbGFj
ZWRJdGVtKCpjaGlsZCwgRm9yQ29sdW1ucyk7CisgICAgICAgICAgICAgICAgbWF4aW11bUNvbHVt
bkluZGV4ID0gc3RkOjptYXgobWF4aW11bUNvbHVtbkluZGV4LCBzcGFuU2l6ZSk7CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBncmlkLnNldEdyaWRJdGVtQXJlYSgqY2hpbGQs
IHsgcm93UG9zaXRpb25zLCBjb2x1bW5Qb3NpdGlvbnMgfSk7CkBAIC03NzksNiArNzkzLDcgQEAg
dm9pZCBSZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoR3Jp
ZCYgZ3JpZCkgY29uc3QKIAogICAgIGdyaWQuc2V0RXhwbGljaXRHcmlkU3RhcnQoZXhwbGljaXRS
b3dTdGFydCwgZXhwbGljaXRDb2x1bW5TdGFydCk7CiAgICAgZ3JpZC5lbnN1cmVHcmlkU2l6ZSht
YXhpbXVtUm93SW5kZXggKyBleHBsaWNpdFJvd1N0YXJ0LCBtYXhpbXVtQ29sdW1uSW5kZXggKyBl
eHBsaWNpdENvbHVtblN0YXJ0KTsKKyAgICBncmlkLnNldENsYW1waW5nRm9yU3ViZ3JpZChpc1N1
YmdyaWRSb3dzKCkgPyBtYXhpbXVtUm93SW5kZXggOiAwLCBpc1N1YmdyaWRDb2x1bW5zKCkgPyBt
YXhpbXVtQ29sdW1uSW5kZXggOiAwKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBS
ZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRl
R3JpZChHcmlkJiBncmlkLCBjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24gc3BlY2lmaWVkRGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYgc3BlY2lmaWVk
UG9zaXRpb25zKSBjb25zdApAQCAtODEyLDcgKzgyNyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxh
Y2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChHcmlkJiBncmlkLCBjb25zdCBWZWN0b3I8
UmVuCiAgICAgICAgIGlmICghZW1wdHlHcmlkQXJlYSkKICAgICAgICAgICAgIGVtcHR5R3JpZEFy
ZWEgPSBjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChn
cmlkLCAqYXV0b0dyaWRJdGVtLCBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCksIG1h
am9yQXhpc1Bvc2l0aW9ucyk7CiAKLSAgICAgICAgZ3JpZC5pbnNlcnQoKmF1dG9HcmlkSXRlbSwg
KmVtcHR5R3JpZEFyZWEpOworICAgICAgICAqZW1wdHlHcmlkQXJlYSA9IGdyaWQuaW5zZXJ0KCph
dXRvR3JpZEl0ZW0sICplbXB0eUdyaWRBcmVhKTsKIAogICAgICAgICBpZiAoIWlzR3JpZEF1dG9G
bG93RGVuc2UpCiAgICAgICAgICAgICBtaW5vckF4aXNDdXJzb3JzLnNldChtYWpvckF4aXNJbml0
aWFsUG9zaXRpb24sIGlzRm9yQ29sdW1ucyA/IGVtcHR5R3JpZEFyZWEtPnJvd3Muc3RhcnRMaW5l
KCkgOiBlbXB0eUdyaWRBcmVhLT5jb2x1bW5zLnN0YXJ0TGluZSgpKTsKQEAgLTExMTcsNiArMTEz
Miw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cG9wdWxhdGVHcmlkUG9zaXRpb25zRm9yRGlyZWN0aW9u
KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlCiAgICAgICAgIC8vIGNvbXB1dGUgdGhlIGdh
cCBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSB0cmFja3Mgd2l0aG91dCBleGFtaW5pbmcgdGhlIHN1
cnJvdW5kaW5nIG9uZXMuCiAgICAgICAgIExheW91dFVuaXQgZ2FwID0gIWhhc0NvbGxhcHNlZFRy
YWNrcyA/IGdyaWRHYXAoZGlyZWN0aW9uKSA6IDBfbHU7CiAgICAgICAgIHVuc2lnbmVkIG5leHRU
b0xhc3RMaW5lID0gbnVtYmVyT2ZMaW5lcyAtIDI7CisKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG5leHRUb0xhc3RMaW5lOyArK2kpCiAgICAgICAgICAgICBwb3NpdGlvbnNbaSAr
IDFdID0gcG9zaXRpb25zW2ldICsgb2Zmc2V0LmRpc3RyaWJ1dGlvbk9mZnNldCArIHRyYWNrc1tp
XS5iYXNlU2l6ZSgpICsgZ2FwOwogICAgICAgICBwb3NpdGlvbnNbbGFzdExpbmVdID0gcG9zaXRp
b25zW25leHRUb0xhc3RMaW5lXSArIHRyYWNrc1tuZXh0VG9MYXN0TGluZV0uYmFzZVNpemUoKTsK
QEAgLTE2MTAsMTEgKzE2MjYsMjkgQEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpyZXNvbHZlQXV0
b0VuZEdyaWRQb3NpdGlvbihHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWMKICAgICByZXR1
cm4gY2xpZW50TG9naWNhbFdpZHRoKCk7CiB9CiAKK2Jvb2wgUmVuZGVyR3JpZDo6aXNTdWJncmlk
KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Cit7CisgICAgaWYgKGlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGlzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/
ICFzdHlsZSgpLmdyaWRTdWJncmlkQ29sdW1ucygpIDogIXN0eWxlKCkuZ3JpZFN1YmdyaWRSb3dz
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXM8UmVuZGVyR3JpZD4ocGFy
ZW50KCkpOworfQorCitib29sIFJlbmRlckdyaWQ6OmlzU3ViZ3JpZFJvd3MoKSBjb25zdAorewor
ICAgIHJldHVybiBpc1N1YmdyaWQoRm9yUm93cyk7Cit9Citib29sIFJlbmRlckdyaWQ6OmlzU3Vi
Z3JpZENvbHVtbnMoKSBjb25zdAoreworICAgIHJldHVybiBpc1N1YmdyaWQoRm9yQ29sdW1ucyk7
Cit9CisKIExheW91dFVuaXQgUmVuZGVyR3JpZDo6Z3JpZEFyZWFCcmVhZHRoRm9yT3V0T2ZGbG93
Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRp
cmVjdGlvbikKIHsKICAgICBBU1NFUlQoY2hpbGQuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOwog
ICAgIGJvb2wgaXNSb3dBeGlzID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnM7Ci0gICAgR3JpZFNw
YW4gc3BhbiA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9t
U3R5bGUoc3R5bGUoKSwgY2hpbGQsIGRpcmVjdGlvbiwgYXV0b1JlcGVhdENvdW50Rm9yRGlyZWN0
aW9uKGRpcmVjdGlvbikpOworICAgIEdyaWRTcGFuIHNwYW4gPSBHcmlkUG9zaXRpb25zUmVzb2x2
ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNoaWxkLCBkaXJlY3Rpb24pOwogICAg
IGlmIChzcGFuLmlzSW5kZWZpbml0ZSgpKQogICAgICAgICByZXR1cm4gaXNSb3dBeGlzID8gY2xp
ZW50TG9naWNhbFdpZHRoKCkgOiBjbGllbnRMb2dpY2FsSGVpZ2h0KCk7CiAKQEAgLTE5MjAsNyAr
MTk1NCw3IEBAIHVuc2lnbmVkIFJlbmRlckdyaWQ6Om51bVRyYWNrcyhHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBHcmlkJiBnCiAgICAgICAgIHJldHVybiBncmlkLm51
bVRyYWNrcyhGb3JSb3dzKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHN0aWxsIHJlcXVpcmVzIGtu
b3dsZWRnZSBhYm91dCBtX2dyaWQgaW50ZXJuYWxzLgotICAgIHJldHVybiBncmlkLm51bVRyYWNr
cyhGb3JSb3dzKSA/IGdyaWQubnVtVHJhY2tzKEZvckNvbHVtbnMpIDogR3JpZFBvc2l0aW9uc1Jl
c29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudChzdHlsZSgpLCBncmlkLmF1dG9SZXBlYXRU
cmFja3MoRm9yQ29sdW1ucykpOworICAgIHJldHVybiBncmlkLm51bVRyYWNrcyhGb3JSb3dzKSA/
IGdyaWQubnVtVHJhY2tzKEZvckNvbHVtbnMpIDogR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBs
aWNpdEdyaWRDb2x1bW5Db3VudCgqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyR3JpZDo6cGFpbnRD
aGlsZHJlbihQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0LCBQYWludEluZm8mIGZvckNoaWxkLCBib29sIHVzZVByaW50UmVjdCkKQEAgLTE5NzcsNCAr
MjAxMSw2MiBAQCBib29sIFJlbmRlckdyaWQ6Omhhc0F1dG9TaXplSW5Sb3dBeGlzKGNvbnN0IFJl
bmRlckJveCYgY2hpbGQpIGNvbnN0CiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBjaGlsZC5zdHlsZSgpLndpZHRoKCkuaXNBdXRvKCkgOiBjaGlsZC5zdHlsZSgpLmhlaWdo
dCgpLmlzQXV0bygpOwogfQogCitib29sIFJlbmRlckdyaWQ6OmNvbXB1dGVHcmlkU3BhbkZvck91
dE9mRmxvd0NoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbiBkaXJlY3Rpb24sIGludCYgc3RhcnRMaW5lLCBib29sJiBzdGFydElzQXV0bywgaW50JiBl
bmRMaW5lLCBib29sJiBlbmRJc0F1dG8pIGNvbnN0Cit7CisgICAgQVNTRVJUKGNoaWxkLmlzT3V0
T2ZGbG93UG9zaXRpb25lZCgpKTsKKyAgICBpbnQgbGFzdExpbmUgPSBudW1UcmFja3MoZGlyZWN0
aW9uLCBtX2dyaWQpOworICAgIEdyaWRTcGFuIHNwYW4gPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6
OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNoaWxkLCBkaXJlY3Rpb24pOworICAgIGlm
IChzcGFuLmlzSW5kZWZpbml0ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1bnNp
Z25lZCBleHBsaWNpdFN0YXJ0ID0gbV9ncmlkLmV4cGxpY2l0R3JpZFN0YXJ0KGRpcmVjdGlvbik7
CisgICAgc3RhcnRMaW5lID0gc3Bhbi51bnRyYW5zbGF0ZWRTdGFydExpbmUoKSArIGV4cGxpY2l0
U3RhcnQ7CisgICAgZW5kTGluZSA9IHNwYW4udW50cmFuc2xhdGVkRW5kTGluZSgpICsgZXhwbGlj
aXRTdGFydDsKKworICAgIEdyaWRQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gZGlyZWN0aW9uID09
IEZvckNvbHVtbnMgPyBjaGlsZC5zdHlsZSgpLmdyaWRJdGVtQ29sdW1uU3RhcnQoKSA6IGNoaWxk
LnN0eWxlKCkuZ3JpZEl0ZW1Sb3dTdGFydCgpOworICAgIEdyaWRQb3NpdGlvbiBlbmRQb3NpdGlv
biA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY2hpbGQuc3R5bGUoKS5ncmlkSXRlbUNvbHVt
bkVuZCgpIDogY2hpbGQuc3R5bGUoKS5ncmlkSXRlbVJvd0VuZCgpOworCisgICAgc3RhcnRJc0F1
dG8gPSBzdGFydFBvc2l0aW9uLmlzQXV0bygpIHx8IHN0YXJ0TGluZSA8IDAgfHwgc3RhcnRMaW5l
ID4gbGFzdExpbmU7CisgICAgZW5kSXNBdXRvID0gZW5kUG9zaXRpb24uaXNBdXRvKCkgfHwgZW5k
TGluZSA8IDAgfHwgZW5kTGluZSA+IGxhc3RMaW5lOworICAgIHJldHVybiB0cnVlOworfQorCitH
cmlkU3BhbiBSZW5kZXJHcmlkOjpncmlkU3BhbkZvck91dE9mRmxvd0NoaWxkKGNvbnN0IFJlbmRl
ckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Cit7
CisgICAgaW50IGxhc3RMaW5lID0gbnVtVHJhY2tzKGRpcmVjdGlvbiwgbV9ncmlkKTsKKyAgICBp
bnQgc3RhcnRMaW5lLCBlbmRMaW5lOworICAgIGJvb2wgc3RhcnRJc0F1dG8sIGVuZElzQXV0bzsK
KyAgICBpZiAoIWNvbXB1dGVHcmlkU3BhbkZvck91dE9mRmxvd0NoaWxkKGNoaWxkLCBkaXJlY3Rp
b24sIHN0YXJ0TGluZSwgc3RhcnRJc0F1dG8sIGVuZExpbmUsIGVuZElzQXV0bykpCisgICAgICAg
IHJldHVybiBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4oMCwgbGFzdExpbmUp
OworICAgIHJldHVybiBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4oc3RhcnRJ
c0F1dG8gPyAwIDogc3RhcnRMaW5lLCBlbmRJc0F1dG8gPyBsYXN0TGluZSA6IGVuZExpbmUpOwor
fQorCitHcmlkU3BhbiBSZW5kZXJHcmlkOjpncmlkU3BhbkZvckNoaWxkKGNvbnN0IFJlbmRlckJv
eCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKGlzPFJlbmRlckdyaWQ+KGNoaWxkLnBhcmVudCgpKSk7CisKKyAgICBSZW5kZXJH
cmlkKiByZW5kZXJHcmlkID0gZG93bmNhc3Q8UmVuZGVyR3JpZD4oY2hpbGQucGFyZW50KCkpOwor
ICAgIC8vIHxkaXJlY3Rpb258IGlzIHNwZWNpZmllZCByZWxhdGl2ZSB0byB0aGlzIGdyaWQsIHN3
aXRjaCBpdCBpZiB8Y2hpbGR8J3MgZGlyZWN0IHBhcmVudCBncmlkCisgICAgLy8gaXMgdXNpbmcg
YSBkaWZmZXJlbnQgd3JpdGluZyBtb2RlLgorICAgIGRpcmVjdGlvbiA9IEdyaWRMYXlvdXRGdW5j
dGlvbnM6OmZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKCp0aGlzLCAqcmVuZGVyR3JpZCwgZGly
ZWN0aW9uKTsKKyAgICBHcmlkU3BhbiBzcGFuID0gY2hpbGQuaXNPdXRPZkZsb3dQb3NpdGlvbmVk
KCkgPyByZW5kZXJHcmlkLT5ncmlkU3BhbkZvck91dE9mRmxvd0NoaWxkKGNoaWxkLCBkaXJlY3Rp
b24pIDogcmVuZGVyR3JpZC0+Y3VycmVudEdyaWQoKS5ncmlkSXRlbVNwYW4oY2hpbGQsIGRpcmVj
dGlvbik7CisKKyAgICB3aGlsZSAocmVuZGVyR3JpZCAhPSB0aGlzKSB7CisgICAgICAgIEFTU0VS
VChpczxSZW5kZXJHcmlkPihyZW5kZXJHcmlkLT5wYXJlbnQoKSkpOworICAgICAgICBSZW5kZXJH
cmlkKiBwYXJlbnQgPSBkb3duY2FzdDxSZW5kZXJHcmlkPihyZW5kZXJHcmlkLT5wYXJlbnQoKSk7
CisKKyAgICAgICAgYm9vbCBpc1N1YmdyaWQgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IHJl
bmRlckdyaWQtPmlzU3ViZ3JpZENvbHVtbnMoKSA6IHJlbmRlckdyaWQtPmlzU3ViZ3JpZFJvd3Mo
KTsKKworICAgICAgICBkaXJlY3Rpb24gPSBHcmlkTGF5b3V0RnVuY3Rpb25zOjpmbG93QXdhcmVE
aXJlY3Rpb25Gb3JDaGlsZCgqcGFyZW50LCAqcmVuZGVyR3JpZCwgZGlyZWN0aW9uKTsKKworICAg
ICAgICBHcmlkU3BhbiBwYXJlbnRTcGFuID0gcmVuZGVyR3JpZC0+aXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkgPyBwYXJlbnQtPmdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoKnJlbmRlckdyaWQsIGRp
cmVjdGlvbikgOiAgcGFyZW50LT5jdXJyZW50R3JpZCgpLmdyaWRJdGVtU3BhbigqcmVuZGVyR3Jp
ZCwgZGlyZWN0aW9uKTsKKyAgICAgICAgaWYgKGlzU3ViZ3JpZCkKKyAgICAgICAgICAgIHNwYW4u
dHJhbnNsYXRlVG8ocGFyZW50U3BhbiwgR3JpZExheW91dEZ1bmN0aW9uczo6aXNTdWJncmlkUmV2
ZXJzZWREaXJlY3Rpb24oKnBhcmVudCwgZGlyZWN0aW9uLCAqcmVuZGVyR3JpZCkpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBzcGFuID0gcGFyZW50U3BhbjsKKyAgICAgICAgcmVuZGVyR3Jp
ZCA9IHBhcmVudDsKKyAgICB9CisgICAgcmV0dXJuIHNwYW47Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlk
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4IGUyMzBiMTNk
YThhMi4uYmQwYTZkZjdmMTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgK
QEAgLTgyLDcgKzgyLDI3IEBAIHB1YmxpYzoKIAogICAgIFN0eWxlQ29udGVudEFsaWdubWVudERh
dGEgY29udGVudEFsaWdubWVudChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwogCisg
ICAgLy8gQ29tcHV0ZXMgdGhlIHNwYW4gcmVsYXRpdmUgdG8gdGhpcyBSZW5kZXJHcmlkLCBldmVu
IGlmIHRoZSBSZW5kZXJCb3ggaXMgYSBjaGlsZAorICAgIC8vIG9mIGEgZGVzY2VuZGFudCBzdWJn
cmlkLgorICAgIEdyaWRTcGFuIGdyaWRTcGFuRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3Jp
ZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKKworICAgIGJvb2wgaXNTdWJncmlkUm93cygp
IGNvbnN0OworICAgIGJvb2wgaXNTdWJncmlkQ29sdW1ucygpIGNvbnN0OworICAgIGJvb2wgaXNT
dWJncmlkKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CisKKyAgICBjb25zdCBHcmlk
JiBjdXJyZW50R3JpZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9ncmlkOworICAg
IH0KKworICAgIHVuc2lnbmVkIG51bVRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGly
ZWN0aW9uKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG51bVRyYWNrcyhkaXJlY3Rpb24s
IG1fZ3JpZCk7CisgICAgfQorCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBHcmlkVHJhY2tT
aXppbmdBbGdvcml0aG07CisKICAgICBJdGVtUG9zaXRpb24gc2VsZkFsaWdubWVudE5vcm1hbEJl
aGF2aW9yKGNvbnN0IFJlbmRlckJveCogY2hpbGQgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNoaWxkKTsKQEAgLTEwMCw2ICsxMjAsNyBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBleHBsaWNpdEdyaWREaWRSZXNpemUoY29uc3QgUmVuZGVyU3R5bGUmKSBj
b25zdDsKICAgICBib29sIG5hbWVkR3JpZExpbmVzRGVmaW5pdGlvbkRpZENoYW5nZShjb25zdCBS
ZW5kZXJTdHlsZSYpIGNvbnN0OworICAgIGJvb2wgaW1wbGljaXRHcmlkTGluZXNEZWZpbml0aW9u
RGlkQ2hhbmdlKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAKICAgICB1bnNpZ25lZCBjb21w
dXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdDsKIApAQCAtMTUwLDggKzE3
MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMb2dpY2FsUG9zaXRpb25Gb3JDaGlsZChSZW5k
ZXJCb3gmKSBjb25zdDsKICAgICB2b2lkIHNldExvZ2ljYWxPZmZzZXRGb3JDaGlsZChSZW5kZXJC
b3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwogICAgIExheW91dFVuaXQgbG9n
aWNhbE9mZnNldEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbikgY29uc3Q7Ci0gICAgR3JpZEFyZWEgY2FjaGVkR3JpZEFyZWEoY29uc3QgUmVuZGVyQm94
JikgY29uc3Q7Ci0gICAgR3JpZFNwYW4gY2FjaGVkR3JpZFNwYW4oY29uc3QgUmVuZGVyQm94Jiwg
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIAogICAgIExheW91dFVuaXQgZ3JpZEFy
ZWFCcmVhZHRoRm9yQ2hpbGRJbmNsdWRpbmdBbGlnbm1lbnRPZmZzZXRzKGNvbnN0IFJlbmRlckJv
eCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAKQEAgLTE5Myw2ICsyMTIsOSBA
QCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFJlbmRlckJveCo+IGNvbXB1dGVBc3BlY3RSYXRpb0Rl
cGVuZGVudEFuZEJhc2VsaW5lSXRlbXMoKTsKIAorICAgIEdyaWRTcGFuIGdyaWRTcGFuRm9yT3V0
T2ZGbG93Q2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBj
b25zdDsKKyAgICBib29sIGNvbXB1dGVHcmlkU3BhbkZvck91dE9mRmxvd0NoaWxkKGNvbnN0IFJl
bmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgaW50JiwgYm9vbCYsIGludCYsIGJv
b2wmKSBjb25zdDsKKwogICAgIEdyaWQgbV9ncmlkOwogCiAgICAgR3JpZFRyYWNrU2l6aW5nQWxn
b3JpdGhtIG1fdHJhY2tTaXppbmdBbGdvcml0aG07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9HcmlkQXJlYS5oCmluZGV4IGI3ZWJkMWQ5NjFkZS4uYmEyNmQxNzc5MmRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaApAQCAtNjUsNyArNjUsNyBAQCBw
dWJsaWM6CiAKICAgICB1bnNpZ25lZCBpbnRlZ2VyU3BhbigpIGNvbnN0CiAgICAgewotICAgICAg
ICBBU1NFUlQoaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSk7CisgICAgICAgIEFTU0VSVChpc1RyYW5z
bGF0ZWREZWZpbml0ZSgpIHx8IG1fdHlwZSA9PSBVbnRyYW5zbGF0ZWREZWZpbml0ZSk7CiAgICAg
ICAgIHJldHVybiBtX2VuZExpbmUgLSBtX3N0YXJ0TGluZTsKICAgICB9CiAKQEAgLTE0MSw2ICsx
NDEsNDAgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9lbmRMaW5lID4gMCk7CiAgICAgfQog
CisgICAgLy8gTW92ZXMgdGhpcyBzcGFuIHRvIGJlIGluIHRoZSBzYW1lIGNvb3JkaW5hdGUgc3Bh
Y2UgYXMgfHBhcmVudHwuCisgICAgLy8gSWYgcmV2ZXJzZSBpcyBzcGVjaWZpZWQsIHRoZW4gc3dh
cHMgdGhlIGRpcmVjdGlvbiB0byBoYW5kbGUgUlRML0xUUiBjaGFuZ2VzLgorICAgIHZvaWQgdHJh
bnNsYXRlVG8oY29uc3QgR3JpZFNwYW4mIHBhcmVudCwgYm9vbCByZXZlcnNlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2xhdGVkRGVmaW5pdGUpOworICAgICAgICBBU1NF
UlQocGFyZW50Lm1fdHlwZSA9PSBUcmFuc2xhdGVkRGVmaW5pdGUpOworICAgICAgICBpZiAocmV2
ZXJzZSkgeworICAgICAgICAgICAgaW50IHN0YXJ0ID0gbV9zdGFydExpbmU7CisgICAgICAgICAg
ICBtX3N0YXJ0TGluZSA9IHBhcmVudC5pbnRlZ2VyU3BhbigpIC0gbV9lbmRMaW5lICsgcGFyZW50
LnN0YXJ0TGluZSgpOworICAgICAgICAgICAgbV9lbmRMaW5lID0gcGFyZW50LmludGVnZXJTcGFu
KCkgLSBzdGFydCArIHBhcmVudC5zdGFydExpbmUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIG1fc3RhcnRMaW5lICs9IHBhcmVudC5tX3N0YXJ0TGluZTsKKyAgICAgICAgICAgIG1f
ZW5kTGluZSArPSBwYXJlbnQubV9zdGFydExpbmU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2
b2lkIGNsYW1wKGludCBtYXgpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlICE9IEluZGVm
aW5pdGUpOworICAgICAgICBtX3N0YXJ0TGluZSA9IHN0ZDo6bWF4KG1fc3RhcnRMaW5lLCAwKTsK
KyAgICAgICAgbV9lbmRMaW5lID0gc3RkOjptYXgoc3RkOjptaW4obV9lbmRMaW5lLCBtYXgpLCAx
KTsKKyAgICAgICAgaWYgKG1fc3RhcnRMaW5lID49IG1fZW5kTGluZSkKKyAgICAgICAgICAgIG1f
c3RhcnRMaW5lID0gbV9lbmRMaW5lIC0gMTsKKyAgICB9CisKKyAgICB2b2lkIGNsYW1wKGludCBt
aW4sIGludCBtYXgpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlICE9IEluZGVmaW5pdGUp
OworICAgICAgICBtX3N0YXJ0TGluZSA9IHN0ZDo6bWF4KG1fc3RhcnRMaW5lLCBtaW4pOworICAg
ICAgICBtX2VuZExpbmUgPSBzdGQ6Om1pbihtX2VuZExpbmUsIG1heCk7CisgICAgICAgIGlmICht
X3N0YXJ0TGluZSA+PSBtX2VuZExpbmUpCisgICAgICAgICAgICBtX3N0YXJ0TGluZSA9IG1fZW5k
TGluZTsKKyAgICB9CisKIHByaXZhdGU6CiAKICAgICBlbnVtIEdyaWRTcGFuVHlwZSB7VW50cmFu
c2xhdGVkRGVmaW5pdGUsIFRyYW5zbGF0ZWREZWZpbml0ZSwgSW5kZWZpbml0ZX07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2
ZXIuY3BwCmluZGV4IDMzYzcwM2M1ZjA2Zi4uZDkwNDFhNjIzYmQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNw
cApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiR3JpZEFyZWEuaCIKICNpbmNsdWRlICJS
ZW5kZXJCb3guaCIKKyNpbmNsdWRlICJSZW5kZXJHcmlkLmgiCiAjaW5jbHVkZSA8Y3N0ZGxpYj4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTcsNDMgKzU4LDEzMCBAQCBzdGF0aWMgY29uc3Qg
U3RyaW5nIGltcGxpY2l0TmFtZWRHcmlkTGluZUZvclNpZGUoY29uc3QgU3RyaW5nJiBsaW5lTmFt
ZSwgR3JpZFBvcwogICAgIHJldHVybiBsaW5lTmFtZSArIChpc1N0YXJ0U2lkZShzaWRlKSA/ICIt
c3RhcnQiIDogIi1lbmQiKTsKIH0KIAotTmFtZWRMaW5lQ29sbGVjdGlvbjo6TmFtZWRMaW5lQ29s
bGVjdGlvbihjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCBjb25zdCBTdHJp
bmcmIG5hbWVkTGluZSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgdW5zaWdu
ZWQgbGFzdExpbmUsIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3VudCkKLSAgICA6IG1fbGFz
dExpbmUobGFzdExpbmUpCi0gICAgLCBtX2F1dG9SZXBlYXRUb3RhbFRyYWNrcyhhdXRvUmVwZWF0
VHJhY2tzQ291bnQpCitzdGF0aWMgdW5zaWduZWQgZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoY29u
c3QgUmVuZGVyR3JpZCYgZ3JpZENvbnRhaW5lciwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKQogewor
ICAgIHJldHVybiBpc0NvbHVtblNpZGUoc2lkZSkgPyBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4
cGxpY2l0R3JpZENvbHVtbkNvdW50KGdyaWRDb250YWluZXIpIDogR3JpZFBvc2l0aW9uc1Jlc29s
dmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudChncmlkQ29udGFpbmVyKTsKK30KKworc3RhdGljIGlu
bGluZSBHcmlkUG9zaXRpb25TaWRlIHRyYW5zcG9zZWRTaWRlKEdyaWRQb3NpdGlvblNpZGUgc2lk
ZSkKK3sKKyAgICBpZiAoc2lkZSA9PSBDb2x1bW5TdGFydFNpZGUpCisgICAgICAgIHJldHVybiBS
b3dTdGFydFNpZGU7CisgICAgaWYgKHNpZGUgPT0gQ29sdW1uRW5kU2lkZSkKKyAgICAgICAgcmV0
dXJuIFJvd0VuZFNpZGU7CisgICAgaWYgKHNpZGUgPT0gUm93U3RhcnRTaWRlKQorICAgICAgICBy
ZXR1cm4gQ29sdW1uU3RhcnRTaWRlOworICAgIHJldHVybiBDb2x1bW5FbmRTaWRlOworfQorCitz
dGF0aWMgaW50IGNsYW1wZWRJbXBsaWNpdExpbmVGb3JBcmVhKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQgbWluLCBpbnQgbWF4LCBib29sIGlzUm93QXhp
cywgYm9vbCBpc1N0YXJ0U2lkZSkKK3sKKyAgICBjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiBhcmVh
cyA9IHN0eWxlLm5hbWVkR3JpZEFyZWEoKTsKKyAgICBOYW1lZEdyaWRBcmVhTWFwOjpjb25zdF9p
dGVyYXRvciBncmlkQXJlYUl0ID0gYXJlYXMuZmluZChuYW1lKTsKKyAgICBpZiAoZ3JpZEFyZWFJ
dCAhPSBhcmVhcy5lbmQoKSkgeworICAgICAgICBjb25zdCBHcmlkQXJlYSYgZ3JpZEFyZWEgPSBn
cmlkQXJlYUl0LT52YWx1ZTsKKyAgICAgICAgR3JpZFNwYW4gZ3JpZFNwYW4gPSBpc1Jvd0F4aXMg
PyBncmlkQXJlYS5jb2x1bW5zIDogZ3JpZEFyZWEucm93czsKKyAgICAgICAgZ3JpZFNwYW4uY2xh
bXAobWluLCBtYXgpOworICAgICAgICBpZiAoZ3JpZFNwYW4uZW5kTGluZSgpID4gZ3JpZFNwYW4u
c3RhcnRMaW5lKCkpCisgICAgICAgICAgICByZXR1cm4gaXNTdGFydFNpZGUgPyBncmlkU3Bhbi5z
dGFydExpbmUoKSA6IGdyaWRTcGFuLmVuZExpbmUoKTsKKyAgICB9CisgICAgcmV0dXJuIC0xOwor
fQorCitOYW1lZExpbmVDb2xsZWN0aW9uQmFzZTo6TmFtZWRMaW5lQ29sbGVjdGlvbkJhc2UoY29u
c3QgUmVuZGVyR3JpZCYgaW5pdGlhbEdyaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgR3JpZFBvc2l0
aW9uU2lkZSBzaWRlLCBib29sIG5hbWVJc0FyZWFOYW1lKQorICAgIDogbV9zdWJncmlkKGZhbHNl
KQoreworICAgIFN0cmluZyBsaW5lTmFtZSA9IG5hbWVJc0FyZWFOYW1lID8gaW1wbGljaXROYW1l
ZEdyaWRMaW5lRm9yU2lkZShuYW1lLCBzaWRlKSA6IG5hbWU7CisgICAgR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uIGRpcmVjdGlvbiA9IGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpOworICAgIGNvbnN0
IFJlbmRlckdyaWQqIGdyaWQgPSAmaW5pdGlhbEdyaWQ7CisgICAgY29uc3QgUmVuZGVyU3R5bGUq
IGdyaWRDb250YWluZXJTdHlsZSA9ICZncmlkLT5zdHlsZSgpOwogICAgIGJvb2wgaXNSb3dBeGlz
ID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnM7Ci0gICAgY29uc3QgTmFtZWRHcmlkTGluZXNNYXAm
IGdyaWRMaW5lTmFtZXMgPSBpc1Jvd0F4aXMgPyBncmlkQ29udGFpbmVyU3R5bGUubmFtZWRHcmlk
Q29sdW1uTGluZXMoKSA6IGdyaWRDb250YWluZXJTdHlsZS5uYW1lZEdyaWRSb3dMaW5lcygpOwot
ICAgIGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBhdXRvUmVwZWF0R3JpZExpbmVOYW1lcyA9IGlz
Um93QXhpcyA/IGdyaWRDb250YWluZXJTdHlsZS5hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGlu
ZXMoKSA6IGdyaWRDb250YWluZXJTdHlsZS5hdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMoKTsK
LSAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgaW1wbGljaXRHcmlkTGluZU5hbWVzID0gaXNS
b3dBeGlzID8gZ3JpZENvbnRhaW5lclN0eWxlLmltcGxpY2l0TmFtZWRHcmlkQ29sdW1uTGluZXMo
KSA6IGdyaWRDb250YWluZXJTdHlsZS5pbXBsaWNpdE5hbWVkR3JpZFJvd0xpbmVzKCk7CiAKLSAg
ICBhdXRvIGxpbmVzSXRlcmF0b3IgPSBncmlkTGluZU5hbWVzLmZpbmQobmFtZWRMaW5lKTsKKyAg
ICBtX2xhc3RMaW5lID0gZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoKmdyaWQsIHNpZGUpOworCisg
ICAgY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIGdyaWRMaW5lTmFtZXMgPSBpc1Jvd0F4aXMgPyBn
cmlkQ29udGFpbmVyU3R5bGUtPm5hbWVkR3JpZENvbHVtbkxpbmVzKCkgOiBncmlkQ29udGFpbmVy
U3R5bGUtPm5hbWVkR3JpZFJvd0xpbmVzKCk7CisgICAgY29uc3QgTmFtZWRHcmlkTGluZXNNYXAm
IGF1dG9SZXBlYXRHcmlkTGluZU5hbWVzID0gaXNSb3dBeGlzID8gZ3JpZENvbnRhaW5lclN0eWxl
LT5hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMoKSA6IGdyaWRDb250YWluZXJTdHlsZS0+
YXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzKCk7CisgICAgY29uc3QgTmFtZWRHcmlkTGluZXNN
YXAmIGltcGxpY2l0R3JpZExpbmVOYW1lcyA9IGlzUm93QXhpcyA/IGdyaWRDb250YWluZXJTdHls
ZS0+aW1wbGljaXROYW1lZEdyaWRDb2x1bW5MaW5lcygpIDogZ3JpZENvbnRhaW5lclN0eWxlLT5p
bXBsaWNpdE5hbWVkR3JpZFJvd0xpbmVzKCk7CisKKyAgICBhdXRvIGxpbmVzSXRlcmF0b3IgPSBn
cmlkTGluZU5hbWVzLmZpbmQobGluZU5hbWUpOwogICAgIG1fbmFtZWRMaW5lc0luZGV4ZXMgPSBs
aW5lc0l0ZXJhdG9yID09IGdyaWRMaW5lTmFtZXMuZW5kKCkgPyBudWxscHRyIDogJmxpbmVzSXRl
cmF0b3ItPnZhbHVlOwogCi0gICAgYXV0byBhdXRvUmVwZWF0TGluZXNJdGVyYXRvciA9IGF1dG9S
ZXBlYXRHcmlkTGluZU5hbWVzLmZpbmQobmFtZWRMaW5lKTsKKyAgICBhdXRvIGF1dG9SZXBlYXRM
aW5lc0l0ZXJhdG9yID0gYXV0b1JlcGVhdEdyaWRMaW5lTmFtZXMuZmluZChsaW5lTmFtZSk7CiAg
ICAgbV9hdXRvUmVwZWF0TmFtZWRMaW5lc0luZGV4ZXMgPSBhdXRvUmVwZWF0TGluZXNJdGVyYXRv
ciA9PSBhdXRvUmVwZWF0R3JpZExpbmVOYW1lcy5lbmQoKSA/IG51bGxwdHIgOiAmYXV0b1JlcGVh
dExpbmVzSXRlcmF0b3ItPnZhbHVlOwogCi0gICAgYXV0byBpbXBsaWNpdEdyaWRMaW5lc0l0ZXJh
dG9yID0gaW1wbGljaXRHcmlkTGluZU5hbWVzLmZpbmQobmFtZWRMaW5lKTsKKyAgICBhdXRvIGlt
cGxpY2l0R3JpZExpbmVzSXRlcmF0b3IgPSBpbXBsaWNpdEdyaWRMaW5lTmFtZXMuZmluZChsaW5l
TmFtZSk7CiAgICAgbV9pbXBsaWNpdE5hbWVkTGluZXNJbmRleGVzID0gaW1wbGljaXRHcmlkTGlu
ZXNJdGVyYXRvciA9PSBpbXBsaWNpdEdyaWRMaW5lTmFtZXMuZW5kKCkgPyBudWxscHRyIDogJmlt
cGxpY2l0R3JpZExpbmVzSXRlcmF0b3ItPnZhbHVlOworICAgIG1fc3ViZ3JpZCA9IGlzUm93QXhp
cyA/IGdyaWQtPmlzU3ViZ3JpZENvbHVtbnMoKSA6IGdyaWQtPmlzU3ViZ3JpZFJvd3MoKTsKKwor
ICAgIG1fYXV0b1JlcGVhdFRvdGFsVHJhY2tzID0gZ3JpZC0+YXV0b1JlcGVhdENvdW50Rm9yRGly
ZWN0aW9uKGRpcmVjdGlvbik7CisgICAgbV9hdXRvUmVwZWF0VHJhY2tMaXN0TGVuZ3RoID0gaXNS
b3dBeGlzID8gZ3JpZENvbnRhaW5lclN0eWxlLT5ncmlkQXV0b1JlcGVhdENvbHVtbnMoKS5zaXpl
KCkgOiBncmlkQ29udGFpbmVyU3R5bGUtPmdyaWRBdXRvUmVwZWF0Um93cygpLnNpemUoKTsKKyAg
ICBtX2F1dG9SZXBlYXRMaW5lcyA9IDA7CisgICAgbV9pbnNlcnRpb25Qb2ludCA9IGlzUm93QXhp
cyA/IGdyaWRDb250YWluZXJTdHlsZS0+Z3JpZEF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9p
bnQoKSA6IGdyaWRDb250YWluZXJTdHlsZS0+Z3JpZEF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9p
bnQoKTsKKworICAgIGlmICghbV9zdWJncmlkKSB7CisgICAgICAgIGlmIChpc1Jvd0F4aXMgPyBn
cmlkQ29udGFpbmVyU3R5bGUtPmdyaWRTdWJncmlkQ29sdW1ucygpIDogZ3JpZENvbnRhaW5lclN0
eWxlLT5ncmlkU3ViZ3JpZFJvd3MoKSkgeworICAgICAgICAgICAgLy8gSWYgc3ViZ3JpZCB3YXMg
c3BlY2lmaWVkLCBidXQgdGhlIGdyaWQgd2Fzbid0IGFibGUgdG8gYWN0dWFsbHkgYmVjb21lIGEg
c3ViZ3JpZCwgdGhlIHVzZWQKKyAgICAgICAgICAgIC8vIHZhbHVlIG9mIHRoZSBzdHlsZSBzaG91
bGQgYmUgdGhlIGluaXRpYWwgJ25vbmUnIHZhbHVlcy4KKyAgICAgICAgICAgIG1fbmFtZWRMaW5l
c0luZGV4ZXMgPSBudWxscHRyOworICAgICAgICAgICAgbV9hdXRvUmVwZWF0TmFtZWRMaW5lc0lu
ZGV4ZXMgPSBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAg
ICBtX2luc2VydGlvblBvaW50ID0gaXNSb3dBeGlzID8gZ3JpZENvbnRhaW5lclN0eWxlLmdyaWRB
dXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50KCkgOiBncmlkQ29udGFpbmVyU3R5bGUuZ3Jp
ZEF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQoKTsKLQotICAgIG1fYXV0b1JlcGVhdFRyYWNr
TGlzdExlbmd0aCA9IGlzUm93QXhpcyA/IGdyaWRDb250YWluZXJTdHlsZS5ncmlkQXV0b1JlcGVh
dENvbHVtbnMoKS5zaXplKCkgOiBncmlkQ29udGFpbmVyU3R5bGUuZ3JpZEF1dG9SZXBlYXRSb3dz
KCkuc2l6ZSgpOwotfQorICAgIGlmIChtX2ltcGxpY2l0TmFtZWRMaW5lc0luZGV4ZXMpIHsKKyAg
ICAgICAgLy8gVGhlIGltcGxpY2l0IGxpbmVzIGxpc3Qgd2FzIGNyZWF0ZWQgYmFzZWQgb24gdGhl
IGFyZWFzIHNwZWNpZmllZCBmb3IgdGhlIGdyaWQgYXJlYXMgcHJvcGVydHksIGJ1dCB0aGUKKyAg
ICAgICAgLy8gc3ViZ3JpZCBtaWdodCBoYXZlIGluaGVyaXRlZCBsZXNzIHRyYWNrcyB0aGFuIG5l
ZWRlZCB0byBjb3ZlciB0aGUgc3BlY2lmaWVkIGFyZWEuIFdlIHdhbnQgdG8gY2xhbXAKKyAgICAg
ICAgLy8gdGhlIHNwZWNpZmllZCBhcmVhIGRvd24gdG8gZXhwbGljaXQgZ3JpZCB3ZSBhY3R1YWxs
eSBoYXZlLCBhbmQgdGhlbiBnZW5lcmF0ZSBpbXBsaWNpdCAtc3RhcnQvLWVuZAorICAgICAgICAv
LyBsaW5lcyBmb3IgdGhlIG5ldyBhcmVhLgorICAgICAgICBBU1NFUlQobV9pbXBsaWNpdE5hbWVk
TGluZXNJbmRleGVzLT5zaXplKCkgPT0gMSk7CisgICAgICAgIG1faW1wbGljaXROYW1lZExpbmVz
SW5kZXhlcyA9ICZtX2luaGVyaXRlZE5hbWVkTGluZXNJbmRleGVzOworCisgICAgICAgIC8vIEZp
bmQgdGhlIGFyZWEgbmFtZSB0aGF0IGNyZWF0ZXMgdGhlIGltcGxpY2l0IGxpbmUgd2UncmUgbG9v
a2luZyBmb3IuIElmIHRoZSBpbnB1dCB3YXMgYW4gYXJlYSBuYW1lLAorICAgICAgICAvLyB0aGVu
IHdlIGNhbiB1c2UgdGhhdCwgb3RoZXJ3aXNlIHdlIG5lZWQgdG8gY2hvb3NlIHRoZSBzdWJzdHJp
bmcgYW5kIGluZmVyIHdoaWNoIHNpZGUgdGhlIGlucHV0IHNwZWNpZmllZC4KKyAgICAgICAgLy8g
SXQncyBwb3NzaWJsZSBmb3IgYXV0aG9ycyB0byBtYW51YWxseSBuYW1lIGEgKi1zdGFydCBpbXBs
aWNpdCBsaW5lIG5hbWUgZm9yIHRoZSBlbmQgbGluZSBzZWFyY2gsIGFuZCB2aWNlLXZlcnNhLAor
ICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIHJlbWVtYmVyIHdoaWNoIHNpZGUgd2UgaW5mZXJyZWQg
ZnJvbSB0aGUgbmFtZSwgc2VwYXJhdGVseSBmcm9tIHRoZSBzaWRlIHdlJ3JlIHNlYXJjaGluZyBm
b3IuCisgICAgICAgIFN0cmluZyBhcmVhTmFtZSA9IG5hbWU7CisgICAgICAgIGJvb2wgc3RhcnRT
aWRlID0gaXNTdGFydFNpZGUoc2lkZSk7CisgICAgICAgIGlmICghbmFtZUlzQXJlYU5hbWUpIHsK
KyAgICAgICAgICAgIHNpemVfdCBzdWZmaXggPSBuYW1lLmZpbmQoIi1zdGFydCIpOworICAgICAg
ICAgICAgaWYgKHN1ZmZpeCA9PSBub3RGb3VuZCkgeworICAgICAgICAgICAgICAgIHN1ZmZpeCA9
IG5hbWUuZmluZCgiLWVuZCIpOworICAgICAgICAgICAgICAgIEFTU0VSVChzdWZmaXggIT0gbm90
Rm91bmQpOworICAgICAgICAgICAgICAgIHN0YXJ0U2lkZSA9IGZhbHNlOworICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgc3RhcnRTaWRlID0gdHJ1ZTsKKyAgICAgICAgICAgIGFy
ZWFOYW1lID0gbmFtZS5zdWJzdHJpbmcoMCwgc3VmZml4KTsKKyAgICAgICAgfQorICAgICAgICBp
bnQgaW1wbGljaXRMaW5lID0gY2xhbXBlZEltcGxpY2l0TGluZUZvckFyZWEoKmdyaWRDb250YWlu
ZXJTdHlsZSwgYXJlYU5hbWUsIDAsIG1fbGFzdExpbmUsIGlzUm93QXhpcywgc3RhcnRTaWRlKTsK
KyAgICAgICAgaWYgKGltcGxpY2l0TGluZSAhPSAtMSkKKyAgICAgICAgICAgIG1faW5oZXJpdGVk
TmFtZWRMaW5lc0luZGV4ZXMuYXBwZW5kKGltcGxpY2l0TGluZSk7CisgICAgfQogCi1ib29sIE5h
bWVkTGluZUNvbGxlY3Rpb246Omhhc0V4cGxpY2l0TmFtZWRMaW5lcygpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fbmFtZWRMaW5lc0luZGV4ZXMgfHwgbV9hdXRvUmVwZWF0TmFtZWRMaW5lc0luZGV4
ZXM7CisgICAgQVNTRVJUKCFtX2F1dG9SZXBlYXRUb3RhbFRyYWNrcyk7CisgICAgbV9hdXRvUmVw
ZWF0VHJhY2tMaXN0TGVuZ3RoID0gKGlzUm93QXhpcyA/IGdyaWRDb250YWluZXJTdHlsZS0+YXV0
b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcygpIDogZ3JpZENvbnRhaW5lclN0eWxl
LT5hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkpLnNpemUoKTsKKyAgICBpZiAo
bV9hdXRvUmVwZWF0VHJhY2tMaXN0TGVuZ3RoKSB7CisgICAgICAgIHVuc2lnbmVkIG5hbWVkTGlu
ZXMgPSAoaXNSb3dBeGlzID8gZ3JpZENvbnRhaW5lclN0eWxlLT5vcmRlcmVkTmFtZWRHcmlkQ29s
dW1uTGluZXMoKSA6IGdyaWRDb250YWluZXJTdHlsZS0+b3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVz
KCkpLnNpemUoKTsKKyAgICAgICAgdW5zaWduZWQgdG90YWxMaW5lcyA9IG1fbGFzdExpbmUgKyAx
OworICAgICAgICBpZiAobmFtZWRMaW5lcyA8IHRvdGFsTGluZXMpIHsKKyAgICAgICAgICAgIC8v
IGF1dG8gcmVwZWF0IGluIGEgc3ViZ3JpZCBzcGVjaWZpZXMgdGhlIGxpbmUgbmFtZXMgdGhhdCBz
aG91bGQgYmUgcmVwZWF0ZWQsIG5vdAorICAgICAgICAgICAgLy8gdGhlIHRyYWNrcy4KKyAgICAg
ICAgICAgIG1fYXV0b1JlcGVhdExpbmVzID0gKHRvdGFsTGluZXMgLSBuYW1lZExpbmVzKSAvIG1f
YXV0b1JlcGVhdFRyYWNrTGlzdExlbmd0aDsKKyAgICAgICAgICAgIG1fYXV0b1JlcGVhdExpbmVz
ICo9IG1fYXV0b1JlcGVhdFRyYWNrTGlzdExlbmd0aDsKKyAgICAgICAgfQorICAgIH0KIH0KIAot
Ym9vbCBOYW1lZExpbmVDb2xsZWN0aW9uOjpoYXNOYW1lZExpbmVzKCkgY29uc3QKK3ZvaWQgTmFt
ZWRMaW5lQ29sbGVjdGlvbkJhc2U6OmVuc3VyZUxvY2FsU3RvcmFnZSgpCiB7Ci0gICAgcmV0dXJu
IGhhc0V4cGxpY2l0TmFtZWRMaW5lcygpIHx8IG1faW1wbGljaXROYW1lZExpbmVzSW5kZXhlczsK
LX0KKyAgICBpZiAobV9pbXBsaWNpdE5hbWVkTGluZXNJbmRleGVzICE9ICZtX2luaGVyaXRlZE5h
bWVkTGluZXNJbmRleGVzKSB7CisgICAgICAgIGlmIChtX2ltcGxpY2l0TmFtZWRMaW5lc0luZGV4
ZXMpCisgICAgICAgICAgICBtX2luaGVyaXRlZE5hbWVkTGluZXNJbmRleGVzLmFwcGVuZFZlY3Rv
cigqbV9pbXBsaWNpdE5hbWVkTGluZXNJbmRleGVzKTsKKyAgICAgICAgbV9pbXBsaWNpdE5hbWVk
TGluZXNJbmRleGVzID0gJm1faW5oZXJpdGVkTmFtZWRMaW5lc0luZGV4ZXM7CisgICAgfQorfTsK
IAotYm9vbCBOYW1lZExpbmVDb2xsZWN0aW9uOjpjb250YWlucyh1bnNpZ25lZCBsaW5lKSBjb25z
dAorYm9vbCBOYW1lZExpbmVDb2xsZWN0aW9uQmFzZTo6Y29udGFpbnModW5zaWduZWQgbGluZSkg
Y29uc3QKIHsKLSAgICBBU1NFUlQoaGFzTmFtZWRMaW5lcygpKTsKLQogICAgIGlmIChsaW5lID4g
bV9sYXN0TGluZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMDEsMTIgKzE4OSwyMCBA
QCBib29sIE5hbWVkTGluZUNvbGxlY3Rpb246OmNvbnRhaW5zKHVuc2lnbmVkIGxpbmUpIGNvbnN0
CiAgICAgICAgIHJldHVybiBpbmRleGVzICYmIGluZGV4ZXMtPmZpbmQobGluZSkgIT0gbm90Rm91
bmQ7CiAgICAgfTsKIAotICAgIGlmIChjb250YWlucyhtX2ltcGxpY2l0TmFtZWRMaW5lc0luZGV4
ZXMsIGxpbmUpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgIGlmICghbV9hdXRvUmVwZWF0
VHJhY2tMaXN0TGVuZ3RoIHx8IGxpbmUgPCBtX2luc2VydGlvblBvaW50KQogICAgICAgICByZXR1
cm4gY29udGFpbnMobV9uYW1lZExpbmVzSW5kZXhlcywgbGluZSk7CiAKKyAgICBpZiAobV9zdWJn
cmlkKSB7CisgICAgICAgIGlmIChsaW5lID49IG1faW5zZXJ0aW9uUG9pbnQgKyBtX2F1dG9SZXBl
YXRMaW5lcykKKyAgICAgICAgICAgIHJldHVybiBjb250YWlucyhtX25hbWVkTGluZXNJbmRleGVz
LCBsaW5lIC0gbV9hdXRvUmVwZWF0TGluZXMpOworCisgICAgICAgIGlmICghbV9hdXRvUmVwZWF0
TGluZXMpCisgICAgICAgICAgICByZXR1cm4gY29udGFpbnMobV9uYW1lZExpbmVzSW5kZXhlcywg
bGluZSk7CisKKyAgICAgICAgdW5zaWduZWQgYXV0b1JlcGVhdEluZGV4SW5GaXJzdFJlcGV0aXRp
b24gPSAobGluZSAtIG1faW5zZXJ0aW9uUG9pbnQpICUgbV9hdXRvUmVwZWF0VHJhY2tMaXN0TGVu
Z3RoOworICAgICAgICByZXR1cm4gY29udGFpbnMobV9hdXRvUmVwZWF0TmFtZWRMaW5lc0luZGV4
ZXMsIGF1dG9SZXBlYXRJbmRleEluRmlyc3RSZXBldGl0aW9uKTsKKyAgICB9CisKICAgICBBU1NF
UlQobV9hdXRvUmVwZWF0VG90YWxUcmFja3MpOwogCiAgICAgaWYgKGxpbmUgPiBtX2luc2VydGlv
blBvaW50ICsgbV9hdXRvUmVwZWF0VG90YWxUcmFja3MpCkBAIC0xMjQsMTMgKzIyMCwxMTYgQEAg
Ym9vbCBOYW1lZExpbmVDb2xsZWN0aW9uOjpjb250YWlucyh1bnNpZ25lZCBsaW5lKSBjb25zdAog
ICAgIHJldHVybiBjb250YWlucyhtX2F1dG9SZXBlYXROYW1lZExpbmVzSW5kZXhlcywgYXV0b1Jl
cGVhdEluZGV4SW5GaXJzdFJlcGV0aXRpb24pOwogfQogCi11bnNpZ25lZCBOYW1lZExpbmVDb2xs
ZWN0aW9uOjpmaXJzdEV4cGxpY2l0UG9zaXRpb24oKSBjb25zdAorTmFtZWRMaW5lQ29sbGVjdGlv
bjo6TmFtZWRMaW5lQ29sbGVjdGlvbihjb25zdCBSZW5kZXJHcmlkJiBpbml0aWFsR3JpZCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUsIGJvb2wgbmFtZUlzQXJlYU5h
bWUpCisgICAgOiBOYW1lZExpbmVDb2xsZWN0aW9uQmFzZShpbml0aWFsR3JpZCwgbmFtZSwgc2lk
ZSwgbmFtZUlzQXJlYU5hbWUpCit7CisgICAgaWYgKCFtX2xhc3RMaW5lKQorICAgICAgICByZXR1
cm47CisgICAgR3JpZFNwYW4gc2VhcmNoID0gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdy
aWRTcGFuKDAsIG1fbGFzdExpbmUpOworICAgIEdyaWRQb3NpdGlvblNpZGUgY3VycmVudFNpZGUg
PSBzaWRlOworICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24gPSBkaXJlY3Rp
b25Gcm9tU2lkZShjdXJyZW50U2lkZSk7CisgICAgYm9vbCBpbml0aWFsRmxpcHBlZCA9IEdyaWRM
YXlvdXRGdW5jdGlvbnM6OmlzRmxpcHBlZERpcmVjdGlvbihpbml0aWFsR3JpZCwgZGlyZWN0aW9u
KTsKKyAgICBjb25zdCBSZW5kZXJHcmlkKiBncmlkID0gJmluaXRpYWxHcmlkOworICAgIGJvb2wg
aXNSb3dBeGlzID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnM7CisKKyAgICAvLyBJZiB3ZSdyZSBh
IHN1YmdyaWQsIHdlIHdhbnQgdG8gaW5oZXJpdCB0aGUgbGluZSBuYW1lcyBmcm9tIGFueSBhbmNl
c3RvciBncmlkcy4KKyAgICB3aGlsZSAoaXNSb3dBeGlzID8gZ3JpZC0+aXNTdWJncmlkQ29sdW1u
cygpIDogZ3JpZC0+aXNTdWJncmlkUm93cygpKSB7CisgICAgICAgIGNvbnN0IFJlbmRlckdyaWQq
IHBhcmVudCA9IGRvd25jYXN0PFJlbmRlckdyaWQ+KGdyaWQtPnBhcmVudCgpKTsKKworICAgICAg
ICAvLyBUcmFuc2xhdGUgb3VyIGV4cGxpY2l0IGdyaWQgc2V0IG9mIGxpbmVzIGludG8gdGhlIGNv
b3JkaW5hdGUgc3BhY2Ugb2YgdGhlCisgICAgICAgIC8vIHBhcmVudCBncmlkLCBhZGp1c3Rpbmcg
ZGlyZWN0aW9uL3NpZGUgYXMgbmVlZGVkLgorICAgICAgICBpZiAoZ3JpZC0+aXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSAhPSBwYXJlbnQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKKyAg
ICAgICAgICAgIGlzUm93QXhpcyA9ICFpc1Jvd0F4aXM7CisgICAgICAgICAgICBjdXJyZW50U2lk
ZSA9IHRyYW5zcG9zZWRTaWRlKGN1cnJlbnRTaWRlKTsKKyAgICAgICAgfQorICAgICAgICBkaXJl
Y3Rpb24gPSBkaXJlY3Rpb25Gcm9tU2lkZShjdXJyZW50U2lkZSk7CisKKyAgICAgICAgR3JpZFNw
YW4gc3BhbiA9IHBhcmVudC0+Z3JpZFNwYW5Gb3JDaGlsZCgqZ3JpZCwgZGlyZWN0aW9uKTsKKyAg
ICAgICAgc2VhcmNoLnRyYW5zbGF0ZVRvKHNwYW4sIEdyaWRMYXlvdXRGdW5jdGlvbnM6OmlzU3Vi
Z3JpZFJldmVyc2VkRGlyZWN0aW9uKCpwYXJlbnQsIGRpcmVjdGlvbiwgKmdyaWQpKTsKKworICAg
ICAgICBhdXRvIGNvbnZlcnRUb0luaXRpYWxTcGFjZSA9IFsmXSh1bnNpZ25lZCBpKSB7CisgICAg
ICAgICAgICBpIC09IHNlYXJjaC5zdGFydExpbmUoKTsKKyAgICAgICAgICAgIGlmIChHcmlkTGF5
b3V0RnVuY3Rpb25zOjppc0ZsaXBwZWREaXJlY3Rpb24oKnBhcmVudCwgZGlyZWN0aW9uKSAhPSBp
bml0aWFsRmxpcHBlZCkKKyAgICAgICAgICAgICAgICBpID0gbV9sYXN0TGluZSAtIGk7CisgICAg
ICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfTsKKworICAgICAgICAvLyBDcmVhdGUgYSBsaW5l
IGNvbGxlY3Rpb24gZm9yIHRoZSBwYXJlbnQgZ3JpZCwgYW5kIGNoZWNrIHRvIHNlZSBpZiBhbnkg
b2Ygb3VyIGxpbmVzCisgICAgICAgIC8vIGFyZSBwcmVzZW50LiBJZiB3ZSBmaW5kIGFueSwgYWRk
IHRoZW0gdG8gYSBsb2NhbGx5IHN0b3JlZCBsaW5lIG5hbWUgbGlzdCAod2l0aCBudW1iZXJpbmcK
KyAgICAgICAgLy8gcmVsYXRpdmUgdG8gb3VyIGdyaWQpLgorICAgICAgICBib29sIGFwcGVuZGVk
ID0gZmFsc2U7CisgICAgICAgIE5hbWVkTGluZUNvbGxlY3Rpb25CYXNlIHBhcmVudENvbGxlY3Rp
b24oKnBhcmVudCwgbmFtZSwgY3VycmVudFNpZGUsIG5hbWVJc0FyZWFOYW1lKTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gc2VhcmNoLnN0YXJ0TGluZSgpOyBpIDw9IHNlYXJjaC5lbmRMaW5l
KCk7IGkrKykgeworICAgICAgICAgICAgaWYgKHBhcmVudENvbGxlY3Rpb24uY29udGFpbnMoaSkp
IHsKKyAgICAgICAgICAgICAgICBlbnN1cmVMb2NhbFN0b3JhZ2UoKTsKKyAgICAgICAgICAgICAg
ICBhcHBlbmRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgbV9pbmhlcml0ZWROYW1lZExpbmVz
SW5kZXhlcy5hcHBlbmQoY29udmVydFRvSW5pdGlhbFNwYWNlKGkpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGlmIChuYW1lSXNBcmVhTmFtZSkgeworICAgICAgICAgICAg
Ly8gV2Ugbm93IG5lZWQgdG8gbG9vayBhdCB0aGUgZ3JpZCBhcmVhcyBmb3IgdGhlIHBhcmVudCAo
bm90IHRoZSBpbXBsaWNpdAorICAgICAgICAgICAgLy8gbGluZXMgZm9yIHRoZSBwYXJlbnQhKSwg
YW5kIGluc2VydCB0aGUgb25lcyB0aGF0IGludGVyc2VjdCBhcyBpbXBsaWNpdAorICAgICAgICAg
ICAgLy8gbGluZXMgKGJ1dCBpbiBvdXIgc2luZ2xlIGNvbWJpbmVkIGxpc3QpLgorICAgICAgICAg
ICAgaW50IGltcGxpY2l0TGluZSA9IGNsYW1wZWRJbXBsaWNpdExpbmVGb3JBcmVhKHBhcmVudC0+
c3R5bGUoKSwgbmFtZSwgc2VhcmNoLnN0YXJ0TGluZSgpLCBzZWFyY2guZW5kTGluZSgpLCBpc1Jv
d0F4aXMsIGlzU3RhcnRTaWRlKHNpZGUpKTsKKyAgICAgICAgICAgIGlmIChpbXBsaWNpdExpbmUg
IT0gLTEpIHsKKyAgICAgICAgICAgICAgICBlbnN1cmVMb2NhbFN0b3JhZ2UoKTsKKyAgICAgICAg
ICAgICAgICBhcHBlbmRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgbV9pbmhlcml0ZWROYW1l
ZExpbmVzSW5kZXhlcy5hcHBlbmQoY29udmVydFRvSW5pdGlhbFNwYWNlKGltcGxpY2l0TGluZSkp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGFwcGVuZGVkKSB7Cisg
ICAgICAgICAgICAvLyBSZS1zb3J0IG1faW5oZXJpdGVkTmFtZWRMaW5lc0luZGV4ZXMKKyAgICAg
ICAgICAgIHN0ZDo6c29ydChtX2luaGVyaXRlZE5hbWVkTGluZXNJbmRleGVzLmJlZ2luKCksIG1f
aW5oZXJpdGVkTmFtZWRMaW5lc0luZGV4ZXMuZW5kKCkpOworICAgICAgICB9CisKKyAgICAgICAg
Z3JpZCA9IHBhcmVudDsKKyAgICB9Cit9CisKK2Jvb2wgTmFtZWRMaW5lQ29sbGVjdGlvbjo6aGFz
RXhwbGljaXROYW1lZExpbmVzKCkgY29uc3QKK3sKKyAgICBpZiAobV9uYW1lZExpbmVzSW5kZXhl
cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIG1fYXV0b1JlcGVhdE5hbWVkTGlu
ZXNJbmRleGVzICYmICghbV9zdWJncmlkIHx8IG1fYXV0b1JlcGVhdExpbmVzKTsKK30KKworYm9v
bCBOYW1lZExpbmVDb2xsZWN0aW9uOjpoYXNOYW1lZExpbmVzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gaGFzRXhwbGljaXROYW1lZExpbmVzKCkgfHwgbV9pbXBsaWNpdE5hbWVkTGluZXNJbmRleGVz
OworfQorCit1bnNpZ25lZCBOYW1lZExpbmVDb2xsZWN0aW9uOjpsYXN0TGluZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fbGFzdExpbmU7Cit9CisKK2Jvb2wgTmFtZWRMaW5lQ29sbGVjdGlvbjo6
Y29udGFpbnModW5zaWduZWQgbGluZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoaGFzTmFtZWRMaW5l
cygpKTsKKworICAgIGlmIChsaW5lID4gbV9sYXN0TGluZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgYXV0byBjb250YWlucyA9IFtdKGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4qIGluZGV4
ZXMsIHVuc2lnbmVkIGxpbmUpIHsKKyAgICAgICAgcmV0dXJuIGluZGV4ZXMgJiYgaW5kZXhlcy0+
ZmluZChsaW5lKSAhPSBub3RGb3VuZDsKKyAgICB9OworCisgICAgaWYgKGNvbnRhaW5zKG1faW1w
bGljaXROYW1lZExpbmVzSW5kZXhlcywgbGluZSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgcmV0dXJuIE5hbWVkTGluZUNvbGxlY3Rpb25CYXNlOjpjb250YWlucyhsaW5lKTsKK30KKwor
aW50IE5hbWVkTGluZUNvbGxlY3Rpb246OmZpcnN0RXhwbGljaXRQb3NpdGlvbigpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGhhc0V4cGxpY2l0TmFtZWRMaW5lcygpKTsKICAgICB1bnNpZ25lZCBmaXJz
dExpbmUgPSAwOworICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRzID0gbV9zdWJncmlkID8gbV9hdXRv
UmVwZWF0TGluZXMgOiBtX2F1dG9SZXBlYXRUb3RhbFRyYWNrczsKIAogICAgIC8vIElmIHRoZXJl
IGlzIG5vIGF1dG8gcmVwZWF0KCksIHRoZXJlIG11c3QgYmUgc29tZSBuYW1lZCBsaW5lIG91dHNp
ZGUsIHJldHVybiB0aGUgMXN0IG9uZS4gQWxzbyByZXR1cm4gaXQgaWYgaXQgcHJlY2VkZXMgdGhl
IGF1dG8tcmVwZWF0KCkuCi0gICAgaWYgKCFtX2F1dG9SZXBlYXRUcmFja0xpc3RMZW5ndGggfHwg
KG1fbmFtZWRMaW5lc0luZGV4ZXMgJiYgbV9uYW1lZExpbmVzSW5kZXhlcy0+YXQoZmlyc3RMaW5l
KSA8PSBtX2luc2VydGlvblBvaW50KSkKKyAgICBpZiAoIWF1dG9SZXBlYXRzIHx8IChtX25hbWVk
TGluZXNJbmRleGVzICYmIG1fbmFtZWRMaW5lc0luZGV4ZXMtPmF0KGZpcnN0TGluZSkgPD0gbV9p
bnNlcnRpb25Qb2ludCkpCiAgICAgICAgIHJldHVybiBtX25hbWVkTGluZXNJbmRleGVzLT5hdChm
aXJzdExpbmUpOwogCiAgICAgLy8gUmV0dXJuIHRoZSAxc3QgbmFtZWQgbGluZSBpbnNpZGUgdGhl
IGF1dG8gcmVwZWF0KCksIGlmIGFueS4KQEAgLTEzOCwxMCArMzM3LDEyIEBAIHVuc2lnbmVkIE5h
bWVkTGluZUNvbGxlY3Rpb246OmZpcnN0RXhwbGljaXRQb3NpdGlvbigpIGNvbnN0CiAgICAgICAg
IHJldHVybiBtX2F1dG9SZXBlYXROYW1lZExpbmVzSW5kZXhlcy0+YXQoZmlyc3RMaW5lKSArIG1f
aW5zZXJ0aW9uUG9pbnQ7CiAKICAgICAvLyBUaGUgMXN0IG5hbWVkIGxpbmUgbXVzdCBiZSBhZnRl
ciB0aGUgYXV0byByZXBlYXQoKS4KLSAgICByZXR1cm4gbV9uYW1lZExpbmVzSW5kZXhlcy0+YXQo
Zmlyc3RMaW5lKSArIG1fYXV0b1JlcGVhdFRvdGFsVHJhY2tzIC0gMTsKKyAgICBpZiAobV9zdWJn
cmlkKQorICAgICAgICByZXR1cm4gbV9uYW1lZExpbmVzSW5kZXhlcy0+YXQoZmlyc3RMaW5lKSAr
IGF1dG9SZXBlYXRzOworICAgIHJldHVybiBtX25hbWVkTGluZXNJbmRleGVzLT5hdChmaXJzdExp
bmUpICsgYXV0b1JlcGVhdHMgLSAxOwogfQogCi11bnNpZ25lZCBOYW1lZExpbmVDb2xsZWN0aW9u
OjpmaXJzdFBvc2l0aW9uKCkgY29uc3QKK2ludCBOYW1lZExpbmVDb2xsZWN0aW9uOjpmaXJzdFBv
c2l0aW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzTmFtZWRMaW5lcygpKTsKICAgICB1bnNp
Z25lZCBmaXJzdExpbmUgPSAwOwpAQCAtMTQ5LDcgKzM1MCwxOSBAQCB1bnNpZ25lZCBOYW1lZExp
bmVDb2xsZWN0aW9uOjpmaXJzdFBvc2l0aW9uKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZpcnN0
RXhwbGljaXRQb3NpdGlvbigpOwogICAgIGlmICghaGFzRXhwbGljaXROYW1lZExpbmVzKCkpCiAg
ICAgICAgIHJldHVybiBtX2ltcGxpY2l0TmFtZWRMaW5lc0luZGV4ZXMtPmF0KGZpcnN0TGluZSk7
Ci0gICAgcmV0dXJuIHN0ZDo6bWluKGZpcnN0RXhwbGljaXRQb3NpdGlvbigpLCBtX2ltcGxpY2l0
TmFtZWRMaW5lc0luZGV4ZXMtPmF0KGZpcnN0TGluZSkpOworICAgIHJldHVybiBzdGQ6Om1pbjxp
bnQ+KGZpcnN0RXhwbGljaXRQb3NpdGlvbigpLCBtX2ltcGxpY2l0TmFtZWRMaW5lc0luZGV4ZXMt
PmF0KGZpcnN0TGluZSkpOworfQorCisvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWdy
aWQtMi8jaW5kZWZpbml0ZS1ncmlkLXNwYW4KK3N0YXRpYyBib29sIGlzSW5kZWZpbml0ZVNwYW4o
R3JpZFBvc2l0aW9uJiBpbml0aWFsUG9zaXRpb24sIEdyaWRQb3NpdGlvbiYgZmluYWxQb3NpdGlv
bikKK3sKKyAgICBpZiAoIWluaXRpYWxQb3NpdGlvbi5pc0F1dG8oKSAmJiAhZmluYWxQb3NpdGlv
bi5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGluaXRpYWxQb3Np
dGlvbi5pc1NwYW4oKSB8fCBmaW5hbFBvc2l0aW9uLmlzU3BhbigpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgYWRqdXN0R3JpZFBv
c2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBHcmlkUG9zaXRpb24mIGluaXRpYWxQb3NpdGlvbiwgR3Jp
ZFBvc2l0aW9uJiBmaW5hbFBvc2l0aW9uKQpAQCAtMTY4LDI0ICszODEsNTAgQEAgc3RhdGljIHZv
aWQgYWRqdXN0R3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVt
LCBHcmlkVHJhY2tTaXoKICAgICAgICAgZmluYWxQb3NpdGlvbi5zZXRTcGFuUG9zaXRpb24oMSwg
U3RyaW5nKCkpOwogICAgIGlmIChmaW5hbFBvc2l0aW9uLmlzQXV0bygpICYmIGluaXRpYWxQb3Np
dGlvbi5pc1NwYW4oKSAmJiAhaW5pdGlhbFBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwo
KSkKICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnNldFNwYW5Qb3NpdGlvbigxLCBTdHJpbmcoKSk7
Ci19CiAKLXVuc2lnbmVkIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1u
Q291bnQoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgdW5zaWduZWQgYXV0
b1JlcGVhdFRyYWNrc0NvdW50KQotewotICAgIHJldHVybiBzdGQ6Om1pbjx1bnNpZ25lZD4oc3Rk
OjptYXgoZ3JpZENvbnRhaW5lclN0eWxlLmdyaWRDb2x1bW5zKCkuc2l6ZSgpICsgYXV0b1JlcGVh
dFRyYWNrc0NvdW50LCBncmlkQ29udGFpbmVyU3R5bGUubmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50
KCkpLCBHcmlkUG9zaXRpb246Om1heCgpKTsKKyAgICBpZiAoaXNJbmRlZmluaXRlU3Bhbihpbml0
aWFsUG9zaXRpb24sIGZpbmFsUG9zaXRpb24pICYmIGlzPFJlbmRlckdyaWQ+KGdyaWRJdGVtKSAm
JiBkb3duY2FzdDxSZW5kZXJHcmlkPihncmlkSXRlbSkuaXNTdWJncmlkKGRpcmVjdGlvbikpIHsK
KyAgICAgICAgLy8gSW5kZWZpbml0ZSBzcGFuIGZvciBhbiBpdGVtIHRoYXQgaXMgc3ViZ3JpZGRl
ZCBpbiB0aGlzIGF4aXMuCisgICAgICAgIGludCBsaW5lQ291bnQgPSBkaXJlY3Rpb24gPT0gRm9y
Q29sdW1ucyA/IGdyaWRJdGVtLnN0eWxlKCkub3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCku
c2l6ZSgpIDogZ3JpZEl0ZW0uc3R5bGUoKS5vcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoKS5zaXpl
KCk7CisKKyAgICAgICAgaWYgKGluaXRpYWxQb3NpdGlvbi5pc0F1dG8oKSkgeworICAgICAgICAg
ICAgLy8gU2V0IGluaXRpYWwgcG9zaXRpb24gdG8gc3BhbiA8bGluZSBuYW1lcyAtIDE+CisgICAg
ICAgICAgICBpbml0aWFsUG9zaXRpb24uc2V0U3BhblBvc2l0aW9uKHN0ZDo6bWF4KDEsIGxpbmVD
b3VudCAtIDEpLCAiIik7CisgICAgICAgICAgICBpZiAoZmluYWxQb3NpdGlvbi5pc1NwYW4oKSkK
KyAgICAgICAgICAgICAgICBmaW5hbFBvc2l0aW9uLnNldEF1dG9Qb3NpdGlvbigpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgLy8gU2V0IGZpbmFsIHBvc2l0aW9uIHRvIHNwYW4gPGxp
bmUgbmFtZXMgLSAxPgorICAgICAgICAgICAgZmluYWxQb3NpdGlvbi5zZXRTcGFuUG9zaXRpb24o
c3RkOjptYXgoMSwgbGluZUNvdW50IC0gMSksICIiKTsKKyAgICAgICAgICAgIGlmIChpbml0aWFs
UG9zaXRpb24uaXNTcGFuKCkpCisgICAgICAgICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnNldEF1
dG9Qb3NpdGlvbigpOworICAgICAgICB9CisgICAgfQogfQogCi11bnNpZ25lZCBHcmlkUG9zaXRp
b25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KGNvbnN0IFJlbmRlclN0eWxlJiBncmlk
Q29udGFpbmVyU3R5bGUsIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3VudCkKK3Vuc2lnbmVk
IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQoY29uc3QgUmVu
ZGVyR3JpZCYgZ3JpZENvbnRhaW5lcikKIHsKLSAgICByZXR1cm4gc3RkOjptaW48dW5zaWduZWQ+
KHN0ZDo6bWF4KGdyaWRDb250YWluZXJTdHlsZS5ncmlkUm93cygpLnNpemUoKSArIGF1dG9SZXBl
YXRUcmFja3NDb3VudCwgZ3JpZENvbnRhaW5lclN0eWxlLm5hbWVkR3JpZEFyZWFSb3dDb3VudCgp
KSwgR3JpZFBvc2l0aW9uOjptYXgoKSk7CisgICAgYm9vbCBzcGVjaWZpZWRTdWJncmlkID0gZ3Jp
ZENvbnRhaW5lci5zdHlsZSgpLmdyaWRTdWJncmlkQ29sdW1ucygpOworICAgIGlmIChzcGVjaWZp
ZWRTdWJncmlkICYmIGdyaWRDb250YWluZXIuaXNTdWJncmlkQ29sdW1ucygpKSB7CisgICAgICAg
IGNvbnN0IFJlbmRlckdyaWQmIHBhcmVudCA9ICpkb3duY2FzdDxSZW5kZXJHcmlkPihncmlkQ29u
dGFpbmVyLnBhcmVudCgpKTsKKyAgICAgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVj
dGlvbiA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKHBh
cmVudCwgZ3JpZENvbnRhaW5lciwgRm9yQ29sdW1ucyk7CisgICAgICAgIHJldHVybiBwYXJlbnQu
Z3JpZFNwYW5Gb3JDaGlsZChncmlkQ29udGFpbmVyLCBkaXJlY3Rpb24pLmludGVnZXJTcGFuKCk7
CisgICAgfQorICAgIGF1dG8gc3BlY2lmaWVkQ29sdW1ucyA9IHNwZWNpZmllZFN1YmdyaWQgPyAw
IDogZ3JpZENvbnRhaW5lci5zdHlsZSgpLmdyaWRDb2x1bW5zKCkuc2l6ZSgpOworICAgIHJldHVy
biBzdGQ6Om1pbjx1bnNpZ25lZD4oc3RkOjptYXgoc3BlY2lmaWVkQ29sdW1ucyArIGdyaWRDb250
YWluZXIuYXV0b1JlcGVhdENvdW50Rm9yRGlyZWN0aW9uKEZvckNvbHVtbnMpLCBncmlkQ29udGFp
bmVyLnN0eWxlKCkubmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KCkpLCBHcmlkUG9zaXRpb246Om1h
eCgpKTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGNvbnN0
IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIEdyaWRQb3NpdGlvblNpZGUgc2lkZSwg
dW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KQordW5zaWduZWQgR3JpZFBvc2l0aW9uc1Jl
c29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudChjb25zdCBSZW5kZXJHcmlkJiBncmlkQ29udGFp
bmVyKQogewotICAgIHJldHVybiBpc0NvbHVtblNpZGUoc2lkZSkgPyBHcmlkUG9zaXRpb25zUmVz
b2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KGdyaWRDb250YWluZXJTdHlsZSwgYXV0b1Jl
cGVhdFRyYWNrc0NvdW50KSA6IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkUm93
Q291bnQoZ3JpZENvbnRhaW5lclN0eWxlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgIGJv
b2wgc3BlY2lmaWVkU3ViZ3JpZCA9IGdyaWRDb250YWluZXIuc3R5bGUoKS5ncmlkU3ViZ3JpZFJv
d3MoKTsKKyAgICBpZiAoc3BlY2lmaWVkU3ViZ3JpZCAmJiBncmlkQ29udGFpbmVyLmlzU3ViZ3Jp
ZFJvd3MoKSkgeworICAgICAgICBjb25zdCBSZW5kZXJHcmlkJiBwYXJlbnQgPSAqZG93bmNhc3Q8
UmVuZGVyR3JpZD4oZ3JpZENvbnRhaW5lci5wYXJlbnQoKSk7CisgICAgICAgIEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBkaXJlY3Rpb24gPSBHcmlkTGF5b3V0RnVuY3Rpb25zOjpmbG93QXdhcmVE
aXJlY3Rpb25Gb3JDaGlsZChwYXJlbnQsIGdyaWRDb250YWluZXIsIEZvclJvd3MpOworICAgICAg
ICByZXR1cm4gcGFyZW50LmdyaWRTcGFuRm9yQ2hpbGQoZ3JpZENvbnRhaW5lciwgZGlyZWN0aW9u
KS5pbnRlZ2VyU3BhbigpOworICAgIH0KKyAgICBhdXRvIHNwZWNpZmllZFJvd3MgPSBzcGVjaWZp
ZWRTdWJncmlkID8gMCA6IGdyaWRDb250YWluZXIuc3R5bGUoKS5ncmlkUm93cygpLnNpemUoKTsK
KyAgICByZXR1cm4gc3RkOjptaW48dW5zaWduZWQ+KHN0ZDo6bWF4KHNwZWNpZmllZFJvd3MgKyBn
cmlkQ29udGFpbmVyLmF1dG9SZXBlYXRDb3VudEZvckRpcmVjdGlvbihGb3JSb3dzKSwgZ3JpZENv
bnRhaW5lci5zdHlsZSgpLm5hbWVkR3JpZEFyZWFSb3dDb3VudCgpKSwgR3JpZFBvc2l0aW9uOjpt
YXgoKSk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBsb29rQWhlYWRGb3JOYW1lZEdyaWRMaW5lKGlu
dCBzdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZMaW5lcywgdW5zaWduZWQgZ3JpZExhc3RMaW5lLCBO
YW1lZExpbmVDb2xsZWN0aW9uJiBsaW5lc0NvbGxlY3Rpb24pCitzdGF0aWMgdW5zaWduZWQgbG9v
a0FoZWFkRm9yTmFtZWRHcmlkTGluZShpbnQgc3RhcnQsIHVuc2lnbmVkIG51bWJlck9mTGluZXMs
IE5hbWVkTGluZUNvbGxlY3Rpb24mIGxpbmVzQ29sbGVjdGlvbikKIHsKICAgICBBU1NFUlQobnVt
YmVyT2ZMaW5lcyk7CiAKQEAgLTE5NCwxMCArNDMzLDEwIEBAIHN0YXRpYyB1bnNpZ25lZCBsb29r
QWhlYWRGb3JOYW1lZEdyaWRMaW5lKGludCBzdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZMaW5lcywg
dW5zCiAgICAgdW5zaWduZWQgZW5kID0gc3RkOjptYXgoc3RhcnQsIDApOwogCiAgICAgaWYgKCFs
aW5lc0NvbGxlY3Rpb24uaGFzTmFtZWRMaW5lcygpKQotICAgICAgICByZXR1cm4gc3RkOjptYXgo
ZW5kLCBncmlkTGFzdExpbmUgKyAxKSArIG51bWJlck9mTGluZXMgLSAxOworICAgICAgICByZXR1
cm4gc3RkOjptYXgoZW5kLCBsaW5lc0NvbGxlY3Rpb24ubGFzdExpbmUoKSArIDEpICsgbnVtYmVy
T2ZMaW5lcyAtIDE7CiAKICAgICBmb3IgKDsgbnVtYmVyT2ZMaW5lczsgKytlbmQpIHsKLSAgICAg
ICAgaWYgKGVuZCA+IGdyaWRMYXN0TGluZSB8fCBsaW5lc0NvbGxlY3Rpb24uY29udGFpbnMoZW5k
KSkKKyAgICAgICAgaWYgKGVuZCA+IGxpbmVzQ29sbGVjdGlvbi5sYXN0TGluZSgpIHx8IGxpbmVz
Q29sbGVjdGlvbi5jb250YWlucyhlbmQpKQogICAgICAgICAgICAgbnVtYmVyT2ZMaW5lcy0tOwog
ICAgIH0KIApAQCAtMjA1LDEzICs0NDQsMTQgQEAgc3RhdGljIHVuc2lnbmVkIGxvb2tBaGVhZEZv
ck5hbWVkR3JpZExpbmUoaW50IHN0YXJ0LCB1bnNpZ25lZCBudW1iZXJPZkxpbmVzLCB1bnMKICAg
ICByZXR1cm4gZW5kIC0gMTsKIH0KIAotc3RhdGljIGludCBsb29rQmFja0Zvck5hbWVkR3JpZExp
bmUoaW50IGVuZCwgdW5zaWduZWQgbnVtYmVyT2ZMaW5lcywgaW50IGdyaWRMYXN0TGluZSwgTmFt
ZWRMaW5lQ29sbGVjdGlvbiYgbGluZXNDb2xsZWN0aW9uKQorc3RhdGljIGludCBsb29rQmFja0Zv
ck5hbWVkR3JpZExpbmUoaW50IGVuZCwgdW5zaWduZWQgbnVtYmVyT2ZMaW5lcywgTmFtZWRMaW5l
Q29sbGVjdGlvbiYgbGluZXNDb2xsZWN0aW9uKQogewogICAgIEFTU0VSVChudW1iZXJPZkxpbmVz
KTsKIAorCiAgICAgLy8gT25seSBpbXBsaWNpdCBsaW5lcyBvbiB0aGUgc2VhcmNoIGRpcmVjdGlv
biBhcmUgYXNzdW1lZCB0byBoYXZlIHRoZSBnaXZlbiBuYW1lLCBzbyB3ZSBjYW4gc3RhcnQgdG8g
bG9vayBmcm9tIGxhc3QgbGluZS4KICAgICAvLyBTZWU6IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9y
Zy9jc3MtZ3JpZC8jZ3JpZC1wbGFjZW1lbnQtc3Bhbi1pbnQKLSAgICBpbnQgc3RhcnQgPSBzdGQ6
Om1pbihlbmQsIGdyaWRMYXN0TGluZSk7CisgICAgaW50IHN0YXJ0ID0gc3RkOjptaW48aW50Pihl
bmQsIGxpbmVzQ29sbGVjdGlvbi5sYXN0TGluZSgpKTsKIAogICAgIGlmICghbGluZXNDb2xsZWN0
aW9uLmhhc05hbWVkTGluZXMoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0YXJ0LCAtMSkg
LSBudW1iZXJPZkxpbmVzICsgMTsKQEAgLTIyNCw0NSArNDY0LDQzIEBAIHN0YXRpYyBpbnQgbG9v
a0JhY2tGb3JOYW1lZEdyaWRMaW5lKGludCBlbmQsIHVuc2lnbmVkIG51bWJlck9mTGluZXMsIGlu
dCBncmlkTGFzCiAgICAgcmV0dXJuIHN0YXJ0ICsgMTsKIH0KIAotc3RhdGljIGludCByZXNvbHZl
TmFtZWRHcmlkTGluZVBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29u
dGFpbmVyU3R5bGUsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNp
ZGUgc2lkZSwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KQorc3RhdGljIGludCByZXNv
bHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRlckdyaWQmIGdyaWRD
b250YWluZXIsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUg
c2lkZSkKIHsKICAgICBBU1NFUlQoIXBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwoKSk7
CiAKLSAgICB1bnNpZ25lZCBsYXN0TGluZSA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRD
b250YWluZXJTdHlsZSwgc2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKLSAgICBOYW1lZExp
bmVDb2xsZWN0aW9uIGxpbmVzQ29sbGVjdGlvbihncmlkQ29udGFpbmVyU3R5bGUsIHBvc2l0aW9u
Lm5hbWVkR3JpZExpbmUoKSwgZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RMaW5lLCBhdXRv
UmVwZWF0VHJhY2tzQ291bnQpOworICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gbGluZXNDb2xsZWN0
aW9uKGdyaWRDb250YWluZXIsIHBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKSwgc2lkZSk7CiAKICAg
ICBpZiAocG9zaXRpb24uaXNQb3NpdGl2ZSgpKQotICAgICAgICByZXR1cm4gbG9va0FoZWFkRm9y
TmFtZWRHcmlkTGluZSgwLCBzdGQ6OmFicyhwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSksIGxh
c3RMaW5lLCBsaW5lc0NvbGxlY3Rpb24pOwotICAgIHJldHVybiBsb29rQmFja0Zvck5hbWVkR3Jp
ZExpbmUobGFzdExpbmUsIHN0ZDo6YWJzKHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpKSwgbGFz
dExpbmUsIGxpbmVzQ29sbGVjdGlvbik7CisgICAgICAgIHJldHVybiBsb29rQWhlYWRGb3JOYW1l
ZEdyaWRMaW5lKDAsIHN0ZDo6YWJzKHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpKSwgbGluZXND
b2xsZWN0aW9uKTsKKyAgICByZXR1cm4gbG9va0JhY2tGb3JOYW1lZEdyaWRMaW5lKGxpbmVzQ29s
bGVjdGlvbi5sYXN0TGluZSgpLCBzdGQ6OmFicyhwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSks
IGxpbmVzQ29sbGVjdGlvbik7CiB9CiAKLXN0YXRpYyBHcmlkU3BhbiBkZWZpbml0ZUdyaWRTcGFu
V2l0aE5hbWVkTGluZVNwYW5BZ2FpbnN0T3Bwb3NpdGUoaW50IG9wcG9zaXRlTGluZSwgY29uc3Qg
R3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlLCB1bnNpZ25lZCBs
YXN0TGluZSwgTmFtZWRMaW5lQ29sbGVjdGlvbiYgbGluZXNDb2xsZWN0aW9uKQorc3RhdGljIEdy
aWRTcGFuIGRlZmluaXRlR3JpZFNwYW5XaXRoTmFtZWRMaW5lU3BhbkFnYWluc3RPcHBvc2l0ZShp
bnQgb3Bwb3NpdGVMaW5lLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRp
b25TaWRlIHNpZGUsIE5hbWVkTGluZUNvbGxlY3Rpb24mIGxpbmVzQ29sbGVjdGlvbikKIHsKICAg
ICBpbnQgc3RhcnQsIGVuZDsKICAgICBpZiAoc2lkZSA9PSBSb3dTdGFydFNpZGUgfHwgc2lkZSA9
PSBDb2x1bW5TdGFydFNpZGUpIHsKLSAgICAgICAgc3RhcnQgPSBsb29rQmFja0Zvck5hbWVkR3Jp
ZExpbmUob3Bwb3NpdGVMaW5lIC0gMSwgcG9zaXRpb24uc3BhblBvc2l0aW9uKCksIGxhc3RMaW5l
LCBsaW5lc0NvbGxlY3Rpb24pOworICAgICAgICBzdGFydCA9IGxvb2tCYWNrRm9yTmFtZWRHcmlk
TGluZShvcHBvc2l0ZUxpbmUgLSAxLCBwb3NpdGlvbi5zcGFuUG9zaXRpb24oKSwgbGluZXNDb2xs
ZWN0aW9uKTsKICAgICAgICAgZW5kID0gb3Bwb3NpdGVMaW5lOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIHN0YXJ0ID0gb3Bwb3NpdGVMaW5lOwotICAgICAgICBlbmQgPSBsb29rQWhlYWRGb3JOYW1l
ZEdyaWRMaW5lKG9wcG9zaXRlTGluZSArIDEsIHBvc2l0aW9uLnNwYW5Qb3NpdGlvbigpLCBsYXN0
TGluZSwgbGluZXNDb2xsZWN0aW9uKTsKKyAgICAgICAgZW5kID0gbG9va0FoZWFkRm9yTmFtZWRH
cmlkTGluZShvcHBvc2l0ZUxpbmUgKyAxLCBwb3NpdGlvbi5zcGFuUG9zaXRpb24oKSwgbGluZXND
b2xsZWN0aW9uKTsKICAgICB9CiAKICAgICByZXR1cm4gR3JpZFNwYW46OnVudHJhbnNsYXRlZERl
ZmluaXRlR3JpZFNwYW4oc3RhcnQsIGVuZCk7CiB9CiAKLXN0YXRpYyBHcmlkU3BhbiByZXNvbHZl
TmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3QgUmVuZGVy
U3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgaW50IG9wcG9zaXRlTGluZSwgY29uc3QgR3JpZFBv
c2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlLCB1bnNpZ25lZCBhdXRvUmVw
ZWF0VHJhY2tzQ291bnQpCitzdGF0aWMgR3JpZFNwYW4gcmVzb2x2ZU5hbWVkR3JpZExpbmVQb3Np
dGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWlu
ZXIsIGludCBvcHBvc2l0ZUxpbmUsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQ
b3NpdGlvblNpZGUgc2lkZSkKIHsKICAgICBBU1NFUlQocG9zaXRpb24uaXNTcGFuKCkpOwogICAg
IEFTU0VSVCghcG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLmlzTnVsbCgpKTsKICAgICAvLyBOZWdh
dGl2ZSBwb3NpdGlvbnMgYXJlIG5vdCBhbGxvd2VkIHBlciB0aGUgc3BlY2lmaWNhdGlvbiBhbmQg
c2hvdWxkIGhhdmUgYmVlbiBoYW5kbGVkIGR1cmluZyBwYXJzaW5nLgogICAgIEFTU0VSVChwb3Np
dGlvbi5zcGFuUG9zaXRpb24oKSA+IDApOwogCi0gICAgdW5zaWduZWQgbGFzdExpbmUgPSBleHBs
aWNpdEdyaWRTaXplRm9yU2lkZShncmlkQ29udGFpbmVyU3R5bGUsIHNpZGUsIGF1dG9SZXBlYXRU
cmFja3NDb3VudCk7Ci0gICAgTmFtZWRMaW5lQ29sbGVjdGlvbiBsaW5lc0NvbGxlY3Rpb24oZ3Jp
ZENvbnRhaW5lclN0eWxlLCBwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCksIGRpcmVjdGlvbkZyb21T
aWRlKHNpZGUpLCBsYXN0TGluZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKLSAgICByZXR1cm4g
ZGVmaW5pdGVHcmlkU3BhbldpdGhOYW1lZExpbmVTcGFuQWdhaW5zdE9wcG9zaXRlKG9wcG9zaXRl
TGluZSwgcG9zaXRpb24sIHNpZGUsIGxhc3RMaW5lLCBsaW5lc0NvbGxlY3Rpb24pOworICAgIE5h
bWVkTGluZUNvbGxlY3Rpb24gbGluZXNDb2xsZWN0aW9uKGdyaWRDb250YWluZXIsIHBvc2l0aW9u
Lm5hbWVkR3JpZExpbmUoKSwgc2lkZSk7CisgICAgcmV0dXJuIGRlZmluaXRlR3JpZFNwYW5XaXRo
TmFtZWRMaW5lU3BhbkFnYWluc3RPcHBvc2l0ZShvcHBvc2l0ZUxpbmUsIHBvc2l0aW9uLCBzaWRl
LCBsaW5lc0NvbGxlY3Rpb24pOwogfQogCi1zdGF0aWMgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQb3Np
dGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFp
bmVyU3R5bGUsIGludCBvcHBvc2l0ZUxpbmUsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24s
IEdyaWRQb3NpdGlvblNpZGUgc2lkZSwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KQor
c3RhdGljIEdyaWRTcGFuIHJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlv
bihjb25zdCBSZW5kZXJHcmlkJiBncmlkQ29udGFpbmVyLCBpbnQgb3Bwb3NpdGVMaW5lLCBjb25z
dCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpCiB7CiAgICAg
aWYgKHBvc2l0aW9uLmlzQXV0bygpKSB7CiAgICAgICAgIGlmIChpc1N0YXJ0U2lkZShzaWRlKSkK
QEAgLTI3NSw3ICs1MTMsNyBAQCBzdGF0aWMgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFn
YWluc3RPcHBvc2l0ZVBvc2l0aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBncgogCiAgICAgaWYgKCFw
b3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkpIHsKICAgICAgICAgLy8gc3BhbiAyICdj
JyAtPiB3ZSBuZWVkIHRvIGZpbmQgdGhlIGFwcHJvcHJpYXRlIGdyaWQgbGluZSBiZWZvcmUgLyBh
ZnRlciBvdXIgb3Bwb3NpdGUgcG9zaXRpb24uCi0gICAgICAgIHJldHVybiByZXNvbHZlTmFtZWRH
cmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oZ3JpZENvbnRhaW5lclN0eWxl
LCBvcHBvc2l0ZUxpbmUsIHBvc2l0aW9uLCBzaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwor
ICAgICAgICByZXR1cm4gcmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0
ZVBvc2l0aW9uKGdyaWRDb250YWluZXIsIG9wcG9zaXRlTGluZSwgcG9zaXRpb24sIHNpZGUpOwog
ICAgIH0KIAogICAgIC8vICdzcGFuIDEnIGlzIGNvbnRhaW5lZCBpbnNpZGUgYSBzaW5nbGUgZ3Jp
ZCB0cmFjayByZWdhcmRsZXNzIG9mIHRoZSBkaXJlY3Rpb24uCkBAIC0zMTUsMjEgKzU1MywyMSBA
QCB1bnNpZ25lZCBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnNwYW5TaXplRm9yQXV0b1BsYWNlZEl0
ZW0oY29uc3QgUmVuZGVyQm94JiBncmlkSQogICAgIHJldHVybiBwb3NpdGlvbi5zcGFuUG9zaXRp
b24oKTsKIH0KIAotc3RhdGljIGludCByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9z
aXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0Nv
dW50KQorc3RhdGljIGludCByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRl
ckdyaWQmIGdyaWRDb250YWluZXIsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQ
b3NpdGlvblNpZGUgc2lkZSkKIHsKICAgICBzd2l0Y2ggKHBvc2l0aW9uLnR5cGUoKSkgewogICAg
IGNhc2UgRXhwbGljaXRQb3NpdGlvbjogewogICAgICAgICBBU1NFUlQocG9zaXRpb24uaW50ZWdl
clBvc2l0aW9uKCkpOwogCiAgICAgICAgIGlmICghcG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLmlz
TnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25G
cm9tU3R5bGUoZ3JpZENvbnRhaW5lclN0eWxlLCBwb3NpdGlvbiwgc2lkZSwgYXV0b1JlcGVhdFRy
YWNrc0NvdW50KTsKKyAgICAgICAgICAgIHJldHVybiByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0
aW9uRnJvbVN0eWxlKGdyaWRDb250YWluZXIsIHBvc2l0aW9uLCBzaWRlKTsKIAogICAgICAgICAv
LyBIYW5kbGUgPGludGVnZXI+IGV4cGxpY2l0IHBvc2l0aW9uLgogICAgICAgICBpZiAocG9zaXRp
b24uaXNQb3NpdGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uLmludGVnZXJQb3Np
dGlvbigpIC0gMTsKIAogICAgICAgICB1bnNpZ25lZCByZXNvbHZlZFBvc2l0aW9uID0gc3RkOjph
YnMocG9zaXRpb24uaW50ZWdlclBvc2l0aW9uKCkpIC0gMTsKLSAgICAgICAgY29uc3QgdW5zaWdu
ZWQgZW5kT2ZUcmFjayA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXJTdHls
ZSwgc2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQg
ZW5kT2ZUcmFjayA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXIsIHNpZGUp
OwogCiAgICAgICAgIHJldHVybiBlbmRPZlRyYWNrIC0gcmVzb2x2ZWRQb3NpdGlvbjsKICAgICB9
CkBAIC0zNDEsMTkgKzU3OSwxOCBAQCBzdGF0aWMgaW50IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9t
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgYwogICAgICAgICBT
dHJpbmcgbmFtZWRHcmlkTGluZSA9IHBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKTsKICAgICAgICAg
QVNTRVJUKCFwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkpOwogCi0gICAgICAgIHVu
c2lnbmVkIGxhc3RMaW5lID0gZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5lclN0
eWxlLCBzaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwotICAgICAgICBOYW1lZExpbmVDb2xs
ZWN0aW9uIGltcGxpY2l0TGluZXMoZ3JpZENvbnRhaW5lclN0eWxlLCBpbXBsaWNpdE5hbWVkR3Jp
ZExpbmVGb3JTaWRlKG5hbWVkR3JpZExpbmUsIHNpZGUpLCBkaXJlY3Rpb25Gcm9tU2lkZShzaWRl
KSwgbGFzdExpbmUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgICAgIE5hbWVkTGluZUNv
bGxlY3Rpb24gaW1wbGljaXRMaW5lcyhncmlkQ29udGFpbmVyLCBuYW1lZEdyaWRMaW5lLCBzaWRl
LCB0cnVlKTsKICAgICAgICAgaWYgKGltcGxpY2l0TGluZXMuaGFzTmFtZWRMaW5lcygpKQogICAg
ICAgICAgICAgcmV0dXJuIGltcGxpY2l0TGluZXMuZmlyc3RQb3NpdGlvbigpOwogCiAgICAgICAg
IC8vIE90aGVyd2lzZSwgaWYgdGhlcmUgaXMgYSBuYW1lZCBsaW5lIHdpdGggdGhlIHNwZWNpZmll
ZCBuYW1lLCBjb250cmlidXRlcyB0aGUgZmlyc3Qgc3VjaCBsaW5lIHRvIHRoZSBncmlkCiAgICAg
ICAgIC8vIGl0ZW0ncyBwbGFjZW1lbnQuCi0gICAgICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gZXhw
bGljaXRMaW5lcyhncmlkQ29udGFpbmVyU3R5bGUsIG5hbWVkR3JpZExpbmUsIGRpcmVjdGlvbkZy
b21TaWRlKHNpZGUpLCBsYXN0TGluZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICAgICAg
TmFtZWRMaW5lQ29sbGVjdGlvbiBleHBsaWNpdExpbmVzKGdyaWRDb250YWluZXIsIG5hbWVkR3Jp
ZExpbmUsIHNpZGUpOwogICAgICAgICBpZiAoZXhwbGljaXRMaW5lcy5oYXNOYW1lZExpbmVzKCkp
CiAgICAgICAgICAgICByZXR1cm4gZXhwbGljaXRMaW5lcy5maXJzdFBvc2l0aW9uKCk7CiAKICAg
ICAgICAgLy8gSWYgbm9uZSBvZiB0aGUgYWJvdmUgd29ya3Mgc3BlY3MgbWFuZGF0ZSB0byBhc3N1
bWUgdGhhdCBhbGwgdGhlIGxpbmVzIGluIHRoZSBpbXBsaWNpdCBncmlkIGhhdmUgdGhpcyBuYW1l
LgotICAgICAgICByZXR1cm4gbGFzdExpbmUgKyAxOworICAgICAgICByZXR1cm4gZXhwbGljaXRH
cmlkU2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5lciwgc2lkZSkgKyAxOwogICAgIH0KICAgICBjYXNl
IEF1dG9Qb3NpdGlvbjoKICAgICBjYXNlIFNwYW5Qb3NpdGlvbjoKQEAgLTM2NSw4ICs2MDIsMTEg
QEAgc3RhdGljIGludCByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0
eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGMKICAgICByZXR1cm4gMDsKIH0KIAotR3JpZFNwYW4g
R3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25z
dCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCBjb25zdCBSZW5kZXJCb3gmIGdyaWRJ
dGVtLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25lZCBhdXRvUmVw
ZWF0VHJhY2tzQ291bnQpCitHcmlkU3BhbiBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVH
cmlkUG9zaXRpb25zRnJvbVN0eWxlKGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CisgICAgYXV0byogZ3JpZENvbnRhaW5lciA9
IGRvd25jYXN0PFJlbmRlckdyaWQ+KGdyaWRJdGVtLmNvbnRhaW5pbmdCbG9jaygpKTsKKyAgICBB
U1NFUlQoZ3JpZENvbnRhaW5lcik7CisKICAgICBHcmlkUG9zaXRpb24gaW5pdGlhbFBvc2l0aW9u
LCBmaW5hbFBvc2l0aW9uOwogICAgIGFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoZ3JpZEl0
ZW0sIGRpcmVjdGlvbiwgaW5pdGlhbFBvc2l0aW9uLCBmaW5hbFBvc2l0aW9uKTsKIApAQCAtMzc5
LDE4ICs2MTksMTggQEAgR3JpZFNwYW4gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3Jp
ZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYKIAogICAgIGlmIChpbml0aWFs
UG9zaXRpb24uc2hvdWxkQmVSZXNvbHZlZEFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKCkpIHsKICAg
ICAgICAgLy8gSW5mZXIgdGhlIHBvc2l0aW9uIGZyb20gdGhlIGZpbmFsIHBvc2l0aW9uICgnYXV0
byAvIDEnIG9yICdzcGFuIDIgLyAzJyBjYXNlKS4KLSAgICAgICAgYXV0byBlbmRMaW5lID0gcmVz
b2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShncmlkQ29udGFpbmVyU3R5bGUsIGZpbmFsUG9zaXRp
b24sIGZpbmFsU2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKLSAgICAgICAgcmV0dXJuIHJl
c29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihncmlkQ29udGFpbmVyU3R5
bGUsIGVuZExpbmUsIGluaXRpYWxQb3NpdGlvbiwgaW5pdGlhbFNpZGUsIGF1dG9SZXBlYXRUcmFj
a3NDb3VudCk7CisgICAgICAgIGF1dG8gZW5kTGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9t
U3R5bGUoKmdyaWRDb250YWluZXIsIGZpbmFsUG9zaXRpb24sIGZpbmFsU2lkZSk7CisgICAgICAg
IHJldHVybiByZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oKmdyaWRD
b250YWluZXIsIGVuZExpbmUsIGluaXRpYWxQb3NpdGlvbiwgaW5pdGlhbFNpZGUpOwogICAgIH0K
IAogICAgIGlmIChmaW5hbFBvc2l0aW9uLnNob3VsZEJlUmVzb2x2ZWRBZ2FpbnN0T3Bwb3NpdGVQ
b3NpdGlvbigpKSB7CiAgICAgICAgIC8vIEluZmVyIG91ciBwb3NpdGlvbiBmcm9tIHRoZSBpbml0
aWFsIHBvc2l0aW9uICgnMSAvIGF1dG8nIG9yICczIC8gc3BhbiAyJyBjYXNlKS4KLSAgICAgICAg
YXV0byBzdGFydExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGdyaWRDb250YWlu
ZXJTdHlsZSwgaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFsU2lkZSwgYXV0b1JlcGVhdFRyYWNrc0Nv
dW50KTsKLSAgICAgICAgcmV0dXJuIHJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQ
b3NpdGlvbihncmlkQ29udGFpbmVyU3R5bGUsIHN0YXJ0TGluZSwgZmluYWxQb3NpdGlvbiwgZmlu
YWxTaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgICAgICBhdXRvIHN0YXJ0TGluZSA9
IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoKmdyaWRDb250YWluZXIsIGluaXRpYWxQb3Np
dGlvbiwgaW5pdGlhbFNpZGUpOworICAgICAgICByZXR1cm4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFn
YWluc3RPcHBvc2l0ZVBvc2l0aW9uKCpncmlkQ29udGFpbmVyLCBzdGFydExpbmUsIGZpbmFsUG9z
aXRpb24sIGZpbmFsU2lkZSk7CiAgICAgfQogCi0gICAgaW50IHN0YXJ0TGluZSA9IHJlc29sdmVH
cmlkUG9zaXRpb25Gcm9tU3R5bGUoZ3JpZENvbnRhaW5lclN0eWxlLCBpbml0aWFsUG9zaXRpb24s
IGluaXRpYWxTaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwotICAgIGludCBlbmRMaW5lID0g
cmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShncmlkQ29udGFpbmVyU3R5bGUsIGZpbmFsUG9z
aXRpb24sIGZpbmFsU2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICBpbnQgc3RhcnRM
aW5lID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZSgqZ3JpZENvbnRhaW5lciwgaW5pdGlh
bFBvc2l0aW9uLCBpbml0aWFsU2lkZSk7CisgICAgaW50IGVuZExpbmUgPSByZXNvbHZlR3JpZFBv
c2l0aW9uRnJvbVN0eWxlKCpncmlkQ29udGFpbmVyLCBmaW5hbFBvc2l0aW9uLCBmaW5hbFNpZGUp
OwogCiAgICAgaWYgKHN0YXJ0TGluZSA+IGVuZExpbmUpCiAgICAgICAgIHN0ZDo6c3dhcChzdGFy
dExpbmUsIGVuZExpbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5oCmluZGV4IDYyM2I2MmM2YzI0MS4uYmFmMjA0YjI3
MGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0
aW9uc1Jlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQ
b3NpdGlvbnNSZXNvbHZlci5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgR3JpZFNwYW47CiBjbGFzcyBSZW5kZXJCb3g7CitjbGFzcyBSZW5kZXJHcmlkOwog
Y2xhc3MgUmVuZGVyU3R5bGU7CiAKIGVudW0gR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIHsKQEAg
LTQzLDI4ICs0NCw0NSBAQCBlbnVtIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiB7CiAgICAgRm9y
Um93cwogfTsKIAotY2xhc3MgTmFtZWRMaW5lQ29sbGVjdGlvbiB7Ci0gICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoTmFtZWRMaW5lQ29sbGVjdGlvbik7CitjbGFzcyBOYW1lZExpbmVDb2xsZWN0aW9u
QmFzZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmFtZWRMaW5lQ29sbGVjdGlvbkJhc2Up
OwogcHVibGljOgotICAgIE5hbWVkTGluZUNvbGxlY3Rpb24oY29uc3QgUmVuZGVyU3R5bGUmLCBj
b25zdCBTdHJpbmcmIG5hbWVkTGluZSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCB1bnNpZ25l
ZCBsYXN0TGluZSwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKLQotICAgIGJvb2wg
aGFzTmFtZWRMaW5lcygpIGNvbnN0OwotICAgIHVuc2lnbmVkIGZpcnN0UG9zaXRpb24oKSBjb25z
dDsKKyAgICBOYW1lZExpbmVDb2xsZWN0aW9uQmFzZShjb25zdCBSZW5kZXJHcmlkJiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBHcmlkUG9zaXRpb25TaWRlLCBib29sIG5hbWVJc0FyZWFOYW1lKTsKIAog
ICAgIGJvb2wgY29udGFpbnModW5zaWduZWQgbGluZSkgY29uc3Q7Citwcm90ZWN0ZWQ6CiAKLXBy
aXZhdGU6Ci0gICAgYm9vbCBoYXNFeHBsaWNpdE5hbWVkTGluZXMoKSBjb25zdDsKLSAgICB1bnNp
Z25lZCBmaXJzdEV4cGxpY2l0UG9zaXRpb24oKSBjb25zdDsKKyAgICB2b2lkIGVuc3VyZUxvY2Fs
U3RvcmFnZSgpOwogCiAgICAgY29uc3QgVmVjdG9yPHVuc2lnbmVkPiogbV9uYW1lZExpbmVzSW5k
ZXhlcyB7IG51bGxwdHIgfTsKICAgICBjb25zdCBWZWN0b3I8dW5zaWduZWQ+KiBtX2F1dG9SZXBl
YXROYW1lZExpbmVzSW5kZXhlcyB7IG51bGxwdHIgfTsKICAgICBjb25zdCBWZWN0b3I8dW5zaWdu
ZWQ+KiBtX2ltcGxpY2l0TmFtZWRMaW5lc0luZGV4ZXMgeyBudWxscHRyIH07CiAKKyAgICBWZWN0
b3I8dW5zaWduZWQ+IG1faW5oZXJpdGVkTmFtZWRMaW5lc0luZGV4ZXM7CisKICAgICB1bnNpZ25l
ZCBtX2luc2VydGlvblBvaW50OwogICAgIHVuc2lnbmVkIG1fbGFzdExpbmU7CiAgICAgdW5zaWdu
ZWQgbV9hdXRvUmVwZWF0VG90YWxUcmFja3M7CisgICAgdW5zaWduZWQgbV9hdXRvUmVwZWF0TGlu
ZXM7CiAgICAgdW5zaWduZWQgbV9hdXRvUmVwZWF0VHJhY2tMaXN0TGVuZ3RoOworICAgIGJvb2wg
bV9zdWJncmlkOworfTsKKworY2xhc3MgTmFtZWRMaW5lQ29sbGVjdGlvbiA6IHB1YmxpYyBOYW1l
ZExpbmVDb2xsZWN0aW9uQmFzZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmFtZWRMaW5l
Q29sbGVjdGlvbik7CitwdWJsaWM6CisgICAgTmFtZWRMaW5lQ29sbGVjdGlvbihjb25zdCBSZW5k
ZXJHcmlkJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBHcmlkUG9zaXRpb25TaWRlLCBib29sIG5hbWVJ
c0FyZWFOYW1lID0gZmFsc2UpOworCisgICAgYm9vbCBoYXNOYW1lZExpbmVzKCkgY29uc3Q7Cisg
ICAgaW50IGZpcnN0UG9zaXRpb24oKSBjb25zdDsKKworICAgIGJvb2wgY29udGFpbnModW5zaWdu
ZWQgbGluZSkgY29uc3Q7CisKKyAgICB1bnNpZ25lZCBsYXN0TGluZSgpIGNvbnN0OworCitwcml2
YXRlOgorICAgIGJvb2wgaGFzRXhwbGljaXROYW1lZExpbmVzKCkgY29uc3Q7CisgICAgaW50IGZp
cnN0RXhwbGljaXRQb3NpdGlvbigpIGNvbnN0OwogfTsKIAogLy8gQ2xhc3Mgd2l0aCBhbGwgdGhl
IGNvZGUgcmVsYXRlZCB0byBncmlkIGl0ZW1zIHBvc2l0aW9ucyByZXNvbHV0aW9uLgpAQCAtNzMs
OSArOTEsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEdyaWRQb3NpdGlvblNpZGUgaW5pdGlhbFBv
c2l0aW9uU2lkZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pOwogICAgIHN0YXRpYyBHcmlkUG9z
aXRpb25TaWRlIGZpbmFsUG9zaXRpb25TaWRlKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7CiAg
ICAgc3RhdGljIHVuc2lnbmVkIHNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oY29uc3QgUmVuZGVy
Qm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKTsKLSAgICBzdGF0aWMgR3JpZFNwYW4gcmVz
b2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5k
ZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFj
a3NDb3VudCk7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGV4cGxpY2l0R3JpZENvbHVtbkNvdW50KGNv
bnN0IFJlbmRlclN0eWxlJiwgdW5zaWduZWQgYXV0b1JlcGVhdENvbHVtbnNDb3VudCk7Ci0gICAg
c3RhdGljIHVuc2lnbmVkIGV4cGxpY2l0R3JpZFJvd0NvdW50KGNvbnN0IFJlbmRlclN0eWxlJiwg
dW5zaWduZWQgYXV0b1JlcGVhdFJvd3NDb3VudCk7CisgICAgc3RhdGljIEdyaWRTcGFuIHJlc29s
dmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbik7CisgICAgc3RhdGljIHVuc2lnbmVkIGV4cGxpY2l0R3JpZENvbHVtbkNvdW50
KGNvbnN0IFJlbmRlckdyaWQmKTsKKyAgICBzdGF0aWMgdW5zaWduZWQgZXhwbGljaXRHcmlkUm93
Q291bnQoY29uc3QgUmVuZGVyR3JpZCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCAyYWE0MjRmMmJi
YWQuLmU4ODRlNWJjZmFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVC
dWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3Vz
dG9tLmgKQEAgLTE5MzQsMTAgKzE5MzQsNiBAQCBpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlR3JpZFRlbXBsYXRlQ29sdW1ucyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdAogICAg
IEJ1aWxkZXJDb252ZXJ0ZXI6OlRyYWNrc0RhdGEgdHJhY2tzRGF0YTsKICAgICBpZiAoIUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QodmFsdWUsIHRyYWNrc0RhdGEsIGJ1aWxk
ZXJTdGF0ZSkpCiAgICAgICAgIHJldHVybjsKLSAgICBjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiBu
YW1lZEdyaWRBcmVhcyA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLm5hbWVkR3JpZEFyZWEoKTsKLSAg
ICBpZiAoIW5hbWVkR3JpZEFyZWFzLmlzRW1wdHkoKSkKLSAgICAgICAgQnVpbGRlckNvbnZlcnRl
cjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21HcmlkQXJlYShuYW1lZEdyaWRBcmVh
cywgdHJhY2tzRGF0YS5tX25hbWVkR3JpZExpbmVzLCBGb3JDb2x1bW5zKTsKLQogICAgIFNFVF9U
UkFDS1NfREFUQSh0cmFja3NEYXRhLCBidWlsZGVyU3RhdGUuc3R5bGUoKSwgQ29sdW1uKTsKIH0K
IApAQCAtMTk1Nyw5ICsxOTUzLDYgQEAgaW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZUdyaWRUZW1wbGF0ZVJvd3MoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUKICAgICBCdWls
ZGVyQ29udmVydGVyOjpUcmFja3NEYXRhIHRyYWNrc0RhdGE7CiAgICAgaWYgKCFCdWlsZGVyQ29u
dmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KHZhbHVlLCB0cmFja3NEYXRhLCBidWlsZGVyU3Rh
dGUpKQogICAgICAgICByZXR1cm47Ci0gICAgY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYgbmFtZWRH
cmlkQXJlYXMgPSBidWlsZGVyU3RhdGUuc3R5bGUoKS5uYW1lZEdyaWRBcmVhKCk7Ci0gICAgaWYg
KCFuYW1lZEdyaWRBcmVhcy5pc0VtcHR5KCkpCi0gICAgICAgIEJ1aWxkZXJDb252ZXJ0ZXI6OmNy
ZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEobmFtZWRHcmlkQXJlYXMsIHRy
YWNrc0RhdGEubV9uYW1lZEdyaWRMaW5lcywgRm9yUm93cyk7CiAKICAgICBTRVRfVFJBQ0tTX0RB
VEEodHJhY2tzRGF0YSwgYnVpbGRlclN0YXRlLnN0eWxlKCksIFJvdyk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452074</attachid>
            <date>2022-02-15 12:39:08 -0800</date>
            <delta_ts>2022-02-16 20:24:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236336-20220216093906.patch</filename>
            <type>text/plain</type>
            <size>16788</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ5ODc5YTBlN2YxNTVm
OWZiNGU0NDBmNzRlNDU5ZGY3NmQxMTcxYy4uMGRhYzg5MTQxMTZiOWQxZGE0OTVlZjIxZmYyZGQ3
Y2NjYzMyMDJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIyLTAyLTE1ICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29weSB0cmFjayBz
aXplcyBmcm9tIHBhcmVudCBncmlkIGludG8gc3ViZ3JpZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29waWVzIHRyYWNrIHNpemVzIGZyb20gdGhlIHBh
cmVudCBSZW5kZXJHcmlkJ3MgdHJhY2sgc2l6aW5nIGFsZ29yaXRobSBmb3IgYXhlcworICAgICAg
ICB0aGF0IGFyZSBzdWJncmlkZGVkLCByYXRoZXIgdGhhbiBkb2luZyBpdHMgb3duIHNpemluZy4K
KyAgICAgICAgQWNjb3VudHMgZm9yIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHN1YmdyaWQncyBn
cmlkLWdhcCBhbmQgdGhlIHBhcmVudCdzIGdyaWQgZ2FwLAorICAgICAgICBhcyB3ZWxsIGFzIHNw
YWNlIG9jY3VwaWVkIGJ5IHRoZSBzdWJncmlkIGVsZW1lbnQncyBtYXJnaW4vYm9yZGVyL3BhZGRp
bmcuCisKKyAgICAgICAgRXhpc3RpbmcgdGVzdCBleHBlY3RhdGlvbnMgdXBkYXRlZC4KKworICAg
ICAgICAqIHJlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpydW4pOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmxheW91
dEJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmdyaWRHYXAgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cG9wdWxhdGVHcmlkUG9zaXRpb25zRm9yRGly
ZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5oOgorCiAyMDIyLTAyLTE1
ICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CiAKICAgICAgICAgTG9va3Vw
IGxpbmUgbmFtZXMgZm9yIHN1YiBncmlkcyB1c2luZyBsaW5lIG5hbWVzIGZyb20gYW5jZXN0b3Ig
Z3JpZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVu
Y3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25z
LmNwcAppbmRleCBhOTkxZTNjNjAyOWVmNDQyYWYyNjI5OTFlMzQ0ZmFhMTQ2ZDE3NmY1Li5lYjgx
NTg3ZTg0MTZkYzY3NWYyODlhZGJhYzhlOWU4NjcxZDg1ZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC04Miw2ICs4MiwxMSBA
QCBib29sIGlzT3J0aG9nb25hbENoaWxkKGNvbnN0IFJlbmRlckdyaWQmIGdyaWQsIGNvbnN0IFJl
bmRlckJveCYgY2hpbGQpCiAgICAgcmV0dXJuIGNoaWxkLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgIT0gZ3JpZC5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogfQogCitib29sIGlzT3J0aG9n
b25hbFBhcmVudChjb25zdCBSZW5kZXJHcmlkJiBncmlkLCBjb25zdCBSZW5kZXJFbGVtZW50JiBw
YXJlbnQpCit7CisgICAgcmV0dXJuIHBhcmVudC5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpICE9
IGdyaWQuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKK30KKwogYm9vbCBpc0FzcGVjdFJhdGlv
QmxvY2tTaXplRGVwZW5kZW50Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKIHsKICAgICBy
ZXR1cm4gKGNoaWxkLnN0eWxlKCkuaGFzQXNwZWN0UmF0aW8oKSB8fCBjaGlsZC5oYXNJbnRyaW5z
aWNBc3BlY3RSYXRpbygpKSAmJiAoY2hpbGQuaGFzUmVsYXRpdmVMb2dpY2FsSGVpZ2h0KCkgfHwg
Y2hpbGQuaGFzU3RyZXRjaGVkTG9naWNhbEhlaWdodCgpKTsKQEAgLTkyLDYgKzk3LDExIEBAIEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbiBmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZChjb25zdCBS
ZW5kZXJHcmlkJiBncmlkLCBjb25zCiAgICAgcmV0dXJuICFpc09ydGhvZ29uYWxDaGlsZChncmlk
LCBjaGlsZCkgPyBkaXJlY3Rpb24gOiAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBGb3JSb3dz
IDogRm9yQ29sdW1ucyk7CiB9CiAKK0dyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBmbG93QXdhcmVE
aXJlY3Rpb25Gb3JQYXJlbnQoY29uc3QgUmVuZGVyR3JpZCYgZ3JpZCwgY29uc3QgUmVuZGVyRWxl
bWVudCYgcGFyZW50LCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAg
IHJldHVybiAhaXNPcnRob2dvbmFsUGFyZW50KGdyaWQsIHBhcmVudCkgPyBkaXJlY3Rpb24gOiAo
ZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBGb3JSb3dzIDogRm9yQ29sdW1ucyk7Cit9CisKIGJv
b2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY29uc3Qg
UmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsK
ICAgICByZXR1cm4gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjaGlsZC5oYXNPdmVycmlkaW5n
Q29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpIDogY2hpbGQuaGFzT3ZlcnJpZGlu
Z0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuaAppbmRleCA4NjE3YzJjMTIzZDAxYjI2
YmQ4MmY0MzBmYzU1ODk5NTEzMWFiZGRkLi42MjEyNjRkMGI3NjZjYzVjYjk2ZjExZWNiYTQ3YmI3
MGM0OWNiZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91
dEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVu
Y3Rpb25zLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBSZW5kZXJFbGVtZW50OwogY2xhc3MgUmVuZGVyQm94OwogY2xhc3MgUmVuZGVyR3JpZDsKIApA
QCAtNDAsOCArNDEsMTAgQEAgbmFtZXNwYWNlIEdyaWRMYXlvdXRGdW5jdGlvbnMgewogTGF5b3V0
VW5pdCBjb21wdXRlTWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZChjb25zdCBSZW5kZXJHcmlkJiwg
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBSZW5kZXJCb3gmKTsKIExheW91dFVuaXQg
bWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZChjb25zdCBSZW5kZXJHcmlkJiwgR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uLCBjb25zdCBSZW5kZXJCb3gmKTsKIGJvb2wgaXNPcnRob2dvbmFsQ2hpbGQo
Y29uc3QgUmVuZGVyR3JpZCYsIGNvbnN0IFJlbmRlckJveCYpOworYm9vbCBpc09ydGhvZ29uYWxQ
YXJlbnQoY29uc3QgUmVuZGVyR3JpZCYsIGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudCk7CiBi
b29sIGlzQXNwZWN0UmF0aW9CbG9ja1NpemVEZXBlbmRlbnRDaGlsZChjb25zdCBSZW5kZXJCb3gm
KTsKIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZChj
b25zdCBSZW5kZXJHcmlkJiwgY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uKTsKK0dyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBmbG93QXdhcmVEaXJlY3Rpb25Gb3JQYXJl
bnQoY29uc3QgUmVuZGVyR3JpZCYsIGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudCwgR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uKTsKIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uKTsKIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9j
a0NvbnRlbnRTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFj
a1NpemluZ0FsZ29yaXRobS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtLmNwcAppbmRleCAyNDQ3Nzg1ZjdlNDEyMThjOTdmMmI1MGJkMDMzZjI2
OWUwODBlMTZiLi4xMzA1ZmM4ZjY0MzA4MTQ5MTRhZjg2MGY1ZjRlNjZkMjk3YzY0NWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGht
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3Jp
dGhtLmNwcApAQCAtMTM5OSwxMSArMTM5OSw3MCBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29y
aXRobTo6Y29tcHV0ZUJhc2VsaW5lQWxpZ25tZW50Q29udGV4dCgpCiAgICAgfQogfQogCitzdGF0
aWMgdm9pZCByZW1vdmVTdWJncmlkTWFyZ2luQm9yZGVyUGFkZGluZ0Zyb21UcmFja3MoVmVjdG9y
PEdyaWRUcmFjaz4mIHRyYWNrcywgTGF5b3V0VW5pdCBtYnAsIGJvb2wgZm9yd2FyZHMpCit7Cisg
ICAgaW50IG51bVRyYWNrcyA9IHRyYWNrcy5zaXplKCk7CisgICAgaW50IGkgPSBmb3J3YXJkcyA/
IDAgOiBudW1UcmFja3MgLSAxOworICAgIHdoaWxlIChtYnAgPiAwICYmIChmb3J3YXJkcyA/IGkg
PCBudW1UcmFja3MgOiBpID49IDApKSB7CisgICAgICAgIExheW91dFVuaXQgc2l6ZSA9IHRyYWNr
c1tpXS5iYXNlU2l6ZSgpOworICAgICAgICBpZiAoc2l6ZSA+IG1icCkgeworICAgICAgICAgICAg
c2l6ZSAtPSBtYnA7CisgICAgICAgICAgICBtYnAgPSAwOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgbWJwIC09IHNpemU7CisgICAgICAgICAgICBzaXplID0gMDsKKyAgICAgICAgfQor
ICAgICAgICB0cmFja3NbaV0uc2V0QmFzZVNpemUoc2l6ZSk7CisKKyAgICAgICAgZm9yd2FyZHMg
PyBpKysgOiBpLS07CisgICAgfQorfQorCitib29sIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6
Y29weVVzZWRUcmFja1NpemVzRm9yU3ViZ3JpZCgpCit7CisgICAgUmVuZGVyR3JpZCogb3V0ZXIg
PSBkb3duY2FzdDxSZW5kZXJHcmlkPihtX3JlbmRlckdyaWQtPnBhcmVudCgpKTsKKyAgICBHcmlk
VHJhY2tTaXppbmdBbGdvcml0aG0mIHBhcmVudEFsZ28gPSBvdXRlci0+bV90cmFja1NpemluZ0Fs
Z29yaXRobTsKKyAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uID0gR3JpZExh
eW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGlyZWN0aW9uRm9yUGFyZW50KCptX3JlbmRlckdyaWQs
ICpvdXRlciwgbV9kaXJlY3Rpb24pOworICAgIFZlY3RvcjxHcmlkVHJhY2s+JiBwYXJlbnRUcmFj
a3MgPSBwYXJlbnRBbGdvLnRyYWNrcyhkaXJlY3Rpb24pOworICAgIEdyaWRTcGFuIHNwYW4gPSBv
dXRlci0+Z3JpZFNwYW5Gb3JDaGlsZCgqbV9yZW5kZXJHcmlkLCBkaXJlY3Rpb24pOworCisgICAg
aWYgKCFwYXJlbnRUcmFja3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
bnQgbnVtVHJhY2tzID0gdHJhY2tzKG1fZGlyZWN0aW9uKS5zaXplKCk7CisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBudW1UcmFja3M7IGkrKykKKyAgICAgICAgdHJhY2tzKG1fZGlyZWN0aW9uKVtp
XSA9IHBhcmVudFRyYWNrc1tpICsgc3Bhbi5zdGFydExpbmUoKV07CisKKyAgICBpZiAoR3JpZExh
eW91dEZ1bmN0aW9uczo6aXNTdWJncmlkUmV2ZXJzZWREaXJlY3Rpb24oKm91dGVyLCBkaXJlY3Rp
b24sICptX3JlbmRlckdyaWQpKQorICAgICAgICB0cmFja3MobV9kaXJlY3Rpb24pLnJldmVyc2Uo
KTsKKworICAgIExheW91dFVuaXQgc3RhcnRNQlAgPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cykgPyBtX3JlbmRlckdyaWQtPm1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmdTdGFydCgpIDogbV9y
ZW5kZXJHcmlkLT5tYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nQmVmb3JlKCk7CisgICAgcmVtb3Zl
U3ViZ3JpZE1hcmdpbkJvcmRlclBhZGRpbmdGcm9tVHJhY2tzKHRyYWNrcyhtX2RpcmVjdGlvbiks
IHN0YXJ0TUJQLCB0cnVlKTsKKyAgICBMYXlvdXRVbml0IGVuZE1CUCA9IChtX2RpcmVjdGlvbiA9
PSBGb3JDb2x1bW5zKSA/IG1fcmVuZGVyR3JpZC0+bWFyZ2luQW5kQm9yZGVyQW5kUGFkZGluZ0Vu
ZCgpIDogbV9yZW5kZXJHcmlkLT5tYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nQWZ0ZXIoKTsKKyAg
ICByZW1vdmVTdWJncmlkTWFyZ2luQm9yZGVyUGFkZGluZ0Zyb21UcmFja3ModHJhY2tzKG1fZGly
ZWN0aW9uKSwgZW5kTUJQLCBmYWxzZSk7CisKKyAgICBMYXlvdXRVbml0IGdhcERpZmZlcmVuY2Ug
PSAobV9yZW5kZXJHcmlkLT5ncmlkR2FwKG1fZGlyZWN0aW9uKSAtIG91dGVyLT5ncmlkR2FwKGRp
cmVjdGlvbikpIC8gMjsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVRyYWNrczsgaSsrKSB7
CisgICAgICAgIExheW91dFVuaXQgc2l6ZSA9IHRyYWNrcyhtX2RpcmVjdGlvbilbaV0uYmFzZVNp
emUoKTsKKyAgICAgICAgaWYgKGkpCisgICAgICAgICAgICBzaXplIC09IGdhcERpZmZlcmVuY2U7
CisgICAgICAgIGlmIChpICE9IG51bVRyYWNrcyAtIDEpCisgICAgICAgICAgICBzaXplIC09IGdh
cERpZmZlcmVuY2U7CisgICAgICAgIHRyYWNrcyhtX2RpcmVjdGlvbilbaV0uc2V0QmFzZVNpemUo
c3RkOjptYXgoc2l6ZSwgMF9sdSkpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9p
ZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OnJ1bigpCiB7CiAgICAgQVNTRVJUKHdhc1NldHVw
KCkpOwogICAgIFN0YXRlTWFjaGluZSBzdGF0ZU1hY2hpbmUoKnRoaXMpOwogCisgICAgaWYgKG1f
cmVuZGVyR3JpZC0+aXNTdWJncmlkKG1fZGlyZWN0aW9uKSkgeworICAgICAgICBpZiAoY29weVVz
ZWRUcmFja1NpemVzRm9yU3ViZ3JpZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIC8vIFN0ZXAgMS4KICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGluaXRp
YWxGcmVlU3BhY2UgPSBmcmVlU3BhY2UobV9kaXJlY3Rpb24pOwogICAgIGluaXRpYWxpemVUcmFj
a1NpemVzKCk7CkBAIC0xNDUzLDYgKzE1MTIsMTEgQEAgdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdv
cml0aG06OnJlc2V0KCkKICNpZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBHcmlkVHJhY2tTaXppbmdB
bGdvcml0aG06OnRyYWNrc0FyZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0aCgpIGNvbnN0CiB7Cisg
ICAgLy8gU3ViZ3JpZHMgaW5oZXJpdCB0aGVpciBzaXppbmcgZGlyZWN0bHkgZnJvbSB0aGUgcGFy
ZW50LCBzbyBtYXkgYmUgdW5yZWxhdGVkCisgICAgLy8gdG8gdGhlaXIgaW5pdGlhbCBiYXNlIHNp
emUuCisgICAgaWYgKG1fcmVuZGVyR3JpZC0+aXNTdWJncmlkKG1fZGlyZWN0aW9uKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKICAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYgYWxsVHJhY2tz
ID0gdHJhY2tzKG1fZGlyZWN0aW9uKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFsbFRy
YWNrcy5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBhdXRvJiB0cmFja1NpemUgPSBhbGxU
cmFja3NbaV0uY2FjaGVkVHJhY2tTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmgKaW5kZXggYWUxZGQ2YzdhY2RiZGI4N2Rm
ZmMxZjdhYzYyMzhkM2VlOGQ3YWU2NS4uNTk0ZDVmYWU5YWFjYWVlY2E1MGQ5MDM5ZGUxNjZlMzQ0
MzM1ZDExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1Np
emluZ0FsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tT
aXppbmdBbGdvcml0aG0uaApAQCAtMTkzLDYgKzE5Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dHJldGNoRmxleGlibGVUcmFja3Moc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2Up
OwogICAgIHZvaWQgc3RyZXRjaEF1dG9UcmFja3MoKTsKIAorICAgIGJvb2wgY29weVVzZWRUcmFj
a1NpemVzRm9yU3ViZ3JpZCgpOworCiAgICAgLy8gU3RhdGUgbWFjaGluZS4KICAgICB2b2lkIGFk
dmFuY2VOZXh0U3RhdGUoKTsKICAgICBib29sIGlzVmFsaWRUcmFuc2l0aW9uKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4
IDIyZDZiMmRiYWI4MmJlYWE3MGEwYTE4MThkOWQxYjI3NGU3ZmNlZmIuLjk3Yjk2NWEzMGZkZDc2
NjMxOGJiM2Q4YTVjMDljMzRjNWE4M2JlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0xNzcsNiArMTc3LDExIEBAIHB1YmxpYzoK
ICAgICBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSBjb25zdCB7IHJldHVybiBi
b3JkZXJCZWZvcmUoKSArIHBhZGRpbmdCZWZvcmUoKTsgfQogICAgIExheW91dFVuaXQgYm9yZGVy
QW5kUGFkZGluZ0FmdGVyKCkgY29uc3QgeyByZXR1cm4gYm9yZGVyQWZ0ZXIoKSArIHBhZGRpbmdB
ZnRlcigpOyB9CiAKKyAgICBMYXlvdXRVbml0IG1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmdTdGFy
dCgpIGNvbnN0IHsgcmV0dXJuIG1hcmdpblN0YXJ0KCkgKyBib3JkZXJTdGFydCgpICsgcGFkZGlu
Z1N0YXJ0KCk7IH0KKyAgICBMYXlvdXRVbml0IG1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmdFbmQo
KSBjb25zdCB7IHJldHVybiBtYXJnaW5FbmQoKSArIGJvcmRlckVuZCgpICsgcGFkZGluZ0VuZCgp
OyB9CisgICAgTGF5b3V0VW5pdCBtYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgY29u
c3QgeyByZXR1cm4gbWFyZ2luQmVmb3JlKCkgKyBib3JkZXJCZWZvcmUoKSArIHBhZGRpbmdCZWZv
cmUoKTsgfQorICAgIExheW91dFVuaXQgbWFyZ2luQW5kQm9yZGVyQW5kUGFkZGluZ0FmdGVyKCkg
Y29uc3QgeyByZXR1cm4gbWFyZ2luQWZ0ZXIoKSArIGJvcmRlckFmdGVyKCkgKyBwYWRkaW5nQWZ0
ZXIoKTsgfQorCiAgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQo
KSBjb25zdCB7IHJldHVybiBib3JkZXJUb3AoKSArIGJvcmRlckJvdHRvbSgpICsgcGFkZGluZ1Rv
cCgpICsgcGFkZGluZ0JvdHRvbSgpOyB9CiAgICAgTGF5b3V0VW5pdCBob3Jpem9udGFsQm9yZGVy
QW5kUGFkZGluZ0V4dGVudCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckxlZnQoKSArIGJvcmRlclJp
Z2h0KCkgKyBwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCk7IH0KICAgICBMYXlvdXRVbml0
IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYm9yZGVyQW5k
UGFkZGluZ0JlZm9yZSgpICsgYm9yZGVyQW5kUGFkZGluZ0FmdGVyKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCA5YWFmNWM0YWI1MzhlMTUwMjNhNDQyNGFj
MjZlNWRhYTM2NGMzZDdkLi5hN2NjMzVhMmZhOGRlNDZlMjAzNjg5ZDEzYzQxM2MxYjMzNmFjMmZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0zMjksNyArMzI5
LDYgQEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4s
IExheW91dFVuaXQpCiAgICAgICAgIH0KIAogICAgICAgICBsYXlvdXRHcmlkSXRlbXMoKTsKLSAg
ICAgICAgbV90cmFja1NpemluZ0FsZ29yaXRobS5yZXNldCgpOwogCiAgICAgICAgIGVuZEFuZENv
bW1pdFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCk7CiAKQEAgLTM0MCw2
ICszMzksNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGls
ZHJlbiwgTGF5b3V0VW5pdCkKICAgICAgICAgbV9vdXRPZkZsb3dJdGVtUm93LmNsZWFyKCk7CiAK
ICAgICAgICAgbGF5b3V0UG9zaXRpb25lZE9iamVjdHMocmVsYXlvdXRDaGlsZHJlbiB8fCBpc0Rv
Y3VtZW50RWxlbWVudFJlbmRlcmVyKCkpOworICAgICAgICBtX3RyYWNrU2l6aW5nQWxnb3JpdGht
LnJlc2V0KCk7CiAKICAgICAgICAgY29tcHV0ZU92ZXJmbG93KGNsaWVudExvZ2ljYWxSaWdodEFu
ZEJvdHRvbUFmdGVyUmVwb3NpdGlvbmluZygpLmhlaWdodCgpKTsKICAgICB9CkBAIC0zNjIsOCAr
MzYyLDE1IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6Z3JpZEdhcChHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24gZGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsCiB7CiAgICAgQVNTRVJUKCFhdmFpbGFi
bGVTaXplIHx8ICphdmFpbGFibGVTaXplID49IDApOwogICAgIGNvbnN0IEdhcExlbmd0aCYgZ2Fw
TGVuZ3RoID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnM/IHN0eWxlKCkuY29sdW1uR2FwKCkgOiBz
dHlsZSgpLnJvd0dhcCgpOwotICAgIGlmIChnYXBMZW5ndGguaXNOb3JtYWwoKSkKKyAgICBpZiAo
Z2FwTGVuZ3RoLmlzTm9ybWFsKCkpIHsKKyAgICAgICAgaWYgKGlzU3ViZ3JpZChkaXJlY3Rpb24p
KSB7CisgICAgICAgICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gcGFyZW50RGlyZWN0aW9u
ID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGlyZWN0aW9uRm9yUGFyZW50KCp0aGlz
LCAqcGFyZW50KCksIGRpcmVjdGlvbik7CisgICAgICAgICAgICBpZiAoIWF2YWlsYWJsZVNpemUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckdyaWQ+KHBhcmVudCgpKS0+
Z3JpZEdhcChwYXJlbnREaXJlY3Rpb24sIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICByZXR1
cm4gZG93bmNhc3Q8UmVuZGVyR3JpZD4ocGFyZW50KCkpLT5ncmlkR2FwKHBhcmVudERpcmVjdGlv
bik7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDBfbHU7CisgICAgfQogCiAgICAgcmV0dXJu
IHZhbHVlRm9yTGVuZ3RoKGdhcExlbmd0aC5sZW5ndGgoKSwgYXZhaWxhYmxlU2l6ZS52YWx1ZV9v
cigwKSk7CiB9CkBAIC0xMTI1LDYgKzExMzIsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBvcHVsYXRl
R3JpZFBvc2l0aW9uc0ZvckRpcmVjdGlvbihHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZQog
ICAgICAgICAvLyBjb21wdXRlIHRoZSBnYXAgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgdHJhY2tz
IHdpdGhvdXQgZXhhbWluaW5nIHRoZSBzdXJyb3VuZGluZyBvbmVzLgogICAgICAgICBMYXlvdXRV
bml0IGdhcCA9ICFoYXNDb2xsYXBzZWRUcmFja3MgPyBncmlkR2FwKGRpcmVjdGlvbikgOiAwX2x1
OwogICAgICAgICB1bnNpZ25lZCBuZXh0VG9MYXN0TGluZSA9IG51bWJlck9mTGluZXMgLSAyOwor
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuZXh0VG9MYXN0TGluZTsgKytpKQog
ICAgICAgICAgICAgcG9zaXRpb25zW2kgKyAxXSA9IHBvc2l0aW9uc1tpXSArIG9mZnNldC5kaXN0
cmlidXRpb25PZmZzZXQgKyB0cmFja3NbaV0uYmFzZVNpemUoKSArIGdhcDsKICAgICAgICAgcG9z
aXRpb25zW2xhc3RMaW5lXSA9IHBvc2l0aW9uc1tuZXh0VG9MYXN0TGluZV0gKyB0cmFja3NbbmV4
dFRvTGFzdExpbmVdLmJhc2VTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
aAppbmRleCA1MTgwMjY3MjkyODRmNzQ3YTZhM2NjODg1YWI5NmEyMWNiMTYwMmI0Li5iZDBhNmRm
N2YxNDc2NzQ5ZWYzOGFiNWU3MTNmOTE5NjdiZDYxNDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmgKQEAgLTEwMSw2ICsxMDEsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2
YXRlOgorICAgIGZyaWVuZCBjbGFzcyBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG07CisKICAgICBJ
dGVtUG9zaXRpb24gc2VsZkFsaWdubWVudE5vcm1hbEJlaGF2aW9yKGNvbnN0IFJlbmRlckJveCog
Y2hpbGQgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgQVNTRVJUKGNo
aWxkKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBmZDY2N2NkYTVmMDg1ZjU4NzE1NGFlY2E3NDllNTUzZDM0YzFjMjQ5Li5l
YjU4NTQ5MzNjNDMwYmI2ZjQzZGQwOTg1ZDczZTY0MWZjOTZjNzM4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMjItMDItMTUgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4K
KworICAgICAgICBDb3B5IHRyYWNrIHNpemVzIGZyb20gcGFyZW50IGdyaWQgaW50byBzdWJncmlk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYzMzYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeGlzdGlu
ZyB0ZXN0IGV4cGVjdGF0aW9ucyB1cGRhdGVkLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9u
czoKKwogMjAyMi0wMi0xNSAgTWF0dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgog
CiAgICAgICAgIExvb2t1cCBsaW5lIG5hbWVzIGZvciBzdWIgZ3JpZHMgdXNpbmcgbGluZSBuYW1l
cyBmcm9tIGFuY2VzdG9yIGdyaWRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzNjE1OTUxZTNlOGE1
MjI1MzI0ZGFhODUwMmM2YzUyNjQ3OGJlZGE0Li40NjMzYWE3Yjk2YWE2OGRhMWVlNDRhY2Q5Y2M5
MDE1YzgyNmI1MDE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE0MDEsNiArMTQwMSw3IEBAIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL21hc29ucnkvdGVudGF0
aXZlL21hc29ucnktb3JkZXItMDAxCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9tYXNvbnJ5L3RlbnRhdGl2ZS9tYXNvbnJ5LXN1YmdyaWQtMDAxLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL21hc29ucnkvdGVudGF0aXZlL21hc29ucnktc3ViZ3JpZC0wMDIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Z3JpZC9zdWJncmlkL2F1dG8tdHJhY2stc2l6aW5nLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlk
L2Ficy1wb3MtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvYWJzLXBvcy0wMDMuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvc3ViZ3JpZC9hYnMtcG9zLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCkBAIC0x
NDA5LDE3ICsxNDEwLDExIEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtMDAxLmh0bWwgWyBJbWFnZU9uCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwMi5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dy
aWQtZ2FwLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwNS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Z3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2Fw
LTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwOC5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9z
dWJncmlkL2dyaWQtZ2FwLTAwOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLWxhcmdl
ci0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC1sYXJnZXItMDAyLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtbm9ybWFsLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlk
L2dyaWQtZ2FwLXNtYWxsZXItMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvaXRlbS1wZXJjZW50
YWdlLWhlaWdodC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwMi5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQv
b3J0aG9nb25hbC13cml0aW5nLW1vZGUtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvb3J0aG9n
b25hbC13cml0aW5nLW1vZGUtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAgLTE0Mjgs
NiArMTQyMyw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlk
L3N1YmdyaWQvb3J0aG9nb25hbC13cml0aW5nLW1vZGUtMDA0CiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1yZXBlYXQtYXV0by1maXQt
MDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcGFyZW50LXJlcGVhdC1hdXRvLWZpdC0wMDIuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWdyaWQvc3ViZ3JpZC9yZXBlYXQtYXV0by1maWxsLTAwMy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9z
dWJncmlkL3JlcGVhdC1hdXRvLWZpbGwtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvc3ViZ3Jp
ZC1pdGVtLWJsb2NrLXNpemUtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvc3ViZ3JpZC1tYnAt
b3ZlcmZsb3ctMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvc3ViZ3JpZC1tYnAtb3ZlcmZsb3ct
MDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452299</attachid>
            <date>2022-02-16 20:24:25 -0800</date>
            <delta_ts>2022-02-16 23:30:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236336-20220217172423.patch</filename>
            <type>text/plain</type>
            <size>16783</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU3NjgwODU4N2ZlY2Mx
OGVjMDcxMzdhYTljNzQzYWVjZTA3ZjdmNi4uNDA1NjVjNTc2NjQ5NTMwNzQwOGExMGZmMDY1YzZl
MGMwYzQyMmM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIyLTAyLTE1ICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29weSB0cmFjayBz
aXplcyBmcm9tIHBhcmVudCBncmlkIGludG8gc3ViZ3JpZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGVhbiBKYWNrc29uLgorCisgICAgICAgIENvcGllcyB0cmFjayBzaXplcyBmcm9tIHRoZSBwYXJl
bnQgUmVuZGVyR3JpZCdzIHRyYWNrIHNpemluZyBhbGdvcml0aG0gZm9yIGF4ZXMKKyAgICAgICAg
dGhhdCBhcmUgc3ViZ3JpZGRlZCwgcmF0aGVyIHRoYW4gZG9pbmcgaXRzIG93biBzaXppbmcuCisg
ICAgICAgIEFjY291bnRzIGZvciBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBzdWJncmlkJ3MgZ3Jp
ZC1nYXAgYW5kIHRoZSBwYXJlbnQncyBncmlkIGdhcCwKKyAgICAgICAgYXMgd2VsbCBhcyBzcGFj
ZSBvY2N1cGllZCBieSB0aGUgc3ViZ3JpZCBlbGVtZW50J3MgbWFyZ2luL2JvcmRlci9wYWRkaW5n
LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3QgZXhwZWN0YXRpb25zIHVwZGF0ZWQuCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6cnVuKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRC
bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpncmlkR2FwIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBvcHVsYXRlR3JpZFBvc2l0aW9uc0ZvckRpcmVj
dGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuaDoKKwogMjAyMi0wMi0xNSAg
TWF0dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgogCiAgICAgICAgIExvb2t1cCBs
aW5lIG5hbWVzIGZvciBzdWIgZ3JpZHMgdXNpbmcgbGluZSBuYW1lcyBmcm9tIGFuY2VzdG9yIGdy
aWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0
aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5j
cHAKaW5kZXggZGFmNWQyODdhNDFjMWU5MWY3ZDJhYWRlZWZlZDAzNDIxOTFhMWYwYi4uMGExNmY4
MjkxNjEyNTgwNTAyOTQzOTM0MTg5MDM3YmU5MDkxOWQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtODIsNiArODIsMTEgQEAg
Ym9vbCBpc09ydGhvZ29uYWxDaGlsZChjb25zdCBSZW5kZXJHcmlkJiBncmlkLCBjb25zdCBSZW5k
ZXJCb3gmIGNoaWxkKQogICAgIHJldHVybiBjaGlsZC5pc0hvcml6b250YWxXcml0aW5nTW9kZSgp
ICE9IGdyaWQuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKIH0KIAorYm9vbCBpc09ydGhvZ29u
YWxQYXJlbnQoY29uc3QgUmVuZGVyR3JpZCYgZ3JpZCwgY29uc3QgUmVuZGVyRWxlbWVudCYgcGFy
ZW50KQoreworICAgIHJldHVybiBwYXJlbnQuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAhPSBn
cmlkLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7Cit9CisKIGJvb2wgaXNBc3BlY3RSYXRpb0Js
b2NrU2l6ZURlcGVuZGVudENoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpCiB7CiAgICAgcmV0
dXJuIChjaGlsZC5zdHlsZSgpLmhhc0FzcGVjdFJhdGlvKCkgfHwgY2hpbGQuaGFzSW50cmluc2lj
QXNwZWN0UmF0aW8oKSkgJiYgKGNoaWxkLmhhc1JlbGF0aXZlTG9naWNhbEhlaWdodCgpIHx8IGNo
aWxkLmhhc1N0cmV0Y2hlZExvZ2ljYWxIZWlnaHQoKSk7CkBAIC05Miw2ICs5NywxMSBAQCBHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24gZmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoY29uc3QgUmVu
ZGVyR3JpZCYgZ3JpZCwgY29ucwogICAgIHJldHVybiAhaXNPcnRob2dvbmFsQ2hpbGQoZ3JpZCwg
Y2hpbGQpID8gZGlyZWN0aW9uIDogKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gRm9yUm93cyA6
IEZvckNvbHVtbnMpOwogfQogCitHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZmxvd0F3YXJlRGly
ZWN0aW9uRm9yUGFyZW50KGNvbnN0IFJlbmRlckdyaWQmIGdyaWQsIGNvbnN0IFJlbmRlckVsZW1l
bnQmIHBhcmVudCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBy
ZXR1cm4gaXNPcnRob2dvbmFsUGFyZW50KGdyaWQsIHBhcmVudCkgPyAoZGlyZWN0aW9uID09IEZv
ckNvbHVtbnMgPyBGb3JSb3dzIDogRm9yQ29sdW1ucykgOiBkaXJlY3Rpb247Cit9CisKIGJvb2wg
aGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY29uc3QgUmVu
ZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAg
ICByZXR1cm4gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjaGlsZC5oYXNPdmVycmlkaW5nQ29u
dGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpIDogY2hpbGQuaGFzT3ZlcnJpZGluZ0Nv
bnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuaAppbmRleCA4NjE3YzJjMTIzZDAxYjI2YmQ4
MmY0MzBmYzU1ODk5NTEzMWFiZGRkLi42MjEyNjRkMGI3NjZjYzVjYjk2ZjExZWNiYTQ3YmI3MGM0
OWNiZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1
bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rp
b25zLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBS
ZW5kZXJFbGVtZW50OwogY2xhc3MgUmVuZGVyQm94OwogY2xhc3MgUmVuZGVyR3JpZDsKIApAQCAt
NDAsOCArNDEsMTAgQEAgbmFtZXNwYWNlIEdyaWRMYXlvdXRGdW5jdGlvbnMgewogTGF5b3V0VW5p
dCBjb21wdXRlTWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZChjb25zdCBSZW5kZXJHcmlkJiwgR3Jp
ZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBSZW5kZXJCb3gmKTsKIExheW91dFVuaXQgbWFy
Z2luTG9naWNhbFNpemVGb3JDaGlsZChjb25zdCBSZW5kZXJHcmlkJiwgR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uLCBjb25zdCBSZW5kZXJCb3gmKTsKIGJvb2wgaXNPcnRob2dvbmFsQ2hpbGQoY29u
c3QgUmVuZGVyR3JpZCYsIGNvbnN0IFJlbmRlckJveCYpOworYm9vbCBpc09ydGhvZ29uYWxQYXJl
bnQoY29uc3QgUmVuZGVyR3JpZCYsIGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudCk7CiBib29s
IGlzQXNwZWN0UmF0aW9CbG9ja1NpemVEZXBlbmRlbnRDaGlsZChjb25zdCBSZW5kZXJCb3gmKTsK
IEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZChjb25z
dCBSZW5kZXJHcmlkJiwgY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
KTsKK0dyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBmbG93QXdhcmVEaXJlY3Rpb25Gb3JQYXJlbnQo
Y29uc3QgUmVuZGVyR3JpZCYsIGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudCwgR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uKTsKIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRl
bnRTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
KTsKIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1Np
emluZ0FsZ29yaXRobS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtLmNwcAppbmRleCAyNDQ3Nzg1ZjdlNDEyMThjOTdmMmI1MGJkMDMzZjI2OWUw
ODBlMTZiLi4xMzA1ZmM4ZjY0MzA4MTQ5MTRhZjg2MGY1ZjRlNjZkMjk3YzY0NWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGht
LmNwcApAQCAtMTM5OSwxMSArMTM5OSw3MCBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bTo6Y29tcHV0ZUJhc2VsaW5lQWxpZ25tZW50Q29udGV4dCgpCiAgICAgfQogfQogCitzdGF0aWMg
dm9pZCByZW1vdmVTdWJncmlkTWFyZ2luQm9yZGVyUGFkZGluZ0Zyb21UcmFja3MoVmVjdG9yPEdy
aWRUcmFjaz4mIHRyYWNrcywgTGF5b3V0VW5pdCBtYnAsIGJvb2wgZm9yd2FyZHMpCit7CisgICAg
aW50IG51bVRyYWNrcyA9IHRyYWNrcy5zaXplKCk7CisgICAgaW50IGkgPSBmb3J3YXJkcyA/IDAg
OiBudW1UcmFja3MgLSAxOworICAgIHdoaWxlIChtYnAgPiAwICYmIChmb3J3YXJkcyA/IGkgPCBu
dW1UcmFja3MgOiBpID49IDApKSB7CisgICAgICAgIExheW91dFVuaXQgc2l6ZSA9IHRyYWNrc1tp
XS5iYXNlU2l6ZSgpOworICAgICAgICBpZiAoc2l6ZSA+IG1icCkgeworICAgICAgICAgICAgc2l6
ZSAtPSBtYnA7CisgICAgICAgICAgICBtYnAgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgbWJwIC09IHNpemU7CisgICAgICAgICAgICBzaXplID0gMDsKKyAgICAgICAgfQorICAg
ICAgICB0cmFja3NbaV0uc2V0QmFzZVNpemUoc2l6ZSk7CisKKyAgICAgICAgZm9yd2FyZHMgPyBp
KysgOiBpLS07CisgICAgfQorfQorCitib29sIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y29w
eVVzZWRUcmFja1NpemVzRm9yU3ViZ3JpZCgpCit7CisgICAgUmVuZGVyR3JpZCogb3V0ZXIgPSBk
b3duY2FzdDxSZW5kZXJHcmlkPihtX3JlbmRlckdyaWQtPnBhcmVudCgpKTsKKyAgICBHcmlkVHJh
Y2tTaXppbmdBbGdvcml0aG0mIHBhcmVudEFsZ28gPSBvdXRlci0+bV90cmFja1NpemluZ0FsZ29y
aXRobTsKKyAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uID0gR3JpZExheW91
dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGlyZWN0aW9uRm9yUGFyZW50KCptX3JlbmRlckdyaWQsICpv
dXRlciwgbV9kaXJlY3Rpb24pOworICAgIFZlY3RvcjxHcmlkVHJhY2s+JiBwYXJlbnRUcmFja3Mg
PSBwYXJlbnRBbGdvLnRyYWNrcyhkaXJlY3Rpb24pOworICAgIEdyaWRTcGFuIHNwYW4gPSBvdXRl
ci0+Z3JpZFNwYW5Gb3JDaGlsZCgqbV9yZW5kZXJHcmlkLCBkaXJlY3Rpb24pOworCisgICAgaWYg
KCFwYXJlbnRUcmFja3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQg
bnVtVHJhY2tzID0gdHJhY2tzKG1fZGlyZWN0aW9uKS5zaXplKCk7CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBudW1UcmFja3M7IGkrKykKKyAgICAgICAgdHJhY2tzKG1fZGlyZWN0aW9uKVtpXSA9
IHBhcmVudFRyYWNrc1tpICsgc3Bhbi5zdGFydExpbmUoKV07CisKKyAgICBpZiAoR3JpZExheW91
dEZ1bmN0aW9uczo6aXNTdWJncmlkUmV2ZXJzZWREaXJlY3Rpb24oKm91dGVyLCBkaXJlY3Rpb24s
ICptX3JlbmRlckdyaWQpKQorICAgICAgICB0cmFja3MobV9kaXJlY3Rpb24pLnJldmVyc2UoKTsK
KworICAgIExheW91dFVuaXQgc3RhcnRNQlAgPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykg
PyBtX3JlbmRlckdyaWQtPm1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmdTdGFydCgpIDogbV9yZW5k
ZXJHcmlkLT5tYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nQmVmb3JlKCk7CisgICAgcmVtb3ZlU3Vi
Z3JpZE1hcmdpbkJvcmRlclBhZGRpbmdGcm9tVHJhY2tzKHRyYWNrcyhtX2RpcmVjdGlvbiksIHN0
YXJ0TUJQLCB0cnVlKTsKKyAgICBMYXlvdXRVbml0IGVuZE1CUCA9IChtX2RpcmVjdGlvbiA9PSBG
b3JDb2x1bW5zKSA/IG1fcmVuZGVyR3JpZC0+bWFyZ2luQW5kQm9yZGVyQW5kUGFkZGluZ0VuZCgp
IDogbV9yZW5kZXJHcmlkLT5tYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nQWZ0ZXIoKTsKKyAgICBy
ZW1vdmVTdWJncmlkTWFyZ2luQm9yZGVyUGFkZGluZ0Zyb21UcmFja3ModHJhY2tzKG1fZGlyZWN0
aW9uKSwgZW5kTUJQLCBmYWxzZSk7CisKKyAgICBMYXlvdXRVbml0IGdhcERpZmZlcmVuY2UgPSAo
bV9yZW5kZXJHcmlkLT5ncmlkR2FwKG1fZGlyZWN0aW9uKSAtIG91dGVyLT5ncmlkR2FwKGRpcmVj
dGlvbikpIC8gMjsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVRyYWNrczsgaSsrKSB7Cisg
ICAgICAgIExheW91dFVuaXQgc2l6ZSA9IHRyYWNrcyhtX2RpcmVjdGlvbilbaV0uYmFzZVNpemUo
KTsKKyAgICAgICAgaWYgKGkpCisgICAgICAgICAgICBzaXplIC09IGdhcERpZmZlcmVuY2U7Cisg
ICAgICAgIGlmIChpICE9IG51bVRyYWNrcyAtIDEpCisgICAgICAgICAgICBzaXplIC09IGdhcERp
ZmZlcmVuY2U7CisgICAgICAgIHRyYWNrcyhtX2RpcmVjdGlvbilbaV0uc2V0QmFzZVNpemUoc3Rk
OjptYXgoc2l6ZSwgMF9sdSkpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBH
cmlkVHJhY2tTaXppbmdBbGdvcml0aG06OnJ1bigpCiB7CiAgICAgQVNTRVJUKHdhc1NldHVwKCkp
OwogICAgIFN0YXRlTWFjaGluZSBzdGF0ZU1hY2hpbmUoKnRoaXMpOwogCisgICAgaWYgKG1fcmVu
ZGVyR3JpZC0+aXNTdWJncmlkKG1fZGlyZWN0aW9uKSkgeworICAgICAgICBpZiAoY29weVVzZWRU
cmFja1NpemVzRm9yU3ViZ3JpZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IC8vIFN0ZXAgMS4KICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGluaXRpYWxG
cmVlU3BhY2UgPSBmcmVlU3BhY2UobV9kaXJlY3Rpb24pOwogICAgIGluaXRpYWxpemVUcmFja1Np
emVzKCk7CkBAIC0xNDUzLDYgKzE1MTIsMTEgQEAgdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0
aG06OnJlc2V0KCkKICNpZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBHcmlkVHJhY2tTaXppbmdBbGdv
cml0aG06OnRyYWNrc0FyZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0aCgpIGNvbnN0CiB7CisgICAg
Ly8gU3ViZ3JpZHMgaW5oZXJpdCB0aGVpciBzaXppbmcgZGlyZWN0bHkgZnJvbSB0aGUgcGFyZW50
LCBzbyBtYXkgYmUgdW5yZWxhdGVkCisgICAgLy8gdG8gdGhlaXIgaW5pdGlhbCBiYXNlIHNpemUu
CisgICAgaWYgKG1fcmVuZGVyR3JpZC0+aXNTdWJncmlkKG1fZGlyZWN0aW9uKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKICAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYgYWxsVHJhY2tzID0g
dHJhY2tzKG1fZGlyZWN0aW9uKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFsbFRyYWNr
cy5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBhdXRvJiB0cmFja1NpemUgPSBhbGxUcmFj
a3NbaV0uY2FjaGVkVHJhY2tTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmgKaW5kZXggYWUxZGQ2YzdhY2RiZGI4N2RmZmMx
ZjdhYzYyMzhkM2VlOGQ3YWU2NS4uNTk0ZDVmYWU5YWFjYWVlY2E1MGQ5MDM5ZGUxNjZlMzQ0MzM1
ZDExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1Npemlu
Z0FsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0uaApAQCAtMTkzLDYgKzE5Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdHJl
dGNoRmxleGlibGVUcmFja3Moc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2UpOwog
ICAgIHZvaWQgc3RyZXRjaEF1dG9UcmFja3MoKTsKIAorICAgIGJvb2wgY29weVVzZWRUcmFja1Np
emVzRm9yU3ViZ3JpZCgpOworCiAgICAgLy8gU3RhdGUgbWFjaGluZS4KICAgICB2b2lkIGFkdmFu
Y2VOZXh0U3RhdGUoKTsKICAgICBib29sIGlzVmFsaWRUcmFuc2l0aW9uKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IDIy
ZDZiMmRiYWI4MmJlYWE3MGEwYTE4MThkOWQxYjI3NGU3ZmNlZmIuLjk3Yjk2NWEzMGZkZDc2NjMx
OGJiM2Q4YTVjMDljMzRjNWE4M2JlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0xNzcsNiArMTc3LDExIEBAIHB1YmxpYzoKICAg
ICBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSBjb25zdCB7IHJldHVybiBib3Jk
ZXJCZWZvcmUoKSArIHBhZGRpbmdCZWZvcmUoKTsgfQogICAgIExheW91dFVuaXQgYm9yZGVyQW5k
UGFkZGluZ0FmdGVyKCkgY29uc3QgeyByZXR1cm4gYm9yZGVyQWZ0ZXIoKSArIHBhZGRpbmdBZnRl
cigpOyB9CiAKKyAgICBMYXlvdXRVbml0IG1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmdTdGFydCgp
IGNvbnN0IHsgcmV0dXJuIG1hcmdpblN0YXJ0KCkgKyBib3JkZXJTdGFydCgpICsgcGFkZGluZ1N0
YXJ0KCk7IH0KKyAgICBMYXlvdXRVbml0IG1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmdFbmQoKSBj
b25zdCB7IHJldHVybiBtYXJnaW5FbmQoKSArIGJvcmRlckVuZCgpICsgcGFkZGluZ0VuZCgpOyB9
CisgICAgTGF5b3V0VW5pdCBtYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgY29uc3Qg
eyByZXR1cm4gbWFyZ2luQmVmb3JlKCkgKyBib3JkZXJCZWZvcmUoKSArIHBhZGRpbmdCZWZvcmUo
KTsgfQorICAgIExheW91dFVuaXQgbWFyZ2luQW5kQm9yZGVyQW5kUGFkZGluZ0FmdGVyKCkgY29u
c3QgeyByZXR1cm4gbWFyZ2luQWZ0ZXIoKSArIGJvcmRlckFmdGVyKCkgKyBwYWRkaW5nQWZ0ZXIo
KTsgfQorCiAgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSBj
b25zdCB7IHJldHVybiBib3JkZXJUb3AoKSArIGJvcmRlckJvdHRvbSgpICsgcGFkZGluZ1RvcCgp
ICsgcGFkZGluZ0JvdHRvbSgpOyB9CiAgICAgTGF5b3V0VW5pdCBob3Jpem9udGFsQm9yZGVyQW5k
UGFkZGluZ0V4dGVudCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0
KCkgKyBwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCk7IH0KICAgICBMYXlvdXRVbml0IGJv
cmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYm9yZGVyQW5kUGFk
ZGluZ0JlZm9yZSgpICsgYm9yZGVyQW5kUGFkZGluZ0FmdGVyKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCAzNWMzOGY3NjUwOTE0NzU0ZTBiMGY1ODM5MGFh
OGM0ZTMxNWJjZGQ2Li41ZGM5Mjk3MGY4OTFiYmZmODIzOTBiMTdiNzYyOGUxYzQ0NzRkZGUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0zMjksNyArMzI5LDYg
QEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExh
eW91dFVuaXQpCiAgICAgICAgIH0KIAogICAgICAgICBsYXlvdXRHcmlkSXRlbXMoKTsKLSAgICAg
ICAgbV90cmFja1NpemluZ0FsZ29yaXRobS5yZXNldCgpOwogCiAgICAgICAgIGVuZEFuZENvbW1p
dFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCk7CiAKQEAgLTM0MCw2ICsz
MzksNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJl
biwgTGF5b3V0VW5pdCkKICAgICAgICAgbV9vdXRPZkZsb3dJdGVtUm93LmNsZWFyKCk7CiAKICAg
ICAgICAgbGF5b3V0UG9zaXRpb25lZE9iamVjdHMocmVsYXlvdXRDaGlsZHJlbiB8fCBpc0RvY3Vt
ZW50RWxlbWVudFJlbmRlcmVyKCkpOworICAgICAgICBtX3RyYWNrU2l6aW5nQWxnb3JpdGhtLnJl
c2V0KCk7CiAKICAgICAgICAgY29tcHV0ZU92ZXJmbG93KGNsaWVudExvZ2ljYWxSaWdodEFuZEJv
dHRvbUFmdGVyUmVwb3NpdGlvbmluZygpLmhlaWdodCgpKTsKICAgICB9CkBAIC0zNjIsOCArMzYy
LDE1IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6Z3JpZEdhcChHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsCiB7CiAgICAgQVNTRVJUKCFhdmFpbGFibGVT
aXplIHx8ICphdmFpbGFibGVTaXplID49IDApOwogICAgIGNvbnN0IEdhcExlbmd0aCYgZ2FwTGVu
Z3RoID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnM/IHN0eWxlKCkuY29sdW1uR2FwKCkgOiBzdHls
ZSgpLnJvd0dhcCgpOwotICAgIGlmIChnYXBMZW5ndGguaXNOb3JtYWwoKSkKKyAgICBpZiAoZ2Fw
TGVuZ3RoLmlzTm9ybWFsKCkpIHsKKyAgICAgICAgaWYgKGlzU3ViZ3JpZChkaXJlY3Rpb24pKSB7
CisgICAgICAgICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gcGFyZW50RGlyZWN0aW9uID0g
R3JpZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGlyZWN0aW9uRm9yUGFyZW50KCp0aGlzLCAq
cGFyZW50KCksIGRpcmVjdGlvbik7CisgICAgICAgICAgICBpZiAoIWF2YWlsYWJsZVNpemUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckdyaWQ+KHBhcmVudCgpKS0+Z3Jp
ZEdhcChwYXJlbnREaXJlY3Rpb24sIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8UmVuZGVyR3JpZD4ocGFyZW50KCkpLT5ncmlkR2FwKHBhcmVudERpcmVjdGlvbik7
CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDBfbHU7CisgICAgfQogCiAgICAgcmV0dXJuIHZh
bHVlRm9yTGVuZ3RoKGdhcExlbmd0aC5sZW5ndGgoKSwgYXZhaWxhYmxlU2l6ZS52YWx1ZV9vcigw
KSk7CiB9CkBAIC0xMTI4LDYgKzExMzUsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBvcHVsYXRlR3Jp
ZFBvc2l0aW9uc0ZvckRpcmVjdGlvbihHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZQogICAg
ICAgICAvLyBjb21wdXRlIHRoZSBnYXAgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgdHJhY2tzIHdp
dGhvdXQgZXhhbWluaW5nIHRoZSBzdXJyb3VuZGluZyBvbmVzLgogICAgICAgICBMYXlvdXRVbml0
IGdhcCA9ICFoYXNDb2xsYXBzZWRUcmFja3MgPyBncmlkR2FwKGRpcmVjdGlvbikgOiAwX2x1Owog
ICAgICAgICB1bnNpZ25lZCBuZXh0VG9MYXN0TGluZSA9IG51bWJlck9mTGluZXMgLSAyOworCiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuZXh0VG9MYXN0TGluZTsgKytpKQogICAg
ICAgICAgICAgcG9zaXRpb25zW2kgKyAxXSA9IHBvc2l0aW9uc1tpXSArIG9mZnNldC5kaXN0cmli
dXRpb25PZmZzZXQgKyB0cmFja3NbaV0uYmFzZVNpemUoKSArIGdhcDsKICAgICAgICAgcG9zaXRp
b25zW2xhc3RMaW5lXSA9IHBvc2l0aW9uc1tuZXh0VG9MYXN0TGluZV0gKyB0cmFja3NbbmV4dFRv
TGFzdExpbmVdLmJhc2VTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaApp
bmRleCBkYTRkNjM2ZjhkMzUwOGQ2NzcxNTdmZTkxNDE2YWMwZGQxOTg3YzJhLi5iMGM5ODI3MDQy
MzU4MTkzN2Y2Zjg1ZWU5NGFlMWJiNzBjOTI2OGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmgKQEAgLTEwNyw2ICsxMDcsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG07CisKICAgICBJdGVt
UG9zaXRpb24gc2VsZkFsaWdubWVudE5vcm1hbEJlaGF2aW9yKGNvbnN0IFJlbmRlckJveCogY2hp
bGQgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgQVNTRVJUKGNoaWxk
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBjYjMyNzI5YjJmZmM1NzYwNWZkMzFhM2VhMGYzYjdjY2I0YTliMTMwLi44MTU4
NjViNTNiMjQ5MmI4NWQ0NjliMGE1ZDc0N2E5Y2NhMTMyZWM0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjItMDItMTUgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KKwor
ICAgICAgICBDb3B5IHRyYWNrIHNpemVzIGZyb20gcGFyZW50IGdyaWQgaW50byBzdWJncmlkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYzMzYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgRXhpc3RpbmcgdGVz
dCBleHBlY3RhdGlvbnMgdXBkYXRlZC4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisK
IDIwMjItMDItMTUgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KIAogICAg
ICAgICBMb29rdXAgbGluZSBuYW1lcyBmb3Igc3ViIGdyaWRzIHVzaW5nIGxpbmUgbmFtZXMgZnJv
bSBhbmNlc3RvciBncmlkcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzYxNTk1MWUzZThhNTIyNTMy
NGRhYTg1MDJjNmM1MjY0NzhiZWRhNC4uNDYzM2FhN2I5NmFhNjhkYTFlZTQ0YWNkOWNjOTAxNWM4
MjZiNTAxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNDAxLDYgKzE0MDEsNyBAQCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9tYXNvbnJ5L3RlbnRhdGl2ZS9t
YXNvbnJ5LW9yZGVyLTAwMQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvbWFzb25yeS90ZW50YXRpdmUvbWFzb25yeS1zdWJncmlkLTAwMS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3Jp
ZC9tYXNvbnJ5L3RlbnRhdGl2ZS9tYXNvbnJ5LXN1YmdyaWQtMDAyLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIAoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQv
c3ViZ3JpZC9hdXRvLXRyYWNrLXNpemluZy0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9hYnMt
cG9zLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2Ficy1wb3MtMDAzLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlk
L3N1YmdyaWQvYWJzLXBvcy0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpAQCAtMTQwOSwx
NyArMTQxMCwxMSBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3Jp
ZC9zdWJncmlkL2dyaWQtZ2FwLTAwMS5odG1sIFsgSW1hZ2VPbgogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC0wMDIuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdh
cC0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC0wMDUuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQv
c3ViZ3JpZC9ncmlkLWdhcC0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC0wMDcu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC0wMDguaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3Jp
ZC9ncmlkLWdhcC0wMDkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC1sYXJnZXItMDAx
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtbGFyZ2VyLTAwMi5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3Jp
ZC9zdWJncmlkL2dyaWQtZ2FwLW5vcm1hbC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlk
LWdhcC1zbWFsbGVyLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2l0ZW0tcGVyY2VudGFnZS1o
ZWlnaHQtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDIuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL29ydGhv
Z29uYWwtd3JpdGluZy1tb2RlLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL29ydGhvZ29uYWwt
d3JpdGluZy1tb2RlLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCkBAIC0xNDI4LDYgKzE0
MjMsNyBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJn
cmlkL29ydGhvZ29uYWwtd3JpdGluZy1tb2RlLTAwNAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9wYXJlbnQtcmVwZWF0LWF1dG8tZml0LTAwMS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1yZXBlYXQtYXV0by1maXQtMDAyLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvcmVwZWF0LWF1dG8tZmlsbC0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3Jp
ZC9yZXBlYXQtYXV0by1maWxsLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3N1YmdyaWQtaXRl
bS1ibG9jay1zaXplLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3N1YmdyaWQtbWJwLW92ZXJm
bG93LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3N1YmdyaWQtbWJwLW92ZXJmbG93LTAwMi5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452325</attachid>
            <date>2022-02-16 23:30:50 -0800</date>
            <delta_ts>2022-02-17 01:54:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236336-20220217203048.patch</filename>
            <type>text/plain</type>
            <size>16845</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU3NjgwODU4N2ZlY2Mx
OGVjMDcxMzdhYTljNzQzYWVjZTA3ZjdmNi4uNDA1NjVjNTc2NjQ5NTMwNzQwOGExMGZmMDY1YzZl
MGMwYzQyMmM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIyLTAyLTE1ICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29weSB0cmFjayBz
aXplcyBmcm9tIHBhcmVudCBncmlkIGludG8gc3ViZ3JpZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGVhbiBKYWNrc29uLgorCisgICAgICAgIENvcGllcyB0cmFjayBzaXplcyBmcm9tIHRoZSBwYXJl
bnQgUmVuZGVyR3JpZCdzIHRyYWNrIHNpemluZyBhbGdvcml0aG0gZm9yIGF4ZXMKKyAgICAgICAg
dGhhdCBhcmUgc3ViZ3JpZGRlZCwgcmF0aGVyIHRoYW4gZG9pbmcgaXRzIG93biBzaXppbmcuCisg
ICAgICAgIEFjY291bnRzIGZvciBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBzdWJncmlkJ3MgZ3Jp
ZC1nYXAgYW5kIHRoZSBwYXJlbnQncyBncmlkIGdhcCwKKyAgICAgICAgYXMgd2VsbCBhcyBzcGFj
ZSBvY2N1cGllZCBieSB0aGUgc3ViZ3JpZCBlbGVtZW50J3MgbWFyZ2luL2JvcmRlci9wYWRkaW5n
LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3QgZXhwZWN0YXRpb25zIHVwZGF0ZWQuCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6cnVuKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRC
bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpncmlkR2FwIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBvcHVsYXRlR3JpZFBvc2l0aW9uc0ZvckRpcmVj
dGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuaDoKKwogMjAyMi0wMi0xNSAg
TWF0dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgogCiAgICAgICAgIExvb2t1cCBs
aW5lIG5hbWVzIGZvciBzdWIgZ3JpZHMgdXNpbmcgbGluZSBuYW1lcyBmcm9tIGFuY2VzdG9yIGdy
aWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0
aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5j
cHAKaW5kZXggZGFmNWQyODdhNDFjMWU5MWY3ZDJhYWRlZWZlZDAzNDIxOTFhMWYwYi4uMGExNmY4
MjkxNjEyNTgwNTAyOTQzOTM0MTg5MDM3YmU5MDkxOWQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtODIsNiArODIsMTEgQEAg
Ym9vbCBpc09ydGhvZ29uYWxDaGlsZChjb25zdCBSZW5kZXJHcmlkJiBncmlkLCBjb25zdCBSZW5k
ZXJCb3gmIGNoaWxkKQogICAgIHJldHVybiBjaGlsZC5pc0hvcml6b250YWxXcml0aW5nTW9kZSgp
ICE9IGdyaWQuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKIH0KIAorYm9vbCBpc09ydGhvZ29u
YWxQYXJlbnQoY29uc3QgUmVuZGVyR3JpZCYgZ3JpZCwgY29uc3QgUmVuZGVyRWxlbWVudCYgcGFy
ZW50KQoreworICAgIHJldHVybiBwYXJlbnQuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAhPSBn
cmlkLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7Cit9CisKIGJvb2wgaXNBc3BlY3RSYXRpb0Js
b2NrU2l6ZURlcGVuZGVudENoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpCiB7CiAgICAgcmV0
dXJuIChjaGlsZC5zdHlsZSgpLmhhc0FzcGVjdFJhdGlvKCkgfHwgY2hpbGQuaGFzSW50cmluc2lj
QXNwZWN0UmF0aW8oKSkgJiYgKGNoaWxkLmhhc1JlbGF0aXZlTG9naWNhbEhlaWdodCgpIHx8IGNo
aWxkLmhhc1N0cmV0Y2hlZExvZ2ljYWxIZWlnaHQoKSk7CkBAIC05Miw2ICs5NywxMSBAQCBHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24gZmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoY29uc3QgUmVu
ZGVyR3JpZCYgZ3JpZCwgY29ucwogICAgIHJldHVybiAhaXNPcnRob2dvbmFsQ2hpbGQoZ3JpZCwg
Y2hpbGQpID8gZGlyZWN0aW9uIDogKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gRm9yUm93cyA6
IEZvckNvbHVtbnMpOwogfQogCitHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZmxvd0F3YXJlRGly
ZWN0aW9uRm9yUGFyZW50KGNvbnN0IFJlbmRlckdyaWQmIGdyaWQsIGNvbnN0IFJlbmRlckVsZW1l
bnQmIHBhcmVudCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBy
ZXR1cm4gaXNPcnRob2dvbmFsUGFyZW50KGdyaWQsIHBhcmVudCkgPyAoZGlyZWN0aW9uID09IEZv
ckNvbHVtbnMgPyBGb3JSb3dzIDogRm9yQ29sdW1ucykgOiBkaXJlY3Rpb247Cit9CisKIGJvb2wg
aGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY29uc3QgUmVu
ZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAg
ICByZXR1cm4gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjaGlsZC5oYXNPdmVycmlkaW5nQ29u
dGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpIDogY2hpbGQuaGFzT3ZlcnJpZGluZ0Nv
bnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuaAppbmRleCA4NjE3YzJjMTIzZDAxYjI2YmQ4
MmY0MzBmYzU1ODk5NTEzMWFiZGRkLi4wNDU2MWQzOTM0MTUzYjQ2MmExNzZmMGE0ZjhkNmZjY2Jj
Y2UzZjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1
bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rp
b25zLmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVu
ZGVyQm94OworY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRlckdyaWQ7CiAKIGVudW0g
R3JpZEF4aXMgeyBHcmlkUm93QXhpcywgR3JpZENvbHVtbkF4aXMgfTsKQEAgLTQwLDggKzQxLDEw
IEBAIG5hbWVzcGFjZSBHcmlkTGF5b3V0RnVuY3Rpb25zIHsKIExheW91dFVuaXQgY29tcHV0ZU1h
cmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyR3JpZCYsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiwgY29uc3QgUmVuZGVyQm94Jik7CiBMYXlvdXRVbml0IG1hcmdpbkxvZ2ljYWxT
aXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyR3JpZCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwg
Y29uc3QgUmVuZGVyQm94Jik7CiBib29sIGlzT3J0aG9nb25hbENoaWxkKGNvbnN0IFJlbmRlckdy
aWQmLCBjb25zdCBSZW5kZXJCb3gmKTsKK2Jvb2wgaXNPcnRob2dvbmFsUGFyZW50KGNvbnN0IFJl
bmRlckdyaWQmLCBjb25zdCBSZW5kZXJFbGVtZW50JiBwYXJlbnQpOwogYm9vbCBpc0FzcGVjdFJh
dGlvQmxvY2tTaXplRGVwZW5kZW50Q2hpbGQoY29uc3QgUmVuZGVyQm94Jik7CiBHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24gZmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoY29uc3QgUmVuZGVyR3Jp
ZCYsIGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7CitHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24gZmxvd0F3YXJlRGlyZWN0aW9uRm9yUGFyZW50KGNvbnN0IFJlbmRl
ckdyaWQmLCBjb25zdCBSZW5kZXJFbGVtZW50JiBwYXJlbnQsIEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbik7CiBib29sIGhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNo
aWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7CiBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZv
ckNoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0
aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRo
bS5jcHAKaW5kZXggMjQ0Nzc4NWY3ZTQxMjE4Yzk3ZjJiNTBiZDAzM2YyNjllMDgwZTE2Yi4uMDBh
NTc2NmIzZTA5YzVhNWM3MTgzYzVlNGVlNGJlZWNhZDgzMmZlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKQEAgLTEz
OTksMTEgKzEzOTksNzAgQEAgdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmNvbXB1dGVC
YXNlbGluZUFsaWdubWVudENvbnRleHQoKQogICAgIH0KIH0KIAorc3RhdGljIHZvaWQgcmVtb3Zl
U3ViZ3JpZE1hcmdpbkJvcmRlclBhZGRpbmdGcm9tVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2s+JiB0
cmFja3MsIExheW91dFVuaXQgbWJwLCBib29sIGZvcndhcmRzKQoreworICAgIGludCBudW1UcmFj
a3MgPSB0cmFja3Muc2l6ZSgpOworICAgIGludCBpID0gZm9yd2FyZHMgPyAwIDogbnVtVHJhY2tz
IC0gMTsKKyAgICB3aGlsZSAobWJwID4gMCAmJiAoZm9yd2FyZHMgPyBpIDwgbnVtVHJhY2tzIDog
aSA+PSAwKSkgeworICAgICAgICBMYXlvdXRVbml0IHNpemUgPSB0cmFja3NbaV0uYmFzZVNpemUo
KTsKKyAgICAgICAgaWYgKHNpemUgPiBtYnApIHsKKyAgICAgICAgICAgIHNpemUgLT0gbWJwOwor
ICAgICAgICAgICAgbWJwID0gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1icCAt
PSBzaXplOworICAgICAgICAgICAgc2l6ZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgdHJhY2tz
W2ldLnNldEJhc2VTaXplKHNpemUpOworCisgICAgICAgIGZvcndhcmRzID8gaSsrIDogaS0tOwor
ICAgIH0KK30KKworYm9vbCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmNvcHlVc2VkVHJhY2tT
aXplc0ZvclN1YmdyaWQoKQoreworICAgIEFTU0VSVChpczxSZW5kZXJHcmlkPihtX3JlbmRlckdy
aWQtPnBhcmVudCgpKSk7CisgICAgUmVuZGVyR3JpZCogb3V0ZXIgPSBkb3duY2FzdDxSZW5kZXJH
cmlkPihtX3JlbmRlckdyaWQtPnBhcmVudCgpKTsKKyAgICBHcmlkVHJhY2tTaXppbmdBbGdvcml0
aG0mIHBhcmVudEFsZ28gPSBvdXRlci0+bV90cmFja1NpemluZ0FsZ29yaXRobTsKKyAgICBHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxv
d0F3YXJlRGlyZWN0aW9uRm9yUGFyZW50KCptX3JlbmRlckdyaWQsICpvdXRlciwgbV9kaXJlY3Rp
b24pOworICAgIFZlY3RvcjxHcmlkVHJhY2s+JiBwYXJlbnRUcmFja3MgPSBwYXJlbnRBbGdvLnRy
YWNrcyhkaXJlY3Rpb24pOworCisgICAgaWYgKCFwYXJlbnRUcmFja3Muc2l6ZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBHcmlkU3BhbiBzcGFuID0gb3V0ZXItPmdyaWRTcGFuRm9y
Q2hpbGQoKm1fcmVuZGVyR3JpZCwgZGlyZWN0aW9uKTsKKyAgICBWZWN0b3I8R3JpZFRyYWNrPiYg
YWxsVHJhY2tzID0gdHJhY2tzKG1fZGlyZWN0aW9uKTsKKyAgICBpbnQgbnVtVHJhY2tzID0gYWxs
VHJhY2tzLnNpemUoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVRyYWNrczsgaSsrKQor
ICAgICAgICBhbGxUcmFja3NbaV0gPSBwYXJlbnRUcmFja3NbaSArIHNwYW4uc3RhcnRMaW5lKCld
OworCisgICAgaWYgKEdyaWRMYXlvdXRGdW5jdGlvbnM6OmlzU3ViZ3JpZFJldmVyc2VkRGlyZWN0
aW9uKCpvdXRlciwgZGlyZWN0aW9uLCAqbV9yZW5kZXJHcmlkKSkKKyAgICAgICAgYWxsVHJhY2tz
LnJldmVyc2UoKTsKKworICAgIExheW91dFVuaXQgc3RhcnRNQlAgPSAobV9kaXJlY3Rpb24gPT0g
Rm9yQ29sdW1ucykgPyBtX3JlbmRlckdyaWQtPm1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmdTdGFy
dCgpIDogbV9yZW5kZXJHcmlkLT5tYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nQmVmb3JlKCk7Cisg
ICAgcmVtb3ZlU3ViZ3JpZE1hcmdpbkJvcmRlclBhZGRpbmdGcm9tVHJhY2tzKGFsbFRyYWNrcywg
c3RhcnRNQlAsIHRydWUpOworICAgIExheW91dFVuaXQgZW5kTUJQID0gKG1fZGlyZWN0aW9uID09
IEZvckNvbHVtbnMpID8gbV9yZW5kZXJHcmlkLT5tYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nRW5k
KCkgOiBtX3JlbmRlckdyaWQtPm1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmdBZnRlcigpOworICAg
IHJlbW92ZVN1YmdyaWRNYXJnaW5Cb3JkZXJQYWRkaW5nRnJvbVRyYWNrcyhhbGxUcmFja3MsIGVu
ZE1CUCwgZmFsc2UpOworCisgICAgTGF5b3V0VW5pdCBnYXBEaWZmZXJlbmNlID0gKG1fcmVuZGVy
R3JpZC0+Z3JpZEdhcChtX2RpcmVjdGlvbikgLSBvdXRlci0+Z3JpZEdhcChkaXJlY3Rpb24pKSAv
IDI7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UcmFja3M7IGkrKykgeworICAgICAgICBM
YXlvdXRVbml0IHNpemUgPSBhbGxUcmFja3NbaV0uYmFzZVNpemUoKTsKKyAgICAgICAgaWYgKGkp
CisgICAgICAgICAgICBzaXplIC09IGdhcERpZmZlcmVuY2U7CisgICAgICAgIGlmIChpICE9IG51
bVRyYWNrcyAtIDEpCisgICAgICAgICAgICBzaXplIC09IGdhcERpZmZlcmVuY2U7CisgICAgICAg
IGFsbFRyYWNrc1tpXS5zZXRCYXNlU2l6ZShzdGQ6Om1heChzaXplLCAwX2x1KSk7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6cnVu
KCkKIHsKICAgICBBU1NFUlQod2FzU2V0dXAoKSk7CiAgICAgU3RhdGVNYWNoaW5lIHN0YXRlTWFj
aGluZSgqdGhpcyk7CiAKKyAgICBpZiAobV9yZW5kZXJHcmlkLT5pc1N1YmdyaWQobV9kaXJlY3Rp
b24pICYmIGNvcHlVc2VkVHJhY2tTaXplc0ZvclN1YmdyaWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgLy8gU3RlcCAxLgogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5p
dGlhbEZyZWVTcGFjZSA9IGZyZWVTcGFjZShtX2RpcmVjdGlvbik7CiAgICAgaW5pdGlhbGl6ZVRy
YWNrU2l6ZXMoKTsKQEAgLTE0NTMsNiArMTUxMiwxMSBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0Fs
Z29yaXRobTo6cmVzZXQoKQogI2lmIEFTU0VSVF9FTkFCTEVECiBib29sIEdyaWRUcmFja1Npemlu
Z0FsZ29yaXRobTo6dHJhY2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKCkgY29uc3QKIHsK
KyAgICAvLyBTdWJncmlkcyBpbmhlcml0IHRoZWlyIHNpemluZyBkaXJlY3RseSBmcm9tIHRoZSBw
YXJlbnQsIHNvIG1heSBiZSB1bnJlbGF0ZWQKKyAgICAvLyB0byB0aGVpciBpbml0aWFsIGJhc2Ug
c2l6ZS4KKyAgICBpZiAobV9yZW5kZXJHcmlkLT5pc1N1YmdyaWQobV9kaXJlY3Rpb24pKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2s+JiBhbGxUcmFj
a3MgPSB0cmFja3MobV9kaXJlY3Rpb24pOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYWxs
VHJhY2tzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IGF1dG8mIHRyYWNrU2l6ZSA9IGFs
bFRyYWNrc1tpXS5jYWNoZWRUcmFja1NpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uaAppbmRleCBhZTFkZDZjN2FjZGJkYjg3
ZGZmYzFmN2FjNjIzOGQzZWU4ZDdhZTY1Li41OTRkNWZhZTlhYWNhZWVjYTUwZDkwMzlkZTE2NmUz
NDQzMzVkMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFj
a1NpemluZ0FsZ29yaXRobS5oCkBAIC0xOTMsNiArMTkzLDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IHN0cmV0Y2hGbGV4aWJsZVRyYWNrcyhzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGZyZWVTcGFj
ZSk7CiAgICAgdm9pZCBzdHJldGNoQXV0b1RyYWNrcygpOwogCisgICAgYm9vbCBjb3B5VXNlZFRy
YWNrU2l6ZXNGb3JTdWJncmlkKCk7CisKICAgICAvLyBTdGF0ZSBtYWNoaW5lLgogICAgIHZvaWQg
YWR2YW5jZU5leHRTdGF0ZSgpOwogICAgIGJvb2wgaXNWYWxpZFRyYW5zaXRpb24oKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5k
ZXggMjJkNmIyZGJhYjgyYmVhYTcwYTBhMTgxOGQ5ZDFiMjc0ZTdmY2VmYi4uOTdiOTY1YTMwZmRk
NzY2MzE4YmIzZDhhNWMwOWMzNGM1YTgzYmVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTE3Nyw2ICsxNzcsMTEgQEAgcHVibGlj
OgogICAgIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpIGNvbnN0IHsgcmV0dXJu
IGJvcmRlckJlZm9yZSgpICsgcGFkZGluZ0JlZm9yZSgpOyB9CiAgICAgTGF5b3V0VW5pdCBib3Jk
ZXJBbmRQYWRkaW5nQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBib3JkZXJBZnRlcigpICsgcGFkZGlu
Z0FmdGVyKCk7IH0KIAorICAgIExheW91dFVuaXQgbWFyZ2luQW5kQm9yZGVyQW5kUGFkZGluZ1N0
YXJ0KCkgY29uc3QgeyByZXR1cm4gbWFyZ2luU3RhcnQoKSArIGJvcmRlclN0YXJ0KCkgKyBwYWRk
aW5nU3RhcnQoKTsgfQorICAgIExheW91dFVuaXQgbWFyZ2luQW5kQm9yZGVyQW5kUGFkZGluZ0Vu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1hcmdpbkVuZCgpICsgYm9yZGVyRW5kKCkgKyBwYWRkaW5nRW5k
KCk7IH0KKyAgICBMYXlvdXRVbml0IG1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSBj
b25zdCB7IHJldHVybiBtYXJnaW5CZWZvcmUoKSArIGJvcmRlckJlZm9yZSgpICsgcGFkZGluZ0Jl
Zm9yZSgpOyB9CisgICAgTGF5b3V0VW5pdCBtYXJnaW5BbmRCb3JkZXJBbmRQYWRkaW5nQWZ0ZXIo
KSBjb25zdCB7IHJldHVybiBtYXJnaW5BZnRlcigpICsgYm9yZGVyQWZ0ZXIoKSArIHBhZGRpbmdB
ZnRlcigpOyB9CisKICAgICBMYXlvdXRVbml0IHZlcnRpY2FsQm9yZGVyQW5kUGFkZGluZ0V4dGVu
dCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCkgKyBwYWRkaW5n
VG9wKCkgKyBwYWRkaW5nQm90dG9tKCk7IH0KICAgICBMYXlvdXRVbml0IGhvcml6b250YWxCb3Jk
ZXJBbmRQYWRkaW5nRXh0ZW50KCkgY29uc3QgeyByZXR1cm4gYm9yZGVyTGVmdCgpICsgYm9yZGVy
UmlnaHQoKSArIHBhZGRpbmdMZWZ0KCkgKyBwYWRkaW5nUmlnaHQoKTsgfQogICAgIExheW91dFVu
aXQgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBib3JkZXJB
bmRQYWRkaW5nQmVmb3JlKCkgKyBib3JkZXJBbmRQYWRkaW5nQWZ0ZXIoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDM1YzM4Zjc2NTA5MTQ3NTRlMGIwZjU4
MzkwYWE4YzRlMzE1YmNkZDYuLjJkYjFkNTU1ZDU2OGY5NWNiNjVjM2VhYTU1NjMyNzk1ZGQxMDc4
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTMyOSw3ICsz
MjksNiBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJl
biwgTGF5b3V0VW5pdCkKICAgICAgICAgfQogCiAgICAgICAgIGxheW91dEdyaWRJdGVtcygpOwot
ICAgICAgICBtX3RyYWNrU2l6aW5nQWxnb3JpdGhtLnJlc2V0KCk7CiAKICAgICAgICAgZW5kQW5k
Q29tbWl0VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKTsKIApAQCAtMzQw
LDYgKzMzOSw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENo
aWxkcmVuLCBMYXlvdXRVbml0KQogICAgICAgICBtX291dE9mRmxvd0l0ZW1Sb3cuY2xlYXIoKTsK
IAogICAgICAgICBsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyhyZWxheW91dENoaWxkcmVuIHx8IGlz
RG9jdW1lbnRFbGVtZW50UmVuZGVyZXIoKSk7CisgICAgICAgIG1fdHJhY2tTaXppbmdBbGdvcml0
aG0ucmVzZXQoKTsKIAogICAgICAgICBjb21wdXRlT3ZlcmZsb3coY2xpZW50TG9naWNhbFJpZ2h0
QW5kQm90dG9tQWZ0ZXJSZXBvc2l0aW9uaW5nKCkuaGVpZ2h0KCkpOwogICAgIH0KQEAgLTM2Miw4
ICszNjIsMTUgQEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpncmlkR2FwKEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWwKIHsKICAgICBBU1NFUlQoIWF2YWls
YWJsZVNpemUgfHwgKmF2YWlsYWJsZVNpemUgPj0gMCk7CiAgICAgY29uc3QgR2FwTGVuZ3RoJiBn
YXBMZW5ndGggPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucz8gc3R5bGUoKS5jb2x1bW5HYXAoKSA6
IHN0eWxlKCkucm93R2FwKCk7Ci0gICAgaWYgKGdhcExlbmd0aC5pc05vcm1hbCgpKQotICAgICAg
ICByZXR1cm4gMF9sdTsKKyAgICBpZiAoZ2FwTGVuZ3RoLmlzTm9ybWFsKCkpIHsKKyAgICAgICAg
aWYgKCFpc1N1YmdyaWQoZGlyZWN0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiAwX2x1OworCisg
ICAgICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBwYXJlbnREaXJlY3Rpb24gPSBHcmlkTGF5
b3V0RnVuY3Rpb25zOjpmbG93QXdhcmVEaXJlY3Rpb25Gb3JQYXJlbnQoKnRoaXMsICpwYXJlbnQo
KSwgZGlyZWN0aW9uKTsKKyAgICAgICAgaWYgKCFhdmFpbGFibGVTaXplKQorICAgICAgICAgICAg
cmV0dXJuIGRvd25jYXN0PFJlbmRlckdyaWQ+KHBhcmVudCgpKS0+Z3JpZEdhcChwYXJlbnREaXJl
Y3Rpb24sIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJHcmlk
PihwYXJlbnQoKSktPmdyaWRHYXAocGFyZW50RGlyZWN0aW9uKTsKKyAgICB9CiAKICAgICByZXR1
cm4gdmFsdWVGb3JMZW5ndGgoZ2FwTGVuZ3RoLmxlbmd0aCgpLCBhdmFpbGFibGVTaXplLnZhbHVl
X29yKDApKTsKIH0KQEAgLTExMjgsNiArMTEzNSw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cG9wdWxh
dGVHcmlkUG9zaXRpb25zRm9yRGlyZWN0aW9uKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJl
CiAgICAgICAgIC8vIGNvbXB1dGUgdGhlIGdhcCBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSB0cmFj
a3Mgd2l0aG91dCBleGFtaW5pbmcgdGhlIHN1cnJvdW5kaW5nIG9uZXMuCiAgICAgICAgIExheW91
dFVuaXQgZ2FwID0gIWhhc0NvbGxhcHNlZFRyYWNrcyA/IGdyaWRHYXAoZGlyZWN0aW9uKSA6IDBf
bHU7CiAgICAgICAgIHVuc2lnbmVkIG5leHRUb0xhc3RMaW5lID0gbnVtYmVyT2ZMaW5lcyAtIDI7
CisKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5leHRUb0xhc3RMaW5lOyArK2kp
CiAgICAgICAgICAgICBwb3NpdGlvbnNbaSArIDFdID0gcG9zaXRpb25zW2ldICsgb2Zmc2V0LmRp
c3RyaWJ1dGlvbk9mZnNldCArIHRyYWNrc1tpXS5iYXNlU2l6ZSgpICsgZ2FwOwogICAgICAgICBw
b3NpdGlvbnNbbGFzdExpbmVdID0gcG9zaXRpb25zW25leHRUb0xhc3RMaW5lXSArIHRyYWNrc1tu
ZXh0VG9MYXN0TGluZV0uYmFzZVNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5oCmluZGV4IGRhNGQ2MzZmOGQzNTA4ZDY3NzE1N2ZlOTE0MTZhYzBkZDE5ODdjMmEuLmIwYzk4
MjcwNDIzNTgxOTM3ZjZmODVlZTk0YWUxYmI3MGM5MjY4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuaApAQCAtMTA3LDYgKzEwNyw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTsKKwogICAg
IEl0ZW1Qb3NpdGlvbiBzZWxmQWxpZ25tZW50Tm9ybWFsQmVoYXZpb3IoY29uc3QgUmVuZGVyQm94
KiBjaGlsZCA9IG51bGxwdHIpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBBU1NFUlQo
Y2hpbGQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGNiMzI3MjliMmZmYzU3NjA1ZmQzMWEzZWEwZjNiN2NjYjRhOWIxMzAu
LjgxNTg2NWI1M2IyNDkyYjg1ZDQ2OWIwYTVkNzQ3YTljY2ExMzJlYzQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAyMi0wMi0xNSAgTWF0dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29t
PgorCisgICAgICAgIENvcHkgdHJhY2sgc2l6ZXMgZnJvbSBwYXJlbnQgZ3JpZCBpbnRvIHN1Ymdy
aWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjMz
NgorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBFeGlzdGlu
ZyB0ZXN0IGV4cGVjdGF0aW9ucyB1cGRhdGVkLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9u
czoKKwogMjAyMi0wMi0xNSAgTWF0dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgog
CiAgICAgICAgIExvb2t1cCBsaW5lIG5hbWVzIGZvciBzdWIgZ3JpZHMgdXNpbmcgbGluZSBuYW1l
cyBmcm9tIGFuY2VzdG9yIGdyaWRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzNjE1OTUxZTNlOGE1
MjI1MzI0ZGFhODUwMmM2YzUyNjQ3OGJlZGE0Li40NjMzYWE3Yjk2YWE2OGRhMWVlNDRhY2Q5Y2M5
MDE1YzgyNmI1MDE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE0MDEsNiArMTQwMSw3IEBAIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL21hc29ucnkvdGVudGF0
aXZlL21hc29ucnktb3JkZXItMDAxCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9tYXNvbnJ5L3RlbnRhdGl2ZS9tYXNvbnJ5LXN1YmdyaWQtMDAxLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL21hc29ucnkvdGVudGF0aXZlL21hc29ucnktc3ViZ3JpZC0wMDIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Z3JpZC9zdWJncmlkL2F1dG8tdHJhY2stc2l6aW5nLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlk
L2Ficy1wb3MtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvYWJzLXBvcy0wMDMuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvc3ViZ3JpZC9hYnMtcG9zLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCkBAIC0x
NDA5LDE3ICsxNDEwLDExIEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtMDAxLmh0bWwgWyBJbWFnZU9uCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwMi5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dy
aWQtZ2FwLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwNS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Z3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2Fw
LTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLTAwOC5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9z
dWJncmlkL2dyaWQtZ2FwLTAwOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtZ2FwLWxhcmdl
ci0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC1sYXJnZXItMDAyLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtbm9ybWFsLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlk
L2dyaWQtZ2FwLXNtYWxsZXItMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvaXRlbS1wZXJjZW50
YWdlLWhlaWdodC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwMi5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQv
b3J0aG9nb25hbC13cml0aW5nLW1vZGUtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvb3J0aG9n
b25hbC13cml0aW5nLW1vZGUtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAgLTE0Mjgs
NiArMTQyMyw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlk
L3N1YmdyaWQvb3J0aG9nb25hbC13cml0aW5nLW1vZGUtMDA0CiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1yZXBlYXQtYXV0by1maXQt
MDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcGFyZW50LXJlcGVhdC1hdXRvLWZpdC0wMDIuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWdyaWQvc3ViZ3JpZC9yZXBlYXQtYXV0by1maWxsLTAwMy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9z
dWJncmlkL3JlcGVhdC1hdXRvLWZpbGwtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvc3ViZ3Jp
ZC1pdGVtLWJsb2NrLXNpemUtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvc3ViZ3JpZC1tYnAt
b3ZlcmZsb3ctMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvc3ViZ3JpZC1tYnAtb3ZlcmZsb3ct
MDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>