<?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>211998</bug_id>
          
          <creation_ts>2020-05-17 12:23:07 -0700</creation_ts>
          <short_desc>Implement conversion between P3 and sRGB color</short_desc>
          <delta_ts>2020-05-18 21:24:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>frankhome61</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1653426</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-17 12:23:07 -0700</bug_when>
    <thetext>Implement conversion between P3 and sRGB color</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653428</commentid>
    <comment_count>1</comment_count>
      <attachid>399598</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-17 12:25:58 -0700</bug_when>
    <thetext>Created attachment 399598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653437</commentid>
    <comment_count>2</comment_count>
      <attachid>399602</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-17 13:05:33 -0700</bug_when>
    <thetext>Created attachment 399602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653447</commentid>
    <comment_count>3</comment_count>
      <attachid>399602</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-17 15:21:25 -0700</bug_when>
    <thetext>Comment on attachment 399602
Patch

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

&gt; Source/WebCore/platform/graphics/ColorUtilities.cpp:84
&gt; +FloatComponents RGBToLinearComponents(const FloatComponents&amp; sRGBColor)

Should remove the s in the parameter name as well.

&gt; Source/WebCore/platform/graphics/ColorUtilities.cpp:125
&gt; +        0.4124564,  0.3575761,  0.1804375, 0.0f, 0.0f,
&gt; +        0.2126729,  0.7151522,  0.0721750, 0.0f, 0.0f,
&gt; +        0.0193339,  0.1191920,  0.9503041, 0.0f, 0.0f,

Missing a few fs here.

&gt; Source/WebCore/platform/graphics/ColorUtilities.cpp:138
&gt; +         2.493496911941425,   -0.9313836179191239, -0.40271078445071684,  0.0f, 0.0f,
&gt; +        -0.8294889695615747,   1.7626640603183463,  0.023624685841943577, 0.0f, 0.0f,
&gt; +         0.03584583024378447, -0.07617238926804182, 0.9568845240076872,   0.0f, 0.0f,

Missing a few fs here as well.

&gt; Source/WebCore/platform/graphics/ColorUtilities.cpp:151
&gt; +        0.4865709486482162, 0.2656676931690931,  0.1982172852343625, 0.0f, 0.0f,
&gt; +        0.2289745640697488, 0.6917385218365064,  0.079286914093745,  0.0f, 0.0f,
&gt; +        0.0000000000000000, 0.04511338185890264, 1.043944368900976,  0.0f, 0.0f,

And here. Also don&apos;t think you quite that many digits for 0.

&gt; Source/WebCore/platform/graphics/ColorUtilities.cpp:437
&gt; +FloatComponents ColorMatrix::transformedColorComponents(const FloatComponents&amp; colorComonents) const

typo in the parameter name colorComonents -&gt; colorComponents</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653455</commentid>
    <comment_count>4</comment_count>
      <attachid>399609</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-17 15:46:51 -0700</bug_when>
    <thetext>Created attachment 399609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653488</commentid>
    <comment_count>5</comment_count>
      <attachid>399609</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-17 21:57:45 -0700</bug_when>
    <thetext>Comment on attachment 399609
Patch

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

Patch looks good.

&gt; Source/WebCore/platform/graphics/ColorUtilities.cpp:64
&gt; +float RGBToLinearColorComponent(float c)

OK as-is. No change needed. Optimal solution would use &quot;rgb&quot; instead of &quot;RGB&quot; per code style guidelines. This comment applies to this **entire** patch,  function names, params, arguments, etc.

&gt; Source/WebCore/platform/graphics/ColorUtilities.cpp:104
&gt; +static FloatComponents XYZToLinearSRGB(const FloatComponents&amp; XYZComponents)

OK as-is. No change needed. Optimal solution would use &quot;xyz&quot; instead of &quot;XYZ&quot; per code style guidelines. This comment applies to this **entire** patch,  function names, params, arguments, etc.

&gt; Source/WebCore/platform/graphics/ColorUtilities.cpp:114
&gt; +    ColorMatrix XYZToLinearSRGBMatrix(values);

Ok as-is. No change needed. Optimal solution is to just inline constructor call below because:

1. Local referenced exactly once.
2. Name of local is self evident: name of function name + &quot;Matrix&quot;

This comment applies to same pattern in code below.

&gt; Source/WebCore/platform/graphics/ColorUtilities.cpp:122
&gt; +    const float values[] = {

OK as-is. No change needed. Optimal solution is to make this constexpr. This comment applies to the same pattern throughout this patch.

&gt; Source/WebCore/platform/graphics/ColorUtilities.cpp:123
&gt; +        0.4124564,  0.3575761,  0.1804375, 0.0f, 0.0f,

OK as-is. No change needed. Optimal solution is to be consistent in suffix usage with above code.

0.0f could be 0 etc etc. &lt;-- no change needed.

&gt; Source/WebCore/platform/graphics/ColorUtilities.cpp:158
&gt; +FloatComponents P3ToSRGB(const FloatComponents&amp; p3)

OK as-is. No change needed. Optimal solution would use &quot;p3&quot; instead of &quot;P3&quot; per code style guidelines. This comment applies to this **entire** patch,  function names, params, arguments, etc.

&gt; Source/WebCore/platform/graphics/ColorUtilities.cpp:163
&gt; +    return linearToRGBComponents(linearSRGB);

Ok as-is. No change needed. Optimal solution writes impl of this function in one line because rhs good enough.

&gt; Source/WebCore/platform/graphics/ColorUtilities.cpp:171
&gt; +    auto linearSRGB = RGBToLinearComponents(sRGB);
&gt; +    auto xyz = linearSRGBToXYZ(linearSRGB);
&gt; +    auto linearP3 = XYZToLinearP3(xyz);
&gt; +    return linearToRGBComponents(linearP3);

Ditto.

&gt; Source/WebCore/platform/graphics/ColorUtilities.cpp:449
&gt; +    float red = colorComponents.components[0];
&gt; +    float green = colorComponents.components[1];
&gt; +    float blue = colorComponents.components[2];
&gt; +    float alpha = colorComponents.components[3];
&gt; +
&gt; +    return {
&gt; +        m_matrix[0][0] * red + m_matrix[0][1] * green + m_matrix[0][2] * blue + m_matrix[0][3] * alpha + m_matrix[0][4],
&gt; +        m_matrix[1][0] * red + m_matrix[1][1] * green + m_matrix[1][2] * blue + m_matrix[1][3] * alpha + m_matrix[1][4],
&gt; +        m_matrix[2][0] * red + m_matrix[2][1] * green + m_matrix[2][2] * blue + m_matrix[2][3] * alpha + m_matrix[2][4],
&gt; +        m_matrix[3][0] * red + m_matrix[3][1] * green + m_matrix[3][2] * blue + m_matrix[3][3] * alpha + m_matrix[3][4]
&gt; +    };

OK as-is. No change needed. Optimal solution would implement this using transformColorComponents() that takes lvalue ref and inline this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653685</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-18 11:24:02 -0700</bug_when>
    <thetext>This does two matrix based transformations to do the conversion (once into XYC space, once from XYZ to specified space). Is this optimal? Can those two conversions be linearized down to a single transformation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653688</commentid>
    <comment_count>7</comment_count>
      <attachid>399661</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-18 11:28:29 -0700</bug_when>
    <thetext>Created attachment 399661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653689</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-18 11:31:18 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #6)
&gt; This does two matrix based transformations to do the conversion (once into
&gt; XYC space, once from XYZ to specified space). Is this optimal? Can those two
&gt; conversions be linearized down to a single transformation?

They could be. Math is hard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653736</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-18 13:22:19 -0700</bug_when>
    <thetext>Committed r261828: &lt;https://trac.webkit.org/changeset/261828&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399661.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653737</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-18 13:23:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/63357464&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399598</attachid>
            <date>2020-05-17 12:25:58 -0700</date>
            <delta_ts>2020-05-17 13:05:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211998-20200517122557.patch</filename>
            <type>text/plain</type>
            <size>14513</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFkNzMyZTlhOGU3NDkw
YmE3M2JjZmMyYTJlODdjMzcxMWIzN2M2YS4uMTVkNTNmMDNiOTJkMWQ5MGM3MTFhYTVkMGExZDk1
NzM1NjBjMjA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIwLTA1LTE3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBj
b252ZXJzaW9uIGJldHdlZW4gUDMgYW5kIHNSR0IgY29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTk5OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQ29sb3I6OnRvU1JHQkFDb21wb25l
bnRzTG9zc3koKSB3YXMgYSBsaWUgYmVjYXVzZSBpdCBkaWRuJ3QgYWN0dWFsbHkgY29udmVydCBl
eHRlbmRlZAorICAgICAgICBjb2xvcnMgaW50byBzUkdCLiBGaXggdGhhdCBieSBjb252ZXJ0aW5n
IFAzIGFuZCBsaW5hZXJSR0IgY29sb3JzIGludG8gc1JHQiwgdXNpbmcgdGhlIGNvbG9yCisgICAg
ICAgIG1hdGggZnJvbSBDU1MgQ29sb3IgNC4KKworICAgICAgICBSZW5hbWVkIHRoZSB2YXJpb3Vz
ICJsaW5lYXIgdG8gc1JHQiIgZnVuY3Rpb25zIGJlY2F1c2UgdGhleSB3b3JrIGZvciBhbnkgUkdC
IGNvbG9ycywKKyAgICAgICAgbm90IGp1c3Qgc1JHQi4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjp0b1NSR0JBQ29tcG9u
ZW50c0xvc3N5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpzUkdCQ29sb3JU
b0xpbmVhckNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UkdCVG9MaW5lYXJDb21wb25l
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmxpbmVhclRvUkdCQ29tcG9uZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpYWVpUb0xpbmVhclNSR0IpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyU1JH
QlRvWFlaKToKKyAgICAgICAgKFdlYkNvcmU6OlhZWlRvTGluZWFyUDMpOgorICAgICAgICAoV2Vi
Q29yZTo6bGluZWFyUDNUb1hZWik6CisgICAgICAgIChXZWJDb3JlOjpQM1RvU1JHQik6CisgICAg
ICAgIChXZWJDb3JlOjpzUkdCVG9QMyk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvck1hdHJpeDo6
dHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6bGlu
ZWFyVG9TUkdCQ29sb3JDb21wb25lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JH
QlRvTGluZWFyQ29sb3JDb21wb25lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JH
QlRvTGluZWFyQ29tcG9uZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpsaW5lYXJU
b1NSR0JDb21wb25lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclV0aWxpdGllcy5oOgorCiAyMDIwLTA1LTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBvcGVyYXRvcj09IGFuZCBoYXNoKCkgZm9yIEV4
dGVuZGVkQ29sb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcApp
bmRleCA5MmIzYjViYzA5MWFjZGE2YzQzOTNhY2EwNDg1ODNmZjQ3MGRjOThiLi5kNGQ3NTFmZjYx
MGIwOWUzMjMyNjc1MmVmZjlhNGZlM2U0NTZjNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3IuY3BwCkBAIC01NjEsMTAgKzU2MSwxMSBAQCBGbG9hdENvbXBvbmVu
dHMgQ29sb3I6OnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSBjb25zdAogICAgICAgICBhdXRvJiBl
eHRlbmRlZENvbG9yID0gYXNFeHRlbmRlZCgpOwogICAgICAgICBzd2l0Y2ggKGV4dGVuZGVkQ29s
b3IuY29sb3JTcGFjZSgpKSB7CiAgICAgICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAg
ICAgICAgIHJldHVybiBleHRlbmRlZENvbG9yLmNoYW5uZWxzKCk7CiAgICAgICAgIGNhc2UgQ29s
b3JTcGFjZTo6TGluZWFyUkdCOgorICAgICAgICAgICAgcmV0dXJuIGxpbmVhclRvUkdCQ29tcG9u
ZW50cyhleHRlbmRlZENvbG9yLmNoYW5uZWxzKCkpOwogICAgICAgICBjYXNlIENvbG9yU3BhY2U6
OkRpc3BsYXlQMzoKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgY29udmVydCBp
bnRvIHNSR0IgYW5kIHNob3VsZC4KLSAgICAgICAgICAgIHJldHVybiBleHRlbmRlZENvbG9yLmNo
YW5uZWxzKCk7CisgICAgICAgICAgICByZXR1cm4gUDNUb1NSR0IoZXh0ZW5kZWRDb2xvci5jaGFu
bmVscygpKTsKICAgICAgICAgfQogICAgIH0KICAgICBmbG9hdCByLCBnLCBiLCBhOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKaW5kZXggYjQwOTdmNGEwMTUxYjgwM2Yy
YThhNjE3YjgxMDExMmJlZDQ0YTdlZS4uNjhhNmI4NGU3YmJkMDE4MDlkZGQ0NjI2NzBlMDJjMzQy
N2Y3MThiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCkBAIC0y
MTEsMTEgKzIxMSwxMiBAQCBwdWJsaWM6CiAgICAgLy8gcmVwbGFjZWQgd2l0aCBhbHRlcm5hdGl2
ZSBhY2Nlc3NvcnMuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRSR0JBKGZsb2F0JiByLCBm
bG9hdCYgZywgZmxvYXQmIGIsIGZsb2F0JiBhKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGdldFJHQkEoZG91YmxlJiByLCBkb3VibGUmIGcsIGRvdWJsZSYgYiwgZG91YmxlJiBhKSBj
b25zdDsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SFNMKGRvdWJsZSYgaCwgZG91Ymxl
JiBzLCBkb3VibGUmIGwpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SFNWKGRv
dWJsZSYgaCwgZG91YmxlJiBzLCBkb3VibGUmIHYpIGNvbnN0OwogCiAgICAgLy8gVGhpcyB3aWxs
IGNvbnZlcnQgbm9uLXNSR0IgY29sb3JzcGFjZSBjb2xvcnMgaW50byBzUkdCLgotICAgIEZsb2F0
Q29tcG9uZW50cyB0b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgRmxvYXRDb21wb25lbnRzIHRvU1JHQkFDb21wb25lbnRzTG9zc3koKSBjb25zdDsKIAog
ICAgIENvbG9yIGxpZ2h0KCkgY29uc3Q7CiAgICAgQ29sb3IgZGFyaygpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCmlu
ZGV4IGI1YzE1OWI5NWNhNzZiY2FmMGU1NTdlYzdkNmY4MmZiNjAxNWM0NDkuLjlhMDMyMmY4MjY5
YTlhMGExNDQ0MDA3ZTI5MWE3NTk5ZDViMzUxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAg
Ym9vbCBhcmVFc3NlbnRpYWxseUVxdWFsKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgYSwgY29uc3Qg
RmxvYXRDb21wb25lbnRzJiBiKQogfQogCiAvLyBUaGVzZSBhcmUgdGhlIHN0YW5kYXJkIHNSR0Ig
PC0+IGxpbmVhclJHQiBjb252ZXJzaW9uIGZ1bmN0aW9ucyAoaHR0cHM6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvU1JHQikuCi1mbG9hdCBsaW5lYXJUb1NSR0JDb2xvckNvbXBvbmVudChmbG9hdCBj
KQorZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9hdCBjKQogewogICAgIGlmIChj
IDwgMC4wMDMxMzA4ZikKICAgICAgICAgcmV0dXJuIDEyLjkyZiAqIGM7CkBAIC02MSw3ICs2MSw3
IEBAIGZsb2F0IGxpbmVhclRvU1JHQkNvbG9yQ29tcG9uZW50KGZsb2F0IGMpCiAgICAgcmV0dXJu
IGNsYW1wVG88ZmxvYXQ+KDEuMDU1ZiAqIHN0ZDo6cG93KGMsIDEuMGYgLyAyLjRmKSAtIDAuMDU1
ZiwgMCwgMSk7CiB9CiAKLWZsb2F0IHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGZsb2F0IGMp
CitmbG9hdCBSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGZsb2F0IGMpCiB7CiAgICAgaWYgKGMg
PD0gMC4wNDA0NWYpCiAgICAgICAgIHJldHVybiBjIC8gMTIuOTJmOwpAQCAtNzQsMzMgKzc0LDEw
MyBAQCBGbG9hdENvbXBvbmVudHMgc1JHQkNvbG9yVG9MaW5lYXJDb21wb25lbnRzKGNvbnN0IENv
bG9yJiBjb2xvcikKICAgICBmbG9hdCByLCBnLCBiLCBhOwogICAgIGNvbG9yLmdldFJHQkEociwg
ZywgYiwgYSk7CiAgICAgcmV0dXJuIHsKLSAgICAgICAgc1JHQlRvTGluZWFyQ29sb3JDb21wb25l
bnQociksCi0gICAgICAgIHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGcpLAotICAgICAgICBz
UkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChiKSwKKyAgICAgICAgUkdCVG9MaW5lYXJDb2xvckNv
bXBvbmVudChyKSwKKyAgICAgICAgUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChnKSwKKyAgICAg
ICAgUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChiKSwKICAgICAgICAgYQogICAgIH07CiB9CiAK
LUZsb2F0Q29tcG9uZW50cyBzUkdCVG9MaW5lYXJDb21wb25lbnRzKGNvbnN0IEZsb2F0Q29tcG9u
ZW50cyYgc1JHQkNvbG9yKQorRmxvYXRDb21wb25lbnRzIFJHQlRvTGluZWFyQ29tcG9uZW50cyhj
b25zdCBGbG9hdENvbXBvbmVudHMmIHNSR0JDb2xvcikKIHsKICAgICByZXR1cm4gewotICAgICAg
ICBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChzUkdCQ29sb3IuY29tcG9uZW50c1swXSksCi0g
ICAgICAgIHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50KHNSR0JDb2xvci5jb21wb25lbnRzWzFd
KSwKLSAgICAgICAgc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnQoc1JHQkNvbG9yLmNvbXBvbmVu
dHNbMl0pLAorICAgICAgICBSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50KHNSR0JDb2xvci5jb21w
b25lbnRzWzBdKSwKKyAgICAgICAgUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChzUkdCQ29sb3Iu
Y29tcG9uZW50c1sxXSksCisgICAgICAgIFJHQlRvTGluZWFyQ29sb3JDb21wb25lbnQoc1JHQkNv
bG9yLmNvbXBvbmVudHNbMl0pLAogICAgICAgICBzUkdCQ29sb3IuY29tcG9uZW50c1szXQogICAg
IH07CiB9CiAKLUZsb2F0Q29tcG9uZW50cyBsaW5lYXJUb1NSR0JDb21wb25lbnRzKGNvbnN0IEZs
b2F0Q29tcG9uZW50cyYgbGluZWFyUkdCKQorRmxvYXRDb21wb25lbnRzIGxpbmVhclRvUkdCQ29t
cG9uZW50cyhjb25zdCBGbG9hdENvbXBvbmVudHMmIGxpbmVhclJHQikKIHsKICAgICByZXR1cm4g
ewotICAgICAgICBsaW5lYXJUb1NSR0JDb2xvckNvbXBvbmVudChsaW5lYXJSR0IuY29tcG9uZW50
c1swXSksCi0gICAgICAgIGxpbmVhclRvU1JHQkNvbG9yQ29tcG9uZW50KGxpbmVhclJHQi5jb21w
b25lbnRzWzFdKSwKLSAgICAgICAgbGluZWFyVG9TUkdCQ29sb3JDb21wb25lbnQobGluZWFyUkdC
LmNvbXBvbmVudHNbMl0pLAorICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGxpbmVh
clJHQi5jb21wb25lbnRzWzBdKSwKKyAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChs
aW5lYXJSR0IuY29tcG9uZW50c1sxXSksCisgICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25l
bnQobGluZWFyUkdCLmNvbXBvbmVudHNbMl0pLAogICAgICAgICBsaW5lYXJSR0IuY29tcG9uZW50
c1szXQogICAgIH07CiB9CiAKK3N0YXRpYyBGbG9hdENvbXBvbmVudHMgWFlaVG9MaW5lYXJTUkdC
KGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgWFlaQ29tcG9uZW50cykKK3sKKyAgICAvLyBodHRwczov
L2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCisgICAgLy8gaHR0cDovL3d3dy5icnVjZWxpbmRi
bG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbAorICAgIGNvbnN0IGZs
b2F0IHZhbHVlc1tdID0geworICAgICAgICAgMy4yNDA0NTQyZiwgLTEuNTM3MTM4NWYsIC0wLjQ5
ODUzMTRmLCAwLjBmLCAwLjBmLAorICAgICAgICAtMC45NjkyNjYwZiwgIDEuODc2MDEwOGYsICAw
LjA0MTU1NjBmLCAwLjBmLCAwLjBmLAorICAgICAgICAgMC4wNTU2NDM0ZiwgLTAuMjA0MDI1OWYs
ICAxLjA1NzIyNTJmLCAwLjBmLCAwLjBmLAorICAgICAgICAgMC4wZiwgICAgICAgIDAuMGYsICAg
ICAgICAwLjBmLCAgICAgICAxLjBmLCAwLjBmLAorICAgIH07CisgICAgQ29sb3JNYXRyaXggWFla
VG9MaW5lYXJTUkdCTWF0cml4KHZhbHVlcyk7CisgICAgcmV0dXJuIFhZWlRvTGluZWFyU1JHQk1h
dHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhYWVpDb21wb25lbnRzKTsKK30KKworc3Rh
dGljIEZsb2F0Q29tcG9uZW50cyBsaW5lYXJTUkdCVG9YWVooY29uc3QgRmxvYXRDb21wb25lbnRz
JiBYWVpDb21wb25lbnRzKQoreworICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtp
L1NSR0IKKyAgICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vx
bl9SR0JfWFlaX01hdHJpeC5odG1sCisgICAgY29uc3QgZmxvYXQgdmFsdWVzW10gPSB7CisgICAg
ICAgIDAuNDEyNDU2NCwgIDAuMzU3NTc2MSwgIDAuMTgwNDM3NSwgMC4wZiwgMC4wZiwKKyAgICAg
ICAgMC4yMTI2NzI5LCAgMC43MTUxNTIyLCAgMC4wNzIxNzUwLCAwLjBmLCAwLjBmLAorICAgICAg
ICAwLjAxOTMzMzksICAwLjExOTE5MjAsICAwLjk1MDMwNDEsIDAuMGYsIDAuMGYsCisgICAgICAg
IDAuMGYsICAgICAgIDAuMGYsICAgICAgIDAuMGYsICAgICAgMS4wZiwgMC4wZiwKKyAgICB9Owor
ICAgIENvbG9yTWF0cml4IGxpbmVhclNSR0JUb1hZWk1hdHJpeCh2YWx1ZXMpOworICAgIHJldHVy
biBsaW5lYXJTUkdCVG9YWVpNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoWFlaQ29t
cG9uZW50cyk7Cit9CisKK3N0YXRpYyBGbG9hdENvbXBvbmVudHMgWFlaVG9MaW5lYXJQMyhjb25z
dCBGbG9hdENvbXBvbmVudHMmIFhZWkNvbXBvbmVudHMpCit7CisgICAgLy8gaHR0cHM6Ly9kcmFm
dHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCisgICAgY29uc3Qg
ZmxvYXQgdmFsdWVzW10gPSB7CisgICAgICAgICAyLjQ5MzQ5NjkxMTk0MTQyNSwgICAtMC45MzEz
ODM2MTc5MTkxMjM5LCAtMC40MDI3MTA3ODQ0NTA3MTY4NCwgIDAuMGYsIDAuMGYsCisgICAgICAg
IC0wLjgyOTQ4ODk2OTU2MTU3NDcsICAgMS43NjI2NjQwNjAzMTgzNDYzLCAgMC4wMjM2MjQ2ODU4
NDE5NDM1NzcsIDAuMGYsIDAuMGYsCisgICAgICAgICAwLjAzNTg0NTgzMDI0Mzc4NDQ3LCAtMC4w
NzYxNzIzODkyNjgwNDE4MiwgMC45NTY4ODQ1MjQwMDc2ODcyLCAgIDAuMGYsIDAuMGYsCisgICAg
ICAgICAwLjBmLCAgICAgICAgICAgICAgICAgMC4wZiwgICAgICAgICAgICAgICAgMC4wZiwgICAg
ICAgICAgICAgICAgIDEuMGYsIDAuMGYsCisgICAgfTsKKyAgICBDb2xvck1hdHJpeCBYWVpUb0xp
bmVhclNSR0JNYXRyaXgodmFsdWVzKTsKKyAgICByZXR1cm4gWFlaVG9MaW5lYXJTUkdCTWF0cml4
LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKFhZWkNvbXBvbmVudHMpOworfQorCitzdGF0aWMg
RmxvYXRDb21wb25lbnRzIGxpbmVhclAzVG9YWVooY29uc3QgRmxvYXRDb21wb25lbnRzJiBYWVpD
b21wb25lbnRzKQoreworICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3Iv
I2NvbG9yLWNvbnZlcnNpb24tY29kZQorICAgIGNvbnN0IGZsb2F0IHZhbHVlc1tdID0geworICAg
ICAgICAwLjQ4NjU3MDk0ODY0ODIxNjIsIDAuMjY1NjY3NjkzMTY5MDkzMSwgIDAuMTk4MjE3Mjg1
MjM0MzYyNSwgMC4wZiwgMC4wZiwKKyAgICAgICAgMC4yMjg5NzQ1NjQwNjk3NDg4LCAwLjY5MTcz
ODUyMTgzNjUwNjQsICAwLjA3OTI4NjkxNDA5Mzc0NSwgIDAuMGYsIDAuMGYsCisgICAgICAgIDAu
MDAwMDAwMDAwMDAwMDAwMCwgMC4wNDUxMTMzODE4NTg5MDI2NCwgMS4wNDM5NDQzNjg5MDA5NzYs
ICAwLjBmLCAwLjBmLAorICAgICAgICAwLjBmLCAgICAgICAgICAgICAgIDAuMGYsICAgICAgICAg
ICAgICAgIDAuMGYsICAgICAgICAgICAgICAgMS4wZiwgMC4wZiwKKyAgICB9OworICAgIENvbG9y
TWF0cml4IGxpbmVhclAzVG9YWVpNYXRyaXgodmFsdWVzKTsKKyAgICByZXR1cm4gbGluZWFyUDNU
b1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhYWVpDb21wb25lbnRzKTsKK30K
KworRmxvYXRDb21wb25lbnRzIFAzVG9TUkdCKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgcDMpCit7
CisgICAgYXV0byBsaW5lYXJQMyA9IFJHQlRvTGluZWFyQ29tcG9uZW50cyhwMyk7CisgICAgYXV0
byB4eXogPSBsaW5lYXJQM1RvWFlaKGxpbmVhclAzKTsKKyAgICBhdXRvIGxpbmVhclNSR0IgPSBY
WVpUb0xpbmVhclNSR0IoeHl6KTsKKyAgICByZXR1cm4gbGluZWFyVG9SR0JDb21wb25lbnRzKGxp
bmVhclNSR0IpOworfQorCitGbG9hdENvbXBvbmVudHMgc1JHQlRvUDMoY29uc3QgRmxvYXRDb21w
b25lbnRzJiBzUkdCKQoreworICAgIGF1dG8gbGluZWFyU1JHQiA9IFJHQlRvTGluZWFyQ29tcG9u
ZW50cyhzUkdCKTsKKyAgICBhdXRvIHh5eiA9IGxpbmVhclNSR0JUb1hZWihsaW5lYXJTUkdCKTsK
KyAgICBhdXRvIGxpbmVhclAzID0gWFlaVG9MaW5lYXJQMyh4eXopOworICAgIHJldHVybiBsaW5l
YXJUb1JHQkNvbXBvbmVudHMobGluZWFyUDMpOworfQorCiAvLyBUaGlzIGlzIHNpbWlsYXIgdG8g
c1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnQgYnV0IGZvciBzb21lIHJlYXNvbgogLy8gaHR0cHM6
Ly93d3cudzMub3JnL1RSLzIwMDgvUkVDLVdDQUcyMC0yMDA4MTIxMS8jcmVsYXRpdmVsdW1pbmFu
Y2VkZWYKIC8vIGRvZXNuJ3QgdXNlIHRoZSBzdGFuZGFyZCBzUkdCIC0+IGxpbmVhclJHQiB0aHJl
c2hvbGQgb2YgMC4wNDA0NS4KQEAgLTM2NCw0ICs0MzQsMTkgQEAgdm9pZCBDb2xvck1hdHJpeDo6
dHJhbnNmb3JtQ29sb3JDb21wb25lbnRzKEZsb2F0Q29tcG9uZW50cyYgY29sb3JDb21vbmVudHMp
IGNvbnMKICAgICBjb2xvckNvbW9uZW50cy5jb21wb25lbnRzWzNdID0gbV9tYXRyaXhbM11bMF0g
KiByZWQgKyBtX21hdHJpeFszXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbM11bMl0gKiBibHVlICsg
bV9tYXRyaXhbM11bM10gKiBhbHBoYSArIG1fbWF0cml4WzNdWzRdOwogfQogCitGbG9hdENvbXBv
bmVudHMgQ29sb3JNYXRyaXg6OnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGNvbnN0IEZsb2F0
Q29tcG9uZW50cyYgY29sb3JDb21vbmVudHMpIGNvbnN0Cit7CisgICAgZmxvYXQgcmVkID0gY29s
b3JDb21vbmVudHMuY29tcG9uZW50c1swXTsKKyAgICBmbG9hdCBncmVlbiA9IGNvbG9yQ29tb25l
bnRzLmNvbXBvbmVudHNbMV07CisgICAgZmxvYXQgYmx1ZSA9IGNvbG9yQ29tb25lbnRzLmNvbXBv
bmVudHNbMl07CisgICAgZmxvYXQgYWxwaGEgPSBjb2xvckNvbW9uZW50cy5jb21wb25lbnRzWzNd
OworCisgICAgcmV0dXJuIHsKKyAgICAgICAgbV9tYXRyaXhbMF1bMF0gKiByZWQgKyBtX21hdHJp
eFswXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbMF1bMl0gKiBibHVlICsgbV9tYXRyaXhbMF1bM10g
KiBhbHBoYSArIG1fbWF0cml4WzBdWzRdLAorICAgICAgICBtX21hdHJpeFsxXVswXSAqIHJlZCAr
IG1fbWF0cml4WzFdWzFdICogZ3JlZW4gKyBtX21hdHJpeFsxXVsyXSAqIGJsdWUgKyBtX21hdHJp
eFsxXVszXSAqIGFscGhhICsgbV9tYXRyaXhbMV1bNF0sCisgICAgICAgIG1fbWF0cml4WzJdWzBd
ICogcmVkICsgbV9tYXRyaXhbMl1bMV0gKiBncmVlbiArIG1fbWF0cml4WzJdWzJdICogYmx1ZSAr
IG1fbWF0cml4WzJdWzNdICogYWxwaGEgKyBtX21hdHJpeFsyXVs0XSwKKyAgICAgICAgbV9tYXRy
aXhbM11bMF0gKiByZWQgKyBtX21hdHJpeFszXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbM11bMl0g
KiBibHVlICsgbV9tYXRyaXhbM11bM10gKiBhbHBoYSArIG1fbWF0cml4WzNdWzRdCisgICAgfTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgKaW5kZXggYjIxY2EyODVhYTJlMjU3YTZiMGI5
NTFhMGNhOGMzYjQxOTE0OWFiOS4uMjU1ZGI3NGI5ODg3N2E3ZDIzODlkY2Q1OTZlYmQ3ZThkNWE1
YzY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JV
dGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0
aWxpdGllcy5oCkBAIC0xNzMsMTIgKzE3MywxNSBAQCBpbmxpbmUgdW5zaWduZWQgYnl0ZU9mZnNl
dE9mUGl4ZWwodW5zaWduZWQgeCwgdW5zaWduZWQgeSwgdW5zaWduZWQgcm93Qnl0ZXMpCiB9CiAK
IC8vIDAtMSBjb21wb25lbnRzLCByZXN1bHQgaXMgY2xhbXBlZC4KLWZsb2F0IGxpbmVhclRvU1JH
QkNvbG9yQ29tcG9uZW50KGZsb2F0KTsKLWZsb2F0IHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50
KGZsb2F0KTsKK2Zsb2F0IGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQoZmxvYXQpOworZmxvYXQg
UkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChmbG9hdCk7CiAKIEZsb2F0Q29tcG9uZW50cyBzUkdC
Q29sb3JUb0xpbmVhckNvbXBvbmVudHMoY29uc3QgQ29sb3ImKTsKLUZsb2F0Q29tcG9uZW50cyBz
UkdCVG9MaW5lYXJDb21wb25lbnRzKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYpOwotRmxvYXRDb21w
b25lbnRzIGxpbmVhclRvU1JHQkNvbXBvbmVudHMoY29uc3QgRmxvYXRDb21wb25lbnRzJik7CitG
bG9hdENvbXBvbmVudHMgUkdCVG9MaW5lYXJDb21wb25lbnRzKGNvbnN0IEZsb2F0Q29tcG9uZW50
cyYpOworRmxvYXRDb21wb25lbnRzIGxpbmVhclRvUkdCQ29tcG9uZW50cyhjb25zdCBGbG9hdENv
bXBvbmVudHMmKTsKKworRmxvYXRDb21wb25lbnRzIFAzVG9TUkdCKGNvbnN0IEZsb2F0Q29tcG9u
ZW50cyYpOworRmxvYXRDb21wb25lbnRzIHNSR0JUb1AzKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYp
OwogCiBGbG9hdENvbXBvbmVudHMgc1JHQlRvSFNMKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYpOwog
RmxvYXRDb21wb25lbnRzIEhTTFRvU1JHQihjb25zdCBGbG9hdENvbXBvbmVudHMmKTsKQEAgLTE5
Nyw2ICsyMDAsNyBAQCBwdWJsaWM6CiAgICAgQ29sb3JNYXRyaXgoY29uc3QgZmxvYXRbMjBdKTsK
ICAgICAKICAgICB2b2lkIHRyYW5zZm9ybUNvbG9yQ29tcG9uZW50cyhGbG9hdENvbXBvbmVudHMm
KSBjb25zdDsKKyAgICBGbG9hdENvbXBvbmVudHMgdHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMo
Y29uc3QgRmxvYXRDb21wb25lbnRzJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBtYWtl
SWRlbnRpdHkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBjZjk5ZDVmMDc2NGZiNDU1MDM1Y2E3YjEwZTU0MjI1MjBhNDcyYzc4Li44ZGJlNzY1
MWFjYjM2Yjc1NzY1OGY1ZTliMGY5MjUyNWExNjhhYjIyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDUtMTcg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IGNvbnZlcnNpb24gYmV0d2VlbiBQMyBhbmQgc1JHQiBjb2xvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExOTk4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQVBJIHRlc3QgZm9yIGNvbnZlcnNpb25z
IGZyb20gUDMgdG8gc1JHQiwgYW5kIGxpbmVhclJHQiB0byBzUkdCLiBWYWx1ZXMgd2VyZSBjb25m
aXJtZWQKKyAgICAgICAgYXMgY2xvc2UgdG8gdGhvc2UgcHJvdmlkZWQgYnkgQ29sb3JTeW5jIFV0
aWxpdHkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0ZW5kZWRD
b2xvclRlc3RzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIwLTA1
LTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBvcGVyYXRvcj09IGFuZCBoYXNoKCkgZm9yIEV4dGVuZGVkQ29sb3IKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9yVGVzdHMuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5jcHAK
aW5kZXggZmUxZjQxMTNlNTVmODJjYjZiYWRlN2Q1ODc0NTNlYjY4NTU4OGY5NS4uZmNmNTRmZWVh
YmU0YjU1NWMwYTMwNDhhOGIxMDVmOTA3MmM2NTlmYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlICJUZXN0LmgiCiAjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0yMjEsNSArMjIyLDI5IEBA
IFRFU1QoRXh0ZW5kZWRDb2xvciwgUmV0dXJuVmFsdWVzKQogICAgIEVYUEVDVF9FUShjMi5jc3NU
ZXh0KCksICJjb2xvcihkaXNwbGF5LXAzIDEgMC41IDAuMjUpIik7CiB9CiAKK1RFU1QoRXh0ZW5k
ZWRDb2xvciwgUDNDb252ZXJzaW9uVG9TUkdCKQoreworICAgIHsKKyAgICAgICAgQ29sb3IgcDND
b2xvcigxLjAsIDAuNSwgMC4yNSwgMC43NSwgQ29sb3JTcGFjZTo6RGlzcGxheVAzKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUocDNDb2xvci5pc0V4dGVuZGVkKCkpOworCisgICAgICAgIGF1dG8gc1JH
QkNvbXBvbmVudHMgPSBwM0NvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUoV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKHNSR0JDb21wb25lbnRzLmNvbXBv
bmVudHNbMF0sIDEuMGYpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoV1RGOjphcmVFc3NlbnRpYWxs
eUVxdWFsKHNSR0JDb21wb25lbnRzLmNvbXBvbmVudHNbMV0sIDAuNDYyNTM3ODg1ZikpOworICAg
ICAgICBFWFBFQ1RfVFJVRShXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoc1JHQkNvbXBvbmVudHMu
Y29tcG9uZW50c1syXSwgMC4xNDkxNDc4MzhmKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFdURjo6
YXJlRXNzZW50aWFsbHlFcXVhbChzUkdCQ29tcG9uZW50cy5jb21wb25lbnRzWzNdLCAwLjc1Zikp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29sb3IgbGluZWFyQ29sb3IoMS4wLCAwLjUsIDAu
MjUsIDAuNzUsIENvbG9yU3BhY2U6OkxpbmVhclJHQik7CisgICAgICAgIEVYUEVDVF9UUlVFKGxp
bmVhckNvbG9yLmlzRXh0ZW5kZWQoKSk7CisgICAgICAgIGF1dG8gc1JHQkNvbXBvbmVudHMgPSBs
aW5lYXJDb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCk7CisgICAgICAgIEVYUEVDVF9UUlVF
KFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChzUkdCQ29tcG9uZW50cy5jb21wb25lbnRzWzBdLCAx
LjBmKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChzUkdC
Q29tcG9uZW50cy5jb21wb25lbnRzWzFdLCAwLjczNTM1NjkyN2YpKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUoV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKHNSR0JDb21wb25lbnRzLmNvbXBvbmVudHNb
Ml0sIDAuNTM3MDk4NzA2ZikpOworICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmFyZUVzc2VudGlh
bGx5RXF1YWwoc1JHQkNvbXBvbmVudHMuY29tcG9uZW50c1szXSwgMC43NWYpKTsKKyAgICB9Cit9
CisKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399602</attachid>
            <date>2020-05-17 13:05:33 -0700</date>
            <delta_ts>2020-05-17 15:46:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211998-20200517130532.patch</filename>
            <type>text/plain</type>
            <size>15840</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY4ZDgxNmNkZDRkOWZj
MGQ1MTBkY2Y3ODI3NGQwODMxM2Q0ZmFhMi4uYjMyOTNhNzdiNmVhNTkwN2U2NDM2MTYyYjg3YjVj
Y2VhNmNlYmViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIwLTA1LTE3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBj
b252ZXJzaW9uIGJldHdlZW4gUDMgYW5kIHNSR0IgY29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTk5OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQ29sb3I6OnRvU1JHQkFDb21wb25l
bnRzTG9zc3koKSB3YXMgYSBsaWUgYmVjYXVzZSBpdCBkaWRuJ3QgYWN0dWFsbHkgY29udmVydCBl
eHRlbmRlZAorICAgICAgICBjb2xvcnMgaW50byBzUkdCLiBGaXggdGhhdCBieSBjb252ZXJ0aW5n
IFAzIGFuZCBsaW5hZXJSR0IgY29sb3JzIGludG8gc1JHQiwgdXNpbmcgdGhlIGNvbG9yCisgICAg
ICAgIG1hdGggZnJvbSBDU1MgQ29sb3IgNC4KKworICAgICAgICBSZW5hbWVkIHRoZSB2YXJpb3Vz
ICJsaW5lYXIgdG8gc1JHQiIgZnVuY3Rpb25zIGJlY2F1c2UgdGhleSB3b3JrIGZvciBhbnkgUkdC
IGNvbG9ycywKKyAgICAgICAgbm90IGp1c3Qgc1JHQi4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjp0b1NSR0JBQ29tcG9u
ZW50c0xvc3N5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpzUkdCQ29sb3JU
b0xpbmVhckNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UkdCVG9MaW5lYXJDb21wb25l
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmxpbmVhclRvUkdCQ29tcG9uZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpYWVpUb0xpbmVhclNSR0IpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyU1JH
QlRvWFlaKToKKyAgICAgICAgKFdlYkNvcmU6OlhZWlRvTGluZWFyUDMpOgorICAgICAgICAoV2Vi
Q29yZTo6bGluZWFyUDNUb1hZWik6CisgICAgICAgIChXZWJDb3JlOjpQM1RvU1JHQik6CisgICAg
ICAgIChXZWJDb3JlOjpzUkdCVG9QMyk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvck1hdHJpeDo6
dHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6bGlu
ZWFyVG9TUkdCQ29sb3JDb21wb25lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JH
QlRvTGluZWFyQ29sb3JDb21wb25lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JH
QlRvTGluZWFyQ29tcG9uZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpsaW5lYXJU
b1NSR0JDb21wb25lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclV0aWxpdGllcy5oOgorCiAyMDIwLTA1LTE3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBvcGVyYXRvcj09IGFuZCBoYXNoKCkgZm9yIEV4
dGVuZGVkQ29sb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcApp
bmRleCA5MmIzYjViYzA5MWFjZGE2YzQzOTNhY2EwNDg1ODNmZjQ3MGRjOThiLi5kNGQ3NTFmZjYx
MGIwOWUzMjMyNjc1MmVmZjlhNGZlM2U0NTZjNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3IuY3BwCkBAIC01NjEsMTAgKzU2MSwxMSBAQCBGbG9hdENvbXBvbmVu
dHMgQ29sb3I6OnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSBjb25zdAogICAgICAgICBhdXRvJiBl
eHRlbmRlZENvbG9yID0gYXNFeHRlbmRlZCgpOwogICAgICAgICBzd2l0Y2ggKGV4dGVuZGVkQ29s
b3IuY29sb3JTcGFjZSgpKSB7CiAgICAgICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAg
ICAgICAgIHJldHVybiBleHRlbmRlZENvbG9yLmNoYW5uZWxzKCk7CiAgICAgICAgIGNhc2UgQ29s
b3JTcGFjZTo6TGluZWFyUkdCOgorICAgICAgICAgICAgcmV0dXJuIGxpbmVhclRvUkdCQ29tcG9u
ZW50cyhleHRlbmRlZENvbG9yLmNoYW5uZWxzKCkpOwogICAgICAgICBjYXNlIENvbG9yU3BhY2U6
OkRpc3BsYXlQMzoKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgY29udmVydCBp
bnRvIHNSR0IgYW5kIHNob3VsZC4KLSAgICAgICAgICAgIHJldHVybiBleHRlbmRlZENvbG9yLmNo
YW5uZWxzKCk7CisgICAgICAgICAgICByZXR1cm4gUDNUb1NSR0IoZXh0ZW5kZWRDb2xvci5jaGFu
bmVscygpKTsKICAgICAgICAgfQogICAgIH0KICAgICBmbG9hdCByLCBnLCBiLCBhOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKaW5kZXggZDk0MGJkZTEzNmQxNDkwYWNm
MDIxZmY3NDg3M2IyZjZjNTg4ZTk1My4uNTU2ZTk1ZmFhODFiMDBiMTJlYmQzZjhjMWJlOGM0MWUz
NTk1NjQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCkBAIC0y
MTEsMTEgKzIxMSwxMiBAQCBwdWJsaWM6CiAgICAgLy8gcmVwbGFjZWQgd2l0aCBhbHRlcm5hdGl2
ZSBhY2Nlc3NvcnMuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRSR0JBKGZsb2F0JiByLCBm
bG9hdCYgZywgZmxvYXQmIGIsIGZsb2F0JiBhKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGdldFJHQkEoZG91YmxlJiByLCBkb3VibGUmIGcsIGRvdWJsZSYgYiwgZG91YmxlJiBhKSBj
b25zdDsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SFNMKGRvdWJsZSYgaCwgZG91Ymxl
JiBzLCBkb3VibGUmIGwpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SFNWKGRv
dWJsZSYgaCwgZG91YmxlJiBzLCBkb3VibGUmIHYpIGNvbnN0OwogCiAgICAgLy8gVGhpcyB3aWxs
IGNvbnZlcnQgbm9uLXNSR0IgY29sb3JzcGFjZSBjb2xvcnMgaW50byBzUkdCLgotICAgIEZsb2F0
Q29tcG9uZW50cyB0b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgRmxvYXRDb21wb25lbnRzIHRvU1JHQkFDb21wb25lbnRzTG9zc3koKSBjb25zdDsKIAog
ICAgIENvbG9yIGxpZ2h0KCkgY29uc3Q7CiAgICAgQ29sb3IgZGFyaygpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCmlu
ZGV4IGI1YzE1OWI5NWNhNzZiY2FmMGU1NTdlYzdkNmY4MmZiNjAxNWM0NDkuLjlhMDMyMmY4MjY5
YTlhMGExNDQ0MDA3ZTI5MWE3NTk5ZDViMzUxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAg
Ym9vbCBhcmVFc3NlbnRpYWxseUVxdWFsKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgYSwgY29uc3Qg
RmxvYXRDb21wb25lbnRzJiBiKQogfQogCiAvLyBUaGVzZSBhcmUgdGhlIHN0YW5kYXJkIHNSR0Ig
PC0+IGxpbmVhclJHQiBjb252ZXJzaW9uIGZ1bmN0aW9ucyAoaHR0cHM6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvU1JHQikuCi1mbG9hdCBsaW5lYXJUb1NSR0JDb2xvckNvbXBvbmVudChmbG9hdCBj
KQorZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9hdCBjKQogewogICAgIGlmIChj
IDwgMC4wMDMxMzA4ZikKICAgICAgICAgcmV0dXJuIDEyLjkyZiAqIGM7CkBAIC02MSw3ICs2MSw3
IEBAIGZsb2F0IGxpbmVhclRvU1JHQkNvbG9yQ29tcG9uZW50KGZsb2F0IGMpCiAgICAgcmV0dXJu
IGNsYW1wVG88ZmxvYXQ+KDEuMDU1ZiAqIHN0ZDo6cG93KGMsIDEuMGYgLyAyLjRmKSAtIDAuMDU1
ZiwgMCwgMSk7CiB9CiAKLWZsb2F0IHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGZsb2F0IGMp
CitmbG9hdCBSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGZsb2F0IGMpCiB7CiAgICAgaWYgKGMg
PD0gMC4wNDA0NWYpCiAgICAgICAgIHJldHVybiBjIC8gMTIuOTJmOwpAQCAtNzQsMzMgKzc0LDEw
MyBAQCBGbG9hdENvbXBvbmVudHMgc1JHQkNvbG9yVG9MaW5lYXJDb21wb25lbnRzKGNvbnN0IENv
bG9yJiBjb2xvcikKICAgICBmbG9hdCByLCBnLCBiLCBhOwogICAgIGNvbG9yLmdldFJHQkEociwg
ZywgYiwgYSk7CiAgICAgcmV0dXJuIHsKLSAgICAgICAgc1JHQlRvTGluZWFyQ29sb3JDb21wb25l
bnQociksCi0gICAgICAgIHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGcpLAotICAgICAgICBz
UkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChiKSwKKyAgICAgICAgUkdCVG9MaW5lYXJDb2xvckNv
bXBvbmVudChyKSwKKyAgICAgICAgUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChnKSwKKyAgICAg
ICAgUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChiKSwKICAgICAgICAgYQogICAgIH07CiB9CiAK
LUZsb2F0Q29tcG9uZW50cyBzUkdCVG9MaW5lYXJDb21wb25lbnRzKGNvbnN0IEZsb2F0Q29tcG9u
ZW50cyYgc1JHQkNvbG9yKQorRmxvYXRDb21wb25lbnRzIFJHQlRvTGluZWFyQ29tcG9uZW50cyhj
b25zdCBGbG9hdENvbXBvbmVudHMmIHNSR0JDb2xvcikKIHsKICAgICByZXR1cm4gewotICAgICAg
ICBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChzUkdCQ29sb3IuY29tcG9uZW50c1swXSksCi0g
ICAgICAgIHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50KHNSR0JDb2xvci5jb21wb25lbnRzWzFd
KSwKLSAgICAgICAgc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnQoc1JHQkNvbG9yLmNvbXBvbmVu
dHNbMl0pLAorICAgICAgICBSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50KHNSR0JDb2xvci5jb21w
b25lbnRzWzBdKSwKKyAgICAgICAgUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChzUkdCQ29sb3Iu
Y29tcG9uZW50c1sxXSksCisgICAgICAgIFJHQlRvTGluZWFyQ29sb3JDb21wb25lbnQoc1JHQkNv
bG9yLmNvbXBvbmVudHNbMl0pLAogICAgICAgICBzUkdCQ29sb3IuY29tcG9uZW50c1szXQogICAg
IH07CiB9CiAKLUZsb2F0Q29tcG9uZW50cyBsaW5lYXJUb1NSR0JDb21wb25lbnRzKGNvbnN0IEZs
b2F0Q29tcG9uZW50cyYgbGluZWFyUkdCKQorRmxvYXRDb21wb25lbnRzIGxpbmVhclRvUkdCQ29t
cG9uZW50cyhjb25zdCBGbG9hdENvbXBvbmVudHMmIGxpbmVhclJHQikKIHsKICAgICByZXR1cm4g
ewotICAgICAgICBsaW5lYXJUb1NSR0JDb2xvckNvbXBvbmVudChsaW5lYXJSR0IuY29tcG9uZW50
c1swXSksCi0gICAgICAgIGxpbmVhclRvU1JHQkNvbG9yQ29tcG9uZW50KGxpbmVhclJHQi5jb21w
b25lbnRzWzFdKSwKLSAgICAgICAgbGluZWFyVG9TUkdCQ29sb3JDb21wb25lbnQobGluZWFyUkdC
LmNvbXBvbmVudHNbMl0pLAorICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGxpbmVh
clJHQi5jb21wb25lbnRzWzBdKSwKKyAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChs
aW5lYXJSR0IuY29tcG9uZW50c1sxXSksCisgICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25l
bnQobGluZWFyUkdCLmNvbXBvbmVudHNbMl0pLAogICAgICAgICBsaW5lYXJSR0IuY29tcG9uZW50
c1szXQogICAgIH07CiB9CiAKK3N0YXRpYyBGbG9hdENvbXBvbmVudHMgWFlaVG9MaW5lYXJTUkdC
KGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgWFlaQ29tcG9uZW50cykKK3sKKyAgICAvLyBodHRwczov
L2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCisgICAgLy8gaHR0cDovL3d3dy5icnVjZWxpbmRi
bG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbAorICAgIGNvbnN0IGZs
b2F0IHZhbHVlc1tdID0geworICAgICAgICAgMy4yNDA0NTQyZiwgLTEuNTM3MTM4NWYsIC0wLjQ5
ODUzMTRmLCAwLjBmLCAwLjBmLAorICAgICAgICAtMC45NjkyNjYwZiwgIDEuODc2MDEwOGYsICAw
LjA0MTU1NjBmLCAwLjBmLCAwLjBmLAorICAgICAgICAgMC4wNTU2NDM0ZiwgLTAuMjA0MDI1OWYs
ICAxLjA1NzIyNTJmLCAwLjBmLCAwLjBmLAorICAgICAgICAgMC4wZiwgICAgICAgIDAuMGYsICAg
ICAgICAwLjBmLCAgICAgICAxLjBmLCAwLjBmLAorICAgIH07CisgICAgQ29sb3JNYXRyaXggWFla
VG9MaW5lYXJTUkdCTWF0cml4KHZhbHVlcyk7CisgICAgcmV0dXJuIFhZWlRvTGluZWFyU1JHQk1h
dHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhYWVpDb21wb25lbnRzKTsKK30KKworc3Rh
dGljIEZsb2F0Q29tcG9uZW50cyBsaW5lYXJTUkdCVG9YWVooY29uc3QgRmxvYXRDb21wb25lbnRz
JiBYWVpDb21wb25lbnRzKQoreworICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtp
L1NSR0IKKyAgICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vx
bl9SR0JfWFlaX01hdHJpeC5odG1sCisgICAgY29uc3QgZmxvYXQgdmFsdWVzW10gPSB7CisgICAg
ICAgIDAuNDEyNDU2NCwgIDAuMzU3NTc2MSwgIDAuMTgwNDM3NSwgMC4wZiwgMC4wZiwKKyAgICAg
ICAgMC4yMTI2NzI5LCAgMC43MTUxNTIyLCAgMC4wNzIxNzUwLCAwLjBmLCAwLjBmLAorICAgICAg
ICAwLjAxOTMzMzksICAwLjExOTE5MjAsICAwLjk1MDMwNDEsIDAuMGYsIDAuMGYsCisgICAgICAg
IDAuMGYsICAgICAgIDAuMGYsICAgICAgIDAuMGYsICAgICAgMS4wZiwgMC4wZiwKKyAgICB9Owor
ICAgIENvbG9yTWF0cml4IGxpbmVhclNSR0JUb1hZWk1hdHJpeCh2YWx1ZXMpOworICAgIHJldHVy
biBsaW5lYXJTUkdCVG9YWVpNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoWFlaQ29t
cG9uZW50cyk7Cit9CisKK3N0YXRpYyBGbG9hdENvbXBvbmVudHMgWFlaVG9MaW5lYXJQMyhjb25z
dCBGbG9hdENvbXBvbmVudHMmIFhZWkNvbXBvbmVudHMpCit7CisgICAgLy8gaHR0cHM6Ly9kcmFm
dHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCisgICAgY29uc3Qg
ZmxvYXQgdmFsdWVzW10gPSB7CisgICAgICAgICAyLjQ5MzQ5NjkxMTk0MTQyNSwgICAtMC45MzEz
ODM2MTc5MTkxMjM5LCAtMC40MDI3MTA3ODQ0NTA3MTY4NCwgIDAuMGYsIDAuMGYsCisgICAgICAg
IC0wLjgyOTQ4ODk2OTU2MTU3NDcsICAgMS43NjI2NjQwNjAzMTgzNDYzLCAgMC4wMjM2MjQ2ODU4
NDE5NDM1NzcsIDAuMGYsIDAuMGYsCisgICAgICAgICAwLjAzNTg0NTgzMDI0Mzc4NDQ3LCAtMC4w
NzYxNzIzODkyNjgwNDE4MiwgMC45NTY4ODQ1MjQwMDc2ODcyLCAgIDAuMGYsIDAuMGYsCisgICAg
ICAgICAwLjBmLCAgICAgICAgICAgICAgICAgMC4wZiwgICAgICAgICAgICAgICAgMC4wZiwgICAg
ICAgICAgICAgICAgIDEuMGYsIDAuMGYsCisgICAgfTsKKyAgICBDb2xvck1hdHJpeCBYWVpUb0xp
bmVhclNSR0JNYXRyaXgodmFsdWVzKTsKKyAgICByZXR1cm4gWFlaVG9MaW5lYXJTUkdCTWF0cml4
LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKFhZWkNvbXBvbmVudHMpOworfQorCitzdGF0aWMg
RmxvYXRDb21wb25lbnRzIGxpbmVhclAzVG9YWVooY29uc3QgRmxvYXRDb21wb25lbnRzJiBYWVpD
b21wb25lbnRzKQoreworICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3Iv
I2NvbG9yLWNvbnZlcnNpb24tY29kZQorICAgIGNvbnN0IGZsb2F0IHZhbHVlc1tdID0geworICAg
ICAgICAwLjQ4NjU3MDk0ODY0ODIxNjIsIDAuMjY1NjY3NjkzMTY5MDkzMSwgIDAuMTk4MjE3Mjg1
MjM0MzYyNSwgMC4wZiwgMC4wZiwKKyAgICAgICAgMC4yMjg5NzQ1NjQwNjk3NDg4LCAwLjY5MTcz
ODUyMTgzNjUwNjQsICAwLjA3OTI4NjkxNDA5Mzc0NSwgIDAuMGYsIDAuMGYsCisgICAgICAgIDAu
MDAwMDAwMDAwMDAwMDAwMCwgMC4wNDUxMTMzODE4NTg5MDI2NCwgMS4wNDM5NDQzNjg5MDA5NzYs
ICAwLjBmLCAwLjBmLAorICAgICAgICAwLjBmLCAgICAgICAgICAgICAgIDAuMGYsICAgICAgICAg
ICAgICAgIDAuMGYsICAgICAgICAgICAgICAgMS4wZiwgMC4wZiwKKyAgICB9OworICAgIENvbG9y
TWF0cml4IGxpbmVhclAzVG9YWVpNYXRyaXgodmFsdWVzKTsKKyAgICByZXR1cm4gbGluZWFyUDNU
b1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhYWVpDb21wb25lbnRzKTsKK30K
KworRmxvYXRDb21wb25lbnRzIFAzVG9TUkdCKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgcDMpCit7
CisgICAgYXV0byBsaW5lYXJQMyA9IFJHQlRvTGluZWFyQ29tcG9uZW50cyhwMyk7CisgICAgYXV0
byB4eXogPSBsaW5lYXJQM1RvWFlaKGxpbmVhclAzKTsKKyAgICBhdXRvIGxpbmVhclNSR0IgPSBY
WVpUb0xpbmVhclNSR0IoeHl6KTsKKyAgICByZXR1cm4gbGluZWFyVG9SR0JDb21wb25lbnRzKGxp
bmVhclNSR0IpOworfQorCitGbG9hdENvbXBvbmVudHMgc1JHQlRvUDMoY29uc3QgRmxvYXRDb21w
b25lbnRzJiBzUkdCKQoreworICAgIGF1dG8gbGluZWFyU1JHQiA9IFJHQlRvTGluZWFyQ29tcG9u
ZW50cyhzUkdCKTsKKyAgICBhdXRvIHh5eiA9IGxpbmVhclNSR0JUb1hZWihsaW5lYXJTUkdCKTsK
KyAgICBhdXRvIGxpbmVhclAzID0gWFlaVG9MaW5lYXJQMyh4eXopOworICAgIHJldHVybiBsaW5l
YXJUb1JHQkNvbXBvbmVudHMobGluZWFyUDMpOworfQorCiAvLyBUaGlzIGlzIHNpbWlsYXIgdG8g
c1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnQgYnV0IGZvciBzb21lIHJlYXNvbgogLy8gaHR0cHM6
Ly93d3cudzMub3JnL1RSLzIwMDgvUkVDLVdDQUcyMC0yMDA4MTIxMS8jcmVsYXRpdmVsdW1pbmFu
Y2VkZWYKIC8vIGRvZXNuJ3QgdXNlIHRoZSBzdGFuZGFyZCBzUkdCIC0+IGxpbmVhclJHQiB0aHJl
c2hvbGQgb2YgMC4wNDA0NS4KQEAgLTM2NCw0ICs0MzQsMTkgQEAgdm9pZCBDb2xvck1hdHJpeDo6
dHJhbnNmb3JtQ29sb3JDb21wb25lbnRzKEZsb2F0Q29tcG9uZW50cyYgY29sb3JDb21vbmVudHMp
IGNvbnMKICAgICBjb2xvckNvbW9uZW50cy5jb21wb25lbnRzWzNdID0gbV9tYXRyaXhbM11bMF0g
KiByZWQgKyBtX21hdHJpeFszXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbM11bMl0gKiBibHVlICsg
bV9tYXRyaXhbM11bM10gKiBhbHBoYSArIG1fbWF0cml4WzNdWzRdOwogfQogCitGbG9hdENvbXBv
bmVudHMgQ29sb3JNYXRyaXg6OnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGNvbnN0IEZsb2F0
Q29tcG9uZW50cyYgY29sb3JDb21vbmVudHMpIGNvbnN0Cit7CisgICAgZmxvYXQgcmVkID0gY29s
b3JDb21vbmVudHMuY29tcG9uZW50c1swXTsKKyAgICBmbG9hdCBncmVlbiA9IGNvbG9yQ29tb25l
bnRzLmNvbXBvbmVudHNbMV07CisgICAgZmxvYXQgYmx1ZSA9IGNvbG9yQ29tb25lbnRzLmNvbXBv
bmVudHNbMl07CisgICAgZmxvYXQgYWxwaGEgPSBjb2xvckNvbW9uZW50cy5jb21wb25lbnRzWzNd
OworCisgICAgcmV0dXJuIHsKKyAgICAgICAgbV9tYXRyaXhbMF1bMF0gKiByZWQgKyBtX21hdHJp
eFswXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbMF1bMl0gKiBibHVlICsgbV9tYXRyaXhbMF1bM10g
KiBhbHBoYSArIG1fbWF0cml4WzBdWzRdLAorICAgICAgICBtX21hdHJpeFsxXVswXSAqIHJlZCAr
IG1fbWF0cml4WzFdWzFdICogZ3JlZW4gKyBtX21hdHJpeFsxXVsyXSAqIGJsdWUgKyBtX21hdHJp
eFsxXVszXSAqIGFscGhhICsgbV9tYXRyaXhbMV1bNF0sCisgICAgICAgIG1fbWF0cml4WzJdWzBd
ICogcmVkICsgbV9tYXRyaXhbMl1bMV0gKiBncmVlbiArIG1fbWF0cml4WzJdWzJdICogYmx1ZSAr
IG1fbWF0cml4WzJdWzNdICogYWxwaGEgKyBtX21hdHJpeFsyXVs0XSwKKyAgICAgICAgbV9tYXRy
aXhbM11bMF0gKiByZWQgKyBtX21hdHJpeFszXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbM11bMl0g
KiBibHVlICsgbV9tYXRyaXhbM11bM10gKiBhbHBoYSArIG1fbWF0cml4WzNdWzRdCisgICAgfTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgKaW5kZXggYjIxY2EyODVhYTJlMjU3YTZiMGI5
NTFhMGNhOGMzYjQxOTE0OWFiOS4uMjU1ZGI3NGI5ODg3N2E3ZDIzODlkY2Q1OTZlYmQ3ZThkNWE1
YzY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JV
dGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0
aWxpdGllcy5oCkBAIC0xNzMsMTIgKzE3MywxNSBAQCBpbmxpbmUgdW5zaWduZWQgYnl0ZU9mZnNl
dE9mUGl4ZWwodW5zaWduZWQgeCwgdW5zaWduZWQgeSwgdW5zaWduZWQgcm93Qnl0ZXMpCiB9CiAK
IC8vIDAtMSBjb21wb25lbnRzLCByZXN1bHQgaXMgY2xhbXBlZC4KLWZsb2F0IGxpbmVhclRvU1JH
QkNvbG9yQ29tcG9uZW50KGZsb2F0KTsKLWZsb2F0IHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50
KGZsb2F0KTsKK2Zsb2F0IGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQoZmxvYXQpOworZmxvYXQg
UkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChmbG9hdCk7CiAKIEZsb2F0Q29tcG9uZW50cyBzUkdC
Q29sb3JUb0xpbmVhckNvbXBvbmVudHMoY29uc3QgQ29sb3ImKTsKLUZsb2F0Q29tcG9uZW50cyBz
UkdCVG9MaW5lYXJDb21wb25lbnRzKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYpOwotRmxvYXRDb21w
b25lbnRzIGxpbmVhclRvU1JHQkNvbXBvbmVudHMoY29uc3QgRmxvYXRDb21wb25lbnRzJik7CitG
bG9hdENvbXBvbmVudHMgUkdCVG9MaW5lYXJDb21wb25lbnRzKGNvbnN0IEZsb2F0Q29tcG9uZW50
cyYpOworRmxvYXRDb21wb25lbnRzIGxpbmVhclRvUkdCQ29tcG9uZW50cyhjb25zdCBGbG9hdENv
bXBvbmVudHMmKTsKKworRmxvYXRDb21wb25lbnRzIFAzVG9TUkdCKGNvbnN0IEZsb2F0Q29tcG9u
ZW50cyYpOworRmxvYXRDb21wb25lbnRzIHNSR0JUb1AzKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYp
OwogCiBGbG9hdENvbXBvbmVudHMgc1JHQlRvSFNMKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYpOwog
RmxvYXRDb21wb25lbnRzIEhTTFRvU1JHQihjb25zdCBGbG9hdENvbXBvbmVudHMmKTsKQEAgLTE5
Nyw2ICsyMDAsNyBAQCBwdWJsaWM6CiAgICAgQ29sb3JNYXRyaXgoY29uc3QgZmxvYXRbMjBdKTsK
ICAgICAKICAgICB2b2lkIHRyYW5zZm9ybUNvbG9yQ29tcG9uZW50cyhGbG9hdENvbXBvbmVudHMm
KSBjb25zdDsKKyAgICBGbG9hdENvbXBvbmVudHMgdHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMo
Y29uc3QgRmxvYXRDb21wb25lbnRzJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBtYWtl
SWRlbnRpdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAppbmRleCAwNzZh
ZjQwODk2YmFhY2Q4MGQ5ZjFjNWVmYWE3OTBhMTQ5YjhkZDdmLi5hM2Y5MmRiNjJkN2ZlY2Y0ZGVh
NGQ4M2ZkZTA0NTQ4ZmM2MjU1YTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQu
Y3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5z
Zm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvCiAgICAgICAgICAg
ICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKICAgICAgICAgICAgICAgICBmbG9hdCBjb2xvciA9
IGkgLyAyNTUuMGY7Ci0gICAgICAgICAgICAgICAgY29sb3IgPSBzUkdCVG9MaW5lYXJDb2xvckNv
bXBvbmVudChjb2xvcik7CisgICAgICAgICAgICAgICAgY29sb3IgPSBSR0JUb0xpbmVhckNvbG9y
Q29tcG9uZW50KGNvbG9yKTsKICAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHJvdW5kKGNvbG9yICogMjU1KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICByZXR1cm4gYXJyYXk7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0Jh
Y2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xv
CiAgICAgICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKICAgICAgICAgICAgICAgICBm
bG9hdCBjb2xvciA9IGkgLyAyNTUuMGY7Ci0gICAgICAgICAgICAgICAgY29sb3IgPSBsaW5lYXJU
b1NSR0JDb2xvckNvbXBvbmVudChjb2xvcik7CisgICAgICAgICAgICAgICAgY29sb3IgPSBsaW5l
YXJUb1JHQkNvbG9yQ29tcG9uZW50KGNvbG9yKTsKICAgICAgICAgICAgICAgICBhcnJheVtpXSA9
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJvdW5kKGNvbG9yICogMjU1KSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICByZXR1cm4gYXJyYXk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjcxNzM0OTJjYTk1ZGQ2ZTkyMmMzZjY5MTBiN2MyMjE1
NzQ2NDVlNC4uNTZmYmE3M2Q0YjVjMGI1ZTFiZDIyNTMwMTY2Yzc0OTM2ZWRjYTgxNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDIwLTA1LTE3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBjb252ZXJzaW9uIGJldHdlZW4gUDMgYW5kIHNSR0IgY29sb3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTk5OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFQSSB0ZXN0
IGZvciBjb252ZXJzaW9ucyBmcm9tIFAzIHRvIHNSR0IsIGFuZCBsaW5lYXJSR0IgdG8gc1JHQi4g
VmFsdWVzIHdlcmUgY29uZmlybWVkCisgICAgICAgIGFzIGNsb3NlIHRvIHRob3NlIHByb3ZpZGVk
IGJ5IENvbG9yU3luYyBVdGlsaXR5LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKwogMjAyMC0wNS0xNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggb3BlcmF0b3I9PSBhbmQgaGFzaCgpIGZvciBFeHRlbmRlZENvbG9y
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0ZW5kZWRD
b2xvclRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRl
ZENvbG9yVGVzdHMuY3BwCmluZGV4IGZlMWY0MTEzZTU1ZjgyY2I2YmFkZTdkNTg3NDUzZWI2ODU1
ODhmOTUuLmZjZjU0ZmVlYWJlNGI1NTVjMGEzMDQ4YThiMTA1ZjkwNzJjNjU5ZmEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9yVGVzdHMu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9y
VGVzdHMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiVGVzdC5oIgogI2luY2x1ZGUg
IldURlN0cmluZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAt
MjIxLDUgKzIyMiwyOSBAQCBURVNUKEV4dGVuZGVkQ29sb3IsIFJldHVyblZhbHVlcykKICAgICBF
WFBFQ1RfRVEoYzIuY3NzVGV4dCgpLCAiY29sb3IoZGlzcGxheS1wMyAxIDAuNSAwLjI1KSIpOwog
fQogCitURVNUKEV4dGVuZGVkQ29sb3IsIFAzQ29udmVyc2lvblRvU1JHQikKK3sKKyAgICB7Cisg
ICAgICAgIENvbG9yIHAzQ29sb3IoMS4wLCAwLjUsIDAuMjUsIDAuNzUsIENvbG9yU3BhY2U6OkRp
c3BsYXlQMyk7CisgICAgICAgIEVYUEVDVF9UUlVFKHAzQ29sb3IuaXNFeHRlbmRlZCgpKTsKKwor
ICAgICAgICBhdXRvIHNSR0JDb21wb25lbnRzID0gcDNDb2xvci50b1NSR0JBQ29tcG9uZW50c0xv
c3N5KCk7CisgICAgICAgIEVYUEVDVF9UUlVFKFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChzUkdC
Q29tcG9uZW50cy5jb21wb25lbnRzWzBdLCAxLjBmKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFdU
Rjo6YXJlRXNzZW50aWFsbHlFcXVhbChzUkdCQ29tcG9uZW50cy5jb21wb25lbnRzWzFdLCAwLjQ2
MjUzNzg4NWYpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoV1RGOjphcmVFc3NlbnRpYWxseUVxdWFs
KHNSR0JDb21wb25lbnRzLmNvbXBvbmVudHNbMl0sIDAuMTQ5MTQ3ODM4ZikpOworICAgICAgICBF
WFBFQ1RfVFJVRShXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoc1JHQkNvbXBvbmVudHMuY29tcG9u
ZW50c1szXSwgMC43NWYpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbG9yIGxpbmVhckNv
bG9yKDEuMCwgMC41LCAwLjI1LCAwLjc1LCBDb2xvclNwYWNlOjpMaW5lYXJSR0IpOworICAgICAg
ICBFWFBFQ1RfVFJVRShsaW5lYXJDb2xvci5pc0V4dGVuZGVkKCkpOworICAgICAgICBhdXRvIHNS
R0JDb21wb25lbnRzID0gbGluZWFyQ29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpOworICAg
ICAgICBFWFBFQ1RfVFJVRShXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoc1JHQkNvbXBvbmVudHMu
Y29tcG9uZW50c1swXSwgMS4wZikpOworICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmFyZUVzc2Vu
dGlhbGx5RXF1YWwoc1JHQkNvbXBvbmVudHMuY29tcG9uZW50c1sxXSwgMC43MzUzNTY5MjdmKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChzUkdCQ29tcG9u
ZW50cy5jb21wb25lbnRzWzJdLCAwLjUzNzA5ODcwNmYpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
V1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKHNSR0JDb21wb25lbnRzLmNvbXBvbmVudHNbM10sIDAu
NzVmKSk7CisgICAgfQorfQorCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399609</attachid>
            <date>2020-05-17 15:46:51 -0700</date>
            <delta_ts>2020-05-17 21:57:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211998-20200517154650.patch</filename>
            <type>text/plain</type>
            <size>17496</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY4ZDgxNmNkZDRkOWZj
MGQ1MTBkY2Y3ODI3NGQwODMxM2Q0ZmFhMi4uYjMyOTNhNzdiNmVhNTkwN2U2NDM2MTYyYjg3YjVj
Y2VhNmNlYmViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIwLTA1LTE3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBj
b252ZXJzaW9uIGJldHdlZW4gUDMgYW5kIHNSR0IgY29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTk5OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQ29sb3I6OnRvU1JHQkFDb21wb25l
bnRzTG9zc3koKSB3YXMgYSBsaWUgYmVjYXVzZSBpdCBkaWRuJ3QgYWN0dWFsbHkgY29udmVydCBl
eHRlbmRlZAorICAgICAgICBjb2xvcnMgaW50byBzUkdCLiBGaXggdGhhdCBieSBjb252ZXJ0aW5n
IFAzIGFuZCBsaW5hZXJSR0IgY29sb3JzIGludG8gc1JHQiwgdXNpbmcgdGhlIGNvbG9yCisgICAg
ICAgIG1hdGggZnJvbSBDU1MgQ29sb3IgNC4KKworICAgICAgICBSZW5hbWVkIHRoZSB2YXJpb3Vz
ICJsaW5lYXIgdG8gc1JHQiIgZnVuY3Rpb25zIGJlY2F1c2UgdGhleSB3b3JrIGZvciBhbnkgUkdC
IGNvbG9ycywKKyAgICAgICAgbm90IGp1c3Qgc1JHQi4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjp0b1NSR0JBQ29tcG9u
ZW50c0xvc3N5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpzUkdCQ29sb3JU
b0xpbmVhckNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UkdCVG9MaW5lYXJDb21wb25l
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmxpbmVhclRvUkdCQ29tcG9uZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpYWVpUb0xpbmVhclNSR0IpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyU1JH
QlRvWFlaKToKKyAgICAgICAgKFdlYkNvcmU6OlhZWlRvTGluZWFyUDMpOgorICAgICAgICAoV2Vi
Q29yZTo6bGluZWFyUDNUb1hZWik6CisgICAgICAgIChXZWJDb3JlOjpQM1RvU1JHQik6CisgICAg
ICAgIChXZWJDb3JlOjpzUkdCVG9QMyk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvck1hdHJpeDo6
dHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6bGlu
ZWFyVG9TUkdCQ29sb3JDb21wb25lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JH
QlRvTGluZWFyQ29sb3JDb21wb25lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c1JH
QlRvTGluZWFyQ29tcG9uZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpsaW5lYXJU
b1NSR0JDb21wb25lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclV0aWxpdGllcy5oOgorCiAyMDIwLTA1LTE3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBvcGVyYXRvcj09IGFuZCBoYXNoKCkgZm9yIEV4
dGVuZGVkQ29sb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcApp
bmRleCA5MmIzYjViYzA5MWFjZGE2YzQzOTNhY2EwNDg1ODNmZjQ3MGRjOThiLi5kNGQ3NTFmZjYx
MGIwOWUzMjMyNjc1MmVmZjlhNGZlM2U0NTZjNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3IuY3BwCkBAIC01NjEsMTAgKzU2MSwxMSBAQCBGbG9hdENvbXBvbmVu
dHMgQ29sb3I6OnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSBjb25zdAogICAgICAgICBhdXRvJiBl
eHRlbmRlZENvbG9yID0gYXNFeHRlbmRlZCgpOwogICAgICAgICBzd2l0Y2ggKGV4dGVuZGVkQ29s
b3IuY29sb3JTcGFjZSgpKSB7CiAgICAgICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAg
ICAgICAgIHJldHVybiBleHRlbmRlZENvbG9yLmNoYW5uZWxzKCk7CiAgICAgICAgIGNhc2UgQ29s
b3JTcGFjZTo6TGluZWFyUkdCOgorICAgICAgICAgICAgcmV0dXJuIGxpbmVhclRvUkdCQ29tcG9u
ZW50cyhleHRlbmRlZENvbG9yLmNoYW5uZWxzKCkpOwogICAgICAgICBjYXNlIENvbG9yU3BhY2U6
OkRpc3BsYXlQMzoKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgY29udmVydCBp
bnRvIHNSR0IgYW5kIHNob3VsZC4KLSAgICAgICAgICAgIHJldHVybiBleHRlbmRlZENvbG9yLmNo
YW5uZWxzKCk7CisgICAgICAgICAgICByZXR1cm4gUDNUb1NSR0IoZXh0ZW5kZWRDb2xvci5jaGFu
bmVscygpKTsKICAgICAgICAgfQogICAgIH0KICAgICBmbG9hdCByLCBnLCBiLCBhOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKaW5kZXggZDk0MGJkZTEzNmQxNDkwYWNm
MDIxZmY3NDg3M2IyZjZjNTg4ZTk1My4uNTU2ZTk1ZmFhODFiMDBiMTJlYmQzZjhjMWJlOGM0MWUz
NTk1NjQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCkBAIC0y
MTEsMTEgKzIxMSwxMiBAQCBwdWJsaWM6CiAgICAgLy8gcmVwbGFjZWQgd2l0aCBhbHRlcm5hdGl2
ZSBhY2Nlc3NvcnMuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRSR0JBKGZsb2F0JiByLCBm
bG9hdCYgZywgZmxvYXQmIGIsIGZsb2F0JiBhKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGdldFJHQkEoZG91YmxlJiByLCBkb3VibGUmIGcsIGRvdWJsZSYgYiwgZG91YmxlJiBhKSBj
b25zdDsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SFNMKGRvdWJsZSYgaCwgZG91Ymxl
JiBzLCBkb3VibGUmIGwpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SFNWKGRv
dWJsZSYgaCwgZG91YmxlJiBzLCBkb3VibGUmIHYpIGNvbnN0OwogCiAgICAgLy8gVGhpcyB3aWxs
IGNvbnZlcnQgbm9uLXNSR0IgY29sb3JzcGFjZSBjb2xvcnMgaW50byBzUkdCLgotICAgIEZsb2F0
Q29tcG9uZW50cyB0b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgRmxvYXRDb21wb25lbnRzIHRvU1JHQkFDb21wb25lbnRzTG9zc3koKSBjb25zdDsKIAog
ICAgIENvbG9yIGxpZ2h0KCkgY29uc3Q7CiAgICAgQ29sb3IgZGFyaygpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCmlu
ZGV4IGI1YzE1OWI5NWNhNzZiY2FmMGU1NTdlYzdkNmY4MmZiNjAxNWM0NDkuLjkxZWQzZWRmNmI1
OTdmZWQ1ZTc2ZDhhN2EyM2I1ZTU1MGFlZjBjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAg
Ym9vbCBhcmVFc3NlbnRpYWxseUVxdWFsKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgYSwgY29uc3Qg
RmxvYXRDb21wb25lbnRzJiBiKQogfQogCiAvLyBUaGVzZSBhcmUgdGhlIHN0YW5kYXJkIHNSR0Ig
PC0+IGxpbmVhclJHQiBjb252ZXJzaW9uIGZ1bmN0aW9ucyAoaHR0cHM6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvU1JHQikuCi1mbG9hdCBsaW5lYXJUb1NSR0JDb2xvckNvbXBvbmVudChmbG9hdCBj
KQorZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9hdCBjKQogewogICAgIGlmIChj
IDwgMC4wMDMxMzA4ZikKICAgICAgICAgcmV0dXJuIDEyLjkyZiAqIGM7CkBAIC02MSw3ICs2MSw3
IEBAIGZsb2F0IGxpbmVhclRvU1JHQkNvbG9yQ29tcG9uZW50KGZsb2F0IGMpCiAgICAgcmV0dXJu
IGNsYW1wVG88ZmxvYXQ+KDEuMDU1ZiAqIHN0ZDo6cG93KGMsIDEuMGYgLyAyLjRmKSAtIDAuMDU1
ZiwgMCwgMSk7CiB9CiAKLWZsb2F0IHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGZsb2F0IGMp
CitmbG9hdCBSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGZsb2F0IGMpCiB7CiAgICAgaWYgKGMg
PD0gMC4wNDA0NWYpCiAgICAgICAgIHJldHVybiBjIC8gMTIuOTJmOwpAQCAtNzQsMzMgKzc0LDEw
MyBAQCBGbG9hdENvbXBvbmVudHMgc1JHQkNvbG9yVG9MaW5lYXJDb21wb25lbnRzKGNvbnN0IENv
bG9yJiBjb2xvcikKICAgICBmbG9hdCByLCBnLCBiLCBhOwogICAgIGNvbG9yLmdldFJHQkEociwg
ZywgYiwgYSk7CiAgICAgcmV0dXJuIHsKLSAgICAgICAgc1JHQlRvTGluZWFyQ29sb3JDb21wb25l
bnQociksCi0gICAgICAgIHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGcpLAotICAgICAgICBz
UkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChiKSwKKyAgICAgICAgUkdCVG9MaW5lYXJDb2xvckNv
bXBvbmVudChyKSwKKyAgICAgICAgUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChnKSwKKyAgICAg
ICAgUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChiKSwKICAgICAgICAgYQogICAgIH07CiB9CiAK
LUZsb2F0Q29tcG9uZW50cyBzUkdCVG9MaW5lYXJDb21wb25lbnRzKGNvbnN0IEZsb2F0Q29tcG9u
ZW50cyYgc1JHQkNvbG9yKQorRmxvYXRDb21wb25lbnRzIFJHQlRvTGluZWFyQ29tcG9uZW50cyhj
b25zdCBGbG9hdENvbXBvbmVudHMmIFJHQkNvbG9yKQogewogICAgIHJldHVybiB7Ci0gICAgICAg
IHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50KHNSR0JDb2xvci5jb21wb25lbnRzWzBdKSwKLSAg
ICAgICAgc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnQoc1JHQkNvbG9yLmNvbXBvbmVudHNbMV0p
LAotICAgICAgICBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChzUkdCQ29sb3IuY29tcG9uZW50
c1syXSksCi0gICAgICAgIHNSR0JDb2xvci5jb21wb25lbnRzWzNdCisgICAgICAgIFJHQlRvTGlu
ZWFyQ29sb3JDb21wb25lbnQoUkdCQ29sb3IuY29tcG9uZW50c1swXSksCisgICAgICAgIFJHQlRv
TGluZWFyQ29sb3JDb21wb25lbnQoUkdCQ29sb3IuY29tcG9uZW50c1sxXSksCisgICAgICAgIFJH
QlRvTGluZWFyQ29sb3JDb21wb25lbnQoUkdCQ29sb3IuY29tcG9uZW50c1syXSksCisgICAgICAg
IFJHQkNvbG9yLmNvbXBvbmVudHNbM10KICAgICB9OwogfQogCi1GbG9hdENvbXBvbmVudHMgbGlu
ZWFyVG9TUkdCQ29tcG9uZW50cyhjb25zdCBGbG9hdENvbXBvbmVudHMmIGxpbmVhclJHQikKK0Zs
b2F0Q29tcG9uZW50cyBsaW5lYXJUb1JHQkNvbXBvbmVudHMoY29uc3QgRmxvYXRDb21wb25lbnRz
JiBsaW5lYXJSR0IpCiB7CiAgICAgcmV0dXJuIHsKLSAgICAgICAgbGluZWFyVG9TUkdCQ29sb3JD
b21wb25lbnQobGluZWFyUkdCLmNvbXBvbmVudHNbMF0pLAotICAgICAgICBsaW5lYXJUb1NSR0JD
b2xvckNvbXBvbmVudChsaW5lYXJSR0IuY29tcG9uZW50c1sxXSksCi0gICAgICAgIGxpbmVhclRv
U1JHQkNvbG9yQ29tcG9uZW50KGxpbmVhclJHQi5jb21wb25lbnRzWzJdKSwKKyAgICAgICAgbGlu
ZWFyVG9SR0JDb2xvckNvbXBvbmVudChsaW5lYXJSR0IuY29tcG9uZW50c1swXSksCisgICAgICAg
IGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQobGluZWFyUkdCLmNvbXBvbmVudHNbMV0pLAorICAg
ICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGxpbmVhclJHQi5jb21wb25lbnRzWzJdKSwK
ICAgICAgICAgbGluZWFyUkdCLmNvbXBvbmVudHNbM10KICAgICB9OwogfQogCitzdGF0aWMgRmxv
YXRDb21wb25lbnRzIFhZWlRvTGluZWFyU1JHQihjb25zdCBGbG9hdENvbXBvbmVudHMmIFhZWkNv
bXBvbmVudHMpCit7CisgICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JHQgor
ICAgIC8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4Lmh0bWw/RXFuX1JHQl9Y
WVpfTWF0cml4Lmh0bWwKKyAgICBjb25zdCBmbG9hdCB2YWx1ZXNbXSA9IHsKKyAgICAgICAgIDMu
MjQwNDU0MmYsIC0xLjUzNzEzODVmLCAtMC40OTg1MzE0ZiwgMC4wZiwgMC4wZiwKKyAgICAgICAg
LTAuOTY5MjY2MGYsICAxLjg3NjAxMDhmLCAgMC4wNDE1NTYwZiwgMC4wZiwgMC4wZiwKKyAgICAg
ICAgIDAuMDU1NjQzNGYsIC0wLjIwNDAyNTlmLCAgMS4wNTcyMjUyZiwgMC4wZiwgMC4wZiwKKyAg
ICAgICAgIDAuMGYsICAgICAgICAwLjBmLCAgICAgICAgMC4wZiwgICAgICAgMS4wZiwgMC4wZiwK
KyAgICB9OworICAgIENvbG9yTWF0cml4IFhZWlRvTGluZWFyU1JHQk1hdHJpeCh2YWx1ZXMpOwor
ICAgIHJldHVybiBYWVpUb0xpbmVhclNSR0JNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVu
dHMoWFlaQ29tcG9uZW50cyk7Cit9CisKK3N0YXRpYyBGbG9hdENvbXBvbmVudHMgbGluZWFyU1JH
QlRvWFlaKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgWFlaQ29tcG9uZW50cykKK3sKKyAgICAvLyBo
dHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCisgICAgLy8gaHR0cDovL3d3dy5icnVj
ZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbAorICAgIGNv
bnN0IGZsb2F0IHZhbHVlc1tdID0geworICAgICAgICAwLjQxMjQ1NjQsICAwLjM1NzU3NjEsICAw
LjE4MDQzNzUsIDAuMGYsIDAuMGYsCisgICAgICAgIDAuMjEyNjcyOSwgIDAuNzE1MTUyMiwgIDAu
MDcyMTc1MCwgMC4wZiwgMC4wZiwKKyAgICAgICAgMC4wMTkzMzM5LCAgMC4xMTkxOTIwLCAgMC45
NTAzMDQxLCAwLjBmLCAwLjBmLAorICAgICAgICAwLjBmLCAgICAgICAwLjBmLCAgICAgICAwLjBm
LCAgICAgIDEuMGYsIDAuMGYsCisgICAgfTsKKyAgICBDb2xvck1hdHJpeCBsaW5lYXJTUkdCVG9Y
WVpNYXRyaXgodmFsdWVzKTsKKyAgICByZXR1cm4gbGluZWFyU1JHQlRvWFlaTWF0cml4LnRyYW5z
Zm9ybWVkQ29sb3JDb21wb25lbnRzKFhZWkNvbXBvbmVudHMpOworfQorCitzdGF0aWMgRmxvYXRD
b21wb25lbnRzIFhZWlRvTGluZWFyUDMoY29uc3QgRmxvYXRDb21wb25lbnRzJiBYWVpDb21wb25l
bnRzKQoreworICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3IvI2NvbG9y
LWNvbnZlcnNpb24tY29kZQorICAgIGNvbnN0IGZsb2F0IHZhbHVlc1tdID0geworICAgICAgICAg
Mi40OTM0OTY5MTE5NDE0MjVmLCAgIC0wLjkzMTM4MzYxNzkxOTEyMzlmLCAtMC40MDI3MTA3ODQ0
NTA3MTY4NGYsIDAuMGYsIDAuMGYsCisgICAgICAgIC0wLjgyOTQ4ODk2OTU2MTU3NDdmLCAgIDEu
NzYyNjY0MDYwMzE4MzQ2M2YsICAwLjAyMzYyNDY4NTg0MTk0MzU4ZiwgMC4wZiwgMC4wZiwKKyAg
ICAgICAgIDAuMDM1ODQ1ODMwMjQzNzg0NDdmLCAtMC4wNzYxNzIzODkyNjgwNDE4MmYsIDAuOTU2
ODg0NTI0MDA3Njg3MmYsICAwLjBmLCAwLjBmLAorICAgICAgICAgMC4wZiwgICAgICAgICAgICAg
ICAgICAwLjBmLCAgICAgICAgICAgICAgICAgMC4wZiwgICAgICAgICAgICAgICAgIDEuMGYsIDAu
MGYsCisgICAgfTsKKyAgICBDb2xvck1hdHJpeCBYWVpUb0xpbmVhclNSR0JNYXRyaXgodmFsdWVz
KTsKKyAgICByZXR1cm4gWFlaVG9MaW5lYXJTUkdCTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21w
b25lbnRzKFhZWkNvbXBvbmVudHMpOworfQorCitzdGF0aWMgRmxvYXRDb21wb25lbnRzIGxpbmVh
clAzVG9YWVooY29uc3QgRmxvYXRDb21wb25lbnRzJiBYWVpDb21wb25lbnRzKQoreworICAgIC8v
IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3IvI2NvbG9yLWNvbnZlcnNpb24tY29k
ZQorICAgIGNvbnN0IGZsb2F0IHZhbHVlc1tdID0geworICAgICAgICAwLjQ4NjU3MDk0ODY0ODIx
NjJmLCAwLjI2NTY2NzY5MzE2OTA5MzFmLCAwLjE5ODIxNzI4NTIzNDM2MjVmLCAwLjBmLCAwLjBm
LAorICAgICAgICAwLjIyODk3NDU2NDA2OTc0ODhmLCAwLjY5MTczODUyMTgzNjUwNjRmLCAwLjA3
OTI4NjkxNDA5Mzc0NWYsICAwLjBmLCAwLjBmLAorICAgICAgICAwLjBmLCAgICAgICAgICAgICAg
ICAwLjA0NTExMzM4MTg1ODkwMjZmLCAxLjA0Mzk0NDM2ODkwMDk3NmYsICAwLjBmLCAwLjBmLAor
ICAgICAgICAwLjBmLCAgICAgICAgICAgICAgICAwLjBmLCAgICAgICAgICAgICAgICAwLjBmLCAg
ICAgICAgICAgICAgICAxLjBmLCAwLjBmLAorICAgIH07CisgICAgQ29sb3JNYXRyaXggbGluZWFy
UDNUb1hZWk1hdHJpeCh2YWx1ZXMpOworICAgIHJldHVybiBsaW5lYXJQM1RvWFlaTWF0cml4LnRy
YW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKFhZWkNvbXBvbmVudHMpOworfQorCitGbG9hdENvbXBv
bmVudHMgUDNUb1NSR0IoY29uc3QgRmxvYXRDb21wb25lbnRzJiBwMykKK3sKKyAgICBhdXRvIGxp
bmVhclAzID0gUkdCVG9MaW5lYXJDb21wb25lbnRzKHAzKTsKKyAgICBhdXRvIHh5eiA9IGxpbmVh
clAzVG9YWVoobGluZWFyUDMpOworICAgIGF1dG8gbGluZWFyU1JHQiA9IFhZWlRvTGluZWFyU1JH
Qih4eXopOworICAgIHJldHVybiBsaW5lYXJUb1JHQkNvbXBvbmVudHMobGluZWFyU1JHQik7Cit9
CisKK0Zsb2F0Q29tcG9uZW50cyBzUkdCVG9QMyhjb25zdCBGbG9hdENvbXBvbmVudHMmIHNSR0Ip
Cit7CisgICAgYXV0byBsaW5lYXJTUkdCID0gUkdCVG9MaW5lYXJDb21wb25lbnRzKHNSR0IpOwor
ICAgIGF1dG8geHl6ID0gbGluZWFyU1JHQlRvWFlaKGxpbmVhclNSR0IpOworICAgIGF1dG8gbGlu
ZWFyUDMgPSBYWVpUb0xpbmVhclAzKHh5eik7CisgICAgcmV0dXJuIGxpbmVhclRvUkdCQ29tcG9u
ZW50cyhsaW5lYXJQMyk7Cit9CisKIC8vIFRoaXMgaXMgc2ltaWxhciB0byBzUkdCVG9MaW5lYXJD
b2xvckNvbXBvbmVudCBidXQgZm9yIHNvbWUgcmVhc29uCiAvLyBodHRwczovL3d3dy53My5vcmcv
VFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNyZWxhdGl2ZWx1bWluYW5jZWRlZgogLy8gZG9l
c24ndCB1c2UgdGhlIHN0YW5kYXJkIHNSR0IgLT4gbGluZWFyUkdCIHRocmVzaG9sZCBvZiAwLjA0
MDQ1LgpAQCAtMzUxLDE3ICs0MjEsMzIgQEAgQ29sb3JNYXRyaXggQ29sb3JNYXRyaXg6OnNlcGlh
TWF0cml4KGZsb2F0IGFtb3VudCkKICAgICByZXR1cm4gbWF0cml4OwogfQogCi12b2lkIENvbG9y
TWF0cml4Ojp0cmFuc2Zvcm1Db2xvckNvbXBvbmVudHMoRmxvYXRDb21wb25lbnRzJiBjb2xvckNv
bW9uZW50cykgY29uc3QKK3ZvaWQgQ29sb3JNYXRyaXg6OnRyYW5zZm9ybUNvbG9yQ29tcG9uZW50
cyhGbG9hdENvbXBvbmVudHMmIGNvbG9yQ29tcG9uZW50cykgY29uc3QKK3sKKyAgICBmbG9hdCBy
ZWQgPSBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1swXTsKKyAgICBmbG9hdCBncmVlbiA9IGNv
bG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzFdOworICAgIGZsb2F0IGJsdWUgPSBjb2xvckNvbXBv
bmVudHMuY29tcG9uZW50c1syXTsKKyAgICBmbG9hdCBhbHBoYSA9IGNvbG9yQ29tcG9uZW50cy5j
b21wb25lbnRzWzNdOworCisgICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMF0gPSBtX21h
dHJpeFswXVswXSAqIHJlZCArIG1fbWF0cml4WzBdWzFdICogZ3JlZW4gKyBtX21hdHJpeFswXVsy
XSAqIGJsdWUgKyBtX21hdHJpeFswXVszXSAqIGFscGhhICsgbV9tYXRyaXhbMF1bNF07CisgICAg
Y29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMV0gPSBtX21hdHJpeFsxXVswXSAqIHJlZCArIG1f
bWF0cml4WzFdWzFdICogZ3JlZW4gKyBtX21hdHJpeFsxXVsyXSAqIGJsdWUgKyBtX21hdHJpeFsx
XVszXSAqIGFscGhhICsgbV9tYXRyaXhbMV1bNF07CisgICAgY29sb3JDb21wb25lbnRzLmNvbXBv
bmVudHNbMl0gPSBtX21hdHJpeFsyXVswXSAqIHJlZCArIG1fbWF0cml4WzJdWzFdICogZ3JlZW4g
KyBtX21hdHJpeFsyXVsyXSAqIGJsdWUgKyBtX21hdHJpeFsyXVszXSAqIGFscGhhICsgbV9tYXRy
aXhbMl1bNF07CisgICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbM10gPSBtX21hdHJpeFsz
XVswXSAqIHJlZCArIG1fbWF0cml4WzNdWzFdICogZ3JlZW4gKyBtX21hdHJpeFszXVsyXSAqIGJs
dWUgKyBtX21hdHJpeFszXVszXSAqIGFscGhhICsgbV9tYXRyaXhbM11bNF07Cit9CisKK0Zsb2F0
Q29tcG9uZW50cyBDb2xvck1hdHJpeDo6dHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoY29uc3Qg
RmxvYXRDb21wb25lbnRzJiBjb2xvckNvbXBvbmVudHMpIGNvbnN0CiB7Ci0gICAgZmxvYXQgcmVk
ID0gY29sb3JDb21vbmVudHMuY29tcG9uZW50c1swXTsKLSAgICBmbG9hdCBncmVlbiA9IGNvbG9y
Q29tb25lbnRzLmNvbXBvbmVudHNbMV07Ci0gICAgZmxvYXQgYmx1ZSA9IGNvbG9yQ29tb25lbnRz
LmNvbXBvbmVudHNbMl07Ci0gICAgZmxvYXQgYWxwaGEgPSBjb2xvckNvbW9uZW50cy5jb21wb25l
bnRzWzNdOwotCi0gICAgY29sb3JDb21vbmVudHMuY29tcG9uZW50c1swXSA9IG1fbWF0cml4WzBd
WzBdICogcmVkICsgbV9tYXRyaXhbMF1bMV0gKiBncmVlbiArIG1fbWF0cml4WzBdWzJdICogYmx1
ZSArIG1fbWF0cml4WzBdWzNdICogYWxwaGEgKyBtX21hdHJpeFswXVs0XTsKLSAgICBjb2xvckNv
bW9uZW50cy5jb21wb25lbnRzWzFdID0gbV9tYXRyaXhbMV1bMF0gKiByZWQgKyBtX21hdHJpeFsx
XVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbMV1bMl0gKiBibHVlICsgbV9tYXRyaXhbMV1bM10gKiBh
bHBoYSArIG1fbWF0cml4WzFdWzRdOwotICAgIGNvbG9yQ29tb25lbnRzLmNvbXBvbmVudHNbMl0g
PSBtX21hdHJpeFsyXVswXSAqIHJlZCArIG1fbWF0cml4WzJdWzFdICogZ3JlZW4gKyBtX21hdHJp
eFsyXVsyXSAqIGJsdWUgKyBtX21hdHJpeFsyXVszXSAqIGFscGhhICsgbV9tYXRyaXhbMl1bNF07
Ci0gICAgY29sb3JDb21vbmVudHMuY29tcG9uZW50c1szXSA9IG1fbWF0cml4WzNdWzBdICogcmVk
ICsgbV9tYXRyaXhbM11bMV0gKiBncmVlbiArIG1fbWF0cml4WzNdWzJdICogYmx1ZSArIG1fbWF0
cml4WzNdWzNdICogYWxwaGEgKyBtX21hdHJpeFszXVs0XTsKKyAgICBmbG9hdCByZWQgPSBjb2xv
ckNvbXBvbmVudHMuY29tcG9uZW50c1swXTsKKyAgICBmbG9hdCBncmVlbiA9IGNvbG9yQ29tcG9u
ZW50cy5jb21wb25lbnRzWzFdOworICAgIGZsb2F0IGJsdWUgPSBjb2xvckNvbXBvbmVudHMuY29t
cG9uZW50c1syXTsKKyAgICBmbG9hdCBhbHBoYSA9IGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRz
WzNdOworCisgICAgcmV0dXJuIHsKKyAgICAgICAgbV9tYXRyaXhbMF1bMF0gKiByZWQgKyBtX21h
dHJpeFswXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbMF1bMl0gKiBibHVlICsgbV9tYXRyaXhbMF1b
M10gKiBhbHBoYSArIG1fbWF0cml4WzBdWzRdLAorICAgICAgICBtX21hdHJpeFsxXVswXSAqIHJl
ZCArIG1fbWF0cml4WzFdWzFdICogZ3JlZW4gKyBtX21hdHJpeFsxXVsyXSAqIGJsdWUgKyBtX21h
dHJpeFsxXVszXSAqIGFscGhhICsgbV9tYXRyaXhbMV1bNF0sCisgICAgICAgIG1fbWF0cml4WzJd
WzBdICogcmVkICsgbV9tYXRyaXhbMl1bMV0gKiBncmVlbiArIG1fbWF0cml4WzJdWzJdICogYmx1
ZSArIG1fbWF0cml4WzJdWzNdICogYWxwaGEgKyBtX21hdHJpeFsyXVs0XSwKKyAgICAgICAgbV9t
YXRyaXhbM11bMF0gKiByZWQgKyBtX21hdHJpeFszXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbM11b
Ml0gKiBibHVlICsgbV9tYXRyaXhbM11bM10gKiBhbHBoYSArIG1fbWF0cml4WzNdWzRdCisgICAg
fTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgKaW5kZXggYjIxY2EyODVhYTJlMjU3YTZi
MGI5NTFhMGNhOGMzYjQxOTE0OWFiOS4uMjU1ZGI3NGI5ODg3N2E3ZDIzODlkY2Q1OTZlYmQ3ZThk
NWE1YzY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
clV0aWxpdGllcy5oCkBAIC0xNzMsMTIgKzE3MywxNSBAQCBpbmxpbmUgdW5zaWduZWQgYnl0ZU9m
ZnNldE9mUGl4ZWwodW5zaWduZWQgeCwgdW5zaWduZWQgeSwgdW5zaWduZWQgcm93Qnl0ZXMpCiB9
CiAKIC8vIDAtMSBjb21wb25lbnRzLCByZXN1bHQgaXMgY2xhbXBlZC4KLWZsb2F0IGxpbmVhclRv
U1JHQkNvbG9yQ29tcG9uZW50KGZsb2F0KTsKLWZsb2F0IHNSR0JUb0xpbmVhckNvbG9yQ29tcG9u
ZW50KGZsb2F0KTsKK2Zsb2F0IGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQoZmxvYXQpOworZmxv
YXQgUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChmbG9hdCk7CiAKIEZsb2F0Q29tcG9uZW50cyBz
UkdCQ29sb3JUb0xpbmVhckNvbXBvbmVudHMoY29uc3QgQ29sb3ImKTsKLUZsb2F0Q29tcG9uZW50
cyBzUkdCVG9MaW5lYXJDb21wb25lbnRzKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYpOwotRmxvYXRD
b21wb25lbnRzIGxpbmVhclRvU1JHQkNvbXBvbmVudHMoY29uc3QgRmxvYXRDb21wb25lbnRzJik7
CitGbG9hdENvbXBvbmVudHMgUkdCVG9MaW5lYXJDb21wb25lbnRzKGNvbnN0IEZsb2F0Q29tcG9u
ZW50cyYpOworRmxvYXRDb21wb25lbnRzIGxpbmVhclRvUkdCQ29tcG9uZW50cyhjb25zdCBGbG9h
dENvbXBvbmVudHMmKTsKKworRmxvYXRDb21wb25lbnRzIFAzVG9TUkdCKGNvbnN0IEZsb2F0Q29t
cG9uZW50cyYpOworRmxvYXRDb21wb25lbnRzIHNSR0JUb1AzKGNvbnN0IEZsb2F0Q29tcG9uZW50
cyYpOwogCiBGbG9hdENvbXBvbmVudHMgc1JHQlRvSFNMKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYp
OwogRmxvYXRDb21wb25lbnRzIEhTTFRvU1JHQihjb25zdCBGbG9hdENvbXBvbmVudHMmKTsKQEAg
LTE5Nyw2ICsyMDAsNyBAQCBwdWJsaWM6CiAgICAgQ29sb3JNYXRyaXgoY29uc3QgZmxvYXRbMjBd
KTsKICAgICAKICAgICB2b2lkIHRyYW5zZm9ybUNvbG9yQ29tcG9uZW50cyhGbG9hdENvbXBvbmVu
dHMmKSBjb25zdDsKKyAgICBGbG9hdENvbXBvbmVudHMgdHJhbnNmb3JtZWRDb2xvckNvbXBvbmVu
dHMoY29uc3QgRmxvYXRDb21wb25lbnRzJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBt
YWtlSWRlbnRpdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAppbmRleCAw
NzZhZjQwODk2YmFhY2Q4MGQ5ZjFjNWVmYWE3OTBhMTQ5YjhkZDdmLi5hM2Y5MmRiNjJkN2ZlY2Y0
ZGVhNGQ4M2ZkZTA0NTQ4ZmM2MjU1YTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tl
bmQuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRy
YW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvCiAgICAgICAg
ICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKICAgICAgICAgICAgICAgICBmbG9hdCBjb2xv
ciA9IGkgLyAyNTUuMGY7Ci0gICAgICAgICAgICAgICAgY29sb3IgPSBzUkdCVG9MaW5lYXJDb2xv
ckNvbXBvbmVudChjb2xvcik7CisgICAgICAgICAgICAgICAgY29sb3IgPSBSR0JUb0xpbmVhckNv
bG9yQ29tcG9uZW50KGNvbG9yKTsKICAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHJvdW5kKGNvbG9yICogMjU1KSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICByZXR1cm4gYXJyYXk7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBD
b2xvCiAgICAgICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKICAgICAgICAgICAgICAg
ICBmbG9hdCBjb2xvciA9IGkgLyAyNTUuMGY7Ci0gICAgICAgICAgICAgICAgY29sb3IgPSBsaW5l
YXJUb1NSR0JDb2xvckNvbXBvbmVudChjb2xvcik7CisgICAgICAgICAgICAgICAgY29sb3IgPSBs
aW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGNvbG9yKTsKICAgICAgICAgICAgICAgICBhcnJheVtp
XSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJvdW5kKGNvbG9yICogMjU1KSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICByZXR1cm4gYXJyYXk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjcxNzM0OTJjYTk1ZGQ2ZTkyMmMzZjY5MTBiN2My
MjE1NzQ2NDVlNC4uNTZmYmE3M2Q0YjVjMGI1ZTFiZDIyNTMwMTY2Yzc0OTM2ZWRjYTgxNiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDIwLTA1LTE3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBjb252ZXJzaW9uIGJldHdlZW4gUDMgYW5kIHNSR0IgY29s
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTk5
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFQSSB0
ZXN0IGZvciBjb252ZXJzaW9ucyBmcm9tIFAzIHRvIHNSR0IsIGFuZCBsaW5lYXJSR0IgdG8gc1JH
Qi4gVmFsdWVzIHdlcmUgY29uZmlybWVkCisgICAgICAgIGFzIGNsb3NlIHRvIHRob3NlIHByb3Zp
ZGVkIGJ5IENvbG9yU3luYyBVdGlsaXR5LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKwogMjAyMC0wNS0xNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBGaXggb3BlcmF0b3I9PSBhbmQgaGFzaCgpIGZvciBFeHRlbmRlZENv
bG9yCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0ZW5k
ZWRDb2xvclRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRl
bmRlZENvbG9yVGVzdHMuY3BwCmluZGV4IGZlMWY0MTEzZTU1ZjgyY2I2YmFkZTdkNTg3NDUzZWI2
ODU1ODhmOTUuLmZjZjU0ZmVlYWJlNGI1NTVjMGEzMDQ4YThiMTA1ZjkwNzJjNjU5ZmEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9yVGVz
dHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENv
bG9yVGVzdHMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiVGVzdC5oIgogI2luY2x1
ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApA
QCAtMjIxLDUgKzIyMiwyOSBAQCBURVNUKEV4dGVuZGVkQ29sb3IsIFJldHVyblZhbHVlcykKICAg
ICBFWFBFQ1RfRVEoYzIuY3NzVGV4dCgpLCAiY29sb3IoZGlzcGxheS1wMyAxIDAuNSAwLjI1KSIp
OwogfQogCitURVNUKEV4dGVuZGVkQ29sb3IsIFAzQ29udmVyc2lvblRvU1JHQikKK3sKKyAgICB7
CisgICAgICAgIENvbG9yIHAzQ29sb3IoMS4wLCAwLjUsIDAuMjUsIDAuNzUsIENvbG9yU3BhY2U6
OkRpc3BsYXlQMyk7CisgICAgICAgIEVYUEVDVF9UUlVFKHAzQ29sb3IuaXNFeHRlbmRlZCgpKTsK
KworICAgICAgICBhdXRvIHNSR0JDb21wb25lbnRzID0gcDNDb2xvci50b1NSR0JBQ29tcG9uZW50
c0xvc3N5KCk7CisgICAgICAgIEVYUEVDVF9UUlVFKFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChz
UkdCQ29tcG9uZW50cy5jb21wb25lbnRzWzBdLCAxLjBmKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChzUkdCQ29tcG9uZW50cy5jb21wb25lbnRzWzFdLCAw
LjQ2MjUzNzg4NWYpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoV1RGOjphcmVFc3NlbnRpYWxseUVx
dWFsKHNSR0JDb21wb25lbnRzLmNvbXBvbmVudHNbMl0sIDAuMTQ5MTQ3ODM4ZikpOworICAgICAg
ICBFWFBFQ1RfVFJVRShXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoc1JHQkNvbXBvbmVudHMuY29t
cG9uZW50c1szXSwgMC43NWYpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbG9yIGxpbmVh
ckNvbG9yKDEuMCwgMC41LCAwLjI1LCAwLjc1LCBDb2xvclNwYWNlOjpMaW5lYXJSR0IpOworICAg
ICAgICBFWFBFQ1RfVFJVRShsaW5lYXJDb2xvci5pc0V4dGVuZGVkKCkpOworICAgICAgICBhdXRv
IHNSR0JDb21wb25lbnRzID0gbGluZWFyQ29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoc1JHQkNvbXBvbmVu
dHMuY29tcG9uZW50c1swXSwgMS4wZikpOworICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmFyZUVz
c2VudGlhbGx5RXF1YWwoc1JHQkNvbXBvbmVudHMuY29tcG9uZW50c1sxXSwgMC43MzUzNTY5Mjdm
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChzUkdCQ29t
cG9uZW50cy5jb21wb25lbnRzWzJdLCAwLjUzNzA5ODcwNmYpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKHNSR0JDb21wb25lbnRzLmNvbXBvbmVudHNbM10s
IDAuNzVmKSk7CisgICAgfQorfQorCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="415023"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399661</attachid>
            <date>2020-05-18 11:28:29 -0700</date>
            <delta_ts>2020-05-18 13:22:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211998-20200518112828.patch</filename>
            <type>text/plain</type>
            <size>19894</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxODE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJmYWVkY2IxMjQyMjg3
ODQ1YTFhM2E2Mjc3MWM0ZDYxNTU3OTg0ZC4uMDhiNzBhYjgwMzBiZGFiMjMwMGI0MWQyZDY4MTIw
N2RkNDQ0NDY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIwLTA1LTE4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBj
b252ZXJzaW9uIGJldHdlZW4gUDMgYW5kIHNSR0IgY29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTk5OAorCisgICAgICAgIFJldmlld2VkIGJ5
IERhbmllbCBCYXRlcy4KKyAgICAgICAgCisgICAgICAgIENvbG9yOjp0b1NSR0JBQ29tcG9uZW50
c0xvc3N5KCkgd2FzIGEgbGllIGJlY2F1c2UgaXQgZGlkbid0IGFjdHVhbGx5IGNvbnZlcnQgZXh0
ZW5kZWQKKyAgICAgICAgY29sb3JzIGludG8gc1JHQi4gRml4IHRoYXQgYnkgY29udmVydGluZyBQ
MyBhbmQgbGluYWVyUkdCIGNvbG9ycyBpbnRvIHNSR0IsIHVzaW5nIHRoZSBjb2xvcgorICAgICAg
ICBtYXRoIGZyb20gQ1NTIENvbG9yIDQuCisKKyAgICAgICAgUmVuYW1lZCB0aGUgdmFyaW91cyAi
bGluZWFyIHRvIHNSR0IiIGZ1bmN0aW9ucyBiZWNhdXNlIHRoZXkgd29yayBmb3IgYW55IFJHQiBj
b2xvcnMsCisgICAgICAgIG5vdCBqdXN0IHNSR0IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6dG9TUkdCQUNvbXBvbmVu
dHNMb3NzeSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJH
QlRvTGluZWFyQ29sb3JDb21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6c1JHQkNvbG9yVG9M
aW5lYXJDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJHQlRvTGluZWFyQ29tcG9uZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpsaW5lYXJUb1JHQkNvbXBvbmVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6WFlaVG9MaW5lYXJTUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OmxpbmVhclNSR0JU
b1hZWik6CisgICAgICAgIChXZWJDb3JlOjpYWVpUb0xpbmVhclAzKToKKyAgICAgICAgKFdlYkNv
cmU6OmxpbmVhclAzVG9YWVopOgorICAgICAgICAoV2ViQ29yZTo6UDNUb1NSR0IpOgorICAgICAg
ICAoV2ViQ29yZTo6c1JHQlRvUDMpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JNYXRyaXg6OnRy
YW5zZm9ybWVkQ29sb3JDb21wb25lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmxpbmVh
clRvU1JHQkNvbG9yQ29tcG9uZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNSR0JU
b0xpbmVhckNvbG9yQ29tcG9uZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNSR0JU
b0xpbmVhckNvbXBvbmVudHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyVG9T
UkdCQ29tcG9uZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JVdGlsaXRpZXMuaDoKKwogMjAyMC0wNS0xOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaW5kIGRvZXNuJ3QgYWx3YXlzIHNjcm9sbCBzZWFyY2gg
cmVzdWx0cyBpbnRvIHZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
LmNwcAppbmRleCA5MmIzYjViYzA5MWFjZGE2YzQzOTNhY2EwNDg1ODNmZjQ3MGRjOThiLi5kM2Q4
MTY0NTY3YTdmZmMzOTdhMmQ5YmI4ZmQwNDE1ODE2ZDY1YzczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFJHQkEzMiBjb2xv
cldpdGhPdmVycmlkZUFscGhhKFJHQkEzMiBjb2xvciwgZmxvYXQgb3ZlcnJpZGVBbHBoYSkKIFJH
QkEzMiBtYWtlUkdCQUZyb21IU0xBKGZsb2F0IGh1ZSwgZmxvYXQgc2F0dXJhdGlvbiwgZmxvYXQg
bGlnaHRuZXNzLCBmbG9hdCBhbHBoYSkKIHsKICAgICBjb25zdCBmbG9hdCBzY2FsZUZhY3RvciA9
IDI1NS4wOwotICAgIEZsb2F0Q29tcG9uZW50cyBmbG9hdFJlc3VsdCA9IEhTTFRvU1JHQih7IGh1
ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzLCBhbHBoYSB9KTsKKyAgICBGbG9hdENvbXBvbmVudHMg
ZmxvYXRSZXN1bHQgPSBoc2xUb1NSR0IoeyBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcywgYWxw
aGEgfSk7CiAgICAgcmV0dXJuIG1ha2VSR0JBKAogICAgICAgICByb3VuZChmbG9hdFJlc3VsdC5j
b21wb25lbnRzWzBdICogc2NhbGVGYWN0b3IpLAogICAgICAgICByb3VuZChmbG9hdFJlc3VsdC5j
b21wb25lbnRzWzFdICogc2NhbGVGYWN0b3IpLApAQCAtNTYxLDEwICs1NjEsMTEgQEAgRmxvYXRD
b21wb25lbnRzIENvbG9yOjp0b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkgY29uc3QKICAgICAgICAg
YXV0byYgZXh0ZW5kZWRDb2xvciA9IGFzRXh0ZW5kZWQoKTsKICAgICAgICAgc3dpdGNoIChleHRl
bmRlZENvbG9yLmNvbG9yU3BhY2UoKSkgewogICAgICAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6
CisgICAgICAgICAgICByZXR1cm4gZXh0ZW5kZWRDb2xvci5jaGFubmVscygpOwogICAgICAgICBj
YXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKKyAgICAgICAgICAgIHJldHVybiBsaW5lYXJUb1JH
QkNvbXBvbmVudHMoZXh0ZW5kZWRDb2xvci5jaGFubmVscygpKTsKICAgICAgICAgY2FzZSBDb2xv
clNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IGNv
bnZlcnQgaW50byBzUkdCIGFuZCBzaG91bGQuCi0gICAgICAgICAgICByZXR1cm4gZXh0ZW5kZWRD
b2xvci5jaGFubmVscygpOworICAgICAgICAgICAgcmV0dXJuIHAzVG9TUkdCKGV4dGVuZGVkQ29s
b3IuY2hhbm5lbHMoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZmxvYXQgciwgZywgYiwgYTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCmluZGV4IGQ5NDBiZGUxMzZk
MTQ5MGFjZjAyMWZmNzQ4NzNiMmY2YzU4OGU5NTMuLjU1NmU5NWZhYTgxYjAwYjEyZWJkM2Y4YzFi
ZThjNDFlMzU5NTY0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3Iu
aApAQCAtMjExLDExICsyMTEsMTIgQEAgcHVibGljOgogICAgIC8vIHJlcGxhY2VkIHdpdGggYWx0
ZXJuYXRpdmUgYWNjZXNzb3JzLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UkdCQShmbG9h
dCYgciwgZmxvYXQmIGcsIGZsb2F0JiBiLCBmbG9hdCYgYSkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBnZXRSR0JBKGRvdWJsZSYgciwgZG91YmxlJiBnLCBkb3VibGUmIGIsIGRvdWJs
ZSYgYSkgY29uc3Q7CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEhTTChkb3VibGUmIGgs
IGRvdWJsZSYgcywgZG91YmxlJiBsKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdl
dEhTVihkb3VibGUmIGgsIGRvdWJsZSYgcywgZG91YmxlJiB2KSBjb25zdDsKIAogICAgIC8vIFRo
aXMgd2lsbCBjb252ZXJ0IG5vbi1zUkdCIGNvbG9yc3BhY2UgY29sb3JzIGludG8gc1JHQi4KLSAg
ICBGbG9hdENvbXBvbmVudHMgdG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIEZsb2F0Q29tcG9uZW50cyB0b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkgY29u
c3Q7CiAKICAgICBDb2xvciBsaWdodCgpIGNvbnN0OwogICAgIENvbG9yIGRhcmsoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0
aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVz
LmNwcAppbmRleCBiNWMxNTliOTVjYTc2YmNhZjBlNTU3ZWM3ZDZmODJmYjYwMTVjNDQ5Li5lMjBh
MDU4NmE5Y2FmZjhhNTQ1ZmYyZDM1YTJiNzA1ZmI5ZTI4OTBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIGJvb2wgYXJlRXNzZW50aWFsbHlFcXVhbChjb25zdCBGbG9hdENvbXBvbmVudHMmIGEs
IGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgYikKIH0KIAogLy8gVGhlc2UgYXJlIHRoZSBzdGFuZGFy
ZCBzUkdCIDwtPiBsaW5lYXJSR0IgY29udmVyc2lvbiBmdW5jdGlvbnMgKGh0dHBzOi8vZW4ud2lr
aXBlZGlhLm9yZy93aWtpL1NSR0IpLgotZmxvYXQgbGluZWFyVG9TUkdCQ29sb3JDb21wb25lbnQo
ZmxvYXQgYykKK2Zsb2F0IGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQoZmxvYXQgYykKIHsKICAg
ICBpZiAoYyA8IDAuMDAzMTMwOGYpCiAgICAgICAgIHJldHVybiAxMi45MmYgKiBjOwpAQCAtNjEs
NyArNjEsNyBAQCBmbG9hdCBsaW5lYXJUb1NSR0JDb2xvckNvbXBvbmVudChmbG9hdCBjKQogICAg
IHJldHVybiBjbGFtcFRvPGZsb2F0PigxLjA1NWYgKiBzdGQ6OnBvdyhjLCAxLjBmIC8gMi40Zikg
LSAwLjA1NWYsIDAsIDEpOwogfQogCi1mbG9hdCBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChm
bG9hdCBjKQorZmxvYXQgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChmbG9hdCBjKQogewogICAg
IGlmIChjIDw9IDAuMDQwNDVmKQogICAgICAgICByZXR1cm4gYyAvIDEyLjkyZjsKQEAgLTc0LDMz
ICs3NCwxMDMgQEAgRmxvYXRDb21wb25lbnRzIHNSR0JDb2xvclRvTGluZWFyQ29tcG9uZW50cyhj
b25zdCBDb2xvciYgY29sb3IpCiAgICAgZmxvYXQgciwgZywgYiwgYTsKICAgICBjb2xvci5nZXRS
R0JBKHIsIGcsIGIsIGEpOwogICAgIHJldHVybiB7Ci0gICAgICAgIHNSR0JUb0xpbmVhckNvbG9y
Q29tcG9uZW50KHIpLAotICAgICAgICBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChnKSwKLSAg
ICAgICAgc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnQoYiksCisgICAgICAgIHJnYlRvTGluZWFy
Q29sb3JDb21wb25lbnQociksCisgICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoZyks
CisgICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoYiksCiAgICAgICAgIGEKICAgICB9
OwogfQogCi1GbG9hdENvbXBvbmVudHMgc1JHQlRvTGluZWFyQ29tcG9uZW50cyhjb25zdCBGbG9h
dENvbXBvbmVudHMmIHNSR0JDb2xvcikKK0Zsb2F0Q29tcG9uZW50cyByZ2JUb0xpbmVhckNvbXBv
bmVudHMoY29uc3QgRmxvYXRDb21wb25lbnRzJiBSR0JDb2xvcikKIHsKICAgICByZXR1cm4gewot
ICAgICAgICBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChzUkdCQ29sb3IuY29tcG9uZW50c1sw
XSksCi0gICAgICAgIHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50KHNSR0JDb2xvci5jb21wb25l
bnRzWzFdKSwKLSAgICAgICAgc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnQoc1JHQkNvbG9yLmNv
bXBvbmVudHNbMl0pLAotICAgICAgICBzUkdCQ29sb3IuY29tcG9uZW50c1szXQorICAgICAgICBy
Z2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KFJHQkNvbG9yLmNvbXBvbmVudHNbMF0pLAorICAgICAg
ICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KFJHQkNvbG9yLmNvbXBvbmVudHNbMV0pLAorICAg
ICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KFJHQkNvbG9yLmNvbXBvbmVudHNbMl0pLAor
ICAgICAgICBSR0JDb2xvci5jb21wb25lbnRzWzNdCiAgICAgfTsKIH0KIAotRmxvYXRDb21wb25l
bnRzIGxpbmVhclRvU1JHQkNvbXBvbmVudHMoY29uc3QgRmxvYXRDb21wb25lbnRzJiBsaW5lYXJS
R0IpCitGbG9hdENvbXBvbmVudHMgbGluZWFyVG9SR0JDb21wb25lbnRzKGNvbnN0IEZsb2F0Q29t
cG9uZW50cyYgbGluZWFyUkdCKQogewogICAgIHJldHVybiB7Ci0gICAgICAgIGxpbmVhclRvU1JH
QkNvbG9yQ29tcG9uZW50KGxpbmVhclJHQi5jb21wb25lbnRzWzBdKSwKLSAgICAgICAgbGluZWFy
VG9TUkdCQ29sb3JDb21wb25lbnQobGluZWFyUkdCLmNvbXBvbmVudHNbMV0pLAotICAgICAgICBs
aW5lYXJUb1NSR0JDb2xvckNvbXBvbmVudChsaW5lYXJSR0IuY29tcG9uZW50c1syXSksCisgICAg
ICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQobGluZWFyUkdCLmNvbXBvbmVudHNbMF0pLAor
ICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGxpbmVhclJHQi5jb21wb25lbnRzWzFd
KSwKKyAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChsaW5lYXJSR0IuY29tcG9uZW50
c1syXSksCiAgICAgICAgIGxpbmVhclJHQi5jb21wb25lbnRzWzNdCiAgICAgfTsKIH0KIAorc3Rh
dGljIEZsb2F0Q29tcG9uZW50cyB4eXpUb0xpbmVhclNSR0IoY29uc3QgRmxvYXRDb21wb25lbnRz
JiBYWVpDb21wb25lbnRzKQoreworICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtp
L1NSR0IKKyAgICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vx
bl9SR0JfWFlaX01hdHJpeC5odG1sCisgICAgY29uc3QgZmxvYXQgdmFsdWVzW10gPSB7CisgICAg
ICAgICAzLjI0MDQ1NDJmLCAtMS41MzcxMzg1ZiwgLTAuNDk4NTMxNGYsIDAuMGYsIDAuMGYsCisg
ICAgICAgIC0wLjk2OTI2NjBmLCAgMS44NzYwMTA4ZiwgIDAuMDQxNTU2MGYsIDAuMGYsIDAuMGYs
CisgICAgICAgICAwLjA1NTY0MzRmLCAtMC4yMDQwMjU5ZiwgIDEuMDU3MjI1MmYsIDAuMGYsIDAu
MGYsCisgICAgICAgICAwLjBmLCAgICAgICAgMC4wZiwgICAgICAgIDAuMGYsICAgICAgIDEuMGYs
IDAuMGYsCisgICAgfTsKKyAgICBDb2xvck1hdHJpeCB4eXpUb0xpbmVhclNSR0JNYXRyaXgodmFs
dWVzKTsKKyAgICByZXR1cm4geHl6VG9MaW5lYXJTUkdCTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JD
b21wb25lbnRzKFhZWkNvbXBvbmVudHMpOworfQorCitzdGF0aWMgRmxvYXRDb21wb25lbnRzIGxp
bmVhclNSR0JUb1hZWihjb25zdCBGbG9hdENvbXBvbmVudHMmIFhZWkNvbXBvbmVudHMpCit7Cisg
ICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JHQgorICAgIC8vIGh0dHA6Ly93
d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4Lmh0bWw/RXFuX1JHQl9YWVpfTWF0cml4Lmh0bWwK
KyAgICBjb25zdCBmbG9hdCB2YWx1ZXNbXSA9IHsKKyAgICAgICAgMC40MTI0NTY0ZiwgIDAuMzU3
NTc2MWYsICAwLjE4MDQzNzVmLCAwLjBmLCAwLjBmLAorICAgICAgICAwLjIxMjY3MjlmLCAgMC43
MTUxNTIyZiwgIDAuMDcyMTc1MGYsIDAuMGYsIDAuMGYsCisgICAgICAgIDAuMDE5MzMzOWYsICAw
LjExOTE5MjBmLCAgMC45NTAzMDQxZiwgMC4wZiwgMC4wZiwKKyAgICAgICAgMC4wZiwgICAgICAg
IDAuMGYsICAgICAgICAwLjBmLCAgICAgICAxLjBmLCAwLjBmLAorICAgIH07CisgICAgQ29sb3JN
YXRyaXggbGluZWFyU1JHQlRvWFlaTWF0cml4KHZhbHVlcyk7CisgICAgcmV0dXJuIGxpbmVhclNS
R0JUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhYWVpDb21wb25lbnRzKTsK
K30KKworc3RhdGljIEZsb2F0Q29tcG9uZW50cyBYWVpUb0xpbmVhclAzKGNvbnN0IEZsb2F0Q29t
cG9uZW50cyYgWFlaQ29tcG9uZW50cykKK3sKKyAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5v
cmcvY3NzLWNvbG9yLyNjb2xvci1jb252ZXJzaW9uLWNvZGUKKyAgICBjb25zdCBmbG9hdCB2YWx1
ZXNbXSA9IHsKKyAgICAgICAgIDIuNDkzNDk2OTExOTQxNDI1ZiwgIC0wLjkzMTM4MzYxNzkxOTEy
MzlmLCAtMC40MDI3MTA3ODQ0NTA3MTY4ZiwgMC4wZiwgMC4wZiwKKyAgICAgICAgLTAuODI5NDg4
OTY5NTYxNTc0N2YsICAxLjc2MjY2NDA2MDMxODM0NjNmLCAgMC4wMjM2MjQ2ODU4NDE5NDM2Ziwg
MC4wZiwgMC4wZiwKKyAgICAgICAgIDAuMDM1ODQ1ODMwMjQzNzg0NWYsIC0wLjA3NjE3MjM4OTI2
ODA0MThmLCAgMC45NTY4ODQ1MjQwMDc2ODcyZiwgMC4wZiwgMC4wZiwKKyAgICAgICAgIDAuMGYs
ICAgICAgICAgICAgICAgICAwLjBmLCAgICAgICAgICAgICAgICAgMC4wZiwgICAgICAgICAgICAg
ICAgMS4wZiwgMC4wZiwKKyAgICB9OworICAgIENvbG9yTWF0cml4IHh5elRvTGluZWFyU1JHQk1h
dHJpeCh2YWx1ZXMpOworICAgIHJldHVybiB4eXpUb0xpbmVhclNSR0JNYXRyaXgudHJhbnNmb3Jt
ZWRDb2xvckNvbXBvbmVudHMoWFlaQ29tcG9uZW50cyk7Cit9CisKK3N0YXRpYyBGbG9hdENvbXBv
bmVudHMgbGluZWFyUDNUb1hZWihjb25zdCBGbG9hdENvbXBvbmVudHMmIFhZWkNvbXBvbmVudHMp
Cit7CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29u
dmVyc2lvbi1jb2RlCisgICAgY29uc3QgZmxvYXQgdmFsdWVzW10gPSB7CisgICAgICAgIDAuNDg2
NTcwOTQ4NjQ4MjE2MmYsIDAuMjY1NjY3NjkzMTY5MDkzMWYsIDAuMTk4MjE3Mjg1MjM0MzYzZiwg
MC4wZiwgMC4wZiwKKyAgICAgICAgMC4yMjg5NzQ1NjQwNjk3NDg4ZiwgMC42OTE3Mzg1MjE4MzY1
MDY0ZiwgMC4wNzkyODY5MTQwOTM3NDVmLCAwLjBmLCAwLjBmLAorICAgICAgICAwLjBmLCAgICAg
ICAgICAgICAgICAwLjA0NTExMzM4MTg1ODkwMjZmLCAxLjA0Mzk0NDM2ODkwMDk3NmYsIDAuMGYs
IDAuMGYsCisgICAgICAgIDAuMGYsICAgICAgICAgICAgICAgIDAuMGYsICAgICAgICAgICAgICAg
IDAuMGYsICAgICAgICAgICAgICAgMS4wZiwgMC4wZiwKKyAgICB9OworICAgIENvbG9yTWF0cml4
IGxpbmVhclAzVG9YWVpNYXRyaXgodmFsdWVzKTsKKyAgICByZXR1cm4gbGluZWFyUDNUb1hZWk1h
dHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhYWVpDb21wb25lbnRzKTsKK30KKworRmxv
YXRDb21wb25lbnRzIHAzVG9TUkdCKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgcDMpCit7CisgICAg
YXV0byBsaW5lYXJQMyA9IHJnYlRvTGluZWFyQ29tcG9uZW50cyhwMyk7CisgICAgYXV0byB4eXog
PSBsaW5lYXJQM1RvWFlaKGxpbmVhclAzKTsKKyAgICBhdXRvIGxpbmVhclNSR0IgPSB4eXpUb0xp
bmVhclNSR0IoeHl6KTsKKyAgICByZXR1cm4gbGluZWFyVG9SR0JDb21wb25lbnRzKGxpbmVhclNS
R0IpOworfQorCitGbG9hdENvbXBvbmVudHMgc1JHQlRvUDMoY29uc3QgRmxvYXRDb21wb25lbnRz
JiBzUkdCKQoreworICAgIGF1dG8gbGluZWFyU1JHQiA9IHJnYlRvTGluZWFyQ29tcG9uZW50cyhz
UkdCKTsKKyAgICBhdXRvIHh5eiA9IGxpbmVhclNSR0JUb1hZWihsaW5lYXJTUkdCKTsKKyAgICBh
dXRvIGxpbmVhclAzID0gWFlaVG9MaW5lYXJQMyh4eXopOworICAgIHJldHVybiBsaW5lYXJUb1JH
QkNvbXBvbmVudHMobGluZWFyUDMpOworfQorCiAvLyBUaGlzIGlzIHNpbWlsYXIgdG8gc1JHQlRv
TGluZWFyQ29sb3JDb21wb25lbnQgYnV0IGZvciBzb21lIHJlYXNvbgogLy8gaHR0cHM6Ly93d3cu
dzMub3JnL1RSLzIwMDgvUkVDLVdDQUcyMC0yMDA4MTIxMS8jcmVsYXRpdmVsdW1pbmFuY2VkZWYK
IC8vIGRvZXNuJ3QgdXNlIHRoZSBzdGFuZGFyZCBzUkdCIC0+IGxpbmVhclJHQiB0aHJlc2hvbGQg
b2YgMC4wNDA0NS4KQEAgLTE5NSw3ICsyNjUsNyBAQCBzdGF0aWMgZmxvYXQgY2FsY0h1ZShmbG9h
dCB0ZW1wMSwgZmxvYXQgdGVtcDIsIGZsb2F0IGh1ZVZhbCkKIC8vIEV4cGxhbmF0aW9uIG9mIHRo
aXMgYWxnb3JpdGhtIGNhbiBiZSBmb3VuZCBpbiB0aGUgQ1NTIENvbG9yIDQgTW9kdWxlCiAvLyBz
cGVjaWZpY2F0aW9uIGF0IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3ItNC8jaHNs
LXRvLXJnYiB3aXRoCiAvLyBmdXJ0aGVyIGV4cGxhbmF0aW9uIGF2YWlsYWJsZSBhdCBodHRwOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL0hTTF9jb2xvcl9zcGFjZQotRmxvYXRDb21wb25lbnRzIEhT
TFRvU1JHQihjb25zdCBGbG9hdENvbXBvbmVudHMmIGhzbENvbG9yKQorRmxvYXRDb21wb25lbnRz
IGhzbFRvU1JHQihjb25zdCBGbG9hdENvbXBvbmVudHMmIGhzbENvbG9yKQogewogICAgIGZsb2F0
IGh1ZSA9IGhzbENvbG9yLmNvbXBvbmVudHNbMF07CiAgICAgZmxvYXQgc2F0dXJhdGlvbiA9IGhz
bENvbG9yLmNvbXBvbmVudHNbMV07CkBAIC0zNTEsMTcgKzQyMSwzMiBAQCBDb2xvck1hdHJpeCBD
b2xvck1hdHJpeDo6c2VwaWFNYXRyaXgoZmxvYXQgYW1vdW50KQogICAgIHJldHVybiBtYXRyaXg7
CiB9CiAKLXZvaWQgQ29sb3JNYXRyaXg6OnRyYW5zZm9ybUNvbG9yQ29tcG9uZW50cyhGbG9hdENv
bXBvbmVudHMmIGNvbG9yQ29tb25lbnRzKSBjb25zdAordm9pZCBDb2xvck1hdHJpeDo6dHJhbnNm
b3JtQ29sb3JDb21wb25lbnRzKEZsb2F0Q29tcG9uZW50cyYgY29sb3JDb21wb25lbnRzKSBjb25z
dAoreworICAgIGZsb2F0IHJlZCA9IGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzBdOworICAg
IGZsb2F0IGdyZWVuID0gY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMV07CisgICAgZmxvYXQg
Ymx1ZSA9IGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzJdOworICAgIGZsb2F0IGFscGhhID0g
Y29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbM107CisKKyAgICBjb2xvckNvbXBvbmVudHMuY29t
cG9uZW50c1swXSA9IG1fbWF0cml4WzBdWzBdICogcmVkICsgbV9tYXRyaXhbMF1bMV0gKiBncmVl
biArIG1fbWF0cml4WzBdWzJdICogYmx1ZSArIG1fbWF0cml4WzBdWzNdICogYWxwaGEgKyBtX21h
dHJpeFswXVs0XTsKKyAgICBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1sxXSA9IG1fbWF0cml4
WzFdWzBdICogcmVkICsgbV9tYXRyaXhbMV1bMV0gKiBncmVlbiArIG1fbWF0cml4WzFdWzJdICog
Ymx1ZSArIG1fbWF0cml4WzFdWzNdICogYWxwaGEgKyBtX21hdHJpeFsxXVs0XTsKKyAgICBjb2xv
ckNvbXBvbmVudHMuY29tcG9uZW50c1syXSA9IG1fbWF0cml4WzJdWzBdICogcmVkICsgbV9tYXRy
aXhbMl1bMV0gKiBncmVlbiArIG1fbWF0cml4WzJdWzJdICogYmx1ZSArIG1fbWF0cml4WzJdWzNd
ICogYWxwaGEgKyBtX21hdHJpeFsyXVs0XTsKKyAgICBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50
c1szXSA9IG1fbWF0cml4WzNdWzBdICogcmVkICsgbV9tYXRyaXhbM11bMV0gKiBncmVlbiArIG1f
bWF0cml4WzNdWzJdICogYmx1ZSArIG1fbWF0cml4WzNdWzNdICogYWxwaGEgKyBtX21hdHJpeFsz
XVs0XTsKK30KKworRmxvYXRDb21wb25lbnRzIENvbG9yTWF0cml4Ojp0cmFuc2Zvcm1lZENvbG9y
Q29tcG9uZW50cyhjb25zdCBGbG9hdENvbXBvbmVudHMmIGNvbG9yQ29tcG9uZW50cykgY29uc3QK
IHsKLSAgICBmbG9hdCByZWQgPSBjb2xvckNvbW9uZW50cy5jb21wb25lbnRzWzBdOwotICAgIGZs
b2F0IGdyZWVuID0gY29sb3JDb21vbmVudHMuY29tcG9uZW50c1sxXTsKLSAgICBmbG9hdCBibHVl
ID0gY29sb3JDb21vbmVudHMuY29tcG9uZW50c1syXTsKLSAgICBmbG9hdCBhbHBoYSA9IGNvbG9y
Q29tb25lbnRzLmNvbXBvbmVudHNbM107Ci0KLSAgICBjb2xvckNvbW9uZW50cy5jb21wb25lbnRz
WzBdID0gbV9tYXRyaXhbMF1bMF0gKiByZWQgKyBtX21hdHJpeFswXVsxXSAqIGdyZWVuICsgbV9t
YXRyaXhbMF1bMl0gKiBibHVlICsgbV9tYXRyaXhbMF1bM10gKiBhbHBoYSArIG1fbWF0cml4WzBd
WzRdOwotICAgIGNvbG9yQ29tb25lbnRzLmNvbXBvbmVudHNbMV0gPSBtX21hdHJpeFsxXVswXSAq
IHJlZCArIG1fbWF0cml4WzFdWzFdICogZ3JlZW4gKyBtX21hdHJpeFsxXVsyXSAqIGJsdWUgKyBt
X21hdHJpeFsxXVszXSAqIGFscGhhICsgbV9tYXRyaXhbMV1bNF07Ci0gICAgY29sb3JDb21vbmVu
dHMuY29tcG9uZW50c1syXSA9IG1fbWF0cml4WzJdWzBdICogcmVkICsgbV9tYXRyaXhbMl1bMV0g
KiBncmVlbiArIG1fbWF0cml4WzJdWzJdICogYmx1ZSArIG1fbWF0cml4WzJdWzNdICogYWxwaGEg
KyBtX21hdHJpeFsyXVs0XTsKLSAgICBjb2xvckNvbW9uZW50cy5jb21wb25lbnRzWzNdID0gbV9t
YXRyaXhbM11bMF0gKiByZWQgKyBtX21hdHJpeFszXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbM11b
Ml0gKiBibHVlICsgbV9tYXRyaXhbM11bM10gKiBhbHBoYSArIG1fbWF0cml4WzNdWzRdOworICAg
IGZsb2F0IHJlZCA9IGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzBdOworICAgIGZsb2F0IGdy
ZWVuID0gY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMV07CisgICAgZmxvYXQgYmx1ZSA9IGNv
bG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzJdOworICAgIGZsb2F0IGFscGhhID0gY29sb3JDb21w
b25lbnRzLmNvbXBvbmVudHNbM107CisKKyAgICByZXR1cm4geworICAgICAgICBtX21hdHJpeFsw
XVswXSAqIHJlZCArIG1fbWF0cml4WzBdWzFdICogZ3JlZW4gKyBtX21hdHJpeFswXVsyXSAqIGJs
dWUgKyBtX21hdHJpeFswXVszXSAqIGFscGhhICsgbV9tYXRyaXhbMF1bNF0sCisgICAgICAgIG1f
bWF0cml4WzFdWzBdICogcmVkICsgbV9tYXRyaXhbMV1bMV0gKiBncmVlbiArIG1fbWF0cml4WzFd
WzJdICogYmx1ZSArIG1fbWF0cml4WzFdWzNdICogYWxwaGEgKyBtX21hdHJpeFsxXVs0XSwKKyAg
ICAgICAgbV9tYXRyaXhbMl1bMF0gKiByZWQgKyBtX21hdHJpeFsyXVsxXSAqIGdyZWVuICsgbV9t
YXRyaXhbMl1bMl0gKiBibHVlICsgbV9tYXRyaXhbMl1bM10gKiBhbHBoYSArIG1fbWF0cml4WzJd
WzRdLAorICAgICAgICBtX21hdHJpeFszXVswXSAqIHJlZCArIG1fbWF0cml4WzNdWzFdICogZ3Jl
ZW4gKyBtX21hdHJpeFszXVsyXSAqIGJsdWUgKyBtX21hdHJpeFszXVszXSAqIGFscGhhICsgbV9t
YXRyaXhbM11bNF0KKyAgICB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAppbmRleCBi
MjFjYTI4NWFhMmUyNTdhNmIwYjk1MWEwY2E4YzNiNDE5MTQ5YWI5Li5kNjJhNjBlZjZhN2Y5MjU0
Yzc3ZmUxNTcxOThkYjExMWJlMmEyODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgKQEAgLTE3MywxNSArMTczLDE4IEBAIGlubGlu
ZSB1bnNpZ25lZCBieXRlT2Zmc2V0T2ZQaXhlbCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNp
Z25lZCByb3dCeXRlcykKIH0KIAogLy8gMC0xIGNvbXBvbmVudHMsIHJlc3VsdCBpcyBjbGFtcGVk
LgotZmxvYXQgbGluZWFyVG9TUkdCQ29sb3JDb21wb25lbnQoZmxvYXQpOwotZmxvYXQgc1JHQlRv
TGluZWFyQ29sb3JDb21wb25lbnQoZmxvYXQpOworZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBv
bmVudChmbG9hdCk7CitmbG9hdCByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGZsb2F0KTsKIAog
RmxvYXRDb21wb25lbnRzIHNSR0JDb2xvclRvTGluZWFyQ29tcG9uZW50cyhjb25zdCBDb2xvciYp
OwotRmxvYXRDb21wb25lbnRzIHNSR0JUb0xpbmVhckNvbXBvbmVudHMoY29uc3QgRmxvYXRDb21w
b25lbnRzJik7Ci1GbG9hdENvbXBvbmVudHMgbGluZWFyVG9TUkdCQ29tcG9uZW50cyhjb25zdCBG
bG9hdENvbXBvbmVudHMmKTsKK0Zsb2F0Q29tcG9uZW50cyByZ2JUb0xpbmVhckNvbXBvbmVudHMo
Y29uc3QgRmxvYXRDb21wb25lbnRzJik7CitGbG9hdENvbXBvbmVudHMgbGluZWFyVG9SR0JDb21w
b25lbnRzKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYpOworCitGbG9hdENvbXBvbmVudHMgcDNUb1NS
R0IoY29uc3QgRmxvYXRDb21wb25lbnRzJik7CitGbG9hdENvbXBvbmVudHMgc1JHQlRvUDMoY29u
c3QgRmxvYXRDb21wb25lbnRzJik7CiAKIEZsb2F0Q29tcG9uZW50cyBzUkdCVG9IU0woY29uc3Qg
RmxvYXRDb21wb25lbnRzJik7Ci1GbG9hdENvbXBvbmVudHMgSFNMVG9TUkdCKGNvbnN0IEZsb2F0
Q29tcG9uZW50cyYpOworRmxvYXRDb21wb25lbnRzIGhzbFRvU1JHQihjb25zdCBGbG9hdENvbXBv
bmVudHMmKTsKIAogZmxvYXQgbHVtaW5hbmNlKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgc1JHQkNv
bXBvbnRlbnRzKTsKIGZsb2F0IGNvbnRyYXN0UmF0aW8oY29uc3QgRmxvYXRDb21wb25lbnRzJiwg
Y29uc3QgRmxvYXRDb21wb25lbnRzJik7CkBAIC0xOTcsNiArMjAwLDcgQEAgcHVibGljOgogICAg
IENvbG9yTWF0cml4KGNvbnN0IGZsb2F0WzIwXSk7CiAgICAgCiAgICAgdm9pZCB0cmFuc2Zvcm1D
b2xvckNvbXBvbmVudHMoRmxvYXRDb21wb25lbnRzJikgY29uc3Q7CisgICAgRmxvYXRDb21wb25l
bnRzIHRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYpIGNv
bnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgbWFrZUlkZW50aXR5KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvQmFja2VuZC5jcHAKaW5kZXggMDc2YWY0MDg5NmJhYWNkODBkOWYxYzVlZmFhNzkw
YTE0OWI4ZGQ3Zi4uYTgxMDJmYWE1MTAzNWEwNTA1ZDA4ZGFiZGZhNmE0Mjk0NTc1ZDI2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lk
IEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ug
c3JjQ29sb3JTcGFjZSwgQ29sbwogICAgICAgICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+
IGFycmF5OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7
CiAgICAgICAgICAgICAgICAgZmxvYXQgY29sb3IgPSBpIC8gMjU1LjBmOwotICAgICAgICAgICAg
ICAgIGNvbG9yID0gc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnQoY29sb3IpOworICAgICAgICAg
ICAgICAgIGNvbG9yID0gcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChjb2xvcik7CiAgICAgICAg
ICAgICAgICAgYXJyYXlbaV0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pihyb3VuZChjb2xvciAqIDI1
NSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGFycmF5OwpAQCAtOTMsNyAr
OTMsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNl
KENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgQ29sbwogICAgICAgICAgICAgc3RkOjphcnJheTx1
aW50OF90LCAyNTY+IGFycmF5OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IDI1NjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgY29sb3IgPSBpIC8gMjU1LjBmOwot
ICAgICAgICAgICAgICAgIGNvbG9yID0gbGluZWFyVG9TUkdCQ29sb3JDb21wb25lbnQoY29sb3Ip
OworICAgICAgICAgICAgICAgIGNvbG9yID0gbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChjb2xv
cik7CiAgICAgICAgICAgICAgICAgYXJyYXlbaV0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pihyb3Vu
ZChjb2xvciAqIDI1NSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGFycmF5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCmluZGV4IDE3MDMyZDI0NDE5MGQxZmQyYjBkMWQ5NzBk
ZGZlMTAyZDNhZWY0MzAuLjI5NjNiZjViZWYyZmI1ZjNlMWYwY2ZhOWRkZjQ2YmM1Zjg2YjQ5NGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCBib29sIEludmVy
dExpZ2h0bmVzc0ZpbHRlck9wZXJhdGlvbjo6dHJhbnNmb3JtQ29sb3IoRmxvYXRDb21wb25lbnRz
JiBzUkdCQ29sb3JDbwogICAgIGhzbENvbXBvbmVudHMuY29tcG9uZW50c1swXSA9IGZtb2QoaHNs
Q29tcG9uZW50cy5jb21wb25lbnRzWzBdICsgMC41ZiwgMS4wZik7CiAgICAgCiAgICAgLy8gQ29u
dmVydCBiYWNrIHRvIFJHQi4KLSAgICBzUkdCQ29sb3JDb21wb25lbnRzID0gSFNMVG9TUkdCKGhz
bENvbXBvbmVudHMpOworICAgIHNSR0JDb2xvckNvbXBvbmVudHMgPSBoc2xUb1NSR0IoaHNsQ29t
cG9uZW50cyk7CiAgICAgCiAgICAgLy8gQXBwbHkgdGhlIG1hdHJpeC4gU2VlIHJkYXI6Ly9wcm9i
bGVtLzQxMTQ2NjUwIGZvciBob3cgdGhpcyBtYXRyaXggd2FzIGRlcml2ZWQuCiAgICAgY29uc3Qg
ZmxvYXQgbWF0cml4VmFsdWVzWzIwXSA9IHsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIEludmVy
dExpZ2h0bmVzc0ZpbHRlck9wZXJhdGlvbjo6aW52ZXJzZVRyYW5zZm9ybUNvbG9yKEZsb2F0Q29t
cG9uZW50cyYgc1JHQgogICAgIC8vIEh1ZSByb3RhdGUgYnkgMTgwZGVnLgogICAgIGhzbENvbXBv
bmVudHMuY29tcG9uZW50c1swXSA9IGZtb2QoaHNsQ29tcG9uZW50cy5jb21wb25lbnRzWzBdICsg
MC41ZiwgMS4wZik7CiAgICAgLy8gQW5kIHJldHVybiBSR0IuCi0gICAgc1JHQkNvbG9yQ29tcG9u
ZW50cyA9IEhTTFRvU1JHQihoc2xDb21wb25lbnRzKTsKKyAgICBzUkdCQ29sb3JDb21wb25lbnRz
ID0gaHNsVG9TUkdCKGhzbENvbXBvbmVudHMpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjNiYzA2M2M0
NTdiNzE1Y2JkZWJjY2IxM2Y5NzlmOGExMDE3ZGU4OC4uMWY2ZjMyNGEwNjZkOWEzNmM5OGI5Nzk1
YzI1MmY2OTBmOTYyZDc4YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA1LTE4ICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBjb252ZXJzaW9uIGJl
dHdlZW4gUDMgYW5kIHNSR0IgY29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMTk5OAorCisgICAgICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRl
cy4KKworICAgICAgICBBUEkgdGVzdCBmb3IgY29udmVyc2lvbnMgZnJvbSBQMyB0byBzUkdCLCBh
bmQgbGluZWFyUkdCIHRvIHNSR0IuIFZhbHVlcyB3ZXJlIGNvbmZpcm1lZAorICAgICAgICBhcyBj
bG9zZSB0byB0aG9zZSBwcm92aWRlZCBieSBDb2xvclN5bmMgVXRpbGl0eS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9yVGVzdHMuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMDUtMTggIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBpdGVyYXRvciBjaGVja2luZyB0byBMaXN0
SGFzaFNldApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4
dGVuZGVkQ29sb3JUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
RXh0ZW5kZWRDb2xvclRlc3RzLmNwcAppbmRleCBmZTFmNDExM2U1NWY4MmNiNmJhZGU3ZDU4NzQ1
M2ViNjg1NTg4Zjk1Li5mY2Y1NGZlZWFiZTRiNTU1YzBhMzA0OGE4YjEwNWY5MDcyYzY1OWZhIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0ZW5kZWRDb2xv
clRlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0ZW5k
ZWRDb2xvclRlc3RzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlRlc3QuaCIKICNp
bmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+
CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKQEAgLTIyMSw1ICsyMjIsMjkgQEAgVEVTVChFeHRlbmRlZENvbG9yLCBSZXR1cm5WYWx1ZXMp
CiAgICAgRVhQRUNUX0VRKGMyLmNzc1RleHQoKSwgImNvbG9yKGRpc3BsYXktcDMgMSAwLjUgMC4y
NSkiKTsKIH0KIAorVEVTVChFeHRlbmRlZENvbG9yLCBQM0NvbnZlcnNpb25Ub1NSR0IpCit7Cisg
ICAgeworICAgICAgICBDb2xvciBwM0NvbG9yKDEuMCwgMC41LCAwLjI1LCAwLjc1LCBDb2xvclNw
YWNlOjpEaXNwbGF5UDMpOworICAgICAgICBFWFBFQ1RfVFJVRShwM0NvbG9yLmlzRXh0ZW5kZWQo
KSk7CisKKyAgICAgICAgYXV0byBzUkdCQ29tcG9uZW50cyA9IHAzQ29sb3IudG9TUkdCQUNvbXBv
bmVudHNMb3NzeSgpOworICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmFyZUVzc2VudGlhbGx5RXF1
YWwoc1JHQkNvbXBvbmVudHMuY29tcG9uZW50c1swXSwgMS4wZikpOworICAgICAgICBFWFBFQ1Rf
VFJVRShXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoc1JHQkNvbXBvbmVudHMuY29tcG9uZW50c1sx
XSwgMC40NjI1Mzc4ODVmKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFdURjo6YXJlRXNzZW50aWFs
bHlFcXVhbChzUkdCQ29tcG9uZW50cy5jb21wb25lbnRzWzJdLCAwLjE0OTE0NzgzOGYpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKHNSR0JDb21wb25lbnRz
LmNvbXBvbmVudHNbM10sIDAuNzVmKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb2xvciBs
aW5lYXJDb2xvcigxLjAsIDAuNSwgMC4yNSwgMC43NSwgQ29sb3JTcGFjZTo6TGluZWFyUkdCKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUobGluZWFyQ29sb3IuaXNFeHRlbmRlZCgpKTsKKyAgICAgICAg
YXV0byBzUkdCQ29tcG9uZW50cyA9IGxpbmVhckNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3ko
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKHNSR0JDb21w
b25lbnRzLmNvbXBvbmVudHNbMF0sIDEuMGYpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoV1RGOjph
cmVFc3NlbnRpYWxseUVxdWFsKHNSR0JDb21wb25lbnRzLmNvbXBvbmVudHNbMV0sIDAuNzM1MzU2
OTI3ZikpOworICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoc1JH
QkNvbXBvbmVudHMuY29tcG9uZW50c1syXSwgMC41MzcwOTg3MDZmKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChzUkdCQ29tcG9uZW50cy5jb21wb25lbnRz
WzNdLCAwLjc1ZikpOworICAgIH0KK30KKwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>