<?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>278612</bug_id>
          
          <creation_ts>2024-08-24 15:09:54 -0700</creation_ts>
          <short_desc>[LFC][Integration] Add support for calling min/maxPreferredLogicalWidth from inside LFC</short_desc>
          <delta_ts>2024-08-26 07:17:17 -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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</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>2055157</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2024-08-24 15:09:54 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2055162</commentid>
    <comment_count>1</comment_count>
      <attachid>472285</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-08-24 15:39:30 -0700</bug_when>
    <thetext>Created attachment 472285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2055163</commentid>
    <comment_count>2</comment_count>
      <attachid>472286</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-08-24 15:41:14 -0700</bug_when>
    <thetext>Created attachment 472286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2055214</commentid>
    <comment_count>3</comment_count>
      <attachid>472288</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-08-25 08:28:21 -0700</bug_when>
    <thetext>Created attachment 472288
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2055296</commentid>
    <comment_count>4</comment_count>
      <attachid>472288</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2024-08-26 05:59:09 -0700</bug_when>
    <thetext>Comment on attachment 472288
[fast-cq]Patch

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

&gt; Source/WebCore/layout/LayoutState.cpp:46
&gt; +LayoutState::LayoutState(const Document&amp; document, const ElementBox&amp; rootContainer, Type type, FormattingContextLayoutFunction&amp;&amp; formattingContextLayoutFunction, FormattingContextPreferredWidthsFunction&amp;&amp; formattingContextPreferredWidthsFunction)
&gt;      : m_type(type)

This is bit unwieldy, especially if we keep needing more. We should probably have some sort of abstract formatting context (?) class with virtual functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2055304</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2024-08-26 07:10:12 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #4)
&gt; Comment on attachment 472288 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=472288&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/LayoutState.cpp:46
&gt; &gt; +LayoutState::LayoutState(const Document&amp; document, const ElementBox&amp; rootContainer, Type type, FormattingContextLayoutFunction&amp;&amp; formattingContextLayoutFunction, FormattingContextPreferredWidthsFunction&amp;&amp; formattingContextPreferredWidthsFunction)
&gt; &gt;      : m_type(type)
&gt; 
&gt; This is bit unwieldy, especially if we keep needing more. We should probably
&gt; have some sort of abstract formatting context (?) class with virtual
&gt; functions.
Yeah, actually there&apos;s a FormattingContext base class but it is still tied to the LFC only codepath (and I detached IFC from it like a year ago to be able to do some cleanup and focus on integration codepath)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2055305</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-08-26 07:16:35 -0700</bug_when>
    <thetext>Committed 282729@main (7dd08f57f28b): &lt;https://commits.webkit.org/282729@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 472288.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2055306</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-08-26 07:17:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/134699824&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>472285</attachid>
            <date>2024-08-24 15:39:30 -0700</date>
            <delta_ts>2024-08-24 15:41:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-278612-20240824153929.patch</filename>
            <type>text/plain</type>
            <size>28814</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAxYjU5MTRmMzk0MDVhNDMxMzdmNWIzYjQ0ZWU2YmE1OGVkNmM2Njc0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgMjQgQXVnIDIwMjQgMTU6MTA6MDMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbTEZDXVtJ
bnRlZ3JhdGlvbl0gQWRkIHN1cHBvcnQgZm9yIGNhbGxpbmcKIG1pbi9tYXhQcmVmZXJyZWRMb2dp
Y2FsV2lkdGggZnJvbSBpbnNpZGUgTEZDCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mjc4NjEyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRoaXMgaXMgcmVx
dWlyZWQgYnkgZmxleCBsYXlvdXQgd2hlcmUgbWluL21heCBjb250ZW50IHdpZHRocyBhcmUgZXNz
ZW50aWFsLgoKMS4gTW92ZSBpbnRlZ3JhdGlvbiBmdW5jdGlvbnMgdG8gb3VyIHV0aWwgY2xhc3Mg
KHdoaWxlIGhhdmluZyBvbmUgInV0aWxpdHkiIGZ1bmN0aW9uIGlzIGZpbmUgb24gdGhlIGZvcm1h
dHRpbmcgY29udGV4dCBjbGFzcywgbm93IHdpdGggbWluL21heCwgaXQgbWF5IGdldCBjb25mdXNp
bmcgdG8gc2VlIHNlZW1pbmdseSBkdXBsaWNhdGVkIGZ1bmN0aW9uYWxpdHkpCjIuIEludHJvZHVj
ZSBhbiB1bmZvcnR1bmF0ZSBjb25zdF9jYXN0LCBidXQgaW4gcHJhY3RpY2Ugd2UgY2FsbCBvdXRz
aWRlIG9mIExGQyBoZXJlIGludG8gcmVuZGVyIHRyZWUuCgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9MYXlvdXRTdGF0ZS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpMYXlvdXRT
dGF0ZSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpsYXlvdXRXaXRoRm9ybWF0dGlu
Z0NvbnRleHRGb3JCb3ggY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6cHJl
ZmVycmVkV2lkdGhXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3ggY29uc3QpOgooV2ViQ29yZTo6
TGF5b3V0OjpMYXlvdXRTdGF0ZTo6bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KTog
RGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaDoKKiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdVdGls
cy5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkZsZXhGb3JtYXR0aW5nVXRpbHM6OkZsZXhGb3JtYXR0
aW5nVXRpbHMpOgooV2ViQ29yZTo6TGF5b3V0OjpGbGV4Rm9ybWF0dGluZ1V0aWxzOjpsYXlvdXRX
aXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3ggY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpGbGV4
Rm9ybWF0dGluZ1V0aWxzOjpwcmVmZXJyZWRXaWR0aFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJv
eCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4
L0ZsZXhGb3JtYXR0aW5nVXRpbHMuaDoKKFdlYkNvcmU6OkxheW91dDo6RmxleEZvcm1hdHRpbmdV
dGlsczo6bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KToKKiBTb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvTG9naWNhbEZsZXhJdGVtLmg6CihXZWJD
b3JlOjpMYXlvdXQ6OkxvZ2ljYWxGbGV4SXRlbTo6bWFpbkF4aXMpOgoqIFNvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUZv
cm1hdHRpbmdDb250ZXh0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OmxheW91dEZsb2F0Q29udGVudE9ubHkpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZUlubGluZUxheW91dFN0YXRlKToKKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4
dEZvckJveCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaDoKKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJv
eCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
Rm9ybWF0dGluZ1V0aWxzOjpJbmxpbmVGb3JtYXR0aW5nVXRpbHMpOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3ggY29u
c3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmluaXRpYWxMaW5l
SGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1V0aWxzOjps
YXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3ggY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OnByZWZlcnJlZFdpZHRoV2l0aEZvcm1hdHRpbmdDb250
ZXh0Rm9yQm94IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1V0aWxz
OjpsYXlvdXRTdGF0ZSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmg6CihXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdVdGlsczo6bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250
ZXh0Rm9yQm94KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6
TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6TGluZUJveFZlcnRpY2FsQWxpZ25lcik6CiogU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZl
cnRpY2FsQWxpZ25lci5oOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94VmVydGljYWxBbGlnbmVy
Ojpmb3JtYXR0aW5nVXRpbHMgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OkxheW91
dDo6TGluZUJ1aWxkZXI6OmNhbmRpZGF0ZUNvbnRlbnRGb3JMaW5lKToKKiBTb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29u
dGV4dC5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6YW5ub3Rh
dGlvbkJveExvZ2ljYWxXaWR0aCk6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlGb3JtYXR0aW5nQ29u
dGV4dDo6YXBwbHlSdWJ5QWxpZ25PbkJhc2VDb250ZW50KToKKFdlYkNvcmU6OkxheW91dDo6UnVi
eUZvcm1hdHRpbmdDb250ZXh0OjpzaXplQW5ub3RhdGlvbkJveCk6CiogU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uRm9ybWF0dGluZ0NvbnRleHRMYXlv
dXQuY3BwOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OnByZWZlcnJlZExvZ2ljYWxXaWR0
aHMpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0Lmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpwcmludExheW91
dFRyZWVGb3JMaXZlRG9jdW1lbnRzKToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHA6CihXZWJDb3JlOjpSZW5kZXJWaWV3OjpSZW5kZXJWaWV3KToKLS0tCiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwICAgICAgICAgfCAxMiArKysrKystLS0KIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oICAgICAgICAgICB8ICA3ICsrKy0tCiAu
Li4vZmxleC9GbGV4Rm9ybWF0dGluZ1V0aWxzLmNwcCAgICAgICAgICAgICAgfCAxNCArKysrKysr
KystCiAuLi4vZmxleC9GbGV4Rm9ybWF0dGluZ1V0aWxzLmggICAgICAgICAgICAgICAgfCAgNyAr
KysrLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgICAgICAgIHwgMjYg
KysrKysrKy0tLS0tLS0tLS0tLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5o
ICAgICAgICAgIHwgIDIgLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmNwcCAg
ICAgICAgICB8IDE2ICsrKysrKysrLS0tLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRp
bHMuaCAgICAgICAgICAgIHwgIDggKysrKy0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0
aWNhbEFsaWduZXIuY3BwICAgfCAgMSAtCiAuLi4vaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNh
bEFsaWduZXIuaCAgICAgfCAgMyArLS0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3Bw
ICAgICAgICAgICAgICB8ICAyICstCiAuLi4vaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdDb250
ZXh0LmNwcCAgICAgfCAgNiArKy0tLQogLi4ueW91dEludGVncmF0aW9uRm9ybWF0dGluZ0NvbnRl
eHRMYXlvdXQuY3BwIHwgIDYgKysrKysKIC4uLkxheW91dEludGVncmF0aW9uRm9ybWF0dGluZ0Nv
bnRleHRMYXlvdXQuaCB8ICAxICsKIC4uLi9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVp
bGRlci5jcHAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5j
cHAgICAgICAgfCAgMiArLQogMTYgZmlsZXMgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKSwgNDEg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKaW5kZXggZDli
MzM2YzQ1M2UwLi4xNmNjOTg4Y2MzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9MYXlvdXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRl
LmNwcApAQCAtNDIsMTEgKzQyLDEyIEBAIG5hbWVzcGFjZSBMYXlvdXQgewogCiBXVEZfTUFLRV9U
Wk9ORV9PUl9JU09fQUxMT0NBVEVEX0lNUEwoTGF5b3V0U3RhdGUpOwogCi1MYXlvdXRTdGF0ZTo6
TGF5b3V0U3RhdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBFbGVtZW50Qm94JiBy
b290Q29udGFpbmVyLCBUeXBlIHR5cGUsIEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0RnVuY3Rpb24m
JiBmb3JtYXR0aW5nQ29udGV4dExheW91dEZ1bmN0aW9uKQorTGF5b3V0U3RhdGU6OkxheW91dFN0
YXRlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgRWxlbWVudEJveCYgcm9vdENvbnRh
aW5lciwgVHlwZSB0eXBlLCBGb3JtYXR0aW5nQ29udGV4dExheW91dEZ1bmN0aW9uJiYgZm9ybWF0
dGluZ0NvbnRleHRMYXlvdXRGdW5jdGlvbiwgRm9ybWF0dGluZ0NvbnRleHRQcmVmZXJyZWRXaWR0
aHNGdW5jdGlvbiYmIGZvcm1hdHRpbmdDb250ZXh0UHJlZmVycmVkV2lkdGhzRnVuY3Rpb24pCiAg
ICAgOiBtX3R5cGUodHlwZSkKICAgICAsIG1fcm9vdENvbnRhaW5lcihyb290Q29udGFpbmVyKQog
ICAgICwgbV9zZWN1cml0eU9yaWdpbihkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKQogICAgICwg
bV9mb3JtYXR0aW5nQ29udGV4dExheW91dEZ1bmN0aW9uKFdURk1vdmUoZm9ybWF0dGluZ0NvbnRl
eHRMYXlvdXRGdW5jdGlvbikpCisgICAgLCBtX2Zvcm1hdHRpbmdDb250ZXh0UHJlZmVycmVkV2lk
dGhzRnVuY3Rpb24oV1RGTW92ZShmb3JtYXR0aW5nQ29udGV4dFByZWZlcnJlZFdpZHRoc0Z1bmN0
aW9uKSkKIHsKICAgICAvLyBJdCBtYWtlcyBhYnNvbHV0ZWx5IG5vIHNlbnNlIHRvIGNvbnN0cnVj
dCBhIGRlZGljYXRlZCBsYXlvdXQgc3RhdGUgZm9yIGEgbm9uLWZvcm1hdHRpbmcgY29udGV4dCBy
b290IChsYXlvdXQgd291bGQgYmUgYSBuby1vcCkuCiAgICAgQVNTRVJUKHJvb3QoKS5lc3RhYmxp
c2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwpAQCAtMTUxLDkgKzE1MiwxNCBAQCB2b2lkIExheW91
dFN0YXRlOjpkZXN0cm95SW5saW5lQ29udGVudENhY2hlKGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1h
dHRpbmdDb250ZXh0UgogICAgIG1faW5saW5lQ29udGVudENhY2hlcy5yZW1vdmUoJmZvcm1hdHRp
bmdDb250ZXh0Um9vdCk7CiB9CiAKLXZvaWQgTGF5b3V0U3RhdGU6OmxheW91dFdpdGhGb3JtYXR0
aW5nQ29udGV4dEZvckJveChjb25zdCBFbGVtZW50Qm94JiBib3gsIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gd2lkdGhDb25zdHJhaW50KQordm9pZCBMYXlvdXRTdGF0ZTo6bGF5b3V0V2l0aEZv
cm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gmIGJveCwgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiB3aWR0aENvbnN0cmFpbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZm9y
bWF0dGluZ0NvbnRleHRMYXlvdXRGdW5jdGlvbihib3gsIHdpZHRoQ29uc3RyYWludCwgKnRoaXMp
OworICAgIGNvbnN0X2Nhc3Q8TGF5b3V0U3RhdGUmPigqdGhpcykubV9mb3JtYXR0aW5nQ29udGV4
dExheW91dEZ1bmN0aW9uKGJveCwgd2lkdGhDb25zdHJhaW50LCBjb25zdF9jYXN0PExheW91dFN0
YXRlJj4oKnRoaXMpKTsKK30KKworc3RkOjpwYWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IExh
eW91dFN0YXRlOjpwcmVmZXJyZWRXaWR0aFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveChjb25z
dCBFbGVtZW50Qm94JiBib3gpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8TGF5b3V0
U3RhdGUmPigqdGhpcykubV9mb3JtYXR0aW5nQ29udGV4dFByZWZlcnJlZFdpZHRoc0Z1bmN0aW9u
KGJveCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRT
dGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKaW5kZXggNzVhZjgx
MDgxN2FiLi5kMjdmOTAzZWNiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oCkBA
IC02Myw4ICs2Myw5IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBQcmltYXJ5LCBT
ZWNvbmRhcnkgfTsKIAogICAgIHVzaW5nIEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0RnVuY3Rpb24g
PSBGdW5jdGlvbjx2b2lkKGNvbnN0IEVsZW1lbnRCb3gmLCBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+LCBMYXlvdXRTdGF0ZSYpPjsKKyAgICB1c2luZyBGb3JtYXR0aW5nQ29udGV4dFByZWZlcnJl
ZFdpZHRoc0Z1bmN0aW9uID0gRnVuY3Rpb248c3RkOjpwYWlyPExheW91dFVuaXQsIExheW91dFVu
aXQ+KGNvbnN0IEVsZW1lbnRCb3gmKT47CiAKLSAgICBMYXlvdXRTdGF0ZShjb25zdCBEb2N1bWVu
dCYsIGNvbnN0IEVsZW1lbnRCb3gmIHJvb3RDb250YWluZXIsIFR5cGUsIEZvcm1hdHRpbmdDb250
ZXh0TGF5b3V0RnVuY3Rpb24mJik7CisgICAgTGF5b3V0U3RhdGUoY29uc3QgRG9jdW1lbnQmLCBj
b25zdCBFbGVtZW50Qm94JiByb290Q29udGFpbmVyLCBUeXBlLCBGb3JtYXR0aW5nQ29udGV4dExh
eW91dEZ1bmN0aW9uJiYsIEZvcm1hdHRpbmdDb250ZXh0UHJlZmVycmVkV2lkdGhzRnVuY3Rpb24m
Jik7CiAgICAgfkxheW91dFN0YXRlKCk7CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KQEAgLTEwNSw3ICsxMDYsOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBFbGVt
ZW50Qm94JiByb290KCkgY29uc3QgeyByZXR1cm4gbV9yb290Q29udGFpbmVyOyB9CiAKLSAgICB2
b2lkIGxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveChjb25zdCBFbGVtZW50Qm94Jiwg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB3aWR0aENvbnN0cmFpbnQpOworICAgIHZvaWQgbGF5
b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gmLCBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IHdpZHRoQ29uc3RyYWludCkgY29uc3Q7CisgICAgc3RkOjpwYWly
PExheW91dFVuaXQsIExheW91dFVuaXQ+IHByZWZlcnJlZFdpZHRoV2l0aEZvcm1hdHRpbmdDb250
ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2b2lk
IHNldFF1aXJrc01vZGUoUXVpcmtzTW9kZSBxdWlya3NNb2RlKSB7IG1fcXVpcmtzTW9kZSA9IHF1
aXJrc01vZGU7IH0KQEAgLTEyOCw2ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIFJlZjxTZWN1cml0
eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKIAogICAgIEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0
RnVuY3Rpb24gbV9mb3JtYXR0aW5nQ29udGV4dExheW91dEZ1bmN0aW9uOworICAgIEZvcm1hdHRp
bmdDb250ZXh0UHJlZmVycmVkV2lkdGhzRnVuY3Rpb24gbV9mb3JtYXR0aW5nQ29udGV4dFByZWZl
cnJlZFdpZHRoc0Z1bmN0aW9uOwogfTsKIAogaW5saW5lIGJvb2wgTGF5b3V0U3RhdGU6Omhhc0Jv
eEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nVXRp
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0Zs
ZXhGb3JtYXR0aW5nVXRpbHMuY3BwCmluZGV4IGIyNmMyMTM5NTI5Ni4uNTFiMzgxMzE5YTE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgv
RmxleEZvcm1hdHRpbmdVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nVXRpbHMuY3BwCkBAIC0yOCwxMyArMjgs
MTUgQEAKIAogI2luY2x1ZGUgIkZsZXhGb3JtYXR0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkxh
eW91dENvbnRleHQuaCIKKyNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIlJlbmRl
clN0eWxlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0
IHsKIAotRmxleEZvcm1hdHRpbmdVdGlsczo6RmxleEZvcm1hdHRpbmdVdGlscyhjb25zdCBGbGV4
Rm9ybWF0dGluZ0NvbnRleHQmIGZsZXhGb3JtYXR0aW5nQ29udGV4dCkKK0ZsZXhGb3JtYXR0aW5n
VXRpbHM6OkZsZXhGb3JtYXR0aW5nVXRpbHMoY29uc3QgRmxleEZvcm1hdHRpbmdDb250ZXh0JiBm
bGV4Rm9ybWF0dGluZ0NvbnRleHQsIGNvbnN0IExheW91dFN0YXRlJiBnbG9iYWxMYXlvdXRTdGF0
ZSkKICAgICA6IG1fZmxleEZvcm1hdHRpbmdDb250ZXh0KGZsZXhGb3JtYXR0aW5nQ29udGV4dCkK
KyAgICAsIG1fZ2xvYmFsTGF5b3V0U3RhdGUoZ2xvYmFsTGF5b3V0U3RhdGUpCiB7CiB9CiAKQEAg
LTUyLDYgKzU0LDE2IEBAIGJvb2wgRmxleEZvcm1hdHRpbmdVdGlsczo6aXNSZXZlcnNlZFRvQ29u
dGVudERpcmVjdGlvbihjb25zdCBFbGVtZW50Qm94JiBmbGV4Qm94CiAgICAgcmV0dXJuIGZsZXhE
aXJlY3Rpb24gPT0gRmxleERpcmVjdGlvbjo6Um93UmV2ZXJzZSB8fCBmbGV4RGlyZWN0aW9uID09
IEZsZXhEaXJlY3Rpb246OkNvbHVtblJldmVyc2U7CiB9CiAKK3ZvaWQgRmxleEZvcm1hdHRpbmdV
dGlsczo6bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gm
IGJveCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB3aWR0aENvbnN0cmFpbnQpIGNvbnN0Cit7
CisgICAgbV9nbG9iYWxMYXlvdXRTdGF0ZS5sYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JC
b3goYm94LCB3aWR0aENvbnN0cmFpbnQpOworfQorCitzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5
b3V0VW5pdD4gRmxleEZvcm1hdHRpbmdVdGlsczo6cHJlZmVycmVkV2lkdGhXaXRoRm9ybWF0dGlu
Z0NvbnRleHRGb3JCb3goY29uc3QgRWxlbWVudEJveCYgYm94KSBjb25zdAoreworICAgIHJldHVy
biBtX2dsb2JhbExheW91dFN0YXRlLnByZWZlcnJlZFdpZHRoV2l0aEZvcm1hdHRpbmdDb250ZXh0
Rm9yQm94KGJveCk7Cit9CisKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nVXRpbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ1V0
aWxzLmgKaW5kZXggYjc3MDNmYWViZjljLi5kNWZmODE5NjE5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ1V0
aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4
L0ZsZXhGb3JtYXR0aW5nVXRpbHMuaApAQCAtMzEsMTcgKzMxLDIyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCiBjbGFzcyBGbGV4Rm9ybWF0dGluZ0NvbnRleHQ7
CitjbGFzcyBMYXlvdXRTdGF0ZTsKIAogLy8gSGVscGVyIGNsYXNzIGZvciBmbGV4IGxheW91dC4K
IGNsYXNzIEZsZXhGb3JtYXR0aW5nVXRpbHMgewogcHVibGljOgotICAgIEZsZXhGb3JtYXR0aW5n
VXRpbHMoY29uc3QgRmxleEZvcm1hdHRpbmdDb250ZXh0Jik7CisgICAgRmxleEZvcm1hdHRpbmdV
dGlscyhjb25zdCBGbGV4Rm9ybWF0dGluZ0NvbnRleHQmLCBjb25zdCBMYXlvdXRTdGF0ZSYpOwog
CiAgICAgc3RhdGljIGJvb2wgaXNNYWluQXhpc1BhcmFsbGVsV2l0aElubGluZUF4aXMoY29uc3Qg
RWxlbWVudEJveCYgZmxleEJveCk7CiAgICAgc3RhdGljIGJvb2wgaXNSZXZlcnNlZFRvQ29udGVu
dERpcmVjdGlvbihjb25zdCBFbGVtZW50Qm94JiBmbGV4Qm94KTsKIAorICAgIHZvaWQgbGF5b3V0
V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gmLCBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IHdpZHRoQ29uc3RyYWludCA9IHsgfSkgY29uc3Q7CisgICAgc3RkOjpw
YWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IHByZWZlcnJlZFdpZHRoV2l0aEZvcm1hdHRpbmdD
b250ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBj
b25zdCBGbGV4Rm9ybWF0dGluZ0NvbnRleHQmIG1fZmxleEZvcm1hdHRpbmdDb250ZXh0OworICAg
IGNvbnN0IExheW91dFN0YXRlJiBtX2dsb2JhbExheW91dFN0YXRlOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGY4NGJl
YmI2MjQxZC4uZGI0NmU1MjllYzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC04OCwxNiArODgsMTYgQEAgc3RhdGljIGJvb2wgaXNF
bXB0eUlubGluZUNvbnRlbnQoY29uc3QgSW5saW5lSXRlbUxpc3QmIGlubGluZUl0ZW1MaXN0KQog
ICAgIHJldHVybiBpbmxpbmVUZXh0SXRlbSAmJiAhaW5saW5lVGV4dEl0ZW0tPmxlbmd0aCgpOwog
fQogCi1JbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQoY29u
c3QgRWxlbWVudEJveCYgcm9vdEJsb2NrQ29udGFpbmVyLCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUsIEJsb2NrTGF5b3V0U3RhdGUmIHBhcmVudEJsb2NrTGF5b3V0U3RhdGUpCitJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgRWxlbWVudEJveCYg
cm9vdEJsb2NrQ29udGFpbmVyLCBMYXlvdXRTdGF0ZSYgZ2xvYmFsTGF5b3V0U3RhdGUsIEJsb2Nr
TGF5b3V0U3RhdGUmIHBhcmVudEJsb2NrTGF5b3V0U3RhdGUpCiAgICAgOiBtX3Jvb3RCbG9ja0Nv
bnRhaW5lcihyb290QmxvY2tDb250YWluZXIpCi0gICAgLCBtX2dsb2JhbExheW91dFN0YXRlKGxh
eW91dFN0YXRlKQotICAgICwgbV9mbG9hdGluZ0NvbnRleHQocm9vdEJsb2NrQ29udGFpbmVyLCBs
YXlvdXRTdGF0ZSwgcGFyZW50QmxvY2tMYXlvdXRTdGF0ZS5wbGFjZWRGbG9hdHMoKSkKLSAgICAs
IG1faW5saW5lRm9ybWF0dGluZ1V0aWxzKCp0aGlzKQorICAgICwgbV9nbG9iYWxMYXlvdXRTdGF0
ZShnbG9iYWxMYXlvdXRTdGF0ZSkKKyAgICAsIG1fZmxvYXRpbmdDb250ZXh0KHJvb3RCbG9ja0Nv
bnRhaW5lciwgZ2xvYmFsTGF5b3V0U3RhdGUsIHBhcmVudEJsb2NrTGF5b3V0U3RhdGUucGxhY2Vk
RmxvYXRzKCkpCisgICAgLCBtX2lubGluZUZvcm1hdHRpbmdVdGlscygqdGhpcywgZ2xvYmFsTGF5
b3V0U3RhdGUpCiAgICAgLCBtX2lubGluZVF1aXJrcygqdGhpcykKLSAgICAsIG1faW5saW5lQ29u
dGVudENhY2hlKGxheW91dFN0YXRlLmlubGluZUNvbnRlbnRDYWNoZShyb290QmxvY2tDb250YWlu
ZXIpKQorICAgICwgbV9pbmxpbmVDb250ZW50Q2FjaGUoZ2xvYmFsTGF5b3V0U3RhdGUuaW5saW5l
Q29udGVudENhY2hlKHJvb3RCbG9ja0NvbnRhaW5lcikpCiAgICAgLCBtX2lubGluZUxheW91dFN0
YXRlKHBhcmVudEJsb2NrTGF5b3V0U3RhdGUpCiB7Ci0gICAgaW5pdGlhbGl6ZUlubGluZUxheW91
dFN0YXRlKGxheW91dFN0YXRlKTsKKyAgICBpbml0aWFsaXplSW5saW5lTGF5b3V0U3RhdGUoZ2xv
YmFsTGF5b3V0U3RhdGUpOwogfQogCiBJbmxpbmVMYXlvdXRSZXN1bHQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmxheW91dChjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0
cmFpbnRzLCBJbmxpbmVEYW1hZ2UqIGxpbmVEYW1hZ2UpCkBAIC0zMzMsNyArMzMzLDcgQEAgdm9p
ZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0RmxvYXRDb250ZW50T25seShjb25zdCBD
b25zdHJhaW50c0ZvcklubGluZUMKICAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNGbG9hdCgpKSB7
CiAgICAgICAgICAgICBhdXRvJiBmbG9hdEJveCA9IGlubGluZUl0ZW0ubGF5b3V0Qm94KCk7CiAK
LSAgICAgICAgICAgIGxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveChkb3duY2FzdDxF
bGVtZW50Qm94PihmbG9hdEJveCkpOworICAgICAgICAgICAgZm9ybWF0dGluZ1V0aWxzKCkubGF5
b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGRvd25jYXN0PEVsZW1lbnRCb3g+KGZsb2F0
Qm94KSk7CiAKICAgICAgICAgICAgIGF1dG8mIGZsb2F0Qm94R2VvbWV0cnkgPSBnZW9tZXRyeUZv
ckJveChmbG9hdEJveCk7CiAgICAgICAgICAgICBhdXRvIHN0YXRpY1Bvc2l0aW9uID0gTGF5b3V0
UG9pbnQgeyBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQsIGNvbnN0cmFpbnRz
LmxvZ2ljYWxUb3AoKSB9OwpAQCAtNDc1LDE1ICs0NzUsMTUgQEAgdm9pZCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JFbXB0eUlubGluZUNvbnRlbnQoY29u
c3QgQ28KICAgICBjcmVhdGVEaXNwbGF5Q29udGVudEZvcklubGluZUNvbnRlbnQobGluZUJveCwg
ZW1wdHlMaW5lQnJlYWtpbmdSZXN1bHQsIGNvbnN0cmFpbnRzLCBsYXlvdXRSZXN1bHQuZGlzcGxh
eUNvbnRlbnQpOwogfQogCi12b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojppbml0aWFsaXpl
SW5saW5lTGF5b3V0U3RhdGUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKQordm9pZCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZUlubGluZUxheW91dFN0YXRlKGNvbnN0
IExheW91dFN0YXRlJiBnbG9iYWxMYXlvdXRTdGF0ZSkKIHsKLSAgICBhdXRvJiBpbmxpbmVMYXlv
dXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CisgICAgYXV0byYgaW5saW5lTGF5b3V0U3Rh
dGUgPSBsYXlvdXRTdGF0ZSgpOwogCiAgICAgaWYgKGF1dG8gbGltaXRMaW5lc1ZhbHVlID0gcm9v
dCgpLnN0eWxlKCkuaHlwaGVuYXRpb25MaW1pdExpbmVzKCk7IGxpbWl0TGluZXNWYWx1ZSAhPSBS
ZW5kZXJTdHlsZTo6aW5pdGlhbEh5cGhlbmF0aW9uTGltaXRMaW5lcygpKQogICAgICAgICBpbmxp
bmVMYXlvdXRTdGF0ZS5zZXRIeXBoZW5hdGlvbkxpbWl0TGluZXMobGltaXRMaW5lc1ZhbHVlKTsK
ICAgICAvLyBGSVhNRTogUmVtb3ZlIHdoZW4gSUZDIHRha2VzIGNhcmUgb2YgcnVubmluZyBsYXlv
dXQgb24gaW5saW5lLWJsb2Nrcy4KICAgICBpbmxpbmVMYXlvdXRTdGF0ZS5zZXRTaG91bGROb3RT
eW50aGVzaXplSW5saW5lQmxvY2tCYXNlbGluZSgpOwotICAgIGlmIChsYXlvdXRTdGF0ZS5pblN0
YW5kYXJkc01vZGUoKSkKKyAgICBpZiAoZ2xvYmFsTGF5b3V0U3RhdGUuaW5TdGFuZGFyZHNNb2Rl
KCkpCiAgICAgICAgIGlubGluZUxheW91dFN0YXRlLnNldEluU3RhbmRhcmRzTW9kZSgpOwogfQog
CkBAIC01NDcsMTIgKzU0Nyw2IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnJlYnVp
bGRJbmxpbmVJdGVtTGlzdElmTmVlZGVkKElubGluZURhbWFnZSogbGluZURhCiAgICAgaW5saW5l
Q29udGVudENhY2hlLmNsZWFyTWF4aW11bUludHJpbnNpY1dpZHRoTGluZUNvbnRlbnQoKTsKIH0K
IAotdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250
ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gmIGJveCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiB3aWR0aENvbnN0cmFpbnQpCi17Ci0gICAgbV9nbG9iYWxMYXlvdXRTdGF0ZS5sYXlvdXRXaXRo
Rm9ybWF0dGluZ0NvbnRleHRGb3JCb3goYm94LCB3aWR0aENvbnN0cmFpbnQpOwotfQotCi0KIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5k
ZXggYWViYmRmNjJmMmEyLi5iOTU4NDIyYWNjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNzEsOCArNzEsNiBAQCBwdWJsaWM6CiAgICAg
SW5saW5lTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgeyByZXR1cm4gbV9pbmxpbmVMYXlvdXRT
dGF0ZTsgfQogICAgIGNvbnN0IElubGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW5saW5lTGF5b3V0U3RhdGU7IH0KIAotICAgIHZvaWQgbGF5b3V0V2l0aEZv
cm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gmLCBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IHdpZHRoQ29uc3RyYWludCA9IHsgfSk7Ci0KICAgICBlbnVtIGNsYXNzIEVzY2Fw
ZVJlYXNvbiB7CiAgICAgICAgIElua092ZXJmbG93TmVlZHNJbml0aWFsQ29udGluaW5nQmxvY2tG
b3JTdHJva2VXaWR0aAogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ1V0aWxzLmNwcAppbmRleCAzZDBiNGJiMjk4MDIuLjhjNzU1NzEzZDY5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
Rm9ybWF0dGluZ1V0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuY3BwCkBAIC00MSw4ICs0MSw5
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotSW5saW5lRm9y
bWF0dGluZ1V0aWxzOjpJbmxpbmVGb3JtYXR0aW5nVXRpbHMoY29uc3QgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQmIGlubGluZUZvcm1hdHRpbmdDb250ZXh0KQorSW5saW5lRm9ybWF0dGluZ1V0aWxz
OjpJbmxpbmVGb3JtYXR0aW5nVXRpbHMoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlu
bGluZUZvcm1hdHRpbmdDb250ZXh0LCBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCiAg
ICAgOiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0KGlubGluZUZvcm1hdHRpbmdDb250ZXh0KQor
ICAgICwgbV9nbG9iYWxMYXlvdXRTdGF0ZShsYXlvdXRTdGF0ZSkKIHsKIH0KIApAQCAtMTIwLDcg
KzEyMSw3IEBAIGJvb2wgSW5saW5lRm9ybWF0dGluZ1V0aWxzOjppbmxpbmVMZXZlbEJveEFmZmVj
dHNMaW5lQm94KGNvbnN0IElubGluZUxldmVsQm94JiBpCiAgICAgaWYgKGlubGluZUxldmVsQm94
LmlzTGlzdE1hcmtlcigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoaW5saW5lTGV2
ZWxCb3guaXNJbmxpbmVCb3goKSkKLSAgICAgICAgcmV0dXJuIGxheW91dFN0YXRlKCkuaW5TdGFu
ZGFyZHNNb2RlKCkgPyB0cnVlIDogZm9ybWF0dGluZ0NvbnRleHQoKS5xdWlya3MoKS5pbmxpbmVC
b3hBZmZlY3RzTGluZUJveChpbmxpbmVMZXZlbEJveCk7CisgICAgICAgIHJldHVybiBmb3JtYXR0
aW5nQ29udGV4dCgpLmxheW91dFN0YXRlKCkuaW5TdGFuZGFyZHNNb2RlKCkgPyB0cnVlIDogZm9y
bWF0dGluZ0NvbnRleHQoKS5xdWlya3MoKS5pbmxpbmVCb3hBZmZlY3RzTGluZUJveChpbmxpbmVM
ZXZlbEJveCk7CiAgICAgaWYgKGlubGluZUxldmVsQm94LmlzQXRvbWljSW5saW5lQm94KCkpCiAg
ICAgICAgIHJldHVybiAhaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm94KCkuaXNSdWJ5QW5ub3RhdGlv
bkJveCgpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTE4OCw3ICsxODksNyBAQCBJbmxpbmVMYXlv
dXRVbml0IElubGluZUZvcm1hdHRpbmdVdGlsczo6Y29tcHV0ZWRUZXh0SW5kZW50KElzSW50cmlu
c2ljV2lkdGhNb2RlCiAKIElubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ1V0aWxzOjpp
bml0aWFsTGluZUhlaWdodChib29sIGlzRmlyc3RMaW5lKSBjb25zdAogewotICAgIGlmIChsYXlv
dXRTdGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpKQorICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dCgp
LmxheW91dFN0YXRlKCkuaW5TdGFuZGFyZHNNb2RlKCkpCiAgICAgICAgIHJldHVybiBpc0ZpcnN0
TGluZSA/IGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLmZpcnN0TGluZVN0eWxlKCkuY29tcHV0
ZWRMaW5lSGVpZ2h0KCkgOiBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKS5zdHlsZSgpLmNvbXB1
dGVkTGluZUhlaWdodCgpOwogICAgIHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLnF1aXJrcygp
LmluaXRpYWxMaW5lSGVpZ2h0KCk7CiB9CkBAIC02MDgsOSArNjA5LDE0IEBAIExpbmVFbmRpbmdF
bGxpcHNpc1BvbGljeSBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmxpbmVFbmRpbmdFbGxpcHNpc1Bv
bGljeShjb25zdCBSCiAgICAgcmV0dXJuIExpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6Tm9FbGxp
cHNpczsKIH0KIAotY29uc3QgSW5saW5lTGF5b3V0U3RhdGUmIElubGluZUZvcm1hdHRpbmdVdGls
czo6bGF5b3V0U3RhdGUoKSBjb25zdAordm9pZCBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmxheW91
dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveChjb25zdCBFbGVtZW50Qm94JiBib3gsIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gd2lkdGhDb25zdHJhaW50KSBjb25zdAogewotICAgIHJldHVy
biBmb3JtYXR0aW5nQ29udGV4dCgpLmxheW91dFN0YXRlKCk7CisgICAgbV9nbG9iYWxMYXlvdXRT
dGF0ZS5sYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3goYm94LCB3aWR0aENvbnN0cmFp
bnQpOworfQorCitzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gSW5saW5lRm9ybWF0
dGluZ1V0aWxzOjpwcmVmZXJyZWRXaWR0aFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveChjb25z
dCBFbGVtZW50Qm94JiBib3gpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ2xvYmFsTGF5b3V0U3Rh
dGUucHJlZmVycmVkV2lkdGhXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3goYm94KTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuaAppbmRleCBmNGUx
YTVmM2VhMTMuLjQ1OGZjMTAzOTc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9y
bWF0dGluZ1V0aWxzLmgKQEAgLTMzLDEwICszMywxMSBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIGNs
YXNzIEZsb2F0aW5nQ29udGV4dDsKIGNsYXNzIElubGluZUZvcm1hdHRpbmdDb250ZXh0OwogY2xh
c3MgSW5saW5lTGV2ZWxCb3g7CitjbGFzcyBMYXlvdXRTdGF0ZTsKIAogY2xhc3MgSW5saW5lRm9y
bWF0dGluZ1V0aWxzIHsKIHB1YmxpYzoKLSAgICBJbmxpbmVGb3JtYXR0aW5nVXRpbHMoY29uc3Qg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQmKTsKKyAgICBJbmxpbmVGb3JtYXR0aW5nVXRpbHMoY29u
c3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmLCBjb25zdCBMYXlvdXRTdGF0ZSYpOwogCiAgICAg
SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yTmV4dExpbmUoY29uc3QgTGluZUxheW91dFJl
c3VsdCYsIGNvbnN0IElubGluZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCwgY29uc3QgRmxvYXRpbmdD
b250ZXh0JikgY29uc3Q7CiAKQEAgLTY4LDE1ICs2OSwxOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgTGluZUVuZGluZ0VsbGlwc2lzUG9saWN5IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeShjb25z
dCBSZW5kZXJTdHlsZSYgcm9vdFN0eWxlLCBzaXplX3QgbnVtYmVyT2ZMaW5lc1dpdGhJbmxpbmVD
b250ZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbnVtYmVyT2ZWaXNpYmxlTGluZXNBbGxvd2Vk
KTsKIAorICAgIHZvaWQgbGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IEVs
ZW1lbnRCb3gmLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHdpZHRoQ29uc3RyYWludCA9IHsg
fSkgY29uc3Q7CisgICAgc3RkOjpwYWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IHByZWZlcnJl
ZFdpZHRoV2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gmKSBjb25z
dDsKKwogcHJpdmF0ZToKICAgICBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMZWZ0QWZ0ZXJMYXN0
TGluZShjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmLCBzdGQ6Om9wdGlvbmFsPElu
bGluZUxheW91dFVuaXQ+IGxhc3RMaW5lTG9naWNhbEJvdHRvbSwgY29uc3QgRmxvYXRpbmdDb250
ZXh0JikgY29uc3Q7CiAgICAgYm9vbCBpc0F0U29mdFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxp
bmVJdGVtJiBwcmV2aW91cywgY29uc3QgSW5saW5lSXRlbSYgbmV4dCkgY29uc3Q7CiAKLSAgICBj
b25zdCBJbmxpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSBjb25zdDsKICAgICBjb25zdCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVy
biBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0OyB9CiAKIHByaXZhdGU6CiAgICAgY29uc3QgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQmIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7CisgICAgY29u
c3QgTGF5b3V0U3RhdGUmIG1fZ2xvYmFsTGF5b3V0U3RhdGU7CiAKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHAKaW5kZXgg
NWMxYjhlMDQ4Nzk5Li5hZmUxMzNmOGE3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWdu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwCkBAIC0zNiw3ICszNiw2IEBAIG5h
bWVzcGFjZSBMYXlvdXQgewogCiBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpMaW5lQm94VmVydGlj
YWxBbGlnbmVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCkKICAgICA6IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQoaW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQpCi0gICAgLCBtX2lubGluZUZvcm1hdHRpbmdVdGlscyhpbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJv
eFZlcnRpY2FsQWxpZ25lci5oCmluZGV4IDk4Yzc0YmJkZDgyZC4uZTE0NWRkZDAzOWUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5o
CkBAIC01NiwxNCArNTYsMTMgQEAgcHJpdmF0ZToKICAgICBJbmxpbmVMYXlvdXRVbml0IGFkanVz
dEZvckFubm90YXRpb25JZk5lZWRlZChMaW5lQm94JiwgSW5saW5lTGF5b3V0VW5pdCBsaW5lQm94
SGVpZ2h0KSBjb25zdDsKICAgICBJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5kRGVzY2VudCBsYXlv
dXRCb3VuZHNGb3JJbmxpbmVCb3hTdWJ0cmVlKGNvbnN0IExpbmVCb3g6OklubGluZUxldmVsQm94
TGlzdCYgbm9uUm9vdElubGluZUxldmVsQm94ZXMsIHNpemVfdCBpbmxpbmVCb3hJbmRleCkgY29u
c3Q7CiAKLSAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nVXRpbHMmIGZvcm1hdHRpbmdVdGlscygp
IGNvbnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ1V0aWxzOyB9CisgICAgY29uc3QgSW5s
aW5lRm9ybWF0dGluZ1V0aWxzJiBmb3JtYXR0aW5nVXRpbHMoKSBjb25zdCB7IHJldHVybiBmb3Jt
YXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdVdGlscygpOyB9CiAgICAgY29uc3QgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDsgfQogICAgIGNvbnN0IEVsZW1lbnRCb3gmIHJvb3RCb3goKSBj
b25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKTsgfQogICAgIGNvbnN0IElu
bGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGZvcm1hdHRpbmdD
b250ZXh0KCkubGF5b3V0U3RhdGUoKTsgfQogCiBwcml2YXRlOgogICAgIGNvbnN0IElubGluZUZv
cm1hdHRpbmdDb250ZXh0JiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0OwotICAgIGNvbnN0IElu
bGluZUZvcm1hdHRpbmdVdGlscyBtX2lubGluZUZvcm1hdHRpbmdVdGlsczsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA4N2Y4OTRlNTY5MTQu
LjkwNGIxMDk5ZTNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNw
cApAQCAtNjYyLDcgKzY2Miw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmNhbmRpZGF0ZUNvbnRlbnRG
b3JMaW5lKExpbmVDYW5kaWRhdGUmIGxpbmVDYW5kaWRhdGUsIHNpemVfdCBjCiAgICAgICAgIGlm
IChuZWVkc0xheW91dCkgewogICAgICAgICAgICAgLy8gRklYTUU6IEludHJpbnNpYyB3aWR0aCBt
b2RlIHNob3VsZCBjYWxsIGludG8gdGhlIGludHJpbnNpYyB3aWR0aCBjb2RlcGF0aC4gQ3VycmVu
dGx5IHdlIG9ubHkgZ2V0IGhlcmUgd2hlbiBib3ggaGFzIGZpeGVkIHdpZHRoIChtZWFuaW5nIG5v
IG5lZWQgdG8gcnVuIGludHJpbnNpYyB3aWR0aCBvbiB0aGUgYm94KS4KICAgICAgICAgICAgIGlm
ICghaXNJbkludHJpbnNpY1dpZHRoTW9kZSgpKQotICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdD
b250ZXh0KCkubGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGRvd25jYXN0PEVsZW1l
bnRCb3g+KGlubGluZUl0ZW0ubGF5b3V0Qm94KCkpKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0
aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdVdGlscygpLmxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4
dEZvckJveChkb3duY2FzdDxFbGVtZW50Qm94PihpbmxpbmVJdGVtLmxheW91dEJveCgpKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoaW5saW5lSXRlbS5pc0Zsb2F0KCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3J1Ynkv
UnVieUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA2
OWM2ODgzNTM5YWYuLmQzNjg4NTk1MTQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvcnVieS9SdWJ5Rm9ybWF0dGluZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L3J1YnkvUnVieUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIElubGlu
ZUxheW91dFVuaXQgUnVieUZvcm1hdHRpbmdDb250ZXh0Ojphbm5vdGF0aW9uQm94TG9naWNhbFdp
ZHRoKGNvbnN0IEJveCYgcnViCiAgICAgaWYgKCFhbm5vdGF0aW9uQm94KQogICAgICAgICByZXR1
cm4geyB9OwogCi0gICAgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGF5b3V0V2l0aEZvcm1hdHRp
bmdDb250ZXh0Rm9yQm94KCphbm5vdGF0aW9uQm94KTsKKyAgICBpbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5mb3JtYXR0aW5nVXRpbHMoKS5sYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3go
KmFubm90YXRpb25Cb3gpOwogCiAgICAgcmV0dXJuIGlubGluZUZvcm1hdHRpbmdDb250ZXh0Lmdl
b21ldHJ5Rm9yQm94KCphbm5vdGF0aW9uQm94KS5tYXJnaW5Cb3hXaWR0aCgpOwogfQpAQCAtMjc4
LDcgKzI3OCw3IEBAIHNpemVfdCBSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6OmFwcGx5UnVieUFsaWdu
T25CYXNlQ29udGVudChzaXplX3QgcnVieUJhc2VTdGFydCwKICAgICBpZiAoIWFubm90YXRpb25C
b3gpCiAgICAgICAgIHJldHVybiBydWJ5QmFzZVN0YXJ0ICsgMTsKIAotICAgIGlubGluZUZvcm1h
dHRpbmdDb250ZXh0LmxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveCgqYW5ub3RhdGlv
bkJveCk7CisgICAgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQuZm9ybWF0dGluZ1V0aWxzKCkubGF5
b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KCphbm5vdGF0aW9uQm94KTsKIAogICAgIGF1
dG8gYW5ub3RhdGlvbkJveExvZ2ljYWxXaWR0aCA9IElubGluZUxheW91dFVuaXQgeyBpbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveCgqYW5ub3RhdGlvbkJveCkubWFyZ2luQm94
V2lkdGgoKSB9OwogICAgIGF1dG8gYmFzZUNvbnRlbnRMb2dpY2FsV2lkdGggPSBydW5zW3J1YnlC
YXNlRW5kXS5sb2dpY2FsTGVmdCgpIC0gcnVuc1tydWJ5QmFzZVN0YXJ0XS5sb2dpY2FsUmlnaHQo
KTsKQEAgLTM4Niw3ICszODYsNyBAQCBJbmxpbmVMYXlvdXRTaXplIFJ1YnlGb3JtYXR0aW5nQ29u
dGV4dDo6c2l6ZUFubm90YXRpb25Cb3goY29uc3QgQm94JiBydWJ5QmFzZUxheQogICAgICAgICAv
LyBMYXlvdXQgdGhlIGFubm90YXRpb24gYm94IGFnYWluIGlmIHdlIGRlY2lkZWQgdG8gY2hhbmdl
IGl0cyBzaXplLgogICAgICAgICBhdXRvIG5ld1dpZHRoID0gc3RkOjptYXgocnVieUJhc2VNYXJn
aW5Cb3hMb2dpY2FsUmVjdC53aWR0aCgpLCBhbm5vdGF0aW9uQm94TG9naWNhbEdlb21ldHJ5Lm1h
cmdpbkJveFdpZHRoKCkpOwogICAgICAgICBpZiAobmV3V2lkdGggIT0gYW5ub3RhdGlvbkJveExv
Z2ljYWxHZW9tZXRyeS5tYXJnaW5Cb3hXaWR0aCgpKQotICAgICAgICAgICAgaW5saW5lRm9ybWF0
dGluZ0NvbnRleHQubGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KCphbm5vdGF0aW9u
Qm94LCBuZXdXaWR0aCk7CisgICAgICAgICAgICBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5mb3Jt
YXR0aW5nVXRpbHMoKS5sYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3goKmFubm90YXRp
b25Cb3gsIG5ld1dpZHRoKTsKIAogICAgICAgICByZXR1cm4geyBuZXdXaWR0aCAtIGFubm90YXRp
b25Cb3hMb2dpY2FsR2VvbWV0cnkuaG9yaXpvbnRhbE1hcmdpbkJvcmRlckFuZFBhZGRpbmcoKSwg
YW5ub3RhdGlvbkJveExvZ2ljYWxHZW9tZXRyeS5jb250ZW50Qm94SGVpZ2h0KCkgfTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5j
cHAKaW5kZXggZWQ3MTExYjY3OGQ0Li5mNWEyZTIwOGFhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250
ZXh0TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5jcHAKQEAgLTUwLDUgKzUwLDEx
IEBAIHZvaWQgbGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IExheW91dDo6
RWxlbWVudEJveCYgYm94LCBzdGQ6Om9wdGlvCiAgICAgdXBkYXRlci51cGRhdGVHZW9tZXRyeUFm
dGVyTGF5b3V0KGJveCk7CiB9CiAKK3N0ZDo6cGFpcjxMYXlvdXRVbml0LCBMYXlvdXRVbml0PiBw
cmVmZXJyZWRMb2dpY2FsV2lkdGhzKGNvbnN0IExheW91dDo6RWxlbWVudEJveCYgYm94KQorewor
ICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyQm94PigqYm94LnJlbmRlcmVyRm9y
SW50ZWdyYXRpb24oKSk7CisgICAgcmV0dXJuIHsgcmVuZGVyZXIubWluUHJlZmVycmVkTG9naWNh
bFdpZHRoKCksIHJlbmRlcmVyLm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIH07Cit9CisKIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5o
CmluZGV4IGEyN2ViZmE1ZWRkNS4uMTgyZTVjMWJmOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4
dExheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xh
c3MgTGF5b3V0U3RhdGU7CiBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCiB2b2lkIGxh
eW91dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveChjb25zdCBMYXlvdXQ6OkVsZW1lbnRCb3gm
LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHdpZHRoQ29uc3RyYWludCwgTGF5b3V0OjpMYXlv
dXRTdGF0ZSYpOworc3RkOjpwYWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IHByZWZlcnJlZExv
Z2ljYWxXaWR0aHMoY29uc3QgTGF5b3V0OjpFbGVtZW50Qm94Jik7CiAKIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNw
cAppbmRleCA3MzQzNmI5Njg3ZTMuLjM5OTliMDg4MzkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtNTc5
LDcgKzU3OSw3IEBAIHZvaWQgcHJpbnRMYXlvdXRUcmVlRm9yTGl2ZURvY3VtZW50cygpCiAgICAg
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gb3V0cHV0IGdlb21ldHJ5IHdpdGhv
dXQgbGF5b3V0IGNvbnRleHQuCiAgICAgICAgIGF1dG8mIHJlbmRlclZpZXcgPSAqZG9jdW1lbnQt
PnJlbmRlclZpZXcoKTsKICAgICAgICAgYXV0byBsYXlvdXRUcmVlID0gVHJlZUJ1aWxkZXI6OmJ1
aWxkTGF5b3V0VHJlZShyZW5kZXJWaWV3KTsKLSAgICAgICAgYXV0byBsYXlvdXRTdGF0ZSA9IExh
eW91dFN0YXRlIHsgZG9jdW1lbnQsIGxheW91dFRyZWUtPnJvb3QoKSwgTGF5b3V0OjpMYXlvdXRT
dGF0ZTo6VHlwZTo6U2Vjb25kYXJ5LCB7IH0gfTsKKyAgICAgICAgYXV0byBsYXlvdXRTdGF0ZSA9
IExheW91dFN0YXRlIHsgZG9jdW1lbnQsIGxheW91dFRyZWUtPnJvb3QoKSwgTGF5b3V0OjpMYXlv
dXRTdGF0ZTo6VHlwZTo6U2Vjb25kYXJ5LCB7IH0sIHsgfSB9OwogCiAgICAgICAgIExheW91dENv
bnRleHQobGF5b3V0U3RhdGUpLmxheW91dChyZW5kZXJWaWV3LnNpemUoKSk7CiAgICAgICAgIHNo
b3dMYXlvdXRUcmVlKGRvd25jYXN0PEluaXRpYWxDb250YWluaW5nQmxvY2s+KGxheW91dFN0YXRl
LnJvb3QoKSksICZsYXlvdXRTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKaW5kZXggM2ZhY2IxY2Y5MmMwLi5lMjFjN2RkZTExMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUmVuZGVyVmlldzo6UmVu
ZGVyVmlldyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBS
ZW5kZXJCbG9ja0Zsb3coVHlwZTo6VmlldywgZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAg
ICwgbV9mcmFtZVZpZXcoKmRvY3VtZW50LnZpZXcoKSkKICAgICAsIG1faW5pdGlhbENvbnRhaW5p
bmdCbG9jayhtYWtlVW5pcXVlUmVmPExheW91dDo6SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4oUmVu
ZGVyU3R5bGU6OmNsb25lKHRoaXMtPnN0eWxlKCkpKSkKLSAgICAsIG1fbGF5b3V0U3RhdGUobWFr
ZVVuaXF1ZVJlZjxMYXlvdXQ6OkxheW91dFN0YXRlPihkb2N1bWVudCwgKm1faW5pdGlhbENvbnRh
aW5pbmdCbG9jaywgTGF5b3V0OjpMYXlvdXRTdGF0ZTo6VHlwZTo6UHJpbWFyeSwgTGF5b3V0SW50
ZWdyYXRpb246OmxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveCkpCisgICAgLCBtX2xh
eW91dFN0YXRlKG1ha2VVbmlxdWVSZWY8TGF5b3V0OjpMYXlvdXRTdGF0ZT4oZG9jdW1lbnQsICpt
X2luaXRpYWxDb250YWluaW5nQmxvY2ssIExheW91dDo6TGF5b3V0U3RhdGU6OlR5cGU6OlByaW1h
cnksIExheW91dEludGVncmF0aW9uOjpsYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3gs
IExheW91dEludGVncmF0aW9uOjpwcmVmZXJyZWRMb2dpY2FsV2lkdGhzKSkKICAgICAsIG1fc2Vs
ZWN0aW9uKCp0aGlzKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZmluZCBhIHdheSB0byBl
bmZvcmNlIHRoaXMgYXQgY29tcGlsZSB0aW1lLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>472286</attachid>
            <date>2024-08-24 15:41:14 -0700</date>
            <delta_ts>2024-08-25 08:28:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-278612-20240824154113.patch</filename>
            <type>text/plain</type>
            <size>29555</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBiN2I1ZmRmNTIxYjE0YTYyMmFmYTQ3YThlYzY5ZjAwYTMxM2VhYWU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgMjQgQXVnIDIwMjQgMTU6MTA6MDMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbTEZDXVtJ
bnRlZ3JhdGlvbl0gQWRkIHN1cHBvcnQgZm9yIGNhbGxpbmcKIG1pbi9tYXhQcmVmZXJyZWRMb2dp
Y2FsV2lkdGggZnJvbSBpbnNpZGUgTEZDCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mjc4NjEyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRoaXMgaXMgcmVx
dWlyZWQgYnkgZmxleCBsYXlvdXQgd2hlcmUgbWluL21heCBjb250ZW50IHdpZHRocyBhcmUgZXNz
ZW50aWFsLgoKMS4gTW92ZSBpbnRlZ3JhdGlvbiBmdW5jdGlvbnMgdG8gb3VyIHV0aWwgY2xhc3Mg
KHdoaWxlIGhhdmluZyBvbmUgInV0aWxpdHkiIGZ1bmN0aW9uIGlzIGZpbmUgb24gdGhlIGZvcm1h
dHRpbmcgY29udGV4dCBjbGFzcywgbm93IHdpdGggbWluL21heCwgaXQgbWF5IGdldCBjb25mdXNp
bmcgdG8gc2VlIHNlZW1pbmdseSBkdXBsaWNhdGVkIGZ1bmN0aW9uYWxpdHkpCjIuIEludHJvZHVj
ZSBhbiB1bmZvcnR1bmF0ZSBjb25zdF9jYXN0LCBidXQgaW4gcHJhY3RpY2Ugd2UgY2FsbCBvdXRz
aWRlIG9mIExGQyBoZXJlIGludG8gcmVuZGVyIHRyZWUuCgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9MYXlvdXRTdGF0ZS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpMYXlvdXRT
dGF0ZSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpsYXlvdXRXaXRoRm9ybWF0dGlu
Z0NvbnRleHRGb3JCb3ggY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6cHJl
ZmVycmVkV2lkdGhXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3ggY29uc3QpOgooV2ViQ29yZTo6
TGF5b3V0OjpMYXlvdXRTdGF0ZTo6bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KTog
RGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaDoKKiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdVdGls
cy5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkZsZXhGb3JtYXR0aW5nVXRpbHM6OkZsZXhGb3JtYXR0
aW5nVXRpbHMpOgooV2ViQ29yZTo6TGF5b3V0OjpGbGV4Rm9ybWF0dGluZ1V0aWxzOjpsYXlvdXRX
aXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3ggY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpGbGV4
Rm9ybWF0dGluZ1V0aWxzOjpwcmVmZXJyZWRXaWR0aFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJv
eCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4
L0ZsZXhGb3JtYXR0aW5nVXRpbHMuaDoKKFdlYkNvcmU6OkxheW91dDo6RmxleEZvcm1hdHRpbmdV
dGlsczo6bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KToKKiBTb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvTG9naWNhbEZsZXhJdGVtLmg6CihXZWJD
b3JlOjpMYXlvdXQ6OkxvZ2ljYWxGbGV4SXRlbTo6bWFpbkF4aXMpOgoqIFNvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUZv
cm1hdHRpbmdDb250ZXh0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OmxheW91dEZsb2F0Q29udGVudE9ubHkpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZUlubGluZUxheW91dFN0YXRlKToKKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4
dEZvckJveCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaDoKKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJv
eCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
Rm9ybWF0dGluZ1V0aWxzOjpJbmxpbmVGb3JtYXR0aW5nVXRpbHMpOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3ggY29u
c3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmluaXRpYWxMaW5l
SGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1V0aWxzOjps
YXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3ggY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OnByZWZlcnJlZFdpZHRoV2l0aEZvcm1hdHRpbmdDb250
ZXh0Rm9yQm94IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1V0aWxz
OjpsYXlvdXRTdGF0ZSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmg6CihXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdVdGlsczo6bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250
ZXh0Rm9yQm94KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6
TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6TGluZUJveFZlcnRpY2FsQWxpZ25lcik6CiogU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZl
cnRpY2FsQWxpZ25lci5oOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94VmVydGljYWxBbGlnbmVy
Ojpmb3JtYXR0aW5nVXRpbHMgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OkxheW91
dDo6TGluZUJ1aWxkZXI6OmNhbmRpZGF0ZUNvbnRlbnRGb3JMaW5lKToKKiBTb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29u
dGV4dC5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6YW5ub3Rh
dGlvbkJveExvZ2ljYWxXaWR0aCk6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlGb3JtYXR0aW5nQ29u
dGV4dDo6YXBwbHlSdWJ5QWxpZ25PbkJhc2VDb250ZW50KToKKFdlYkNvcmU6OkxheW91dDo6UnVi
eUZvcm1hdHRpbmdDb250ZXh0OjpzaXplQW5ub3RhdGlvbkJveCk6CiogU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uRm9ybWF0dGluZ0NvbnRleHRMYXlv
dXQuY3BwOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OnByZWZlcnJlZExvZ2ljYWxXaWR0
aHMpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0Lmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpwcmludExheW91
dFRyZWVGb3JMaXZlRG9jdW1lbnRzKToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHA6CihXZWJDb3JlOjpSZW5kZXJWaWV3OjpSZW5kZXJWaWV3KToKLS0tCiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwICAgICAgICAgfCAxMiArKysrKystLS0KIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oICAgICAgICAgICB8ICA3ICsrKy0tCiAu
Li4vZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwICAgICAgICAgICAgfCAgMiArLQogLi4u
L2ZsZXgvRmxleEZvcm1hdHRpbmdVdGlscy5jcHAgICAgICAgICAgICAgIHwgMTQgKysrKysrKysr
LQogLi4uL2ZsZXgvRmxleEZvcm1hdHRpbmdVdGlscy5oICAgICAgICAgICAgICAgIHwgIDcgKysr
Ky0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwICAgICAgICB8IDI2ICsr
KysrKystLS0tLS0tLS0tLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCAg
ICAgICAgICB8ICAyIC0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5jcHAgICAg
ICAgICAgfCAxNiArKysrKysrKy0tLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxz
LmggICAgICAgICAgICB8ICA4ICsrKystLQogLi4uL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGlj
YWxBbGlnbmVyLmNwcCAgIHwgIDEgLQogLi4uL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxB
bGlnbmVyLmggICAgIHwgIDMgKy0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcCAg
ICAgICAgICAgICAgfCAgMiArLQogLi4uL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4
dC5jcHAgICAgIHwgIDYgKystLS0KIC4uLnlvdXRJbnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250ZXh0
TGF5b3V0LmNwcCB8ICA2ICsrKysrCiAuLi5MYXlvdXRJbnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250
ZXh0TGF5b3V0LmggfCAgMSArCiAuLi4vbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxk
ZXIuY3BwICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
ICAgICAgIHwgIDIgKy0KIDE3IGZpbGVzIGNoYW5nZWQsIDc1IGluc2VydGlvbnMoKyksIDQyIGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCmluZGV4IGQ5YjMz
NmM0NTNlMC4uMTZjYzk4OGNjMzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
TGF5b3V0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5j
cHAKQEAgLTQyLDExICs0MiwxMiBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIAogV1RGX01BS0VfVFpP
TkVfT1JfSVNPX0FMTE9DQVRFRF9JTVBMKExheW91dFN0YXRlKTsKIAotTGF5b3V0U3RhdGU6Okxh
eW91dFN0YXRlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgRWxlbWVudEJveCYgcm9v
dENvbnRhaW5lciwgVHlwZSB0eXBlLCBGb3JtYXR0aW5nQ29udGV4dExheW91dEZ1bmN0aW9uJiYg
Zm9ybWF0dGluZ0NvbnRleHRMYXlvdXRGdW5jdGlvbikKK0xheW91dFN0YXRlOjpMYXlvdXRTdGF0
ZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEVsZW1lbnRCb3gmIHJvb3RDb250YWlu
ZXIsIFR5cGUgdHlwZSwgRm9ybWF0dGluZ0NvbnRleHRMYXlvdXRGdW5jdGlvbiYmIGZvcm1hdHRp
bmdDb250ZXh0TGF5b3V0RnVuY3Rpb24sIEZvcm1hdHRpbmdDb250ZXh0UHJlZmVycmVkV2lkdGhz
RnVuY3Rpb24mJiBmb3JtYXR0aW5nQ29udGV4dFByZWZlcnJlZFdpZHRoc0Z1bmN0aW9uKQogICAg
IDogbV90eXBlKHR5cGUpCiAgICAgLCBtX3Jvb3RDb250YWluZXIocm9vdENvbnRhaW5lcikKICAg
ICAsIG1fc2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSkKICAgICAsIG1f
Zm9ybWF0dGluZ0NvbnRleHRMYXlvdXRGdW5jdGlvbihXVEZNb3ZlKGZvcm1hdHRpbmdDb250ZXh0
TGF5b3V0RnVuY3Rpb24pKQorICAgICwgbV9mb3JtYXR0aW5nQ29udGV4dFByZWZlcnJlZFdpZHRo
c0Z1bmN0aW9uKFdURk1vdmUoZm9ybWF0dGluZ0NvbnRleHRQcmVmZXJyZWRXaWR0aHNGdW5jdGlv
bikpCiB7CiAgICAgLy8gSXQgbWFrZXMgYWJzb2x1dGVseSBubyBzZW5zZSB0byBjb25zdHJ1Y3Qg
YSBkZWRpY2F0ZWQgbGF5b3V0IHN0YXRlIGZvciBhIG5vbi1mb3JtYXR0aW5nIGNvbnRleHQgcm9v
dCAobGF5b3V0IHdvdWxkIGJlIGEgbm8tb3ApLgogICAgIEFTU0VSVChyb290KCkuZXN0YWJsaXNo
ZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKQEAgLTE1MSw5ICsxNTIsMTQgQEAgdm9pZCBMYXlvdXRT
dGF0ZTo6ZGVzdHJveUlubGluZUNvbnRlbnRDYWNoZShjb25zdCBFbGVtZW50Qm94JiBmb3JtYXR0
aW5nQ29udGV4dFIKICAgICBtX2lubGluZUNvbnRlbnRDYWNoZXMucmVtb3ZlKCZmb3JtYXR0aW5n
Q29udGV4dFJvb3QpOwogfQogCi12b2lkIExheW91dFN0YXRlOjpsYXlvdXRXaXRoRm9ybWF0dGlu
Z0NvbnRleHRGb3JCb3goY29uc3QgRWxlbWVudEJveCYgYm94LCBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IHdpZHRoQ29uc3RyYWludCkKK3ZvaWQgTGF5b3V0U3RhdGU6OmxheW91dFdpdGhGb3Jt
YXR0aW5nQ29udGV4dEZvckJveChjb25zdCBFbGVtZW50Qm94JiBib3gsIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gd2lkdGhDb25zdHJhaW50KSBjb25zdAogewotICAgIHJldHVybiBtX2Zvcm1h
dHRpbmdDb250ZXh0TGF5b3V0RnVuY3Rpb24oYm94LCB3aWR0aENvbnN0cmFpbnQsICp0aGlzKTsK
KyAgICBjb25zdF9jYXN0PExheW91dFN0YXRlJj4oKnRoaXMpLm1fZm9ybWF0dGluZ0NvbnRleHRM
YXlvdXRGdW5jdGlvbihib3gsIHdpZHRoQ29uc3RyYWludCwgY29uc3RfY2FzdDxMYXlvdXRTdGF0
ZSY+KCp0aGlzKSk7Cit9CisKK3N0ZDo6cGFpcjxMYXlvdXRVbml0LCBMYXlvdXRVbml0PiBMYXlv
dXRTdGF0ZTo6cHJlZmVycmVkV2lkdGhXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3goY29uc3Qg
RWxlbWVudEJveCYgYm94KSBjb25zdAoreworICAgIHJldHVybiBjb25zdF9jYXN0PExheW91dFN0
YXRlJj4oKnRoaXMpLm1fZm9ybWF0dGluZ0NvbnRleHRQcmVmZXJyZWRXaWR0aHNGdW5jdGlvbihi
b3gpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3Rh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oCmluZGV4IDc1YWY4MTA4
MTdhYi4uZDI3ZjkwM2VjYjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5
b3V0U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaApAQCAt
NjMsOCArNjMsOSBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsgUHJpbWFyeSwgU2Vj
b25kYXJ5IH07CiAKICAgICB1c2luZyBGb3JtYXR0aW5nQ29udGV4dExheW91dEZ1bmN0aW9uID0g
RnVuY3Rpb248dm9pZChjb25zdCBFbGVtZW50Qm94Jiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiwgTGF5b3V0U3RhdGUmKT47CisgICAgdXNpbmcgRm9ybWF0dGluZ0NvbnRleHRQcmVmZXJyZWRX
aWR0aHNGdW5jdGlvbiA9IEZ1bmN0aW9uPHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBMYXlvdXRVbml0
Pihjb25zdCBFbGVtZW50Qm94Jik+OwogCi0gICAgTGF5b3V0U3RhdGUoY29uc3QgRG9jdW1lbnQm
LCBjb25zdCBFbGVtZW50Qm94JiByb290Q29udGFpbmVyLCBUeXBlLCBGb3JtYXR0aW5nQ29udGV4
dExheW91dEZ1bmN0aW9uJiYpOworICAgIExheW91dFN0YXRlKGNvbnN0IERvY3VtZW50JiwgY29u
c3QgRWxlbWVudEJveCYgcm9vdENvbnRhaW5lciwgVHlwZSwgRm9ybWF0dGluZ0NvbnRleHRMYXlv
dXRGdW5jdGlvbiYmLCBGb3JtYXR0aW5nQ29udGV4dFByZWZlcnJlZFdpZHRoc0Z1bmN0aW9uJiYp
OwogICAgIH5MYXlvdXRTdGF0ZSgpOwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CkBAIC0xMDUsNyArMTA2LDggQEAgcHVibGljOgogCiAgICAgY29uc3QgRWxlbWVu
dEJveCYgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdENvbnRhaW5lcjsgfQogCi0gICAgdm9p
ZCBsYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3goY29uc3QgRWxlbWVudEJveCYsIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gd2lkdGhDb25zdHJhaW50KTsKKyAgICB2b2lkIGxheW91
dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveChjb25zdCBFbGVtZW50Qm94Jiwgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiB3aWR0aENvbnN0cmFpbnQpIGNvbnN0OworICAgIHN0ZDo6cGFpcjxM
YXlvdXRVbml0LCBMYXlvdXRVbml0PiBwcmVmZXJyZWRXaWR0aFdpdGhGb3JtYXR0aW5nQ29udGV4
dEZvckJveChjb25zdCBFbGVtZW50Qm94JikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRRdWlya3NNb2RlKFF1aXJrc01vZGUgcXVpcmtzTW9kZSkgeyBtX3F1aXJrc01vZGUgPSBxdWly
a3NNb2RlOyB9CkBAIC0xMjgsNiArMTMwLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8U2VjdXJpdHlP
cmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CiAKICAgICBGb3JtYXR0aW5nQ29udGV4dExheW91dEZ1
bmN0aW9uIG1fZm9ybWF0dGluZ0NvbnRleHRMYXlvdXRGdW5jdGlvbjsKKyAgICBGb3JtYXR0aW5n
Q29udGV4dFByZWZlcnJlZFdpZHRoc0Z1bmN0aW9uIG1fZm9ybWF0dGluZ0NvbnRleHRQcmVmZXJy
ZWRXaWR0aHNGdW5jdGlvbjsKIH07CiAKIGlubGluZSBib29sIExheW91dFN0YXRlOjpoYXNCb3hH
ZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0Zs
ZXhGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggODExNzQ1OTU5ZTVkLi43MGUwMjFjYzY1ZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxl
eC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC00Niw3
ICs0Niw3IEBAIFdURl9NQUtFX1RaT05FX09SX0lTT19BTExPQ0FURURfSU1QTChGbGV4Rm9ybWF0
dGluZ0NvbnRleHQpOwogRmxleEZvcm1hdHRpbmdDb250ZXh0OjpGbGV4Rm9ybWF0dGluZ0NvbnRl
eHQoY29uc3QgRWxlbWVudEJveCYgZmxleEJveCwgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKQog
ICAgIDogbV9mbGV4Qm94KGZsZXhCb3gpCiAgICAgLCBtX2xheW91dFN0YXRlKGxheW91dFN0YXRl
KQotICAgICwgbV9mbGV4Rm9ybWF0dGluZ1V0aWxzKCp0aGlzKQorICAgICwgbV9mbGV4Rm9ybWF0
dGluZ1V0aWxzKCp0aGlzLCBsYXlvdXRTdGF0ZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nVXRp
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0Zs
ZXhGb3JtYXR0aW5nVXRpbHMuY3BwCmluZGV4IGIyNmMyMTM5NTI5Ni4uNTFiMzgxMzE5YTE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgv
RmxleEZvcm1hdHRpbmdVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nVXRpbHMuY3BwCkBAIC0yOCwxMyArMjgs
MTUgQEAKIAogI2luY2x1ZGUgIkZsZXhGb3JtYXR0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkxh
eW91dENvbnRleHQuaCIKKyNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIlJlbmRl
clN0eWxlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0
IHsKIAotRmxleEZvcm1hdHRpbmdVdGlsczo6RmxleEZvcm1hdHRpbmdVdGlscyhjb25zdCBGbGV4
Rm9ybWF0dGluZ0NvbnRleHQmIGZsZXhGb3JtYXR0aW5nQ29udGV4dCkKK0ZsZXhGb3JtYXR0aW5n
VXRpbHM6OkZsZXhGb3JtYXR0aW5nVXRpbHMoY29uc3QgRmxleEZvcm1hdHRpbmdDb250ZXh0JiBm
bGV4Rm9ybWF0dGluZ0NvbnRleHQsIGNvbnN0IExheW91dFN0YXRlJiBnbG9iYWxMYXlvdXRTdGF0
ZSkKICAgICA6IG1fZmxleEZvcm1hdHRpbmdDb250ZXh0KGZsZXhGb3JtYXR0aW5nQ29udGV4dCkK
KyAgICAsIG1fZ2xvYmFsTGF5b3V0U3RhdGUoZ2xvYmFsTGF5b3V0U3RhdGUpCiB7CiB9CiAKQEAg
LTUyLDYgKzU0LDE2IEBAIGJvb2wgRmxleEZvcm1hdHRpbmdVdGlsczo6aXNSZXZlcnNlZFRvQ29u
dGVudERpcmVjdGlvbihjb25zdCBFbGVtZW50Qm94JiBmbGV4Qm94CiAgICAgcmV0dXJuIGZsZXhE
aXJlY3Rpb24gPT0gRmxleERpcmVjdGlvbjo6Um93UmV2ZXJzZSB8fCBmbGV4RGlyZWN0aW9uID09
IEZsZXhEaXJlY3Rpb246OkNvbHVtblJldmVyc2U7CiB9CiAKK3ZvaWQgRmxleEZvcm1hdHRpbmdV
dGlsczo6bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gm
IGJveCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB3aWR0aENvbnN0cmFpbnQpIGNvbnN0Cit7
CisgICAgbV9nbG9iYWxMYXlvdXRTdGF0ZS5sYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JC
b3goYm94LCB3aWR0aENvbnN0cmFpbnQpOworfQorCitzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5
b3V0VW5pdD4gRmxleEZvcm1hdHRpbmdVdGlsczo6cHJlZmVycmVkV2lkdGhXaXRoRm9ybWF0dGlu
Z0NvbnRleHRGb3JCb3goY29uc3QgRWxlbWVudEJveCYgYm94KSBjb25zdAoreworICAgIHJldHVy
biBtX2dsb2JhbExheW91dFN0YXRlLnByZWZlcnJlZFdpZHRoV2l0aEZvcm1hdHRpbmdDb250ZXh0
Rm9yQm94KGJveCk7Cit9CisKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nVXRpbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ1V0
aWxzLmgKaW5kZXggYjc3MDNmYWViZjljLi5kNWZmODE5NjE5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ1V0
aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4
L0ZsZXhGb3JtYXR0aW5nVXRpbHMuaApAQCAtMzEsMTcgKzMxLDIyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCiBjbGFzcyBGbGV4Rm9ybWF0dGluZ0NvbnRleHQ7
CitjbGFzcyBMYXlvdXRTdGF0ZTsKIAogLy8gSGVscGVyIGNsYXNzIGZvciBmbGV4IGxheW91dC4K
IGNsYXNzIEZsZXhGb3JtYXR0aW5nVXRpbHMgewogcHVibGljOgotICAgIEZsZXhGb3JtYXR0aW5n
VXRpbHMoY29uc3QgRmxleEZvcm1hdHRpbmdDb250ZXh0Jik7CisgICAgRmxleEZvcm1hdHRpbmdV
dGlscyhjb25zdCBGbGV4Rm9ybWF0dGluZ0NvbnRleHQmLCBjb25zdCBMYXlvdXRTdGF0ZSYpOwog
CiAgICAgc3RhdGljIGJvb2wgaXNNYWluQXhpc1BhcmFsbGVsV2l0aElubGluZUF4aXMoY29uc3Qg
RWxlbWVudEJveCYgZmxleEJveCk7CiAgICAgc3RhdGljIGJvb2wgaXNSZXZlcnNlZFRvQ29udGVu
dERpcmVjdGlvbihjb25zdCBFbGVtZW50Qm94JiBmbGV4Qm94KTsKIAorICAgIHZvaWQgbGF5b3V0
V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gmLCBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IHdpZHRoQ29uc3RyYWludCA9IHsgfSkgY29uc3Q7CisgICAgc3RkOjpw
YWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IHByZWZlcnJlZFdpZHRoV2l0aEZvcm1hdHRpbmdD
b250ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBj
b25zdCBGbGV4Rm9ybWF0dGluZ0NvbnRleHQmIG1fZmxleEZvcm1hdHRpbmdDb250ZXh0OworICAg
IGNvbnN0IExheW91dFN0YXRlJiBtX2dsb2JhbExheW91dFN0YXRlOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGY4NGJl
YmI2MjQxZC4uZGI0NmU1MjllYzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC04OCwxNiArODgsMTYgQEAgc3RhdGljIGJvb2wgaXNF
bXB0eUlubGluZUNvbnRlbnQoY29uc3QgSW5saW5lSXRlbUxpc3QmIGlubGluZUl0ZW1MaXN0KQog
ICAgIHJldHVybiBpbmxpbmVUZXh0SXRlbSAmJiAhaW5saW5lVGV4dEl0ZW0tPmxlbmd0aCgpOwog
fQogCi1JbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQoY29u
c3QgRWxlbWVudEJveCYgcm9vdEJsb2NrQ29udGFpbmVyLCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUsIEJsb2NrTGF5b3V0U3RhdGUmIHBhcmVudEJsb2NrTGF5b3V0U3RhdGUpCitJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgRWxlbWVudEJveCYg
cm9vdEJsb2NrQ29udGFpbmVyLCBMYXlvdXRTdGF0ZSYgZ2xvYmFsTGF5b3V0U3RhdGUsIEJsb2Nr
TGF5b3V0U3RhdGUmIHBhcmVudEJsb2NrTGF5b3V0U3RhdGUpCiAgICAgOiBtX3Jvb3RCbG9ja0Nv
bnRhaW5lcihyb290QmxvY2tDb250YWluZXIpCi0gICAgLCBtX2dsb2JhbExheW91dFN0YXRlKGxh
eW91dFN0YXRlKQotICAgICwgbV9mbG9hdGluZ0NvbnRleHQocm9vdEJsb2NrQ29udGFpbmVyLCBs
YXlvdXRTdGF0ZSwgcGFyZW50QmxvY2tMYXlvdXRTdGF0ZS5wbGFjZWRGbG9hdHMoKSkKLSAgICAs
IG1faW5saW5lRm9ybWF0dGluZ1V0aWxzKCp0aGlzKQorICAgICwgbV9nbG9iYWxMYXlvdXRTdGF0
ZShnbG9iYWxMYXlvdXRTdGF0ZSkKKyAgICAsIG1fZmxvYXRpbmdDb250ZXh0KHJvb3RCbG9ja0Nv
bnRhaW5lciwgZ2xvYmFsTGF5b3V0U3RhdGUsIHBhcmVudEJsb2NrTGF5b3V0U3RhdGUucGxhY2Vk
RmxvYXRzKCkpCisgICAgLCBtX2lubGluZUZvcm1hdHRpbmdVdGlscygqdGhpcywgZ2xvYmFsTGF5
b3V0U3RhdGUpCiAgICAgLCBtX2lubGluZVF1aXJrcygqdGhpcykKLSAgICAsIG1faW5saW5lQ29u
dGVudENhY2hlKGxheW91dFN0YXRlLmlubGluZUNvbnRlbnRDYWNoZShyb290QmxvY2tDb250YWlu
ZXIpKQorICAgICwgbV9pbmxpbmVDb250ZW50Q2FjaGUoZ2xvYmFsTGF5b3V0U3RhdGUuaW5saW5l
Q29udGVudENhY2hlKHJvb3RCbG9ja0NvbnRhaW5lcikpCiAgICAgLCBtX2lubGluZUxheW91dFN0
YXRlKHBhcmVudEJsb2NrTGF5b3V0U3RhdGUpCiB7Ci0gICAgaW5pdGlhbGl6ZUlubGluZUxheW91
dFN0YXRlKGxheW91dFN0YXRlKTsKKyAgICBpbml0aWFsaXplSW5saW5lTGF5b3V0U3RhdGUoZ2xv
YmFsTGF5b3V0U3RhdGUpOwogfQogCiBJbmxpbmVMYXlvdXRSZXN1bHQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmxheW91dChjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0
cmFpbnRzLCBJbmxpbmVEYW1hZ2UqIGxpbmVEYW1hZ2UpCkBAIC0zMzMsNyArMzMzLDcgQEAgdm9p
ZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0RmxvYXRDb250ZW50T25seShjb25zdCBD
b25zdHJhaW50c0ZvcklubGluZUMKICAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNGbG9hdCgpKSB7
CiAgICAgICAgICAgICBhdXRvJiBmbG9hdEJveCA9IGlubGluZUl0ZW0ubGF5b3V0Qm94KCk7CiAK
LSAgICAgICAgICAgIGxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveChkb3duY2FzdDxF
bGVtZW50Qm94PihmbG9hdEJveCkpOworICAgICAgICAgICAgZm9ybWF0dGluZ1V0aWxzKCkubGF5
b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGRvd25jYXN0PEVsZW1lbnRCb3g+KGZsb2F0
Qm94KSk7CiAKICAgICAgICAgICAgIGF1dG8mIGZsb2F0Qm94R2VvbWV0cnkgPSBnZW9tZXRyeUZv
ckJveChmbG9hdEJveCk7CiAgICAgICAgICAgICBhdXRvIHN0YXRpY1Bvc2l0aW9uID0gTGF5b3V0
UG9pbnQgeyBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQsIGNvbnN0cmFpbnRz
LmxvZ2ljYWxUb3AoKSB9OwpAQCAtNDc1LDE1ICs0NzUsMTUgQEAgdm9pZCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JFbXB0eUlubGluZUNvbnRlbnQoY29u
c3QgQ28KICAgICBjcmVhdGVEaXNwbGF5Q29udGVudEZvcklubGluZUNvbnRlbnQobGluZUJveCwg
ZW1wdHlMaW5lQnJlYWtpbmdSZXN1bHQsIGNvbnN0cmFpbnRzLCBsYXlvdXRSZXN1bHQuZGlzcGxh
eUNvbnRlbnQpOwogfQogCi12b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojppbml0aWFsaXpl
SW5saW5lTGF5b3V0U3RhdGUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKQordm9pZCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZUlubGluZUxheW91dFN0YXRlKGNvbnN0
IExheW91dFN0YXRlJiBnbG9iYWxMYXlvdXRTdGF0ZSkKIHsKLSAgICBhdXRvJiBpbmxpbmVMYXlv
dXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CisgICAgYXV0byYgaW5saW5lTGF5b3V0U3Rh
dGUgPSBsYXlvdXRTdGF0ZSgpOwogCiAgICAgaWYgKGF1dG8gbGltaXRMaW5lc1ZhbHVlID0gcm9v
dCgpLnN0eWxlKCkuaHlwaGVuYXRpb25MaW1pdExpbmVzKCk7IGxpbWl0TGluZXNWYWx1ZSAhPSBS
ZW5kZXJTdHlsZTo6aW5pdGlhbEh5cGhlbmF0aW9uTGltaXRMaW5lcygpKQogICAgICAgICBpbmxp
bmVMYXlvdXRTdGF0ZS5zZXRIeXBoZW5hdGlvbkxpbWl0TGluZXMobGltaXRMaW5lc1ZhbHVlKTsK
ICAgICAvLyBGSVhNRTogUmVtb3ZlIHdoZW4gSUZDIHRha2VzIGNhcmUgb2YgcnVubmluZyBsYXlv
dXQgb24gaW5saW5lLWJsb2Nrcy4KICAgICBpbmxpbmVMYXlvdXRTdGF0ZS5zZXRTaG91bGROb3RT
eW50aGVzaXplSW5saW5lQmxvY2tCYXNlbGluZSgpOwotICAgIGlmIChsYXlvdXRTdGF0ZS5pblN0
YW5kYXJkc01vZGUoKSkKKyAgICBpZiAoZ2xvYmFsTGF5b3V0U3RhdGUuaW5TdGFuZGFyZHNNb2Rl
KCkpCiAgICAgICAgIGlubGluZUxheW91dFN0YXRlLnNldEluU3RhbmRhcmRzTW9kZSgpOwogfQog
CkBAIC01NDcsMTIgKzU0Nyw2IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnJlYnVp
bGRJbmxpbmVJdGVtTGlzdElmTmVlZGVkKElubGluZURhbWFnZSogbGluZURhCiAgICAgaW5saW5l
Q29udGVudENhY2hlLmNsZWFyTWF4aW11bUludHJpbnNpY1dpZHRoTGluZUNvbnRlbnQoKTsKIH0K
IAotdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250
ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gmIGJveCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiB3aWR0aENvbnN0cmFpbnQpCi17Ci0gICAgbV9nbG9iYWxMYXlvdXRTdGF0ZS5sYXlvdXRXaXRo
Rm9ybWF0dGluZ0NvbnRleHRGb3JCb3goYm94LCB3aWR0aENvbnN0cmFpbnQpOwotfQotCi0KIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5k
ZXggYWViYmRmNjJmMmEyLi5iOTU4NDIyYWNjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNzEsOCArNzEsNiBAQCBwdWJsaWM6CiAgICAg
SW5saW5lTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgeyByZXR1cm4gbV9pbmxpbmVMYXlvdXRT
dGF0ZTsgfQogICAgIGNvbnN0IElubGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW5saW5lTGF5b3V0U3RhdGU7IH0KIAotICAgIHZvaWQgbGF5b3V0V2l0aEZv
cm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gmLCBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IHdpZHRoQ29uc3RyYWludCA9IHsgfSk7Ci0KICAgICBlbnVtIGNsYXNzIEVzY2Fw
ZVJlYXNvbiB7CiAgICAgICAgIElua092ZXJmbG93TmVlZHNJbml0aWFsQ29udGluaW5nQmxvY2tG
b3JTdHJva2VXaWR0aAogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ1V0aWxzLmNwcAppbmRleCAzZDBiNGJiMjk4MDIuLjhjNzU1NzEzZDY5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
Rm9ybWF0dGluZ1V0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuY3BwCkBAIC00MSw4ICs0MSw5
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotSW5saW5lRm9y
bWF0dGluZ1V0aWxzOjpJbmxpbmVGb3JtYXR0aW5nVXRpbHMoY29uc3QgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQmIGlubGluZUZvcm1hdHRpbmdDb250ZXh0KQorSW5saW5lRm9ybWF0dGluZ1V0aWxz
OjpJbmxpbmVGb3JtYXR0aW5nVXRpbHMoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlu
bGluZUZvcm1hdHRpbmdDb250ZXh0LCBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCiAg
ICAgOiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0KGlubGluZUZvcm1hdHRpbmdDb250ZXh0KQor
ICAgICwgbV9nbG9iYWxMYXlvdXRTdGF0ZShsYXlvdXRTdGF0ZSkKIHsKIH0KIApAQCAtMTIwLDcg
KzEyMSw3IEBAIGJvb2wgSW5saW5lRm9ybWF0dGluZ1V0aWxzOjppbmxpbmVMZXZlbEJveEFmZmVj
dHNMaW5lQm94KGNvbnN0IElubGluZUxldmVsQm94JiBpCiAgICAgaWYgKGlubGluZUxldmVsQm94
LmlzTGlzdE1hcmtlcigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoaW5saW5lTGV2
ZWxCb3guaXNJbmxpbmVCb3goKSkKLSAgICAgICAgcmV0dXJuIGxheW91dFN0YXRlKCkuaW5TdGFu
ZGFyZHNNb2RlKCkgPyB0cnVlIDogZm9ybWF0dGluZ0NvbnRleHQoKS5xdWlya3MoKS5pbmxpbmVC
b3hBZmZlY3RzTGluZUJveChpbmxpbmVMZXZlbEJveCk7CisgICAgICAgIHJldHVybiBmb3JtYXR0
aW5nQ29udGV4dCgpLmxheW91dFN0YXRlKCkuaW5TdGFuZGFyZHNNb2RlKCkgPyB0cnVlIDogZm9y
bWF0dGluZ0NvbnRleHQoKS5xdWlya3MoKS5pbmxpbmVCb3hBZmZlY3RzTGluZUJveChpbmxpbmVM
ZXZlbEJveCk7CiAgICAgaWYgKGlubGluZUxldmVsQm94LmlzQXRvbWljSW5saW5lQm94KCkpCiAg
ICAgICAgIHJldHVybiAhaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm94KCkuaXNSdWJ5QW5ub3RhdGlv
bkJveCgpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTE4OCw3ICsxODksNyBAQCBJbmxpbmVMYXlv
dXRVbml0IElubGluZUZvcm1hdHRpbmdVdGlsczo6Y29tcHV0ZWRUZXh0SW5kZW50KElzSW50cmlu
c2ljV2lkdGhNb2RlCiAKIElubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ1V0aWxzOjpp
bml0aWFsTGluZUhlaWdodChib29sIGlzRmlyc3RMaW5lKSBjb25zdAogewotICAgIGlmIChsYXlv
dXRTdGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpKQorICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dCgp
LmxheW91dFN0YXRlKCkuaW5TdGFuZGFyZHNNb2RlKCkpCiAgICAgICAgIHJldHVybiBpc0ZpcnN0
TGluZSA/IGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLmZpcnN0TGluZVN0eWxlKCkuY29tcHV0
ZWRMaW5lSGVpZ2h0KCkgOiBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKS5zdHlsZSgpLmNvbXB1
dGVkTGluZUhlaWdodCgpOwogICAgIHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLnF1aXJrcygp
LmluaXRpYWxMaW5lSGVpZ2h0KCk7CiB9CkBAIC02MDgsOSArNjA5LDE0IEBAIExpbmVFbmRpbmdF
bGxpcHNpc1BvbGljeSBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmxpbmVFbmRpbmdFbGxpcHNpc1Bv
bGljeShjb25zdCBSCiAgICAgcmV0dXJuIExpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6Tm9FbGxp
cHNpczsKIH0KIAotY29uc3QgSW5saW5lTGF5b3V0U3RhdGUmIElubGluZUZvcm1hdHRpbmdVdGls
czo6bGF5b3V0U3RhdGUoKSBjb25zdAordm9pZCBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmxheW91
dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveChjb25zdCBFbGVtZW50Qm94JiBib3gsIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gd2lkdGhDb25zdHJhaW50KSBjb25zdAogewotICAgIHJldHVy
biBmb3JtYXR0aW5nQ29udGV4dCgpLmxheW91dFN0YXRlKCk7CisgICAgbV9nbG9iYWxMYXlvdXRT
dGF0ZS5sYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3goYm94LCB3aWR0aENvbnN0cmFp
bnQpOworfQorCitzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gSW5saW5lRm9ybWF0
dGluZ1V0aWxzOjpwcmVmZXJyZWRXaWR0aFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveChjb25z
dCBFbGVtZW50Qm94JiBib3gpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ2xvYmFsTGF5b3V0U3Rh
dGUucHJlZmVycmVkV2lkdGhXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3goYm94KTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuaAppbmRleCBmNGUx
YTVmM2VhMTMuLjQ1OGZjMTAzOTc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9y
bWF0dGluZ1V0aWxzLmgKQEAgLTMzLDEwICszMywxMSBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIGNs
YXNzIEZsb2F0aW5nQ29udGV4dDsKIGNsYXNzIElubGluZUZvcm1hdHRpbmdDb250ZXh0OwogY2xh
c3MgSW5saW5lTGV2ZWxCb3g7CitjbGFzcyBMYXlvdXRTdGF0ZTsKIAogY2xhc3MgSW5saW5lRm9y
bWF0dGluZ1V0aWxzIHsKIHB1YmxpYzoKLSAgICBJbmxpbmVGb3JtYXR0aW5nVXRpbHMoY29uc3Qg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQmKTsKKyAgICBJbmxpbmVGb3JtYXR0aW5nVXRpbHMoY29u
c3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmLCBjb25zdCBMYXlvdXRTdGF0ZSYpOwogCiAgICAg
SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yTmV4dExpbmUoY29uc3QgTGluZUxheW91dFJl
c3VsdCYsIGNvbnN0IElubGluZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCwgY29uc3QgRmxvYXRpbmdD
b250ZXh0JikgY29uc3Q7CiAKQEAgLTY4LDE1ICs2OSwxOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgTGluZUVuZGluZ0VsbGlwc2lzUG9saWN5IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeShjb25z
dCBSZW5kZXJTdHlsZSYgcm9vdFN0eWxlLCBzaXplX3QgbnVtYmVyT2ZMaW5lc1dpdGhJbmxpbmVD
b250ZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbnVtYmVyT2ZWaXNpYmxlTGluZXNBbGxvd2Vk
KTsKIAorICAgIHZvaWQgbGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IEVs
ZW1lbnRCb3gmLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHdpZHRoQ29uc3RyYWludCA9IHsg
fSkgY29uc3Q7CisgICAgc3RkOjpwYWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IHByZWZlcnJl
ZFdpZHRoV2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gmKSBjb25z
dDsKKwogcHJpdmF0ZToKICAgICBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMZWZ0QWZ0ZXJMYXN0
TGluZShjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmLCBzdGQ6Om9wdGlvbmFsPElu
bGluZUxheW91dFVuaXQ+IGxhc3RMaW5lTG9naWNhbEJvdHRvbSwgY29uc3QgRmxvYXRpbmdDb250
ZXh0JikgY29uc3Q7CiAgICAgYm9vbCBpc0F0U29mdFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxp
bmVJdGVtJiBwcmV2aW91cywgY29uc3QgSW5saW5lSXRlbSYgbmV4dCkgY29uc3Q7CiAKLSAgICBj
b25zdCBJbmxpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSBjb25zdDsKICAgICBjb25zdCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVy
biBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0OyB9CiAKIHByaXZhdGU6CiAgICAgY29uc3QgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQmIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7CisgICAgY29u
c3QgTGF5b3V0U3RhdGUmIG1fZ2xvYmFsTGF5b3V0U3RhdGU7CiAKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHAKaW5kZXgg
NWMxYjhlMDQ4Nzk5Li5hZmUxMzNmOGE3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWdu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwCkBAIC0zNiw3ICszNiw2IEBAIG5h
bWVzcGFjZSBMYXlvdXQgewogCiBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpMaW5lQm94VmVydGlj
YWxBbGlnbmVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCkKICAgICA6IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQoaW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQpCi0gICAgLCBtX2lubGluZUZvcm1hdHRpbmdVdGlscyhpbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJv
eFZlcnRpY2FsQWxpZ25lci5oCmluZGV4IDk4Yzc0YmJkZDgyZC4uZTE0NWRkZDAzOWUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5o
CkBAIC01NiwxNCArNTYsMTMgQEAgcHJpdmF0ZToKICAgICBJbmxpbmVMYXlvdXRVbml0IGFkanVz
dEZvckFubm90YXRpb25JZk5lZWRlZChMaW5lQm94JiwgSW5saW5lTGF5b3V0VW5pdCBsaW5lQm94
SGVpZ2h0KSBjb25zdDsKICAgICBJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5kRGVzY2VudCBsYXlv
dXRCb3VuZHNGb3JJbmxpbmVCb3hTdWJ0cmVlKGNvbnN0IExpbmVCb3g6OklubGluZUxldmVsQm94
TGlzdCYgbm9uUm9vdElubGluZUxldmVsQm94ZXMsIHNpemVfdCBpbmxpbmVCb3hJbmRleCkgY29u
c3Q7CiAKLSAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nVXRpbHMmIGZvcm1hdHRpbmdVdGlscygp
IGNvbnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ1V0aWxzOyB9CisgICAgY29uc3QgSW5s
aW5lRm9ybWF0dGluZ1V0aWxzJiBmb3JtYXR0aW5nVXRpbHMoKSBjb25zdCB7IHJldHVybiBmb3Jt
YXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdVdGlscygpOyB9CiAgICAgY29uc3QgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDsgfQogICAgIGNvbnN0IEVsZW1lbnRCb3gmIHJvb3RCb3goKSBj
b25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKTsgfQogICAgIGNvbnN0IElu
bGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGZvcm1hdHRpbmdD
b250ZXh0KCkubGF5b3V0U3RhdGUoKTsgfQogCiBwcml2YXRlOgogICAgIGNvbnN0IElubGluZUZv
cm1hdHRpbmdDb250ZXh0JiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0OwotICAgIGNvbnN0IElu
bGluZUZvcm1hdHRpbmdVdGlscyBtX2lubGluZUZvcm1hdHRpbmdVdGlsczsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA4N2Y4OTRlNTY5MTQu
LjkwNGIxMDk5ZTNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNw
cApAQCAtNjYyLDcgKzY2Miw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmNhbmRpZGF0ZUNvbnRlbnRG
b3JMaW5lKExpbmVDYW5kaWRhdGUmIGxpbmVDYW5kaWRhdGUsIHNpemVfdCBjCiAgICAgICAgIGlm
IChuZWVkc0xheW91dCkgewogICAgICAgICAgICAgLy8gRklYTUU6IEludHJpbnNpYyB3aWR0aCBt
b2RlIHNob3VsZCBjYWxsIGludG8gdGhlIGludHJpbnNpYyB3aWR0aCBjb2RlcGF0aC4gQ3VycmVu
dGx5IHdlIG9ubHkgZ2V0IGhlcmUgd2hlbiBib3ggaGFzIGZpeGVkIHdpZHRoIChtZWFuaW5nIG5v
IG5lZWQgdG8gcnVuIGludHJpbnNpYyB3aWR0aCBvbiB0aGUgYm94KS4KICAgICAgICAgICAgIGlm
ICghaXNJbkludHJpbnNpY1dpZHRoTW9kZSgpKQotICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdD
b250ZXh0KCkubGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGRvd25jYXN0PEVsZW1l
bnRCb3g+KGlubGluZUl0ZW0ubGF5b3V0Qm94KCkpKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0
aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdVdGlscygpLmxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4
dEZvckJveChkb3duY2FzdDxFbGVtZW50Qm94PihpbmxpbmVJdGVtLmxheW91dEJveCgpKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoaW5saW5lSXRlbS5pc0Zsb2F0KCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3J1Ynkv
UnVieUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA2
OWM2ODgzNTM5YWYuLmQzNjg4NTk1MTQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvcnVieS9SdWJ5Rm9ybWF0dGluZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L3J1YnkvUnVieUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIElubGlu
ZUxheW91dFVuaXQgUnVieUZvcm1hdHRpbmdDb250ZXh0Ojphbm5vdGF0aW9uQm94TG9naWNhbFdp
ZHRoKGNvbnN0IEJveCYgcnViCiAgICAgaWYgKCFhbm5vdGF0aW9uQm94KQogICAgICAgICByZXR1
cm4geyB9OwogCi0gICAgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGF5b3V0V2l0aEZvcm1hdHRp
bmdDb250ZXh0Rm9yQm94KCphbm5vdGF0aW9uQm94KTsKKyAgICBpbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5mb3JtYXR0aW5nVXRpbHMoKS5sYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3go
KmFubm90YXRpb25Cb3gpOwogCiAgICAgcmV0dXJuIGlubGluZUZvcm1hdHRpbmdDb250ZXh0Lmdl
b21ldHJ5Rm9yQm94KCphbm5vdGF0aW9uQm94KS5tYXJnaW5Cb3hXaWR0aCgpOwogfQpAQCAtMjc4
LDcgKzI3OCw3IEBAIHNpemVfdCBSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6OmFwcGx5UnVieUFsaWdu
T25CYXNlQ29udGVudChzaXplX3QgcnVieUJhc2VTdGFydCwKICAgICBpZiAoIWFubm90YXRpb25C
b3gpCiAgICAgICAgIHJldHVybiBydWJ5QmFzZVN0YXJ0ICsgMTsKIAotICAgIGlubGluZUZvcm1h
dHRpbmdDb250ZXh0LmxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveCgqYW5ub3RhdGlv
bkJveCk7CisgICAgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQuZm9ybWF0dGluZ1V0aWxzKCkubGF5
b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KCphbm5vdGF0aW9uQm94KTsKIAogICAgIGF1
dG8gYW5ub3RhdGlvbkJveExvZ2ljYWxXaWR0aCA9IElubGluZUxheW91dFVuaXQgeyBpbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveCgqYW5ub3RhdGlvbkJveCkubWFyZ2luQm94
V2lkdGgoKSB9OwogICAgIGF1dG8gYmFzZUNvbnRlbnRMb2dpY2FsV2lkdGggPSBydW5zW3J1YnlC
YXNlRW5kXS5sb2dpY2FsTGVmdCgpIC0gcnVuc1tydWJ5QmFzZVN0YXJ0XS5sb2dpY2FsUmlnaHQo
KTsKQEAgLTM4Niw3ICszODYsNyBAQCBJbmxpbmVMYXlvdXRTaXplIFJ1YnlGb3JtYXR0aW5nQ29u
dGV4dDo6c2l6ZUFubm90YXRpb25Cb3goY29uc3QgQm94JiBydWJ5QmFzZUxheQogICAgICAgICAv
LyBMYXlvdXQgdGhlIGFubm90YXRpb24gYm94IGFnYWluIGlmIHdlIGRlY2lkZWQgdG8gY2hhbmdl
IGl0cyBzaXplLgogICAgICAgICBhdXRvIG5ld1dpZHRoID0gc3RkOjptYXgocnVieUJhc2VNYXJn
aW5Cb3hMb2dpY2FsUmVjdC53aWR0aCgpLCBhbm5vdGF0aW9uQm94TG9naWNhbEdlb21ldHJ5Lm1h
cmdpbkJveFdpZHRoKCkpOwogICAgICAgICBpZiAobmV3V2lkdGggIT0gYW5ub3RhdGlvbkJveExv
Z2ljYWxHZW9tZXRyeS5tYXJnaW5Cb3hXaWR0aCgpKQotICAgICAgICAgICAgaW5saW5lRm9ybWF0
dGluZ0NvbnRleHQubGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KCphbm5vdGF0aW9u
Qm94LCBuZXdXaWR0aCk7CisgICAgICAgICAgICBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5mb3Jt
YXR0aW5nVXRpbHMoKS5sYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3goKmFubm90YXRp
b25Cb3gsIG5ld1dpZHRoKTsKIAogICAgICAgICByZXR1cm4geyBuZXdXaWR0aCAtIGFubm90YXRp
b25Cb3hMb2dpY2FsR2VvbWV0cnkuaG9yaXpvbnRhbE1hcmdpbkJvcmRlckFuZFBhZGRpbmcoKSwg
YW5ub3RhdGlvbkJveExvZ2ljYWxHZW9tZXRyeS5jb250ZW50Qm94SGVpZ2h0KCkgfTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5j
cHAKaW5kZXggZWQ3MTExYjY3OGQ0Li5mNWEyZTIwOGFhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250
ZXh0TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5jcHAKQEAgLTUwLDUgKzUwLDEx
IEBAIHZvaWQgbGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IExheW91dDo6
RWxlbWVudEJveCYgYm94LCBzdGQ6Om9wdGlvCiAgICAgdXBkYXRlci51cGRhdGVHZW9tZXRyeUFm
dGVyTGF5b3V0KGJveCk7CiB9CiAKK3N0ZDo6cGFpcjxMYXlvdXRVbml0LCBMYXlvdXRVbml0PiBw
cmVmZXJyZWRMb2dpY2FsV2lkdGhzKGNvbnN0IExheW91dDo6RWxlbWVudEJveCYgYm94KQorewor
ICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyQm94PigqYm94LnJlbmRlcmVyRm9y
SW50ZWdyYXRpb24oKSk7CisgICAgcmV0dXJuIHsgcmVuZGVyZXIubWluUHJlZmVycmVkTG9naWNh
bFdpZHRoKCksIHJlbmRlcmVyLm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIH07Cit9CisKIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5o
CmluZGV4IGEyN2ViZmE1ZWRkNS4uMTgyZTVjMWJmOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4
dExheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xh
c3MgTGF5b3V0U3RhdGU7CiBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCiB2b2lkIGxh
eW91dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveChjb25zdCBMYXlvdXQ6OkVsZW1lbnRCb3gm
LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHdpZHRoQ29uc3RyYWludCwgTGF5b3V0OjpMYXlv
dXRTdGF0ZSYpOworc3RkOjpwYWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IHByZWZlcnJlZExv
Z2ljYWxXaWR0aHMoY29uc3QgTGF5b3V0OjpFbGVtZW50Qm94Jik7CiAKIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNw
cAppbmRleCA3MzQzNmI5Njg3ZTMuLjM5OTliMDg4MzkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtNTc5
LDcgKzU3OSw3IEBAIHZvaWQgcHJpbnRMYXlvdXRUcmVlRm9yTGl2ZURvY3VtZW50cygpCiAgICAg
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gb3V0cHV0IGdlb21ldHJ5IHdpdGhv
dXQgbGF5b3V0IGNvbnRleHQuCiAgICAgICAgIGF1dG8mIHJlbmRlclZpZXcgPSAqZG9jdW1lbnQt
PnJlbmRlclZpZXcoKTsKICAgICAgICAgYXV0byBsYXlvdXRUcmVlID0gVHJlZUJ1aWxkZXI6OmJ1
aWxkTGF5b3V0VHJlZShyZW5kZXJWaWV3KTsKLSAgICAgICAgYXV0byBsYXlvdXRTdGF0ZSA9IExh
eW91dFN0YXRlIHsgZG9jdW1lbnQsIGxheW91dFRyZWUtPnJvb3QoKSwgTGF5b3V0OjpMYXlvdXRT
dGF0ZTo6VHlwZTo6U2Vjb25kYXJ5LCB7IH0gfTsKKyAgICAgICAgYXV0byBsYXlvdXRTdGF0ZSA9
IExheW91dFN0YXRlIHsgZG9jdW1lbnQsIGxheW91dFRyZWUtPnJvb3QoKSwgTGF5b3V0OjpMYXlv
dXRTdGF0ZTo6VHlwZTo6U2Vjb25kYXJ5LCB7IH0sIHsgfSB9OwogCiAgICAgICAgIExheW91dENv
bnRleHQobGF5b3V0U3RhdGUpLmxheW91dChyZW5kZXJWaWV3LnNpemUoKSk7CiAgICAgICAgIHNo
b3dMYXlvdXRUcmVlKGRvd25jYXN0PEluaXRpYWxDb250YWluaW5nQmxvY2s+KGxheW91dFN0YXRl
LnJvb3QoKSksICZsYXlvdXRTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKaW5kZXggM2ZhY2IxY2Y5MmMwLi5lMjFjN2RkZTExMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUmVuZGVyVmlldzo6UmVu
ZGVyVmlldyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBS
ZW5kZXJCbG9ja0Zsb3coVHlwZTo6VmlldywgZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAg
ICwgbV9mcmFtZVZpZXcoKmRvY3VtZW50LnZpZXcoKSkKICAgICAsIG1faW5pdGlhbENvbnRhaW5p
bmdCbG9jayhtYWtlVW5pcXVlUmVmPExheW91dDo6SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4oUmVu
ZGVyU3R5bGU6OmNsb25lKHRoaXMtPnN0eWxlKCkpKSkKLSAgICAsIG1fbGF5b3V0U3RhdGUobWFr
ZVVuaXF1ZVJlZjxMYXlvdXQ6OkxheW91dFN0YXRlPihkb2N1bWVudCwgKm1faW5pdGlhbENvbnRh
aW5pbmdCbG9jaywgTGF5b3V0OjpMYXlvdXRTdGF0ZTo6VHlwZTo6UHJpbWFyeSwgTGF5b3V0SW50
ZWdyYXRpb246OmxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveCkpCisgICAgLCBtX2xh
eW91dFN0YXRlKG1ha2VVbmlxdWVSZWY8TGF5b3V0OjpMYXlvdXRTdGF0ZT4oZG9jdW1lbnQsICpt
X2luaXRpYWxDb250YWluaW5nQmxvY2ssIExheW91dDo6TGF5b3V0U3RhdGU6OlR5cGU6OlByaW1h
cnksIExheW91dEludGVncmF0aW9uOjpsYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3gs
IExheW91dEludGVncmF0aW9uOjpwcmVmZXJyZWRMb2dpY2FsV2lkdGhzKSkKICAgICAsIG1fc2Vs
ZWN0aW9uKCp0aGlzKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZmluZCBhIHdheSB0byBl
bmZvcmNlIHRoaXMgYXQgY29tcGlsZSB0aW1lLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>472288</attachid>
            <date>2024-08-25 08:28:21 -0700</date>
            <delta_ts>2024-08-26 07:16:36 -0700</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-278612-20240825082820.patch</filename>
            <type>text/plain</type>
            <size>42391</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA4YjUzOTljNmIxYjFjMzQwNTIzNTUxNTBkZGYwMTUyN2YzNmNiOTRjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgMjQgQXVnIDIwMjQgMTU6MTA6MDMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbTEZDXVtJ
bnRlZ3JhdGlvbl0gQWRkIHN1cHBvcnQgZm9yIGNhbGxpbmcKIG1pbi9tYXhQcmVmZXJyZWRMb2dp
Y2FsV2lkdGggZnJvbSBpbnNpZGUgTEZDCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mjc4NjEyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkl0J3MgZXNzZW50
aWFsIGZvciBmbGV4IGxheW91dCB0byBiZSBhYmxlIHRvIGNhbGwgbWluL21heCBjb250ZW50IHdp
ZHRocyBvbiBmbGV4IGl0ZW1zLgoKKE1vdmUgaW50ZWdyYXRpb24gZnVuY3Rpb25zIHRvIGEgZGVk
aWNhdGVkIHV0aWwgY2xhc3MgKHdoaWxlIGhhdmluZyBvbmUgInV0aWxpdHkiIGZ1bmN0aW9uIGlz
IGZpbmUgb24gdGhlIGZvcm1hdHRpbmcgY29udGV4dCBjbGFzcywgbm93IHdpdGggbWluL21heCwg
aXQgbWF5IGJlIGEgYml0IGNvbmZ1c2luZyB0byBzZWUgc2VlbWluZ2x5IGR1cGxpY2F0ZWQgZnVu
Y3Rpb25hbGl0eSAtd2hlcmUgRm9ybWF0dGluZ0NvbnRleHQgaGFzIGxheW91dC9taW4vbWF4IGZv
ciBpdHMgb3duIHN1YnRyZWUpKQoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUu
Y3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUpOgooV2ViQ29y
ZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94
IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0U3RhdGU6OnByZWZlcnJlZFdpZHRoV2l0
aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0
U3RhdGU6OmxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveCk6IERlbGV0ZWQuCiogU291
cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nVXRpbHMuY3BwOgooV2ViQ29y
ZTo6TGF5b3V0OjpGbGV4Rm9ybWF0dGluZ1V0aWxzOjpGbGV4Rm9ybWF0dGluZ1V0aWxzKToKKFdl
YkNvcmU6OkxheW91dDo6RmxleEZvcm1hdHRpbmdVdGlsczo6bGF5b3V0V2l0aEZvcm1hdHRpbmdD
b250ZXh0Rm9yQm94IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6RmxleEZvcm1hdHRpbmdVdGls
czo6cHJlZmVycmVkV2lkdGhXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3ggY29uc3QpOgoqIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGlu
Z1V0aWxzLmg6CihXZWJDb3JlOjpMYXlvdXQ6OkZsZXhGb3JtYXR0aW5nVXRpbHM6OmxheW91dFdp
dGhGb3JtYXR0aW5nQ29udGV4dEZvckJveCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9mbGV4L0xvZ2ljYWxGbGV4SXRlbS5oOgooV2ViQ29yZTo6TGF5b3V0OjpM
b2dpY2FsRmxleEl0ZW06Om1haW5BeGlzKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CihXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGbG9h
dENvbnRlbnRPbmx5KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmluaXRpYWxpemVJbmxpbmVMYXlvdXRTdGF0ZSk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpsYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3gpOiBEZWxl
dGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0Lmg6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpsYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3gpOiBEZWxldGVkLgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdVdGlscy5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdVdGls
czo6SW5saW5lRm9ybWF0dGluZ1V0aWxzKToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ1V0aWxzOjppbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94IGNvbnN0KToKKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1V0aWxzOjppbml0aWFsTGluZUhlaWdodCBjb25zdCk6
CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdVdGlsczo6bGF5b3V0V2l0aEZvcm1h
dHRpbmdDb250ZXh0Rm9yQm94IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ1V0aWxzOjpwcmVmZXJyZWRXaWR0aFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveCBjb25z
dCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdVdGlsczo6bGF5b3V0U3RhdGUg
Y29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5oOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nVXRpbHM6OmxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveCk6Ciog
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZUJveFZlcnRpY2FsQWxpZ25lci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNh
bEFsaWduZXI6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXIpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIu
aDoKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Zm9ybWF0dGluZ1V0
aWxzIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVy
OjpjYW5kaWRhdGVDb250ZW50Rm9yTGluZSk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvcnVieS9SdWJ5Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2Vi
Q29yZTo6TGF5b3V0OjpSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6OmFubm90YXRpb25Cb3hMb2dpY2Fs
V2lkdGgpOgooV2ViQ29yZTo6TGF5b3V0OjpSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6OmFwcGx5UnVi
eUFsaWduT25CYXNlQ29udGVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlGb3JtYXR0aW5nQ29u
dGV4dDo6c2l6ZUFubm90YXRpb25Cb3gpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LmNwcDoKKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpwcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29u
dGV4dExheW91dC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRy
ZWVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6cHJpbnRMYXlvdXRUcmVlRm9yTGl2ZURv
Y3VtZW50cyk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgooV2Vi
Q29yZTo6UmVuZGVyVmlldzo6UmVuZGVyVmlldyk6Ci0tLQogU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIHwgIDYgKysrCiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5
b3V0U3RhdGUuY3BwICAgICAgICAgfCAxMiArKystLQogU291cmNlL1dlYkNvcmUvbGF5b3V0L0xh
eW91dFN0YXRlLmggICAgICAgICAgIHwgIDcgKystCiAuLi4vZmxleC9GbGV4Rm9ybWF0dGluZ0Nv
bnRleHQuY3BwICAgICAgICAgICAgfCAxMiArKy0tLQogLi4uL2ZsZXgvRmxleEZvcm1hdHRpbmdD
b250ZXh0LmggICAgICAgICAgICAgIHwgIDcgKy0tCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2Zs
ZXgvRmxleExheW91dC5jcHAgICAgfCAxNiArKy0tLS0KIC4uLi9mb3JtYXR0aW5nQ29udGV4dHMv
ZmxleC9GbGV4TGF5b3V0LmggICAgICB8ICAyICstCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmNwcCAgICAgICAgfCAyNiArKysrLS0tLS0tCiAuLi4vaW5saW5lL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmggICAgICAgICAgfCAgNiArKy0KIC4uLi9pbmxpbmUvSW5saW5lRm9y
bWF0dGluZ1V0aWxzLmNwcCAgICAgICAgICB8ICA5ICstLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9y
bWF0dGluZ1V0aWxzLmggICAgICAgICAgICB8ICAyIC0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJv
eFZlcnRpY2FsQWxpZ25lci5jcHAgICB8ICAxIC0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJveFZl
cnRpY2FsQWxpZ25lci5oICAgICB8ICAzICstCiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVy
LmNwcCAgICAgICAgICAgICAgfCAgMiArLQogLi4uL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5n
Q29udGV4dC5jcHAgICAgIHwgIDYgKy0tCiAuLi55b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29u
dGV4dExheW91dC5jcHAgfCAgNiArKysKIC4uLkxheW91dEludGVncmF0aW9uRm9ybWF0dGluZ0Nv
bnRleHRMYXlvdXQuaCB8ICAxICsKIC4uLi9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblV0
aWxzLmNwcCAgICB8IDUxICsrKysrKysrKysrKysrKysrKysKIC4uLi9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvblV0aWxzLmggICAgICB8IDQ2ICsrKysrKysrKysrKysrKysrCiAuLi4vbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwICAgfCAgMiArLQogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwICAgICAgIHwgIDIgKy0KIDIyIGZpbGVzIGNo
YW5nZWQsIDE2NSBpbnNlcnRpb25zKCspLCA2MSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25V
dGlscy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25VdGlscy5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA1Mzg4NDdl
MzZmMmIuLjNiMzc1YTQ0NGI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE4NjEsNiArMTg2MSw3IEBA
IGxheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVw
ZGF0ZXIuY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNw
cAogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCiBsYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5j
cHAKK2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblV0aWxzLmNwcAogbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94R2Vv
bWV0cnkuY3BwCiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRFbGVtZW50Qm94LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJk
ZmExYmMyZGJmNC4uNWY4Y2YyOWYyZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01Mzc5LDYgKzUzNzksNyBAQAogCQlERDMw
OEEyRDJBODJGNjg0MDAwQTI2ODcgLyogQWJzdHJhY3RMaW5lQnVpbGRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQzMDhBMkMyQTgyRjY4NDAwMEEy
Njg3IC8qIEFic3RyYWN0TGluZUJ1aWxkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlERDVBQ0ZEODJCMTREQURFMDBCMzZDNTcgLyogTGF5b3V0
SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERENUFDRkQ3MkIxNERBREUwMEIzNkM1NyAvKiBMYXlvdXRJ
bnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCURENzYzQkIyMDk5MkMyQzkwMDc0MEI4RSAvKiBsaWJ4
bWwyLmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gREQ3NjNCQjEwOTkyQzJDOTAwNzQwQjhFIC8qIGxpYnhtbDIuZHlsaWIgKi87IH07CisJCURE
NzZEMTUyMkM3QjYzQkUwMERGREQ3MCAvKiBMYXlvdXRJbnRlZ3JhdGlvblV0aWxzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDc2RDE1MTJDN0I2M0JF
MDBERkRENzAgLyogTGF5b3V0SW50ZWdyYXRpb25VdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUREN0NERjI1MEEyM0NGOTgwMDA2OTkyOCAv
KiBDU1NVbmtub3duUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTgwRTZDQ0UwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1Vua25vd25SdWxlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREQ4QTMwQjQy
OTFERkM4RjAwQUQ1MzdDIC8qIEJsb2NrTGF5b3V0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREOEEzMEIzMjkxREZDOEYwMEFENTM3QyAvKiBC
bG9ja0xheW91dFN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJREQ4RTRFQkIyQjlGOTUyNTAwMTA4RDdBIC8qIFRleHRCcmVha2luZ1Bvc2l0
aW9uQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gREQ4RTRFQkEyQjlGOTUyNTAwMTA4RDdBIC8qIFRleHRCcmVha2luZ1Bvc2l0aW9uQ29udGV4
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
ODkzNiw2ICsxODkzNyw4IEBACiAJCURENUFDRkQ2MkIxNERBRDYwMEIzNkM1NyAvKiBMYXlvdXRJ
bnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlv
dXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCURENUFDRkQ3MkIxNERBREUwMEIzNkM1NyAvKiBMYXlvdXRJbnRlZ3JhdGlvbkJv
eEdlb21ldHJ5VXBkYXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlv
dXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlERDc2M0JCMTA5OTJDMkM5MDA3NDBCOEUgLyogbGlieG1sMi5keWxpYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNo
LW8uZHlsaWIiOyBuYW1lID0gbGlieG1sMi5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYnhtbDIu
ZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CisJCURENzZEMTUwMkM3QjYzQjYw
MERGREQ3MCAvKiBMYXlvdXRJbnRlZ3JhdGlvblV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExheW91dEludGVncmF0aW9uVXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlERDc2RDE1MTJDN0I2M0JFMDBERkRENzAgLyogTGF5b3V0SW50ZWdyYXRpb25VdGlscy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvblV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUREOEEzMEIzMjkxREZDOEYwMEFENTM3QyAvKiBCbG9ja0xheW91dFN0YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NrTGF5b3V0U3RhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQ4RTRFQkEyQjlGOTUyNTAwMTA4RDdBIC8q
IFRleHRCcmVha2luZ1Bvc2l0aW9uQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUZXh0QnJlYWtpbmdQb3NpdGlvbkNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREQ5MUEzMTUyQjg5ODlEOTAwMzE3QUY3IC8qIFRleHRCcmVha2luZ1Bvc2l0
aW9uQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEJyZWFraW5nUG9zaXRpb25DYWNo
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjAxMyw2ICszNjAxNiw4IEBA
CiAJCQkJRTQwM0I3QTEyNTFCMTE5MzAwMTlFODAwIC8qIExheW91dEludGVncmF0aW9uQ292ZXJh
Z2UuaCAqLywKIAkJCQlFNDNFNjRGNTJDNjM2NUU1MDA2MEY0OTMgLyogTGF5b3V0SW50ZWdyYXRp
b25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5jcHAgKi8sCiAJCQkJRTQzRTY0RjYyQzYzNjVFRTAw
NjBGNDkzIC8qIExheW91dEludGVncmF0aW9uRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQuaCAqLywK
KwkJCQlERDc2RDE1MDJDN0I2M0I2MDBERkRENzAgLyogTGF5b3V0SW50ZWdyYXRpb25VdGlscy5j
cHAgKi8sCisJCQkJREQ3NkQxNTEyQzdCNjNCRTAwREZERDcwIC8qIExheW91dEludGVncmF0aW9u
VXRpbHMuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaW50ZWdyYXRpb247CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtNDEwNzYsNiArNDEwODEsNyBAQAogCQkJCTZGQ0U2OTgwMjhCN0RE
MzkwMDk1NjQwMSAvKiBMYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRQYWludGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFNEFCQUJERDIzNjA4OEZFMDBGQTQzNDUgLyogTGF5b3V0SW50ZWdy
YXRpb25MaW5lTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDAzQjdBMzI1MUIxMUMxMDAx
OUU4MDAgLyogTGF5b3V0SW50ZWdyYXRpb25QYWdpbmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlERDc2RDE1MjJDN0I2M0JFMDBERkRENzAgLyogTGF5b3V0SW50ZWdyYXRpb25VdGlscy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTEzMTBDRjQyMEJBNEEzRDAwNjVBOEQwIC8qIExheW91dEl0ZXJh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFENzJGNjE1RkU2OTUzMDBDNEMwN0UgLyogTGF5
b3V0TWlsZXN0b25lLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDVFQUM4NzJBOEMxQTY1MDA5Qjk4
NkUgLyogTGF5b3V0TWlsZXN0b25lcy5zZXJpYWxpemF0aW9uLmluIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAppbmRleCBkOWIzMzZjNDUzZTAuLjE2Y2M5
ODhjYzMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCkBAIC00MiwxMSAr
NDIsMTIgQEAgbmFtZXNwYWNlIExheW91dCB7CiAKIFdURl9NQUtFX1RaT05FX09SX0lTT19BTExP
Q0FURURfSU1QTChMYXlvdXRTdGF0ZSk7CiAKLUxheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShjb25z
dCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEVsZW1lbnRCb3gmIHJvb3RDb250YWluZXIsIFR5
cGUgdHlwZSwgRm9ybWF0dGluZ0NvbnRleHRMYXlvdXRGdW5jdGlvbiYmIGZvcm1hdHRpbmdDb250
ZXh0TGF5b3V0RnVuY3Rpb24pCitMYXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUoY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBFbGVtZW50Qm94JiByb290Q29udGFpbmVyLCBUeXBlIHR5cGUs
IEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0RnVuY3Rpb24mJiBmb3JtYXR0aW5nQ29udGV4dExheW91
dEZ1bmN0aW9uLCBGb3JtYXR0aW5nQ29udGV4dFByZWZlcnJlZFdpZHRoc0Z1bmN0aW9uJiYgZm9y
bWF0dGluZ0NvbnRleHRQcmVmZXJyZWRXaWR0aHNGdW5jdGlvbikKICAgICA6IG1fdHlwZSh0eXBl
KQogICAgICwgbV9yb290Q29udGFpbmVyKHJvb3RDb250YWluZXIpCiAgICAgLCBtX3NlY3VyaXR5
T3JpZ2luKGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpCiAgICAgLCBtX2Zvcm1hdHRpbmdDb250
ZXh0TGF5b3V0RnVuY3Rpb24oV1RGTW92ZShmb3JtYXR0aW5nQ29udGV4dExheW91dEZ1bmN0aW9u
KSkKKyAgICAsIG1fZm9ybWF0dGluZ0NvbnRleHRQcmVmZXJyZWRXaWR0aHNGdW5jdGlvbihXVEZN
b3ZlKGZvcm1hdHRpbmdDb250ZXh0UHJlZmVycmVkV2lkdGhzRnVuY3Rpb24pKQogewogICAgIC8v
IEl0IG1ha2VzIGFic29sdXRlbHkgbm8gc2Vuc2UgdG8gY29uc3RydWN0IGEgZGVkaWNhdGVkIGxh
eW91dCBzdGF0ZSBmb3IgYSBub24tZm9ybWF0dGluZyBjb250ZXh0IHJvb3QgKGxheW91dCB3b3Vs
ZCBiZSBhIG5vLW9wKS4KICAgICBBU1NFUlQocm9vdCgpLmVzdGFibGlzaGVzRm9ybWF0dGluZ0Nv
bnRleHQoKSk7CkBAIC0xNTEsOSArMTUyLDE0IEBAIHZvaWQgTGF5b3V0U3RhdGU6OmRlc3Ryb3lJ
bmxpbmVDb250ZW50Q2FjaGUoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRSCiAg
ICAgbV9pbmxpbmVDb250ZW50Q2FjaGVzLnJlbW92ZSgmZm9ybWF0dGluZ0NvbnRleHRSb290KTsK
IH0KIAotdm9pZCBMYXlvdXRTdGF0ZTo6bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94
KGNvbnN0IEVsZW1lbnRCb3gmIGJveCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB3aWR0aENv
bnN0cmFpbnQpCit2b2lkIExheW91dFN0YXRlOjpsYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRG
b3JCb3goY29uc3QgRWxlbWVudEJveCYgYm94LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHdp
ZHRoQ29uc3RyYWludCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mb3JtYXR0aW5nQ29udGV4dExh
eW91dEZ1bmN0aW9uKGJveCwgd2lkdGhDb25zdHJhaW50LCAqdGhpcyk7CisgICAgY29uc3RfY2Fz
dDxMYXlvdXRTdGF0ZSY+KCp0aGlzKS5tX2Zvcm1hdHRpbmdDb250ZXh0TGF5b3V0RnVuY3Rpb24o
Ym94LCB3aWR0aENvbnN0cmFpbnQsIGNvbnN0X2Nhc3Q8TGF5b3V0U3RhdGUmPigqdGhpcykpOwor
fQorCitzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gTGF5b3V0U3RhdGU6OnByZWZl
cnJlZFdpZHRoV2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gmIGJv
eCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxMYXlvdXRTdGF0ZSY+KCp0aGlzKS5t
X2Zvcm1hdHRpbmdDb250ZXh0UHJlZmVycmVkV2lkdGhzRnVuY3Rpb24oYm94KTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaAppbmRleCA3NWFmODEwODE3YWIuLmQyN2Y5MDNl
Y2I2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKQEAgLTYzLDggKzYzLDkgQEAg
cHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSB7IFByaW1hcnksIFNlY29uZGFyeSB9OwogCiAg
ICAgdXNpbmcgRm9ybWF0dGluZ0NvbnRleHRMYXlvdXRGdW5jdGlvbiA9IEZ1bmN0aW9uPHZvaWQo
Y29uc3QgRWxlbWVudEJveCYsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4sIExheW91dFN0YXRl
Jik+OworICAgIHVzaW5nIEZvcm1hdHRpbmdDb250ZXh0UHJlZmVycmVkV2lkdGhzRnVuY3Rpb24g
PSBGdW5jdGlvbjxzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4oY29uc3QgRWxlbWVu
dEJveCYpPjsKIAotICAgIExheW91dFN0YXRlKGNvbnN0IERvY3VtZW50JiwgY29uc3QgRWxlbWVu
dEJveCYgcm9vdENvbnRhaW5lciwgVHlwZSwgRm9ybWF0dGluZ0NvbnRleHRMYXlvdXRGdW5jdGlv
biYmKTsKKyAgICBMYXlvdXRTdGF0ZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IEVsZW1lbnRCb3gm
IHJvb3RDb250YWluZXIsIFR5cGUsIEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0RnVuY3Rpb24mJiwg
Rm9ybWF0dGluZ0NvbnRleHRQcmVmZXJyZWRXaWR0aHNGdW5jdGlvbiYmKTsKICAgICB+TGF5b3V0
U3RhdGUoKTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpAQCAt
MTA1LDcgKzEwNiw4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEVsZW1lbnRCb3gmIHJvb3QoKSBj
b25zdCB7IHJldHVybiBtX3Jvb3RDb250YWluZXI7IH0KIAotICAgIHZvaWQgbGF5b3V0V2l0aEZv
cm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gmLCBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IHdpZHRoQ29uc3RyYWludCk7CisgICAgdm9pZCBsYXlvdXRXaXRoRm9ybWF0dGlu
Z0NvbnRleHRGb3JCb3goY29uc3QgRWxlbWVudEJveCYsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gd2lkdGhDb25zdHJhaW50KSBjb25zdDsKKyAgICBzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5
b3V0VW5pdD4gcHJlZmVycmVkV2lkdGhXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3goY29uc3Qg
RWxlbWVudEJveCYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgc2V0UXVpcmtzTW9kZShR
dWlya3NNb2RlIHF1aXJrc01vZGUpIHsgbV9xdWlya3NNb2RlID0gcXVpcmtzTW9kZTsgfQpAQCAt
MTI4LDYgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBtX3NlY3Vy
aXR5T3JpZ2luOwogCiAgICAgRm9ybWF0dGluZ0NvbnRleHRMYXlvdXRGdW5jdGlvbiBtX2Zvcm1h
dHRpbmdDb250ZXh0TGF5b3V0RnVuY3Rpb247CisgICAgRm9ybWF0dGluZ0NvbnRleHRQcmVmZXJy
ZWRXaWR0aHNGdW5jdGlvbiBtX2Zvcm1hdHRpbmdDb250ZXh0UHJlZmVycmVkV2lkdGhzRnVuY3Rp
b247CiB9OwogCiBpbmxpbmUgYm9vbCBMYXlvdXRTdGF0ZTo6aGFzQm94R2VvbWV0cnkoY29uc3Qg
Qm94JiBsYXlvdXRCb3gpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0Nv
bnRleHQuY3BwCmluZGV4IDgxMTc0NTk1OWU1ZC4uODFiMzUyMjNhNGI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNDMsMTAgKzQzLDExIEBAIG5h
bWVzcGFjZSBMYXlvdXQgewogCiBXVEZfTUFLRV9UWk9ORV9PUl9JU09fQUxMT0NBVEVEX0lNUEwo
RmxleEZvcm1hdHRpbmdDb250ZXh0KTsKIAotRmxleEZvcm1hdHRpbmdDb250ZXh0OjpGbGV4Rm9y
bWF0dGluZ0NvbnRleHQoY29uc3QgRWxlbWVudEJveCYgZmxleEJveCwgTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlKQorRmxleEZvcm1hdHRpbmdDb250ZXh0OjpGbGV4Rm9ybWF0dGluZ0NvbnRleHQo
Y29uc3QgRWxlbWVudEJveCYgZmxleEJveCwgTGF5b3V0U3RhdGUmIGdsb2JhbExheW91dFN0YXRl
KQogICAgIDogbV9mbGV4Qm94KGZsZXhCb3gpCi0gICAgLCBtX2xheW91dFN0YXRlKGxheW91dFN0
YXRlKQorICAgICwgbV9nbG9iYWxMYXlvdXRTdGF0ZShnbG9iYWxMYXlvdXRTdGF0ZSkKICAgICAs
IG1fZmxleEZvcm1hdHRpbmdVdGlscygqdGhpcykKKyAgICAsIG1faW50ZWdyYXRpb25VdGlscyhn
bG9iYWxMYXlvdXRTdGF0ZSkKIHsKIH0KIApAQCAtODQsMTQgKzg1LDEzIEBAIEZsZXhMYXlvdXQ6
OkxvZ2ljYWxGbGV4SXRlbXMgRmxleEZvcm1hdHRpbmdDb250ZXh0Ojpjb252ZXJ0RmxleEl0ZW1z
VG9Mb2dpY2FsU3BhCiAKICAgICBWZWN0b3I8RmxleEl0ZW0+IGZsZXhJdGVtTGlzdDsKICAgICBh
dXRvIGZsZXhJdGVtc05lZWRSZW9yZGVyaW5nID0gZmFsc2U7Ci0gICAgYXV0byYgbGF5b3V0U3Rh
dGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwogCiAgICAgYXV0byBjb252ZXJ0VmlzdWFsVG9Mb2dp
Y2FsID0gWyZdIHsKICAgICAgICAgYXV0byBkaXJlY3Rpb24gPSByb290KCkuc3R5bGUoKS5mbGV4
RGlyZWN0aW9uKCk7CiAgICAgICAgIGF1dG8gcHJldmlvdXNMb2dpY2FsT3JkZXIgPSBzdGQ6Om9w
dGlvbmFsPGludD4geyB9OwogCiAgICAgICAgIGZvciAoYXV0byogZmxleEl0ZW0gPSByb290KCku
Zmlyc3RJbkZsb3dDaGlsZCgpOyBmbGV4SXRlbTsgZmxleEl0ZW0gPSBmbGV4SXRlbS0+bmV4dElu
Rmxvd1NpYmxpbmcoKSkgewotICAgICAgICAgICAgYXV0byYgZmxleEl0ZW1HZW9tZXRyeSA9IGxh
eW91dFN0YXRlLmdlb21ldHJ5Rm9yQm94KCpmbGV4SXRlbSk7CisgICAgICAgICAgICBhdXRvJiBm
bGV4SXRlbUdlb21ldHJ5ID0gbV9nbG9iYWxMYXlvdXRTdGF0ZS5nZW9tZXRyeUZvckJveCgqZmxl
eEl0ZW0pOwogICAgICAgICAgICAgYXV0byYgc3R5bGUgPSBmbGV4SXRlbS0+c3R5bGUoKTsKICAg
ICAgICAgICAgIGF1dG8gbWFpbkF4aXMgPSBMb2dpY2FsRmxleEl0ZW06Ok1haW5BeGlzR2VvbWV0
cnkgeyB9OwogICAgICAgICAgICAgYXV0byBjcm9zc0F4aXMgPSBMb2dpY2FsRmxleEl0ZW06OkNy
b3NzQXhpc0dlb21ldHJ5IHsgfTsKQEAgLTIzNSwxMyArMjM1LDEzIEBAIHZvaWQgRmxleEZvcm1h
dHRpbmdDb250ZXh0OjpzZXRGbGV4SXRlbXNHZW9tZXRyeShjb25zdCBGbGV4TGF5b3V0OjpMb2dp
Y2FsRmxleEl0CiBjb25zdCBCb3hHZW9tZXRyeSYgRmxleEZvcm1hdHRpbmdDb250ZXh0OjpnZW9t
ZXRyeUZvckZsZXhJdGVtKGNvbnN0IEJveCYgZmxleEl0ZW0pIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGZsZXhJdGVtLmlzRmxleEl0ZW0oKSk7Ci0gICAgcmV0dXJuIG1fbGF5b3V0U3RhdGUuZ2VvbWV0
cnlGb3JCb3goZmxleEl0ZW0pOworICAgIHJldHVybiBtX2dsb2JhbExheW91dFN0YXRlLmdlb21l
dHJ5Rm9yQm94KGZsZXhJdGVtKTsKIH0KIAogQm94R2VvbWV0cnkmIEZsZXhGb3JtYXR0aW5nQ29u
dGV4dDo6Z2VvbWV0cnlGb3JGbGV4SXRlbShjb25zdCBCb3gmIGZsZXhJdGVtKQogewogICAgIEFT
U0VSVChmbGV4SXRlbS5pc0ZsZXhJdGVtKCkpOwotICAgIHJldHVybiBtX2xheW91dFN0YXRlLmVu
c3VyZUdlb21ldHJ5Rm9yQm94KGZsZXhJdGVtKTsKKyAgICByZXR1cm4gbV9nbG9iYWxMYXlvdXRT
dGF0ZS5lbnN1cmVHZW9tZXRyeUZvckJveChmbGV4SXRlbSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9m
bGV4L0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGQxM2QxNWMyMTI2Mi4uMjgwM2JlODJm
OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiRmxleEZvcm1hdHRpbmdVdGlscy5oIgogI2luY2x1ZGUgIkZs
ZXhMYXlvdXQuaCIKICNpbmNsdWRlICJGbGV4UmVjdC5oIgorI2luY2x1ZGUgIkxheW91dEludGVn
cmF0aW9uVXRpbHMuaCIKICNpbmNsdWRlIDx3dGYvVFpvbmVNYWxsb2MuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTAsOCArNTEsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgQm94R2VvbWV0
cnkmIGdlb21ldHJ5Rm9yRmxleEl0ZW0oY29uc3QgQm94JikgY29uc3Q7CiAgICAgQm94R2VvbWV0
cnkmIGdlb21ldHJ5Rm9yRmxleEl0ZW0oY29uc3QgQm94Jik7CiAKLSAgICBjb25zdCBMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFN0YXRlOyB9Ci0gICAg
TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgeyByZXR1cm4gbV9sYXlvdXRTdGF0ZTsgfQorICAg
IGNvbnN0IEludGVncmF0aW9uVXRpbHMmIGludGVncmF0aW9uVXRpbHMoKSBjb25zdCB7IHJldHVy
biBtX2ludGVncmF0aW9uVXRpbHM7IH0KIAogcHJpdmF0ZToKICAgICBGbGV4TGF5b3V0OjpMb2dp
Y2FsRmxleEl0ZW1zIGNvbnZlcnRGbGV4SXRlbXNUb0xvZ2ljYWxTcGFjZShjb25zdCBDb25zdHJh
aW50c0ZvckZsZXhDb250ZW50Jik7CkBAIC02MSw4ICs2MSw5IEBAIHByaXZhdGU6CiAKIHByaXZh
dGU6CiAgICAgY29uc3QgRWxlbWVudEJveCYgbV9mbGV4Qm94OwotICAgIExheW91dFN0YXRlJiBt
X2xheW91dFN0YXRlOworICAgIExheW91dFN0YXRlJiBtX2dsb2JhbExheW91dFN0YXRlOwogICAg
IGNvbnN0IEZsZXhGb3JtYXR0aW5nVXRpbHMgbV9mbGV4Rm9ybWF0dGluZ1V0aWxzOworICAgIGNv
bnN0IEludGVncmF0aW9uVXRpbHMgbV9pbnRlZ3JhdGlvblV0aWxzOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhM
YXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4
L0ZsZXhMYXlvdXQuY3BwCmluZGV4IDczZTU1YWNjNDRlYy4uNDMyZDhiOTM3ZjYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleExh
eW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9m
bGV4L0ZsZXhMYXlvdXQuY3BwCkBAIC0xNjksOSArMTY5LDggQEAgTGF5b3V0VW5pdCBGbGV4TGF5
b3V0OjptYXhDb250ZW50Rm9yRmxleEl0ZW0oY29uc3QgTG9naWNhbEZsZXhJdGVtJiBmbGV4SXRl
bSkKICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9Ci0gICAgYXV0byBwbGFjZWRGbG9hdHMgPSBQbGFjZWRGbG9hdHMgeyBmbGV4
SXRlbUJveCB9OwotICAgIGF1dG8gYmxvY2tMYXlvdXRTdGF0ZSA9IEJsb2NrTGF5b3V0U3RhdGUg
eyBwbGFjZWRGbG9hdHMgfTsKLSAgICByZXR1cm4gSW5saW5lRm9ybWF0dGluZ0NvbnRleHQgeyBm
bGV4SXRlbUJveCwgZmxleEZvcm1hdHRpbmdDb250ZXh0KCkubGF5b3V0U3RhdGUoKSwgYmxvY2tM
YXlvdXRTdGF0ZSB9Lm1heGltdW1Db250ZW50U2l6ZSgpOworCisgICAgcmV0dXJuIGZvcm1hdHRp
bmdDb250ZXh0KCkuaW50ZWdyYXRpb25VdGlscygpLnByZWZlcnJlZFdpZHRoV2l0aEZvcm1hdHRp
bmdDb250ZXh0Rm9yQm94KGRvd25jYXN0PEVsZW1lbnRCb3g+KGZsZXhJdGVtQm94KSkuc2Vjb25k
OwogfQogCiBGbGV4TGF5b3V0OjpGbGV4QmFzZUFuZEh5cG90aGV0aWNhbE1haW5TaXplTGlzdCBG
bGV4TGF5b3V0OjpmbGV4QmFzZUFuZEh5cG90aGV0aWNhbE1haW5TaXplRm9yRmxleEl0ZW1zKGNv
bnN0IExvZ2ljYWxDb25zdHJhaW50czo6QXhpc0dlb21ldHJ5JiBtYWluQXhpcywgY29uc3QgTG9n
aWNhbEZsZXhJdGVtcyYgZmxleEl0ZW1zKQpAQCAtNDM5LDEzICs0MzgsOCBAQCBGbGV4TGF5b3V0
OjpTaXplTGlzdCBGbGV4TGF5b3V0OjpoeXBvdGhldGljYWxDcm9zc1NpemVGb3JGbGV4SXRlbXMo
Y29uc3QgTG9naWNhbAogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVU
KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBMZXQgaXQgcnVuIHRocm91Z2ggaW50ZWdyYXRpb24gY29kZXBhdGguCi0g
ICAgICAgICAgICBhdXRvIHBsYWNlZEZsb2F0cyA9IFBsYWNlZEZsb2F0cyB7IGZsZXhJdGVtQm94
IH07Ci0gICAgICAgICAgICBhdXRvIGJsb2NrTGF5b3V0U3RhdGUgPSBCbG9ja0xheW91dFN0YXRl
IHsgcGxhY2VkRmxvYXRzIH07Ci0gICAgICAgICAgICBhdXRvIGlubGluZUZvcm1hdHRpbmdDb250
ZXh0ID0gSW5saW5lRm9ybWF0dGluZ0NvbnRleHQgeyBmbGV4SXRlbUJveCwgZmxleEZvcm1hdHRp
bmdDb250ZXh0KCkubGF5b3V0U3RhdGUoKSwgYmxvY2tMYXlvdXRTdGF0ZSB9OwotICAgICAgICAg
ICAgYXV0byBjb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQgPSBDb25zdHJhaW50c0ZvckluRmxv
d0NvbnRlbnQgeyBIb3Jpem9udGFsQ29uc3RyYWludHMgeyB7IH0sIGZsZXhJdGVtc01haW5TaXpl
TGlzdFtmbGV4SXRlbUluZGV4XSB9LCB7IH0gfTsKLSAgICAgICAgICAgIGF1dG8gbGF5b3V0UmVz
dWx0ID0gaW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGF5b3V0KHsgY29uc3RyYWludHNGb3JJbkZs
b3dDb250ZW50LCB7IH0gfSk7Ci0gICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IGxheW91
dFJlc3VsdC5kaXNwbGF5Q29udGVudC5saW5lcy5sYXN0KCkubGluZUJveExvZ2ljYWxSZWN0KCku
bWF4WSgpIH07CisgICAgICAgICAgICBmb3JtYXR0aW5nQ29udGV4dCgpLmludGVncmF0aW9uVXRp
bHMoKS5sYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3goZG93bmNhc3Q8RWxlbWVudEJv
eD4oZmxleEl0ZW1Cb3gpLCBmbGV4SXRlbXNNYWluU2l6ZUxpc3RbZmxleEl0ZW1JbmRleF0pOwor
ICAgICAgICAgICAgcmV0dXJuIEJveEdlb21ldHJ5OjptYXJnaW5Cb3hSZWN0KGZvcm1hdHRpbmdD
b250ZXh0KCkuZ2VvbWV0cnlGb3JGbGV4SXRlbShmbGV4SXRlbUJveCkpLmhlaWdodCgpOwogICAg
ICAgICB9OwogICAgICAgICBhdXRvIHVzZWRDcm9zc1NpemUgPSBjcm9zc1NpemVBZnRlclBlcmZv
cm1pbmdMYXlvdXQoKTsKICAgICAgICAgaWYgKCFmbGV4SXRlbS5pc0NvbnRlbnRCb3hCYXNlZCgp
KQpAQCAtODY4LDcgKzg2Miw3IEBAIGNvbnN0IEVsZW1lbnRCb3gmIEZsZXhMYXlvdXQ6OmZsZXhD
b250YWluZXIoKSBjb25zdAogICAgIHJldHVybiBtX2ZsZXhGb3JtYXR0aW5nQ29udGV4dC5yb290
KCk7CiB9CiAKLUZsZXhGb3JtYXR0aW5nQ29udGV4dCYgRmxleExheW91dDo6ZmxleEZvcm1hdHRp
bmdDb250ZXh0KCkKK0ZsZXhGb3JtYXR0aW5nQ29udGV4dCYgRmxleExheW91dDo6Zm9ybWF0dGlu
Z0NvbnRleHQoKQogewogICAgIHJldHVybiBtX2ZsZXhGb3JtYXR0aW5nQ29udGV4dDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9G
bGV4TGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Zs
ZXgvRmxleExheW91dC5oCmluZGV4IGY2ZDQzMjRjMzdiNC4uMjg0ZmUxNTQ2NzQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleExh
eW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxl
eC9GbGV4TGF5b3V0LmgKQEAgLTkwLDcgKzkwLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNT
aW5nbGVMaW5lRmxleENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZsZXhDb250YWluZXIoKS5z
dHlsZSgpLmZsZXhXcmFwKCkgPT0gRmxleFdyYXA6Ok5vV3JhcDsgfQogICAgIGNvbnN0IEVsZW1l
bnRCb3gmIGZsZXhDb250YWluZXIoKSBjb25zdDsKLSAgICBGbGV4Rm9ybWF0dGluZ0NvbnRleHQm
IGZsZXhGb3JtYXR0aW5nQ29udGV4dCgpOworICAgIEZsZXhGb3JtYXR0aW5nQ29udGV4dCYgZm9y
bWF0dGluZ0NvbnRleHQoKTsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgZmxleENvbnRhaW5lclN0
eWxlKCkgY29uc3QgeyByZXR1cm4gZmxleENvbnRhaW5lcigpLnN0eWxlKCk7IH0KIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApp
bmRleCBmODRiZWJiNjI0MWQuLjc1YWIyNjZlNWNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNDksNiArNDksNyBAQAogI2luY2x1
ZGUgIkxheW91dEVsZW1lbnRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRJbml0aWFsQ29udGFpbmlu
Z0Jsb2NrLmgiCiAjaW5jbHVkZSAiTGF5b3V0SW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIkxh
eW91dEludGVncmF0aW9uVXRpbHMuaCIKICNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSYW5nZUJhc2VkTGluZUJ1aWxkZXIuaCIKQEAgLTg4
LDE2ICs4OSwxNyBAQCBzdGF0aWMgYm9vbCBpc0VtcHR5SW5saW5lQ29udGVudChjb25zdCBJbmxp
bmVJdGVtTGlzdCYgaW5saW5lSXRlbUxpc3QpCiAgICAgcmV0dXJuIGlubGluZVRleHRJdGVtICYm
ICFpbmxpbmVUZXh0SXRlbS0+bGVuZ3RoKCk7CiB9CiAKLUlubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBFbGVtZW50Qm94JiByb290QmxvY2tDb250
YWluZXIsIExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgQmxvY2tMYXlvdXRTdGF0ZSYgcGFyZW50
QmxvY2tMYXlvdXRTdGF0ZSkKK0lubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dChjb25zdCBFbGVtZW50Qm94JiByb290QmxvY2tDb250YWluZXIsIExheW91dFN0
YXRlJiBnbG9iYWxMYXlvdXRTdGF0ZSwgQmxvY2tMYXlvdXRTdGF0ZSYgcGFyZW50QmxvY2tMYXlv
dXRTdGF0ZSkKICAgICA6IG1fcm9vdEJsb2NrQ29udGFpbmVyKHJvb3RCbG9ja0NvbnRhaW5lcikK
LSAgICAsIG1fZ2xvYmFsTGF5b3V0U3RhdGUobGF5b3V0U3RhdGUpCi0gICAgLCBtX2Zsb2F0aW5n
Q29udGV4dChyb290QmxvY2tDb250YWluZXIsIGxheW91dFN0YXRlLCBwYXJlbnRCbG9ja0xheW91
dFN0YXRlLnBsYWNlZEZsb2F0cygpKQorICAgICwgbV9nbG9iYWxMYXlvdXRTdGF0ZShnbG9iYWxM
YXlvdXRTdGF0ZSkKKyAgICAsIG1fZmxvYXRpbmdDb250ZXh0KHJvb3RCbG9ja0NvbnRhaW5lciwg
Z2xvYmFsTGF5b3V0U3RhdGUsIHBhcmVudEJsb2NrTGF5b3V0U3RhdGUucGxhY2VkRmxvYXRzKCkp
CiAgICAgLCBtX2lubGluZUZvcm1hdHRpbmdVdGlscygqdGhpcykKICAgICAsIG1faW5saW5lUXVp
cmtzKCp0aGlzKQotICAgICwgbV9pbmxpbmVDb250ZW50Q2FjaGUobGF5b3V0U3RhdGUuaW5saW5l
Q29udGVudENhY2hlKHJvb3RCbG9ja0NvbnRhaW5lcikpCisgICAgLCBtX2ludGVncmF0aW9uVXRp
bHMoZ2xvYmFsTGF5b3V0U3RhdGUpCisgICAgLCBtX2lubGluZUNvbnRlbnRDYWNoZShnbG9iYWxM
YXlvdXRTdGF0ZS5pbmxpbmVDb250ZW50Q2FjaGUocm9vdEJsb2NrQ29udGFpbmVyKSkKICAgICAs
IG1faW5saW5lTGF5b3V0U3RhdGUocGFyZW50QmxvY2tMYXlvdXRTdGF0ZSkKIHsKLSAgICBpbml0
aWFsaXplSW5saW5lTGF5b3V0U3RhdGUobGF5b3V0U3RhdGUpOworICAgIGluaXRpYWxpemVJbmxp
bmVMYXlvdXRTdGF0ZShnbG9iYWxMYXlvdXRTdGF0ZSk7CiB9CiAKIElubGluZUxheW91dFJlc3Vs
dCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5s
aW5lQ29udGVudCYgY29uc3RyYWludHMsIElubGluZURhbWFnZSogbGluZURhbWFnZSkKQEAgLTMz
Myw3ICszMzUsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGbG9hdENv
bnRlbnRPbmx5KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQwogICAgICAgICBpZiAoaW5saW5l
SXRlbS5pc0Zsb2F0KCkpIHsKICAgICAgICAgICAgIGF1dG8mIGZsb2F0Qm94ID0gaW5saW5lSXRl
bS5sYXlvdXRCb3goKTsKIAotICAgICAgICAgICAgbGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0
Rm9yQm94KGRvd25jYXN0PEVsZW1lbnRCb3g+KGZsb2F0Qm94KSk7CisgICAgICAgICAgICBpbnRl
Z3JhdGlvblV0aWxzKCkubGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGRvd25jYXN0
PEVsZW1lbnRCb3g+KGZsb2F0Qm94KSk7CiAKICAgICAgICAgICAgIGF1dG8mIGZsb2F0Qm94R2Vv
bWV0cnkgPSBnZW9tZXRyeUZvckJveChmbG9hdEJveCk7CiAgICAgICAgICAgICBhdXRvIHN0YXRp
Y1Bvc2l0aW9uID0gTGF5b3V0UG9pbnQgeyBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNh
bExlZnQsIGNvbnN0cmFpbnRzLmxvZ2ljYWxUb3AoKSB9OwpAQCAtNDc1LDE1ICs0NzcsMTUgQEAg
dm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JFbXB0
eUlubGluZUNvbnRlbnQoY29uc3QgQ28KICAgICBjcmVhdGVEaXNwbGF5Q29udGVudEZvcklubGlu
ZUNvbnRlbnQobGluZUJveCwgZW1wdHlMaW5lQnJlYWtpbmdSZXN1bHQsIGNvbnN0cmFpbnRzLCBs
YXlvdXRSZXN1bHQuZGlzcGxheUNvbnRlbnQpOwogfQogCi12b2lkIElubGluZUZvcm1hdHRpbmdD
b250ZXh0Ojppbml0aWFsaXplSW5saW5lTGF5b3V0U3RhdGUoY29uc3QgTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlKQordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZUlubGlu
ZUxheW91dFN0YXRlKGNvbnN0IExheW91dFN0YXRlJiBnbG9iYWxMYXlvdXRTdGF0ZSkKIHsKLSAg
ICBhdXRvJiBpbmxpbmVMYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CisgICAgYXV0
byYgaW5saW5lTGF5b3V0U3RhdGUgPSBsYXlvdXRTdGF0ZSgpOwogCiAgICAgaWYgKGF1dG8gbGlt
aXRMaW5lc1ZhbHVlID0gcm9vdCgpLnN0eWxlKCkuaHlwaGVuYXRpb25MaW1pdExpbmVzKCk7IGxp
bWl0TGluZXNWYWx1ZSAhPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEh5cGhlbmF0aW9uTGltaXRMaW5l
cygpKQogICAgICAgICBpbmxpbmVMYXlvdXRTdGF0ZS5zZXRIeXBoZW5hdGlvbkxpbWl0TGluZXMo
bGltaXRMaW5lc1ZhbHVlKTsKICAgICAvLyBGSVhNRTogUmVtb3ZlIHdoZW4gSUZDIHRha2VzIGNh
cmUgb2YgcnVubmluZyBsYXlvdXQgb24gaW5saW5lLWJsb2Nrcy4KICAgICBpbmxpbmVMYXlvdXRT
dGF0ZS5zZXRTaG91bGROb3RTeW50aGVzaXplSW5saW5lQmxvY2tCYXNlbGluZSgpOwotICAgIGlm
IChsYXlvdXRTdGF0ZS5pblN0YW5kYXJkc01vZGUoKSkKKyAgICBpZiAoZ2xvYmFsTGF5b3V0U3Rh
dGUuaW5TdGFuZGFyZHNNb2RlKCkpCiAgICAgICAgIGlubGluZUxheW91dFN0YXRlLnNldEluU3Rh
bmRhcmRzTW9kZSgpOwogfQogCkBAIC01NDcsMTIgKzU0OSw2IEBAIHZvaWQgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OnJlYnVpbGRJbmxpbmVJdGVtTGlzdElmTmVlZGVkKElubGluZURhbWFnZSog
bGluZURhCiAgICAgaW5saW5lQ29udGVudENhY2hlLmNsZWFyTWF4aW11bUludHJpbnNpY1dpZHRo
TGluZUNvbnRlbnQoKTsKIH0KIAotdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0
V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gmIGJveCwgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiB3aWR0aENvbnN0cmFpbnQpCi17Ci0gICAgbV9nbG9iYWxMYXlv
dXRTdGF0ZS5sYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3goYm94LCB3aWR0aENvbnN0
cmFpbnQpOwotfQotCi0KIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmgKaW5kZXggYWViYmRmNjJmMmEyLi5iOWM1MmY1ZjVmZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIklubGluZUxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiSW5saW5lUXVp
cmtzLmgiCiAjaW5jbHVkZSAiSW50cmluc2ljV2lkdGhIYW5kbGVyLmgiCisjaW5jbHVkZSAiTGF5
b3V0SW50ZWdyYXRpb25VdGlscy5oIgogI2luY2x1ZGUgPHd0Zi9UWm9uZU1hbGxvYy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MSwxNCArNzIsMTQgQEAgcHVibGljOgogICAgIElubGlu
ZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIHsgcmV0dXJuIG1faW5saW5lTGF5b3V0U3RhdGU7
IH0KICAgICBjb25zdCBJbmxpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX2lubGluZUxheW91dFN0YXRlOyB9CiAKLSAgICB2b2lkIGxheW91dFdpdGhGb3JtYXR0
aW5nQ29udGV4dEZvckJveChjb25zdCBFbGVtZW50Qm94Jiwgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiB3aWR0aENvbnN0cmFpbnQgPSB7IH0pOwotCiAgICAgZW51bSBjbGFzcyBFc2NhcGVSZWFz
b24gewogICAgICAgICBJbmtPdmVyZmxvd05lZWRzSW5pdGlhbENvbnRpbmluZ0Jsb2NrRm9yU3Ry
b2tlV2lkdGgKICAgICB9OwogICAgIGNvbnN0IEJveEdlb21ldHJ5JiBnZW9tZXRyeUZvckJveChj
b25zdCBCb3gmLCBzdGQ6Om9wdGlvbmFsPEVzY2FwZVJlYXNvbj4gPSBzdGQ6Om51bGxvcHQpIGNv
bnN0OwogICAgIEJveEdlb21ldHJ5JiBnZW9tZXRyeUZvckJveChjb25zdCBCb3gmLCBzdGQ6Om9w
dGlvbmFsPEVzY2FwZVJlYXNvbj4gPSBzdGQ6Om51bGxvcHQpOwogCisgICAgY29uc3QgSW50ZWdy
YXRpb25VdGlscyYgaW50ZWdyYXRpb25VdGlscygpIGNvbnN0IHsgcmV0dXJuIG1faW50ZWdyYXRp
b25VdGlsczsgfQorCiBwcml2YXRlOgogICAgIElubGluZUxheW91dFJlc3VsdCBsaW5lTGF5b3V0
KEFic3RyYWN0TGluZUJ1aWxkZXImLCBjb25zdCBJbmxpbmVJdGVtTGlzdCYsIElubGluZUl0ZW1S
YW5nZSwgc3RkOjpvcHRpb25hbDxQcmV2aW91c0xpbmU+LCBjb25zdCBDb25zdHJhaW50c0Zvcklu
bGluZUNvbnRlbnQmLCBjb25zdCBJbmxpbmVEYW1hZ2UqID0gbnVsbHB0cik7CiAgICAgdm9pZCBs
YXlvdXRGbG9hdENvbnRlbnRPbmx5KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYp
OwpAQCAtMTAxLDYgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgRmxvYXRpbmdDb250ZXh0
IG1fZmxvYXRpbmdDb250ZXh0OwogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdVdGlscyBtX2lu
bGluZUZvcm1hdHRpbmdVdGlsczsKICAgICBjb25zdCBJbmxpbmVRdWlya3MgbV9pbmxpbmVRdWly
a3M7CisgICAgY29uc3QgSW50ZWdyYXRpb25VdGlscyBtX2ludGVncmF0aW9uVXRpbHM7CiAgICAg
SW5saW5lQ29udGVudENhY2hlJiBtX2lubGluZUNvbnRlbnRDYWNoZTsKICAgICBJbmxpbmVMYXlv
dXRTdGF0ZSBtX2lubGluZUxheW91dFN0YXRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGls
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nVXRpbHMuY3BwCmluZGV4IDNkMGI0YmIyOTgwMi4uZGUyYTBhZjExOTI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5jcHAKQEAg
LTEyMCw3ICsxMjAsNyBAQCBib29sIElubGluZUZvcm1hdHRpbmdVdGlsczo6aW5saW5lTGV2ZWxC
b3hBZmZlY3RzTGluZUJveChjb25zdCBJbmxpbmVMZXZlbEJveCYgaQogICAgIGlmIChpbmxpbmVM
ZXZlbEJveC5pc0xpc3RNYXJrZXIoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKGlu
bGluZUxldmVsQm94LmlzSW5saW5lQm94KCkpCi0gICAgICAgIHJldHVybiBsYXlvdXRTdGF0ZSgp
LmluU3RhbmRhcmRzTW9kZSgpID8gdHJ1ZSA6IGZvcm1hdHRpbmdDb250ZXh0KCkucXVpcmtzKCku
aW5saW5lQm94QWZmZWN0c0xpbmVCb3goaW5saW5lTGV2ZWxCb3gpOworICAgICAgICByZXR1cm4g
Zm9ybWF0dGluZ0NvbnRleHQoKS5sYXlvdXRTdGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpID8gdHJ1
ZSA6IGZvcm1hdHRpbmdDb250ZXh0KCkucXVpcmtzKCkuaW5saW5lQm94QWZmZWN0c0xpbmVCb3go
aW5saW5lTGV2ZWxCb3gpOwogICAgIGlmIChpbmxpbmVMZXZlbEJveC5pc0F0b21pY0lubGluZUJv
eCgpKQogICAgICAgICByZXR1cm4gIWlubGluZUxldmVsQm94LmxheW91dEJveCgpLmlzUnVieUFu
bm90YXRpb25Cb3goKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODgsNyArMTg4LDcgQEAgSW5s
aW5lTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmNvbXB1dGVkVGV4dEluZGVudChJ
c0ludHJpbnNpY1dpZHRoTW9kZQogCiBJbmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdV
dGlsczo6aW5pdGlhbExpbmVIZWlnaHQoYm9vbCBpc0ZpcnN0TGluZSkgY29uc3QKIHsKLSAgICBp
ZiAobGF5b3V0U3RhdGUoKS5pblN0YW5kYXJkc01vZGUoKSkKKyAgICBpZiAoZm9ybWF0dGluZ0Nv
bnRleHQoKS5sYXlvdXRTdGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpKQogICAgICAgICByZXR1cm4g
aXNGaXJzdExpbmUgPyBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKS5maXJzdExpbmVTdHlsZSgp
LmNvbXB1dGVkTGluZUhlaWdodCgpIDogZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCkuc3R5bGUo
KS5jb21wdXRlZExpbmVIZWlnaHQoKTsKICAgICByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5x
dWlya3MoKS5pbml0aWFsTGluZUhlaWdodCgpOwogfQpAQCAtNjA4LDExICs2MDgsNiBAQCBMaW5l
RW5kaW5nRWxsaXBzaXNQb2xpY3kgSW5saW5lRm9ybWF0dGluZ1V0aWxzOjpsaW5lRW5kaW5nRWxs
aXBzaXNQb2xpY3koY29uc3QgUgogICAgIHJldHVybiBMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6
Ok5vRWxsaXBzaXM7CiB9CiAKLWNvbnN0IElubGluZUxheW91dFN0YXRlJiBJbmxpbmVGb3JtYXR0
aW5nVXRpbHM6OmxheW91dFN0YXRlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZm9ybWF0dGluZ0Nv
bnRleHQoKS5sYXlvdXRTdGF0ZSgpOwotfQotCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdV
dGlscy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lRm9ybWF0dGluZ1V0aWxzLmgKaW5kZXggZjRlMWE1ZjNlYTEzLi5jNDgxNjlhY2YxZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5oCkBAIC03Miwx
MiArNzIsMTAgQEAgcHJpdmF0ZToKICAgICBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMZWZ0QWZ0
ZXJMYXN0TGluZShjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmLCBzdGQ6Om9wdGlv
bmFsPElubGluZUxheW91dFVuaXQ+IGxhc3RMaW5lTG9naWNhbEJvdHRvbSwgY29uc3QgRmxvYXRp
bmdDb250ZXh0JikgY29uc3Q7CiAgICAgYm9vbCBpc0F0U29mdFdyYXBPcHBvcnR1bml0eShjb25z
dCBJbmxpbmVJdGVtJiBwcmV2aW91cywgY29uc3QgSW5saW5lSXRlbSYgbmV4dCkgY29uc3Q7CiAK
LSAgICBjb25zdCBJbmxpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSBjb25zdDsKICAgICBj
b25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0OyB9CiAKIHByaXZhdGU6CiAgICAgY29u
c3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7Ci0K
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRp
Y2FsQWxpZ25lci5jcHAKaW5kZXggNWMxYjhlMDQ4Nzk5Li5hZmUxMzNmOGE3Y2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3Bw
CkBAIC0zNiw3ICszNiw2IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogCiBMaW5lQm94VmVydGljYWxB
bGlnbmVyOjpMaW5lQm94VmVydGljYWxBbGlnbmVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250
ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKICAgICA6IG1faW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCi0gICAgLCBtX2lubGluZUZvcm1hdHRpbmdV
dGlscyhpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZl
cnRpY2FsQWxpZ25lci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5oCmluZGV4IDk4Yzc0YmJkZDgy
ZC4uZTE0NWRkZDAzOWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZUJveFZlcnRpY2FsQWxpZ25lci5oCkBAIC01NiwxNCArNTYsMTMgQEAgcHJpdmF0ZToKICAgICBJ
bmxpbmVMYXlvdXRVbml0IGFkanVzdEZvckFubm90YXRpb25JZk5lZWRlZChMaW5lQm94JiwgSW5s
aW5lTGF5b3V0VW5pdCBsaW5lQm94SGVpZ2h0KSBjb25zdDsKICAgICBJbmxpbmVMZXZlbEJveDo6
QXNjZW50QW5kRGVzY2VudCBsYXlvdXRCb3VuZHNGb3JJbmxpbmVCb3hTdWJ0cmVlKGNvbnN0IExp
bmVCb3g6OklubGluZUxldmVsQm94TGlzdCYgbm9uUm9vdElubGluZUxldmVsQm94ZXMsIHNpemVf
dCBpbmxpbmVCb3hJbmRleCkgY29uc3Q7CiAKLSAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nVXRp
bHMmIGZvcm1hdHRpbmdVdGlscygpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ1V0
aWxzOyB9CisgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ1V0aWxzJiBmb3JtYXR0aW5nVXRpbHMo
KSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdVdGlscygpOyB9
CiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsgfQogICAgIGNvbnN0IEVs
ZW1lbnRCb3gmIHJvb3RCb3goKSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLnJv
b3QoKTsgfQogICAgIGNvbnN0IElubGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIGZvcm1hdHRpbmdDb250ZXh0KCkubGF5b3V0U3RhdGUoKTsgfQogCiBwcml2YXRl
OgogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBtX2lubGluZUZvcm1hdHRpbmdD
b250ZXh0OwotICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdVdGlscyBtX2lubGluZUZvcm1hdHRp
bmdVdGlsczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNw
cAppbmRleCA4N2Y4OTRlNTY5MTQuLjkwZWUwNTQ1Mjc5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtNjYyLDcgKzY2Miw3IEBAIHZvaWQgTGluZUJ1aWxk
ZXI6OmNhbmRpZGF0ZUNvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGUmIGxpbmVDYW5kaWRhdGUs
IHNpemVfdCBjCiAgICAgICAgIGlmIChuZWVkc0xheW91dCkgewogICAgICAgICAgICAgLy8gRklY
TUU6IEludHJpbnNpYyB3aWR0aCBtb2RlIHNob3VsZCBjYWxsIGludG8gdGhlIGludHJpbnNpYyB3
aWR0aCBjb2RlcGF0aC4gQ3VycmVudGx5IHdlIG9ubHkgZ2V0IGhlcmUgd2hlbiBib3ggaGFzIGZp
eGVkIHdpZHRoIChtZWFuaW5nIG5vIG5lZWQgdG8gcnVuIGludHJpbnNpYyB3aWR0aCBvbiB0aGUg
Ym94KS4KICAgICAgICAgICAgIGlmICghaXNJbkludHJpbnNpY1dpZHRoTW9kZSgpKQotICAgICAg
ICAgICAgICAgIGZvcm1hdHRpbmdDb250ZXh0KCkubGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0
Rm9yQm94KGRvd25jYXN0PEVsZW1lbnRCb3g+KGlubGluZUl0ZW0ubGF5b3V0Qm94KCkpKTsKKyAg
ICAgICAgICAgICAgICBmb3JtYXR0aW5nQ29udGV4dCgpLmludGVncmF0aW9uVXRpbHMoKS5sYXlv
dXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3goZG93bmNhc3Q8RWxlbWVudEJveD4oaW5saW5l
SXRlbS5sYXlvdXRCb3goKSkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlubGluZUl0ZW0u
aXNGbG9hdCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0
aW5nQ29udGV4dC5jcHAKaW5kZXggNjljNjg4MzUzOWFmLi5jNmJkZmQ2MjkwZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3J1Ynkv
UnVieUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAg
LTIzNSw3ICsyMzUsNyBAQCBJbmxpbmVMYXlvdXRVbml0IFJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6
YW5ub3RhdGlvbkJveExvZ2ljYWxXaWR0aChjb25zdCBCb3gmIHJ1YgogICAgIGlmICghYW5ub3Rh
dGlvbkJveCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGlubGluZUZvcm1hdHRpbmdDb250
ZXh0LmxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveCgqYW5ub3RhdGlvbkJveCk7Cisg
ICAgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaW50ZWdyYXRpb25VdGlscygpLmxheW91dFdpdGhG
b3JtYXR0aW5nQ29udGV4dEZvckJveCgqYW5ub3RhdGlvbkJveCk7CiAKICAgICByZXR1cm4gaW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goKmFubm90YXRpb25Cb3gpLm1hcmdp
bkJveFdpZHRoKCk7CiB9CkBAIC0yNzgsNyArMjc4LDcgQEAgc2l6ZV90IFJ1YnlGb3JtYXR0aW5n
Q29udGV4dDo6YXBwbHlSdWJ5QWxpZ25PbkJhc2VDb250ZW50KHNpemVfdCBydWJ5QmFzZVN0YXJ0
LAogICAgIGlmICghYW5ub3RhdGlvbkJveCkKICAgICAgICAgcmV0dXJuIHJ1YnlCYXNlU3RhcnQg
KyAxOwogCi0gICAgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGF5b3V0V2l0aEZvcm1hdHRpbmdD
b250ZXh0Rm9yQm94KCphbm5vdGF0aW9uQm94KTsKKyAgICBpbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5pbnRlZ3JhdGlvblV0aWxzKCkubGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KCph
bm5vdGF0aW9uQm94KTsKIAogICAgIGF1dG8gYW5ub3RhdGlvbkJveExvZ2ljYWxXaWR0aCA9IElu
bGluZUxheW91dFVuaXQgeyBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveCgq
YW5ub3RhdGlvbkJveCkubWFyZ2luQm94V2lkdGgoKSB9OwogICAgIGF1dG8gYmFzZUNvbnRlbnRM
b2dpY2FsV2lkdGggPSBydW5zW3J1YnlCYXNlRW5kXS5sb2dpY2FsTGVmdCgpIC0gcnVuc1tydWJ5
QmFzZVN0YXJ0XS5sb2dpY2FsUmlnaHQoKTsKQEAgLTM4Niw3ICszODYsNyBAQCBJbmxpbmVMYXlv
dXRTaXplIFJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6c2l6ZUFubm90YXRpb25Cb3goY29uc3QgQm94
JiBydWJ5QmFzZUxheQogICAgICAgICAvLyBMYXlvdXQgdGhlIGFubm90YXRpb24gYm94IGFnYWlu
IGlmIHdlIGRlY2lkZWQgdG8gY2hhbmdlIGl0cyBzaXplLgogICAgICAgICBhdXRvIG5ld1dpZHRo
ID0gc3RkOjptYXgocnVieUJhc2VNYXJnaW5Cb3hMb2dpY2FsUmVjdC53aWR0aCgpLCBhbm5vdGF0
aW9uQm94TG9naWNhbEdlb21ldHJ5Lm1hcmdpbkJveFdpZHRoKCkpOwogICAgICAgICBpZiAobmV3
V2lkdGggIT0gYW5ub3RhdGlvbkJveExvZ2ljYWxHZW9tZXRyeS5tYXJnaW5Cb3hXaWR0aCgpKQot
ICAgICAgICAgICAgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGF5b3V0V2l0aEZvcm1hdHRpbmdD
b250ZXh0Rm9yQm94KCphbm5vdGF0aW9uQm94LCBuZXdXaWR0aCk7CisgICAgICAgICAgICBpbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5pbnRlZ3JhdGlvblV0aWxzKCkubGF5b3V0V2l0aEZvcm1hdHRp
bmdDb250ZXh0Rm9yQm94KCphbm5vdGF0aW9uQm94LCBuZXdXaWR0aCk7CiAKICAgICAgICAgcmV0
dXJuIHsgbmV3V2lkdGggLSBhbm5vdGF0aW9uQm94TG9naWNhbEdlb21ldHJ5Lmhvcml6b250YWxN
YXJnaW5Cb3JkZXJBbmRQYWRkaW5nKCksIGFubm90YXRpb25Cb3hMb2dpY2FsR2VvbWV0cnkuY29u
dGVudEJveEhlaWdodCgpIH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
Rm9ybWF0dGluZ0NvbnRleHRMYXlvdXQuY3BwCmluZGV4IGVkNzExMWI2NzhkNC4uNTA1NzMyZmI4
OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uRm9ybWF0dGluZ0NvbnRleHRM
YXlvdXQuY3BwCkBAIC01MCw1ICs1MCwxMSBAQCB2b2lkIGxheW91dFdpdGhGb3JtYXR0aW5nQ29u
dGV4dEZvckJveChjb25zdCBMYXlvdXQ6OkVsZW1lbnRCb3gmIGJveCwgc3RkOjpvcHRpbwogICAg
IHVwZGF0ZXIudXBkYXRlR2VvbWV0cnlBZnRlckxheW91dChib3gpOwogfQogCitzdGQ6OnBhaXI8
TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gcHJlZmVycmVkTG9naWNhbFdpZHRocyhjb25zdCBMYXlv
dXQ6OkVsZW1lbnRCb3gmIGJveCkKK3sKKyAgICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJl
bmRlckJveD4oKmJveC5yZW5kZXJlckZvckludGVncmF0aW9uKCkpOworICAgIHJldHVybiB7IHJl
bmRlcmVyLm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpLCByZW5kZXJlci5tYXhQcmVmZXJyZWRM
b2dpY2FsV2lkdGgoKSB9OworfQorCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91
dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
Rm9ybWF0dGluZ0NvbnRleHRMYXlvdXQuaAppbmRleCBhMjdlYmZhNWVkZDUuLjE4MmU1YzFiZjk2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91
dC5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIExheW91dFN0YXRlOwogbmFtZXNwYWNlIExheW91
dEludGVncmF0aW9uIHsKIAogdm9pZCBsYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3go
Y29uc3QgTGF5b3V0OjpFbGVtZW50Qm94Jiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB3aWR0
aENvbnN0cmFpbnQsIExheW91dDo6TGF5b3V0U3RhdGUmKTsKK3N0ZDo6cGFpcjxMYXlvdXRVbml0
LCBMYXlvdXRVbml0PiBwcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGNvbnN0IExheW91dDo6RWxlbWVu
dEJveCYpOwogCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25VdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25VdGlscy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44OGZlZTBkMjJiMDEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25VdGlscy5j
cHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblV0aWxzLmgiCisKKyNpbmNsdWRlICJMYXlvdXRCb3gu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK0ludGVncmF0
aW9uVXRpbHM6OkludGVncmF0aW9uVXRpbHMoY29uc3QgTGF5b3V0U3RhdGUmIGdsb2JhbExheW91
dFN0YXRlKQorICAgIDogbV9nbG9iYWxMYXlvdXRTdGF0ZShnbG9iYWxMYXlvdXRTdGF0ZSkKK3sK
K30KKwordm9pZCBJbnRlZ3JhdGlvblV0aWxzOjpsYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRG
b3JCb3goY29uc3QgRWxlbWVudEJveCYgYm94LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHdp
ZHRoQ29uc3RyYWludCkgY29uc3QKK3sKKyAgICBtX2dsb2JhbExheW91dFN0YXRlLmxheW91dFdp
dGhGb3JtYXR0aW5nQ29udGV4dEZvckJveChib3gsIHdpZHRoQ29uc3RyYWludCk7Cit9CisKK3N0
ZDo6cGFpcjxMYXlvdXRVbml0LCBMYXlvdXRVbml0PiBJbnRlZ3JhdGlvblV0aWxzOjpwcmVmZXJy
ZWRXaWR0aFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveChjb25zdCBFbGVtZW50Qm94JiBib3gp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ2xvYmFsTGF5b3V0U3RhdGUucHJlZmVycmVkV2lkdGhX
aXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3goYm94KTsKK30KKworfQorfQorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25VdGls
cy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
VXRpbHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJkMzU0YTcx
ZDIzMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvblV0aWxzLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgTGF5b3V0IHsK
KworY2xhc3MgTGF5b3V0U3RhdGU7CisKK2NsYXNzIEludGVncmF0aW9uVXRpbHMgeworcHVibGlj
OgorICAgIEludGVncmF0aW9uVXRpbHMoY29uc3QgTGF5b3V0U3RhdGUmKTsKKworICAgIHZvaWQg
bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gmLCBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IHdpZHRoQ29uc3RyYWludCA9IHsgfSkgY29uc3Q7CisgICAg
c3RkOjpwYWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IHByZWZlcnJlZFdpZHRoV2l0aEZvcm1h
dHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IEVsZW1lbnRCb3gmKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBjb25zdCBMYXlvdXRTdGF0ZSYgbV9nbG9iYWxMYXlvdXRTdGF0ZTsKK307CisKK30KK30K
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJl
ZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJl
ZUJ1aWxkZXIuY3BwCmluZGV4IDczNDM2Yjk2ODdlMy4uMzk5OWIwODgzOTAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIu
Y3BwCkBAIC01NzksNyArNTc5LDcgQEAgdm9pZCBwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1l
bnRzKCkKICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gZmluZCBhIHdheSB0byBvdXRwdXQgZ2Vv
bWV0cnkgd2l0aG91dCBsYXlvdXQgY29udGV4dC4KICAgICAgICAgYXV0byYgcmVuZGVyVmlldyA9
ICpkb2N1bWVudC0+cmVuZGVyVmlldygpOwogICAgICAgICBhdXRvIGxheW91dFRyZWUgPSBUcmVl
QnVpbGRlcjo6YnVpbGRMYXlvdXRUcmVlKHJlbmRlclZpZXcpOwotICAgICAgICBhdXRvIGxheW91
dFN0YXRlID0gTGF5b3V0U3RhdGUgeyBkb2N1bWVudCwgbGF5b3V0VHJlZS0+cm9vdCgpLCBMYXlv
dXQ6OkxheW91dFN0YXRlOjpUeXBlOjpTZWNvbmRhcnksIHsgfSB9OworICAgICAgICBhdXRvIGxh
eW91dFN0YXRlID0gTGF5b3V0U3RhdGUgeyBkb2N1bWVudCwgbGF5b3V0VHJlZS0+cm9vdCgpLCBM
YXlvdXQ6OkxheW91dFN0YXRlOjpUeXBlOjpTZWNvbmRhcnksIHsgfSwgeyB9IH07CiAKICAgICAg
ICAgTGF5b3V0Q29udGV4dChsYXlvdXRTdGF0ZSkubGF5b3V0KHJlbmRlclZpZXcuc2l6ZSgpKTsK
ICAgICAgICAgc2hvd0xheW91dFRyZWUoZG93bmNhc3Q8SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4o
bGF5b3V0U3RhdGUucm9vdCgpKSwgJmxheW91dFN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcAppbmRleCAzZmFjYjFjZjkyYzAuLmUyMWM3ZGRlMTEzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtODAsNyArODAsNyBAQCBSZW5k
ZXJWaWV3OjpSZW5kZXJWaWV3KERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhUeXBlOjpWaWV3LCBkb2N1bWVudCwgV1RGTW92ZShz
dHlsZSkpCiAgICAgLCBtX2ZyYW1lVmlldygqZG9jdW1lbnQudmlldygpKQogICAgICwgbV9pbml0
aWFsQ29udGFpbmluZ0Jsb2NrKG1ha2VVbmlxdWVSZWY8TGF5b3V0OjpJbml0aWFsQ29udGFpbmlu
Z0Jsb2NrPihSZW5kZXJTdHlsZTo6Y2xvbmUodGhpcy0+c3R5bGUoKSkpKQotICAgICwgbV9sYXlv
dXRTdGF0ZShtYWtlVW5pcXVlUmVmPExheW91dDo6TGF5b3V0U3RhdGU+KGRvY3VtZW50LCAqbV9p
bml0aWFsQ29udGFpbmluZ0Jsb2NrLCBMYXlvdXQ6OkxheW91dFN0YXRlOjpUeXBlOjpQcmltYXJ5
LCBMYXlvdXRJbnRlZ3JhdGlvbjo6bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KSkK
KyAgICAsIG1fbGF5b3V0U3RhdGUobWFrZVVuaXF1ZVJlZjxMYXlvdXQ6OkxheW91dFN0YXRlPihk
b2N1bWVudCwgKm1faW5pdGlhbENvbnRhaW5pbmdCbG9jaywgTGF5b3V0OjpMYXlvdXRTdGF0ZTo6
VHlwZTo6UHJpbWFyeSwgTGF5b3V0SW50ZWdyYXRpb246OmxheW91dFdpdGhGb3JtYXR0aW5nQ29u
dGV4dEZvckJveCwgTGF5b3V0SW50ZWdyYXRpb246OnByZWZlcnJlZExvZ2ljYWxXaWR0aHMpKQog
ICAgICwgbV9zZWxlY3Rpb24oKnRoaXMpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBmaW5k
IGEgd2F5IHRvIGVuZm9yY2UgdGhpcyBhdCBjb21waWxlIHRpbWUuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>