<?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>220915</bug_id>
          
          <creation_ts>2021-01-25 04:04:44 -0800</creation_ts>
          <short_desc>Use ScrollSnapOffsetsInfo in the scrolling tree</short_desc>
          <delta_ts>2021-07-07 07:17:56 -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>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>145099</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1722015</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-25 04:04:44 -0800</bug_when>
    <thetext>This bugs track using ScrollSnapOffsetsInfo to abstract away details of the scroll snap offsets in the scrolling tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722017</commentid>
    <comment_count>1</comment_count>
      <attachid>418271</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-25 04:16:41 -0800</bug_when>
    <thetext>Created attachment 418271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722026</commentid>
    <comment_count>2</comment_count>
      <attachid>418274</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-25 04:33:55 -0800</bug_when>
    <thetext>Created attachment 418274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722029</commentid>
    <comment_count>3</comment_count>
      <attachid>418275</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-25 04:46:29 -0800</bug_when>
    <thetext>Created attachment 418275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722033</commentid>
    <comment_count>4</comment_count>
      <attachid>418279</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-25 05:39:49 -0800</bug_when>
    <thetext>Created attachment 418279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722068</commentid>
    <comment_count>5</comment_count>
      <attachid>418290</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-25 07:25:25 -0800</bug_when>
    <thetext>Created attachment 418290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722112</commentid>
    <comment_count>6</comment_count>
      <attachid>418290</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-25 10:10:06 -0800</bug_when>
    <thetext>Comment on attachment 418290
Patch

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

&gt; Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp:118
&gt; +        auto convertOffsetsToFloats = [deviceScaleFactor](const Vector&lt;LayoutUnit&gt;&amp; offsets, Vector&lt;float&gt;&amp; floatOffsets)
&gt; +        {
&gt; +            floatOffsets.reserveInitialCapacity(offsets.size());
&gt; +            for (auto&amp; offset : offsets)
&gt; +                floatOffsets.uncheckedAppend(roundToDevicePixel(offset, deviceScaleFactor, false));
&gt; +        };
&gt; +
&gt; +        auto convertOffsetRangesToFloat = [deviceScaleFactor](const Vector&lt;ScrollOffsetRange&lt;LayoutUnit&gt;&gt;&amp; offsetRanges, Vector&lt;ScrollOffsetRange&lt;float&gt;&gt;&amp; floatOffsetRanges)
&gt; +        {
&gt; +            floatOffsetRanges.reserveInitialCapacity(offsetRanges.size());
&gt; +            for (auto&amp; range : offsetRanges)
&gt; +                floatOffsetRanges.uncheckedAppend({ roundToDevicePixel(range.start, deviceScaleFactor, false), roundToDevicePixel(range.end, deviceScaleFactor, false) });
&gt; +        };
&gt; +
&gt; +        convertOffsetsToFloats(offsetInfo-&gt;horizontalSnapOffsets, floatInfo.horizontalSnapOffsets);
&gt; +        convertOffsetsToFloats(offsetInfo-&gt;verticalSnapOffsets, floatInfo.verticalSnapOffsets);
&gt; +        convertOffsetRangesToFloat(offsetInfo-&gt;horizontalSnapOffsetRanges, floatInfo.horizontalSnapOffsetRanges);
&gt; +        convertOffsetRangesToFloat(offsetInfo-&gt;verticalSnapOffsetRanges, floatInfo.verticalSnapOffsetRanges);

All this conversion should be in some helpers on ScrollSnapOffsetsInfo. Can we do template specialization goop to just have it be a special operator=?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722487</commentid>
    <comment_count>7</comment_count>
      <attachid>418411</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-26 06:17:10 -0800</bug_when>
    <thetext>Created attachment 418411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722488</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-26 06:18:23 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #6)

&gt; All this conversion should be in some helpers on ScrollSnapOffsetsInfo. Can
&gt; we do template specialization goop to just have it be a special operator=?

Thanks for the review. I&apos;ve moved all the conversion functions to 
ScrollSnapOffsetsInfo. I&apos;m using a templated method, because we need to pass in an argument for the device scale when converting from LayoutUnits to floats. The method is called convertUnits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722571</commentid>
    <comment_count>9</comment_count>
      <attachid>418411</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-26 10:13:52 -0800</bug_when>
    <thetext>Comment on attachment 418411
Patch

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722849</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-27 00:41:48 -0800</bug_when>
    <thetext>Committed r271937: &lt;https://trac.webkit.org/changeset/271937&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418411.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722850</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-27 00:42:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/73652510&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418271</attachid>
            <date>2021-01-25 04:16:41 -0800</date>
            <delta_ts>2021-01-25 04:35:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220915-20210125131640.patch</filename>
            <type>text/plain</type>
            <size>46191</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4YjU5NTdmYjgxNTc5
ZTg2ZGRhYzcyMTVjOTMwM2NjZTUxMTAzZS4uYzBmYTU2YjIwMjRiZDk3ZTI4NDU2Zjg4ZWQ5MWJl
OWRjMTFkYWNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTAxLTI1ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgU2Nyb2xs
U25hcE9mZnNldHNJbmZvIGluIHRoZSBzY3JvbGxpbmcgdHJlZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTE1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHNob3VsZCBu
b3QgY2hhbmdlIGJlaGF2aW9yLgorCisgICAgICAgIFVzZSBTY3JvbGxTbmFwT2Zmc2V0cyBtb3Jl
IG9mdGVuIGluIHRoZSBzY3JvbGxpbmcgdHJlZSB0byBjb250aW51ZSB0bworICAgICAgICBhYnN0
cmFjdCBhd2F5IHRoZSBkZXRhaWxzIG9mIGhvdyBzbmFwIG9mZnNldHMgYXJlIGltcGxlbWVudGVk
LgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0Fz
RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0
U2Nyb2xsaW5nTm9kZVNjcm9sbGFibGVBcmVhR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsU25hcFByb3BlcnRpZXNXaXRo
RnJhbWVWaWV3KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6aXNFcXVhbCBj
b25zdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
YXBwbGljYWJsZVByb3BlcnRpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTbmFwT2Zmc2V0c0luZm8pOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6
dXBkYXRlRnJvbVN0YXRlTm9kZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9TY3JvbGxDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxl
cjo6dXBkYXRlU2Nyb2xsU25hcFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRy
b2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6b3RoZXJT
Y3JvbGxFdmVudEF4aXMpOiBEZWxldGVkLgorCiAyMDIxLTAxLTI1ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBOdWxsIFB0ciBEZXJlZiBAIFdl
YkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRiMDUy
NDNhMmRkZDEyMjFlZmMyMTRjMjAwOWM4MWQyZDFjZjdmMjQuLjBlMWJlYjg5YTgxMGI1YzlkOWY1
YzFhOTU1OTc5ZThlZTRhYzcwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDEt
MjUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFVz
ZSBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gaW4gdGhlIHNjcm9sbGluZyB0cmVlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5MTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgU2Nyb2xsU25hcE9mZnNl
dHMgbW9yZSBvZnRlbiBpbiB0aGUgc2Nyb2xsaW5nIHRyZWUgdG8gY29udGludWUgdG8KKyAgICAg
ICAgYWJzdHJhY3QgYXdheSB0aGUgZGV0YWlscyBvZiBob3cgc25hcCBvZmZzZXRzIGFyZSBpbXBs
ZW1lbnRlZC4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChBcmd1bWVudENvZGVyPFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmVuY29kZSk6CisgICAgICAgIChBcmd1bWVudENv
ZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29kZSk6CisgICAgICAgIChBcmd1
bWVudENvZGVyPFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4+OjplbmNvZGUpOgorICAgICAg
ICAoQXJndW1lbnRDb2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYktpdDo6ZHVtcCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6c2hvdWxkU25hcEZvck1h
aW5GcmFtZVNjcm9sbGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5n
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eTo6aGFzQWN0aXZlU25hcFBvaW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6bmVhcmVzdEFjdGl2ZUNvbnRlbnRJbnNldEFkanVzdGVk
U25hcE9mZnNldCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToKKyAgICAgICAgKC1b
V0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmlld0RlbGVnYXRlIHNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dp
bmc6d2l0aFZlbG9jaXR5OnRhcmdldENvbnRlbnRPZmZzZXQ6XSk6CisgICAgICAgIChXZWJLaXQ6
OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJD
aGlsZHJlbik6CisKIDIwMjEtMDEtMjQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzJdIHRoZXZlcmdlLmNvbSAtIHJ1YmJlciBiYW5kIHNj
cm9sbGluZyBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlIGNhdXNlcyBhbiBhYnJ1cHQganVtcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcAppbmRleCBlZDU2YmI2NzA0NzFmYmU3YjZkMmZhMGUxMmQzOGVjODc3
ZmM4NTM3Li5lMGIyOWRhNzA0M2RjYTc0NGI4ODQ5YzcxMDNiMGZkMzBiY2YwZGI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcApAQCAtOTIsMzEgKzkyLDMzIEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQs
IFBsCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi1zdGF0aWMgaW5saW5l
IHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Piogb2Zmc2V0SW5mbywgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9m
ZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgY29uc3QgU2Ny
b2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+KiBvZmZzZXRJbmZvLCBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcikKIHsKKyAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IGZsb2F0SW5m
bzsKKwogICAgIC8vIEZJWE1FOiBJbmNvcnBvcmF0ZSBjdXJyZW50IHBhZ2Ugc2NhbGUgZmFjdG9y
IGluIHNuYXBwaW5nIHRvIGRldmljZSBwaXhlbC4gUGVyaGFwcyB3ZSBzaG91bGQganVzdCBjb252
ZXJ0IHRvIGZsb2F0IGhlcmUgYW5kIGxldCBVSSBwcm9jZXNzIGRvIHRoZSBwaXhlbCBzbmFwcGlu
Zz8KLSAgICBWZWN0b3I8ZmxvYXQ+IHNuYXBPZmZzZXRzQXNGbG9hdDsKICAgICBpZiAob2Zmc2V0
SW5mbykgewotICAgICAgICBjb25zdCBhdXRvJiBvZmZzZXRzID0gb2Zmc2V0SW5mby0+b2Zmc2V0
c0ZvckF4aXMoYXhpcyk7Ci0gICAgICAgIHNuYXBPZmZzZXRzQXNGbG9hdC5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KG9mZnNldHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBvZmZzZXQgOiBv
ZmZzZXRzKQotICAgICAgICAgICAgc25hcE9mZnNldHNBc0Zsb2F0LnVuY2hlY2tlZEFwcGVuZChy
b3VuZFRvRGV2aWNlUGl4ZWwob2Zmc2V0LCBkZXZpY2VTY2FsZUZhY3RvciwgZmFsc2UpKTsKKyAg
ICAgICAgYXV0byBjb252ZXJ0T2Zmc2V0c1RvRmxvYXRzID0gW2RldmljZVNjYWxlRmFjdG9yXShW
ZWN0b3I8TGF5b3V0VW5pdD4gb2Zmc2V0cywgVmVjdG9yPGZsb2F0PiBmbG9hdE9mZnNldHMpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGZsb2F0T2Zmc2V0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG9mZnNldHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgb2Zmc2V0IDogb2Zmc2V0
cykKKyAgICAgICAgICAgICAgICBmbG9hdE9mZnNldHMudW5jaGVja2VkQXBwZW5kKHJvdW5kVG9E
ZXZpY2VQaXhlbChvZmZzZXQsIGRldmljZVNjYWxlRmFjdG9yLCBmYWxzZSkpOworICAgICAgICB9
OworCisgICAgICAgIGF1dG8gY29udmVydE9mZnNldFJhbmdlc1RvRmxvYXQgPSBbZGV2aWNlU2Nh
bGVGYWN0b3JdKFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gb2Zmc2V0UmFu
Z2VzLCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiBmbG9hdE9mZnNldFJhbmdlcykK
KyAgICAgICAgeworICAgICAgICAgICAgZmxvYXRPZmZzZXRSYW5nZXMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShvZmZzZXRSYW5nZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcmFu
Z2UgOiBvZmZzZXRSYW5nZXMpCisgICAgICAgICAgICAgICAgZmxvYXRPZmZzZXRSYW5nZXMudW5j
aGVja2VkQXBwZW5kKHsgcm91bmRUb0RldmljZVBpeGVsKHJhbmdlLnN0YXJ0LCBkZXZpY2VTY2Fs
ZUZhY3RvciwgZmFsc2UpLCByb3VuZFRvRGV2aWNlUGl4ZWwocmFuZ2UuZW5kLCBkZXZpY2VTY2Fs
ZUZhY3RvciwgZmFsc2UpIH0pOworICAgICAgICB9OworCisgICAgICAgIGNvbnZlcnRPZmZzZXRz
VG9GbG9hdHMob2Zmc2V0SW5mby0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBmbG9hdEluZm8uaG9y
aXpvbnRhbFNuYXBPZmZzZXRzKTsKKyAgICAgICAgY29udmVydE9mZnNldHNUb0Zsb2F0cyhvZmZz
ZXRJbmZvLT52ZXJ0aWNhbFNuYXBPZmZzZXRzLCBmbG9hdEluZm8udmVydGljYWxTbmFwT2Zmc2V0
cyk7CisgICAgICAgIGNvbnZlcnRPZmZzZXRSYW5nZXNUb0Zsb2F0KG9mZnNldEluZm8tPmhvcml6
b250YWxTbmFwT2Zmc2V0UmFuZ2VzLCBmbG9hdEluZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5n
ZXMpOworICAgICAgICBjb252ZXJ0T2Zmc2V0UmFuZ2VzVG9GbG9hdChvZmZzZXRJbmZvLT52ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXMsIGZsb2F0SW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMp
OwogICAgIH0KIAotICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+IHNuYXBPZmZz
ZXRSYW5nZXNBc0Zsb2F0OwotICAgIGlmIChvZmZzZXRJbmZvKSB7Ci0gICAgICAgIGNvbnN0IGF1
dG8mIHNuYXBPZmZzZXRSYW5nZXMgPSBvZmZzZXRJbmZvLT5vZmZzZXRSYW5nZXNGb3JBeGlzKGF4
aXMpOwotICAgICAgICBzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHNuYXBPZmZzZXRSYW5nZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiByYW5nZSA6
IHNuYXBPZmZzZXRSYW5nZXMpCi0gICAgICAgICAgICBzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdC51
bmNoZWNrZWRBcHBlbmQoeyByb3VuZFRvRGV2aWNlUGl4ZWwocmFuZ2Uuc3RhcnQsIGRldmljZVNj
YWxlRmFjdG9yLCBmYWxzZSksIHJvdW5kVG9EZXZpY2VQaXhlbChyYW5nZS5lbmQsIGRldmljZVNj
YWxlRmFjdG9yLCBmYWxzZSkgfSk7Ci0gICAgfQotICAgIGlmIChheGlzID09IFNjcm9sbEV2ZW50
QXhpczo6SG9yaXpvbnRhbCkgewotICAgICAgICBub2RlLnNldEhvcml6b250YWxTbmFwT2Zmc2V0
cyhzbmFwT2Zmc2V0c0FzRmxvYXQpOwotICAgICAgICBub2RlLnNldEhvcml6b250YWxTbmFwT2Zm
c2V0UmFuZ2VzKHNuYXBPZmZzZXRSYW5nZXNBc0Zsb2F0KTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBub2RlLnNldFZlcnRpY2FsU25hcE9mZnNldHMoc25hcE9mZnNldHNBc0Zsb2F0KTsKLSAgICAg
ICAgbm9kZS5zZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoc25hcE9mZnNldFJhbmdlc0FzRmxv
YXQpOwotICAgIH0KKyAgICBub2RlLnNldFNuYXBPZmZzZXRzSW5mbyhmbG9hdEluZm8pOwogfQog
I2VuZGlmCiAKQEAgLTcxNCw4ICs3MTYsNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnNldFNjcm9sbGluZ05vZGVTY3JvbGxhYmxlQXJlYUdlb21ldHJ5KFNjcm9sbGluZwogCiAj
aWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBzY3JvbGxhYmxlQXJlYS51cGRhdGVTbmFw
T2Zmc2V0cygpOwotICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdChz
Y3JvbGxpbmdOb2RlLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9sbGFibGVBcmVh
LnNuYXBPZmZzZXRJbmZvKCksIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgc2V0
U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KHNjcm9sbGluZ05vZGUsIFNjcm9s
bEV2ZW50QXhpczo6VmVydGljYWwsICBzY3JvbGxhYmxlQXJlYS5zbmFwT2Zmc2V0SW5mbygpLCBt
X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNu
YXBPZmZzZXRzQXNGbG9hdChzY3JvbGxpbmdOb2RlLCBzY3JvbGxhYmxlQXJlYS5zbmFwT2Zmc2V0
SW5mbygpLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIHNjcm9sbGluZ05vZGUu
c2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleChzY3JvbGxhYmxlQXJlYS5jdXJyZW50
SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkpOwogICAgIHNjcm9sbGluZ05vZGUuc2V0Q3VycmVu
dFZlcnRpY2FsU25hcFBvaW50SW5kZXgoc2Nyb2xsYWJsZUFyZWEuY3VycmVudFZlcnRpY2FsU25h
cFBvaW50SW5kZXgoKSk7CiAjZW5kaWYKQEAgLTkwOSw4ICs5MTAsNyBAQCBib29sIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoU2Nyb2xsaW5nTm9kZUlE
IG5vZGVJRCkgYwogdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxT
bmFwUHJvcGVydGllc1dpdGhGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7
CiAgICAgaWYgKGF1dG8gbm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LnNj
cm9sbGluZ05vZGVJRCgpKSkpIHsKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9m
ZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIGZyYW1lVmll
dy5zbmFwT2Zmc2V0SW5mbygpLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgICAg
ICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2
ZW50QXhpczo6VmVydGljYWwsIGZyYW1lVmlldy5zbmFwT2Zmc2V0SW5mbygpLCBtX3BhZ2UtPmRl
dmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zm
c2V0c0FzRmxvYXQoKm5vZGUsIGZyYW1lVmlldy5zbmFwT2Zmc2V0SW5mbygpLCBtX3BhZ2UtPmRl
dmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBub2RlLT5zZXRDdXJyZW50SG9yaXpvbnRhbFNu
YXBQb2ludEluZGV4KGZyYW1lVmlldy5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkp
OwogICAgICAgICBub2RlLT5zZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChmcmFtZVZp
ZXcuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRl
eCA0OGQ3OWJmYWIwOWYwYjMxOTBjMzMxYjg0ZTFmMWVhMzcwZmFlMDI3Li43Y2UzYjViNjU1YzMy
ZTc2ZTAwNTM2ODVkOWU0ODI4ZmY5MzQyNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApAQCAtNTksNiArNTksMTEg
QEAgc3RydWN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbyB7CiAgICAgVmVjdG9yPFNjcm9sbE9mZnNl
dFJhbmdlPFQ+PiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKICAgICBWZWN0b3I8U2Nyb2xs
T2Zmc2V0UmFuZ2U8VD4+IHZlcnRpY2FsU25hcE9mZnNldFJhbmdlczsKIAorICAgIGJvb2wgaXNF
cXVhbChjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88VD4mIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGhvcml6b250YWxTbmFwT2Zmc2V0cyA9PSBvdGhlci5ob3Jpem9udGFs
U25hcE9mZnNldHMgJiYgdmVydGljYWxTbmFwT2Zmc2V0cyA9PSBvdGhlci52ZXJ0aWNhbFNuYXBP
ZmZzZXRzICYmIGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzID09IG90aGVyLmhvcml6b250YWxT
bmFwT2Zmc2V0UmFuZ2VzICYmIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyA9PSBvdGhlci52ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXM7CisgICAgfQorCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBob3Jpem9udGFsU25hcE9mZnNldHMuaXNFbXB0eSgpICYm
IHZlcnRpY2FsU25hcE9mZnNldHMuaXNFbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuaAppbmRleCBiM2Q1NTBjMmU3Mzc3MGJl
Y2M3MjUyM2QxNWM5MjVlZjU2ZDY5M2Q3Li4zN2MyZGFhY2YwNGJkZjZiYzU2NzQwOGU1NTFkOWMz
M2I2MzZjMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZU5vZGUuaApAQCAtMjMwLDQ3ICsyMzAsNDQgQEAgcHVibGljOgogICAgICAgICBT
Y3JvbGxhYmxlQXJlYVBhcmFtcyAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCA3LAog
ICAgICAgICBSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxpbmcgICAgICAgICAgICAgID0gMUxM
VSA8PCA4LAogICAgICAgICBSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiAgICAgICAgICAgICAgICAg
ICAgID0gMUxMVSA8PCA5LAotICAgICAgICBIb3Jpem9udGFsU25hcE9mZnNldHMgICAgICAgICAg
ICAgICAgICAgICAgID0gMUxMVSA8PCAxMCwKLSAgICAgICAgVmVydGljYWxTbmFwT2Zmc2V0cyAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTEsCi0gICAgICAgIEhvcml6b250YWxT
bmFwT2Zmc2V0UmFuZ2VzICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDEyLAotICAgICAgICBW
ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxMywK
LSAgICAgICAgQ3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXggICAgICAgICAgICA9IDFM
TFUgPDwgMTQsCi0gICAgICAgIEN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCAgICAgICAg
ICAgICAgPSAxTExVIDw8IDE1LAotICAgICAgICBJc01vbml0b3JpbmdXaGVlbEV2ZW50cyAgICAg
ICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxNiwKLSAgICAgICAgU2Nyb2xsQ29udGFpbmVyTGF5
ZXIgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTcsCi0gICAgICAgIFNjcm9sbGVk
Q29udGVudHNMYXllciAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDE4LAotICAgICAg
ICBIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAx
OSwKLSAgICAgICAgVmVydGljYWxTY3JvbGxiYXJMYXllciAgICAgICAgICAgICAgICAgICAgICA9
IDFMTFUgPDwgMjAsCi0gICAgICAgIFBhaW50ZXJGb3JTY3JvbGxiYXIgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxTExVIDw8IDIxLAorICAgICAgICBTbmFwT2Zmc2V0c0luZm8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxMCwKKyAgICAgICAgQ3VycmVudEhvcml6b250
YWxTbmFwT2Zmc2V0SW5kZXggICAgICAgICAgICA9IDFMTFUgPDwgMTEsCisgICAgICAgIEN1cnJl
bnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCAgICAgICAgICAgICAgPSAxTExVIDw8IDEyLAorICAg
ICAgICBJc01vbml0b3JpbmdXaGVlbEV2ZW50cyAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8
PCAxMywKKyAgICAgICAgU2Nyb2xsQ29udGFpbmVyTGF5ZXIgICAgICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgPDwgMTQsCisgICAgICAgIFNjcm9sbGVkQ29udGVudHNMYXllciAgICAgICAgICAg
ICAgICAgICAgICAgPSAxTExVIDw8IDE1LAorICAgICAgICBIb3Jpem9udGFsU2Nyb2xsYmFyTGF5
ZXIgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxNiwKKyAgICAgICAgVmVydGljYWxTY3Jv
bGxiYXJMYXllciAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTcsCisgICAgICAgIFBh
aW50ZXJGb3JTY3JvbGxiYXIgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDE4LAog
ICAgICAgICAvLyBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZQotICAgICAgICBGcmFt
ZVNjYWxlRmFjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyMiwKLSAg
ICAgICAgRXZlbnRUcmFja2luZ1JlZ2lvbiAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUg
PDwgMjMsCi0gICAgICAgIFJvb3RDb250ZW50c0xheWVyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAxTExVIDw8IDI0LAotICAgICAgICBDb3VudGVyU2Nyb2xsaW5nTGF5ZXIgICAgICAgICAg
ICAgICAgICAgICAgID0gMUxMVSA8PCAyNSwKLSAgICAgICAgSW5zZXRDbGlwTGF5ZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjYsCi0gICAgICAgIENvbnRlbnRTaGFk
b3dMYXllciAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDI3LAotICAgICAgICBI
ZWFkZXJIZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyOCwK
LSAgICAgICAgRm9vdGVySGVpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFM
TFUgPDwgMjksCi0gICAgICAgIEhlYWRlckxheWVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAxTExVIDw8IDMwLAotICAgICAgICBGb290ZXJMYXllciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMUxMVSA8PCAzMSwKLSAgICAgICAgQmVoYXZpb3JGb3JGaXhlZEVs
ZW1lbnRzICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMzIsCi0gICAgICAgIFRvcENvbnRl
bnRJbnNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDMzLAotICAgICAg
ICBGaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lICAgICAgICAgID0gMUxMVSA8PCAz
NCwKLSAgICAgICAgVmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQgICA9
IDFMTFUgPDwgMzUsCi0gICAgICAgIEFzeW5jRnJhbWVPck92ZXJmbG93U2Nyb2xsaW5nRW5hYmxl
ZCAgICAgICAgPSAxTExVIDw8IDM2LAotICAgICAgICBXaGVlbEV2ZW50R2VzdHVyZXNCZWNvbWVO
b25CbG9ja2luZyAgICAgICAgID0gMUxMVSA8PCAzNywKLSAgICAgICAgU2Nyb2xsaW5nUGVyZm9y
bWFuY2VUZXN0aW5nRW5hYmxlZCAgICAgICAgICA9IDFMTFUgPDwgMzgsCi0gICAgICAgIExheW91
dFZpZXdwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDM5LAotICAg
ICAgICBNaW5MYXlvdXRWaWV3cG9ydE9yaWdpbiAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8
PCA0MCwKLSAgICAgICAgTWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4gICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgPDwgNDEsCi0gICAgICAgIE92ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplICAgICAg
ICAgICAgICAgICAgPSAxTExVIDw8IDQyLAorICAgICAgICBGcmFtZVNjYWxlRmFjdG9yICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxOSwKKyAgICAgICAgRXZlbnRUcmFja2lu
Z1JlZ2lvbiAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjAsCisgICAgICAgIFJv
b3RDb250ZW50c0xheWVyICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDIxLAor
ICAgICAgICBDb3VudGVyU2Nyb2xsaW5nTGF5ZXIgICAgICAgICAgICAgICAgICAgICAgID0gMUxM
VSA8PCAyMiwKKyAgICAgICAgSW5zZXRDbGlwTGF5ZXIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDFMTFUgPDwgMjMsCisgICAgICAgIENvbnRlbnRTaGFkb3dMYXllciAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAxTExVIDw8IDI0LAorICAgICAgICBIZWFkZXJIZWlnaHQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyNSwKKyAgICAgICAgRm9vdGVySGVp
Z2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjYsCisgICAgICAg
IEhlYWRlckxheWVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDI3
LAorICAgICAgICBGb290ZXJMYXllciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
MUxMVSA8PCAyOCwKKyAgICAgICAgQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzICAgICAgICAgICAg
ICAgICAgICA9IDFMTFUgPDwgMjksCisgICAgICAgIFRvcENvbnRlbnRJbnNldCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDMwLAorICAgICAgICBGaXhlZEVsZW1lbnRzTGF5
b3V0UmVsYXRpdmVUb0ZyYW1lICAgICAgICAgID0gMUxMVSA8PCAzMSwKKyAgICAgICAgVmlzdWFs
Vmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQgICA9IDFMTFUgPDwgMzIsCisgICAg
ICAgIEFzeW5jRnJhbWVPck92ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZCAgICAgICAgPSAxTExVIDw8
IDMzLAorICAgICAgICBXaGVlbEV2ZW50R2VzdHVyZXNCZWNvbWVOb25CbG9ja2luZyAgICAgICAg
ID0gMUxMVSA8PCAzNCwKKyAgICAgICAgU2Nyb2xsaW5nUGVyZm9ybWFuY2VUZXN0aW5nRW5hYmxl
ZCAgICAgICAgICA9IDFMTFUgPDwgMzUsCisgICAgICAgIExheW91dFZpZXdwb3J0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDM2LAorICAgICAgICBNaW5MYXlvdXRWaWV3
cG9ydE9yaWdpbiAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAzNywKKyAgICAgICAgTWF4
TGF5b3V0Vmlld3BvcnRPcmlnaW4gICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMzgsCisg
ICAgICAgIE92ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplICAgICAgICAgICAgICAgICAgPSAxTExV
IDw8IDM5LAogICAgICAgICAvLyBTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlCi0gICAgICAg
IFJlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzICAgICAgICAgICAgICAgPSAxTExVIDw8IDQz
LAotICAgICAgICBMYXlvdXRDb25zdHJhaW50RGF0YSAgICAgICAgICAgICAgICAgICAgICAgID0g
MUxMVSA8PCA0NCwKKyAgICAgICAgUmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMgICAgICAg
ICAgICAgICA9IDFMTFUgPDwgNDAsCisgICAgICAgIExheW91dENvbnN0cmFpbnREYXRhICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDQxLAogICAgICAgICAvLyBTY3JvbGxpbmdTdGF0
ZUZpeGVkTm9kZSwgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlCi0gICAgICAgIFZpZXdwb3J0Q29u
c3RyYWludHMgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDQ1LAorICAgICAgICBW
aWV3cG9ydENvbnN0cmFpbnRzICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCA0MiwK
ICAgICAgICAgLy8gU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZQotICAgICAg
ICBPdmVyZmxvd1Njcm9sbGluZ05vZGUgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCA0
NiwKKyAgICAgICAgT3ZlcmZsb3dTY3JvbGxpbmdOb2RlICAgICAgICAgICAgICAgICAgICAgICA9
IDFMTFUgPDwgNDMsCiAgICAgfTsKICAgICAKICAgICBib29sIGhhc0NoYW5nZWRQcm9wZXJ0aWVz
KCkgY29uc3QgeyByZXR1cm4gIW1fY2hhbmdlZFByb3BlcnRpZXMuaXNFbXB0eSgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCAyZDY4NmRlZTYzNjA5NGZiMjg5Zjc3NmQzMTAwZmI4
N2I3NWRiMTM2Li5mNDA4MTlhZmUzY2VmZDM0ODE4MDZmNDE3OTllOTA1OTg3NWY4MGUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTk0LDEwICs5NCw3IEBAIE9wdGlvblNldDxTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5PiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmFw
cGxpY2FibGVQCiAgICAgICAgIFByb3BlcnR5OjpSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxp
bmcsCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgICAgICBQcm9wZXJ0
eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzLAotICAgICAgICBQcm9wZXJ0eTo6VmVydGljYWxTbmFw
T2Zmc2V0cywKLSAgICAgICAgUHJvcGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzLAot
ICAgICAgICBQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLAorICAgICAgICBQcm9w
ZXJ0eTo6U25hcE9mZnNldHNJbmZvLAogICAgICAgICBQcm9wZXJ0eTo6Q3VycmVudEhvcml6b250
YWxTbmFwT2Zmc2V0SW5kZXgsCiAgICAgICAgIFByb3BlcnR5OjpDdXJyZW50VmVydGljYWxTbmFw
T2Zmc2V0SW5kZXgsCiAgICAgICAgIFByb3BlcnR5OjpJc01vbml0b3JpbmdXaGVlbEV2ZW50cywK
QEAgLTE2MCw0MCArMTU3LDEzIEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpz
ZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbikKIH0KIAogI2lmIEVO
QUJMRShDU1NfU0NST0xMX1NOQVApCi12b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
c2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRz
KQordm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNuYXBPZmZzZXRzSW5mbyhj
b25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBpbmZvKQogewotICAgIGlmIChtX3Nu
YXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMgPT0gc25hcE9mZnNldHMpCisgICAg
aWYgKG1fc25hcE9mZnNldHNJbmZvLmlzRXF1YWwoaW5mbykpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cyA9IHNuYXBPZmZzZXRz
OwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRz
KTsKLX0KLQotdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFZlcnRpY2FsU25h
cE9mZnNldHMoY29uc3QgVmVjdG9yPGZsb2F0PiYgc25hcE9mZnNldHMpCi17Ci0gICAgaWYgKG1f
c25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldHMgPT0gc25hcE9mZnNldHMpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldHMg
PSBzbmFwT2Zmc2V0czsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6OlZlcnRpY2Fs
U25hcE9mZnNldHMpOwotfQotCi12b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0
SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdl
PGZsb2F0Pj4mIHNjcm9sbE9mZnNldFJhbmdlcykKLXsKLSAgICBpZiAobV9zbmFwT2Zmc2V0c0lu
Zm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMgPT0gc2Nyb2xsT2Zmc2V0UmFuZ2VzKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNl
dFJhbmdlcyA9IHNjcm9sbE9mZnNldFJhbmdlczsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJv
cGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OnNldFZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyhjb25zdCBWZWN0
b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgc2Nyb2xsT2Zmc2V0UmFuZ2VzKQotewotICAg
IGlmIChtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPT0gc2Nyb2xs
T2Zmc2V0UmFuZ2VzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3NuYXBPZmZzZXRzSW5mby52
ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPSBzY3JvbGxPZmZzZXRSYW5nZXM7Ci0gICAgc2V0UHJv
cGVydHlDaGFuZ2VkKFByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpOworICAgIG1f
c25hcE9mZnNldHNJbmZvID0gaW5mbzsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6
OlNuYXBPZmZzZXRzSW5mbyk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkIGluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuaAppbmRleCA0MDlhZTlkOWFlNjc5MDNlZjZiYWEyOWY1YmQyNzRlNGMz
ZGIxNDVlLi5iZDRlOTdiOWM1ZWZkZjkxMjlkZWY4YjZiYjIzMGQzN2I0MTY0MDQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuaApAQCAtNzEsMTcgKzcxLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50Jik7CiAKICNpZiBFTkFC
TEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWxT
bmFwT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxT
bmFwT2Zmc2V0czsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SG9yaXpvbnRhbFNuYXBP
ZmZzZXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKLQotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4m
IHZlcnRpY2FsU25hcE9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby52
ZXJ0aWNhbFNuYXBPZmZzZXRzOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWZXJ0aWNh
bFNuYXBPZmZzZXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKLQotICAgIGNvbnN0IFZlY3RvcjxT
Y3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpIGNv
bnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2Vz
OyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIb3Jpem9udGFsU25hcE9mZnNldFJhbmdl
cyhjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYpOwotCi0gICAgY29uc3Qg
VmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIHZlcnRpY2FsU25hcE9mZnNldFJhbmdl
cygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldFJh
bmdlczsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmVydGljYWxTbmFwT2Zmc2V0UmFu
Z2VzKGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+Jik7CisgICAgY29uc3Qg
U2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgc25hcE9mZnNldHNJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm87IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNu
YXBPZmZzZXRzSW5mbyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBuZXdPZmZz
ZXRzSW5mbyk7CiAKICAgICB1bnNpZ25lZCBjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4OyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
KHVuc2lnbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCA5MGI1MGMyMjExMzNlYTQz
NmU4NjFmZWVlOGU4NzUxM2NiNTIzYmIzLi4xMzBlNzNlZGJjMjhjMDgyODgzMWE1OGMyMmYzYzUx
Y2U2N2QxMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCkBAIC03NSwxNyArNzUsOCBAQCB2
b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVu
KGNvbnN0IFNjcm9sbGluZ1N0YXRlTgogICAgICAgICBtX3Njcm9sbE9yaWdpbiA9IHN0YXRlLnNj
cm9sbE9yaWdpbigpOwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBpZiAoc3Rh
dGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6
b250YWxTbmFwT2Zmc2V0cykpCi0gICAgICAgIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxT
bmFwT2Zmc2V0cyA9IHN0YXRlLmhvcml6b250YWxTbmFwT2Zmc2V0cygpOwotCi0gICAgaWYgKHN0
YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0
aWNhbFNuYXBPZmZzZXRzKSkKLSAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFw
T2Zmc2V0cyA9IHN0YXRlLnZlcnRpY2FsU25hcE9mZnNldHMoKTsKLQotICAgIGlmIChzdGF0ZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRh
bFNuYXBPZmZzZXRSYW5nZXMpKQotICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFs
U25hcE9mZnNldFJhbmdlcyA9IHN0YXRlLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCk7Ci0K
LSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlZlcnRpY2FsU25hcE9mZnNldFJhbmdlcykpCi0gICAgICAgIG1fc25hcE9mZnNldHNJ
bmZvLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyA9IHN0YXRlLnZlcnRpY2FsU25hcE9mZnNldFJh
bmdlcygpOworICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6U25hcE9mZnNldHNJbmZvKSkKKyAgICAgICAgbV9zbmFwT2Zmc2V0c0lu
Zm8gPSBzdGF0ZS5zbmFwT2Zmc2V0c0luZm8oKTsKIAogICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudEhvcml6b250YWxT
bmFwT2Zmc2V0SW5kZXgpKQogICAgICAgICBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXggPSBzdGF0ZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCk7CkBAIC0zMzUsNiAr
MzI2LDEzIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVz
KFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCitjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6c25hcE9mZnNldHNJbmZvKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm87Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5oCmluZGV4IDg2MmMxYjNkYmUwZTIzZTE2OWZhNTJjYWE0NjJmZWZkZjE0ZGU4MTguLmJl
NDlkMGIxMjVmMDFiNzFlZDZkOGJjYWU0ZjZlMjc3NTBjMzg0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaApAQCAtOTUsMTAgKzk1LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuSGF2ZVNjcm9sbGJh
cnMoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy5ob3Jpem9udGFs
U2Nyb2xsYmFyTW9kZSAhPSBTY3JvbGxiYXJBbHdheXNPZmYgfHwgbV9zY3JvbGxhYmxlQXJlYVBh
cmFtZXRlcnMudmVydGljYWxTY3JvbGxiYXJNb2RlICE9IFNjcm9sbGJhckFsd2F5c09mZjsgfQog
CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBo
b3Jpem9udGFsU25hcE9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby5o
b3Jpem9udGFsU25hcE9mZnNldHM7IH0KLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNh
bFNuYXBPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxT
bmFwT2Zmc2V0czsgfQotICAgIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+
JiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNl
dHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzOyB9Ci0gICAgY29uc3QgVmVjdG9yPFNj
cm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpIGNvbnN0
IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlczsgfQor
ICAgIGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIHNuYXBPZmZzZXRzSW5mbygp
IGNvbnN0OwogICAgIHVuc2lnbmVkIGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBj
b25zdCB7IHJldHVybiBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXg7IH0KICAgICB1
bnNpZ25lZCBjdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXg7IH0KICAgICB2b2lkIHNldEN1cnJlbnRIb3Jp
em9udGFsU25hcFBvaW50SW5kZXgodW5zaWduZWQgaW5kZXgpIHsgbV9jdXJyZW50SG9yaXpvbnRh
bFNuYXBQb2ludEluZGV4ID0gaW5kZXg7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYy5oCmluZGV4IDMyYTgzOGViNmYzZGE0Mzk4M2JjZmY1NWI3Y2M0MTgx
NTU3MzRlOWYuLjlhMTFiNmExZjVkZDY2MzljMWJlN2FlZGNlYmMzMDQ4ZjJiZGU2NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaApAQCAtNTUsOCAr
NTUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjdXJyZW50U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCk7
CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIHZvaWQgdXBkYXRlU2Nyb2xsU25h
cFBvaW50cyhTY3JvbGxFdmVudEF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYsIGNvbnN0
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mKTsKLSAgICB2b2lkIHNldEFj
dGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzLCB1bnNpZ25lZCk7CiAg
ICAgYm9vbCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UoKSBjb25zdDsKICAgICB1bnNp
Z25lZCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcykgY29uc3Q7
CiAgICAgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCmluZGV4IDc0MGEzMzNhZjE3YjBl
YmEzNGJmZWZhYjBhMzVhYTFlYjljZDdlZDAuLjg3MmNjMjcyMTZmNGJkMzhhOTJhNTllODNmMjhm
NjQ5ZGQ1ZmRiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjLm1tCkBAIC03NSw2ICs3NSwxNiBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxTY3JvbGxP
ZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gY29udmVydFRvTGF5b3V0VW5pdHMoY29uc3QgVgogCiAg
ICAgcmV0dXJuIHNuYXBPZmZzZXRSYW5nZXM7CiB9CisKK3N0YXRpYyBpbmxpbmUgU2Nyb2xsU25h
cE9mZnNldHNJbmZvPExheW91dFVuaXQ+IGNvbnZlcnRUb0xheW91dFVuaXRzKGNvbnN0IFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIHNuYXBPZmZzZXRzSW5mb0FzRmxvYXQpCit7CisgICAg
cmV0dXJuIHsKKyAgICAgICAgY29udmVydFRvTGF5b3V0VW5pdHMoc25hcE9mZnNldHNJbmZvQXNG
bG9hdC52ZXJ0aWNhbFNuYXBPZmZzZXRzKSwKKyAgICAgICAgY29udmVydFRvTGF5b3V0VW5pdHMo
c25hcE9mZnNldHNJbmZvQXNGbG9hdC5ob3Jpem9udGFsU25hcE9mZnNldHMpLAorICAgICAgICBj
b252ZXJ0VG9MYXlvdXRVbml0cyhzbmFwT2Zmc2V0c0luZm9Bc0Zsb2F0LnZlcnRpY2FsU25hcE9m
ZnNldFJhbmdlcyksCisgICAgICAgIGNvbnZlcnRUb0xheW91dFVuaXRzKHNuYXBPZmZzZXRzSW5m
b0FzRmxvYXQuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpCisgICAgfTsKK30KICNlbmRpZgog
CiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnVwZGF0ZUZyb21T
dGF0ZU5vZGUoY29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdTdGF0
ZU5vZGUpCkBAIC04NiwzMCArOTYsMTcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjOjp1cGRhdGVGcm9tU3RhdGVOb2RlKGNvbnN0IFNjcm9sbGluZ1MKICAgICB9
CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6
b250YWxTbmFwT2Zmc2V0cykgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldFJhbmdl
cykpCi0gICAgICAgIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jp
em9udGFsLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUuaG9yaXpvbnRh
bFNuYXBPZmZzZXRzKCkpLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUu
aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSkpOwotCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRl
Tm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVy
dGljYWxTbmFwT2Zmc2V0cykgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMp
KQotICAgICAgICB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpczo6VmVydGlj
YWwsIGNvbnZlcnRUb0xheW91dFVuaXRzKHNjcm9sbGluZ1N0YXRlTm9kZS52ZXJ0aWNhbFNuYXBP
ZmZzZXRzKCkpLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUudmVydGlj
YWxTbmFwT2Zmc2V0UmFuZ2VzKCkpKTsKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0lu
Zm8pKQorICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIudXBkYXRlU2Nyb2xsU25hcFBvaW50cyhj
b252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUuc25hcE9mZnNldHNJbmZvKCkp
KTsKIAogICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4
KSkKLSAgICAgICAgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwsIHNjcm9sbGluZ1N0YXRlTm9kZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQ
b2ludEluZGV4KCkpOwotICAgIAorICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIuc2V0QWN0aXZl
U2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9s
bGluZ1N0YXRlTm9kZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkpOworCiAgICAg
aWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4KSkKLSAgICAgICAg
c2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2Fs
LCBzY3JvbGxpbmdTdGF0ZU5vZGUuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7Cisg
ICAgICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlz
KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHNjcm9sbGluZ1N0YXRlTm9kZS5jdXJyZW50VmVy
dGljYWxTbmFwUG9pbnRJbmRleCgpKTsKICNlbmRpZgogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZl
bnRBeGlzIGF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcE9mZnNldHMsIGNvbnN0
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIHNuYXBSYW5nZXMpCi17Ci0g
ICAgbV9zY3JvbGxDb250cm9sbGVyLnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoYXhpcywgc25hcE9m
ZnNldHMsIHNuYXBSYW5nZXMpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWM6OnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRB
eGlzIGF4aXMsIHVuc2lnbmVkIGluZGV4KQotewotICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zZXRB
Y3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKGF4aXMsIGluZGV4KTsKLX0KLQogdW5zaWduZWQg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWN0aXZlU2Nyb2xsU25hcElu
ZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKIHsKICAgICByZXR1cm4gbV9z
Y3JvbGxDb250cm9sbGVyLmFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoYXhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgKaW5kZXgg
NzMwMzI0NGZjNjBmZWYzNDM5MGFkNjRlMjUxOWFjNWViMjMyMTUwNS4uOTQ0Yjk4MDZkNDY4NjI0
MDNiMTkwNDdmNmZmZDdkYThhNDA4ZTg3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaApAQCAtMTU4LDcgKzE1OCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZCgpOwogCiAjaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKLSAgICB2b2lkIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlz
LCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFu
Z2U8TGF5b3V0VW5pdD4+Jik7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKGNvbnN0
IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYpOwogICAgIHZvaWQgc2V0QWN0aXZl
U2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMsIHVuc2lnbmVkKTsKICAgICB2
b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzRm9yT2Zmc2V0KFNjcm9sbE9mZnNldCk7CiAg
ICAgYm9vbCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UoKSBjb25zdCB7IHJldHVybiBt
X2FjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KaW5kZXggZDgxODVjM2I2N2U5YTNm
MDgyYjQzN2RhODVhNGYxZjg2MjY5Y2U0YS4uOGRiYTE3YTI2ZTRlMWI0OGY3NzdlZDRjZTJhOGY2
ZmQyYTA1OGIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Ny
b2xsQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3Jv
bGxDb250cm9sbGVyLm1tCkBAIC04MSwxMSArODEsNiBAQCBzdGF0aWMgZmxvYXQgc2Nyb2xsV2hl
ZWxNdWx0aXBsaWVyKCkKIH0KICNlbmRpZgogCi1zdGF0aWMgU2Nyb2xsRXZlbnRBeGlzIG90aGVy
U2Nyb2xsRXZlbnRBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzKQotewotICAgIHJldHVybiBheGlz
ID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IFNjcm9sbEV2ZW50QXhpczo6VmVydGlj
YWwgOiBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWw7Ci19Ci0KIFNjcm9sbENvbnRyb2xsZXI6
OlNjcm9sbENvbnRyb2xsZXIoU2Nyb2xsQ29udHJvbGxlckNsaWVudCYgY2xpZW50KQogICAgIDog
bV9jbGllbnQoY2xpZW50KQogewpAQCAtODMxLDcgKzgyNiwxNyBAQCB2b2lkIFNjcm9sbENvbnRy
b2xsZXI6OnNjcm9sbFNuYXBUaW1lckZpcmVkKCkKIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBk
YXRlU2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkK
IHsKICAgICBjb25zdCBhdXRvKiBzbmFwT2Zmc2V0SW5mbyA9IHNjcm9sbGFibGVBcmVhLnNuYXBP
ZmZzZXRJbmZvKCk7Ci0gICAgaWYgKCFzbmFwT2Zmc2V0SW5mbyB8fCBzbmFwT2Zmc2V0SW5mby0+
aXNFbXB0eSgpKSB7CisgICAgaWYgKCFzbmFwT2Zmc2V0SW5mbykgeworICAgICAgICBtX3Njcm9s
bFNuYXBTdGF0ZSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1cGRh
dGVTY3JvbGxTbmFwUG9pbnRzKCpzbmFwT2Zmc2V0SW5mbyk7Cit9CisKK3ZvaWQgU2Nyb2xsQ29u
dHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm88TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRJbmZvKQoreworICAgIGlmIChzbmFwT2Zmc2V0SW5m
by5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBudWxscHRyOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtODQwLDcgKzg0NSw3IEBAIHZvaWQgU2Nyb2xsQ29udHJv
bGxlcjo6dXBkYXRlU2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxh
YmxlQXJlCiAgICAgaWYgKCFtX3Njcm9sbFNuYXBTdGF0ZSkKICAgICAgICAgbV9zY3JvbGxTbmFw
U3RhdGUgPSBtYWtlVW5pcXVlPFNjcm9sbFNuYXBBbmltYXRvclN0YXRlPigpOwogCi0gICAgbV9z
Y3JvbGxTbmFwU3RhdGUtPnNldFNuYXBPZmZzZXRJbmZvKCpzbmFwT2Zmc2V0SW5mbyk7CisgICAg
bV9zY3JvbGxTbmFwU3RhdGUtPnNldFNuYXBPZmZzZXRJbmZvKHNuYXBPZmZzZXRJbmZvKTsKIAog
ICAgIGlmIChzaG91bGRDb21wdXRlQ3VycmVudFNuYXBJbmRpY2VzKQogICAgICAgICBzZXRBY3Rp
dmVTY3JvbGxTbmFwSW5kaWNlc0Zvck9mZnNldChyb3VuZGVkSW50UG9pbnQobV9jbGllbnQuc2Ny
b2xsT2Zmc2V0KCkpKTsKQEAgLTg0OCwyOCArODUzLDYgQEAgdm9pZCBTY3JvbGxDb250cm9sbGVy
Ojp1cGRhdGVTY3JvbGxTbmFwU3RhdGUoY29uc3QgU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVB
cmUKICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICJTY3JvbGxDb250
cm9sbGVyICIgPDwgdGhpcyA8PCAiIHVwZGF0ZVNjcm9sbFNuYXBTdGF0ZSBmb3IgIiA8PCBzY3Jv
bGxhYmxlQXJlYSA8PCAiIG5ldyBzdGF0ZSAiIDw8IFZhbHVlT3JOdWxsKG1fc2Nyb2xsU25hcFN0
YXRlLmdldCgpKSk7CiB9CiAKLXZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25h
cFBvaW50cyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBz
bmFwUG9pbnRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBz
bmFwUmFuZ2VzKQotewotICAgIGJvb2wgc2hvdWxkQ29tcHV0ZUN1cnJlbnRTbmFwSW5kaWNlcyA9
IGZhbHNlOwotICAgIGlmICghbV9zY3JvbGxTbmFwU3RhdGUpIHsKLSAgICAgICAgaWYgKHNuYXBQ
b2ludHMuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fc2Nyb2xs
U25hcFN0YXRlID0gbWFrZVVuaXF1ZTxTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZT4oKTsKLSAgICAg
ICAgc2hvdWxkQ29tcHV0ZUN1cnJlbnRTbmFwSW5kaWNlcyA9IHRydWU7Ci0gICAgfQotCi0gICAg
aWYgKHNuYXBQb2ludHMuaXNFbXB0eSgpICYmIG1fc2Nyb2xsU25hcFN0YXRlLT5zbmFwT2Zmc2V0
c0ZvckF4aXMob3RoZXJTY3JvbGxFdmVudEF4aXMoYXhpcykpLmlzRW1wdHkoKSkKLSAgICAgICAg
bV9zY3JvbGxTbmFwU3RhdGUgPSBudWxscHRyOwotICAgIGVsc2UgewotICAgICAgICBtX3Njcm9s
bFNuYXBTdGF0ZS0+c2V0U25hcE9mZnNldHNBbmRQb3NpdGlvblJhbmdlc0ZvckF4aXMoYXhpcywg
c25hcFBvaW50cywgc25hcFJhbmdlcyk7Ci0gICAgICAgIGlmIChzaG91bGRDb21wdXRlQ3VycmVu
dFNuYXBJbmRpY2VzKSB7Ci0gICAgICAgICAgICBzZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlc0Zv
ck9mZnNldChyb3VuZGVkSW50UG9pbnQobV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCkpKTsKLSAgICAg
ICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIlNjcm9sbENvbnRy
b2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMgLSBjb21wdXRlZCBpbml0aWFsIHNuYXAgaW5k
aWNlczogeCAiIDw8IG1fc2Nyb2xsU25hcFN0YXRlLT5hY3RpdmVTbmFwSW5kZXhGb3JBeGlzKFNj
cm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkgPDwgIiwgeSAiIDw8IG1fc2Nyb2xsU25hcFN0YXRl
LT5hY3RpdmVTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpKTsKLSAg
ICAgICAgfQotICAgIH0KLX0KLQogdW5zaWduZWQgU2Nyb2xsQ29udHJvbGxlcjo6YWN0aXZlU2Ny
b2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKIHsKICAgICBp
ZiAoIXVzZXNTY3JvbGxTbmFwKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKaW5kZXggNzRlOWI4MTMwYjhhNmY1YzYyOTliYWZhYWNm
NzhlMmJhNDg3ZWMzYi4uYTlhYWZmMGUzNjg4NTY1OGMxMjBiYzZiOWNmODc4Nzk3NzU4ZDA5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9u
LmNwcApAQCAtOTgsNiArOTgsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxS
ZXF1ZXN0ZWRTY3JvbGxEYXRhPiB7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZShEZWNvZGVyJiwgUmVxdWVzdGVkU2Nyb2xsRGF0YSYpOwogfTsKIAordGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+PiB7Cisg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm88ZmxvYXQ+Jik7CisgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShE
ZWNvZGVyJiwgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYpOworfTsKKwogfSAvLyBuYW1l
c3BhY2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTE1LDEwICsxMjAsNyBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk+IHsKICAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Ny
b2xsYWJsZUFyZWFQYXJhbXMsCiAgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OlJlYXNvbnNGb3JTeW5jaHJvbm91c1Njcm9sbGluZywKICAgICAgICAgV2ViQ29y
ZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24s
Ci0gICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6b250
YWxTbmFwT2Zmc2V0cywKLSAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9w
ZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0cywKLSAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMsCi0gICAgICAgIFdl
YkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldFJh
bmdlcywKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U25h
cE9mZnNldHNJbmZvLAogICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCwKICAgICAgICAgV2ViQ29yZTo6
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldElu
ZGV4LAogICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpJc01v
bml0b3JpbmdXaGVlbEV2ZW50cywKQEAgLTIwNiwxMCArMjA4LDcgQEAgdm9pZCBBcmd1bWVudENv
ZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdAogICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpTY3JvbGxQb3NpdGlvbiwgc2Nyb2xsUG9zaXRpb24pCiAgICAgU0NST0xMSU5HX05P
REVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbE9yaWdpbiwgc2Ny
b2xsT3JpZ2luKQogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgU0NST0xMSU5HX05P
REVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6b250YWxTbmFwT2Zm
c2V0cywgaG9yaXpvbnRhbFNuYXBPZmZzZXRzKQotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRzLCB2ZXJ0aWNh
bFNuYXBPZmZzZXRzKQotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5v
ZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcywgaG9yaXpvbnRhbFNuYXBP
ZmZzZXRSYW5nZXMpCi0gICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9k
ZTo6UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldFJhbmdlcywgdmVydGljYWxTbmFwT2Zmc2V0
UmFuZ2VzKQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8sIHNuYXBPZmZzZXRzSW5mbykKICAgICBTQ1JPTExJTkdf
Tk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudEhvcml6b250
YWxTbmFwT2Zmc2V0SW5kZXgsIGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgpCiAgICAg
U0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJl
bnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCwgY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgp
CiAjZW5kaWYKQEAgLTMwNiwxMCArMzA1LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTY3JvbGwKICAg
ICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Ny
b2xsUG9zaXRpb24sIEZsb2F0UG9pbnQsIHNldFNjcm9sbFBvc2l0aW9uKTsKICAgICBTQ1JPTExJ
TkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsT3JpZ2lu
LCBJbnRQb2ludCwgc2V0U2Nyb2xsT3JpZ2luKTsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5
OjpIb3Jpem9udGFsU25hcE9mZnNldHMsIFZlY3RvcjxmbG9hdD4sIHNldEhvcml6b250YWxTbmFw
T2Zmc2V0cyk7Ci0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldHMsIFZlY3RvcjxmbG9hdD4sIHNldFZlcnRpY2Fs
U25hcE9mZnNldHMpOwotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5v
ZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcywgVmVjdG9yPFNjcm9sbE9m
ZnNldFJhbmdlPGZsb2F0Pj4sIHNldEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKQotICAgIFND
Uk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNh
bFNuYXBPZmZzZXRSYW5nZXMsIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+LCBzZXRW
ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpCisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbywgU2Nyb2xsU25hcE9mZnNl
dHNJbmZvPGZsb2F0Piwgc2V0U25hcE9mZnNldHNJbmZvKTsKICAgICBTQ1JPTExJTkdfTk9ERV9E
RUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudEhvcml6b250YWxTbmFw
T2Zmc2V0SW5kZXgsIHVuc2lnbmVkLCBzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
KTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0
eTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4LCB1bnNpZ25lZCwgc2V0Q3VycmVudFZl
cnRpY2FsU25hcFBvaW50SW5kZXgpOwogI2VuZGlmCkBAIC01MjYsNiArNTIyLDI3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxSZXF1ZXN0ZWRTY3JvbGxEYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIFJlcXVlc3RlZFNjcm9sCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQXJndW1lbnRD
b2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIGluZm8pCit7CisgICAgZW5j
b2RlciA8PCBpbmZvLnZlcnRpY2FsU25hcE9mZnNldHM7CisgICAgZW5jb2RlciA8PCBpbmZvLmhv
cml6b250YWxTbmFwT2Zmc2V0czsKKyAgICBlbmNvZGVyIDw8IGluZm8udmVydGljYWxTbmFwT2Zm
c2V0UmFuZ2VzOworICAgIGVuY29kZXIgPDwgaW5mby5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdl
czsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYg
aW5mbykKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8udmVydGljYWxTbmFwT2Zmc2V0
cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8u
aG9yaXpvbnRhbFNuYXBPZmZzZXRzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLmhvcml6b250YWxTbmFw
T2Zmc2V0UmFuZ2VzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOwor
fQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIHZvaWQgZW5jb2RlTm9kZUFuZERlc2Nl
bmRhbnRzKElQQzo6RW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBz
dGF0ZU5vZGUsIGludCYgZW5jb2RlZE5vZGVDb3VudCkKQEAgLTY5NiwxNyArNzEzLDEyIEBAIHN0
YXRpYyB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZSYgbm9kZSwgYm9vbCBjCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2Nyb2xsZWQt
Y29udGVudHMtbGF5ZXIiLCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVy
SUQ+KG5vZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCkpKTsKIAogI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBP
ZmZzZXRzKSkKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8p
KSB7CiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiaG9yaXpvbnRhbCBzbmFwIG9mZnNldHMiLCBu
b2RlLmhvcml6b250YWxTbmFwT2Zmc2V0cygpKTsKLQotICAgIGlmICghY2hhbmdlZFByb3BlcnRp
ZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlZlcnRpY2FsU25hcE9mZnNldHMpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInZl
cnRpY2FsIHNuYXAgb2Zmc2V0cyIsIG5vZGUudmVydGljYWxTbmFwT2Zmc2V0cygpKTsKLQotICAg
IGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldElu
ZGV4KSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJjdXJyZW50IGhvcml6b250YWwgc25hcCBw
b2ludCBpbmRleCIsIG5vZGUuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpKTsKLQot
ICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJ
bmRleCkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3VycmVudCB2ZXJ0aWNhbCBzbmFwIHBv
aW50IGluZGV4Iiwgbm9kZS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpKTsKKyAgICB9
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IDczNzJmZjI5Zjc1OWIyMDEwODc2NjU4MWRkMTA0
MThiOGI0ODM2YmMuLmUxNjc2Mzc3NzdkMzU1Nzk4ZmFiNDVlODFjMWM4OWMyOTQ0OTgyZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHlJT1MubW0KQEAgLTIxMyw3ICsyMTMsNyBAQCBib29sIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHk6OnNob3VsZFNuYXBGb3JNYWluRnJhbWVTY3JvbGxpbmcoU2Nyb2xsRXZlbgogICAg
IFNjcm9sbGluZ1RyZWVOb2RlKiByb290ID0gbV9zY3JvbGxpbmdUcmVlLT5yb290Tm9kZSgpOwog
ICAgIGlmIChyb290ICYmIHJvb3QtPmlzRnJhbWVTY3JvbGxpbmdOb2RlKCkpIHsKICAgICAgICAg
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSogcm9vdFNjcm9sbGluZ05vZGUgPSBzdGF0
aWNfY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKj4ocm9vdCk7Ci0gICAgICAg
IGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwgPyByb290U2Nyb2xsaW5nTm9kZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRz
KCkgOiByb290U2Nyb2xsaW5nTm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpOworICAgICAgICBj
b25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cyA9IHJvb3RTY3JvbGxpbmdOb2RlLT5zbmFw
T2Zmc2V0c0luZm8oKS5vZmZzZXRzRm9yQXhpcyhheGlzKTsKICAgICAgICAgdW5zaWduZWQgY3Vy
cmVudEluZGV4ID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyBtX2N1cnJl
bnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggOiBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludElu
ZGV4OwogICAgICAgICByZXR1cm4gc25hcE9mZnNldHMuc2l6ZSgpICYmIChjdXJyZW50SW5kZXgg
PCBzbmFwT2Zmc2V0cy5zaXplKCkgfHwgY3VycmVudEluZGV4ID09IGludmFsaWRTbmFwT2Zmc2V0
SW5kZXgpOwogICAgIH0KQEAgLTIyNSw4ICsyMjUsOCBAQCBmbG9hdCBSZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyhT
YwogICAgIFNjcm9sbGluZ1RyZWVOb2RlKiByb290ID0gbV9zY3JvbGxpbmdUcmVlLT5yb290Tm9k
ZSgpOwogICAgIEFTU0VSVChyb290ICYmIHJvb3QtPmlzRnJhbWVTY3JvbGxpbmdOb2RlKCkpOwog
ICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUqIHJvb3RTY3JvbGxpbmdOb2RlID0g
c3RhdGljX2Nhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSo+KHJvb3QpOwotICAg
IGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwgPyByb290U2Nyb2xsaW5nTm9kZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRz
KCkgOiByb290U2Nyb2xsaW5nTm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpOwotICAgIGNvbnN0
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzID0gYXhp
cyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyByb290U2Nyb2xsaW5nTm9kZS0+aG9y
aXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSA6IHJvb3RTY3JvbGxpbmdOb2RlLT52ZXJ0aWNhbFNu
YXBPZmZzZXRSYW5nZXMoKTsKKyAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cyA9
IGF4aXMgPT0gcm9vdFNjcm9sbGluZ05vZGUtPnNuYXBPZmZzZXRzSW5mbygpLm9mZnNldHNGb3JB
eGlzKGF4aXMpOworICAgIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBz
bmFwT2Zmc2V0UmFuZ2VzID0gcm9vdFNjcm9sbGluZ05vZGUtPnNuYXBPZmZzZXRzSW5mbygpLm9m
ZnNldFJhbmdlc0ZvckF4aXMoYXhpcyk7CiAKICAgICBmbG9hdCBzY2FsZWRTY3JvbGxEZXN0aW5h
dGlvbiA9IHNjcm9sbERlc3RpbmF0aW9uIC8gbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVu
dFNjYWxlKCk7CiAgICAgZmxvYXQgcmF3Q2xvc2VzdFNuYXBPZmZzZXQgPSBjbG9zZXN0U25hcE9m
ZnNldChzbmFwT2Zmc2V0cywgc25hcE9mZnNldFJhbmdlcywgc2NhbGVkU2Nyb2xsRGVzdGluYXRp
b24sIHZlbG9jaXR5LCBjdXJyZW50SW5kZXgpOwpAQCAtMjQzLDggKzI0Myw4IEBAIGJvb2wgUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6aGFzQWN0aXZlU25hcFBvaW50KCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZSYgcm9vdFNjcm9sbGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlPigqcm9vdCk7Ci0gICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRhbCA9
IHJvb3RTY3JvbGxpbmdOb2RlLmhvcml6b250YWxTbmFwT2Zmc2V0cygpOwotICAgIGNvbnN0IFZl
Y3RvcjxmbG9hdD4mIHZlcnRpY2FsID0gcm9vdFNjcm9sbGluZ05vZGUudmVydGljYWxTbmFwT2Zm
c2V0cygpOworICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWwgPSByb290U2Nyb2xs
aW5nTm9kZS0+c25hcE9mZnNldHNJbmZvKCkuaG9yaXpvbnRhbFNuYXBPZmZzZXRzOworICAgIGNv
bnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2FsID0gcm9vdFNjcm9sbGluZ05vZGUtPnNuYXBPZmZz
ZXRzSW5mbygpLnZlcnRpY2FsU25hcE9mZnNldHM7CiAKICAgICBpZiAoaG9yaXpvbnRhbC5pc0Vt
cHR5KCkgJiYgdmVydGljYWwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
NjQsOCArMjY0LDggQEAgQ0dQb2ludCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojpu
ZWFyZXN0QWN0aXZlQ29udGVudEluc2V0QWRqdXN0ZWRTbmFwT2YKICAgICBTY3JvbGxpbmdUcmVl
Tm9kZSogcm9vdCA9IG1fc2Nyb2xsaW5nVHJlZS0+cm9vdE5vZGUoKTsKICAgICBBU1NFUlQocm9v
dCAmJiBpczxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihyb290KSk7CiAgICAgU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSYgcm9vdFNjcm9sbGluZ05vZGUgPSBkb3duY2Fz
dDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPigqcm9vdCk7Ci0gICAgY29uc3QgVmVj
dG9yPGZsb2F0PiYgaG9yaXpvbnRhbCA9IHJvb3RTY3JvbGxpbmdOb2RlLmhvcml6b250YWxTbmFw
T2Zmc2V0cygpOwotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2FsID0gcm9vdFNjcm9s
bGluZ05vZGUudmVydGljYWxTbmFwT2Zmc2V0cygpOworICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4m
IGhvcml6b250YWwgPSByb290U2Nyb2xsaW5nTm9kZS0+c25hcE9mZnNldHNJbmZvKCkuaG9yaXpv
bnRhbFNuYXBPZmZzZXRzOworICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2FsID0gcm9v
dFNjcm9sbGluZ05vZGUtPnNuYXBPZmZzZXRzSW5mbygpLnZlcnRpY2FsU25hcE9mZnNldHM7CiAK
ICAgICAvLyBUaGUgYm91bmRzIGNoZWNraW5nIHdpdGggbWF4U2Nyb2xsT2Zmc2V0cyBpcyB0byBl
bnN1cmUgdGhhdCB3ZSB3b24ndCBpbnRlcmZlcmUgd2l0aCBydWJiZXItYmFuZGluZyB3aGVuIHNj
cm9sbGluZyB0byB0aGUgZWRnZSBvZiB0aGUgcGFnZS4KICAgICBpZiAoIWhvcml6b250YWwuaXNF
bXB0eSgpICYmIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCA8IGhvcml6b250YWwu
c2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TLm1tCmluZGV4IGRmYmY3YTRkYmNkM2UwNWE3N2ZkNTFkMjIzMDBl
NjYyMDM4ZWZiODcuLjYzOWE5M2NkOWY3M2U0Njk0OTI1ZjFmZmY3ZDJhYTAxYTYwZjIzYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1MubW0KQEAgLTEwNiwxNyArMTA2LDE5IEBAIC0gKHZvaWQpc2Nyb2xsVmlld1dp
bGxFbmREcmFnZ2luZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyB3aXRoVmVsb2NpdHk6KENH
UG9pCiAgICAgdW5zaWduZWQgb3JpZ2luYWxIb3Jpem9udGFsU25hcFBvc2l0aW9uID0gX3Njcm9s
bGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5jdXJyZW50SG9yaXpvbnRhbFNu
YXBQb2ludEluZGV4KCk7CiAgICAgdW5zaWduZWQgb3JpZ2luYWxWZXJ0aWNhbFNuYXBQb3NpdGlv
biA9IF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudFZl
cnRpY2FsU25hcFBvaW50SW5kZXgoKTsKIAotICAgIGlmICghX3Njcm9sbGluZ1RyZWVOb2RlRGVs
ZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5ob3Jpem9udGFsU25hcE9mZnNldHMoKS5pc0VtcHR5KCkp
IHsKKyAgICBjb25zdCBhdXRvJiBob3Jpem9udGFsID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdh
dGUtPnNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0luZm8oKS5ob3Jpem9udGFsU25hcE9mZnNl
dHM7CisgICAgaWYgKCFob3Jpem9udGFsLmlzRW1wdHkoKSkgewogICAgICAgICB1bnNpZ25lZCBp
bmRleDsKLSAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gV2ViQ29yZTo6Y2xv
c2VzdFNuYXBPZmZzZXQoX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUo
KS5ob3Jpem9udGFsU25hcE9mZnNldHMoKSwgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNj
cm9sbGluZ05vZGUoKS5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpLCBob3Jpem9udGFsVGFy
Z2V0LCB2ZWxvY2l0eS54LCBpbmRleCk7CisgICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3Np
dGlvbiA9IFdlYkNvcmU6OmNsb3Nlc3RTbmFwT2Zmc2V0KGhvcml6b250YWwsIF9zY3JvbGxpbmdU
cmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkuaG9yaXpv
bnRhbFNuYXBPZmZzZXRSYW5nZXMsIGhvcml6b250YWxUYXJnZXQsIHZlbG9jaXR5LngsIGluZGV4
KTsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5z
ZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KGluZGV4KTsKICAgICAgICAgaWYgKGhv
cml6b250YWxUYXJnZXQgPj0gMCAmJiBob3Jpem9udGFsVGFyZ2V0IDw9IHNjcm9sbFZpZXcuY29u
dGVudFNpemUud2lkdGgpCiAgICAgICAgICAgICB0YXJnZXRDb250ZW50T2Zmc2V0LT54ID0gcG90
ZW50aWFsU25hcFBvc2l0aW9uOwogICAgIH0KIAorICAgIGNvbnN0IGF1dG8mIHZlcnRpY2FsID0g
X3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0lu
Zm8oKS52ZXJ0aWNhbFNuYXBPZmZzZXRzOwogICAgIGlmICghX3Njcm9sbGluZ1RyZWVOb2RlRGVs
ZWdhdGUtPnNjcm9sbGluZ05vZGUoKS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkuaXNFbXB0eSgpKSB7
CiAgICAgICAgIHVuc2lnbmVkIGluZGV4OwotICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9z
aXRpb24gPSBXZWJDb3JlOjpjbG9zZXN0U25hcE9mZnNldChfc2Nyb2xsaW5nVHJlZU5vZGVEZWxl
Z2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnZlcnRpY2FsU25hcE9mZnNldHMoKSwgX3Njcm9sbGluZ1Ry
ZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMo
KSwgdmVydGljYWxUYXJnZXQsIHZlbG9jaXR5LnksIGluZGV4KTsKKyAgICAgICAgZmxvYXQgcG90
ZW50aWFsU25hcFBvc2l0aW9uID0gV2ViQ29yZTo6Y2xvc2VzdFNuYXBPZmZzZXQodmVydGljYWws
IF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJ
bmZvKCkudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCB2ZXJ0aWNhbFRhcmdldCwgdmVsb2NpdHku
eSwgaW5kZXgpOwogICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5n
Tm9kZSgpLnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KGluZGV4KTsKICAgICAgICAg
aWYgKHZlcnRpY2FsVGFyZ2V0ID49IDAgJiYgdmVydGljYWxUYXJnZXQgPD0gc2Nyb2xsVmlldy5j
b250ZW50U2l6ZS5oZWlnaHQpCiAgICAgICAgICAgICB0YXJnZXRDb250ZW50T2Zmc2V0LT55ID0g
cG90ZW50aWFsU25hcFBvc2l0aW9uOwpAQCAtMjgwLDkgKzI4Miw5IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNv
bnN0IFNjcm9sCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIC8vIEZJWE1FOiBJ
ZiBvbmx5IG9uZSBheGlzIHNuYXBzIGluIDJEIHNjcm9sbGluZywgdGhlIG90aGVyIGF4aXMgd2ls
bCBkZWNlbGVyYXRlIGZhc3QgYXMgd2VsbC4gSXMgdGhpcyB3aGF0IHdlIHdhbnQ/Ci0gICAgaWYg
KHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzKSB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2Fs
U25hcE9mZnNldHMpKSB7CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U25hcE9mZnNldHNJbmZvKSkgewog
ICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgc2Nyb2xsVmlldygp
LmRlY2VsZXJhdGlvblJhdGUgPSBzY3JvbGxpbmdOb2RlKCkuaG9yaXpvbnRhbFNuYXBPZmZzZXRz
KCkuc2l6ZSgpIHx8IHNjcm9sbGluZ05vZGUoKS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkuc2l6ZSgp
ID8gVUlTY3JvbGxWaWV3RGVjZWxlcmF0aW9uUmF0ZUZhc3QgOiBVSVNjcm9sbFZpZXdEZWNlbGVy
YXRpb25SYXRlTm9ybWFsOworICAgICAgICBzY3JvbGxWaWV3KCkuZGVjZWxlcmF0aW9uUmF0ZSA9
IHNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0luZm8oKS5ob3Jpem9udGFsU25hcE9mZnNldHMu
c2l6ZSgpIHx8IHNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zm
c2V0cy5zaXplKCkgPyBVSVNjcm9sbFZpZXdEZWNlbGVyYXRpb25SYXRlRmFzdCA6IFVJU2Nyb2xs
Vmlld0RlY2VsZXJhdGlvblJhdGVOb3JtYWw7CiAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKICAgICB9CiAjZW5kaWYK
</data>
<flag name="commit-queue"
          id="436190"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418274</attachid>
            <date>2021-01-25 04:33:55 -0800</date>
            <delta_ts>2021-01-25 04:52:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220915-20210125133354.patch</filename>
            <type>text/plain</type>
            <size>46240</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4YjU5NTdmYjgxNTc5
ZTg2ZGRhYzcyMTVjOTMwM2NjZTUxMTAzZS4uYzBmYTU2YjIwMjRiZDk3ZTI4NDU2Zjg4ZWQ5MWJl
OWRjMTFkYWNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTAxLTI1ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgU2Nyb2xs
U25hcE9mZnNldHNJbmZvIGluIHRoZSBzY3JvbGxpbmcgdHJlZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTE1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHNob3VsZCBu
b3QgY2hhbmdlIGJlaGF2aW9yLgorCisgICAgICAgIFVzZSBTY3JvbGxTbmFwT2Zmc2V0cyBtb3Jl
IG9mdGVuIGluIHRoZSBzY3JvbGxpbmcgdHJlZSB0byBjb250aW51ZSB0bworICAgICAgICBhYnN0
cmFjdCBhd2F5IHRoZSBkZXRhaWxzIG9mIGhvdyBzbmFwIG9mZnNldHMgYXJlIGltcGxlbWVudGVk
LgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0Fz
RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0
U2Nyb2xsaW5nTm9kZVNjcm9sbGFibGVBcmVhR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsU25hcFByb3BlcnRpZXNXaXRo
RnJhbWVWaWV3KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6aXNFcXVhbCBj
b25zdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
YXBwbGljYWJsZVByb3BlcnRpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTbmFwT2Zmc2V0c0luZm8pOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6
dXBkYXRlRnJvbVN0YXRlTm9kZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9TY3JvbGxDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxl
cjo6dXBkYXRlU2Nyb2xsU25hcFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRy
b2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6b3RoZXJT
Y3JvbGxFdmVudEF4aXMpOiBEZWxldGVkLgorCiAyMDIxLTAxLTI1ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBOdWxsIFB0ciBEZXJlZiBAIFdl
YkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRiMDUy
NDNhMmRkZDEyMjFlZmMyMTRjMjAwOWM4MWQyZDFjZjdmMjQuLjBlMWJlYjg5YTgxMGI1YzlkOWY1
YzFhOTU1OTc5ZThlZTRhYzcwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDEt
MjUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFVz
ZSBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gaW4gdGhlIHNjcm9sbGluZyB0cmVlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5MTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgU2Nyb2xsU25hcE9mZnNl
dHMgbW9yZSBvZnRlbiBpbiB0aGUgc2Nyb2xsaW5nIHRyZWUgdG8gY29udGludWUgdG8KKyAgICAg
ICAgYWJzdHJhY3QgYXdheSB0aGUgZGV0YWlscyBvZiBob3cgc25hcCBvZmZzZXRzIGFyZSBpbXBs
ZW1lbnRlZC4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChBcmd1bWVudENvZGVyPFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmVuY29kZSk6CisgICAgICAgIChBcmd1bWVudENv
ZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29kZSk6CisgICAgICAgIChBcmd1
bWVudENvZGVyPFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4+OjplbmNvZGUpOgorICAgICAg
ICAoQXJndW1lbnRDb2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYktpdDo6ZHVtcCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6c2hvdWxkU25hcEZvck1h
aW5GcmFtZVNjcm9sbGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5n
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eTo6aGFzQWN0aXZlU25hcFBvaW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6bmVhcmVzdEFjdGl2ZUNvbnRlbnRJbnNldEFkanVzdGVk
U25hcE9mZnNldCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToKKyAgICAgICAgKC1b
V0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmlld0RlbGVnYXRlIHNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dp
bmc6d2l0aFZlbG9jaXR5OnRhcmdldENvbnRlbnRPZmZzZXQ6XSk6CisgICAgICAgIChXZWJLaXQ6
OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJD
aGlsZHJlbik6CisKIDIwMjEtMDEtMjQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzJdIHRoZXZlcmdlLmNvbSAtIHJ1YmJlciBiYW5kIHNj
cm9sbGluZyBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlIGNhdXNlcyBhbiBhYnJ1cHQganVtcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcAppbmRleCBlZDU2YmI2NzA0NzFmYmU3YjZkMmZhMGUxMmQzOGVjODc3
ZmM4NTM3Li5lMGIyOWRhNzA0M2RjYTc0NGI4ODQ5YzcxMDNiMGZkMzBiY2YwZGI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcApAQCAtOTIsMzEgKzkyLDMzIEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQs
IFBsCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi1zdGF0aWMgaW5saW5l
IHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Piogb2Zmc2V0SW5mbywgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9m
ZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgY29uc3QgU2Ny
b2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+KiBvZmZzZXRJbmZvLCBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcikKIHsKKyAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IGZsb2F0SW5m
bzsKKwogICAgIC8vIEZJWE1FOiBJbmNvcnBvcmF0ZSBjdXJyZW50IHBhZ2Ugc2NhbGUgZmFjdG9y
IGluIHNuYXBwaW5nIHRvIGRldmljZSBwaXhlbC4gUGVyaGFwcyB3ZSBzaG91bGQganVzdCBjb252
ZXJ0IHRvIGZsb2F0IGhlcmUgYW5kIGxldCBVSSBwcm9jZXNzIGRvIHRoZSBwaXhlbCBzbmFwcGlu
Zz8KLSAgICBWZWN0b3I8ZmxvYXQ+IHNuYXBPZmZzZXRzQXNGbG9hdDsKICAgICBpZiAob2Zmc2V0
SW5mbykgewotICAgICAgICBjb25zdCBhdXRvJiBvZmZzZXRzID0gb2Zmc2V0SW5mby0+b2Zmc2V0
c0ZvckF4aXMoYXhpcyk7Ci0gICAgICAgIHNuYXBPZmZzZXRzQXNGbG9hdC5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KG9mZnNldHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBvZmZzZXQgOiBv
ZmZzZXRzKQotICAgICAgICAgICAgc25hcE9mZnNldHNBc0Zsb2F0LnVuY2hlY2tlZEFwcGVuZChy
b3VuZFRvRGV2aWNlUGl4ZWwob2Zmc2V0LCBkZXZpY2VTY2FsZUZhY3RvciwgZmFsc2UpKTsKKyAg
ICAgICAgYXV0byBjb252ZXJ0T2Zmc2V0c1RvRmxvYXRzID0gW2RldmljZVNjYWxlRmFjdG9yXShW
ZWN0b3I8TGF5b3V0VW5pdD4gb2Zmc2V0cywgVmVjdG9yPGZsb2F0PiBmbG9hdE9mZnNldHMpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGZsb2F0T2Zmc2V0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG9mZnNldHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgb2Zmc2V0IDogb2Zmc2V0
cykKKyAgICAgICAgICAgICAgICBmbG9hdE9mZnNldHMudW5jaGVja2VkQXBwZW5kKHJvdW5kVG9E
ZXZpY2VQaXhlbChvZmZzZXQsIGRldmljZVNjYWxlRmFjdG9yLCBmYWxzZSkpOworICAgICAgICB9
OworCisgICAgICAgIGF1dG8gY29udmVydE9mZnNldFJhbmdlc1RvRmxvYXQgPSBbZGV2aWNlU2Nh
bGVGYWN0b3JdKFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gb2Zmc2V0UmFu
Z2VzLCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiBmbG9hdE9mZnNldFJhbmdlcykK
KyAgICAgICAgeworICAgICAgICAgICAgZmxvYXRPZmZzZXRSYW5nZXMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShvZmZzZXRSYW5nZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcmFu
Z2UgOiBvZmZzZXRSYW5nZXMpCisgICAgICAgICAgICAgICAgZmxvYXRPZmZzZXRSYW5nZXMudW5j
aGVja2VkQXBwZW5kKHsgcm91bmRUb0RldmljZVBpeGVsKHJhbmdlLnN0YXJ0LCBkZXZpY2VTY2Fs
ZUZhY3RvciwgZmFsc2UpLCByb3VuZFRvRGV2aWNlUGl4ZWwocmFuZ2UuZW5kLCBkZXZpY2VTY2Fs
ZUZhY3RvciwgZmFsc2UpIH0pOworICAgICAgICB9OworCisgICAgICAgIGNvbnZlcnRPZmZzZXRz
VG9GbG9hdHMob2Zmc2V0SW5mby0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBmbG9hdEluZm8uaG9y
aXpvbnRhbFNuYXBPZmZzZXRzKTsKKyAgICAgICAgY29udmVydE9mZnNldHNUb0Zsb2F0cyhvZmZz
ZXRJbmZvLT52ZXJ0aWNhbFNuYXBPZmZzZXRzLCBmbG9hdEluZm8udmVydGljYWxTbmFwT2Zmc2V0
cyk7CisgICAgICAgIGNvbnZlcnRPZmZzZXRSYW5nZXNUb0Zsb2F0KG9mZnNldEluZm8tPmhvcml6
b250YWxTbmFwT2Zmc2V0UmFuZ2VzLCBmbG9hdEluZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5n
ZXMpOworICAgICAgICBjb252ZXJ0T2Zmc2V0UmFuZ2VzVG9GbG9hdChvZmZzZXRJbmZvLT52ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXMsIGZsb2F0SW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMp
OwogICAgIH0KIAotICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+IHNuYXBPZmZz
ZXRSYW5nZXNBc0Zsb2F0OwotICAgIGlmIChvZmZzZXRJbmZvKSB7Ci0gICAgICAgIGNvbnN0IGF1
dG8mIHNuYXBPZmZzZXRSYW5nZXMgPSBvZmZzZXRJbmZvLT5vZmZzZXRSYW5nZXNGb3JBeGlzKGF4
aXMpOwotICAgICAgICBzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHNuYXBPZmZzZXRSYW5nZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiByYW5nZSA6
IHNuYXBPZmZzZXRSYW5nZXMpCi0gICAgICAgICAgICBzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdC51
bmNoZWNrZWRBcHBlbmQoeyByb3VuZFRvRGV2aWNlUGl4ZWwocmFuZ2Uuc3RhcnQsIGRldmljZVNj
YWxlRmFjdG9yLCBmYWxzZSksIHJvdW5kVG9EZXZpY2VQaXhlbChyYW5nZS5lbmQsIGRldmljZVNj
YWxlRmFjdG9yLCBmYWxzZSkgfSk7Ci0gICAgfQotICAgIGlmIChheGlzID09IFNjcm9sbEV2ZW50
QXhpczo6SG9yaXpvbnRhbCkgewotICAgICAgICBub2RlLnNldEhvcml6b250YWxTbmFwT2Zmc2V0
cyhzbmFwT2Zmc2V0c0FzRmxvYXQpOwotICAgICAgICBub2RlLnNldEhvcml6b250YWxTbmFwT2Zm
c2V0UmFuZ2VzKHNuYXBPZmZzZXRSYW5nZXNBc0Zsb2F0KTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBub2RlLnNldFZlcnRpY2FsU25hcE9mZnNldHMoc25hcE9mZnNldHNBc0Zsb2F0KTsKLSAgICAg
ICAgbm9kZS5zZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoc25hcE9mZnNldFJhbmdlc0FzRmxv
YXQpOwotICAgIH0KKyAgICBub2RlLnNldFNuYXBPZmZzZXRzSW5mbyhmbG9hdEluZm8pOwogfQog
I2VuZGlmCiAKQEAgLTcxNCw4ICs3MTYsNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnNldFNjcm9sbGluZ05vZGVTY3JvbGxhYmxlQXJlYUdlb21ldHJ5KFNjcm9sbGluZwogCiAj
aWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBzY3JvbGxhYmxlQXJlYS51cGRhdGVTbmFw
T2Zmc2V0cygpOwotICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdChz
Y3JvbGxpbmdOb2RlLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9sbGFibGVBcmVh
LnNuYXBPZmZzZXRJbmZvKCksIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgc2V0
U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KHNjcm9sbGluZ05vZGUsIFNjcm9s
bEV2ZW50QXhpczo6VmVydGljYWwsICBzY3JvbGxhYmxlQXJlYS5zbmFwT2Zmc2V0SW5mbygpLCBt
X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNu
YXBPZmZzZXRzQXNGbG9hdChzY3JvbGxpbmdOb2RlLCBzY3JvbGxhYmxlQXJlYS5zbmFwT2Zmc2V0
SW5mbygpLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIHNjcm9sbGluZ05vZGUu
c2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleChzY3JvbGxhYmxlQXJlYS5jdXJyZW50
SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkpOwogICAgIHNjcm9sbGluZ05vZGUuc2V0Q3VycmVu
dFZlcnRpY2FsU25hcFBvaW50SW5kZXgoc2Nyb2xsYWJsZUFyZWEuY3VycmVudFZlcnRpY2FsU25h
cFBvaW50SW5kZXgoKSk7CiAjZW5kaWYKQEAgLTkwOSw4ICs5MTAsNyBAQCBib29sIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoU2Nyb2xsaW5nTm9kZUlE
IG5vZGVJRCkgYwogdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxT
bmFwUHJvcGVydGllc1dpdGhGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7
CiAgICAgaWYgKGF1dG8gbm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LnNj
cm9sbGluZ05vZGVJRCgpKSkpIHsKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9m
ZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIGZyYW1lVmll
dy5zbmFwT2Zmc2V0SW5mbygpLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgICAg
ICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2
ZW50QXhpczo6VmVydGljYWwsIGZyYW1lVmlldy5zbmFwT2Zmc2V0SW5mbygpLCBtX3BhZ2UtPmRl
dmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zm
c2V0c0FzRmxvYXQoKm5vZGUsIGZyYW1lVmlldy5zbmFwT2Zmc2V0SW5mbygpLCBtX3BhZ2UtPmRl
dmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBub2RlLT5zZXRDdXJyZW50SG9yaXpvbnRhbFNu
YXBQb2ludEluZGV4KGZyYW1lVmlldy5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkp
OwogICAgICAgICBub2RlLT5zZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChmcmFtZVZp
ZXcuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRl
eCA0OGQ3OWJmYWIwOWYwYjMxOTBjMzMxYjg0ZTFmMWVhMzcwZmFlMDI3Li43Y2UzYjViNjU1YzMy
ZTc2ZTAwNTM2ODVkOWU0ODI4ZmY5MzQyNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApAQCAtNTksNiArNTksMTEg
QEAgc3RydWN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbyB7CiAgICAgVmVjdG9yPFNjcm9sbE9mZnNl
dFJhbmdlPFQ+PiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKICAgICBWZWN0b3I8U2Nyb2xs
T2Zmc2V0UmFuZ2U8VD4+IHZlcnRpY2FsU25hcE9mZnNldFJhbmdlczsKIAorICAgIGJvb2wgaXNF
cXVhbChjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88VD4mIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGhvcml6b250YWxTbmFwT2Zmc2V0cyA9PSBvdGhlci5ob3Jpem9udGFs
U25hcE9mZnNldHMgJiYgdmVydGljYWxTbmFwT2Zmc2V0cyA9PSBvdGhlci52ZXJ0aWNhbFNuYXBP
ZmZzZXRzICYmIGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzID09IG90aGVyLmhvcml6b250YWxT
bmFwT2Zmc2V0UmFuZ2VzICYmIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyA9PSBvdGhlci52ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXM7CisgICAgfQorCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBob3Jpem9udGFsU25hcE9mZnNldHMuaXNFbXB0eSgpICYm
IHZlcnRpY2FsU25hcE9mZnNldHMuaXNFbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuaAppbmRleCBiM2Q1NTBjMmU3Mzc3MGJl
Y2M3MjUyM2QxNWM5MjVlZjU2ZDY5M2Q3Li4zN2MyZGFhY2YwNGJkZjZiYzU2NzQwOGU1NTFkOWMz
M2I2MzZjMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZU5vZGUuaApAQCAtMjMwLDQ3ICsyMzAsNDQgQEAgcHVibGljOgogICAgICAgICBT
Y3JvbGxhYmxlQXJlYVBhcmFtcyAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCA3LAog
ICAgICAgICBSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxpbmcgICAgICAgICAgICAgID0gMUxM
VSA8PCA4LAogICAgICAgICBSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiAgICAgICAgICAgICAgICAg
ICAgID0gMUxMVSA8PCA5LAotICAgICAgICBIb3Jpem9udGFsU25hcE9mZnNldHMgICAgICAgICAg
ICAgICAgICAgICAgID0gMUxMVSA8PCAxMCwKLSAgICAgICAgVmVydGljYWxTbmFwT2Zmc2V0cyAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTEsCi0gICAgICAgIEhvcml6b250YWxT
bmFwT2Zmc2V0UmFuZ2VzICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDEyLAotICAgICAgICBW
ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxMywK
LSAgICAgICAgQ3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXggICAgICAgICAgICA9IDFM
TFUgPDwgMTQsCi0gICAgICAgIEN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCAgICAgICAg
ICAgICAgPSAxTExVIDw8IDE1LAotICAgICAgICBJc01vbml0b3JpbmdXaGVlbEV2ZW50cyAgICAg
ICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxNiwKLSAgICAgICAgU2Nyb2xsQ29udGFpbmVyTGF5
ZXIgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTcsCi0gICAgICAgIFNjcm9sbGVk
Q29udGVudHNMYXllciAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDE4LAotICAgICAg
ICBIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAx
OSwKLSAgICAgICAgVmVydGljYWxTY3JvbGxiYXJMYXllciAgICAgICAgICAgICAgICAgICAgICA9
IDFMTFUgPDwgMjAsCi0gICAgICAgIFBhaW50ZXJGb3JTY3JvbGxiYXIgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxTExVIDw8IDIxLAorICAgICAgICBTbmFwT2Zmc2V0c0luZm8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxMCwKKyAgICAgICAgQ3VycmVudEhvcml6b250
YWxTbmFwT2Zmc2V0SW5kZXggICAgICAgICAgICA9IDFMTFUgPDwgMTEsCisgICAgICAgIEN1cnJl
bnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCAgICAgICAgICAgICAgPSAxTExVIDw8IDEyLAorICAg
ICAgICBJc01vbml0b3JpbmdXaGVlbEV2ZW50cyAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8
PCAxMywKKyAgICAgICAgU2Nyb2xsQ29udGFpbmVyTGF5ZXIgICAgICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgPDwgMTQsCisgICAgICAgIFNjcm9sbGVkQ29udGVudHNMYXllciAgICAgICAgICAg
ICAgICAgICAgICAgPSAxTExVIDw8IDE1LAorICAgICAgICBIb3Jpem9udGFsU2Nyb2xsYmFyTGF5
ZXIgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxNiwKKyAgICAgICAgVmVydGljYWxTY3Jv
bGxiYXJMYXllciAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTcsCisgICAgICAgIFBh
aW50ZXJGb3JTY3JvbGxiYXIgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDE4LAog
ICAgICAgICAvLyBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZQotICAgICAgICBGcmFt
ZVNjYWxlRmFjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyMiwKLSAg
ICAgICAgRXZlbnRUcmFja2luZ1JlZ2lvbiAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUg
PDwgMjMsCi0gICAgICAgIFJvb3RDb250ZW50c0xheWVyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAxTExVIDw8IDI0LAotICAgICAgICBDb3VudGVyU2Nyb2xsaW5nTGF5ZXIgICAgICAgICAg
ICAgICAgICAgICAgID0gMUxMVSA8PCAyNSwKLSAgICAgICAgSW5zZXRDbGlwTGF5ZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjYsCi0gICAgICAgIENvbnRlbnRTaGFk
b3dMYXllciAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDI3LAotICAgICAgICBI
ZWFkZXJIZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyOCwK
LSAgICAgICAgRm9vdGVySGVpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFM
TFUgPDwgMjksCi0gICAgICAgIEhlYWRlckxheWVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAxTExVIDw8IDMwLAotICAgICAgICBGb290ZXJMYXllciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMUxMVSA8PCAzMSwKLSAgICAgICAgQmVoYXZpb3JGb3JGaXhlZEVs
ZW1lbnRzICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMzIsCi0gICAgICAgIFRvcENvbnRl
bnRJbnNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDMzLAotICAgICAg
ICBGaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lICAgICAgICAgID0gMUxMVSA8PCAz
NCwKLSAgICAgICAgVmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQgICA9
IDFMTFUgPDwgMzUsCi0gICAgICAgIEFzeW5jRnJhbWVPck92ZXJmbG93U2Nyb2xsaW5nRW5hYmxl
ZCAgICAgICAgPSAxTExVIDw8IDM2LAotICAgICAgICBXaGVlbEV2ZW50R2VzdHVyZXNCZWNvbWVO
b25CbG9ja2luZyAgICAgICAgID0gMUxMVSA8PCAzNywKLSAgICAgICAgU2Nyb2xsaW5nUGVyZm9y
bWFuY2VUZXN0aW5nRW5hYmxlZCAgICAgICAgICA9IDFMTFUgPDwgMzgsCi0gICAgICAgIExheW91
dFZpZXdwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDM5LAotICAg
ICAgICBNaW5MYXlvdXRWaWV3cG9ydE9yaWdpbiAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8
PCA0MCwKLSAgICAgICAgTWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4gICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgPDwgNDEsCi0gICAgICAgIE92ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplICAgICAg
ICAgICAgICAgICAgPSAxTExVIDw8IDQyLAorICAgICAgICBGcmFtZVNjYWxlRmFjdG9yICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxOSwKKyAgICAgICAgRXZlbnRUcmFja2lu
Z1JlZ2lvbiAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjAsCisgICAgICAgIFJv
b3RDb250ZW50c0xheWVyICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDIxLAor
ICAgICAgICBDb3VudGVyU2Nyb2xsaW5nTGF5ZXIgICAgICAgICAgICAgICAgICAgICAgID0gMUxM
VSA8PCAyMiwKKyAgICAgICAgSW5zZXRDbGlwTGF5ZXIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDFMTFUgPDwgMjMsCisgICAgICAgIENvbnRlbnRTaGFkb3dMYXllciAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAxTExVIDw8IDI0LAorICAgICAgICBIZWFkZXJIZWlnaHQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyNSwKKyAgICAgICAgRm9vdGVySGVp
Z2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjYsCisgICAgICAg
IEhlYWRlckxheWVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDI3
LAorICAgICAgICBGb290ZXJMYXllciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
MUxMVSA8PCAyOCwKKyAgICAgICAgQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzICAgICAgICAgICAg
ICAgICAgICA9IDFMTFUgPDwgMjksCisgICAgICAgIFRvcENvbnRlbnRJbnNldCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDMwLAorICAgICAgICBGaXhlZEVsZW1lbnRzTGF5
b3V0UmVsYXRpdmVUb0ZyYW1lICAgICAgICAgID0gMUxMVSA8PCAzMSwKKyAgICAgICAgVmlzdWFs
Vmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQgICA9IDFMTFUgPDwgMzIsCisgICAg
ICAgIEFzeW5jRnJhbWVPck92ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZCAgICAgICAgPSAxTExVIDw8
IDMzLAorICAgICAgICBXaGVlbEV2ZW50R2VzdHVyZXNCZWNvbWVOb25CbG9ja2luZyAgICAgICAg
ID0gMUxMVSA8PCAzNCwKKyAgICAgICAgU2Nyb2xsaW5nUGVyZm9ybWFuY2VUZXN0aW5nRW5hYmxl
ZCAgICAgICAgICA9IDFMTFUgPDwgMzUsCisgICAgICAgIExheW91dFZpZXdwb3J0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDM2LAorICAgICAgICBNaW5MYXlvdXRWaWV3
cG9ydE9yaWdpbiAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAzNywKKyAgICAgICAgTWF4
TGF5b3V0Vmlld3BvcnRPcmlnaW4gICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMzgsCisg
ICAgICAgIE92ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplICAgICAgICAgICAgICAgICAgPSAxTExV
IDw8IDM5LAogICAgICAgICAvLyBTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlCi0gICAgICAg
IFJlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzICAgICAgICAgICAgICAgPSAxTExVIDw8IDQz
LAotICAgICAgICBMYXlvdXRDb25zdHJhaW50RGF0YSAgICAgICAgICAgICAgICAgICAgICAgID0g
MUxMVSA8PCA0NCwKKyAgICAgICAgUmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMgICAgICAg
ICAgICAgICA9IDFMTFUgPDwgNDAsCisgICAgICAgIExheW91dENvbnN0cmFpbnREYXRhICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDQxLAogICAgICAgICAvLyBTY3JvbGxpbmdTdGF0
ZUZpeGVkTm9kZSwgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlCi0gICAgICAgIFZpZXdwb3J0Q29u
c3RyYWludHMgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDQ1LAorICAgICAgICBW
aWV3cG9ydENvbnN0cmFpbnRzICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCA0MiwK
ICAgICAgICAgLy8gU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZQotICAgICAg
ICBPdmVyZmxvd1Njcm9sbGluZ05vZGUgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCA0
NiwKKyAgICAgICAgT3ZlcmZsb3dTY3JvbGxpbmdOb2RlICAgICAgICAgICAgICAgICAgICAgICA9
IDFMTFUgPDwgNDMsCiAgICAgfTsKICAgICAKICAgICBib29sIGhhc0NoYW5nZWRQcm9wZXJ0aWVz
KCkgY29uc3QgeyByZXR1cm4gIW1fY2hhbmdlZFByb3BlcnRpZXMuaXNFbXB0eSgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCAyZDY4NmRlZTYzNjA5NGZiMjg5Zjc3NmQzMTAwZmI4
N2I3NWRiMTM2Li5mNDA4MTlhZmUzY2VmZDM0ODE4MDZmNDE3OTllOTA1OTg3NWY4MGUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTk0LDEwICs5NCw3IEBAIE9wdGlvblNldDxTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5PiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmFw
cGxpY2FibGVQCiAgICAgICAgIFByb3BlcnR5OjpSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxp
bmcsCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgICAgICBQcm9wZXJ0
eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzLAotICAgICAgICBQcm9wZXJ0eTo6VmVydGljYWxTbmFw
T2Zmc2V0cywKLSAgICAgICAgUHJvcGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzLAot
ICAgICAgICBQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLAorICAgICAgICBQcm9w
ZXJ0eTo6U25hcE9mZnNldHNJbmZvLAogICAgICAgICBQcm9wZXJ0eTo6Q3VycmVudEhvcml6b250
YWxTbmFwT2Zmc2V0SW5kZXgsCiAgICAgICAgIFByb3BlcnR5OjpDdXJyZW50VmVydGljYWxTbmFw
T2Zmc2V0SW5kZXgsCiAgICAgICAgIFByb3BlcnR5OjpJc01vbml0b3JpbmdXaGVlbEV2ZW50cywK
QEAgLTE2MCw0MCArMTU3LDEzIEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpz
ZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbikKIH0KIAogI2lmIEVO
QUJMRShDU1NfU0NST0xMX1NOQVApCi12b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
c2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRz
KQordm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNuYXBPZmZzZXRzSW5mbyhj
b25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBpbmZvKQogewotICAgIGlmIChtX3Nu
YXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMgPT0gc25hcE9mZnNldHMpCisgICAg
aWYgKG1fc25hcE9mZnNldHNJbmZvLmlzRXF1YWwoaW5mbykpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cyA9IHNuYXBPZmZzZXRz
OwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRz
KTsKLX0KLQotdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFZlcnRpY2FsU25h
cE9mZnNldHMoY29uc3QgVmVjdG9yPGZsb2F0PiYgc25hcE9mZnNldHMpCi17Ci0gICAgaWYgKG1f
c25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldHMgPT0gc25hcE9mZnNldHMpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldHMg
PSBzbmFwT2Zmc2V0czsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6OlZlcnRpY2Fs
U25hcE9mZnNldHMpOwotfQotCi12b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0
SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdl
PGZsb2F0Pj4mIHNjcm9sbE9mZnNldFJhbmdlcykKLXsKLSAgICBpZiAobV9zbmFwT2Zmc2V0c0lu
Zm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMgPT0gc2Nyb2xsT2Zmc2V0UmFuZ2VzKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNl
dFJhbmdlcyA9IHNjcm9sbE9mZnNldFJhbmdlczsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJv
cGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OnNldFZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyhjb25zdCBWZWN0
b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgc2Nyb2xsT2Zmc2V0UmFuZ2VzKQotewotICAg
IGlmIChtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPT0gc2Nyb2xs
T2Zmc2V0UmFuZ2VzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3NuYXBPZmZzZXRzSW5mby52
ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPSBzY3JvbGxPZmZzZXRSYW5nZXM7Ci0gICAgc2V0UHJv
cGVydHlDaGFuZ2VkKFByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpOworICAgIG1f
c25hcE9mZnNldHNJbmZvID0gaW5mbzsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6
OlNuYXBPZmZzZXRzSW5mbyk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkIGluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuaAppbmRleCA0MDlhZTlkOWFlNjc5MDNlZjZiYWEyOWY1YmQyNzRlNGMz
ZGIxNDVlLi5iZDRlOTdiOWM1ZWZkZjkxMjlkZWY4YjZiYjIzMGQzN2I0MTY0MDQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuaApAQCAtNzEsMTcgKzcxLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50Jik7CiAKICNpZiBFTkFC
TEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWxT
bmFwT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxT
bmFwT2Zmc2V0czsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SG9yaXpvbnRhbFNuYXBP
ZmZzZXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKLQotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4m
IHZlcnRpY2FsU25hcE9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby52
ZXJ0aWNhbFNuYXBPZmZzZXRzOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWZXJ0aWNh
bFNuYXBPZmZzZXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKLQotICAgIGNvbnN0IFZlY3RvcjxT
Y3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpIGNv
bnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2Vz
OyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIb3Jpem9udGFsU25hcE9mZnNldFJhbmdl
cyhjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYpOwotCi0gICAgY29uc3Qg
VmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIHZlcnRpY2FsU25hcE9mZnNldFJhbmdl
cygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldFJh
bmdlczsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmVydGljYWxTbmFwT2Zmc2V0UmFu
Z2VzKGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+Jik7CisgICAgY29uc3Qg
U2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgc25hcE9mZnNldHNJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm87IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNu
YXBPZmZzZXRzSW5mbyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBuZXdPZmZz
ZXRzSW5mbyk7CiAKICAgICB1bnNpZ25lZCBjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4OyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
KHVuc2lnbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCA5MGI1MGMyMjExMzNlYTQz
NmU4NjFmZWVlOGU4NzUxM2NiNTIzYmIzLi4xMzBlNzNlZGJjMjhjMDgyODgzMWE1OGMyMmYzYzUx
Y2U2N2QxMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCkBAIC03NSwxNyArNzUsOCBAQCB2
b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVu
KGNvbnN0IFNjcm9sbGluZ1N0YXRlTgogICAgICAgICBtX3Njcm9sbE9yaWdpbiA9IHN0YXRlLnNj
cm9sbE9yaWdpbigpOwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBpZiAoc3Rh
dGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6
b250YWxTbmFwT2Zmc2V0cykpCi0gICAgICAgIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxT
bmFwT2Zmc2V0cyA9IHN0YXRlLmhvcml6b250YWxTbmFwT2Zmc2V0cygpOwotCi0gICAgaWYgKHN0
YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0
aWNhbFNuYXBPZmZzZXRzKSkKLSAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFw
T2Zmc2V0cyA9IHN0YXRlLnZlcnRpY2FsU25hcE9mZnNldHMoKTsKLQotICAgIGlmIChzdGF0ZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRh
bFNuYXBPZmZzZXRSYW5nZXMpKQotICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFs
U25hcE9mZnNldFJhbmdlcyA9IHN0YXRlLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCk7Ci0K
LSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlZlcnRpY2FsU25hcE9mZnNldFJhbmdlcykpCi0gICAgICAgIG1fc25hcE9mZnNldHNJ
bmZvLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyA9IHN0YXRlLnZlcnRpY2FsU25hcE9mZnNldFJh
bmdlcygpOworICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6U25hcE9mZnNldHNJbmZvKSkKKyAgICAgICAgbV9zbmFwT2Zmc2V0c0lu
Zm8gPSBzdGF0ZS5zbmFwT2Zmc2V0c0luZm8oKTsKIAogICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudEhvcml6b250YWxT
bmFwT2Zmc2V0SW5kZXgpKQogICAgICAgICBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXggPSBzdGF0ZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCk7CkBAIC0zMzUsNiAr
MzI2LDEzIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVz
KFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCitjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6c25hcE9mZnNldHNJbmZvKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm87Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5oCmluZGV4IDg2MmMxYjNkYmUwZTIzZTE2OWZhNTJjYWE0NjJmZWZkZjE0ZGU4MTguLmJl
NDlkMGIxMjVmMDFiNzFlZDZkOGJjYWU0ZjZlMjc3NTBjMzg0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaApAQCAtOTUsMTAgKzk1LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuSGF2ZVNjcm9sbGJh
cnMoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy5ob3Jpem9udGFs
U2Nyb2xsYmFyTW9kZSAhPSBTY3JvbGxiYXJBbHdheXNPZmYgfHwgbV9zY3JvbGxhYmxlQXJlYVBh
cmFtZXRlcnMudmVydGljYWxTY3JvbGxiYXJNb2RlICE9IFNjcm9sbGJhckFsd2F5c09mZjsgfQog
CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBo
b3Jpem9udGFsU25hcE9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby5o
b3Jpem9udGFsU25hcE9mZnNldHM7IH0KLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNh
bFNuYXBPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxT
bmFwT2Zmc2V0czsgfQotICAgIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+
JiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNl
dHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzOyB9Ci0gICAgY29uc3QgVmVjdG9yPFNj
cm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpIGNvbnN0
IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlczsgfQor
ICAgIGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIHNuYXBPZmZzZXRzSW5mbygp
IGNvbnN0OwogICAgIHVuc2lnbmVkIGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBj
b25zdCB7IHJldHVybiBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXg7IH0KICAgICB1
bnNpZ25lZCBjdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXg7IH0KICAgICB2b2lkIHNldEN1cnJlbnRIb3Jp
em9udGFsU25hcFBvaW50SW5kZXgodW5zaWduZWQgaW5kZXgpIHsgbV9jdXJyZW50SG9yaXpvbnRh
bFNuYXBQb2ludEluZGV4ID0gaW5kZXg7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYy5oCmluZGV4IDMyYTgzOGViNmYzZGE0Mzk4M2JjZmY1NWI3Y2M0MTgx
NTU3MzRlOWYuLjlhMTFiNmExZjVkZDY2MzljMWJlN2FlZGNlYmMzMDQ4ZjJiZGU2NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaApAQCAtNTUsOCAr
NTUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjdXJyZW50U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCk7
CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIHZvaWQgdXBkYXRlU2Nyb2xsU25h
cFBvaW50cyhTY3JvbGxFdmVudEF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYsIGNvbnN0
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mKTsKLSAgICB2b2lkIHNldEFj
dGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzLCB1bnNpZ25lZCk7CiAg
ICAgYm9vbCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UoKSBjb25zdDsKICAgICB1bnNp
Z25lZCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcykgY29uc3Q7
CiAgICAgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCmluZGV4IDc0MGEzMzNhZjE3YjBl
YmEzNGJmZWZhYjBhMzVhYTFlYjljZDdlZDAuLjg3MmNjMjcyMTZmNGJkMzhhOTJhNTllODNmMjhm
NjQ5ZGQ1ZmRiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjLm1tCkBAIC03NSw2ICs3NSwxNiBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxTY3JvbGxP
ZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gY29udmVydFRvTGF5b3V0VW5pdHMoY29uc3QgVgogCiAg
ICAgcmV0dXJuIHNuYXBPZmZzZXRSYW5nZXM7CiB9CisKK3N0YXRpYyBpbmxpbmUgU2Nyb2xsU25h
cE9mZnNldHNJbmZvPExheW91dFVuaXQ+IGNvbnZlcnRUb0xheW91dFVuaXRzKGNvbnN0IFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIHNuYXBPZmZzZXRzSW5mb0FzRmxvYXQpCit7CisgICAg
cmV0dXJuIHsKKyAgICAgICAgY29udmVydFRvTGF5b3V0VW5pdHMoc25hcE9mZnNldHNJbmZvQXNG
bG9hdC52ZXJ0aWNhbFNuYXBPZmZzZXRzKSwKKyAgICAgICAgY29udmVydFRvTGF5b3V0VW5pdHMo
c25hcE9mZnNldHNJbmZvQXNGbG9hdC5ob3Jpem9udGFsU25hcE9mZnNldHMpLAorICAgICAgICBj
b252ZXJ0VG9MYXlvdXRVbml0cyhzbmFwT2Zmc2V0c0luZm9Bc0Zsb2F0LnZlcnRpY2FsU25hcE9m
ZnNldFJhbmdlcyksCisgICAgICAgIGNvbnZlcnRUb0xheW91dFVuaXRzKHNuYXBPZmZzZXRzSW5m
b0FzRmxvYXQuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpCisgICAgfTsKK30KICNlbmRpZgog
CiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnVwZGF0ZUZyb21T
dGF0ZU5vZGUoY29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdTdGF0
ZU5vZGUpCkBAIC04NiwzMCArOTYsMTcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjOjp1cGRhdGVGcm9tU3RhdGVOb2RlKGNvbnN0IFNjcm9sbGluZ1MKICAgICB9
CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6
b250YWxTbmFwT2Zmc2V0cykgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldFJhbmdl
cykpCi0gICAgICAgIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jp
em9udGFsLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUuaG9yaXpvbnRh
bFNuYXBPZmZzZXRzKCkpLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUu
aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSkpOwotCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRl
Tm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVy
dGljYWxTbmFwT2Zmc2V0cykgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMp
KQotICAgICAgICB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpczo6VmVydGlj
YWwsIGNvbnZlcnRUb0xheW91dFVuaXRzKHNjcm9sbGluZ1N0YXRlTm9kZS52ZXJ0aWNhbFNuYXBP
ZmZzZXRzKCkpLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUudmVydGlj
YWxTbmFwT2Zmc2V0UmFuZ2VzKCkpKTsKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0lu
Zm8pKQorICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIudXBkYXRlU2Nyb2xsU25hcFBvaW50cyhj
b252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUuc25hcE9mZnNldHNJbmZvKCkp
KTsKIAogICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4
KSkKLSAgICAgICAgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwsIHNjcm9sbGluZ1N0YXRlTm9kZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQ
b2ludEluZGV4KCkpOwotICAgIAorICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIuc2V0QWN0aXZl
U2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9s
bGluZ1N0YXRlTm9kZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkpOworCiAgICAg
aWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4KSkKLSAgICAgICAg
c2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2Fs
LCBzY3JvbGxpbmdTdGF0ZU5vZGUuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7Cisg
ICAgICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlz
KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHNjcm9sbGluZ1N0YXRlTm9kZS5jdXJyZW50VmVy
dGljYWxTbmFwUG9pbnRJbmRleCgpKTsKICNlbmRpZgogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZl
bnRBeGlzIGF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcE9mZnNldHMsIGNvbnN0
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIHNuYXBSYW5nZXMpCi17Ci0g
ICAgbV9zY3JvbGxDb250cm9sbGVyLnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoYXhpcywgc25hcE9m
ZnNldHMsIHNuYXBSYW5nZXMpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWM6OnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRB
eGlzIGF4aXMsIHVuc2lnbmVkIGluZGV4KQotewotICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zZXRB
Y3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKGF4aXMsIGluZGV4KTsKLX0KLQogdW5zaWduZWQg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWN0aXZlU2Nyb2xsU25hcElu
ZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKIHsKICAgICByZXR1cm4gbV9z
Y3JvbGxDb250cm9sbGVyLmFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoYXhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgKaW5kZXgg
NzMwMzI0NGZjNjBmZWYzNDM5MGFkNjRlMjUxOWFjNWViMjMyMTUwNS4uOTQ0Yjk4MDZkNDY4NjI0
MDNiMTkwNDdmNmZmZDdkYThhNDA4ZTg3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaApAQCAtMTU4LDcgKzE1OCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZCgpOwogCiAjaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKLSAgICB2b2lkIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlz
LCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFu
Z2U8TGF5b3V0VW5pdD4+Jik7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKGNvbnN0
IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYpOwogICAgIHZvaWQgc2V0QWN0aXZl
U2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMsIHVuc2lnbmVkKTsKICAgICB2
b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzRm9yT2Zmc2V0KFNjcm9sbE9mZnNldCk7CiAg
ICAgYm9vbCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UoKSBjb25zdCB7IHJldHVybiBt
X2FjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KaW5kZXggZDgxODVjM2I2N2U5YTNm
MDgyYjQzN2RhODVhNGYxZjg2MjY5Y2U0YS4uNzcxOTE2MzEzNGU5YWQ5NGM2ZDQyODg2MjFkZGI3
N2I2OGFkNGNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Ny
b2xsQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3Jv
bGxDb250cm9sbGVyLm1tCkBAIC04MSwxMSArODEsNiBAQCBzdGF0aWMgZmxvYXQgc2Nyb2xsV2hl
ZWxNdWx0aXBsaWVyKCkKIH0KICNlbmRpZgogCi1zdGF0aWMgU2Nyb2xsRXZlbnRBeGlzIG90aGVy
U2Nyb2xsRXZlbnRBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzKQotewotICAgIHJldHVybiBheGlz
ID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IFNjcm9sbEV2ZW50QXhpczo6VmVydGlj
YWwgOiBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWw7Ci19Ci0KIFNjcm9sbENvbnRyb2xsZXI6
OlNjcm9sbENvbnRyb2xsZXIoU2Nyb2xsQ29udHJvbGxlckNsaWVudCYgY2xpZW50KQogICAgIDog
bV9jbGllbnQoY2xpZW50KQogewpAQCAtODMxLDcgKzgyNiwxNyBAQCB2b2lkIFNjcm9sbENvbnRy
b2xsZXI6OnNjcm9sbFNuYXBUaW1lckZpcmVkKCkKIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBk
YXRlU2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkK
IHsKICAgICBjb25zdCBhdXRvKiBzbmFwT2Zmc2V0SW5mbyA9IHNjcm9sbGFibGVBcmVhLnNuYXBP
ZmZzZXRJbmZvKCk7Ci0gICAgaWYgKCFzbmFwT2Zmc2V0SW5mbyB8fCBzbmFwT2Zmc2V0SW5mby0+
aXNFbXB0eSgpKSB7CisgICAgaWYgKCFzbmFwT2Zmc2V0SW5mbykgeworICAgICAgICBtX3Njcm9s
bFNuYXBTdGF0ZSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1cGRh
dGVTY3JvbGxTbmFwUG9pbnRzKCpzbmFwT2Zmc2V0SW5mbyk7Cit9CisKK3ZvaWQgU2Nyb2xsQ29u
dHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm88TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRJbmZvKQoreworICAgIGlmIChzbmFwT2Zmc2V0SW5m
by5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBudWxscHRyOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtODQwLDM0ICs4NDUsMTIgQEAgdm9pZCBTY3JvbGxDb250
cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwU3RhdGUoY29uc3QgU2Nyb2xsYWJsZUFyZWEmIHNjcm9s
bGFibGVBcmUKICAgICBpZiAoIW1fc2Nyb2xsU25hcFN0YXRlKQogICAgICAgICBtX3Njcm9sbFNu
YXBTdGF0ZSA9IG1ha2VVbmlxdWU8U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU+KCk7CiAKLSAgICBt
X3Njcm9sbFNuYXBTdGF0ZS0+c2V0U25hcE9mZnNldEluZm8oKnNuYXBPZmZzZXRJbmZvKTsKKyAg
ICBtX3Njcm9sbFNuYXBTdGF0ZS0+c2V0U25hcE9mZnNldEluZm8oc25hcE9mZnNldEluZm8pOwog
CiAgICAgaWYgKHNob3VsZENvbXB1dGVDdXJyZW50U25hcEluZGljZXMpCiAgICAgICAgIHNldEFj
dGl2ZVNjcm9sbFNuYXBJbmRpY2VzRm9yT2Zmc2V0KHJvdW5kZWRJbnRQb2ludChtX2NsaWVudC5z
Y3JvbGxPZmZzZXQoKSkpOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVh
bSA8PCAiU2Nyb2xsQ29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiB1cGRhdGVTY3JvbGxTbmFwU3Rh
dGUgZm9yICIgPDwgc2Nyb2xsYWJsZUFyZWEgPDwgIiBuZXcgc3RhdGUgIiA8PCBWYWx1ZU9yTnVs
bChtX3Njcm9sbFNuYXBTdGF0ZS5nZXQoKSkpOwotfQotCi12b2lkIFNjcm9sbENvbnRyb2xsZXI6
OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFZlY3Rv
cjxMYXlvdXRVbml0PiYgc25hcFBvaW50cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdl
PExheW91dFVuaXQ+PiYgc25hcFJhbmdlcykKLXsKLSAgICBib29sIHNob3VsZENvbXB1dGVDdXJy
ZW50U25hcEluZGljZXMgPSBmYWxzZTsKLSAgICBpZiAoIW1fc2Nyb2xsU25hcFN0YXRlKSB7Ci0g
ICAgICAgIGlmIChzbmFwUG9pbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZSA9IG1ha2VVbmlxdWU8U2Nyb2xsU25hcEFuaW1hdG9y
U3RhdGU+KCk7Ci0gICAgICAgIHNob3VsZENvbXB1dGVDdXJyZW50U25hcEluZGljZXMgPSB0cnVl
OwotICAgIH0KLQotICAgIGlmIChzbmFwUG9pbnRzLmlzRW1wdHkoKSAmJiBtX3Njcm9sbFNuYXBT
dGF0ZS0+c25hcE9mZnNldHNGb3JBeGlzKG90aGVyU2Nyb2xsRXZlbnRBeGlzKGF4aXMpKS5pc0Vt
cHR5KCkpCi0gICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0gbnVsbHB0cjsKLSAgICBlbHNlIHsK
LSAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUtPnNldFNuYXBPZmZzZXRzQW5kUG9zaXRpb25SYW5n
ZXNGb3JBeGlzKGF4aXMsIHNuYXBQb2ludHMsIHNuYXBSYW5nZXMpOwotICAgICAgICBpZiAoc2hv
dWxkQ29tcHV0ZUN1cnJlbnRTbmFwSW5kaWNlcykgewotICAgICAgICAgICAgc2V0QWN0aXZlU2Ny
b2xsU25hcEluZGljZXNGb3JPZmZzZXQocm91bmRlZEludFBvaW50KG1fY2xpZW50LnNjcm9sbE9m
ZnNldCgpKSk7Ci0gICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFt
IDw8ICJTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRzIC0gY29tcHV0ZWQg
aW5pdGlhbCBzbmFwIGluZGljZXM6IHggIiA8PCBtX3Njcm9sbFNuYXBTdGF0ZS0+YWN0aXZlU25h
cEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpIDw8ICIsIHkgIiA8PCBt
X3Njcm9sbFNuYXBTdGF0ZS0+YWN0aXZlU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6
OlZlcnRpY2FsKSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9s
bFNuYXAsIHN0cmVhbSA8PCAiU2Nyb2xsQ29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiB1cGRhdGVT
Y3JvbGxTbmFwU3RhdGUgbmV3IHN0YXRlOiAiIDw8IFZhbHVlT3JOdWxsKG1fc2Nyb2xsU25hcFN0
YXRlLmdldCgpKSk7CiB9CiAKIHVuc2lnbmVkIFNjcm9sbENvbnRyb2xsZXI6OmFjdGl2ZVNjcm9s
bFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKaW5kZXggNzRl
OWI4MTMwYjhhNmY1YzYyOTliYWZhYWNmNzhlMmJhNDg3ZWMzYi4uYTlhYWZmMGUzNjg4NTY1OGMx
MjBiYzZiOWNmODc4Nzk3NzU4ZDA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcApAQCAtOTgsNiArOTgsMTEgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZXF1ZXN0ZWRTY3JvbGxEYXRhPiB7CiAgICAgc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgUmVxdWVzdGVkU2Nyb2xs
RGF0YSYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTY3JvbGxTbmFw
T2Zmc2V0c0luZm88ZmxvYXQ+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Jik7CisgICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZs
b2F0PiYpOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAt
MTE1LDEwICsxMjAsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk+IHsKICAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsYWJsZUFyZWFQYXJhbXMsCiAgICAgICAgIFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlJlYXNvbnNGb3JTeW5jaHJvbm91c1Nj
cm9sbGluZywKICAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6
UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24sCi0gICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0cywKLSAgICAgICAgV2ViQ29yZTo6
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0cywKLSAgICAg
ICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBP
ZmZzZXRSYW5nZXMsCi0gICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk6OlZlcnRpY2FsU25hcE9mZnNldFJhbmdlcywKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6U25hcE9mZnNldHNJbmZvLAogICAgICAgICBXZWJDb3JlOjpT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJ
bmRleCwKICAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3Vy
cmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4LAogICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpJc01vbml0b3JpbmdXaGVlbEV2ZW50cywKQEAgLTIwNiwxMCAr
MjA4LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogICAgIFNDUk9MTElOR19OT0RFX0VOQ09E
RShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxQb3NpdGlvbiwgc2Nyb2xsUG9z
aXRpb24pCiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlNjcm9sbE9yaWdpbiwgc2Nyb2xsT3JpZ2luKQogI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApCi0gICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0cywgaG9yaXpvbnRhbFNuYXBPZmZzZXRzKQotICAg
IFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0
aWNhbFNuYXBPZmZzZXRzLCB2ZXJ0aWNhbFNuYXBPZmZzZXRzKQotICAgIFNDUk9MTElOR19OT0RF
X0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNl
dFJhbmdlcywgaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpCi0gICAgU0NST0xMSU5HX05PREVf
RU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldFJh
bmdlcywgdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09E
RShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8sIHNuYXBPZmZz
ZXRzSW5mbykKICAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgsIGN1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXgpCiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0
YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCwgY3VycmVu
dFZlcnRpY2FsU25hcFBvaW50SW5kZXgpCiAjZW5kaWYKQEAgLTMwNiwxMCArMzA1LDcgQEAgYm9v
bCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBTY3JvbGwKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsUG9zaXRpb24sIEZsb2F0UG9pbnQsIHNldFNjcm9s
bFBvc2l0aW9uKTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpQcm9wZXJ0eTo6U2Nyb2xsT3JpZ2luLCBJbnRQb2ludCwgc2V0U2Nyb2xsT3JpZ2luKTsKICNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldHMsIFZlY3Rvcjxm
bG9hdD4sIHNldEhvcml6b250YWxTbmFwT2Zmc2V0cyk7Ci0gICAgU0NST0xMSU5HX05PREVfREVD
T0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldHMsIFZl
Y3RvcjxmbG9hdD4sIHNldFZlcnRpY2FsU25hcE9mZnNldHMpOwotICAgIFNDUk9MTElOR19OT0RF
X0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNl
dFJhbmdlcywgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4sIHNldEhvcml6b250YWxT
bmFwT2Zmc2V0UmFuZ2VzKQotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsIFZlY3RvcjxTY3JvbGxP
ZmZzZXRSYW5nZTxmbG9hdD4+LCBzZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpCisgICAgU0NS
T0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNuYXBPZmZz
ZXRzSW5mbywgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Piwgc2V0U25hcE9mZnNldHNJbmZv
KTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0
eTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgsIHVuc2lnbmVkLCBzZXRDdXJyZW50
SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Ny
b2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4
LCB1bnNpZ25lZCwgc2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgpOwogI2VuZGlmCkBA
IC01MjYsNiArNTIyLDI3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXF1ZXN0ZWRTY3JvbGxEYXRh
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlcXVlc3RlZFNjcm9sCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxm
bG9hdD4mIGluZm8pCit7CisgICAgZW5jb2RlciA8PCBpbmZvLnZlcnRpY2FsU25hcE9mZnNldHM7
CisgICAgZW5jb2RlciA8PCBpbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0czsKKyAgICBlbmNvZGVy
IDw8IGluZm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzOworICAgIGVuY29kZXIgPDwgaW5mby5o
b3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Nyb2xs
U25hcE9mZnNldHNJbmZvPGZsb2F0PiYgaW5mbykKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGluZm8udmVydGljYWxTbmFwT2Zmc2V0cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby52ZXJ0aWNhbFNuYXBP
ZmZzZXRSYW5nZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShpbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiB0cnVlOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGlj
IHZvaWQgZW5jb2RlTm9kZUFuZERlc2NlbmRhbnRzKElQQzo6RW5jb2RlciYgZW5jb2RlciwgY29u
c3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUsIGludCYgZW5jb2RlZE5vZGVDb3VudCkK
QEAgLTY5NiwxNyArNzEzLDEyIEBAIHN0YXRpYyB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgYm9vbCBjCiAgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgic2Nyb2xsZWQtY29udGVudHMtbGF5ZXIiLCBzdGF0aWNfY2FzdDxHcmFw
aGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCkp
KTsKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVy
dGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzKSkKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0
aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8pKSB7CiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiaG9y
aXpvbnRhbCBzbmFwIG9mZnNldHMiLCBub2RlLmhvcml6b250YWxTbmFwT2Zmc2V0cygpKTsKLQot
ICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldHMpKQogICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoInZlcnRpY2FsIHNuYXAgb2Zmc2V0cyIsIG5vZGUudmVydGlj
YWxTbmFwT2Zmc2V0cygpKTsKLQotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJl
bnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4KSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJj
dXJyZW50IGhvcml6b250YWwgc25hcCBwb2ludCBpbmRleCIsIG5vZGUuY3VycmVudEhvcml6b250
YWxTbmFwUG9pbnRJbmRleCgpKTsKLQotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8
IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1
cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
Y3VycmVudCB2ZXJ0aWNhbCBzbmFwIHBvaW50IGluZGV4Iiwgbm9kZS5jdXJyZW50VmVydGljYWxT
bmFwUG9pbnRJbmRleCgpKTsKKyAgICB9CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IDczNzJm
ZjI5Zjc1OWIyMDEwODc2NjU4MWRkMTA0MThiOGI0ODM2YmMuLjg2NmU5MmE3ODMwMzhjMjE5ZGFm
MTA2YmQ0YmVlMjZlODBjMTVlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KQEAgLTIxMyw3ICsyMTMsNyBAQCBib29s
IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnNob3VsZFNuYXBGb3JNYWluRnJhbWVT
Y3JvbGxpbmcoU2Nyb2xsRXZlbgogICAgIFNjcm9sbGluZ1RyZWVOb2RlKiByb290ID0gbV9zY3Jv
bGxpbmdUcmVlLT5yb290Tm9kZSgpOwogICAgIGlmIChyb290ICYmIHJvb3QtPmlzRnJhbWVTY3Jv
bGxpbmdOb2RlKCkpIHsKICAgICAgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSog
cm9vdFNjcm9sbGluZ05vZGUgPSBzdGF0aWNfY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlKj4ocm9vdCk7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRz
ID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyByb290U2Nyb2xsaW5nTm9k
ZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkgOiByb290U2Nyb2xsaW5nTm9kZS0+dmVydGljYWxT
bmFwT2Zmc2V0cygpOworICAgICAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cyA9
IHJvb3RTY3JvbGxpbmdOb2RlLnNuYXBPZmZzZXRzSW5mbygpLm9mZnNldHNGb3JBeGlzKGF4aXMp
OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50SW5kZXggPSBheGlzID09IFNjcm9sbEV2ZW50QXhp
czo6SG9yaXpvbnRhbCA/IG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCA6IG1fY3Vy
cmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXg7CiAgICAgICAgIHJldHVybiBzbmFwT2Zmc2V0cy5z
aXplKCkgJiYgKGN1cnJlbnRJbmRleCA8IHNuYXBPZmZzZXRzLnNpemUoKSB8fCBjdXJyZW50SW5k
ZXggPT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCk7CiAgICAgfQpAQCAtMjI1LDggKzIyNSw4IEBA
IGZsb2F0IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zmc2V0
Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFNjCiAgICAgU2Nyb2xsaW5nVHJlZU5vZGUqIHJvb3QgPSBt
X3Njcm9sbGluZ1RyZWUtPnJvb3ROb2RlKCk7CiAgICAgQVNTRVJUKHJvb3QgJiYgcm9vdC0+aXNG
cmFtZVNjcm9sbGluZ05vZGUoKSk7CiAgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZSogcm9vdFNjcm9sbGluZ05vZGUgPSBzdGF0aWNfY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlKj4ocm9vdCk7Ci0gICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgc25hcE9mZnNldHMg
PSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHJvb3RTY3JvbGxpbmdOb2Rl
LT5ob3Jpem9udGFsU25hcE9mZnNldHMoKSA6IHJvb3RTY3JvbGxpbmdOb2RlLT52ZXJ0aWNhbFNu
YXBPZmZzZXRzKCk7Ci0gICAgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4m
IHNuYXBPZmZzZXRSYW5nZXMgPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/
IHJvb3RTY3JvbGxpbmdOb2RlLT5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpIDogcm9vdFNj
cm9sbGluZ05vZGUtPnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpOworICAgIGNvbnN0IFZlY3Rv
cjxmbG9hdD4mIHNuYXBPZmZzZXRzID0gYXhpcyA9PSByb290U2Nyb2xsaW5nTm9kZS5zbmFwT2Zm
c2V0c0luZm8oKS5vZmZzZXRzRm9yQXhpcyhheGlzKTsKKyAgICBjb25zdCBWZWN0b3I8U2Nyb2xs
T2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgc25hcE9mZnNldFJhbmdlcyA9IHJvb3RTY3JvbGxpbmdOb2Rl
LnNuYXBPZmZzZXRzSW5mbygpLm9mZnNldFJhbmdlc0ZvckF4aXMoYXhpcyk7CiAKICAgICBmbG9h
dCBzY2FsZWRTY3JvbGxEZXN0aW5hdGlvbiA9IHNjcm9sbERlc3RpbmF0aW9uIC8gbV93ZWJQYWdl
UHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7CiAgICAgZmxvYXQgcmF3Q2xvc2VzdFNuYXBP
ZmZzZXQgPSBjbG9zZXN0U25hcE9mZnNldChzbmFwT2Zmc2V0cywgc25hcE9mZnNldFJhbmdlcywg
c2NhbGVkU2Nyb2xsRGVzdGluYXRpb24sIHZlbG9jaXR5LCBjdXJyZW50SW5kZXgpOwpAQCAtMjQz
LDggKzI0Myw4IEBAIGJvb2wgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6aGFzQWN0
aXZlU25hcFBvaW50KCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSYgcm9vdFNjcm9sbGluZ05vZGUgPSBkb3duY2FzdDxT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPigqcm9vdCk7Ci0gICAgY29uc3QgVmVjdG9y
PGZsb2F0PiYgaG9yaXpvbnRhbCA9IHJvb3RTY3JvbGxpbmdOb2RlLmhvcml6b250YWxTbmFwT2Zm
c2V0cygpOwotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2FsID0gcm9vdFNjcm9sbGlu
Z05vZGUudmVydGljYWxTbmFwT2Zmc2V0cygpOworICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhv
cml6b250YWwgPSByb290U2Nyb2xsaW5nTm9kZS5zbmFwT2Zmc2V0c0luZm8oKS5ob3Jpem9udGFs
U25hcE9mZnNldHM7CisgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmVydGljYWwgPSByb290U2Ny
b2xsaW5nTm9kZS5zbmFwT2Zmc2V0c0luZm8oKS52ZXJ0aWNhbFNuYXBPZmZzZXRzOwogCiAgICAg
aWYgKGhvcml6b250YWwuaXNFbXB0eSgpICYmIHZlcnRpY2FsLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjY0LDggKzI2NCw4IEBAIENHUG9pbnQgUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eTo6bmVhcmVzdEFjdGl2ZUNvbnRlbnRJbnNldEFkanVzdGVkU25hcE9m
CiAgICAgU2Nyb2xsaW5nVHJlZU5vZGUqIHJvb3QgPSBtX3Njcm9sbGluZ1RyZWUtPnJvb3ROb2Rl
KCk7CiAgICAgQVNTRVJUKHJvb3QgJiYgaXM8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZT4ocm9vdCkpOwogICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUmIHJvb3RTY3Jv
bGxpbmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oKnJv
b3QpOwotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWwgPSByb290U2Nyb2xsaW5n
Tm9kZS5ob3Jpem9udGFsU25hcE9mZnNldHMoKTsKLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2
ZXJ0aWNhbCA9IHJvb3RTY3JvbGxpbmdOb2RlLnZlcnRpY2FsU25hcE9mZnNldHMoKTsKKyAgICBj
b25zdCBWZWN0b3I8ZmxvYXQ+JiBob3Jpem9udGFsID0gcm9vdFNjcm9sbGluZ05vZGUuc25hcE9m
ZnNldHNJbmZvKCkuaG9yaXpvbnRhbFNuYXBPZmZzZXRzOworICAgIGNvbnN0IFZlY3RvcjxmbG9h
dD4mIHZlcnRpY2FsID0gcm9vdFNjcm9sbGluZ05vZGUuc25hcE9mZnNldHNJbmZvKCkudmVydGlj
YWxTbmFwT2Zmc2V0czsKIAogICAgIC8vIFRoZSBib3VuZHMgY2hlY2tpbmcgd2l0aCBtYXhTY3Jv
bGxPZmZzZXRzIGlzIHRvIGVuc3VyZSB0aGF0IHdlIHdvbid0IGludGVyZmVyZSB3aXRoIHJ1YmJl
ci1iYW5kaW5nIHdoZW4gc2Nyb2xsaW5nIHRvIHRoZSBlZGdlIG9mIHRoZSBwYWdlLgogICAgIGlm
ICghaG9yaXpvbnRhbC5pc0VtcHR5KCkgJiYgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludElu
ZGV4IDwgaG9yaXpvbnRhbC5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KaW5kZXggZGZiZjdhNGRiY2Qz
ZTA1YTc3ZmQ1MWQyMjMwMGU2NjIwMzhlZmI4Ny4uMDAzZWE1MjdlYzU4ZTA5ZjcwNzllODk5MzEw
NDNjYWVmZGE4NzI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQpAQCAtMTA2LDE3ICsxMDYsMTkgQEAgLSAo
dm9pZClzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3
IHdpdGhWZWxvY2l0eTooQ0dQb2kKICAgICB1bnNpZ25lZCBvcmlnaW5hbEhvcml6b250YWxTbmFw
UG9zaXRpb24gPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1
cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKTsKICAgICB1bnNpZ25lZCBvcmlnaW5hbFZl
cnRpY2FsU25hcFBvc2l0aW9uID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGlu
Z05vZGUoKS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpOwogCi0gICAgaWYgKCFfc2Ny
b2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmhvcml6b250YWxTbmFwT2Zm
c2V0cygpLmlzRW1wdHkoKSkgeworICAgIGNvbnN0IGF1dG8mIGhvcml6b250YWwgPSBfc2Nyb2xs
aW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpLmhv
cml6b250YWxTbmFwT2Zmc2V0czsKKyAgICBpZiAoIWhvcml6b250YWwuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIHVuc2lnbmVkIGluZGV4OwotICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRp
b24gPSBXZWJDb3JlOjpjbG9zZXN0U25hcE9mZnNldChfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0
ZS0+c2Nyb2xsaW5nTm9kZSgpLmhvcml6b250YWxTbmFwT2Zmc2V0cygpLCBfc2Nyb2xsaW5nVHJl
ZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2Vz
KCksIGhvcml6b250YWxUYXJnZXQsIHZlbG9jaXR5LngsIGluZGV4KTsKKyAgICAgICAgZmxvYXQg
cG90ZW50aWFsU25hcFBvc2l0aW9uID0gV2ViQ29yZTo6Y2xvc2VzdFNuYXBPZmZzZXQoaG9yaXpv
bnRhbCwgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zbmFwT2Zm
c2V0c0luZm8oKS5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcywgaG9yaXpvbnRhbFRhcmdldCwg
dmVsb2NpdHkueCwgaW5kZXgpOwogICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+
c2Nyb2xsaW5nTm9kZSgpLnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoaW5kZXgp
OwogICAgICAgICBpZiAoaG9yaXpvbnRhbFRhcmdldCA+PSAwICYmIGhvcml6b250YWxUYXJnZXQg
PD0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZS53aWR0aCkKICAgICAgICAgICAgIHRhcmdldENvbnRl
bnRPZmZzZXQtPnggPSBwb3RlbnRpYWxTbmFwUG9zaXRpb247CiAgICAgfQogCi0gICAgaWYgKCFf
c2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnZlcnRpY2FsU25hcE9m
ZnNldHMoKS5pc0VtcHR5KCkpIHsKKyAgICBjb25zdCBhdXRvJiB2ZXJ0aWNhbCA9IF9zY3JvbGxp
bmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkudmVy
dGljYWxTbmFwT2Zmc2V0czsKKyAgICBpZiAoIXZlcnRpY2FsLmlzRW1wdHkoKSkgewogICAgICAg
ICB1bnNpZ25lZCBpbmRleDsKLSAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0g
V2ViQ29yZTo6Y2xvc2VzdFNuYXBPZmZzZXQoX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNj
cm9sbGluZ05vZGUoKS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCksIF9zY3JvbGxpbmdUcmVlTm9kZURl
bGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCksIHZlcnRp
Y2FsVGFyZ2V0LCB2ZWxvY2l0eS55LCBpbmRleCk7CisgICAgICAgIGZsb2F0IHBvdGVudGlhbFNu
YXBQb3NpdGlvbiA9IFdlYkNvcmU6OmNsb3Nlc3RTbmFwT2Zmc2V0KHZlcnRpY2FsLCBfc2Nyb2xs
aW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpLnZl
cnRpY2FsU25hcE9mZnNldFJhbmdlcywgdmVydGljYWxUYXJnZXQsIHZlbG9jaXR5LnksIGluZGV4
KTsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5z
ZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChpbmRleCk7CiAgICAgICAgIGlmICh2ZXJ0
aWNhbFRhcmdldCA+PSAwICYmIHZlcnRpY2FsVGFyZ2V0IDw9IHNjcm9sbFZpZXcuY29udGVudFNp
emUuaGVpZ2h0KQogICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9mZnNldC0+eSA9IHBvdGVudGlh
bFNuYXBQb3NpdGlvbjsKQEAgLTI4MCw5ICsyODIsOSBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3Jv
bAogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICAvLyBGSVhNRTogSWYgb25seSBv
bmUgYXhpcyBzbmFwcyBpbiAyRCBzY3JvbGxpbmcsIHRoZSBvdGhlciBheGlzIHdpbGwgZGVjZWxl
cmF0ZSBmYXN0IGFzIHdlbGwuIElzIHRoaXMgd2hhdCB3ZSB3YW50PwotICAgIGlmIChzY3JvbGxp
bmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk6Okhvcml6b250YWxTbmFwT2Zmc2V0cykgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZz
ZXRzKSkgeworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbykpIHsKICAgICAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIHNjcm9sbFZpZXcoKS5kZWNlbGVy
YXRpb25SYXRlID0gc2Nyb2xsaW5nTm9kZSgpLmhvcml6b250YWxTbmFwT2Zmc2V0cygpLnNpemUo
KSB8fCBzY3JvbGxpbmdOb2RlKCkudmVydGljYWxTbmFwT2Zmc2V0cygpLnNpemUoKSA/IFVJU2Ny
b2xsVmlld0RlY2VsZXJhdGlvblJhdGVGYXN0IDogVUlTY3JvbGxWaWV3RGVjZWxlcmF0aW9uUmF0
ZU5vcm1hbDsKKyAgICAgICAgc2Nyb2xsVmlldygpLmRlY2VsZXJhdGlvblJhdGUgPSBzY3JvbGxp
bmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkuaG9yaXpvbnRhbFNuYXBPZmZzZXRzLnNpemUoKSB8
fCBzY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldHMuc2l6
ZSgpID8gVUlTY3JvbGxWaWV3RGVjZWxlcmF0aW9uUmF0ZUZhc3QgOiBVSVNjcm9sbFZpZXdEZWNl
bGVyYXRpb25SYXRlTm9ybWFsOwogICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAg
ICAgfQogI2VuZGlmCg==
</data>
<flag name="commit-queue"
          id="436192"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418275</attachid>
            <date>2021-01-25 04:46:29 -0800</date>
            <delta_ts>2021-01-25 05:39:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220915-20210125134628.patch</filename>
            <type>text/plain</type>
            <size>46437</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4YjU5NTdmYjgxNTc5
ZTg2ZGRhYzcyMTVjOTMwM2NjZTUxMTAzZS4uYzBmYTU2YjIwMjRiZDk3ZTI4NDU2Zjg4ZWQ5MWJl
OWRjMTFkYWNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTAxLTI1ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgU2Nyb2xs
U25hcE9mZnNldHNJbmZvIGluIHRoZSBzY3JvbGxpbmcgdHJlZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTE1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHNob3VsZCBu
b3QgY2hhbmdlIGJlaGF2aW9yLgorCisgICAgICAgIFVzZSBTY3JvbGxTbmFwT2Zmc2V0cyBtb3Jl
IG9mdGVuIGluIHRoZSBzY3JvbGxpbmcgdHJlZSB0byBjb250aW51ZSB0bworICAgICAgICBhYnN0
cmFjdCBhd2F5IHRoZSBkZXRhaWxzIG9mIGhvdyBzbmFwIG9mZnNldHMgYXJlIGltcGxlbWVudGVk
LgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0Fz
RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0
U2Nyb2xsaW5nTm9kZVNjcm9sbGFibGVBcmVhR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsU25hcFByb3BlcnRpZXNXaXRo
RnJhbWVWaWV3KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6aXNFcXVhbCBj
b25zdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
YXBwbGljYWJsZVByb3BlcnRpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTbmFwT2Zmc2V0c0luZm8pOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6
dXBkYXRlRnJvbVN0YXRlTm9kZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9TY3JvbGxDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxl
cjo6dXBkYXRlU2Nyb2xsU25hcFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRy
b2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6b3RoZXJT
Y3JvbGxFdmVudEF4aXMpOiBEZWxldGVkLgorCiAyMDIxLTAxLTI1ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBOdWxsIFB0ciBEZXJlZiBAIFdl
YkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRiMDUy
NDNhMmRkZDEyMjFlZmMyMTRjMjAwOWM4MWQyZDFjZjdmMjQuLjBlMWJlYjg5YTgxMGI1YzlkOWY1
YzFhOTU1OTc5ZThlZTRhYzcwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDEt
MjUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFVz
ZSBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gaW4gdGhlIHNjcm9sbGluZyB0cmVlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5MTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgU2Nyb2xsU25hcE9mZnNl
dHMgbW9yZSBvZnRlbiBpbiB0aGUgc2Nyb2xsaW5nIHRyZWUgdG8gY29udGludWUgdG8KKyAgICAg
ICAgYWJzdHJhY3QgYXdheSB0aGUgZGV0YWlscyBvZiBob3cgc25hcCBvZmZzZXRzIGFyZSBpbXBs
ZW1lbnRlZC4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChBcmd1bWVudENvZGVyPFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmVuY29kZSk6CisgICAgICAgIChBcmd1bWVudENv
ZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29kZSk6CisgICAgICAgIChBcmd1
bWVudENvZGVyPFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4+OjplbmNvZGUpOgorICAgICAg
ICAoQXJndW1lbnRDb2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYktpdDo6ZHVtcCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6c2hvdWxkU25hcEZvck1h
aW5GcmFtZVNjcm9sbGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5n
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eTo6aGFzQWN0aXZlU25hcFBvaW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6bmVhcmVzdEFjdGl2ZUNvbnRlbnRJbnNldEFkanVzdGVk
U25hcE9mZnNldCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToKKyAgICAgICAgKC1b
V0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmlld0RlbGVnYXRlIHNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dp
bmc6d2l0aFZlbG9jaXR5OnRhcmdldENvbnRlbnRPZmZzZXQ6XSk6CisgICAgICAgIChXZWJLaXQ6
OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJD
aGlsZHJlbik6CisKIDIwMjEtMDEtMjQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzJdIHRoZXZlcmdlLmNvbSAtIHJ1YmJlciBiYW5kIHNj
cm9sbGluZyBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlIGNhdXNlcyBhbiBhYnJ1cHQganVtcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcAppbmRleCBlZDU2YmI2NzA0NzFmYmU3YjZkMmZhMGUxMmQzOGVjODc3
ZmM4NTM3Li5lMGIyOWRhNzA0M2RjYTc0NGI4ODQ5YzcxMDNiMGZkMzBiY2YwZGI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcApAQCAtOTIsMzEgKzkyLDMzIEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQs
IFBsCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi1zdGF0aWMgaW5saW5l
IHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Piogb2Zmc2V0SW5mbywgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9m
ZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgY29uc3QgU2Ny
b2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+KiBvZmZzZXRJbmZvLCBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcikKIHsKKyAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IGZsb2F0SW5m
bzsKKwogICAgIC8vIEZJWE1FOiBJbmNvcnBvcmF0ZSBjdXJyZW50IHBhZ2Ugc2NhbGUgZmFjdG9y
IGluIHNuYXBwaW5nIHRvIGRldmljZSBwaXhlbC4gUGVyaGFwcyB3ZSBzaG91bGQganVzdCBjb252
ZXJ0IHRvIGZsb2F0IGhlcmUgYW5kIGxldCBVSSBwcm9jZXNzIGRvIHRoZSBwaXhlbCBzbmFwcGlu
Zz8KLSAgICBWZWN0b3I8ZmxvYXQ+IHNuYXBPZmZzZXRzQXNGbG9hdDsKICAgICBpZiAob2Zmc2V0
SW5mbykgewotICAgICAgICBjb25zdCBhdXRvJiBvZmZzZXRzID0gb2Zmc2V0SW5mby0+b2Zmc2V0
c0ZvckF4aXMoYXhpcyk7Ci0gICAgICAgIHNuYXBPZmZzZXRzQXNGbG9hdC5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KG9mZnNldHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBvZmZzZXQgOiBv
ZmZzZXRzKQotICAgICAgICAgICAgc25hcE9mZnNldHNBc0Zsb2F0LnVuY2hlY2tlZEFwcGVuZChy
b3VuZFRvRGV2aWNlUGl4ZWwob2Zmc2V0LCBkZXZpY2VTY2FsZUZhY3RvciwgZmFsc2UpKTsKKyAg
ICAgICAgYXV0byBjb252ZXJ0T2Zmc2V0c1RvRmxvYXRzID0gW2RldmljZVNjYWxlRmFjdG9yXShW
ZWN0b3I8TGF5b3V0VW5pdD4gb2Zmc2V0cywgVmVjdG9yPGZsb2F0PiBmbG9hdE9mZnNldHMpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGZsb2F0T2Zmc2V0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG9mZnNldHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgb2Zmc2V0IDogb2Zmc2V0
cykKKyAgICAgICAgICAgICAgICBmbG9hdE9mZnNldHMudW5jaGVja2VkQXBwZW5kKHJvdW5kVG9E
ZXZpY2VQaXhlbChvZmZzZXQsIGRldmljZVNjYWxlRmFjdG9yLCBmYWxzZSkpOworICAgICAgICB9
OworCisgICAgICAgIGF1dG8gY29udmVydE9mZnNldFJhbmdlc1RvRmxvYXQgPSBbZGV2aWNlU2Nh
bGVGYWN0b3JdKFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gb2Zmc2V0UmFu
Z2VzLCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiBmbG9hdE9mZnNldFJhbmdlcykK
KyAgICAgICAgeworICAgICAgICAgICAgZmxvYXRPZmZzZXRSYW5nZXMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShvZmZzZXRSYW5nZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcmFu
Z2UgOiBvZmZzZXRSYW5nZXMpCisgICAgICAgICAgICAgICAgZmxvYXRPZmZzZXRSYW5nZXMudW5j
aGVja2VkQXBwZW5kKHsgcm91bmRUb0RldmljZVBpeGVsKHJhbmdlLnN0YXJ0LCBkZXZpY2VTY2Fs
ZUZhY3RvciwgZmFsc2UpLCByb3VuZFRvRGV2aWNlUGl4ZWwocmFuZ2UuZW5kLCBkZXZpY2VTY2Fs
ZUZhY3RvciwgZmFsc2UpIH0pOworICAgICAgICB9OworCisgICAgICAgIGNvbnZlcnRPZmZzZXRz
VG9GbG9hdHMob2Zmc2V0SW5mby0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBmbG9hdEluZm8uaG9y
aXpvbnRhbFNuYXBPZmZzZXRzKTsKKyAgICAgICAgY29udmVydE9mZnNldHNUb0Zsb2F0cyhvZmZz
ZXRJbmZvLT52ZXJ0aWNhbFNuYXBPZmZzZXRzLCBmbG9hdEluZm8udmVydGljYWxTbmFwT2Zmc2V0
cyk7CisgICAgICAgIGNvbnZlcnRPZmZzZXRSYW5nZXNUb0Zsb2F0KG9mZnNldEluZm8tPmhvcml6
b250YWxTbmFwT2Zmc2V0UmFuZ2VzLCBmbG9hdEluZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5n
ZXMpOworICAgICAgICBjb252ZXJ0T2Zmc2V0UmFuZ2VzVG9GbG9hdChvZmZzZXRJbmZvLT52ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXMsIGZsb2F0SW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMp
OwogICAgIH0KIAotICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+IHNuYXBPZmZz
ZXRSYW5nZXNBc0Zsb2F0OwotICAgIGlmIChvZmZzZXRJbmZvKSB7Ci0gICAgICAgIGNvbnN0IGF1
dG8mIHNuYXBPZmZzZXRSYW5nZXMgPSBvZmZzZXRJbmZvLT5vZmZzZXRSYW5nZXNGb3JBeGlzKGF4
aXMpOwotICAgICAgICBzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHNuYXBPZmZzZXRSYW5nZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiByYW5nZSA6
IHNuYXBPZmZzZXRSYW5nZXMpCi0gICAgICAgICAgICBzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdC51
bmNoZWNrZWRBcHBlbmQoeyByb3VuZFRvRGV2aWNlUGl4ZWwocmFuZ2Uuc3RhcnQsIGRldmljZVNj
YWxlRmFjdG9yLCBmYWxzZSksIHJvdW5kVG9EZXZpY2VQaXhlbChyYW5nZS5lbmQsIGRldmljZVNj
YWxlRmFjdG9yLCBmYWxzZSkgfSk7Ci0gICAgfQotICAgIGlmIChheGlzID09IFNjcm9sbEV2ZW50
QXhpczo6SG9yaXpvbnRhbCkgewotICAgICAgICBub2RlLnNldEhvcml6b250YWxTbmFwT2Zmc2V0
cyhzbmFwT2Zmc2V0c0FzRmxvYXQpOwotICAgICAgICBub2RlLnNldEhvcml6b250YWxTbmFwT2Zm
c2V0UmFuZ2VzKHNuYXBPZmZzZXRSYW5nZXNBc0Zsb2F0KTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBub2RlLnNldFZlcnRpY2FsU25hcE9mZnNldHMoc25hcE9mZnNldHNBc0Zsb2F0KTsKLSAgICAg
ICAgbm9kZS5zZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoc25hcE9mZnNldFJhbmdlc0FzRmxv
YXQpOwotICAgIH0KKyAgICBub2RlLnNldFNuYXBPZmZzZXRzSW5mbyhmbG9hdEluZm8pOwogfQog
I2VuZGlmCiAKQEAgLTcxNCw4ICs3MTYsNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnNldFNjcm9sbGluZ05vZGVTY3JvbGxhYmxlQXJlYUdlb21ldHJ5KFNjcm9sbGluZwogCiAj
aWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBzY3JvbGxhYmxlQXJlYS51cGRhdGVTbmFw
T2Zmc2V0cygpOwotICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdChz
Y3JvbGxpbmdOb2RlLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9sbGFibGVBcmVh
LnNuYXBPZmZzZXRJbmZvKCksIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgc2V0
U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KHNjcm9sbGluZ05vZGUsIFNjcm9s
bEV2ZW50QXhpczo6VmVydGljYWwsICBzY3JvbGxhYmxlQXJlYS5zbmFwT2Zmc2V0SW5mbygpLCBt
X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNu
YXBPZmZzZXRzQXNGbG9hdChzY3JvbGxpbmdOb2RlLCBzY3JvbGxhYmxlQXJlYS5zbmFwT2Zmc2V0
SW5mbygpLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIHNjcm9sbGluZ05vZGUu
c2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleChzY3JvbGxhYmxlQXJlYS5jdXJyZW50
SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkpOwogICAgIHNjcm9sbGluZ05vZGUuc2V0Q3VycmVu
dFZlcnRpY2FsU25hcFBvaW50SW5kZXgoc2Nyb2xsYWJsZUFyZWEuY3VycmVudFZlcnRpY2FsU25h
cFBvaW50SW5kZXgoKSk7CiAjZW5kaWYKQEAgLTkwOSw4ICs5MTAsNyBAQCBib29sIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoU2Nyb2xsaW5nTm9kZUlE
IG5vZGVJRCkgYwogdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxT
bmFwUHJvcGVydGllc1dpdGhGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7
CiAgICAgaWYgKGF1dG8gbm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LnNj
cm9sbGluZ05vZGVJRCgpKSkpIHsKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9m
ZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIGZyYW1lVmll
dy5zbmFwT2Zmc2V0SW5mbygpLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgICAg
ICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2
ZW50QXhpczo6VmVydGljYWwsIGZyYW1lVmlldy5zbmFwT2Zmc2V0SW5mbygpLCBtX3BhZ2UtPmRl
dmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zm
c2V0c0FzRmxvYXQoKm5vZGUsIGZyYW1lVmlldy5zbmFwT2Zmc2V0SW5mbygpLCBtX3BhZ2UtPmRl
dmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBub2RlLT5zZXRDdXJyZW50SG9yaXpvbnRhbFNu
YXBQb2ludEluZGV4KGZyYW1lVmlldy5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkp
OwogICAgICAgICBub2RlLT5zZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChmcmFtZVZp
ZXcuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRl
eCA0OGQ3OWJmYWIwOWYwYjMxOTBjMzMxYjg0ZTFmMWVhMzcwZmFlMDI3Li43Y2UzYjViNjU1YzMy
ZTc2ZTAwNTM2ODVkOWU0ODI4ZmY5MzQyNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApAQCAtNTksNiArNTksMTEg
QEAgc3RydWN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbyB7CiAgICAgVmVjdG9yPFNjcm9sbE9mZnNl
dFJhbmdlPFQ+PiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKICAgICBWZWN0b3I8U2Nyb2xs
T2Zmc2V0UmFuZ2U8VD4+IHZlcnRpY2FsU25hcE9mZnNldFJhbmdlczsKIAorICAgIGJvb2wgaXNF
cXVhbChjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88VD4mIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGhvcml6b250YWxTbmFwT2Zmc2V0cyA9PSBvdGhlci5ob3Jpem9udGFs
U25hcE9mZnNldHMgJiYgdmVydGljYWxTbmFwT2Zmc2V0cyA9PSBvdGhlci52ZXJ0aWNhbFNuYXBP
ZmZzZXRzICYmIGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzID09IG90aGVyLmhvcml6b250YWxT
bmFwT2Zmc2V0UmFuZ2VzICYmIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyA9PSBvdGhlci52ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXM7CisgICAgfQorCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBob3Jpem9udGFsU25hcE9mZnNldHMuaXNFbXB0eSgpICYm
IHZlcnRpY2FsU25hcE9mZnNldHMuaXNFbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuaAppbmRleCBiM2Q1NTBjMmU3Mzc3MGJl
Y2M3MjUyM2QxNWM5MjVlZjU2ZDY5M2Q3Li4zN2MyZGFhY2YwNGJkZjZiYzU2NzQwOGU1NTFkOWMz
M2I2MzZjMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZU5vZGUuaApAQCAtMjMwLDQ3ICsyMzAsNDQgQEAgcHVibGljOgogICAgICAgICBT
Y3JvbGxhYmxlQXJlYVBhcmFtcyAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCA3LAog
ICAgICAgICBSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxpbmcgICAgICAgICAgICAgID0gMUxM
VSA8PCA4LAogICAgICAgICBSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiAgICAgICAgICAgICAgICAg
ICAgID0gMUxMVSA8PCA5LAotICAgICAgICBIb3Jpem9udGFsU25hcE9mZnNldHMgICAgICAgICAg
ICAgICAgICAgICAgID0gMUxMVSA8PCAxMCwKLSAgICAgICAgVmVydGljYWxTbmFwT2Zmc2V0cyAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTEsCi0gICAgICAgIEhvcml6b250YWxT
bmFwT2Zmc2V0UmFuZ2VzICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDEyLAotICAgICAgICBW
ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxMywK
LSAgICAgICAgQ3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXggICAgICAgICAgICA9IDFM
TFUgPDwgMTQsCi0gICAgICAgIEN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCAgICAgICAg
ICAgICAgPSAxTExVIDw8IDE1LAotICAgICAgICBJc01vbml0b3JpbmdXaGVlbEV2ZW50cyAgICAg
ICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxNiwKLSAgICAgICAgU2Nyb2xsQ29udGFpbmVyTGF5
ZXIgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTcsCi0gICAgICAgIFNjcm9sbGVk
Q29udGVudHNMYXllciAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDE4LAotICAgICAg
ICBIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAx
OSwKLSAgICAgICAgVmVydGljYWxTY3JvbGxiYXJMYXllciAgICAgICAgICAgICAgICAgICAgICA9
IDFMTFUgPDwgMjAsCi0gICAgICAgIFBhaW50ZXJGb3JTY3JvbGxiYXIgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxTExVIDw8IDIxLAorICAgICAgICBTbmFwT2Zmc2V0c0luZm8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxMCwKKyAgICAgICAgQ3VycmVudEhvcml6b250
YWxTbmFwT2Zmc2V0SW5kZXggICAgICAgICAgICA9IDFMTFUgPDwgMTEsCisgICAgICAgIEN1cnJl
bnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCAgICAgICAgICAgICAgPSAxTExVIDw8IDEyLAorICAg
ICAgICBJc01vbml0b3JpbmdXaGVlbEV2ZW50cyAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8
PCAxMywKKyAgICAgICAgU2Nyb2xsQ29udGFpbmVyTGF5ZXIgICAgICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgPDwgMTQsCisgICAgICAgIFNjcm9sbGVkQ29udGVudHNMYXllciAgICAgICAgICAg
ICAgICAgICAgICAgPSAxTExVIDw8IDE1LAorICAgICAgICBIb3Jpem9udGFsU2Nyb2xsYmFyTGF5
ZXIgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxNiwKKyAgICAgICAgVmVydGljYWxTY3Jv
bGxiYXJMYXllciAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTcsCisgICAgICAgIFBh
aW50ZXJGb3JTY3JvbGxiYXIgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDE4LAog
ICAgICAgICAvLyBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZQotICAgICAgICBGcmFt
ZVNjYWxlRmFjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyMiwKLSAg
ICAgICAgRXZlbnRUcmFja2luZ1JlZ2lvbiAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUg
PDwgMjMsCi0gICAgICAgIFJvb3RDb250ZW50c0xheWVyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAxTExVIDw8IDI0LAotICAgICAgICBDb3VudGVyU2Nyb2xsaW5nTGF5ZXIgICAgICAgICAg
ICAgICAgICAgICAgID0gMUxMVSA8PCAyNSwKLSAgICAgICAgSW5zZXRDbGlwTGF5ZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjYsCi0gICAgICAgIENvbnRlbnRTaGFk
b3dMYXllciAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDI3LAotICAgICAgICBI
ZWFkZXJIZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyOCwK
LSAgICAgICAgRm9vdGVySGVpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFM
TFUgPDwgMjksCi0gICAgICAgIEhlYWRlckxheWVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAxTExVIDw8IDMwLAotICAgICAgICBGb290ZXJMYXllciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMUxMVSA8PCAzMSwKLSAgICAgICAgQmVoYXZpb3JGb3JGaXhlZEVs
ZW1lbnRzICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMzIsCi0gICAgICAgIFRvcENvbnRl
bnRJbnNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDMzLAotICAgICAg
ICBGaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lICAgICAgICAgID0gMUxMVSA8PCAz
NCwKLSAgICAgICAgVmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQgICA9
IDFMTFUgPDwgMzUsCi0gICAgICAgIEFzeW5jRnJhbWVPck92ZXJmbG93U2Nyb2xsaW5nRW5hYmxl
ZCAgICAgICAgPSAxTExVIDw8IDM2LAotICAgICAgICBXaGVlbEV2ZW50R2VzdHVyZXNCZWNvbWVO
b25CbG9ja2luZyAgICAgICAgID0gMUxMVSA8PCAzNywKLSAgICAgICAgU2Nyb2xsaW5nUGVyZm9y
bWFuY2VUZXN0aW5nRW5hYmxlZCAgICAgICAgICA9IDFMTFUgPDwgMzgsCi0gICAgICAgIExheW91
dFZpZXdwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDM5LAotICAg
ICAgICBNaW5MYXlvdXRWaWV3cG9ydE9yaWdpbiAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8
PCA0MCwKLSAgICAgICAgTWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4gICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgPDwgNDEsCi0gICAgICAgIE92ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplICAgICAg
ICAgICAgICAgICAgPSAxTExVIDw8IDQyLAorICAgICAgICBGcmFtZVNjYWxlRmFjdG9yICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxOSwKKyAgICAgICAgRXZlbnRUcmFja2lu
Z1JlZ2lvbiAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjAsCisgICAgICAgIFJv
b3RDb250ZW50c0xheWVyICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDIxLAor
ICAgICAgICBDb3VudGVyU2Nyb2xsaW5nTGF5ZXIgICAgICAgICAgICAgICAgICAgICAgID0gMUxM
VSA8PCAyMiwKKyAgICAgICAgSW5zZXRDbGlwTGF5ZXIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDFMTFUgPDwgMjMsCisgICAgICAgIENvbnRlbnRTaGFkb3dMYXllciAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAxTExVIDw8IDI0LAorICAgICAgICBIZWFkZXJIZWlnaHQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyNSwKKyAgICAgICAgRm9vdGVySGVp
Z2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjYsCisgICAgICAg
IEhlYWRlckxheWVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDI3
LAorICAgICAgICBGb290ZXJMYXllciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
MUxMVSA8PCAyOCwKKyAgICAgICAgQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzICAgICAgICAgICAg
ICAgICAgICA9IDFMTFUgPDwgMjksCisgICAgICAgIFRvcENvbnRlbnRJbnNldCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDMwLAorICAgICAgICBGaXhlZEVsZW1lbnRzTGF5
b3V0UmVsYXRpdmVUb0ZyYW1lICAgICAgICAgID0gMUxMVSA8PCAzMSwKKyAgICAgICAgVmlzdWFs
Vmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQgICA9IDFMTFUgPDwgMzIsCisgICAg
ICAgIEFzeW5jRnJhbWVPck92ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZCAgICAgICAgPSAxTExVIDw8
IDMzLAorICAgICAgICBXaGVlbEV2ZW50R2VzdHVyZXNCZWNvbWVOb25CbG9ja2luZyAgICAgICAg
ID0gMUxMVSA8PCAzNCwKKyAgICAgICAgU2Nyb2xsaW5nUGVyZm9ybWFuY2VUZXN0aW5nRW5hYmxl
ZCAgICAgICAgICA9IDFMTFUgPDwgMzUsCisgICAgICAgIExheW91dFZpZXdwb3J0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDM2LAorICAgICAgICBNaW5MYXlvdXRWaWV3
cG9ydE9yaWdpbiAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAzNywKKyAgICAgICAgTWF4
TGF5b3V0Vmlld3BvcnRPcmlnaW4gICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMzgsCisg
ICAgICAgIE92ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplICAgICAgICAgICAgICAgICAgPSAxTExV
IDw8IDM5LAogICAgICAgICAvLyBTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlCi0gICAgICAg
IFJlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzICAgICAgICAgICAgICAgPSAxTExVIDw8IDQz
LAotICAgICAgICBMYXlvdXRDb25zdHJhaW50RGF0YSAgICAgICAgICAgICAgICAgICAgICAgID0g
MUxMVSA8PCA0NCwKKyAgICAgICAgUmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMgICAgICAg
ICAgICAgICA9IDFMTFUgPDwgNDAsCisgICAgICAgIExheW91dENvbnN0cmFpbnREYXRhICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDQxLAogICAgICAgICAvLyBTY3JvbGxpbmdTdGF0
ZUZpeGVkTm9kZSwgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlCi0gICAgICAgIFZpZXdwb3J0Q29u
c3RyYWludHMgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDQ1LAorICAgICAgICBW
aWV3cG9ydENvbnN0cmFpbnRzICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCA0MiwK
ICAgICAgICAgLy8gU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZQotICAgICAg
ICBPdmVyZmxvd1Njcm9sbGluZ05vZGUgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCA0
NiwKKyAgICAgICAgT3ZlcmZsb3dTY3JvbGxpbmdOb2RlICAgICAgICAgICAgICAgICAgICAgICA9
IDFMTFUgPDwgNDMsCiAgICAgfTsKICAgICAKICAgICBib29sIGhhc0NoYW5nZWRQcm9wZXJ0aWVz
KCkgY29uc3QgeyByZXR1cm4gIW1fY2hhbmdlZFByb3BlcnRpZXMuaXNFbXB0eSgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCAyZDY4NmRlZTYzNjA5NGZiMjg5Zjc3NmQzMTAwZmI4
N2I3NWRiMTM2Li5mNDA4MTlhZmUzY2VmZDM0ODE4MDZmNDE3OTllOTA1OTg3NWY4MGUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTk0LDEwICs5NCw3IEBAIE9wdGlvblNldDxTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5PiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmFw
cGxpY2FibGVQCiAgICAgICAgIFByb3BlcnR5OjpSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxp
bmcsCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgICAgICBQcm9wZXJ0
eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzLAotICAgICAgICBQcm9wZXJ0eTo6VmVydGljYWxTbmFw
T2Zmc2V0cywKLSAgICAgICAgUHJvcGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzLAot
ICAgICAgICBQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLAorICAgICAgICBQcm9w
ZXJ0eTo6U25hcE9mZnNldHNJbmZvLAogICAgICAgICBQcm9wZXJ0eTo6Q3VycmVudEhvcml6b250
YWxTbmFwT2Zmc2V0SW5kZXgsCiAgICAgICAgIFByb3BlcnR5OjpDdXJyZW50VmVydGljYWxTbmFw
T2Zmc2V0SW5kZXgsCiAgICAgICAgIFByb3BlcnR5OjpJc01vbml0b3JpbmdXaGVlbEV2ZW50cywK
QEAgLTE2MCw0MCArMTU3LDEzIEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpz
ZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbikKIH0KIAogI2lmIEVO
QUJMRShDU1NfU0NST0xMX1NOQVApCi12b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
c2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRz
KQordm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNuYXBPZmZzZXRzSW5mbyhj
b25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBpbmZvKQogewotICAgIGlmIChtX3Nu
YXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMgPT0gc25hcE9mZnNldHMpCisgICAg
aWYgKG1fc25hcE9mZnNldHNJbmZvLmlzRXF1YWwoaW5mbykpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cyA9IHNuYXBPZmZzZXRz
OwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRz
KTsKLX0KLQotdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFZlcnRpY2FsU25h
cE9mZnNldHMoY29uc3QgVmVjdG9yPGZsb2F0PiYgc25hcE9mZnNldHMpCi17Ci0gICAgaWYgKG1f
c25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldHMgPT0gc25hcE9mZnNldHMpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldHMg
PSBzbmFwT2Zmc2V0czsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6OlZlcnRpY2Fs
U25hcE9mZnNldHMpOwotfQotCi12b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0
SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdl
PGZsb2F0Pj4mIHNjcm9sbE9mZnNldFJhbmdlcykKLXsKLSAgICBpZiAobV9zbmFwT2Zmc2V0c0lu
Zm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMgPT0gc2Nyb2xsT2Zmc2V0UmFuZ2VzKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNl
dFJhbmdlcyA9IHNjcm9sbE9mZnNldFJhbmdlczsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJv
cGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OnNldFZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyhjb25zdCBWZWN0
b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgc2Nyb2xsT2Zmc2V0UmFuZ2VzKQotewotICAg
IGlmIChtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPT0gc2Nyb2xs
T2Zmc2V0UmFuZ2VzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3NuYXBPZmZzZXRzSW5mby52
ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPSBzY3JvbGxPZmZzZXRSYW5nZXM7Ci0gICAgc2V0UHJv
cGVydHlDaGFuZ2VkKFByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpOworICAgIG1f
c25hcE9mZnNldHNJbmZvID0gaW5mbzsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6
OlNuYXBPZmZzZXRzSW5mbyk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkIGluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuaAppbmRleCA0MDlhZTlkOWFlNjc5MDNlZjZiYWEyOWY1YmQyNzRlNGMz
ZGIxNDVlLi5iZDRlOTdiOWM1ZWZkZjkxMjlkZWY4YjZiYjIzMGQzN2I0MTY0MDQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuaApAQCAtNzEsMTcgKzcxLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50Jik7CiAKICNpZiBFTkFC
TEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWxT
bmFwT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxT
bmFwT2Zmc2V0czsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SG9yaXpvbnRhbFNuYXBP
ZmZzZXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKLQotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4m
IHZlcnRpY2FsU25hcE9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby52
ZXJ0aWNhbFNuYXBPZmZzZXRzOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWZXJ0aWNh
bFNuYXBPZmZzZXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKLQotICAgIGNvbnN0IFZlY3RvcjxT
Y3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpIGNv
bnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2Vz
OyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIb3Jpem9udGFsU25hcE9mZnNldFJhbmdl
cyhjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYpOwotCi0gICAgY29uc3Qg
VmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIHZlcnRpY2FsU25hcE9mZnNldFJhbmdl
cygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldFJh
bmdlczsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmVydGljYWxTbmFwT2Zmc2V0UmFu
Z2VzKGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+Jik7CisgICAgY29uc3Qg
U2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgc25hcE9mZnNldHNJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm87IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNu
YXBPZmZzZXRzSW5mbyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBuZXdPZmZz
ZXRzSW5mbyk7CiAKICAgICB1bnNpZ25lZCBjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4OyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
KHVuc2lnbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCA5MGI1MGMyMjExMzNlYTQz
NmU4NjFmZWVlOGU4NzUxM2NiNTIzYmIzLi4xMzBlNzNlZGJjMjhjMDgyODgzMWE1OGMyMmYzYzUx
Y2U2N2QxMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCkBAIC03NSwxNyArNzUsOCBAQCB2
b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVu
KGNvbnN0IFNjcm9sbGluZ1N0YXRlTgogICAgICAgICBtX3Njcm9sbE9yaWdpbiA9IHN0YXRlLnNj
cm9sbE9yaWdpbigpOwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBpZiAoc3Rh
dGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6
b250YWxTbmFwT2Zmc2V0cykpCi0gICAgICAgIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxT
bmFwT2Zmc2V0cyA9IHN0YXRlLmhvcml6b250YWxTbmFwT2Zmc2V0cygpOwotCi0gICAgaWYgKHN0
YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0
aWNhbFNuYXBPZmZzZXRzKSkKLSAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFw
T2Zmc2V0cyA9IHN0YXRlLnZlcnRpY2FsU25hcE9mZnNldHMoKTsKLQotICAgIGlmIChzdGF0ZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRh
bFNuYXBPZmZzZXRSYW5nZXMpKQotICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFs
U25hcE9mZnNldFJhbmdlcyA9IHN0YXRlLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCk7Ci0K
LSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlZlcnRpY2FsU25hcE9mZnNldFJhbmdlcykpCi0gICAgICAgIG1fc25hcE9mZnNldHNJ
bmZvLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyA9IHN0YXRlLnZlcnRpY2FsU25hcE9mZnNldFJh
bmdlcygpOworICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6U25hcE9mZnNldHNJbmZvKSkKKyAgICAgICAgbV9zbmFwT2Zmc2V0c0lu
Zm8gPSBzdGF0ZS5zbmFwT2Zmc2V0c0luZm8oKTsKIAogICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudEhvcml6b250YWxT
bmFwT2Zmc2V0SW5kZXgpKQogICAgICAgICBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXggPSBzdGF0ZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCk7CkBAIC0zMzUsNiAr
MzI2LDEzIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVz
KFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCitjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6c25hcE9mZnNldHNJbmZvKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm87Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5oCmluZGV4IDg2MmMxYjNkYmUwZTIzZTE2OWZhNTJjYWE0NjJmZWZkZjE0ZGU4MTguLmJl
NDlkMGIxMjVmMDFiNzFlZDZkOGJjYWU0ZjZlMjc3NTBjMzg0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaApAQCAtOTUsMTAgKzk1LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuSGF2ZVNjcm9sbGJh
cnMoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy5ob3Jpem9udGFs
U2Nyb2xsYmFyTW9kZSAhPSBTY3JvbGxiYXJBbHdheXNPZmYgfHwgbV9zY3JvbGxhYmxlQXJlYVBh
cmFtZXRlcnMudmVydGljYWxTY3JvbGxiYXJNb2RlICE9IFNjcm9sbGJhckFsd2F5c09mZjsgfQog
CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBo
b3Jpem9udGFsU25hcE9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby5o
b3Jpem9udGFsU25hcE9mZnNldHM7IH0KLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNh
bFNuYXBPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxT
bmFwT2Zmc2V0czsgfQotICAgIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+
JiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNl
dHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzOyB9Ci0gICAgY29uc3QgVmVjdG9yPFNj
cm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpIGNvbnN0
IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlczsgfQor
ICAgIGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIHNuYXBPZmZzZXRzSW5mbygp
IGNvbnN0OwogICAgIHVuc2lnbmVkIGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBj
b25zdCB7IHJldHVybiBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXg7IH0KICAgICB1
bnNpZ25lZCBjdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXg7IH0KICAgICB2b2lkIHNldEN1cnJlbnRIb3Jp
em9udGFsU25hcFBvaW50SW5kZXgodW5zaWduZWQgaW5kZXgpIHsgbV9jdXJyZW50SG9yaXpvbnRh
bFNuYXBQb2ludEluZGV4ID0gaW5kZXg7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYy5oCmluZGV4IDMyYTgzOGViNmYzZGE0Mzk4M2JjZmY1NWI3Y2M0MTgx
NTU3MzRlOWYuLjlhMTFiNmExZjVkZDY2MzljMWJlN2FlZGNlYmMzMDQ4ZjJiZGU2NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaApAQCAtNTUsOCAr
NTUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjdXJyZW50U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCk7
CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIHZvaWQgdXBkYXRlU2Nyb2xsU25h
cFBvaW50cyhTY3JvbGxFdmVudEF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYsIGNvbnN0
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mKTsKLSAgICB2b2lkIHNldEFj
dGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzLCB1bnNpZ25lZCk7CiAg
ICAgYm9vbCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UoKSBjb25zdDsKICAgICB1bnNp
Z25lZCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcykgY29uc3Q7
CiAgICAgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCmluZGV4IDc0MGEzMzNhZjE3YjBl
YmEzNGJmZWZhYjBhMzVhYTFlYjljZDdlZDAuLjg3MmNjMjcyMTZmNGJkMzhhOTJhNTllODNmMjhm
NjQ5ZGQ1ZmRiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjLm1tCkBAIC03NSw2ICs3NSwxNiBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxTY3JvbGxP
ZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gY29udmVydFRvTGF5b3V0VW5pdHMoY29uc3QgVgogCiAg
ICAgcmV0dXJuIHNuYXBPZmZzZXRSYW5nZXM7CiB9CisKK3N0YXRpYyBpbmxpbmUgU2Nyb2xsU25h
cE9mZnNldHNJbmZvPExheW91dFVuaXQ+IGNvbnZlcnRUb0xheW91dFVuaXRzKGNvbnN0IFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIHNuYXBPZmZzZXRzSW5mb0FzRmxvYXQpCit7CisgICAg
cmV0dXJuIHsKKyAgICAgICAgY29udmVydFRvTGF5b3V0VW5pdHMoc25hcE9mZnNldHNJbmZvQXNG
bG9hdC52ZXJ0aWNhbFNuYXBPZmZzZXRzKSwKKyAgICAgICAgY29udmVydFRvTGF5b3V0VW5pdHMo
c25hcE9mZnNldHNJbmZvQXNGbG9hdC5ob3Jpem9udGFsU25hcE9mZnNldHMpLAorICAgICAgICBj
b252ZXJ0VG9MYXlvdXRVbml0cyhzbmFwT2Zmc2V0c0luZm9Bc0Zsb2F0LnZlcnRpY2FsU25hcE9m
ZnNldFJhbmdlcyksCisgICAgICAgIGNvbnZlcnRUb0xheW91dFVuaXRzKHNuYXBPZmZzZXRzSW5m
b0FzRmxvYXQuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpCisgICAgfTsKK30KICNlbmRpZgog
CiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnVwZGF0ZUZyb21T
dGF0ZU5vZGUoY29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdTdGF0
ZU5vZGUpCkBAIC04NiwzMCArOTYsMTcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjOjp1cGRhdGVGcm9tU3RhdGVOb2RlKGNvbnN0IFNjcm9sbGluZ1MKICAgICB9
CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6
b250YWxTbmFwT2Zmc2V0cykgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldFJhbmdl
cykpCi0gICAgICAgIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jp
em9udGFsLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUuaG9yaXpvbnRh
bFNuYXBPZmZzZXRzKCkpLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUu
aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSkpOwotCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRl
Tm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVy
dGljYWxTbmFwT2Zmc2V0cykgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMp
KQotICAgICAgICB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpczo6VmVydGlj
YWwsIGNvbnZlcnRUb0xheW91dFVuaXRzKHNjcm9sbGluZ1N0YXRlTm9kZS52ZXJ0aWNhbFNuYXBP
ZmZzZXRzKCkpLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUudmVydGlj
YWxTbmFwT2Zmc2V0UmFuZ2VzKCkpKTsKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0lu
Zm8pKQorICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIudXBkYXRlU2Nyb2xsU25hcFBvaW50cyhj
b252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUuc25hcE9mZnNldHNJbmZvKCkp
KTsKIAogICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4
KSkKLSAgICAgICAgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwsIHNjcm9sbGluZ1N0YXRlTm9kZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQ
b2ludEluZGV4KCkpOwotICAgIAorICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIuc2V0QWN0aXZl
U2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9s
bGluZ1N0YXRlTm9kZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkpOworCiAgICAg
aWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4KSkKLSAgICAgICAg
c2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2Fs
LCBzY3JvbGxpbmdTdGF0ZU5vZGUuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7Cisg
ICAgICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlz
KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHNjcm9sbGluZ1N0YXRlTm9kZS5jdXJyZW50VmVy
dGljYWxTbmFwUG9pbnRJbmRleCgpKTsKICNlbmRpZgogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZl
bnRBeGlzIGF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcE9mZnNldHMsIGNvbnN0
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIHNuYXBSYW5nZXMpCi17Ci0g
ICAgbV9zY3JvbGxDb250cm9sbGVyLnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoYXhpcywgc25hcE9m
ZnNldHMsIHNuYXBSYW5nZXMpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWM6OnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRB
eGlzIGF4aXMsIHVuc2lnbmVkIGluZGV4KQotewotICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zZXRB
Y3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKGF4aXMsIGluZGV4KTsKLX0KLQogdW5zaWduZWQg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWN0aXZlU2Nyb2xsU25hcElu
ZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKIHsKICAgICByZXR1cm4gbV9z
Y3JvbGxDb250cm9sbGVyLmFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoYXhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgKaW5kZXgg
NzMwMzI0NGZjNjBmZWYzNDM5MGFkNjRlMjUxOWFjNWViMjMyMTUwNS4uOTQ0Yjk4MDZkNDY4NjI0
MDNiMTkwNDdmNmZmZDdkYThhNDA4ZTg3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaApAQCAtMTU4LDcgKzE1OCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZCgpOwogCiAjaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKLSAgICB2b2lkIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlz
LCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFu
Z2U8TGF5b3V0VW5pdD4+Jik7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKGNvbnN0
IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYpOwogICAgIHZvaWQgc2V0QWN0aXZl
U2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMsIHVuc2lnbmVkKTsKICAgICB2
b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzRm9yT2Zmc2V0KFNjcm9sbE9mZnNldCk7CiAg
ICAgYm9vbCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UoKSBjb25zdCB7IHJldHVybiBt
X2FjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KaW5kZXggZDgxODVjM2I2N2U5YTNm
MDgyYjQzN2RhODVhNGYxZjg2MjY5Y2U0YS4uNzcxOTE2MzEzNGU5YWQ5NGM2ZDQyODg2MjFkZGI3
N2I2OGFkNGNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Ny
b2xsQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3Jv
bGxDb250cm9sbGVyLm1tCkBAIC04MSwxMSArODEsNiBAQCBzdGF0aWMgZmxvYXQgc2Nyb2xsV2hl
ZWxNdWx0aXBsaWVyKCkKIH0KICNlbmRpZgogCi1zdGF0aWMgU2Nyb2xsRXZlbnRBeGlzIG90aGVy
U2Nyb2xsRXZlbnRBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzKQotewotICAgIHJldHVybiBheGlz
ID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IFNjcm9sbEV2ZW50QXhpczo6VmVydGlj
YWwgOiBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWw7Ci19Ci0KIFNjcm9sbENvbnRyb2xsZXI6
OlNjcm9sbENvbnRyb2xsZXIoU2Nyb2xsQ29udHJvbGxlckNsaWVudCYgY2xpZW50KQogICAgIDog
bV9jbGllbnQoY2xpZW50KQogewpAQCAtODMxLDcgKzgyNiwxNyBAQCB2b2lkIFNjcm9sbENvbnRy
b2xsZXI6OnNjcm9sbFNuYXBUaW1lckZpcmVkKCkKIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBk
YXRlU2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkK
IHsKICAgICBjb25zdCBhdXRvKiBzbmFwT2Zmc2V0SW5mbyA9IHNjcm9sbGFibGVBcmVhLnNuYXBP
ZmZzZXRJbmZvKCk7Ci0gICAgaWYgKCFzbmFwT2Zmc2V0SW5mbyB8fCBzbmFwT2Zmc2V0SW5mby0+
aXNFbXB0eSgpKSB7CisgICAgaWYgKCFzbmFwT2Zmc2V0SW5mbykgeworICAgICAgICBtX3Njcm9s
bFNuYXBTdGF0ZSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1cGRh
dGVTY3JvbGxTbmFwUG9pbnRzKCpzbmFwT2Zmc2V0SW5mbyk7Cit9CisKK3ZvaWQgU2Nyb2xsQ29u
dHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm88TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRJbmZvKQoreworICAgIGlmIChzbmFwT2Zmc2V0SW5m
by5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBudWxscHRyOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtODQwLDM0ICs4NDUsMTIgQEAgdm9pZCBTY3JvbGxDb250
cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwU3RhdGUoY29uc3QgU2Nyb2xsYWJsZUFyZWEmIHNjcm9s
bGFibGVBcmUKICAgICBpZiAoIW1fc2Nyb2xsU25hcFN0YXRlKQogICAgICAgICBtX3Njcm9sbFNu
YXBTdGF0ZSA9IG1ha2VVbmlxdWU8U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU+KCk7CiAKLSAgICBt
X3Njcm9sbFNuYXBTdGF0ZS0+c2V0U25hcE9mZnNldEluZm8oKnNuYXBPZmZzZXRJbmZvKTsKKyAg
ICBtX3Njcm9sbFNuYXBTdGF0ZS0+c2V0U25hcE9mZnNldEluZm8oc25hcE9mZnNldEluZm8pOwog
CiAgICAgaWYgKHNob3VsZENvbXB1dGVDdXJyZW50U25hcEluZGljZXMpCiAgICAgICAgIHNldEFj
dGl2ZVNjcm9sbFNuYXBJbmRpY2VzRm9yT2Zmc2V0KHJvdW5kZWRJbnRQb2ludChtX2NsaWVudC5z
Y3JvbGxPZmZzZXQoKSkpOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVh
bSA8PCAiU2Nyb2xsQ29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiB1cGRhdGVTY3JvbGxTbmFwU3Rh
dGUgZm9yICIgPDwgc2Nyb2xsYWJsZUFyZWEgPDwgIiBuZXcgc3RhdGUgIiA8PCBWYWx1ZU9yTnVs
bChtX3Njcm9sbFNuYXBTdGF0ZS5nZXQoKSkpOwotfQotCi12b2lkIFNjcm9sbENvbnRyb2xsZXI6
OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFZlY3Rv
cjxMYXlvdXRVbml0PiYgc25hcFBvaW50cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdl
PExheW91dFVuaXQ+PiYgc25hcFJhbmdlcykKLXsKLSAgICBib29sIHNob3VsZENvbXB1dGVDdXJy
ZW50U25hcEluZGljZXMgPSBmYWxzZTsKLSAgICBpZiAoIW1fc2Nyb2xsU25hcFN0YXRlKSB7Ci0g
ICAgICAgIGlmIChzbmFwUG9pbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZSA9IG1ha2VVbmlxdWU8U2Nyb2xsU25hcEFuaW1hdG9y
U3RhdGU+KCk7Ci0gICAgICAgIHNob3VsZENvbXB1dGVDdXJyZW50U25hcEluZGljZXMgPSB0cnVl
OwotICAgIH0KLQotICAgIGlmIChzbmFwUG9pbnRzLmlzRW1wdHkoKSAmJiBtX3Njcm9sbFNuYXBT
dGF0ZS0+c25hcE9mZnNldHNGb3JBeGlzKG90aGVyU2Nyb2xsRXZlbnRBeGlzKGF4aXMpKS5pc0Vt
cHR5KCkpCi0gICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0gbnVsbHB0cjsKLSAgICBlbHNlIHsK
LSAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUtPnNldFNuYXBPZmZzZXRzQW5kUG9zaXRpb25SYW5n
ZXNGb3JBeGlzKGF4aXMsIHNuYXBQb2ludHMsIHNuYXBSYW5nZXMpOwotICAgICAgICBpZiAoc2hv
dWxkQ29tcHV0ZUN1cnJlbnRTbmFwSW5kaWNlcykgewotICAgICAgICAgICAgc2V0QWN0aXZlU2Ny
b2xsU25hcEluZGljZXNGb3JPZmZzZXQocm91bmRlZEludFBvaW50KG1fY2xpZW50LnNjcm9sbE9m
ZnNldCgpKSk7Ci0gICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFt
IDw8ICJTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRzIC0gY29tcHV0ZWQg
aW5pdGlhbCBzbmFwIGluZGljZXM6IHggIiA8PCBtX3Njcm9sbFNuYXBTdGF0ZS0+YWN0aXZlU25h
cEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpIDw8ICIsIHkgIiA8PCBt
X3Njcm9sbFNuYXBTdGF0ZS0+YWN0aXZlU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6
OlZlcnRpY2FsKSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9s
bFNuYXAsIHN0cmVhbSA8PCAiU2Nyb2xsQ29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiB1cGRhdGVT
Y3JvbGxTbmFwU3RhdGUgbmV3IHN0YXRlOiAiIDw8IFZhbHVlT3JOdWxsKG1fc2Nyb2xsU25hcFN0
YXRlLmdldCgpKSk7CiB9CiAKIHVuc2lnbmVkIFNjcm9sbENvbnRyb2xsZXI6OmFjdGl2ZVNjcm9s
bFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKaW5kZXggNzRl
OWI4MTMwYjhhNmY1YzYyOTliYWZhYWNmNzhlMmJhNDg3ZWMzYi4uOTI0ZDk3NDBkMTllYjQ0YzA1
NmE0ZGYxY2QzZWVhMjVhM2YwNGE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcApAQCAtOTgsNiArOTgsMTEgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZXF1ZXN0ZWRTY3JvbGxEYXRhPiB7CiAgICAgc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgUmVxdWVzdGVkU2Nyb2xs
RGF0YSYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTY3JvbGxTbmFw
T2Zmc2V0c0luZm88ZmxvYXQ+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Jik7CisgICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZs
b2F0PiYpOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAt
MTE1LDEwICsxMjAsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk+IHsKICAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsYWJsZUFyZWFQYXJhbXMsCiAgICAgICAgIFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlJlYXNvbnNGb3JTeW5jaHJvbm91c1Nj
cm9sbGluZywKICAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6
UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24sCi0gICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0cywKLSAgICAgICAgV2ViQ29yZTo6
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0cywKLSAgICAg
ICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBP
ZmZzZXRSYW5nZXMsCi0gICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk6OlZlcnRpY2FsU25hcE9mZnNldFJhbmdlcywKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6U25hcE9mZnNldHNJbmZvLAogICAgICAgICBXZWJDb3JlOjpT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJ
bmRleCwKICAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3Vy
cmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4LAogICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpJc01vbml0b3JpbmdXaGVlbEV2ZW50cywKQEAgLTIwNiwxMCAr
MjA4LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogICAgIFNDUk9MTElOR19OT0RFX0VOQ09E
RShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxQb3NpdGlvbiwgc2Nyb2xsUG9z
aXRpb24pCiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlNjcm9sbE9yaWdpbiwgc2Nyb2xsT3JpZ2luKQogI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApCi0gICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0cywgaG9yaXpvbnRhbFNuYXBPZmZzZXRzKQotICAg
IFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0
aWNhbFNuYXBPZmZzZXRzLCB2ZXJ0aWNhbFNuYXBPZmZzZXRzKQotICAgIFNDUk9MTElOR19OT0RF
X0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNl
dFJhbmdlcywgaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpCi0gICAgU0NST0xMSU5HX05PREVf
RU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldFJh
bmdlcywgdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09E
RShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8sIHNuYXBPZmZz
ZXRzSW5mbykKICAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgsIGN1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXgpCiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0
YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCwgY3VycmVu
dFZlcnRpY2FsU25hcFBvaW50SW5kZXgpCiAjZW5kaWYKQEAgLTMwNiwxMCArMzA1LDcgQEAgYm9v
bCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBTY3JvbGwKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsUG9zaXRpb24sIEZsb2F0UG9pbnQsIHNldFNjcm9s
bFBvc2l0aW9uKTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpQcm9wZXJ0eTo6U2Nyb2xsT3JpZ2luLCBJbnRQb2ludCwgc2V0U2Nyb2xsT3JpZ2luKTsKICNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldHMsIFZlY3Rvcjxm
bG9hdD4sIHNldEhvcml6b250YWxTbmFwT2Zmc2V0cyk7Ci0gICAgU0NST0xMSU5HX05PREVfREVD
T0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldHMsIFZl
Y3RvcjxmbG9hdD4sIHNldFZlcnRpY2FsU25hcE9mZnNldHMpOwotICAgIFNDUk9MTElOR19OT0RF
X0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNl
dFJhbmdlcywgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4sIHNldEhvcml6b250YWxT
bmFwT2Zmc2V0UmFuZ2VzKQotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsIFZlY3RvcjxTY3JvbGxP
ZmZzZXRSYW5nZTxmbG9hdD4+LCBzZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpCisgICAgU0NS
T0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNuYXBPZmZz
ZXRzSW5mbywgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Piwgc2V0U25hcE9mZnNldHNJbmZv
KTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0
eTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgsIHVuc2lnbmVkLCBzZXRDdXJyZW50
SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Ny
b2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4
LCB1bnNpZ25lZCwgc2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgpOwogI2VuZGlmCkBA
IC01MjYsNiArNTIyLDI3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXF1ZXN0ZWRTY3JvbGxEYXRh
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlcXVlc3RlZFNjcm9sCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxm
bG9hdD4mIGluZm8pCit7CisgICAgZW5jb2RlciA8PCBpbmZvLnZlcnRpY2FsU25hcE9mZnNldHM7
CisgICAgZW5jb2RlciA8PCBpbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0czsKKyAgICBlbmNvZGVy
IDw8IGluZm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzOworICAgIGVuY29kZXIgPDwgaW5mby5o
b3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Nyb2xs
U25hcE9mZnNldHNJbmZvPGZsb2F0PiYgaW5mbykKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGluZm8udmVydGljYWxTbmFwT2Zmc2V0cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby52ZXJ0aWNhbFNuYXBP
ZmZzZXRSYW5nZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShpbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiB0cnVlOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGlj
IHZvaWQgZW5jb2RlTm9kZUFuZERlc2NlbmRhbnRzKElQQzo6RW5jb2RlciYgZW5jb2RlciwgY29u
c3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUsIGludCYgZW5jb2RlZE5vZGVDb3VudCkK
QEAgLTY5NiwxNyArNzEzLDEyIEBAIHN0YXRpYyB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgYm9vbCBjCiAgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgic2Nyb2xsZWQtY29udGVudHMtbGF5ZXIiLCBzdGF0aWNfY2FzdDxHcmFw
aGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCkp
KTsKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVy
dGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJob3Jpem9udGFsIHNuYXAgb2Zmc2V0cyIsIG5vZGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkp
OwotCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0cykp
Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidmVydGljYWwgc25hcCBvZmZzZXRzIiwgbm9kZS52
ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpOwotCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkg
fHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6
Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgpKQorICAgIGlmICghY2hhbmdlZFByb3Bl
cnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbykpIHsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJo
b3Jpem9udGFsIHNuYXAgb2Zmc2V0cyIsIG5vZGUuc25hcE9mZnNldHNJbmZvKCkuaG9yaXpvbnRh
bFNuYXBPZmZzZXRzKTsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJ2ZXJ0aWNhbCBzbmFwIG9m
ZnNldHMiLCBub2RlLnNuYXBPZmZzZXRzSW5mbygpLnZlcnRpY2FsU25hcE9mZnNldHMpOwogICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoImN1cnJlbnQgaG9yaXpvbnRhbCBzbmFwIHBvaW50IGluZGV4
Iiwgbm9kZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkpOwotCi0gICAgaWYgKCFj
aGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4KSkKICAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJjdXJyZW50IHZlcnRpY2FsIHNuYXAgcG9pbnQgaW5kZXgi
LCBub2RlLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpOworICAgIH0KICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHlJT1MubW0KaW5kZXggNzM3MmZmMjlmNzU5YjIwMTA4NzY2NTgxZGQxMDQxOGI4YjQ4MzZi
Yy4uOWFlMGFmMzQwZDIzMDJmYjc4ZmY4MGNjMDIzMTZhZTRmZDYyYzA1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQpA
QCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6
c2hvdWxkU25hcEZvck1haW5GcmFtZVNjcm9sbGluZyhTY3JvbGxFdmVuCiAgICAgU2Nyb2xsaW5n
VHJlZU5vZGUqIHJvb3QgPSBtX3Njcm9sbGluZ1RyZWUtPnJvb3ROb2RlKCk7CiAgICAgaWYgKHJv
b3QgJiYgcm9vdC0+aXNGcmFtZVNjcm9sbGluZ05vZGUoKSkgewogICAgICAgICBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlKiByb290U2Nyb2xsaW5nTm9kZSA9IHN0YXRpY19jYXN0PFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUqPihyb290KTsKLSAgICAgICAgY29uc3QgVmVj
dG9yPGZsb2F0PiYgc25hcE9mZnNldHMgPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpv
bnRhbCA/IHJvb3RTY3JvbGxpbmdOb2RlLT5ob3Jpem9udGFsU25hcE9mZnNldHMoKSA6IHJvb3RT
Y3JvbGxpbmdOb2RlLT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCk7CisgICAgICAgIGNvbnN0IFZlY3Rv
cjxmbG9hdD4mIHNuYXBPZmZzZXRzID0gcm9vdFNjcm9sbGluZ05vZGUtPnNuYXBPZmZzZXRzSW5m
bygpLm9mZnNldHNGb3JBeGlzKGF4aXMpOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50SW5kZXgg
PSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IG1fY3VycmVudEhvcml6b250
YWxTbmFwUG9pbnRJbmRleCA6IG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXg7CiAgICAg
ICAgIHJldHVybiBzbmFwT2Zmc2V0cy5zaXplKCkgJiYgKGN1cnJlbnRJbmRleCA8IHNuYXBPZmZz
ZXRzLnNpemUoKSB8fCBjdXJyZW50SW5kZXggPT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCk7CiAg
ICAgfQpAQCAtMjI1LDggKzIyNSw4IEBAIGZsb2F0IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHk6OmNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFNjCiAgICAgU2Ny
b2xsaW5nVHJlZU5vZGUqIHJvb3QgPSBtX3Njcm9sbGluZ1RyZWUtPnJvb3ROb2RlKCk7CiAgICAg
QVNTRVJUKHJvb3QgJiYgcm9vdC0+aXNGcmFtZVNjcm9sbGluZ05vZGUoKSk7CiAgICAgU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSogcm9vdFNjcm9sbGluZ05vZGUgPSBzdGF0aWNfY2Fz
dDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKj4ocm9vdCk7Ci0gICAgY29uc3QgVmVj
dG9yPGZsb2F0PiYgc25hcE9mZnNldHMgPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpv
bnRhbCA/IHJvb3RTY3JvbGxpbmdOb2RlLT5ob3Jpem9udGFsU25hcE9mZnNldHMoKSA6IHJvb3RT
Y3JvbGxpbmdOb2RlLT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCk7Ci0gICAgY29uc3QgVmVjdG9yPFNj
cm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIHNuYXBPZmZzZXRSYW5nZXMgPSBheGlzID09IFNjcm9s
bEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHJvb3RTY3JvbGxpbmdOb2RlLT5ob3Jpem9udGFsU25h
cE9mZnNldFJhbmdlcygpIDogcm9vdFNjcm9sbGluZ05vZGUtPnZlcnRpY2FsU25hcE9mZnNldFJh
bmdlcygpOworICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzID0gYXhpcyA9PSBy
b290U2Nyb2xsaW5nTm9kZS0+c25hcE9mZnNldHNJbmZvKCkub2Zmc2V0c0ZvckF4aXMoYXhpcyk7
CisgICAgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIHNuYXBPZmZzZXRS
YW5nZXMgPSByb290U2Nyb2xsaW5nTm9kZS0+c25hcE9mZnNldHNJbmZvKCkub2Zmc2V0UmFuZ2Vz
Rm9yQXhpcyhheGlzKTsKIAogICAgIGZsb2F0IHNjYWxlZFNjcm9sbERlc3RpbmF0aW9uID0gc2Ny
b2xsRGVzdGluYXRpb24gLyBtX3dlYlBhZ2VQcm94eS5kaXNwbGF5ZWRDb250ZW50U2NhbGUoKTsK
ICAgICBmbG9hdCByYXdDbG9zZXN0U25hcE9mZnNldCA9IGNsb3Nlc3RTbmFwT2Zmc2V0KHNuYXBP
ZmZzZXRzLCBzbmFwT2Zmc2V0UmFuZ2VzLCBzY2FsZWRTY3JvbGxEZXN0aW5hdGlvbiwgdmVsb2Np
dHksIGN1cnJlbnRJbmRleCk7CkBAIC0yNDMsOCArMjQzLDggQEAgYm9vbCBSZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5OjpoYXNBY3RpdmVTbmFwUG9pbnQoKSBjb25zdAogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlJiByb290
U2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+
KCpyb290KTsKLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBob3Jpem9udGFsID0gcm9vdFNjcm9s
bGluZ05vZGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCk7Ci0gICAgY29uc3QgVmVjdG9yPGZsb2F0
PiYgdmVydGljYWwgPSByb290U2Nyb2xsaW5nTm9kZS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCk7Cisg
ICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRhbCA9IHJvb3RTY3JvbGxpbmdOb2RlLnNu
YXBPZmZzZXRzSW5mbygpLmhvcml6b250YWxTbmFwT2Zmc2V0czsKKyAgICBjb25zdCBWZWN0b3I8
ZmxvYXQ+JiB2ZXJ0aWNhbCA9IHJvb3RTY3JvbGxpbmdOb2RlLnNuYXBPZmZzZXRzSW5mbygpLnZl
cnRpY2FsU25hcE9mZnNldHM7CiAKICAgICBpZiAoaG9yaXpvbnRhbC5pc0VtcHR5KCkgJiYgdmVy
dGljYWwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjQsOCArMjY0LDgg
QEAgQ0dQb2ludCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpuZWFyZXN0QWN0aXZl
Q29udGVudEluc2V0QWRqdXN0ZWRTbmFwT2YKICAgICBTY3JvbGxpbmdUcmVlTm9kZSogcm9vdCA9
IG1fc2Nyb2xsaW5nVHJlZS0+cm9vdE5vZGUoKTsKICAgICBBU1NFUlQocm9vdCAmJiBpczxTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihyb290KSk7CiAgICAgU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZSYgcm9vdFNjcm9sbGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlPigqcm9vdCk7Ci0gICAgY29uc3QgVmVjdG9yPGZsb2F0PiYg
aG9yaXpvbnRhbCA9IHJvb3RTY3JvbGxpbmdOb2RlLmhvcml6b250YWxTbmFwT2Zmc2V0cygpOwot
ICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2FsID0gcm9vdFNjcm9sbGluZ05vZGUudmVy
dGljYWxTbmFwT2Zmc2V0cygpOworICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWwg
PSByb290U2Nyb2xsaW5nTm9kZS5zbmFwT2Zmc2V0c0luZm8oKS5ob3Jpem9udGFsU25hcE9mZnNl
dHM7CisgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmVydGljYWwgPSByb290U2Nyb2xsaW5nTm9k
ZS5zbmFwT2Zmc2V0c0luZm8oKS52ZXJ0aWNhbFNuYXBPZmZzZXRzOwogCiAgICAgLy8gVGhlIGJv
dW5kcyBjaGVja2luZyB3aXRoIG1heFNjcm9sbE9mZnNldHMgaXMgdG8gZW5zdXJlIHRoYXQgd2Ug
d29uJ3QgaW50ZXJmZXJlIHdpdGggcnViYmVyLWJhbmRpbmcgd2hlbiBzY3JvbGxpbmcgdG8gdGhl
IGVkZ2Ugb2YgdGhlIHBhZ2UuCiAgICAgaWYgKCFob3Jpem9udGFsLmlzRW1wdHkoKSAmJiBtX2N1
cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggPCBob3Jpem9udGFsLnNpemUoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUy5tbQppbmRleCBkZmJmN2E0ZGJjZDNlMDVhNzdmZDUxZDIyMzAwZTY2MjAzOGVmYjg3Li4w
MDNlYTUyN2VjNThlMDlmNzA3OWU4OTkzMTA0M2NhZWZkYTg3Mjc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1t
CkBAIC0xMDYsMTcgKzEwNiwxOSBAQCAtICh2b2lkKXNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dpbmc6
KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2l0aFZlbG9jaXR5OihDR1BvaQogICAgIHVuc2ln
bmVkIG9yaWdpbmFsSG9yaXpvbnRhbFNuYXBQb3NpdGlvbiA9IF9zY3JvbGxpbmdUcmVlTm9kZURl
bGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgp
OwogICAgIHVuc2lnbmVkIG9yaWdpbmFsVmVydGljYWxTbmFwUG9zaXRpb24gPSBfc2Nyb2xsaW5n
VHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2lu
dEluZGV4KCk7CiAKLSAgICBpZiAoIV9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxp
bmdOb2RlKCkuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkuaXNFbXB0eSgpKSB7CisgICAgY29uc3Qg
YXV0byYgaG9yaXpvbnRhbCA9IF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdO
b2RlKCkuc25hcE9mZnNldHNJbmZvKCkuaG9yaXpvbnRhbFNuYXBPZmZzZXRzOworICAgIGlmICgh
aG9yaXpvbnRhbC5pc0VtcHR5KCkpIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXg7Ci0gICAgICAg
IGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IFdlYkNvcmU6OmNsb3Nlc3RTbmFwT2Zmc2V0
KF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuaG9yaXpvbnRhbFNu
YXBPZmZzZXRzKCksIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCku
aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSwgaG9yaXpvbnRhbFRhcmdldCwgdmVsb2NpdHku
eCwgaW5kZXgpOworICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBXZWJDb3Jl
OjpjbG9zZXN0U25hcE9mZnNldChob3Jpem9udGFsLCBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0
ZS0+c2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpLmhvcml6b250YWxTbmFwT2Zmc2V0
UmFuZ2VzLCBob3Jpem9udGFsVGFyZ2V0LCB2ZWxvY2l0eS54LCBpbmRleCk7CiAgICAgICAgIF9z
Y3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc2V0Q3VycmVudEhvcml6
b250YWxTbmFwUG9pbnRJbmRleChpbmRleCk7CiAgICAgICAgIGlmIChob3Jpem9udGFsVGFyZ2V0
ID49IDAgJiYgaG9yaXpvbnRhbFRhcmdldCA8PSBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLndpZHRo
KQogICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9mZnNldC0+eCA9IHBvdGVudGlhbFNuYXBQb3Np
dGlvbjsKICAgICB9CiAKLSAgICBpZiAoIV9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3Jv
bGxpbmdOb2RlKCkudmVydGljYWxTbmFwT2Zmc2V0cygpLmlzRW1wdHkoKSkgeworICAgIGNvbnN0
IGF1dG8mIHZlcnRpY2FsID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05v
ZGUoKS5zbmFwT2Zmc2V0c0luZm8oKS52ZXJ0aWNhbFNuYXBPZmZzZXRzOworICAgIGlmICghdmVy
dGljYWwuaXNFbXB0eSgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4OwotICAgICAgICBmbG9h
dCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBXZWJDb3JlOjpjbG9zZXN0U25hcE9mZnNldChfc2Ny
b2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnZlcnRpY2FsU25hcE9mZnNl
dHMoKSwgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS52ZXJ0aWNh
bFNuYXBPZmZzZXRSYW5nZXMoKSwgdmVydGljYWxUYXJnZXQsIHZlbG9jaXR5LnksIGluZGV4KTsK
KyAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gV2ViQ29yZTo6Y2xvc2VzdFNu
YXBPZmZzZXQodmVydGljYWwsIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdO
b2RlKCkuc25hcE9mZnNldHNJbmZvKCkudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCB2ZXJ0aWNh
bFRhcmdldCwgdmVsb2NpdHkueSwgaW5kZXgpOwogICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVE
ZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4
KGluZGV4KTsKICAgICAgICAgaWYgKHZlcnRpY2FsVGFyZ2V0ID49IDAgJiYgdmVydGljYWxUYXJn
ZXQgPD0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZS5oZWlnaHQpCiAgICAgICAgICAgICB0YXJnZXRD
b250ZW50T2Zmc2V0LT55ID0gcG90ZW50aWFsU25hcFBvc2l0aW9uOwpAQCAtMjgwLDkgKzI4Miw5
IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3Rh
dGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQogICAgIC8vIEZJWE1FOiBJZiBvbmx5IG9uZSBheGlzIHNuYXBzIGluIDJEIHNjcm9sbGluZywg
dGhlIG90aGVyIGF4aXMgd2lsbCBkZWNlbGVyYXRlIGZhc3QgYXMgd2VsbC4gSXMgdGhpcyB3aGF0
IHdlIHdhbnQ/Ci0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzKSB8fCBz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldHMpKSB7CisgICAgaWYgKHNjcm9sbGluZ1N0YXRl
Tm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U25h
cE9mZnNldHNJbmZvKSkgewogICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAg
ICAgICAgc2Nyb2xsVmlldygpLmRlY2VsZXJhdGlvblJhdGUgPSBzY3JvbGxpbmdOb2RlKCkuaG9y
aXpvbnRhbFNuYXBPZmZzZXRzKCkuc2l6ZSgpIHx8IHNjcm9sbGluZ05vZGUoKS52ZXJ0aWNhbFNu
YXBPZmZzZXRzKCkuc2l6ZSgpID8gVUlTY3JvbGxWaWV3RGVjZWxlcmF0aW9uUmF0ZUZhc3QgOiBV
SVNjcm9sbFZpZXdEZWNlbGVyYXRpb25SYXRlTm9ybWFsOworICAgICAgICBzY3JvbGxWaWV3KCku
ZGVjZWxlcmF0aW9uUmF0ZSA9IHNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0luZm8oKS5ob3Jp
em9udGFsU25hcE9mZnNldHMuc2l6ZSgpIHx8IHNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0lu
Zm8udmVydGljYWxTbmFwT2Zmc2V0cy5zaXplKCkgPyBVSVNjcm9sbFZpZXdEZWNlbGVyYXRpb25S
YXRlRmFzdCA6IFVJU2Nyb2xsVmlld0RlY2VsZXJhdGlvblJhdGVOb3JtYWw7CiAgICAgICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICB9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418279</attachid>
            <date>2021-01-25 05:39:49 -0800</date>
            <delta_ts>2021-01-25 07:45:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220915-20210125143947.patch</filename>
            <type>text/plain</type>
            <size>46431</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4YjU5NTdmYjgxNTc5
ZTg2ZGRhYzcyMTVjOTMwM2NjZTUxMTAzZS4uYzBmYTU2YjIwMjRiZDk3ZTI4NDU2Zjg4ZWQ5MWJl
OWRjMTFkYWNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTAxLTI1ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgU2Nyb2xs
U25hcE9mZnNldHNJbmZvIGluIHRoZSBzY3JvbGxpbmcgdHJlZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTE1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHNob3VsZCBu
b3QgY2hhbmdlIGJlaGF2aW9yLgorCisgICAgICAgIFVzZSBTY3JvbGxTbmFwT2Zmc2V0cyBtb3Jl
IG9mdGVuIGluIHRoZSBzY3JvbGxpbmcgdHJlZSB0byBjb250aW51ZSB0bworICAgICAgICBhYnN0
cmFjdCBhd2F5IHRoZSBkZXRhaWxzIG9mIGhvdyBzbmFwIG9mZnNldHMgYXJlIGltcGxlbWVudGVk
LgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0Fz
RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0
U2Nyb2xsaW5nTm9kZVNjcm9sbGFibGVBcmVhR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsU25hcFByb3BlcnRpZXNXaXRo
RnJhbWVWaWV3KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6aXNFcXVhbCBj
b25zdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
YXBwbGljYWJsZVByb3BlcnRpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTbmFwT2Zmc2V0c0luZm8pOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6
dXBkYXRlRnJvbVN0YXRlTm9kZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9TY3JvbGxDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxl
cjo6dXBkYXRlU2Nyb2xsU25hcFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRy
b2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6b3RoZXJT
Y3JvbGxFdmVudEF4aXMpOiBEZWxldGVkLgorCiAyMDIxLTAxLTI1ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBOdWxsIFB0ciBEZXJlZiBAIFdl
YkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRiMDUy
NDNhMmRkZDEyMjFlZmMyMTRjMjAwOWM4MWQyZDFjZjdmMjQuLjBlMWJlYjg5YTgxMGI1YzlkOWY1
YzFhOTU1OTc5ZThlZTRhYzcwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDEt
MjUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFVz
ZSBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gaW4gdGhlIHNjcm9sbGluZyB0cmVlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5MTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgU2Nyb2xsU25hcE9mZnNl
dHMgbW9yZSBvZnRlbiBpbiB0aGUgc2Nyb2xsaW5nIHRyZWUgdG8gY29udGludWUgdG8KKyAgICAg
ICAgYWJzdHJhY3QgYXdheSB0aGUgZGV0YWlscyBvZiBob3cgc25hcCBvZmZzZXRzIGFyZSBpbXBs
ZW1lbnRlZC4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChBcmd1bWVudENvZGVyPFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmVuY29kZSk6CisgICAgICAgIChBcmd1bWVudENv
ZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29kZSk6CisgICAgICAgIChBcmd1
bWVudENvZGVyPFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4+OjplbmNvZGUpOgorICAgICAg
ICAoQXJndW1lbnRDb2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYktpdDo6ZHVtcCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6c2hvdWxkU25hcEZvck1h
aW5GcmFtZVNjcm9sbGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5n
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eTo6aGFzQWN0aXZlU25hcFBvaW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6bmVhcmVzdEFjdGl2ZUNvbnRlbnRJbnNldEFkanVzdGVk
U25hcE9mZnNldCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToKKyAgICAgICAgKC1b
V0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmlld0RlbGVnYXRlIHNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dp
bmc6d2l0aFZlbG9jaXR5OnRhcmdldENvbnRlbnRPZmZzZXQ6XSk6CisgICAgICAgIChXZWJLaXQ6
OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJD
aGlsZHJlbik6CisKIDIwMjEtMDEtMjQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzJdIHRoZXZlcmdlLmNvbSAtIHJ1YmJlciBiYW5kIHNj
cm9sbGluZyBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlIGNhdXNlcyBhbiBhYnJ1cHQganVtcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcAppbmRleCBlZDU2YmI2NzA0NzFmYmU3YjZkMmZhMGUxMmQzOGVjODc3
ZmM4NTM3Li5lMGIyOWRhNzA0M2RjYTc0NGI4ODQ5YzcxMDNiMGZkMzBiY2YwZGI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcApAQCAtOTIsMzEgKzkyLDMzIEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQs
IFBsCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi1zdGF0aWMgaW5saW5l
IHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Piogb2Zmc2V0SW5mbywgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9m
ZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgY29uc3QgU2Ny
b2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+KiBvZmZzZXRJbmZvLCBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcikKIHsKKyAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IGZsb2F0SW5m
bzsKKwogICAgIC8vIEZJWE1FOiBJbmNvcnBvcmF0ZSBjdXJyZW50IHBhZ2Ugc2NhbGUgZmFjdG9y
IGluIHNuYXBwaW5nIHRvIGRldmljZSBwaXhlbC4gUGVyaGFwcyB3ZSBzaG91bGQganVzdCBjb252
ZXJ0IHRvIGZsb2F0IGhlcmUgYW5kIGxldCBVSSBwcm9jZXNzIGRvIHRoZSBwaXhlbCBzbmFwcGlu
Zz8KLSAgICBWZWN0b3I8ZmxvYXQ+IHNuYXBPZmZzZXRzQXNGbG9hdDsKICAgICBpZiAob2Zmc2V0
SW5mbykgewotICAgICAgICBjb25zdCBhdXRvJiBvZmZzZXRzID0gb2Zmc2V0SW5mby0+b2Zmc2V0
c0ZvckF4aXMoYXhpcyk7Ci0gICAgICAgIHNuYXBPZmZzZXRzQXNGbG9hdC5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KG9mZnNldHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBvZmZzZXQgOiBv
ZmZzZXRzKQotICAgICAgICAgICAgc25hcE9mZnNldHNBc0Zsb2F0LnVuY2hlY2tlZEFwcGVuZChy
b3VuZFRvRGV2aWNlUGl4ZWwob2Zmc2V0LCBkZXZpY2VTY2FsZUZhY3RvciwgZmFsc2UpKTsKKyAg
ICAgICAgYXV0byBjb252ZXJ0T2Zmc2V0c1RvRmxvYXRzID0gW2RldmljZVNjYWxlRmFjdG9yXShW
ZWN0b3I8TGF5b3V0VW5pdD4gb2Zmc2V0cywgVmVjdG9yPGZsb2F0PiBmbG9hdE9mZnNldHMpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGZsb2F0T2Zmc2V0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG9mZnNldHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgb2Zmc2V0IDogb2Zmc2V0
cykKKyAgICAgICAgICAgICAgICBmbG9hdE9mZnNldHMudW5jaGVja2VkQXBwZW5kKHJvdW5kVG9E
ZXZpY2VQaXhlbChvZmZzZXQsIGRldmljZVNjYWxlRmFjdG9yLCBmYWxzZSkpOworICAgICAgICB9
OworCisgICAgICAgIGF1dG8gY29udmVydE9mZnNldFJhbmdlc1RvRmxvYXQgPSBbZGV2aWNlU2Nh
bGVGYWN0b3JdKFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gb2Zmc2V0UmFu
Z2VzLCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiBmbG9hdE9mZnNldFJhbmdlcykK
KyAgICAgICAgeworICAgICAgICAgICAgZmxvYXRPZmZzZXRSYW5nZXMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShvZmZzZXRSYW5nZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcmFu
Z2UgOiBvZmZzZXRSYW5nZXMpCisgICAgICAgICAgICAgICAgZmxvYXRPZmZzZXRSYW5nZXMudW5j
aGVja2VkQXBwZW5kKHsgcm91bmRUb0RldmljZVBpeGVsKHJhbmdlLnN0YXJ0LCBkZXZpY2VTY2Fs
ZUZhY3RvciwgZmFsc2UpLCByb3VuZFRvRGV2aWNlUGl4ZWwocmFuZ2UuZW5kLCBkZXZpY2VTY2Fs
ZUZhY3RvciwgZmFsc2UpIH0pOworICAgICAgICB9OworCisgICAgICAgIGNvbnZlcnRPZmZzZXRz
VG9GbG9hdHMob2Zmc2V0SW5mby0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBmbG9hdEluZm8uaG9y
aXpvbnRhbFNuYXBPZmZzZXRzKTsKKyAgICAgICAgY29udmVydE9mZnNldHNUb0Zsb2F0cyhvZmZz
ZXRJbmZvLT52ZXJ0aWNhbFNuYXBPZmZzZXRzLCBmbG9hdEluZm8udmVydGljYWxTbmFwT2Zmc2V0
cyk7CisgICAgICAgIGNvbnZlcnRPZmZzZXRSYW5nZXNUb0Zsb2F0KG9mZnNldEluZm8tPmhvcml6
b250YWxTbmFwT2Zmc2V0UmFuZ2VzLCBmbG9hdEluZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5n
ZXMpOworICAgICAgICBjb252ZXJ0T2Zmc2V0UmFuZ2VzVG9GbG9hdChvZmZzZXRJbmZvLT52ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXMsIGZsb2F0SW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMp
OwogICAgIH0KIAotICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+IHNuYXBPZmZz
ZXRSYW5nZXNBc0Zsb2F0OwotICAgIGlmIChvZmZzZXRJbmZvKSB7Ci0gICAgICAgIGNvbnN0IGF1
dG8mIHNuYXBPZmZzZXRSYW5nZXMgPSBvZmZzZXRJbmZvLT5vZmZzZXRSYW5nZXNGb3JBeGlzKGF4
aXMpOwotICAgICAgICBzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHNuYXBPZmZzZXRSYW5nZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiByYW5nZSA6
IHNuYXBPZmZzZXRSYW5nZXMpCi0gICAgICAgICAgICBzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdC51
bmNoZWNrZWRBcHBlbmQoeyByb3VuZFRvRGV2aWNlUGl4ZWwocmFuZ2Uuc3RhcnQsIGRldmljZVNj
YWxlRmFjdG9yLCBmYWxzZSksIHJvdW5kVG9EZXZpY2VQaXhlbChyYW5nZS5lbmQsIGRldmljZVNj
YWxlRmFjdG9yLCBmYWxzZSkgfSk7Ci0gICAgfQotICAgIGlmIChheGlzID09IFNjcm9sbEV2ZW50
QXhpczo6SG9yaXpvbnRhbCkgewotICAgICAgICBub2RlLnNldEhvcml6b250YWxTbmFwT2Zmc2V0
cyhzbmFwT2Zmc2V0c0FzRmxvYXQpOwotICAgICAgICBub2RlLnNldEhvcml6b250YWxTbmFwT2Zm
c2V0UmFuZ2VzKHNuYXBPZmZzZXRSYW5nZXNBc0Zsb2F0KTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBub2RlLnNldFZlcnRpY2FsU25hcE9mZnNldHMoc25hcE9mZnNldHNBc0Zsb2F0KTsKLSAgICAg
ICAgbm9kZS5zZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoc25hcE9mZnNldFJhbmdlc0FzRmxv
YXQpOwotICAgIH0KKyAgICBub2RlLnNldFNuYXBPZmZzZXRzSW5mbyhmbG9hdEluZm8pOwogfQog
I2VuZGlmCiAKQEAgLTcxNCw4ICs3MTYsNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnNldFNjcm9sbGluZ05vZGVTY3JvbGxhYmxlQXJlYUdlb21ldHJ5KFNjcm9sbGluZwogCiAj
aWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBzY3JvbGxhYmxlQXJlYS51cGRhdGVTbmFw
T2Zmc2V0cygpOwotICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdChz
Y3JvbGxpbmdOb2RlLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9sbGFibGVBcmVh
LnNuYXBPZmZzZXRJbmZvKCksIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgc2V0
U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KHNjcm9sbGluZ05vZGUsIFNjcm9s
bEV2ZW50QXhpczo6VmVydGljYWwsICBzY3JvbGxhYmxlQXJlYS5zbmFwT2Zmc2V0SW5mbygpLCBt
X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNu
YXBPZmZzZXRzQXNGbG9hdChzY3JvbGxpbmdOb2RlLCBzY3JvbGxhYmxlQXJlYS5zbmFwT2Zmc2V0
SW5mbygpLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIHNjcm9sbGluZ05vZGUu
c2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleChzY3JvbGxhYmxlQXJlYS5jdXJyZW50
SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkpOwogICAgIHNjcm9sbGluZ05vZGUuc2V0Q3VycmVu
dFZlcnRpY2FsU25hcFBvaW50SW5kZXgoc2Nyb2xsYWJsZUFyZWEuY3VycmVudFZlcnRpY2FsU25h
cFBvaW50SW5kZXgoKSk7CiAjZW5kaWYKQEAgLTkwOSw4ICs5MTAsNyBAQCBib29sIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoU2Nyb2xsaW5nTm9kZUlE
IG5vZGVJRCkgYwogdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxT
bmFwUHJvcGVydGllc1dpdGhGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7
CiAgICAgaWYgKGF1dG8gbm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LnNj
cm9sbGluZ05vZGVJRCgpKSkpIHsKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9m
ZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIGZyYW1lVmll
dy5zbmFwT2Zmc2V0SW5mbygpLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgICAg
ICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2
ZW50QXhpczo6VmVydGljYWwsIGZyYW1lVmlldy5zbmFwT2Zmc2V0SW5mbygpLCBtX3BhZ2UtPmRl
dmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zm
c2V0c0FzRmxvYXQoKm5vZGUsIGZyYW1lVmlldy5zbmFwT2Zmc2V0SW5mbygpLCBtX3BhZ2UtPmRl
dmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBub2RlLT5zZXRDdXJyZW50SG9yaXpvbnRhbFNu
YXBQb2ludEluZGV4KGZyYW1lVmlldy5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkp
OwogICAgICAgICBub2RlLT5zZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChmcmFtZVZp
ZXcuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRl
eCA0OGQ3OWJmYWIwOWYwYjMxOTBjMzMxYjg0ZTFmMWVhMzcwZmFlMDI3Li43Y2UzYjViNjU1YzMy
ZTc2ZTAwNTM2ODVkOWU0ODI4ZmY5MzQyNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApAQCAtNTksNiArNTksMTEg
QEAgc3RydWN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbyB7CiAgICAgVmVjdG9yPFNjcm9sbE9mZnNl
dFJhbmdlPFQ+PiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKICAgICBWZWN0b3I8U2Nyb2xs
T2Zmc2V0UmFuZ2U8VD4+IHZlcnRpY2FsU25hcE9mZnNldFJhbmdlczsKIAorICAgIGJvb2wgaXNF
cXVhbChjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88VD4mIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGhvcml6b250YWxTbmFwT2Zmc2V0cyA9PSBvdGhlci5ob3Jpem9udGFs
U25hcE9mZnNldHMgJiYgdmVydGljYWxTbmFwT2Zmc2V0cyA9PSBvdGhlci52ZXJ0aWNhbFNuYXBP
ZmZzZXRzICYmIGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzID09IG90aGVyLmhvcml6b250YWxT
bmFwT2Zmc2V0UmFuZ2VzICYmIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyA9PSBvdGhlci52ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXM7CisgICAgfQorCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBob3Jpem9udGFsU25hcE9mZnNldHMuaXNFbXB0eSgpICYm
IHZlcnRpY2FsU25hcE9mZnNldHMuaXNFbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuaAppbmRleCBiM2Q1NTBjMmU3Mzc3MGJl
Y2M3MjUyM2QxNWM5MjVlZjU2ZDY5M2Q3Li4zN2MyZGFhY2YwNGJkZjZiYzU2NzQwOGU1NTFkOWMz
M2I2MzZjMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZU5vZGUuaApAQCAtMjMwLDQ3ICsyMzAsNDQgQEAgcHVibGljOgogICAgICAgICBT
Y3JvbGxhYmxlQXJlYVBhcmFtcyAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCA3LAog
ICAgICAgICBSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxpbmcgICAgICAgICAgICAgID0gMUxM
VSA8PCA4LAogICAgICAgICBSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiAgICAgICAgICAgICAgICAg
ICAgID0gMUxMVSA8PCA5LAotICAgICAgICBIb3Jpem9udGFsU25hcE9mZnNldHMgICAgICAgICAg
ICAgICAgICAgICAgID0gMUxMVSA8PCAxMCwKLSAgICAgICAgVmVydGljYWxTbmFwT2Zmc2V0cyAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTEsCi0gICAgICAgIEhvcml6b250YWxT
bmFwT2Zmc2V0UmFuZ2VzICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDEyLAotICAgICAgICBW
ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxMywK
LSAgICAgICAgQ3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXggICAgICAgICAgICA9IDFM
TFUgPDwgMTQsCi0gICAgICAgIEN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCAgICAgICAg
ICAgICAgPSAxTExVIDw8IDE1LAotICAgICAgICBJc01vbml0b3JpbmdXaGVlbEV2ZW50cyAgICAg
ICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxNiwKLSAgICAgICAgU2Nyb2xsQ29udGFpbmVyTGF5
ZXIgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTcsCi0gICAgICAgIFNjcm9sbGVk
Q29udGVudHNMYXllciAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDE4LAotICAgICAg
ICBIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAx
OSwKLSAgICAgICAgVmVydGljYWxTY3JvbGxiYXJMYXllciAgICAgICAgICAgICAgICAgICAgICA9
IDFMTFUgPDwgMjAsCi0gICAgICAgIFBhaW50ZXJGb3JTY3JvbGxiYXIgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxTExVIDw8IDIxLAorICAgICAgICBTbmFwT2Zmc2V0c0luZm8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxMCwKKyAgICAgICAgQ3VycmVudEhvcml6b250
YWxTbmFwT2Zmc2V0SW5kZXggICAgICAgICAgICA9IDFMTFUgPDwgMTEsCisgICAgICAgIEN1cnJl
bnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCAgICAgICAgICAgICAgPSAxTExVIDw8IDEyLAorICAg
ICAgICBJc01vbml0b3JpbmdXaGVlbEV2ZW50cyAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8
PCAxMywKKyAgICAgICAgU2Nyb2xsQ29udGFpbmVyTGF5ZXIgICAgICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgPDwgMTQsCisgICAgICAgIFNjcm9sbGVkQ29udGVudHNMYXllciAgICAgICAgICAg
ICAgICAgICAgICAgPSAxTExVIDw8IDE1LAorICAgICAgICBIb3Jpem9udGFsU2Nyb2xsYmFyTGF5
ZXIgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxNiwKKyAgICAgICAgVmVydGljYWxTY3Jv
bGxiYXJMYXllciAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTcsCisgICAgICAgIFBh
aW50ZXJGb3JTY3JvbGxiYXIgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDE4LAog
ICAgICAgICAvLyBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZQotICAgICAgICBGcmFt
ZVNjYWxlRmFjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyMiwKLSAg
ICAgICAgRXZlbnRUcmFja2luZ1JlZ2lvbiAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUg
PDwgMjMsCi0gICAgICAgIFJvb3RDb250ZW50c0xheWVyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAxTExVIDw8IDI0LAotICAgICAgICBDb3VudGVyU2Nyb2xsaW5nTGF5ZXIgICAgICAgICAg
ICAgICAgICAgICAgID0gMUxMVSA8PCAyNSwKLSAgICAgICAgSW5zZXRDbGlwTGF5ZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjYsCi0gICAgICAgIENvbnRlbnRTaGFk
b3dMYXllciAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDI3LAotICAgICAgICBI
ZWFkZXJIZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyOCwK
LSAgICAgICAgRm9vdGVySGVpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFM
TFUgPDwgMjksCi0gICAgICAgIEhlYWRlckxheWVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAxTExVIDw8IDMwLAotICAgICAgICBGb290ZXJMYXllciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMUxMVSA8PCAzMSwKLSAgICAgICAgQmVoYXZpb3JGb3JGaXhlZEVs
ZW1lbnRzICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMzIsCi0gICAgICAgIFRvcENvbnRl
bnRJbnNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDMzLAotICAgICAg
ICBGaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lICAgICAgICAgID0gMUxMVSA8PCAz
NCwKLSAgICAgICAgVmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQgICA9
IDFMTFUgPDwgMzUsCi0gICAgICAgIEFzeW5jRnJhbWVPck92ZXJmbG93U2Nyb2xsaW5nRW5hYmxl
ZCAgICAgICAgPSAxTExVIDw8IDM2LAotICAgICAgICBXaGVlbEV2ZW50R2VzdHVyZXNCZWNvbWVO
b25CbG9ja2luZyAgICAgICAgID0gMUxMVSA8PCAzNywKLSAgICAgICAgU2Nyb2xsaW5nUGVyZm9y
bWFuY2VUZXN0aW5nRW5hYmxlZCAgICAgICAgICA9IDFMTFUgPDwgMzgsCi0gICAgICAgIExheW91
dFZpZXdwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDM5LAotICAg
ICAgICBNaW5MYXlvdXRWaWV3cG9ydE9yaWdpbiAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8
PCA0MCwKLSAgICAgICAgTWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4gICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgPDwgNDEsCi0gICAgICAgIE92ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplICAgICAg
ICAgICAgICAgICAgPSAxTExVIDw8IDQyLAorICAgICAgICBGcmFtZVNjYWxlRmFjdG9yICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxOSwKKyAgICAgICAgRXZlbnRUcmFja2lu
Z1JlZ2lvbiAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjAsCisgICAgICAgIFJv
b3RDb250ZW50c0xheWVyICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDIxLAor
ICAgICAgICBDb3VudGVyU2Nyb2xsaW5nTGF5ZXIgICAgICAgICAgICAgICAgICAgICAgID0gMUxM
VSA8PCAyMiwKKyAgICAgICAgSW5zZXRDbGlwTGF5ZXIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDFMTFUgPDwgMjMsCisgICAgICAgIENvbnRlbnRTaGFkb3dMYXllciAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAxTExVIDw8IDI0LAorICAgICAgICBIZWFkZXJIZWlnaHQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyNSwKKyAgICAgICAgRm9vdGVySGVp
Z2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjYsCisgICAgICAg
IEhlYWRlckxheWVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDI3
LAorICAgICAgICBGb290ZXJMYXllciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
MUxMVSA8PCAyOCwKKyAgICAgICAgQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzICAgICAgICAgICAg
ICAgICAgICA9IDFMTFUgPDwgMjksCisgICAgICAgIFRvcENvbnRlbnRJbnNldCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDMwLAorICAgICAgICBGaXhlZEVsZW1lbnRzTGF5
b3V0UmVsYXRpdmVUb0ZyYW1lICAgICAgICAgID0gMUxMVSA8PCAzMSwKKyAgICAgICAgVmlzdWFs
Vmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQgICA9IDFMTFUgPDwgMzIsCisgICAg
ICAgIEFzeW5jRnJhbWVPck92ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZCAgICAgICAgPSAxTExVIDw8
IDMzLAorICAgICAgICBXaGVlbEV2ZW50R2VzdHVyZXNCZWNvbWVOb25CbG9ja2luZyAgICAgICAg
ID0gMUxMVSA8PCAzNCwKKyAgICAgICAgU2Nyb2xsaW5nUGVyZm9ybWFuY2VUZXN0aW5nRW5hYmxl
ZCAgICAgICAgICA9IDFMTFUgPDwgMzUsCisgICAgICAgIExheW91dFZpZXdwb3J0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDM2LAorICAgICAgICBNaW5MYXlvdXRWaWV3
cG9ydE9yaWdpbiAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAzNywKKyAgICAgICAgTWF4
TGF5b3V0Vmlld3BvcnRPcmlnaW4gICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMzgsCisg
ICAgICAgIE92ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplICAgICAgICAgICAgICAgICAgPSAxTExV
IDw8IDM5LAogICAgICAgICAvLyBTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlCi0gICAgICAg
IFJlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzICAgICAgICAgICAgICAgPSAxTExVIDw8IDQz
LAotICAgICAgICBMYXlvdXRDb25zdHJhaW50RGF0YSAgICAgICAgICAgICAgICAgICAgICAgID0g
MUxMVSA8PCA0NCwKKyAgICAgICAgUmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMgICAgICAg
ICAgICAgICA9IDFMTFUgPDwgNDAsCisgICAgICAgIExheW91dENvbnN0cmFpbnREYXRhICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDQxLAogICAgICAgICAvLyBTY3JvbGxpbmdTdGF0
ZUZpeGVkTm9kZSwgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlCi0gICAgICAgIFZpZXdwb3J0Q29u
c3RyYWludHMgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDQ1LAorICAgICAgICBW
aWV3cG9ydENvbnN0cmFpbnRzICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCA0MiwK
ICAgICAgICAgLy8gU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZQotICAgICAg
ICBPdmVyZmxvd1Njcm9sbGluZ05vZGUgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCA0
NiwKKyAgICAgICAgT3ZlcmZsb3dTY3JvbGxpbmdOb2RlICAgICAgICAgICAgICAgICAgICAgICA9
IDFMTFUgPDwgNDMsCiAgICAgfTsKICAgICAKICAgICBib29sIGhhc0NoYW5nZWRQcm9wZXJ0aWVz
KCkgY29uc3QgeyByZXR1cm4gIW1fY2hhbmdlZFByb3BlcnRpZXMuaXNFbXB0eSgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCAyZDY4NmRlZTYzNjA5NGZiMjg5Zjc3NmQzMTAwZmI4
N2I3NWRiMTM2Li5mNDA4MTlhZmUzY2VmZDM0ODE4MDZmNDE3OTllOTA1OTg3NWY4MGUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTk0LDEwICs5NCw3IEBAIE9wdGlvblNldDxTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5PiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmFw
cGxpY2FibGVQCiAgICAgICAgIFByb3BlcnR5OjpSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxp
bmcsCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgICAgICBQcm9wZXJ0
eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzLAotICAgICAgICBQcm9wZXJ0eTo6VmVydGljYWxTbmFw
T2Zmc2V0cywKLSAgICAgICAgUHJvcGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzLAot
ICAgICAgICBQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLAorICAgICAgICBQcm9w
ZXJ0eTo6U25hcE9mZnNldHNJbmZvLAogICAgICAgICBQcm9wZXJ0eTo6Q3VycmVudEhvcml6b250
YWxTbmFwT2Zmc2V0SW5kZXgsCiAgICAgICAgIFByb3BlcnR5OjpDdXJyZW50VmVydGljYWxTbmFw
T2Zmc2V0SW5kZXgsCiAgICAgICAgIFByb3BlcnR5OjpJc01vbml0b3JpbmdXaGVlbEV2ZW50cywK
QEAgLTE2MCw0MCArMTU3LDEzIEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpz
ZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbikKIH0KIAogI2lmIEVO
QUJMRShDU1NfU0NST0xMX1NOQVApCi12b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
c2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRz
KQordm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNuYXBPZmZzZXRzSW5mbyhj
b25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBpbmZvKQogewotICAgIGlmIChtX3Nu
YXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMgPT0gc25hcE9mZnNldHMpCisgICAg
aWYgKG1fc25hcE9mZnNldHNJbmZvLmlzRXF1YWwoaW5mbykpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cyA9IHNuYXBPZmZzZXRz
OwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRz
KTsKLX0KLQotdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFZlcnRpY2FsU25h
cE9mZnNldHMoY29uc3QgVmVjdG9yPGZsb2F0PiYgc25hcE9mZnNldHMpCi17Ci0gICAgaWYgKG1f
c25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldHMgPT0gc25hcE9mZnNldHMpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldHMg
PSBzbmFwT2Zmc2V0czsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6OlZlcnRpY2Fs
U25hcE9mZnNldHMpOwotfQotCi12b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0
SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdl
PGZsb2F0Pj4mIHNjcm9sbE9mZnNldFJhbmdlcykKLXsKLSAgICBpZiAobV9zbmFwT2Zmc2V0c0lu
Zm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMgPT0gc2Nyb2xsT2Zmc2V0UmFuZ2VzKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNl
dFJhbmdlcyA9IHNjcm9sbE9mZnNldFJhbmdlczsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJv
cGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OnNldFZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyhjb25zdCBWZWN0
b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgc2Nyb2xsT2Zmc2V0UmFuZ2VzKQotewotICAg
IGlmIChtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPT0gc2Nyb2xs
T2Zmc2V0UmFuZ2VzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3NuYXBPZmZzZXRzSW5mby52
ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPSBzY3JvbGxPZmZzZXRSYW5nZXM7Ci0gICAgc2V0UHJv
cGVydHlDaGFuZ2VkKFByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpOworICAgIG1f
c25hcE9mZnNldHNJbmZvID0gaW5mbzsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6
OlNuYXBPZmZzZXRzSW5mbyk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkIGluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuaAppbmRleCA0MDlhZTlkOWFlNjc5MDNlZjZiYWEyOWY1YmQyNzRlNGMz
ZGIxNDVlLi5iZDRlOTdiOWM1ZWZkZjkxMjlkZWY4YjZiYjIzMGQzN2I0MTY0MDQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuaApAQCAtNzEsMTcgKzcxLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50Jik7CiAKICNpZiBFTkFC
TEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWxT
bmFwT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxT
bmFwT2Zmc2V0czsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SG9yaXpvbnRhbFNuYXBP
ZmZzZXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKLQotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4m
IHZlcnRpY2FsU25hcE9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby52
ZXJ0aWNhbFNuYXBPZmZzZXRzOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWZXJ0aWNh
bFNuYXBPZmZzZXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKLQotICAgIGNvbnN0IFZlY3RvcjxT
Y3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpIGNv
bnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2Vz
OyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIb3Jpem9udGFsU25hcE9mZnNldFJhbmdl
cyhjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYpOwotCi0gICAgY29uc3Qg
VmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIHZlcnRpY2FsU25hcE9mZnNldFJhbmdl
cygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldFJh
bmdlczsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmVydGljYWxTbmFwT2Zmc2V0UmFu
Z2VzKGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+Jik7CisgICAgY29uc3Qg
U2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgc25hcE9mZnNldHNJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm87IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNu
YXBPZmZzZXRzSW5mbyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBuZXdPZmZz
ZXRzSW5mbyk7CiAKICAgICB1bnNpZ25lZCBjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4OyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
KHVuc2lnbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCA5MGI1MGMyMjExMzNlYTQz
NmU4NjFmZWVlOGU4NzUxM2NiNTIzYmIzLi4xMzBlNzNlZGJjMjhjMDgyODgzMWE1OGMyMmYzYzUx
Y2U2N2QxMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCkBAIC03NSwxNyArNzUsOCBAQCB2
b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVu
KGNvbnN0IFNjcm9sbGluZ1N0YXRlTgogICAgICAgICBtX3Njcm9sbE9yaWdpbiA9IHN0YXRlLnNj
cm9sbE9yaWdpbigpOwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBpZiAoc3Rh
dGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6
b250YWxTbmFwT2Zmc2V0cykpCi0gICAgICAgIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxT
bmFwT2Zmc2V0cyA9IHN0YXRlLmhvcml6b250YWxTbmFwT2Zmc2V0cygpOwotCi0gICAgaWYgKHN0
YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0
aWNhbFNuYXBPZmZzZXRzKSkKLSAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFw
T2Zmc2V0cyA9IHN0YXRlLnZlcnRpY2FsU25hcE9mZnNldHMoKTsKLQotICAgIGlmIChzdGF0ZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRh
bFNuYXBPZmZzZXRSYW5nZXMpKQotICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFs
U25hcE9mZnNldFJhbmdlcyA9IHN0YXRlLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCk7Ci0K
LSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlZlcnRpY2FsU25hcE9mZnNldFJhbmdlcykpCi0gICAgICAgIG1fc25hcE9mZnNldHNJ
bmZvLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyA9IHN0YXRlLnZlcnRpY2FsU25hcE9mZnNldFJh
bmdlcygpOworICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6U25hcE9mZnNldHNJbmZvKSkKKyAgICAgICAgbV9zbmFwT2Zmc2V0c0lu
Zm8gPSBzdGF0ZS5zbmFwT2Zmc2V0c0luZm8oKTsKIAogICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudEhvcml6b250YWxT
bmFwT2Zmc2V0SW5kZXgpKQogICAgICAgICBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXggPSBzdGF0ZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCk7CkBAIC0zMzUsNiAr
MzI2LDEzIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVz
KFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCitjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6c25hcE9mZnNldHNJbmZvKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm87Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5oCmluZGV4IDg2MmMxYjNkYmUwZTIzZTE2OWZhNTJjYWE0NjJmZWZkZjE0ZGU4MTguLmJl
NDlkMGIxMjVmMDFiNzFlZDZkOGJjYWU0ZjZlMjc3NTBjMzg0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaApAQCAtOTUsMTAgKzk1LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuSGF2ZVNjcm9sbGJh
cnMoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy5ob3Jpem9udGFs
U2Nyb2xsYmFyTW9kZSAhPSBTY3JvbGxiYXJBbHdheXNPZmYgfHwgbV9zY3JvbGxhYmxlQXJlYVBh
cmFtZXRlcnMudmVydGljYWxTY3JvbGxiYXJNb2RlICE9IFNjcm9sbGJhckFsd2F5c09mZjsgfQog
CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBo
b3Jpem9udGFsU25hcE9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby5o
b3Jpem9udGFsU25hcE9mZnNldHM7IH0KLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNh
bFNuYXBPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxT
bmFwT2Zmc2V0czsgfQotICAgIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+
JiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNl
dHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzOyB9Ci0gICAgY29uc3QgVmVjdG9yPFNj
cm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpIGNvbnN0
IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlczsgfQor
ICAgIGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIHNuYXBPZmZzZXRzSW5mbygp
IGNvbnN0OwogICAgIHVuc2lnbmVkIGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBj
b25zdCB7IHJldHVybiBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXg7IH0KICAgICB1
bnNpZ25lZCBjdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXg7IH0KICAgICB2b2lkIHNldEN1cnJlbnRIb3Jp
em9udGFsU25hcFBvaW50SW5kZXgodW5zaWduZWQgaW5kZXgpIHsgbV9jdXJyZW50SG9yaXpvbnRh
bFNuYXBQb2ludEluZGV4ID0gaW5kZXg7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYy5oCmluZGV4IDMyYTgzOGViNmYzZGE0Mzk4M2JjZmY1NWI3Y2M0MTgx
NTU3MzRlOWYuLjlhMTFiNmExZjVkZDY2MzljMWJlN2FlZGNlYmMzMDQ4ZjJiZGU2NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaApAQCAtNTUsOCAr
NTUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjdXJyZW50U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCk7
CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIHZvaWQgdXBkYXRlU2Nyb2xsU25h
cFBvaW50cyhTY3JvbGxFdmVudEF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYsIGNvbnN0
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mKTsKLSAgICB2b2lkIHNldEFj
dGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzLCB1bnNpZ25lZCk7CiAg
ICAgYm9vbCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UoKSBjb25zdDsKICAgICB1bnNp
Z25lZCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcykgY29uc3Q7
CiAgICAgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCmluZGV4IDc0MGEzMzNhZjE3YjBl
YmEzNGJmZWZhYjBhMzVhYTFlYjljZDdlZDAuLjg3MmNjMjcyMTZmNGJkMzhhOTJhNTllODNmMjhm
NjQ5ZGQ1ZmRiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjLm1tCkBAIC03NSw2ICs3NSwxNiBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxTY3JvbGxP
ZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gY29udmVydFRvTGF5b3V0VW5pdHMoY29uc3QgVgogCiAg
ICAgcmV0dXJuIHNuYXBPZmZzZXRSYW5nZXM7CiB9CisKK3N0YXRpYyBpbmxpbmUgU2Nyb2xsU25h
cE9mZnNldHNJbmZvPExheW91dFVuaXQ+IGNvbnZlcnRUb0xheW91dFVuaXRzKGNvbnN0IFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIHNuYXBPZmZzZXRzSW5mb0FzRmxvYXQpCit7CisgICAg
cmV0dXJuIHsKKyAgICAgICAgY29udmVydFRvTGF5b3V0VW5pdHMoc25hcE9mZnNldHNJbmZvQXNG
bG9hdC52ZXJ0aWNhbFNuYXBPZmZzZXRzKSwKKyAgICAgICAgY29udmVydFRvTGF5b3V0VW5pdHMo
c25hcE9mZnNldHNJbmZvQXNGbG9hdC5ob3Jpem9udGFsU25hcE9mZnNldHMpLAorICAgICAgICBj
b252ZXJ0VG9MYXlvdXRVbml0cyhzbmFwT2Zmc2V0c0luZm9Bc0Zsb2F0LnZlcnRpY2FsU25hcE9m
ZnNldFJhbmdlcyksCisgICAgICAgIGNvbnZlcnRUb0xheW91dFVuaXRzKHNuYXBPZmZzZXRzSW5m
b0FzRmxvYXQuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpCisgICAgfTsKK30KICNlbmRpZgog
CiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnVwZGF0ZUZyb21T
dGF0ZU5vZGUoY29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdTdGF0
ZU5vZGUpCkBAIC04NiwzMCArOTYsMTcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjOjp1cGRhdGVGcm9tU3RhdGVOb2RlKGNvbnN0IFNjcm9sbGluZ1MKICAgICB9
CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6
b250YWxTbmFwT2Zmc2V0cykgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldFJhbmdl
cykpCi0gICAgICAgIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jp
em9udGFsLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUuaG9yaXpvbnRh
bFNuYXBPZmZzZXRzKCkpLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUu
aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSkpOwotCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRl
Tm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVy
dGljYWxTbmFwT2Zmc2V0cykgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMp
KQotICAgICAgICB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpczo6VmVydGlj
YWwsIGNvbnZlcnRUb0xheW91dFVuaXRzKHNjcm9sbGluZ1N0YXRlTm9kZS52ZXJ0aWNhbFNuYXBP
ZmZzZXRzKCkpLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUudmVydGlj
YWxTbmFwT2Zmc2V0UmFuZ2VzKCkpKTsKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0lu
Zm8pKQorICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIudXBkYXRlU2Nyb2xsU25hcFBvaW50cyhj
b252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUuc25hcE9mZnNldHNJbmZvKCkp
KTsKIAogICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4
KSkKLSAgICAgICAgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwsIHNjcm9sbGluZ1N0YXRlTm9kZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQ
b2ludEluZGV4KCkpOwotICAgIAorICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIuc2V0QWN0aXZl
U2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9s
bGluZ1N0YXRlTm9kZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkpOworCiAgICAg
aWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4KSkKLSAgICAgICAg
c2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2Fs
LCBzY3JvbGxpbmdTdGF0ZU5vZGUuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7Cisg
ICAgICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlz
KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHNjcm9sbGluZ1N0YXRlTm9kZS5jdXJyZW50VmVy
dGljYWxTbmFwUG9pbnRJbmRleCgpKTsKICNlbmRpZgogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZl
bnRBeGlzIGF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcE9mZnNldHMsIGNvbnN0
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIHNuYXBSYW5nZXMpCi17Ci0g
ICAgbV9zY3JvbGxDb250cm9sbGVyLnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoYXhpcywgc25hcE9m
ZnNldHMsIHNuYXBSYW5nZXMpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWM6OnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRB
eGlzIGF4aXMsIHVuc2lnbmVkIGluZGV4KQotewotICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zZXRB
Y3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKGF4aXMsIGluZGV4KTsKLX0KLQogdW5zaWduZWQg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWN0aXZlU2Nyb2xsU25hcElu
ZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKIHsKICAgICByZXR1cm4gbV9z
Y3JvbGxDb250cm9sbGVyLmFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoYXhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgKaW5kZXgg
NzMwMzI0NGZjNjBmZWYzNDM5MGFkNjRlMjUxOWFjNWViMjMyMTUwNS4uOTQ0Yjk4MDZkNDY4NjI0
MDNiMTkwNDdmNmZmZDdkYThhNDA4ZTg3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaApAQCAtMTU4LDcgKzE1OCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZCgpOwogCiAjaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKLSAgICB2b2lkIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlz
LCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFu
Z2U8TGF5b3V0VW5pdD4+Jik7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKGNvbnN0
IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYpOwogICAgIHZvaWQgc2V0QWN0aXZl
U2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMsIHVuc2lnbmVkKTsKICAgICB2
b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzRm9yT2Zmc2V0KFNjcm9sbE9mZnNldCk7CiAg
ICAgYm9vbCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UoKSBjb25zdCB7IHJldHVybiBt
X2FjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KaW5kZXggZDgxODVjM2I2N2U5YTNm
MDgyYjQzN2RhODVhNGYxZjg2MjY5Y2U0YS4uNzcxOTE2MzEzNGU5YWQ5NGM2ZDQyODg2MjFkZGI3
N2I2OGFkNGNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Ny
b2xsQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3Jv
bGxDb250cm9sbGVyLm1tCkBAIC04MSwxMSArODEsNiBAQCBzdGF0aWMgZmxvYXQgc2Nyb2xsV2hl
ZWxNdWx0aXBsaWVyKCkKIH0KICNlbmRpZgogCi1zdGF0aWMgU2Nyb2xsRXZlbnRBeGlzIG90aGVy
U2Nyb2xsRXZlbnRBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzKQotewotICAgIHJldHVybiBheGlz
ID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IFNjcm9sbEV2ZW50QXhpczo6VmVydGlj
YWwgOiBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWw7Ci19Ci0KIFNjcm9sbENvbnRyb2xsZXI6
OlNjcm9sbENvbnRyb2xsZXIoU2Nyb2xsQ29udHJvbGxlckNsaWVudCYgY2xpZW50KQogICAgIDog
bV9jbGllbnQoY2xpZW50KQogewpAQCAtODMxLDcgKzgyNiwxNyBAQCB2b2lkIFNjcm9sbENvbnRy
b2xsZXI6OnNjcm9sbFNuYXBUaW1lckZpcmVkKCkKIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBk
YXRlU2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkK
IHsKICAgICBjb25zdCBhdXRvKiBzbmFwT2Zmc2V0SW5mbyA9IHNjcm9sbGFibGVBcmVhLnNuYXBP
ZmZzZXRJbmZvKCk7Ci0gICAgaWYgKCFzbmFwT2Zmc2V0SW5mbyB8fCBzbmFwT2Zmc2V0SW5mby0+
aXNFbXB0eSgpKSB7CisgICAgaWYgKCFzbmFwT2Zmc2V0SW5mbykgeworICAgICAgICBtX3Njcm9s
bFNuYXBTdGF0ZSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1cGRh
dGVTY3JvbGxTbmFwUG9pbnRzKCpzbmFwT2Zmc2V0SW5mbyk7Cit9CisKK3ZvaWQgU2Nyb2xsQ29u
dHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm88TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRJbmZvKQoreworICAgIGlmIChzbmFwT2Zmc2V0SW5m
by5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBudWxscHRyOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtODQwLDM0ICs4NDUsMTIgQEAgdm9pZCBTY3JvbGxDb250
cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwU3RhdGUoY29uc3QgU2Nyb2xsYWJsZUFyZWEmIHNjcm9s
bGFibGVBcmUKICAgICBpZiAoIW1fc2Nyb2xsU25hcFN0YXRlKQogICAgICAgICBtX3Njcm9sbFNu
YXBTdGF0ZSA9IG1ha2VVbmlxdWU8U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU+KCk7CiAKLSAgICBt
X3Njcm9sbFNuYXBTdGF0ZS0+c2V0U25hcE9mZnNldEluZm8oKnNuYXBPZmZzZXRJbmZvKTsKKyAg
ICBtX3Njcm9sbFNuYXBTdGF0ZS0+c2V0U25hcE9mZnNldEluZm8oc25hcE9mZnNldEluZm8pOwog
CiAgICAgaWYgKHNob3VsZENvbXB1dGVDdXJyZW50U25hcEluZGljZXMpCiAgICAgICAgIHNldEFj
dGl2ZVNjcm9sbFNuYXBJbmRpY2VzRm9yT2Zmc2V0KHJvdW5kZWRJbnRQb2ludChtX2NsaWVudC5z
Y3JvbGxPZmZzZXQoKSkpOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVh
bSA8PCAiU2Nyb2xsQ29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiB1cGRhdGVTY3JvbGxTbmFwU3Rh
dGUgZm9yICIgPDwgc2Nyb2xsYWJsZUFyZWEgPDwgIiBuZXcgc3RhdGUgIiA8PCBWYWx1ZU9yTnVs
bChtX3Njcm9sbFNuYXBTdGF0ZS5nZXQoKSkpOwotfQotCi12b2lkIFNjcm9sbENvbnRyb2xsZXI6
OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFZlY3Rv
cjxMYXlvdXRVbml0PiYgc25hcFBvaW50cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdl
PExheW91dFVuaXQ+PiYgc25hcFJhbmdlcykKLXsKLSAgICBib29sIHNob3VsZENvbXB1dGVDdXJy
ZW50U25hcEluZGljZXMgPSBmYWxzZTsKLSAgICBpZiAoIW1fc2Nyb2xsU25hcFN0YXRlKSB7Ci0g
ICAgICAgIGlmIChzbmFwUG9pbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZSA9IG1ha2VVbmlxdWU8U2Nyb2xsU25hcEFuaW1hdG9y
U3RhdGU+KCk7Ci0gICAgICAgIHNob3VsZENvbXB1dGVDdXJyZW50U25hcEluZGljZXMgPSB0cnVl
OwotICAgIH0KLQotICAgIGlmIChzbmFwUG9pbnRzLmlzRW1wdHkoKSAmJiBtX3Njcm9sbFNuYXBT
dGF0ZS0+c25hcE9mZnNldHNGb3JBeGlzKG90aGVyU2Nyb2xsRXZlbnRBeGlzKGF4aXMpKS5pc0Vt
cHR5KCkpCi0gICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0gbnVsbHB0cjsKLSAgICBlbHNlIHsK
LSAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUtPnNldFNuYXBPZmZzZXRzQW5kUG9zaXRpb25SYW5n
ZXNGb3JBeGlzKGF4aXMsIHNuYXBQb2ludHMsIHNuYXBSYW5nZXMpOwotICAgICAgICBpZiAoc2hv
dWxkQ29tcHV0ZUN1cnJlbnRTbmFwSW5kaWNlcykgewotICAgICAgICAgICAgc2V0QWN0aXZlU2Ny
b2xsU25hcEluZGljZXNGb3JPZmZzZXQocm91bmRlZEludFBvaW50KG1fY2xpZW50LnNjcm9sbE9m
ZnNldCgpKSk7Ci0gICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFt
IDw8ICJTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRzIC0gY29tcHV0ZWQg
aW5pdGlhbCBzbmFwIGluZGljZXM6IHggIiA8PCBtX3Njcm9sbFNuYXBTdGF0ZS0+YWN0aXZlU25h
cEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpIDw8ICIsIHkgIiA8PCBt
X3Njcm9sbFNuYXBTdGF0ZS0+YWN0aXZlU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6
OlZlcnRpY2FsKSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9s
bFNuYXAsIHN0cmVhbSA8PCAiU2Nyb2xsQ29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiB1cGRhdGVT
Y3JvbGxTbmFwU3RhdGUgbmV3IHN0YXRlOiAiIDw8IFZhbHVlT3JOdWxsKG1fc2Nyb2xsU25hcFN0
YXRlLmdldCgpKSk7CiB9CiAKIHVuc2lnbmVkIFNjcm9sbENvbnRyb2xsZXI6OmFjdGl2ZVNjcm9s
bFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKaW5kZXggNzRl
OWI4MTMwYjhhNmY1YzYyOTliYWZhYWNmNzhlMmJhNDg3ZWMzYi4uOTI0ZDk3NDBkMTllYjQ0YzA1
NmE0ZGYxY2QzZWVhMjVhM2YwNGE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcApAQCAtOTgsNiArOTgsMTEgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZXF1ZXN0ZWRTY3JvbGxEYXRhPiB7CiAgICAgc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgUmVxdWVzdGVkU2Nyb2xs
RGF0YSYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTY3JvbGxTbmFw
T2Zmc2V0c0luZm88ZmxvYXQ+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Jik7CisgICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZs
b2F0PiYpOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAt
MTE1LDEwICsxMjAsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk+IHsKICAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsYWJsZUFyZWFQYXJhbXMsCiAgICAgICAgIFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlJlYXNvbnNGb3JTeW5jaHJvbm91c1Nj
cm9sbGluZywKICAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6
UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24sCi0gICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0cywKLSAgICAgICAgV2ViQ29yZTo6
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0cywKLSAgICAg
ICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBP
ZmZzZXRSYW5nZXMsCi0gICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk6OlZlcnRpY2FsU25hcE9mZnNldFJhbmdlcywKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6U25hcE9mZnNldHNJbmZvLAogICAgICAgICBXZWJDb3JlOjpT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJ
bmRleCwKICAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3Vy
cmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4LAogICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpJc01vbml0b3JpbmdXaGVlbEV2ZW50cywKQEAgLTIwNiwxMCAr
MjA4LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogICAgIFNDUk9MTElOR19OT0RFX0VOQ09E
RShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxQb3NpdGlvbiwgc2Nyb2xsUG9z
aXRpb24pCiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlNjcm9sbE9yaWdpbiwgc2Nyb2xsT3JpZ2luKQogI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApCi0gICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0cywgaG9yaXpvbnRhbFNuYXBPZmZzZXRzKQotICAg
IFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0
aWNhbFNuYXBPZmZzZXRzLCB2ZXJ0aWNhbFNuYXBPZmZzZXRzKQotICAgIFNDUk9MTElOR19OT0RF
X0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNl
dFJhbmdlcywgaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpCi0gICAgU0NST0xMSU5HX05PREVf
RU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldFJh
bmdlcywgdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09E
RShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8sIHNuYXBPZmZz
ZXRzSW5mbykKICAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgsIGN1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXgpCiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0
YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCwgY3VycmVu
dFZlcnRpY2FsU25hcFBvaW50SW5kZXgpCiAjZW5kaWYKQEAgLTMwNiwxMCArMzA1LDcgQEAgYm9v
bCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBTY3JvbGwKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsUG9zaXRpb24sIEZsb2F0UG9pbnQsIHNldFNjcm9s
bFBvc2l0aW9uKTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpQcm9wZXJ0eTo6U2Nyb2xsT3JpZ2luLCBJbnRQb2ludCwgc2V0U2Nyb2xsT3JpZ2luKTsKICNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldHMsIFZlY3Rvcjxm
bG9hdD4sIHNldEhvcml6b250YWxTbmFwT2Zmc2V0cyk7Ci0gICAgU0NST0xMSU5HX05PREVfREVD
T0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldHMsIFZl
Y3RvcjxmbG9hdD4sIHNldFZlcnRpY2FsU25hcE9mZnNldHMpOwotICAgIFNDUk9MTElOR19OT0RF
X0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNl
dFJhbmdlcywgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4sIHNldEhvcml6b250YWxT
bmFwT2Zmc2V0UmFuZ2VzKQotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsIFZlY3RvcjxTY3JvbGxP
ZmZzZXRSYW5nZTxmbG9hdD4+LCBzZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpCisgICAgU0NS
T0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNuYXBPZmZz
ZXRzSW5mbywgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Piwgc2V0U25hcE9mZnNldHNJbmZv
KTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0
eTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgsIHVuc2lnbmVkLCBzZXRDdXJyZW50
SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Ny
b2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4
LCB1bnNpZ25lZCwgc2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgpOwogI2VuZGlmCkBA
IC01MjYsNiArNTIyLDI3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXF1ZXN0ZWRTY3JvbGxEYXRh
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlcXVlc3RlZFNjcm9sCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxm
bG9hdD4mIGluZm8pCit7CisgICAgZW5jb2RlciA8PCBpbmZvLnZlcnRpY2FsU25hcE9mZnNldHM7
CisgICAgZW5jb2RlciA8PCBpbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0czsKKyAgICBlbmNvZGVy
IDw8IGluZm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzOworICAgIGVuY29kZXIgPDwgaW5mby5o
b3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Nyb2xs
U25hcE9mZnNldHNJbmZvPGZsb2F0PiYgaW5mbykKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGluZm8udmVydGljYWxTbmFwT2Zmc2V0cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby52ZXJ0aWNhbFNuYXBP
ZmZzZXRSYW5nZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShpbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiB0cnVlOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGlj
IHZvaWQgZW5jb2RlTm9kZUFuZERlc2NlbmRhbnRzKElQQzo6RW5jb2RlciYgZW5jb2RlciwgY29u
c3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUsIGludCYgZW5jb2RlZE5vZGVDb3VudCkK
QEAgLTY5NiwxNyArNzEzLDEyIEBAIHN0YXRpYyB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgYm9vbCBjCiAgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgic2Nyb2xsZWQtY29udGVudHMtbGF5ZXIiLCBzdGF0aWNfY2FzdDxHcmFw
aGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCkp
KTsKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVy
dGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJob3Jpem9udGFsIHNuYXAgb2Zmc2V0cyIsIG5vZGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkp
OwotCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0cykp
Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidmVydGljYWwgc25hcCBvZmZzZXRzIiwgbm9kZS52
ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpOwotCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkg
fHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6
Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgpKQorICAgIGlmICghY2hhbmdlZFByb3Bl
cnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbykpIHsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJo
b3Jpem9udGFsIHNuYXAgb2Zmc2V0cyIsIG5vZGUuc25hcE9mZnNldHNJbmZvKCkuaG9yaXpvbnRh
bFNuYXBPZmZzZXRzKTsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJ2ZXJ0aWNhbCBzbmFwIG9m
ZnNldHMiLCBub2RlLnNuYXBPZmZzZXRzSW5mbygpLnZlcnRpY2FsU25hcE9mZnNldHMpOwogICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoImN1cnJlbnQgaG9yaXpvbnRhbCBzbmFwIHBvaW50IGluZGV4
Iiwgbm9kZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkpOwotCi0gICAgaWYgKCFj
aGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4KSkKICAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJjdXJyZW50IHZlcnRpY2FsIHNuYXAgcG9pbnQgaW5kZXgi
LCBub2RlLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpOworICAgIH0KICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHlJT1MubW0KaW5kZXggNzM3MmZmMjlmNzU5YjIwMTA4NzY2NTgxZGQxMDQxOGI4YjQ4MzZi
Yy4uMWJiMDk1MDg1ZDIzNmVlNDViN2M3MzkwZDQ4MTlmODM4NzU2OTRmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQpA
QCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6
c2hvdWxkU25hcEZvck1haW5GcmFtZVNjcm9sbGluZyhTY3JvbGxFdmVuCiAgICAgU2Nyb2xsaW5n
VHJlZU5vZGUqIHJvb3QgPSBtX3Njcm9sbGluZ1RyZWUtPnJvb3ROb2RlKCk7CiAgICAgaWYgKHJv
b3QgJiYgcm9vdC0+aXNGcmFtZVNjcm9sbGluZ05vZGUoKSkgewogICAgICAgICBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlKiByb290U2Nyb2xsaW5nTm9kZSA9IHN0YXRpY19jYXN0PFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUqPihyb290KTsKLSAgICAgICAgY29uc3QgVmVj
dG9yPGZsb2F0PiYgc25hcE9mZnNldHMgPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpv
bnRhbCA/IHJvb3RTY3JvbGxpbmdOb2RlLT5ob3Jpem9udGFsU25hcE9mZnNldHMoKSA6IHJvb3RT
Y3JvbGxpbmdOb2RlLT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCk7CisgICAgICAgIGNvbnN0IFZlY3Rv
cjxmbG9hdD4mIHNuYXBPZmZzZXRzID0gcm9vdFNjcm9sbGluZ05vZGUtPnNuYXBPZmZzZXRzSW5m
bygpLm9mZnNldHNGb3JBeGlzKGF4aXMpOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50SW5kZXgg
PSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IG1fY3VycmVudEhvcml6b250
YWxTbmFwUG9pbnRJbmRleCA6IG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXg7CiAgICAg
ICAgIHJldHVybiBzbmFwT2Zmc2V0cy5zaXplKCkgJiYgKGN1cnJlbnRJbmRleCA8IHNuYXBPZmZz
ZXRzLnNpemUoKSB8fCBjdXJyZW50SW5kZXggPT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCk7CiAg
ICAgfQpAQCAtMjI1LDggKzIyNSw4IEBAIGZsb2F0IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHk6OmNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFNjCiAgICAgU2Ny
b2xsaW5nVHJlZU5vZGUqIHJvb3QgPSBtX3Njcm9sbGluZ1RyZWUtPnJvb3ROb2RlKCk7CiAgICAg
QVNTRVJUKHJvb3QgJiYgcm9vdC0+aXNGcmFtZVNjcm9sbGluZ05vZGUoKSk7CiAgICAgU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSogcm9vdFNjcm9sbGluZ05vZGUgPSBzdGF0aWNfY2Fz
dDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKj4ocm9vdCk7Ci0gICAgY29uc3QgVmVj
dG9yPGZsb2F0PiYgc25hcE9mZnNldHMgPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpv
bnRhbCA/IHJvb3RTY3JvbGxpbmdOb2RlLT5ob3Jpem9udGFsU25hcE9mZnNldHMoKSA6IHJvb3RT
Y3JvbGxpbmdOb2RlLT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCk7Ci0gICAgY29uc3QgVmVjdG9yPFNj
cm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIHNuYXBPZmZzZXRSYW5nZXMgPSBheGlzID09IFNjcm9s
bEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHJvb3RTY3JvbGxpbmdOb2RlLT5ob3Jpem9udGFsU25h
cE9mZnNldFJhbmdlcygpIDogcm9vdFNjcm9sbGluZ05vZGUtPnZlcnRpY2FsU25hcE9mZnNldFJh
bmdlcygpOworICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzID0gcm9vdFNjcm9s
bGluZ05vZGUtPnNuYXBPZmZzZXRzSW5mbygpLm9mZnNldHNGb3JBeGlzKGF4aXMpOworICAgIGNv
bnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzID0g
cm9vdFNjcm9sbGluZ05vZGUtPnNuYXBPZmZzZXRzSW5mbygpLm9mZnNldFJhbmdlc0ZvckF4aXMo
YXhpcyk7CiAKICAgICBmbG9hdCBzY2FsZWRTY3JvbGxEZXN0aW5hdGlvbiA9IHNjcm9sbERlc3Rp
bmF0aW9uIC8gbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7CiAgICAgZmxv
YXQgcmF3Q2xvc2VzdFNuYXBPZmZzZXQgPSBjbG9zZXN0U25hcE9mZnNldChzbmFwT2Zmc2V0cywg
c25hcE9mZnNldFJhbmdlcywgc2NhbGVkU2Nyb2xsRGVzdGluYXRpb24sIHZlbG9jaXR5LCBjdXJy
ZW50SW5kZXgpOwpAQCAtMjQzLDggKzI0Myw4IEBAIGJvb2wgUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eTo6aGFzQWN0aXZlU25hcFBvaW50KCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSYgcm9vdFNjcm9sbGlu
Z05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPigqcm9vdCk7
Ci0gICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRhbCA9IHJvb3RTY3JvbGxpbmdOb2Rl
Lmhvcml6b250YWxTbmFwT2Zmc2V0cygpOwotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRp
Y2FsID0gcm9vdFNjcm9sbGluZ05vZGUudmVydGljYWxTbmFwT2Zmc2V0cygpOworICAgIGNvbnN0
IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWwgPSByb290U2Nyb2xsaW5nTm9kZS5zbmFwT2Zmc2V0
c0luZm8oKS5ob3Jpem9udGFsU25hcE9mZnNldHM7CisgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYg
dmVydGljYWwgPSByb290U2Nyb2xsaW5nTm9kZS5zbmFwT2Zmc2V0c0luZm8oKS52ZXJ0aWNhbFNu
YXBPZmZzZXRzOwogCiAgICAgaWYgKGhvcml6b250YWwuaXNFbXB0eSgpICYmIHZlcnRpY2FsLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjY0LDggKzI2NCw4IEBAIENHUG9p
bnQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6bmVhcmVzdEFjdGl2ZUNvbnRlbnRJ
bnNldEFkanVzdGVkU25hcE9mCiAgICAgU2Nyb2xsaW5nVHJlZU5vZGUqIHJvb3QgPSBtX3Njcm9s
bGluZ1RyZWUtPnJvb3ROb2RlKCk7CiAgICAgQVNTRVJUKHJvb3QgJiYgaXM8U2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZT4ocm9vdCkpOwogICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGUmIHJvb3RTY3JvbGxpbmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZT4oKnJvb3QpOwotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250
YWwgPSByb290U2Nyb2xsaW5nTm9kZS5ob3Jpem9udGFsU25hcE9mZnNldHMoKTsKLSAgICBjb25z
dCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNhbCA9IHJvb3RTY3JvbGxpbmdOb2RlLnZlcnRpY2FsU25h
cE9mZnNldHMoKTsKKyAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBob3Jpem9udGFsID0gcm9vdFNj
cm9sbGluZ05vZGUuc25hcE9mZnNldHNJbmZvKCkuaG9yaXpvbnRhbFNuYXBPZmZzZXRzOworICAg
IGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2FsID0gcm9vdFNjcm9sbGluZ05vZGUuc25hcE9m
ZnNldHNJbmZvKCkudmVydGljYWxTbmFwT2Zmc2V0czsKIAogICAgIC8vIFRoZSBib3VuZHMgY2hl
Y2tpbmcgd2l0aCBtYXhTY3JvbGxPZmZzZXRzIGlzIHRvIGVuc3VyZSB0aGF0IHdlIHdvbid0IGlu
dGVyZmVyZSB3aXRoIHJ1YmJlci1iYW5kaW5nIHdoZW4gc2Nyb2xsaW5nIHRvIHRoZSBlZGdlIG9m
IHRoZSBwYWdlLgogICAgIGlmICghaG9yaXpvbnRhbC5pc0VtcHR5KCkgJiYgbV9jdXJyZW50SG9y
aXpvbnRhbFNuYXBQb2ludEluZGV4IDwgaG9yaXpvbnRhbC5zaXplKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0K
aW5kZXggZGZiZjdhNGRiY2QzZTA1YTc3ZmQ1MWQyMjMwMGU2NjIwMzhlZmI4Ny4uOGVkMjFkN2Rk
YWM4NzViM2EwNWRjZGQ0OTNmYjM0NjIwZGY0NWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQpAQCAtMTA2
LDE3ICsxMDYsMTkgQEAgLSAodm9pZClzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOihVSVNjcm9s
bFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWZWxvY2l0eTooQ0dQb2kKICAgICB1bnNpZ25lZCBvcmln
aW5hbEhvcml6b250YWxTbmFwUG9zaXRpb24gPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+
c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKTsKICAgICB1
bnNpZ25lZCBvcmlnaW5hbFZlcnRpY2FsU25hcFBvc2l0aW9uID0gX3Njcm9sbGluZ1RyZWVOb2Rl
RGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgp
OwogCi0gICAgaWYgKCFfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgp
Lmhvcml6b250YWxTbmFwT2Zmc2V0cygpLmlzRW1wdHkoKSkgeworICAgIGNvbnN0IGF1dG8mIGhv
cml6b250YWwgPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNu
YXBPZmZzZXRzSW5mbygpLmhvcml6b250YWxTbmFwT2Zmc2V0czsKKyAgICBpZiAoIWhvcml6b250
YWwuaXNFbXB0eSgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4OwotICAgICAgICBmbG9hdCBw
b3RlbnRpYWxTbmFwUG9zaXRpb24gPSBXZWJDb3JlOjpjbG9zZXN0U25hcE9mZnNldChfc2Nyb2xs
aW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmhvcml6b250YWxTbmFwT2Zmc2V0
cygpLCBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmhvcml6b250
YWxTbmFwT2Zmc2V0UmFuZ2VzKCksIGhvcml6b250YWxUYXJnZXQsIHZlbG9jaXR5LngsIGluZGV4
KTsKKyAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gV2ViQ29yZTo6Y2xvc2Vz
dFNuYXBPZmZzZXQoaG9yaXpvbnRhbCwgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9s
bGluZ05vZGUoKS5zbmFwT2Zmc2V0c0luZm8oKS5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcywg
aG9yaXpvbnRhbFRhcmdldCwgdmVsb2NpdHkueCwgaW5kZXgpOwogICAgICAgICBfc2Nyb2xsaW5n
VHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNldEN1cnJlbnRIb3Jpem9udGFsU25h
cFBvaW50SW5kZXgoaW5kZXgpOwogICAgICAgICBpZiAoaG9yaXpvbnRhbFRhcmdldCA+PSAwICYm
IGhvcml6b250YWxUYXJnZXQgPD0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZS53aWR0aCkKICAgICAg
ICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPnggPSBwb3RlbnRpYWxTbmFwUG9zaXRpb247CiAg
ICAgfQogCi0gICAgaWYgKCFfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9k
ZSgpLnZlcnRpY2FsU25hcE9mZnNldHMoKS5pc0VtcHR5KCkpIHsKKyAgICBjb25zdCBhdXRvJiB2
ZXJ0aWNhbCA9IF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc25h
cE9mZnNldHNJbmZvKCkudmVydGljYWxTbmFwT2Zmc2V0czsKKyAgICBpZiAoIXZlcnRpY2FsLmlz
RW1wdHkoKSkgewogICAgICAgICB1bnNpZ25lZCBpbmRleDsKLSAgICAgICAgZmxvYXQgcG90ZW50
aWFsU25hcFBvc2l0aW9uID0gV2ViQ29yZTo6Y2xvc2VzdFNuYXBPZmZzZXQoX3Njcm9sbGluZ1Ry
ZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCksIF9z
Y3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkudmVydGljYWxTbmFwT2Zm
c2V0UmFuZ2VzKCksIHZlcnRpY2FsVGFyZ2V0LCB2ZWxvY2l0eS55LCBpbmRleCk7CisgICAgICAg
IGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IFdlYkNvcmU6OmNsb3Nlc3RTbmFwT2Zmc2V0
KHZlcnRpY2FsLCBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNu
YXBPZmZzZXRzSW5mbygpLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcywgdmVydGljYWxUYXJnZXQs
IHZlbG9jaXR5LnksIGluZGV4KTsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUt
PnNjcm9sbGluZ05vZGUoKS5zZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChpbmRleCk7
CiAgICAgICAgIGlmICh2ZXJ0aWNhbFRhcmdldCA+PSAwICYmIHZlcnRpY2FsVGFyZ2V0IDw9IHNj
cm9sbFZpZXcuY29udGVudFNpemUuaGVpZ2h0KQogICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9m
ZnNldC0+eSA9IHBvdGVudGlhbFNuYXBQb3NpdGlvbjsKQEAgLTI4MCw5ICsyODIsOSBAQCB2b2lk
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJD
aGlsZHJlbihjb25zdCBTY3JvbAogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICAv
LyBGSVhNRTogSWYgb25seSBvbmUgYXhpcyBzbmFwcyBpbiAyRCBzY3JvbGxpbmcsIHRoZSBvdGhl
ciBheGlzIHdpbGwgZGVjZWxlcmF0ZSBmYXN0IGFzIHdlbGwuIElzIHRoaXMgd2hhdCB3ZSB3YW50
PwotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0cykgfHwgc2Nyb2xsaW5n
U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5
OjpWZXJ0aWNhbFNuYXBPZmZzZXRzKSkgeworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNuYXBPZmZzZXRz
SW5mbykpIHsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIHNj
cm9sbFZpZXcoKS5kZWNlbGVyYXRpb25SYXRlID0gc2Nyb2xsaW5nTm9kZSgpLmhvcml6b250YWxT
bmFwT2Zmc2V0cygpLnNpemUoKSB8fCBzY3JvbGxpbmdOb2RlKCkudmVydGljYWxTbmFwT2Zmc2V0
cygpLnNpemUoKSA/IFVJU2Nyb2xsVmlld0RlY2VsZXJhdGlvblJhdGVGYXN0IDogVUlTY3JvbGxW
aWV3RGVjZWxlcmF0aW9uUmF0ZU5vcm1hbDsKKyAgICAgICAgc2Nyb2xsVmlldygpLmRlY2VsZXJh
dGlvblJhdGUgPSBzY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkuaG9yaXpvbnRhbFNu
YXBPZmZzZXRzLnNpemUoKSB8fCBzY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkudmVy
dGljYWxTbmFwT2Zmc2V0cy5zaXplKCkgPyBVSVNjcm9sbFZpZXdEZWNlbGVyYXRpb25SYXRlRmFz
dCA6IFVJU2Nyb2xsVmlld0RlY2VsZXJhdGlvblJhdGVOb3JtYWw7CiAgICAgICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKICAgICB9CiAjZW5kaWYK
</data>
<flag name="commit-queue"
          id="436217"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418290</attachid>
            <date>2021-01-25 07:25:25 -0800</date>
            <delta_ts>2021-01-26 06:17:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220915-20210125162523.patch</filename>
            <type>text/plain</type>
            <size>46447</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4YjU5NTdmYjgxNTc5
ZTg2ZGRhYzcyMTVjOTMwM2NjZTUxMTAzZS4uYzBmYTU2YjIwMjRiZDk3ZTI4NDU2Zjg4ZWQ5MWJl
OWRjMTFkYWNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTAxLTI1ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgU2Nyb2xs
U25hcE9mZnNldHNJbmZvIGluIHRoZSBzY3JvbGxpbmcgdHJlZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTE1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHNob3VsZCBu
b3QgY2hhbmdlIGJlaGF2aW9yLgorCisgICAgICAgIFVzZSBTY3JvbGxTbmFwT2Zmc2V0cyBtb3Jl
IG9mdGVuIGluIHRoZSBzY3JvbGxpbmcgdHJlZSB0byBjb250aW51ZSB0bworICAgICAgICBhYnN0
cmFjdCBhd2F5IHRoZSBkZXRhaWxzIG9mIGhvdyBzbmFwIG9mZnNldHMgYXJlIGltcGxlbWVudGVk
LgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0Fz
RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0
U2Nyb2xsaW5nTm9kZVNjcm9sbGFibGVBcmVhR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsU25hcFByb3BlcnRpZXNXaXRo
RnJhbWVWaWV3KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6aXNFcXVhbCBj
b25zdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
YXBwbGljYWJsZVByb3BlcnRpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTbmFwT2Zmc2V0c0luZm8pOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6
dXBkYXRlRnJvbVN0YXRlTm9kZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9TY3JvbGxDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxl
cjo6dXBkYXRlU2Nyb2xsU25hcFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRy
b2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6b3RoZXJT
Y3JvbGxFdmVudEF4aXMpOiBEZWxldGVkLgorCiAyMDIxLTAxLTI1ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBOdWxsIFB0ciBEZXJlZiBAIFdl
YkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRiMDUy
NDNhMmRkZDEyMjFlZmMyMTRjMjAwOWM4MWQyZDFjZjdmMjQuLjBlMWJlYjg5YTgxMGI1YzlkOWY1
YzFhOTU1OTc5ZThlZTRhYzcwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDEt
MjUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFVz
ZSBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gaW4gdGhlIHNjcm9sbGluZyB0cmVlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5MTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgU2Nyb2xsU25hcE9mZnNl
dHMgbW9yZSBvZnRlbiBpbiB0aGUgc2Nyb2xsaW5nIHRyZWUgdG8gY29udGludWUgdG8KKyAgICAg
ICAgYWJzdHJhY3QgYXdheSB0aGUgZGV0YWlscyBvZiBob3cgc25hcCBvZmZzZXRzIGFyZSBpbXBs
ZW1lbnRlZC4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChBcmd1bWVudENvZGVyPFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmVuY29kZSk6CisgICAgICAgIChBcmd1bWVudENv
ZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29kZSk6CisgICAgICAgIChBcmd1
bWVudENvZGVyPFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4+OjplbmNvZGUpOgorICAgICAg
ICAoQXJndW1lbnRDb2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYktpdDo6ZHVtcCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6c2hvdWxkU25hcEZvck1h
aW5GcmFtZVNjcm9sbGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5n
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eTo6aGFzQWN0aXZlU25hcFBvaW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6bmVhcmVzdEFjdGl2ZUNvbnRlbnRJbnNldEFkanVzdGVk
U25hcE9mZnNldCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToKKyAgICAgICAgKC1b
V0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmlld0RlbGVnYXRlIHNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dp
bmc6d2l0aFZlbG9jaXR5OnRhcmdldENvbnRlbnRPZmZzZXQ6XSk6CisgICAgICAgIChXZWJLaXQ6
OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJD
aGlsZHJlbik6CisKIDIwMjEtMDEtMjQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzJdIHRoZXZlcmdlLmNvbSAtIHJ1YmJlciBiYW5kIHNj
cm9sbGluZyBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlIGNhdXNlcyBhbiBhYnJ1cHQganVtcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcAppbmRleCBlZDU2YmI2NzA0NzFmYmU3YjZkMmZhMGUxMmQzOGVjODc3
ZmM4NTM3Li5lYWQ0ZjllNzIwYjIwMWE5ZTNjNWIwN2MwYTBhYmM2MjYxMGM3OTllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcApAQCAtOTIsMzEgKzkyLDMzIEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQs
IFBsCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi1zdGF0aWMgaW5saW5l
IHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Piogb2Zmc2V0SW5mbywgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9m
ZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgY29uc3QgU2Ny
b2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+KiBvZmZzZXRJbmZvLCBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcikKIHsKKyAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IGZsb2F0SW5m
bzsKKwogICAgIC8vIEZJWE1FOiBJbmNvcnBvcmF0ZSBjdXJyZW50IHBhZ2Ugc2NhbGUgZmFjdG9y
IGluIHNuYXBwaW5nIHRvIGRldmljZSBwaXhlbC4gUGVyaGFwcyB3ZSBzaG91bGQganVzdCBjb252
ZXJ0IHRvIGZsb2F0IGhlcmUgYW5kIGxldCBVSSBwcm9jZXNzIGRvIHRoZSBwaXhlbCBzbmFwcGlu
Zz8KLSAgICBWZWN0b3I8ZmxvYXQ+IHNuYXBPZmZzZXRzQXNGbG9hdDsKICAgICBpZiAob2Zmc2V0
SW5mbykgewotICAgICAgICBjb25zdCBhdXRvJiBvZmZzZXRzID0gb2Zmc2V0SW5mby0+b2Zmc2V0
c0ZvckF4aXMoYXhpcyk7Ci0gICAgICAgIHNuYXBPZmZzZXRzQXNGbG9hdC5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KG9mZnNldHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBvZmZzZXQgOiBv
ZmZzZXRzKQotICAgICAgICAgICAgc25hcE9mZnNldHNBc0Zsb2F0LnVuY2hlY2tlZEFwcGVuZChy
b3VuZFRvRGV2aWNlUGl4ZWwob2Zmc2V0LCBkZXZpY2VTY2FsZUZhY3RvciwgZmFsc2UpKTsKKyAg
ICAgICAgYXV0byBjb252ZXJ0T2Zmc2V0c1RvRmxvYXRzID0gW2RldmljZVNjYWxlRmFjdG9yXShj
b25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIG9mZnNldHMsIFZlY3RvcjxmbG9hdD4mIGZsb2F0T2Zm
c2V0cykKKyAgICAgICAgeworICAgICAgICAgICAgZmxvYXRPZmZzZXRzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkob2Zmc2V0cy5zaXplKCkpOworICAgICAgICAgICAgZm9yIChhdXRvJiBvZmZzZXQg
OiBvZmZzZXRzKQorICAgICAgICAgICAgICAgIGZsb2F0T2Zmc2V0cy51bmNoZWNrZWRBcHBlbmQo
cm91bmRUb0RldmljZVBpeGVsKG9mZnNldCwgZGV2aWNlU2NhbGVGYWN0b3IsIGZhbHNlKSk7Cisg
ICAgICAgIH07CisKKyAgICAgICAgYXV0byBjb252ZXJ0T2Zmc2V0UmFuZ2VzVG9GbG9hdCA9IFtk
ZXZpY2VTY2FsZUZhY3Rvcl0oY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVu
aXQ+PiYgb2Zmc2V0UmFuZ2VzLCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgZmxv
YXRPZmZzZXRSYW5nZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZsb2F0T2Zmc2V0UmFuZ2Vz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob2Zmc2V0UmFuZ2VzLnNpemUoKSk7CisgICAgICAgICAg
ICBmb3IgKGF1dG8mIHJhbmdlIDogb2Zmc2V0UmFuZ2VzKQorICAgICAgICAgICAgICAgIGZsb2F0
T2Zmc2V0UmFuZ2VzLnVuY2hlY2tlZEFwcGVuZCh7IHJvdW5kVG9EZXZpY2VQaXhlbChyYW5nZS5z
dGFydCwgZGV2aWNlU2NhbGVGYWN0b3IsIGZhbHNlKSwgcm91bmRUb0RldmljZVBpeGVsKHJhbmdl
LmVuZCwgZGV2aWNlU2NhbGVGYWN0b3IsIGZhbHNlKSB9KTsKKyAgICAgICAgfTsKKworICAgICAg
ICBjb252ZXJ0T2Zmc2V0c1RvRmxvYXRzKG9mZnNldEluZm8tPmhvcml6b250YWxTbmFwT2Zmc2V0
cywgZmxvYXRJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cyk7CisgICAgICAgIGNvbnZlcnRPZmZz
ZXRzVG9GbG9hdHMob2Zmc2V0SW5mby0+dmVydGljYWxTbmFwT2Zmc2V0cywgZmxvYXRJbmZvLnZl
cnRpY2FsU25hcE9mZnNldHMpOworICAgICAgICBjb252ZXJ0T2Zmc2V0UmFuZ2VzVG9GbG9hdChv
ZmZzZXRJbmZvLT5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcywgZmxvYXRJbmZvLmhvcml6b250
YWxTbmFwT2Zmc2V0UmFuZ2VzKTsKKyAgICAgICAgY29udmVydE9mZnNldFJhbmdlc1RvRmxvYXQo
b2Zmc2V0SW5mby0+dmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCBmbG9hdEluZm8udmVydGljYWxT
bmFwT2Zmc2V0UmFuZ2VzKTsKICAgICB9CiAKLSAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8
ZmxvYXQ+PiBzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdDsKLSAgICBpZiAob2Zmc2V0SW5mbykgewot
ICAgICAgICBjb25zdCBhdXRvJiBzbmFwT2Zmc2V0UmFuZ2VzID0gb2Zmc2V0SW5mby0+b2Zmc2V0
UmFuZ2VzRm9yQXhpcyhheGlzKTsKLSAgICAgICAgc25hcE9mZnNldFJhbmdlc0FzRmxvYXQucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShzbmFwT2Zmc2V0UmFuZ2VzLnNpemUoKSk7Ci0gICAgICAgIGZv
ciAoYXV0byYgcmFuZ2UgOiBzbmFwT2Zmc2V0UmFuZ2VzKQotICAgICAgICAgICAgc25hcE9mZnNl
dFJhbmdlc0FzRmxvYXQudW5jaGVja2VkQXBwZW5kKHsgcm91bmRUb0RldmljZVBpeGVsKHJhbmdl
LnN0YXJ0LCBkZXZpY2VTY2FsZUZhY3RvciwgZmFsc2UpLCByb3VuZFRvRGV2aWNlUGl4ZWwocmFu
Z2UuZW5kLCBkZXZpY2VTY2FsZUZhY3RvciwgZmFsc2UpIH0pOwotICAgIH0KLSAgICBpZiAoYXhp
cyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpIHsKLSAgICAgICAgbm9kZS5zZXRIb3Jp
em9udGFsU25hcE9mZnNldHMoc25hcE9mZnNldHNBc0Zsb2F0KTsKLSAgICAgICAgbm9kZS5zZXRI
b3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyhzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdCk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgbm9kZS5zZXRWZXJ0aWNhbFNuYXBPZmZzZXRzKHNuYXBPZmZzZXRz
QXNGbG9hdCk7Ci0gICAgICAgIG5vZGUuc2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKHNuYXBP
ZmZzZXRSYW5nZXNBc0Zsb2F0KTsKLSAgICB9CisgICAgbm9kZS5zZXRTbmFwT2Zmc2V0c0luZm8o
ZmxvYXRJbmZvKTsKIH0KICNlbmRpZgogCkBAIC03MTQsOCArNzE2LDcgQEAgdm9pZCBBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxpbmdOb2RlU2Nyb2xsYWJsZUFyZWFHZW9tZXRy
eShTY3JvbGxpbmcKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgc2Nyb2xsYWJs
ZUFyZWEudXBkYXRlU25hcE9mZnNldHMoKTsKLSAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFw
T2Zmc2V0c0FzRmxvYXQoc2Nyb2xsaW5nTm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFs
LCBzY3JvbGxhYmxlQXJlYS5zbmFwT2Zmc2V0SW5mbygpLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFj
dG9yKCkpOwotICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdChzY3Jv
bGxpbmdOb2RlLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCAgc2Nyb2xsYWJsZUFyZWEuc25h
cE9mZnNldEluZm8oKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBzZXRTdGF0
ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoc2Nyb2xsaW5nTm9kZSwgc2Nyb2xsYWJs
ZUFyZWEuc25hcE9mZnNldEluZm8oKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAg
ICBzY3JvbGxpbmdOb2RlLnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoc2Nyb2xs
YWJsZUFyZWEuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpKTsKICAgICBzY3JvbGxp
bmdOb2RlLnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KHNjcm9sbGFibGVBcmVhLmN1
cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpOwogI2VuZGlmCkBAIC05MDksOCArOTEwLDcg
QEAgYm9vbCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjppc1Njcm9sbFNuYXBJblByb2dyZXNz
KFNjcm9sbGluZ05vZGVJRCBub2RlSUQpIGMKIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6dXBkYXRlU2Nyb2xsU25hcFByb3BlcnRpZXNXaXRoRnJhbWVWaWV3KGNvbnN0IEZyYW1lVmll
dyYgZnJhbWVWaWV3KQogewogICAgIGlmIChhdXRvIG5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZv
cklEKGZyYW1lVmlldy5zY3JvbGxpbmdOb2RlSUQoKSkpKSB7Ci0gICAgICAgIHNldFN0YXRlU2Ny
b2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jp
em9udGFsLCBmcmFtZVZpZXcuc25hcE9mZnNldEluZm8oKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZh
Y3RvcigpKTsKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0
KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBmcmFtZVZpZXcuc25hcE9mZnNldElu
Zm8oKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgc2V0U3RhdGVTY3Jv
bGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBmcmFtZVZpZXcuc25hcE9mZnNldElu
Zm8oKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICAgICAgbm9kZS0+c2V0Q3Vy
cmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleChmcmFtZVZpZXcuY3VycmVudEhvcml6b250YWxT
bmFwUG9pbnRJbmRleCgpKTsKICAgICAgICAgbm9kZS0+c2V0Q3VycmVudFZlcnRpY2FsU25hcFBv
aW50SW5kZXgoZnJhbWVWaWV3LmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBP
ZmZzZXRzSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9m
ZnNldHNJbmZvLmgKaW5kZXggNDhkNzliZmFiMDlmMGIzMTkwYzMzMWI4NGUxZjFlYTM3MGZhZTAy
Ny4uN2NlM2I1YjY1NWMzMmU3NmUwMDUzNjg1ZDllNDgyOGZmOTM0MjZmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgK
QEAgLTU5LDYgKzU5LDExIEBAIHN0cnVjdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gewogICAgIFZl
Y3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxUPj4gaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXM7CiAg
ICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPFQ+PiB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXM7
CiAKKyAgICBib29sIGlzRXF1YWwoY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPFQ+JiBvdGhl
cikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBob3Jpem9udGFsU25hcE9mZnNldHMgPT0g
b3RoZXIuaG9yaXpvbnRhbFNuYXBPZmZzZXRzICYmIHZlcnRpY2FsU25hcE9mZnNldHMgPT0gb3Ro
ZXIudmVydGljYWxTbmFwT2Zmc2V0cyAmJiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyA9PSBv
dGhlci5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyAmJiB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5n
ZXMgPT0gb3RoZXIudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzOworICAgIH0KKwogICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaG9yaXpvbnRhbFNuYXBPZmZz
ZXRzLmlzRW1wdHkoKSAmJiB2ZXJ0aWNhbFNuYXBPZmZzZXRzLmlzRW1wdHkoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmgKaW5kZXgg
YjNkNTUwYzJlNzM3NzBiZWNjNzI1MjNkMTVjOTI1ZWY1NmQ2OTNkNy4uMzdjMmRhYWNmMDRiZGY2
YmM1Njc0MDhlNTUxZDljMzNiNjM2YzBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmgKQEAgLTIzMCw0NyArMjMwLDQ0IEBAIHB1
YmxpYzoKICAgICAgICAgU2Nyb2xsYWJsZUFyZWFQYXJhbXMgICAgICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgPDwgNywKICAgICAgICAgUmVhc29uc0ZvclN5bmNocm9ub3VzU2Nyb2xsaW5nICAg
ICAgICAgICAgICA9IDFMTFUgPDwgOCwKICAgICAgICAgUmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24g
ICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgOSwKLSAgICAgICAgSG9yaXpvbnRhbFNuYXBP
ZmZzZXRzICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTAsCi0gICAgICAgIFZlcnRp
Y2FsU25hcE9mZnNldHMgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDExLAotICAg
ICAgICBIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyAgICAgICAgICAgICAgICAgID0gMUxMVSA8
PCAxMiwKLSAgICAgICAgVmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgPDwgMTMsCi0gICAgICAgIEN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4
ICAgICAgICAgICAgPSAxTExVIDw8IDE0LAotICAgICAgICBDdXJyZW50VmVydGljYWxTbmFwT2Zm
c2V0SW5kZXggICAgICAgICAgICAgID0gMUxMVSA8PCAxNSwKLSAgICAgICAgSXNNb25pdG9yaW5n
V2hlZWxFdmVudHMgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTYsCi0gICAgICAgIFNj
cm9sbENvbnRhaW5lckxheWVyICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDE3LAot
ICAgICAgICBTY3JvbGxlZENvbnRlbnRzTGF5ZXIgICAgICAgICAgICAgICAgICAgICAgID0gMUxM
VSA8PCAxOCwKLSAgICAgICAgSG9yaXpvbnRhbFNjcm9sbGJhckxheWVyICAgICAgICAgICAgICAg
ICAgICA9IDFMTFUgPDwgMTksCi0gICAgICAgIFZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIgICAgICAg
ICAgICAgICAgICAgICAgPSAxTExVIDw8IDIwLAotICAgICAgICBQYWludGVyRm9yU2Nyb2xsYmFy
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyMSwKKyAgICAgICAgU25hcE9mZnNl
dHNJbmZvICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTAsCisgICAgICAg
IEN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4ICAgICAgICAgICAgPSAxTExVIDw8IDEx
LAorICAgICAgICBDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXggICAgICAgICAgICAgID0g
MUxMVSA8PCAxMiwKKyAgICAgICAgSXNNb25pdG9yaW5nV2hlZWxFdmVudHMgICAgICAgICAgICAg
ICAgICAgICA9IDFMTFUgPDwgMTMsCisgICAgICAgIFNjcm9sbENvbnRhaW5lckxheWVyICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDE0LAorICAgICAgICBTY3JvbGxlZENvbnRlbnRz
TGF5ZXIgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxNSwKKyAgICAgICAgSG9yaXpv
bnRhbFNjcm9sbGJhckxheWVyICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTYsCisgICAg
ICAgIFZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8
IDE3LAorICAgICAgICBQYWludGVyRm9yU2Nyb2xsYmFyICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMUxMVSA8PCAxOCwKICAgICAgICAgLy8gU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05v
ZGUKLSAgICAgICAgRnJhbWVTY2FsZUZhY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IDFMTFUgPDwgMjIsCi0gICAgICAgIEV2ZW50VHJhY2tpbmdSZWdpb24gICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxTExVIDw8IDIzLAotICAgICAgICBSb290Q29udGVudHNMYXllciAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyNCwKLSAgICAgICAgQ291bnRlclNjcm9sbGlu
Z0xheWVyICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjUsCi0gICAgICAgIEluc2V0
Q2xpcExheWVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDI2LAotICAg
ICAgICBDb250ZW50U2hhZG93TGF5ZXIgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8
PCAyNywKLSAgICAgICAgSGVhZGVySGVpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgPDwgMjgsCi0gICAgICAgIEZvb3RlckhlaWdodCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAxTExVIDw8IDI5LAotICAgICAgICBIZWFkZXJMYXllciAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAzMCwKLSAgICAgICAgRm9vdGVyTGF5ZXIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMzEsCi0gICAgICAgIEJl
aGF2aW9yRm9yRml4ZWRFbGVtZW50cyAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDMyLAot
ICAgICAgICBUb3BDb250ZW50SW5zZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxM
VSA8PCAzMywKLSAgICAgICAgRml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSAgICAg
ICAgICA9IDFMTFUgPDwgMzQsCi0gICAgICAgIFZpc3VhbFZpZXdwb3J0SXNTbWFsbGVyVGhhbkxh
eW91dFZpZXdwb3J0ICAgPSAxTExVIDw8IDM1LAotICAgICAgICBBc3luY0ZyYW1lT3JPdmVyZmxv
d1Njcm9sbGluZ0VuYWJsZWQgICAgICAgID0gMUxMVSA8PCAzNiwKLSAgICAgICAgV2hlZWxFdmVu
dEdlc3R1cmVzQmVjb21lTm9uQmxvY2tpbmcgICAgICAgICA9IDFMTFUgPDwgMzcsCi0gICAgICAg
IFNjcm9sbGluZ1BlcmZvcm1hbmNlVGVzdGluZ0VuYWJsZWQgICAgICAgICAgPSAxTExVIDw8IDM4
LAotICAgICAgICBMYXlvdXRWaWV3cG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
MUxMVSA8PCAzOSwKLSAgICAgICAgTWluTGF5b3V0Vmlld3BvcnRPcmlnaW4gICAgICAgICAgICAg
ICAgICAgICA9IDFMTFUgPDwgNDAsCi0gICAgICAgIE1heExheW91dFZpZXdwb3J0T3JpZ2luICAg
ICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDQxLAotICAgICAgICBPdmVycmlkZVZpc3VhbFZp
ZXdwb3J0U2l6ZSAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCA0MiwKKyAgICAgICAgRnJhbWVT
Y2FsZUZhY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTksCisgICAg
ICAgIEV2ZW50VHJhY2tpbmdSZWdpb24gICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8
IDIwLAorICAgICAgICBSb290Q29udGVudHNMYXllciAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMUxMVSA8PCAyMSwKKyAgICAgICAgQ291bnRlclNjcm9sbGluZ0xheWVyICAgICAgICAgICAg
ICAgICAgICAgICA9IDFMTFUgPDwgMjIsCisgICAgICAgIEluc2V0Q2xpcExheWVyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDIzLAorICAgICAgICBDb250ZW50U2hhZG93
TGF5ZXIgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyNCwKKyAgICAgICAgSGVh
ZGVySGVpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjUsCisg
ICAgICAgIEZvb3RlckhlaWdodCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExV
IDw8IDI2LAorICAgICAgICBIZWFkZXJMYXllciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMUxMVSA8PCAyNywKKyAgICAgICAgRm9vdGVyTGF5ZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDFMTFUgPDwgMjgsCisgICAgICAgIEJlaGF2aW9yRm9yRml4ZWRFbGVt
ZW50cyAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDI5LAorICAgICAgICBUb3BDb250ZW50
SW5zZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAzMCwKKyAgICAgICAg
Rml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSAgICAgICAgICA9IDFMTFUgPDwgMzEs
CisgICAgICAgIFZpc3VhbFZpZXdwb3J0SXNTbWFsbGVyVGhhbkxheW91dFZpZXdwb3J0ICAgPSAx
TExVIDw8IDMyLAorICAgICAgICBBc3luY0ZyYW1lT3JPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQg
ICAgICAgID0gMUxMVSA8PCAzMywKKyAgICAgICAgV2hlZWxFdmVudEdlc3R1cmVzQmVjb21lTm9u
QmxvY2tpbmcgICAgICAgICA9IDFMTFUgPDwgMzQsCisgICAgICAgIFNjcm9sbGluZ1BlcmZvcm1h
bmNlVGVzdGluZ0VuYWJsZWQgICAgICAgICAgPSAxTExVIDw8IDM1LAorICAgICAgICBMYXlvdXRW
aWV3cG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAzNiwKKyAgICAg
ICAgTWluTGF5b3V0Vmlld3BvcnRPcmlnaW4gICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwg
MzcsCisgICAgICAgIE1heExheW91dFZpZXdwb3J0T3JpZ2luICAgICAgICAgICAgICAgICAgICAg
PSAxTExVIDw8IDM4LAorICAgICAgICBPdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZSAgICAgICAg
ICAgICAgICAgID0gMUxMVSA8PCAzOSwKICAgICAgICAgLy8gU2Nyb2xsaW5nU3RhdGVQb3NpdGlv
bmVkTm9kZQotICAgICAgICBSZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2RlcyAgICAgICAgICAg
ICAgID0gMUxMVSA8PCA0MywKLSAgICAgICAgTGF5b3V0Q29uc3RyYWludERhdGEgICAgICAgICAg
ICAgICAgICAgICAgICA9IDFMTFUgPDwgNDQsCisgICAgICAgIFJlbGF0ZWRPdmVyZmxvd1Njcm9s
bGluZ05vZGVzICAgICAgICAgICAgICAgPSAxTExVIDw8IDQwLAorICAgICAgICBMYXlvdXRDb25z
dHJhaW50RGF0YSAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCA0MSwKICAgICAgICAg
Ly8gU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUsIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZQotICAg
ICAgICBWaWV3cG9ydENvbnN0cmFpbnRzICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8
PCA0NSwKKyAgICAgICAgVmlld3BvcnRDb25zdHJhaW50cyAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgPDwgNDIsCiAgICAgICAgIC8vIFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxQ
cm94eU5vZGUKLSAgICAgICAgT3ZlcmZsb3dTY3JvbGxpbmdOb2RlICAgICAgICAgICAgICAgICAg
ICAgICA9IDFMTFUgPDwgNDYsCisgICAgICAgIE92ZXJmbG93U2Nyb2xsaW5nTm9kZSAgICAgICAg
ICAgICAgICAgICAgICAgPSAxTExVIDw8IDQzLAogICAgIH07CiAgICAgCiAgICAgYm9vbCBoYXND
aGFuZ2VkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuICFtX2NoYW5nZWRQcm9wZXJ0aWVzLmlz
RW1wdHkoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggMmQ2ODZkZWU2MzYwOTRm
YjI4OWY3NzZkMzEwMGZiODdiNzVkYjEzNi4uZjQwODE5YWZlM2NlZmQzNDgxODA2ZjQxNzk5ZTkw
NTk4NzVmODBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC05NCwxMCArOTQsNyBA
QCBPcHRpb25TZXQ8U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eT4gU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjphcHBsaWNhYmxlUAogICAgICAgICBQcm9wZXJ0eTo6UmVhc29uc0ZvclN5
bmNocm9ub3VzU2Nyb2xsaW5nLAogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkK
LSAgICAgICAgUHJvcGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0cywKLSAgICAgICAgUHJvcGVy
dHk6OlZlcnRpY2FsU25hcE9mZnNldHMsCi0gICAgICAgIFByb3BlcnR5OjpIb3Jpem9udGFsU25h
cE9mZnNldFJhbmdlcywKLSAgICAgICAgUHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldFJhbmdl
cywKKyAgICAgICAgUHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbywKICAgICAgICAgUHJvcGVydHk6
OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4LAogICAgICAgICBQcm9wZXJ0eTo6Q3Vy
cmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4LAogICAgICAgICBQcm9wZXJ0eTo6SXNNb25pdG9y
aW5nV2hlZWxFdmVudHMsCkBAIC0xNjAsNDAgKzE1NywxMyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50JiBzY3JvbGxPcmln
aW4pCiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotdm9pZCBTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OnNldEhvcml6b250YWxTbmFwT2Zmc2V0cyhjb25zdCBWZWN0b3I8Zmxv
YXQ+JiBzbmFwT2Zmc2V0cykKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRT
bmFwT2Zmc2V0c0luZm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgaW5mbykK
IHsKLSAgICBpZiAobV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzID09IHNu
YXBPZmZzZXRzKQorICAgIGlmIChtX3NuYXBPZmZzZXRzSW5mby5pc0VxdWFsKGluZm8pKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNl
dHMgPSBzbmFwT2Zmc2V0czsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6Okhvcml6
b250YWxTbmFwT2Zmc2V0cyk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpzZXRWZXJ0aWNhbFNuYXBPZmZzZXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRz
KQotewotICAgIGlmIChtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzID09IHNu
YXBPZmZzZXRzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0
aWNhbFNuYXBPZmZzZXRzID0gc25hcE9mZnNldHM7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKFBy
b3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRzKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OnNldEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKGNvbnN0IFZlY3RvcjxT
Y3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBzY3JvbGxPZmZzZXRSYW5nZXMpCi17Ci0gICAgaWYg
KG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzID09IHNjcm9sbE9m
ZnNldFJhbmdlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zbmFwT2Zmc2V0c0luZm8uaG9y
aXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMgPSBzY3JvbGxPZmZzZXRSYW5nZXM7Ci0gICAgc2V0UHJv
cGVydHlDaGFuZ2VkKFByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyk7Ci19Ci0K
LXZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRWZXJ0aWNhbFNuYXBPZmZzZXRS
YW5nZXMoY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIHNjcm9sbE9mZnNl
dFJhbmdlcykKLXsKLSAgICBpZiAobV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0
UmFuZ2VzID09IHNjcm9sbE9mZnNldFJhbmdlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9z
bmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzID0gc2Nyb2xsT2Zmc2V0UmFu
Z2VzOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0
UmFuZ2VzKTsKKyAgICBtX3NuYXBPZmZzZXRzSW5mbyA9IGluZm87CisgICAgc2V0UHJvcGVydHlD
aGFuZ2VkKFByb3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8pOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6c2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCh1bnNp
Z25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKaW5kZXggNDA5YWU5ZDlhZTY3OTAzZWY2
YmFhMjlmNWJkMjc0ZTRjM2RiMTQ1ZS4uYmQ0ZTk3YjljNWVmZGY5MTI5ZGVmOGI2YmIyMzBkMzdi
NDE2NDA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKQEAgLTcxLDE3ICs3MSw4IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcm9sbE9yaWdpbihjb25zdCBJbnRQb2lu
dCYpOwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBjb25zdCBWZWN0b3I8Zmxv
YXQ+JiBob3Jpem9udGFsU25hcE9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRz
SW5mby5ob3Jpem9udGFsU25hcE9mZnNldHM7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEhvcml6b250YWxTbmFwT2Zmc2V0cyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7Ci0KLSAgICBjb25z
dCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNhbFNuYXBPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9z
bmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0czsgfQotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0VmVydGljYWxTbmFwT2Zmc2V0cyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7Ci0KLSAg
ICBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgaG9yaXpvbnRhbFNuYXBP
ZmZzZXRSYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFs
U25hcE9mZnNldFJhbmdlczsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SG9yaXpvbnRh
bFNuYXBPZmZzZXRSYW5nZXMoY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4m
KTsKLQotICAgIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiB2ZXJ0aWNh
bFNuYXBPZmZzZXRSYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXM7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZlcnRp
Y2FsU25hcE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+
PiYpOworICAgIGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIHNuYXBPZmZzZXRz
SW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvOyB9CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRTbmFwT2Zmc2V0c0luZm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZv
PGZsb2F0PiYgbmV3T2Zmc2V0c0luZm8pOwogCiAgICAgdW5zaWduZWQgY3VycmVudEhvcml6b250
YWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEhvcml6b250YWxTbmFw
UG9pbnRJbmRleDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3VycmVudEhvcml6b250
YWxTbmFwUG9pbnRJbmRleCh1bnNpZ25lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXgg
OTBiNTBjMjIxMTMzZWE0MzZlODYxZmVlZThlODc1MTNjYjUyM2JiMy4uMTMwZTczZWRiYzI4YzA4
Mjg4MzFhNThjMjJmM2M1MWNlNjdkMTBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAt
NzUsMTcgKzc1LDggQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y29tbWl0U3Rh
dGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU4KICAgICAgICAgbV9zY3JvbGxP
cmlnaW4gPSBzdGF0ZS5zY3JvbGxPcmlnaW4oKTsKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCi0gICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldHMpKQotICAgICAgICBtX3NuYXBPZmZzZXRz
SW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMgPSBzdGF0ZS5ob3Jpem9udGFsU25hcE9mZnNldHMo
KTsKLQotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0cykpCi0gICAgICAgIG1fc25hcE9mZnNldHNJ
bmZvLnZlcnRpY2FsU25hcE9mZnNldHMgPSBzdGF0ZS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCk7Ci0K
LSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKSkKLSAgICAgICAgbV9zbmFwT2Zmc2V0
c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMgPSBzdGF0ZS5ob3Jpem9udGFsU25hcE9m
ZnNldFJhbmdlcygpOwotCi0gICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpKQotICAgICAg
ICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPSBzdGF0ZS52ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXMoKTsKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbykpCisgICAgICAg
IG1fc25hcE9mZnNldHNJbmZvID0gc3RhdGUuc25hcE9mZnNldHNJbmZvKCk7CiAKICAgICBpZiAo
c3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1
cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4KSkKICAgICAgICAgbV9jdXJyZW50SG9yaXpv
bnRhbFNuYXBQb2ludEluZGV4ID0gc3RhdGUuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRl
eCgpOwpAQCAtMzM1LDYgKzMyNiwxMyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
OjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVUcgogI2VuZGlm
CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQorY29uc3QgU2Nyb2xsU25hcE9mZnNl
dHNJbmZvPGZsb2F0PiYgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNuYXBPZmZzZXRzSW5m
bygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvOworfQorI2VuZGlmCisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJ
TkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuaAppbmRleCA4NjJjMWIzZGJlMGUyM2UxNjlmYTUyY2FhNDYy
ZmVmZGYxNGRlODE4Li5iZTQ5ZDBiMTI1ZjAxYjcxZWQ2ZDhiY2FlNGY2ZTI3NzUwYzM4NGI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlLmgKQEAgLTk1LDEwICs5NSw3IEBAIHB1YmxpYzoKICAgICBib29s
IGNhbkhhdmVTY3JvbGxiYXJzKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnMuaG9yaXpvbnRhbFNjcm9sbGJhck1vZGUgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmIHx8IG1f
c2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZSAhPSBTY3JvbGxi
YXJBbHdheXNPZmY7IH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgY29uc3Qg
VmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9z
bmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzOyB9Ci0gICAgY29uc3QgVmVjdG9y
PGZsb2F0PiYgdmVydGljYWxTbmFwT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNl
dHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldHM7IH0KLSAgICBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zm
c2V0UmFuZ2U8ZmxvYXQ+PiYgaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSBjb25zdCB7IHJl
dHVybiBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsgfQotICAg
IGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiB2ZXJ0aWNhbFNuYXBPZmZz
ZXRSYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBP
ZmZzZXRSYW5nZXM7IH0KKyAgICBjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBz
bmFwT2Zmc2V0c0luZm8oKSBjb25zdDsKICAgICB1bnNpZ25lZCBjdXJyZW50SG9yaXpvbnRhbFNu
YXBQb2ludEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2lu
dEluZGV4OyB9CiAgICAgdW5zaWduZWQgY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSBj
b25zdCB7IHJldHVybiBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4OyB9CiAgICAgdm9p
ZCBzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1f
Y3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCA9IGluZGV4OyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAppbmRleCAzMmE4MzhlYjZmM2RhNDM5
ODNiY2ZmNTViN2NjNDE4MTU1NzM0ZTlmLi45YTExYjZhMWY1ZGQ2NjM5YzFiZTdhZWRjZWJjMzA0
OGYyYmRlNjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjLmgKQEAgLTU1LDggKzU1LDYgQEAgcHVibGljOgogICAgIHZvaWQgY3VycmVudFNjcm9sbFBv
c2l0aW9uQ2hhbmdlZCgpOwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICB2b2lk
IHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzLCBjb25zdCBWZWN0b3I8TGF5
b3V0VW5pdD4mLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+Jik7
Ci0gICAgdm9pZCBzZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhp
cywgdW5zaWduZWQpOwogICAgIGJvb2wgYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlKCkg
Y29uc3Q7CiAgICAgdW5zaWduZWQgYWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxF
dmVudEF4aXMpIGNvbnN0OwogICAgIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQppbmRl
eCA3NDBhMzMzYWYxN2IwZWJhMzRiZmVmYWIwYTM1YWExZWI5Y2Q3ZWQwLi4xNjZiZThhMGY4ZWFk
NGYxYzc0NmRhODA0MzY2MWUwZTlmZmQyOGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQpAQCAtNzUsNiArNzUsMTYgQEAgc3RhdGljIGlubGlu
ZSBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+IGNvbnZlcnRUb0xheW91dFVu
aXRzKGNvbnN0IFYKIAogICAgIHJldHVybiBzbmFwT2Zmc2V0UmFuZ2VzOwogfQorCitzdGF0aWMg
aW5saW5lIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiBjb252ZXJ0VG9MYXlvdXRV
bml0cyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBzbmFwT2Zmc2V0c0luZm9B
c0Zsb2F0KQoreworICAgIHJldHVybiB7CisgICAgICAgIGNvbnZlcnRUb0xheW91dFVuaXRzKHNu
YXBPZmZzZXRzSW5mb0FzRmxvYXQuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKSwKKyAgICAgICAgY29u
dmVydFRvTGF5b3V0VW5pdHMoc25hcE9mZnNldHNJbmZvQXNGbG9hdC52ZXJ0aWNhbFNuYXBPZmZz
ZXRzKSwKKyAgICAgICAgY29udmVydFRvTGF5b3V0VW5pdHMoc25hcE9mZnNldHNJbmZvQXNGbG9h
dC5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyksCisgICAgICAgIGNvbnZlcnRUb0xheW91dFVu
aXRzKHNuYXBPZmZzZXRzSW5mb0FzRmxvYXQudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKQorICAg
IH07Cit9CiAjZW5kaWYKIAogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjOjp1cGRhdGVGcm9tU3RhdGVOb2RlKGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZSYgc2Nyb2xsaW5nU3RhdGVOb2RlKQpAQCAtODYsMzAgKzk2LDE3IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dXBkYXRlRnJvbVN0YXRlTm9kZShjb25zdCBT
Y3JvbGxpbmdTCiAgICAgfQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldHMpIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRh
bFNuYXBPZmZzZXRSYW5nZXMpKQotICAgICAgICB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9s
bEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgY29udmVydFRvTGF5b3V0VW5pdHMoc2Nyb2xsaW5nU3Rh
dGVOb2RlLmhvcml6b250YWxTbmFwT2Zmc2V0cygpKSwgY29udmVydFRvTGF5b3V0VW5pdHMoc2Ny
b2xsaW5nU3RhdGVOb2RlLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCkpKTsKLQotICAgIGlm
IChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9k
ZTo6UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldHMpIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVydGljYWxT
bmFwT2Zmc2V0UmFuZ2VzKSkKLSAgICAgICAgdXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxF
dmVudEF4aXM6OlZlcnRpY2FsLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5v
ZGUudmVydGljYWxTbmFwT2Zmc2V0cygpKSwgY29udmVydFRvTGF5b3V0VW5pdHMoc2Nyb2xsaW5n
U3RhdGVOb2RlLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpKSk7CisgICAgaWYgKHNjcm9sbGlu
Z1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0
eTo6U25hcE9mZnNldHNJbmZvKSkKKyAgICAgICAgbV9zY3JvbGxDb250cm9sbGVyLnVwZGF0ZVNj
cm9sbFNuYXBQb2ludHMoY29udmVydFRvTGF5b3V0VW5pdHMoc2Nyb2xsaW5nU3RhdGVOb2RlLnNu
YXBPZmZzZXRzSW5mbygpKSk7CiAKICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRh
bFNuYXBPZmZzZXRJbmRleCkpCi0gICAgICAgIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4
aXMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBzY3JvbGxpbmdTdGF0ZU5vZGUuY3VycmVu
dEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpKTsKLSAgICAKKyAgICAgICAgbV9zY3JvbGxDb250
cm9sbGVyLnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpI
b3Jpem9udGFsLCBzY3JvbGxpbmdTdGF0ZU5vZGUuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJ
bmRleCgpKTsKKwogICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJ
bmRleCkpCi0gICAgICAgIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZl
bnRBeGlzOjpWZXJ0aWNhbCwgc2Nyb2xsaW5nU3RhdGVOb2RlLmN1cnJlbnRWZXJ0aWNhbFNuYXBQ
b2ludEluZGV4KCkpOworICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIuc2V0QWN0aXZlU2Nyb2xs
U25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBzY3JvbGxpbmdTdGF0
ZU5vZGUuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7CiAjZW5kaWYKIH0KIAotdm9p
ZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjp1cGRhdGVTY3JvbGxTbmFw
UG9pbnRzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNu
YXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBz
bmFwUmFuZ2VzKQotewotICAgIG1fc2Nyb2xsQ29udHJvbGxlci51cGRhdGVTY3JvbGxTbmFwUG9p
bnRzKGF4aXMsIHNuYXBPZmZzZXRzLCBzbmFwUmFuZ2VzKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JB
eGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCB1bnNpZ25lZCBpbmRleCkKLXsKLSAgICBtX3Njcm9s
bENvbnRyb2xsZXIuc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhheGlzLCBpbmRleCk7
Ci19Ci0KIHVuc2lnbmVkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFj
dGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fc2Nyb2xsQ29udHJvbGxlci5hY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JB
eGlzKGF4aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Ny
b2xsQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29u
dHJvbGxlci5oCmluZGV4IDczMDMyNDRmYzYwZmVmMzQzOTBhZDY0ZTI1MTlhYzVlYjIzMjE1MDUu
Ljk0NGI5ODA2ZDQ2ODYyNDAzYjE5MDQ3ZjZmZmQ3ZGE4YTQwOGU4N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgKQEAgLTE1OCw3ICsx
NTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY3JvbGxQb3NpdGlvbkNoYW5nZWQoKTsKIAogI2lm
IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgdm9pZCB1cGRhdGVTY3JvbGxTbmFwUG9pbnRz
KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiwgY29uc3QgVmVjdG9y
PFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYpOworICAgIHZvaWQgdXBkYXRlU2Nyb2xs
U25hcFBvaW50cyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mKTsKICAg
ICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzLCB1
bnNpZ25lZCk7CiAgICAgdm9pZCBzZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlc0Zvck9mZnNldChT
Y3JvbGxPZmZzZXQpOwogICAgIGJvb2wgYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlKCkg
Y29uc3QgeyByZXR1cm4gbV9hY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2U7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCmluZGV4
IGQ4MTg1YzNiNjdlOWEzZjA4MmI0MzdkYTg1YTRmMWY4NjI2OWNlNGEuLjc3MTkxNjMxMzRlOWFk
OTRjNmQ0Mjg4NjIxZGRiNzdiNjhhZDRjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAtODEsMTEgKzgxLDYgQEAgc3RhdGlj
IGZsb2F0IHNjcm9sbFdoZWVsTXVsdGlwbGllcigpCiB9CiAjZW5kaWYKIAotc3RhdGljIFNjcm9s
bEV2ZW50QXhpcyBvdGhlclNjcm9sbEV2ZW50QXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykKLXsK
LSAgICByZXR1cm4gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyBTY3JvbGxF
dmVudEF4aXM6OlZlcnRpY2FsIDogU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsOwotfQotCiBT
Y3JvbGxDb250cm9sbGVyOjpTY3JvbGxDb250cm9sbGVyKFNjcm9sbENvbnRyb2xsZXJDbGllbnQm
IGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKIHsKQEAgLTgzMSw3ICs4MjYsMTcgQEAg
dm9pZCBTY3JvbGxDb250cm9sbGVyOjpzY3JvbGxTbmFwVGltZXJGaXJlZCgpCiB2b2lkIFNjcm9s
bENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBTdGF0ZShjb25zdCBTY3JvbGxhYmxlQXJlYSYg
c2Nyb2xsYWJsZUFyZWEpCiB7CiAgICAgY29uc3QgYXV0byogc25hcE9mZnNldEluZm8gPSBzY3Jv
bGxhYmxlQXJlYS5zbmFwT2Zmc2V0SW5mbygpOwotICAgIGlmICghc25hcE9mZnNldEluZm8gfHwg
c25hcE9mZnNldEluZm8tPmlzRW1wdHkoKSkgeworICAgIGlmICghc25hcE9mZnNldEluZm8pIHsK
KyAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBudWxscHRyOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdXBkYXRlU2Nyb2xsU25hcFBvaW50cygqc25hcE9mZnNldEluZm8pOworfQor
Cit2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoY29uc3QgU2Ny
b2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBzbmFwT2Zmc2V0SW5mbykKK3sKKyAgICBp
ZiAoc25hcE9mZnNldEluZm8uaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fc2Nyb2xsU25hcFN0YXRl
ID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTg0MCwzNCArODQ1LDEyIEBA
IHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNjcm9s
bGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlCiAgICAgaWYgKCFtX3Njcm9sbFNuYXBTdGF0ZSkKICAg
ICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBtYWtlVW5pcXVlPFNjcm9sbFNuYXBBbmltYXRvclN0
YXRlPigpOwogCi0gICAgbV9zY3JvbGxTbmFwU3RhdGUtPnNldFNuYXBPZmZzZXRJbmZvKCpzbmFw
T2Zmc2V0SW5mbyk7CisgICAgbV9zY3JvbGxTbmFwU3RhdGUtPnNldFNuYXBPZmZzZXRJbmZvKHNu
YXBPZmZzZXRJbmZvKTsKIAogICAgIGlmIChzaG91bGRDb21wdXRlQ3VycmVudFNuYXBJbmRpY2Vz
KQogICAgICAgICBzZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlc0Zvck9mZnNldChyb3VuZGVkSW50
UG9pbnQobV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCkpKTsKIAotICAgIExPR19XSVRIX1NUUkVBTShT
Y3JvbGxTbmFwLCBzdHJlYW0gPDwgIlNjcm9sbENvbnRyb2xsZXIgIiA8PCB0aGlzIDw8ICIgdXBk
YXRlU2Nyb2xsU25hcFN0YXRlIGZvciAiIDw8IHNjcm9sbGFibGVBcmVhIDw8ICIgbmV3IHN0YXRl
ICIgPDwgVmFsdWVPck51bGwobV9zY3JvbGxTbmFwU3RhdGUuZ2V0KCkpKTsKLX0KLQotdm9pZCBT
Y3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpcyBh
eGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBQb2ludHMsIGNvbnN0IFZlY3RvcjxT
Y3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIHNuYXBSYW5nZXMpCi17Ci0gICAgYm9vbCBz
aG91bGRDb21wdXRlQ3VycmVudFNuYXBJbmRpY2VzID0gZmFsc2U7Ci0gICAgaWYgKCFtX3Njcm9s
bFNuYXBTdGF0ZSkgewotICAgICAgICBpZiAoc25hcFBvaW50cy5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBtYWtlVW5pcXVlPFNj
cm9sbFNuYXBBbmltYXRvclN0YXRlPigpOwotICAgICAgICBzaG91bGRDb21wdXRlQ3VycmVudFNu
YXBJbmRpY2VzID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAoc25hcFBvaW50cy5pc0VtcHR5KCkg
JiYgbV9zY3JvbGxTbmFwU3RhdGUtPnNuYXBPZmZzZXRzRm9yQXhpcyhvdGhlclNjcm9sbEV2ZW50
QXhpcyhheGlzKSkuaXNFbXB0eSgpKQotICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZSA9IG51bGxw
dHI7Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlLT5zZXRTbmFwT2Zmc2V0
c0FuZFBvc2l0aW9uUmFuZ2VzRm9yQXhpcyhheGlzLCBzbmFwUG9pbnRzLCBzbmFwUmFuZ2VzKTsK
LSAgICAgICAgaWYgKHNob3VsZENvbXB1dGVDdXJyZW50U25hcEluZGljZXMpIHsKLSAgICAgICAg
ICAgIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzRm9yT2Zmc2V0KHJvdW5kZWRJbnRQb2ludCht
X2NsaWVudC5zY3JvbGxPZmZzZXQoKSkpOwotICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNj
cm9sbFNuYXAsIHN0cmVhbSA8PCAiU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBv
aW50cyAtIGNvbXB1dGVkIGluaXRpYWwgc25hcCBpbmRpY2VzOiB4ICIgPDwgbV9zY3JvbGxTbmFw
U3RhdGUtPmFjdGl2ZVNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFs
KSA8PCAiLCB5ICIgPDwgbV9zY3JvbGxTbmFwU3RhdGUtPmFjdGl2ZVNuYXBJbmRleEZvckF4aXMo
U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCkpOwotICAgICAgICB9Ci0gICAgfQorICAgIExPR19X
SVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIlNjcm9sbENvbnRyb2xsZXIgIiA8PCB0
aGlzIDw8ICIgdXBkYXRlU2Nyb2xsU25hcFN0YXRlIG5ldyBzdGF0ZTogIiA8PCBWYWx1ZU9yTnVs
bChtX3Njcm9sbFNuYXBTdGF0ZS5nZXQoKSkpOwogfQogCiB1bnNpZ25lZCBTY3JvbGxDb250cm9s
bGVyOjphY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rp
b24uY3BwCmluZGV4IDc0ZTliODEzMGI4YTZmNWM2Mjk5YmFmYWFjZjc4ZTJiYTQ4N2VjM2IuLjU4
NTNiZjlkNGU2YzcxODc1ZGU0ZDU3ZWJkOTJmOTg0MTQ4ZGEzNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKQEAgLTk4LDYgKzk4
LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVxdWVzdGVkU2Nyb2xsRGF0
YT4gewogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYs
IFJlcXVlc3RlZFNjcm9sbERhdGEmKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8U2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pj4geworICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYpOworICAg
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFNjcm9sbFNu
YXBPZmZzZXRzSW5mbzxmbG9hdD4mKTsKK307CisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiBuYW1l
c3BhY2UgV1RGIHsKQEAgLTExNSwxMCArMTIwLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5PiB7CiAgICAgICAgIFdl
YkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbGFibGVBcmVhUGFyYW1z
LAogICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpSZWFzb25z
Rm9yU3luY2hyb25vdXNTY3JvbGxpbmcsCiAgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uLAotICAgICAgICBXZWJDb3Jl
OjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldHMsCi0g
ICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU25h
cE9mZnNldHMsCi0gICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6
Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzLAotICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsCisgICAgICAgIFdl
YkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbywKICAg
ICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudEhvcml6
b250YWxTbmFwT2Zmc2V0SW5kZXgsCiAgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9k
ZTo6UHJvcGVydHk6OkN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCwKICAgICAgICAgV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SXNNb25pdG9yaW5nV2hlZWxFdmVu
dHMsCkBAIC0yMDYsMTAgKzIwOCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QKICAgICBTQ1JP
TExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsUG9z
aXRpb24sIHNjcm9sbFBvc2l0aW9uKQogICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxPcmlnaW4sIHNjcm9sbE9yaWdpbikKICNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldHMsIGhvcml6b250YWxT
bmFwT2Zmc2V0cykKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0cywgdmVydGljYWxTbmFwT2Zmc2V0cykKLSAg
ICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9y
aXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMsIGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKQotICAg
IFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXMsIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcykKKyAgICBTQ1JP
TExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U25hcE9mZnNl
dHNJbmZvLCBzbmFwT2Zmc2V0c0luZm8pCiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4
LCBjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KQogICAgIFNDUk9MTElOR19OT0RFX0VO
Q09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50VmVydGljYWxTbmFwT2Zm
c2V0SW5kZXgsIGN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KQogI2VuZGlmCkBAIC0zMDYs
MTAgKzMwNSw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Nyb2xsCiAgICAgU0NST0xMSU5HX05PREVf
REVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbFBvc2l0aW9uLCBGbG9h
dFBvaW50LCBzZXRTY3JvbGxQb3NpdGlvbik7CiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbE9yaWdpbiwgSW50UG9pbnQsIHNldFNj
cm9sbE9yaWdpbik7CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBTQ1JPTExJTkdf
Tk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBP
ZmZzZXRzLCBWZWN0b3I8ZmxvYXQ+LCBzZXRIb3Jpem9udGFsU25hcE9mZnNldHMpOwotICAgIFND
Uk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNh
bFNuYXBPZmZzZXRzLCBWZWN0b3I8ZmxvYXQ+LCBzZXRWZXJ0aWNhbFNuYXBPZmZzZXRzKTsKLSAg
ICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9y
aXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMsIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+
LCBzZXRIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcykKLSAgICBTQ1JPTExJTkdfTk9ERV9ERUNP
REUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2Vz
LCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+Piwgc2V0VmVydGljYWxTbmFwT2Zmc2V0
UmFuZ2VzKQorICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8sIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4sIHNl
dFNuYXBPZmZzZXRzSW5mbyk7CiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0
YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4LCB1bnNp
Z25lZCwgc2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCk7CiAgICAgU0NST0xMSU5H
X05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRWZXJ0aWNh
bFNuYXBPZmZzZXRJbmRleCwgdW5zaWduZWQsIHNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludElu
ZGV4KTsKICNlbmRpZgpAQCAtNTI2LDYgKzUyMiwyNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVx
dWVzdGVkU2Nyb2xsRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXF1ZXN0ZWRTY3Jv
bAogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsU25hcE9m
ZnNldHNJbmZvPGZsb2F0Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTY3JvbGxT
bmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBpbmZvKQoreworICAgIGVuY29kZXIgPDwgaW5mby5ob3Jp
em9udGFsU25hcE9mZnNldHM7CisgICAgZW5jb2RlciA8PCBpbmZvLnZlcnRpY2FsU25hcE9mZnNl
dHM7CisgICAgZW5jb2RlciA8PCBpbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzOworICAg
IGVuY29kZXIgPDwgaW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXM7Cit9CisKK2Jvb2wgQXJn
dW1lbnRDb2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Pjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIGluZm8pCit7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShpbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8udmVydGljYWxTbmFwT2Zm
c2V0cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlu
Zm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHN0YXRpYyB2b2lkIGVuY29kZU5vZGVBbmREZXNjZW5kYW50cyhJUEM6OkVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVOb2RlLCBpbnQmIGVu
Y29kZWROb2RlQ291bnQpCkBAIC02OTYsMTcgKzcxMywxMiBAQCBzdGF0aWMgdm9pZCBkdW1wKFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIG5vZGUsIGJv
b2wgYwogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNjcm9sbGVkLWNvbnRlbnRzLWxheWVyIiwg
c3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLnNjcm9sbGVk
Q29udGVudHNMYXllcigpKSk7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGlm
ICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0cykpCi0gICAgICAg
IHRzLmR1bXBQcm9wZXJ0eSgiaG9yaXpvbnRhbCBzbmFwIG9mZnNldHMiLCBub2RlLmhvcml6b250
YWxTbmFwT2Zmc2V0cygpKTsKLQotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRp
Y2FsU25hcE9mZnNldHMpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInZlcnRpY2FsIHNuYXAg
b2Zmc2V0cyIsIG5vZGUudmVydGljYWxTbmFwT2Zmc2V0cygpKTsKLQotICAgIGlmICghY2hhbmdl
ZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4KSkKKyAgICBp
ZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8pKSB7CisgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgiaG9yaXpvbnRhbCBzbmFwIG9mZnNldHMiLCBub2RlLnNuYXBPZmZzZXRz
SW5mbygpLmhvcml6b250YWxTbmFwT2Zmc2V0cyk7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
dmVydGljYWwgc25hcCBvZmZzZXRzIiwgbm9kZS5zbmFwT2Zmc2V0c0luZm8oKS52ZXJ0aWNhbFNu
YXBPZmZzZXRzKTsKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJjdXJyZW50IGhvcml6b250YWwg
c25hcCBwb2ludCBpbmRleCIsIG5vZGUuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgp
KTsKLQotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRWZXJ0aWNhbFNuYXBP
ZmZzZXRJbmRleCkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3VycmVudCB2ZXJ0aWNhbCBz
bmFwIHBvaW50IGluZGV4Iiwgbm9kZS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpKTsK
KyAgICB9CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IDczNzJmZjI5Zjc1OWIyMDEwODc2NjU4
MWRkMTA0MThiOGI0ODM2YmMuLjFiYjA5NTA4NWQyMzZlZTQ1YjdjNzM5MGQ0ODE5ZjgzODc1Njk0
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHlJT1MubW0KQEAgLTIxMyw3ICsyMTMsNyBAQCBib29sIFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHk6OnNob3VsZFNuYXBGb3JNYWluRnJhbWVTY3JvbGxpbmcoU2Nyb2xsRXZl
bgogICAgIFNjcm9sbGluZ1RyZWVOb2RlKiByb290ID0gbV9zY3JvbGxpbmdUcmVlLT5yb290Tm9k
ZSgpOwogICAgIGlmIChyb290ICYmIHJvb3QtPmlzRnJhbWVTY3JvbGxpbmdOb2RlKCkpIHsKICAg
ICAgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSogcm9vdFNjcm9sbGluZ05vZGUg
PSBzdGF0aWNfY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKj4ocm9vdCk7Ci0g
ICAgICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzID0gYXhpcyA9PSBTY3JvbGxF
dmVudEF4aXM6Okhvcml6b250YWwgPyByb290U2Nyb2xsaW5nTm9kZS0+aG9yaXpvbnRhbFNuYXBP
ZmZzZXRzKCkgOiByb290U2Nyb2xsaW5nTm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpOworICAg
ICAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cyA9IHJvb3RTY3JvbGxpbmdOb2Rl
LT5zbmFwT2Zmc2V0c0luZm8oKS5vZmZzZXRzRm9yQXhpcyhheGlzKTsKICAgICAgICAgdW5zaWdu
ZWQgY3VycmVudEluZGV4ID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyBt
X2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggOiBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQ
b2ludEluZGV4OwogICAgICAgICByZXR1cm4gc25hcE9mZnNldHMuc2l6ZSgpICYmIChjdXJyZW50
SW5kZXggPCBzbmFwT2Zmc2V0cy5zaXplKCkgfHwgY3VycmVudEluZGV4ID09IGludmFsaWRTbmFw
T2Zmc2V0SW5kZXgpOwogICAgIH0KQEAgLTIyNSw4ICsyMjUsOCBAQCBmbG9hdCBSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9s
bGluZyhTYwogICAgIFNjcm9sbGluZ1RyZWVOb2RlKiByb290ID0gbV9zY3JvbGxpbmdUcmVlLT5y
b290Tm9kZSgpOwogICAgIEFTU0VSVChyb290ICYmIHJvb3QtPmlzRnJhbWVTY3JvbGxpbmdOb2Rl
KCkpOwogICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUqIHJvb3RTY3JvbGxpbmdO
b2RlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSo+KHJvb3Qp
OwotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzID0gYXhpcyA9PSBTY3JvbGxF
dmVudEF4aXM6Okhvcml6b250YWwgPyByb290U2Nyb2xsaW5nTm9kZS0+aG9yaXpvbnRhbFNuYXBP
ZmZzZXRzKCkgOiByb290U2Nyb2xsaW5nTm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpOwotICAg
IGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBzbmFwT2Zmc2V0UmFuZ2Vz
ID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyByb290U2Nyb2xsaW5nTm9k
ZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSA6IHJvb3RTY3JvbGxpbmdOb2RlLT52ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXMoKTsKKyAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zm
c2V0cyA9IHJvb3RTY3JvbGxpbmdOb2RlLT5zbmFwT2Zmc2V0c0luZm8oKS5vZmZzZXRzRm9yQXhp
cyhheGlzKTsKKyAgICBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgc25h
cE9mZnNldFJhbmdlcyA9IHJvb3RTY3JvbGxpbmdOb2RlLT5zbmFwT2Zmc2V0c0luZm8oKS5vZmZz
ZXRSYW5nZXNGb3JBeGlzKGF4aXMpOwogCiAgICAgZmxvYXQgc2NhbGVkU2Nyb2xsRGVzdGluYXRp
b24gPSBzY3JvbGxEZXN0aW5hdGlvbiAvIG1fd2ViUGFnZVByb3h5LmRpc3BsYXllZENvbnRlbnRT
Y2FsZSgpOwogICAgIGZsb2F0IHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0ID0gY2xvc2VzdFNuYXBPZmZz
ZXQoc25hcE9mZnNldHMsIHNuYXBPZmZzZXRSYW5nZXMsIHNjYWxlZFNjcm9sbERlc3RpbmF0aW9u
LCB2ZWxvY2l0eSwgY3VycmVudEluZGV4KTsKQEAgLTI0Myw4ICsyNDMsOCBAQCBib29sIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6Omhhc0FjdGl2ZVNuYXBQb2ludCgpIGNvbnN0CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGUmIHJvb3RTY3JvbGxpbmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZT4oKnJvb3QpOwotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWwgPSBy
b290U2Nyb2xsaW5nTm9kZS5ob3Jpem9udGFsU25hcE9mZnNldHMoKTsKLSAgICBjb25zdCBWZWN0
b3I8ZmxvYXQ+JiB2ZXJ0aWNhbCA9IHJvb3RTY3JvbGxpbmdOb2RlLnZlcnRpY2FsU25hcE9mZnNl
dHMoKTsKKyAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBob3Jpem9udGFsID0gcm9vdFNjcm9sbGlu
Z05vZGUuc25hcE9mZnNldHNJbmZvKCkuaG9yaXpvbnRhbFNuYXBPZmZzZXRzOworICAgIGNvbnN0
IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2FsID0gcm9vdFNjcm9sbGluZ05vZGUuc25hcE9mZnNldHNJ
bmZvKCkudmVydGljYWxTbmFwT2Zmc2V0czsKIAogICAgIGlmIChob3Jpem9udGFsLmlzRW1wdHko
KSAmJiB2ZXJ0aWNhbC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2NCw4
ICsyNjQsOCBAQCBDR1BvaW50IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6Om5lYXJl
c3RBY3RpdmVDb250ZW50SW5zZXRBZGp1c3RlZFNuYXBPZgogICAgIFNjcm9sbGluZ1RyZWVOb2Rl
KiByb290ID0gbV9zY3JvbGxpbmdUcmVlLT5yb290Tm9kZSgpOwogICAgIEFTU0VSVChyb290ICYm
IGlzPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KHJvb3QpKTsKICAgICBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlJiByb290U2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KCpyb290KTsKLSAgICBjb25zdCBWZWN0b3I8
ZmxvYXQ+JiBob3Jpem9udGFsID0gcm9vdFNjcm9sbGluZ05vZGUuaG9yaXpvbnRhbFNuYXBPZmZz
ZXRzKCk7Ci0gICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmVydGljYWwgPSByb290U2Nyb2xsaW5n
Tm9kZS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCk7CisgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgaG9y
aXpvbnRhbCA9IHJvb3RTY3JvbGxpbmdOb2RlLnNuYXBPZmZzZXRzSW5mbygpLmhvcml6b250YWxT
bmFwT2Zmc2V0czsKKyAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNhbCA9IHJvb3RTY3Jv
bGxpbmdOb2RlLnNuYXBPZmZzZXRzSW5mbygpLnZlcnRpY2FsU25hcE9mZnNldHM7CiAKICAgICAv
LyBUaGUgYm91bmRzIGNoZWNraW5nIHdpdGggbWF4U2Nyb2xsT2Zmc2V0cyBpcyB0byBlbnN1cmUg
dGhhdCB3ZSB3b24ndCBpbnRlcmZlcmUgd2l0aCBydWJiZXItYmFuZGluZyB3aGVuIHNjcm9sbGlu
ZyB0byB0aGUgZWRnZSBvZiB0aGUgcGFnZS4KICAgICBpZiAoIWhvcml6b250YWwuaXNFbXB0eSgp
ICYmIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCA8IGhvcml6b250YWwuc2l6ZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TLm1tCmluZGV4IGRmYmY3YTRkYmNkM2UwNWE3N2ZkNTFkMjIzMDBlNjYyMDM4
ZWZiODcuLjhlZDIxZDdkZGFjODc1YjNhMDVkY2RkNDkzZmIzNDYyMGRmNDVkYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MubW0KQEAgLTEwNiwxNyArMTA2LDE5IEBAIC0gKHZvaWQpc2Nyb2xsVmlld1dpbGxFbmRE
cmFnZ2luZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyB3aXRoVmVsb2NpdHk6KENHUG9pCiAg
ICAgdW5zaWduZWQgb3JpZ2luYWxIb3Jpem9udGFsU25hcFBvc2l0aW9uID0gX3Njcm9sbGluZ1Ry
ZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2lu
dEluZGV4KCk7CiAgICAgdW5zaWduZWQgb3JpZ2luYWxWZXJ0aWNhbFNuYXBQb3NpdGlvbiA9IF9z
Y3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudFZlcnRpY2Fs
U25hcFBvaW50SW5kZXgoKTsKIAotICAgIGlmICghX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUt
PnNjcm9sbGluZ05vZGUoKS5ob3Jpem9udGFsU25hcE9mZnNldHMoKS5pc0VtcHR5KCkpIHsKKyAg
ICBjb25zdCBhdXRvJiBob3Jpem9udGFsID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNj
cm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0luZm8oKS5ob3Jpem9udGFsU25hcE9mZnNldHM7Cisg
ICAgaWYgKCFob3Jpem9udGFsLmlzRW1wdHkoKSkgewogICAgICAgICB1bnNpZ25lZCBpbmRleDsK
LSAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gV2ViQ29yZTo6Y2xvc2VzdFNu
YXBPZmZzZXQoX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5ob3Jp
em9udGFsU25hcE9mZnNldHMoKSwgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGlu
Z05vZGUoKS5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpLCBob3Jpem9udGFsVGFyZ2V0LCB2
ZWxvY2l0eS54LCBpbmRleCk7CisgICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9
IFdlYkNvcmU6OmNsb3Nlc3RTbmFwT2Zmc2V0KGhvcml6b250YWwsIF9zY3JvbGxpbmdUcmVlTm9k
ZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkuaG9yaXpvbnRhbFNu
YXBPZmZzZXRSYW5nZXMsIGhvcml6b250YWxUYXJnZXQsIHZlbG9jaXR5LngsIGluZGV4KTsKICAg
ICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zZXRDdXJy
ZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KGluZGV4KTsKICAgICAgICAgaWYgKGhvcml6b250
YWxUYXJnZXQgPj0gMCAmJiBob3Jpem9udGFsVGFyZ2V0IDw9IHNjcm9sbFZpZXcuY29udGVudFNp
emUud2lkdGgpCiAgICAgICAgICAgICB0YXJnZXRDb250ZW50T2Zmc2V0LT54ID0gcG90ZW50aWFs
U25hcFBvc2l0aW9uOwogICAgIH0KIAotICAgIGlmICghX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdh
dGUtPnNjcm9sbGluZ05vZGUoKS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkuaXNFbXB0eSgpKSB7Cisg
ICAgY29uc3QgYXV0byYgdmVydGljYWwgPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Ny
b2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpLnZlcnRpY2FsU25hcE9mZnNldHM7CisgICAg
aWYgKCF2ZXJ0aWNhbC5pc0VtcHR5KCkpIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXg7Ci0gICAg
ICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IFdlYkNvcmU6OmNsb3Nlc3RTbmFwT2Zm
c2V0KF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkudmVydGljYWxT
bmFwT2Zmc2V0cygpLCBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgp
LnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpLCB2ZXJ0aWNhbFRhcmdldCwgdmVsb2NpdHkueSwg
aW5kZXgpOworICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBXZWJDb3JlOjpj
bG9zZXN0U25hcE9mZnNldCh2ZXJ0aWNhbCwgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNj
cm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0luZm8oKS52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMs
IHZlcnRpY2FsVGFyZ2V0LCB2ZWxvY2l0eS55LCBpbmRleCk7CiAgICAgICAgIF9zY3JvbGxpbmdU
cmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc2V0Q3VycmVudFZlcnRpY2FsU25hcFBv
aW50SW5kZXgoaW5kZXgpOwogICAgICAgICBpZiAodmVydGljYWxUYXJnZXQgPj0gMCAmJiB2ZXJ0
aWNhbFRhcmdldCA8PSBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLmhlaWdodCkKICAgICAgICAgICAg
IHRhcmdldENvbnRlbnRPZmZzZXQtPnkgPSBwb3RlbnRpYWxTbmFwUG9zaXRpb247CkBAIC0yODAs
OSArMjgyLDkgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpj
b21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2wKIAogI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCiAgICAgLy8gRklYTUU6IElmIG9ubHkgb25lIGF4aXMgc25hcHMgaW4gMkQgc2Ny
b2xsaW5nLCB0aGUgb3RoZXIgYXhpcyB3aWxsIGRlY2VsZXJhdGUgZmFzdCBhcyB3ZWxsLiBJcyB0
aGlzIHdoYXQgd2Ugd2FudD8KLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNl
dHMpIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0cykpIHsKKyAgICBpZiAoc2Nyb2xs
aW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpTbmFwT2Zmc2V0c0luZm8pKSB7CiAgICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotICAgICAgICBzY3JvbGxWaWV3KCkuZGVjZWxlcmF0aW9uUmF0ZSA9IHNjcm9sbGluZ05v
ZGUoKS5ob3Jpem9udGFsU25hcE9mZnNldHMoKS5zaXplKCkgfHwgc2Nyb2xsaW5nTm9kZSgpLnZl
cnRpY2FsU25hcE9mZnNldHMoKS5zaXplKCkgPyBVSVNjcm9sbFZpZXdEZWNlbGVyYXRpb25SYXRl
RmFzdCA6IFVJU2Nyb2xsVmlld0RlY2VsZXJhdGlvblJhdGVOb3JtYWw7CisgICAgICAgIHNjcm9s
bFZpZXcoKS5kZWNlbGVyYXRpb25SYXRlID0gc2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5m
bygpLmhvcml6b250YWxTbmFwT2Zmc2V0cy5zaXplKCkgfHwgc2Nyb2xsaW5nTm9kZSgpLnNuYXBP
ZmZzZXRzSW5mbygpLnZlcnRpY2FsU25hcE9mZnNldHMuc2l6ZSgpID8gVUlTY3JvbGxWaWV3RGVj
ZWxlcmF0aW9uUmF0ZUZhc3QgOiBVSVNjcm9sbFZpZXdEZWNlbGVyYXRpb25SYXRlTm9ybWFsOwog
ICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418411</attachid>
            <date>2021-01-26 06:17:10 -0800</date>
            <delta_ts>2021-01-27 00:41:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220915-20210126151708.patch</filename>
            <type>text/plain</type>
            <size>49039</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4YjU5NTdmYjgxNTc5
ZTg2ZGRhYzcyMTVjOTMwM2NjZTUxMTAzZS4uYzBmYTU2YjIwMjRiZDk3ZTI4NDU2Zjg4ZWQ5MWJl
OWRjMTFkYWNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTAxLTI1ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgU2Nyb2xs
U25hcE9mZnNldHNJbmZvIGluIHRoZSBzY3JvbGxpbmcgdHJlZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTE1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHNob3VsZCBu
b3QgY2hhbmdlIGJlaGF2aW9yLgorCisgICAgICAgIFVzZSBTY3JvbGxTbmFwT2Zmc2V0cyBtb3Jl
IG9mdGVuIGluIHRoZSBzY3JvbGxpbmcgdHJlZSB0byBjb250aW51ZSB0bworICAgICAgICBhYnN0
cmFjdCBhd2F5IHRoZSBkZXRhaWxzIG9mIGhvdyBzbmFwIG9mZnNldHMgYXJlIGltcGxlbWVudGVk
LgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0Fz
RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0
U2Nyb2xsaW5nTm9kZVNjcm9sbGFibGVBcmVhR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsU25hcFByb3BlcnRpZXNXaXRo
RnJhbWVWaWV3KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6aXNFcXVhbCBj
b25zdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
YXBwbGljYWJsZVByb3BlcnRpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTbmFwT2Zmc2V0c0luZm8pOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6
dXBkYXRlRnJvbVN0YXRlTm9kZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9TY3JvbGxDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxl
cjo6dXBkYXRlU2Nyb2xsU25hcFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRy
b2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6b3RoZXJT
Y3JvbGxFdmVudEF4aXMpOiBEZWxldGVkLgorCiAyMDIxLTAxLTI1ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBOdWxsIFB0ciBEZXJlZiBAIFdl
YkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRiMDUy
NDNhMmRkZDEyMjFlZmMyMTRjMjAwOWM4MWQyZDFjZjdmMjQuLjBlMWJlYjg5YTgxMGI1YzlkOWY1
YzFhOTU1OTc5ZThlZTRhYzcwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDEt
MjUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFVz
ZSBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gaW4gdGhlIHNjcm9sbGluZyB0cmVlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5MTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgU2Nyb2xsU25hcE9mZnNl
dHMgbW9yZSBvZnRlbiBpbiB0aGUgc2Nyb2xsaW5nIHRyZWUgdG8gY29udGludWUgdG8KKyAgICAg
ICAgYWJzdHJhY3QgYXdheSB0aGUgZGV0YWlscyBvZiBob3cgc25hcCBvZmZzZXRzIGFyZSBpbXBs
ZW1lbnRlZC4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChBcmd1bWVudENvZGVyPFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmVuY29kZSk6CisgICAgICAgIChBcmd1bWVudENv
ZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29kZSk6CisgICAgICAgIChBcmd1
bWVudENvZGVyPFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4+OjplbmNvZGUpOgorICAgICAg
ICAoQXJndW1lbnRDb2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYktpdDo6ZHVtcCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6c2hvdWxkU25hcEZvck1h
aW5GcmFtZVNjcm9sbGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5n
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eTo6aGFzQWN0aXZlU25hcFBvaW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6bmVhcmVzdEFjdGl2ZUNvbnRlbnRJbnNldEFkanVzdGVk
U25hcE9mZnNldCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToKKyAgICAgICAgKC1b
V0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmlld0RlbGVnYXRlIHNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dp
bmc6d2l0aFZlbG9jaXR5OnRhcmdldENvbnRlbnRPZmZzZXQ6XSk6CisgICAgICAgIChXZWJLaXQ6
OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJD
aGlsZHJlbik6CisKIDIwMjEtMDEtMjQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzJdIHRoZXZlcmdlLmNvbSAtIHJ1YmJlciBiYW5kIHNj
cm9sbGluZyBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlIGNhdXNlcyBhbiBhYnJ1cHQganVtcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcAppbmRleCBlZDU2YmI2NzA0NzFmYmU3YjZkMmZhMGUxMmQzOGVjODc3
ZmM4NTM3Li41ODQ4MGEyZDdhOGY4YWNiYzBkYzZlM2QxNTg0NzQwMDQ3OWI3Yzk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcApAQCAtOTIsMzEgKzkyLDE1IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQs
IFBsCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi1zdGF0aWMgaW5saW5l
IHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Piogb2Zmc2V0SW5mbywgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9m
ZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgY29uc3QgU2Ny
b2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+KiBvZmZzZXRJbmZvLCBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcikKIHsKLSAgICAvLyBGSVhNRTogSW5jb3Jwb3JhdGUgY3VycmVudCBwYWdlIHNj
YWxlIGZhY3RvciBpbiBzbmFwcGluZyB0byBkZXZpY2UgcGl4ZWwuIFBlcmhhcHMgd2Ugc2hvdWxk
IGp1c3QgY29udmVydCB0byBmbG9hdCBoZXJlIGFuZCBsZXQgVUkgcHJvY2VzcyBkbyB0aGUgcGl4
ZWwgc25hcHBpbmc/Ci0gICAgVmVjdG9yPGZsb2F0PiBzbmFwT2Zmc2V0c0FzRmxvYXQ7Ci0gICAg
aWYgKG9mZnNldEluZm8pIHsKLSAgICAgICAgY29uc3QgYXV0byYgb2Zmc2V0cyA9IG9mZnNldElu
Zm8tPm9mZnNldHNGb3JBeGlzKGF4aXMpOwotICAgICAgICBzbmFwT2Zmc2V0c0FzRmxvYXQucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShvZmZzZXRzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYg
b2Zmc2V0IDogb2Zmc2V0cykKLSAgICAgICAgICAgIHNuYXBPZmZzZXRzQXNGbG9hdC51bmNoZWNr
ZWRBcHBlbmQocm91bmRUb0RldmljZVBpeGVsKG9mZnNldCwgZGV2aWNlU2NhbGVGYWN0b3IsIGZh
bHNlKSk7CisgICAgaWYgKCFvZmZzZXRJbmZvKSB7CisgICAgICAgIG5vZGUuc2V0U25hcE9mZnNl
dHNJbmZvKFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4oKSk7CisgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiBzbmFwT2Zmc2V0
UmFuZ2VzQXNGbG9hdDsKLSAgICBpZiAob2Zmc2V0SW5mbykgewotICAgICAgICBjb25zdCBhdXRv
JiBzbmFwT2Zmc2V0UmFuZ2VzID0gb2Zmc2V0SW5mby0+b2Zmc2V0UmFuZ2VzRm9yQXhpcyhheGlz
KTsKLSAgICAgICAgc25hcE9mZnNldFJhbmdlc0FzRmxvYXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShzbmFwT2Zmc2V0UmFuZ2VzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgcmFuZ2UgOiBz
bmFwT2Zmc2V0UmFuZ2VzKQotICAgICAgICAgICAgc25hcE9mZnNldFJhbmdlc0FzRmxvYXQudW5j
aGVja2VkQXBwZW5kKHsgcm91bmRUb0RldmljZVBpeGVsKHJhbmdlLnN0YXJ0LCBkZXZpY2VTY2Fs
ZUZhY3RvciwgZmFsc2UpLCByb3VuZFRvRGV2aWNlUGl4ZWwocmFuZ2UuZW5kLCBkZXZpY2VTY2Fs
ZUZhY3RvciwgZmFsc2UpIH0pOwotICAgIH0KLSAgICBpZiAoYXhpcyA9PSBTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwpIHsKLSAgICAgICAgbm9kZS5zZXRIb3Jpem9udGFsU25hcE9mZnNldHMo
c25hcE9mZnNldHNBc0Zsb2F0KTsKLSAgICAgICAgbm9kZS5zZXRIb3Jpem9udGFsU25hcE9mZnNl
dFJhbmdlcyhzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
bm9kZS5zZXRWZXJ0aWNhbFNuYXBPZmZzZXRzKHNuYXBPZmZzZXRzQXNGbG9hdCk7Ci0gICAgICAg
IG5vZGUuc2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKHNuYXBPZmZzZXRSYW5nZXNBc0Zsb2F0
KTsKLSAgICB9CisgICAgLy8gRklYTUU6IEluY29ycG9yYXRlIGN1cnJlbnQgcGFnZSBzY2FsZSBm
YWN0b3IgaW4gc25hcHBpbmcgdG8gZGV2aWNlIHBpeGVsLiBQZXJoYXBzIHdlIHNob3VsZCBqdXN0
IGNvbnZlcnQgdG8gZmxvYXQgaGVyZSBhbmQgbGV0IFVJIHByb2Nlc3MgZG8gdGhlIHBpeGVsIHNu
YXBwaW5nPworICAgIG5vZGUuc2V0U25hcE9mZnNldHNJbmZvKG9mZnNldEluZm8tPmNvbnZlcnRV
bml0czxmbG9hdD4oZGV2aWNlU2NhbGVGYWN0b3IpKTsKIH0KICNlbmRpZgogCkBAIC03MTQsOCAr
Njk4LDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxpbmdOb2Rl
U2Nyb2xsYWJsZUFyZWFHZW9tZXRyeShTY3JvbGxpbmcKIAogI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApCiAgICAgc2Nyb2xsYWJsZUFyZWEudXBkYXRlU25hcE9mZnNldHMoKTsKLSAgICBzZXRT
dGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoc2Nyb2xsaW5nTm9kZSwgU2Nyb2xs
RXZlbnRBeGlzOjpIb3Jpem9udGFsLCBzY3JvbGxhYmxlQXJlYS5zbmFwT2Zmc2V0SW5mbygpLCBt
X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNu
YXBPZmZzZXRzQXNGbG9hdChzY3JvbGxpbmdOb2RlLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2Fs
LCAgc2Nyb2xsYWJsZUFyZWEuc25hcE9mZnNldEluZm8oKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZh
Y3RvcigpKTsKKyAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoc2Ny
b2xsaW5nTm9kZSwgc2Nyb2xsYWJsZUFyZWEuc25hcE9mZnNldEluZm8oKSwgbV9wYWdlLT5kZXZp
Y2VTY2FsZUZhY3RvcigpKTsKICAgICBzY3JvbGxpbmdOb2RlLnNldEN1cnJlbnRIb3Jpem9udGFs
U25hcFBvaW50SW5kZXgoc2Nyb2xsYWJsZUFyZWEuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJ
bmRleCgpKTsKICAgICBzY3JvbGxpbmdOb2RlLnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludElu
ZGV4KHNjcm9sbGFibGVBcmVhLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpOwogI2Vu
ZGlmCkBAIC05MDksOCArODkyLDcgQEAgYm9vbCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpp
c1Njcm9sbFNuYXBJblByb2dyZXNzKFNjcm9sbGluZ05vZGVJRCBub2RlSUQpIGMKIHZvaWQgQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsU25hcFByb3BlcnRpZXNXaXRoRnJh
bWVWaWV3KGNvbnN0IEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewogICAgIGlmIChhdXRvIG5vZGUg
PSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdT
dGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKGZyYW1lVmlldy5zY3JvbGxpbmdOb2RlSUQoKSkpKSB7
Ci0gICAgICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwg
U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBmcmFtZVZpZXcuc25hcE9mZnNldEluZm8oKSwg
bV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdO
b2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBm
cmFtZVZpZXcuc25hcE9mZnNldEluZm8oKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsK
KyAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBm
cmFtZVZpZXcuc25hcE9mZnNldEluZm8oKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsK
ICAgICAgICAgbm9kZS0+c2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleChmcmFtZVZp
ZXcuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpKTsKICAgICAgICAgbm9kZS0+c2V0
Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoZnJhbWVWaWV3LmN1cnJlbnRWZXJ0aWNhbFNu
YXBQb2ludEluZGV4KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCmluZGV4IDFlYjgxYTBjYmJmNjlm
OWIxYzkzODFiMTA5Zjc0OTgyZmRiNWFkMmYuLmEzMGM1YjcyNzk2MTVlMWY3Nzk0ZDk4ZTAwZGFm
YTY3ODVmMzlmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcApAQCAtMzIwLDYgKzMyMCw1NyBAQCB2b2lkIHVw
ZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFi
bGVBcmVhLCBjb25zdCBSZQogICAgICAgICBzY3JvbGxhYmxlQXJlYS5jbGVhclZlcnRpY2FsU25h
cE9mZnNldHMoKTsKIH0KIAorc3RhdGljIGZsb2F0IGNvbnZlcnRPZmZzZXRVbml0KExheW91dFVu
aXQgaW5wdXQsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQoreworICAgIHJldHVybiByb3VuZFRv
RGV2aWNlUGl4ZWwoaW5wdXQsIGRldmljZVNjYWxlRmFjdG9yLCBmYWxzZSk7Cit9CisKK3N0YXRp
YyBMYXlvdXRVbml0IGNvbnZlcnRPZmZzZXRVbml0KGZsb2F0IGlucHV0LCBmbG9hdCAvKiBzY2Fs
ZUZhY3RvciAqLykKK3sKKyAgICByZXR1cm4gTGF5b3V0VW5pdChpbnB1dCk7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBJbnB1dFR5cGUsIHR5cGVuYW1lIE91dHB1dFR5cGU+CitzdGF0aWMgU2Ny
b2xsU25hcE9mZnNldHNJbmZvPE91dHB1dFR5cGU+IGNvbnZlcnRPZmZzZXRJbmZvKGNvbnN0IFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxJbnB1dFR5cGU+JiBpbnB1dCwgZmxvYXQgc2NhbGVGYWN0b3Ig
PSAwLjApCit7CisgICAgYXV0byBjb252ZXJ0T2Zmc2V0cyA9IFtzY2FsZUZhY3Rvcl0oY29uc3Qg
VmVjdG9yPElucHV0VHlwZT4mIGlucHV0KQorICAgIHsKKyAgICAgICAgVmVjdG9yPE91dHB1dFR5
cGU+IG91dHB1dDsKKyAgICAgICAgb3V0cHV0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5wdXQu
c2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBvZmZzZXQgOiBpbnB1dCkKKyAgICAgICAgICAg
IG91dHB1dC51bmNoZWNrZWRBcHBlbmQoY29udmVydE9mZnNldFVuaXQob2Zmc2V0LCBzY2FsZUZh
Y3RvcikpOworICAgICAgICByZXR1cm4gb3V0cHV0OworICAgIH07CisKKyAgICBhdXRvIGNvbnZl
cnRPZmZzZXRSYW5nZXMgPSBbc2NhbGVGYWN0b3JdKGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRS
YW5nZTxJbnB1dFR5cGU+PiYgaW5wdXQpCisgICAgeworICAgICAgICBWZWN0b3I8U2Nyb2xsT2Zm
c2V0UmFuZ2U8T3V0cHV0VHlwZT4+IG91dHB1dDsKKyAgICAgICAgb3V0cHV0LnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoaW5wdXQuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiByYW5nZSA6IGlu
cHV0KQorICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZCh7IGNvbnZlcnRPZmZzZXRV
bml0KHJhbmdlLnN0YXJ0LCBzY2FsZUZhY3RvciksIGNvbnZlcnRPZmZzZXRVbml0KHJhbmdlLmVu
ZCwgc2NhbGVGYWN0b3IpIH0pOworICAgICAgICByZXR1cm4gb3V0cHV0OworICAgIH07CisKKyAg
ICByZXR1cm4geworICAgICAgICBjb252ZXJ0T2Zmc2V0cyhpbnB1dC5ob3Jpem9udGFsU25hcE9m
ZnNldHMpLAorICAgICAgICBjb252ZXJ0T2Zmc2V0cyhpbnB1dC52ZXJ0aWNhbFNuYXBPZmZzZXRz
KSwKKyAgICAgICAgY29udmVydE9mZnNldFJhbmdlcyhpbnB1dC5ob3Jpem9udGFsU25hcE9mZnNl
dFJhbmdlcyksCisgICAgICAgIGNvbnZlcnRPZmZzZXRSYW5nZXMoaW5wdXQudmVydGljYWxTbmFw
T2Zmc2V0UmFuZ2VzKQorICAgIH07Cit9CisKK3RlbXBsYXRlIDw+IHRlbXBsYXRlIDw+CitTY3Jv
bGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0
Pjo6Y29udmVydFVuaXRzKGZsb2F0IC8qIHVudXNlZFNjYWxlRmFjdG9yICovKSBjb25zdAorewor
ICAgIHJldHVybiBjb252ZXJ0T2Zmc2V0SW5mbzxmbG9hdCwgTGF5b3V0VW5pdD4oKnRoaXMpOwor
fQorCit0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8PgorU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0
PiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD46OmNvbnZlcnRVbml0cyhmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcikgY29uc3QKK3sKKyAgICByZXR1cm4gY29udmVydE9mZnNldEluZm88
TGF5b3V0VW5pdCwgZmxvYXQ+KCp0aGlzLCBkZXZpY2VTY2FsZUZhY3Rvcik7Cit9CisKIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCmluZGV4IDQ4ZDc5YmZh
YjA5ZjBiMzE5MGMzMzFiODRlMWYxZWEzNzBmYWUwMjcuLmRhYjFmOGZhYmMwODliOTE1YmNhODJk
NjE0YWI4NzZhNmUzMmI0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCkBAIC01OSw2ICs1OSwxMSBAQCBzdHJ1Y3Qg
U2Nyb2xsU25hcE9mZnNldHNJbmZvIHsKICAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8VD4+
IGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzOwogICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5n
ZTxUPj4gdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzOwogCisgICAgYm9vbCBpc0VxdWFsKGNvbnN0
IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxUPiYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gaG9yaXpvbnRhbFNuYXBPZmZzZXRzID09IG90aGVyLmhvcml6b250YWxTbmFwT2Zmc2V0
cyAmJiB2ZXJ0aWNhbFNuYXBPZmZzZXRzID09IG90aGVyLnZlcnRpY2FsU25hcE9mZnNldHMgJiYg
aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMgPT0gb3RoZXIuaG9yaXpvbnRhbFNuYXBPZmZzZXRS
YW5nZXMgJiYgdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzID09IG90aGVyLnZlcnRpY2FsU25hcE9m
ZnNldFJhbmdlczsKKyAgICB9CisKICAgICBib29sIGlzRW1wdHkoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIGhvcml6b250YWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkgJiYgdmVydGljYWxT
bmFwT2Zmc2V0cy5pc0VtcHR5KCk7CkBAIC03Myw4ICs3OCwxNiBAQCBzdHJ1Y3QgU2Nyb2xsU25h
cE9mZnNldHNJbmZvIHsKICAgICB7CiAgICAgICAgIHJldHVybiBheGlzID09IFNjcm9sbEV2ZW50
QXhpczo6VmVydGljYWwgPyB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgOiBob3Jpem9udGFsU25h
cE9mZnNldFJhbmdlczsKICAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXRUeXBl
PiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88T3V0cHV0VHlwZT4gY29udmVydFVuaXRzKGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yID0gMC4wKSBjb25zdDsKIH07CiAKK3RlbXBsYXRlIDw+IHRlbXBsYXRl
IDw+CitTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4gU2Nyb2xsU25hcE9mZnNldHNJ
bmZvPGZsb2F0Pjo6Y29udmVydFVuaXRzKGZsb2F0IC8qIHVudXNlZFNjYWxlRmFjdG9yICovKSBj
b25zdDsKKwordGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KK1Njcm9sbFNuYXBPZmZzZXRzSW5mbzxm
bG9hdD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+Ojpjb252ZXJ0VW5pdHMoZmxv
YXQgZGV2aWNlU2NhbGVGYWN0b3IpIGNvbnN0OworCiBjb25zdCB1bnNpZ25lZCBpbnZhbGlkU25h
cE9mZnNldEluZGV4ID0gVUlOVF9NQVg7CiAKIC8vIFVwZGF0ZSB0aGUgc25hcCBvZmZzZXRzIGZv
ciB0aGlzIHNjcm9sbGFibGUgYXJlYSwgZ2l2ZW4gdGhlIFJlbmRlckJveCBvZiB0aGUgc2Nyb2xs
IGNvbnRhaW5lciwgdGhlIFJlbmRlclN0eWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5oCmluZGV4IGIzZDU1MGMyZTczNzcwYmVjYzcy
NTIzZDE1YzkyNWVmNTZkNjkzZDcuLjM3YzJkYWFjZjA0YmRmNmJjNTY3NDA4ZTU1MWQ5YzMzYjYz
NmMwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlTm9kZS5oCkBAIC0yMzAsNDcgKzIzMCw0NCBAQCBwdWJsaWM6CiAgICAgICAgIFNjcm9s
bGFibGVBcmVhUGFyYW1zICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDcsCiAgICAg
ICAgIFJlYXNvbnNGb3JTeW5jaHJvbm91c1Njcm9sbGluZyAgICAgICAgICAgICAgPSAxTExVIDw8
IDgsCiAgICAgICAgIFJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uICAgICAgICAgICAgICAgICAgICAg
PSAxTExVIDw8IDksCi0gICAgICAgIEhvcml6b250YWxTbmFwT2Zmc2V0cyAgICAgICAgICAgICAg
ICAgICAgICAgPSAxTExVIDw8IDEwLAotICAgICAgICBWZXJ0aWNhbFNuYXBPZmZzZXRzICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxMSwKLSAgICAgICAgSG9yaXpvbnRhbFNuYXBP
ZmZzZXRSYW5nZXMgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTIsCi0gICAgICAgIFZlcnRp
Y2FsU25hcE9mZnNldFJhbmdlcyAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDEzLAotICAg
ICAgICBDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCAgICAgICAgICAgID0gMUxMVSA8
PCAxNCwKLSAgICAgICAgQ3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4ICAgICAgICAgICAg
ICA9IDFMTFUgPDwgMTUsCi0gICAgICAgIElzTW9uaXRvcmluZ1doZWVsRXZlbnRzICAgICAgICAg
ICAgICAgICAgICAgPSAxTExVIDw8IDE2LAotICAgICAgICBTY3JvbGxDb250YWluZXJMYXllciAg
ICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxNywKLSAgICAgICAgU2Nyb2xsZWRDb250
ZW50c0xheWVyICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTgsCi0gICAgICAgIEhv
cml6b250YWxTY3JvbGxiYXJMYXllciAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDE5LAot
ICAgICAgICBWZXJ0aWNhbFNjcm9sbGJhckxheWVyICAgICAgICAgICAgICAgICAgICAgID0gMUxM
VSA8PCAyMCwKLSAgICAgICAgUGFpbnRlckZvclNjcm9sbGJhciAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDFMTFUgPDwgMjEsCisgICAgICAgIFNuYXBPZmZzZXRzSW5mbyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAxTExVIDw8IDEwLAorICAgICAgICBDdXJyZW50SG9yaXpvbnRhbFNu
YXBPZmZzZXRJbmRleCAgICAgICAgICAgID0gMUxMVSA8PCAxMSwKKyAgICAgICAgQ3VycmVudFZl
cnRpY2FsU25hcE9mZnNldEluZGV4ICAgICAgICAgICAgICA9IDFMTFUgPDwgMTIsCisgICAgICAg
IElzTW9uaXRvcmluZ1doZWVsRXZlbnRzICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDEz
LAorICAgICAgICBTY3JvbGxDb250YWluZXJMYXllciAgICAgICAgICAgICAgICAgICAgICAgID0g
MUxMVSA8PCAxNCwKKyAgICAgICAgU2Nyb2xsZWRDb250ZW50c0xheWVyICAgICAgICAgICAgICAg
ICAgICAgICA9IDFMTFUgPDwgMTUsCisgICAgICAgIEhvcml6b250YWxTY3JvbGxiYXJMYXllciAg
ICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDE2LAorICAgICAgICBWZXJ0aWNhbFNjcm9sbGJh
ckxheWVyICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxNywKKyAgICAgICAgUGFpbnRl
ckZvclNjcm9sbGJhciAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTgsCiAgICAg
ICAgIC8vIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlCi0gICAgICAgIEZyYW1lU2Nh
bGVGYWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDIyLAotICAgICAg
ICBFdmVudFRyYWNraW5nUmVnaW9uICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAy
MywKLSAgICAgICAgUm9vdENvbnRlbnRzTGF5ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IDFMTFUgPDwgMjQsCi0gICAgICAgIENvdW50ZXJTY3JvbGxpbmdMYXllciAgICAgICAgICAgICAg
ICAgICAgICAgPSAxTExVIDw8IDI1LAotICAgICAgICBJbnNldENsaXBMYXllciAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyNiwKLSAgICAgICAgQ29udGVudFNoYWRvd0xh
eWVyICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjcsCi0gICAgICAgIEhlYWRl
ckhlaWdodCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDI4LAotICAg
ICAgICBGb290ZXJIZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8
PCAyOSwKLSAgICAgICAgSGVhZGVyTGF5ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgPDwgMzAsCi0gICAgICAgIEZvb3RlckxheWVyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAxTExVIDw8IDMxLAotICAgICAgICBCZWhhdmlvckZvckZpeGVkRWxlbWVu
dHMgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAzMiwKLSAgICAgICAgVG9wQ29udGVudElu
c2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMzMsCi0gICAgICAgIEZp
eGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUgICAgICAgICAgPSAxTExVIDw8IDM0LAot
ICAgICAgICBWaXN1YWxWaWV3cG9ydElzU21hbGxlclRoYW5MYXlvdXRWaWV3cG9ydCAgID0gMUxM
VSA8PCAzNSwKLSAgICAgICAgQXN5bmNGcmFtZU9yT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkICAg
ICAgICA9IDFMTFUgPDwgMzYsCi0gICAgICAgIFdoZWVsRXZlbnRHZXN0dXJlc0JlY29tZU5vbkJs
b2NraW5nICAgICAgICAgPSAxTExVIDw8IDM3LAotICAgICAgICBTY3JvbGxpbmdQZXJmb3JtYW5j
ZVRlc3RpbmdFbmFibGVkICAgICAgICAgID0gMUxMVSA8PCAzOCwKLSAgICAgICAgTGF5b3V0Vmll
d3BvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMzksCi0gICAgICAg
IE1pbkxheW91dFZpZXdwb3J0T3JpZ2luICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDQw
LAotICAgICAgICBNYXhMYXlvdXRWaWV3cG9ydE9yaWdpbiAgICAgICAgICAgICAgICAgICAgID0g
MUxMVSA8PCA0MSwKLSAgICAgICAgT3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUgICAgICAgICAg
ICAgICAgICA9IDFMTFUgPDwgNDIsCisgICAgICAgIEZyYW1lU2NhbGVGYWN0b3IgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDE5LAorICAgICAgICBFdmVudFRyYWNraW5nUmVn
aW9uICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyMCwKKyAgICAgICAgUm9vdENv
bnRlbnRzTGF5ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjEsCisgICAg
ICAgIENvdW50ZXJTY3JvbGxpbmdMYXllciAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8
IDIyLAorICAgICAgICBJbnNldENsaXBMYXllciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMUxMVSA8PCAyMywKKyAgICAgICAgQ29udGVudFNoYWRvd0xheWVyICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDFMTFUgPDwgMjQsCisgICAgICAgIEhlYWRlckhlaWdodCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDI1LAorICAgICAgICBGb290ZXJIZWlnaHQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyNiwKKyAgICAgICAgSGVh
ZGVyTGF5ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjcsCisg
ICAgICAgIEZvb3RlckxheWVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExV
IDw8IDI4LAorICAgICAgICBCZWhhdmlvckZvckZpeGVkRWxlbWVudHMgICAgICAgICAgICAgICAg
ICAgID0gMUxMVSA8PCAyOSwKKyAgICAgICAgVG9wQ29udGVudEluc2V0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDFMTFUgPDwgMzAsCisgICAgICAgIEZpeGVkRWxlbWVudHNMYXlvdXRS
ZWxhdGl2ZVRvRnJhbWUgICAgICAgICAgPSAxTExVIDw8IDMxLAorICAgICAgICBWaXN1YWxWaWV3
cG9ydElzU21hbGxlclRoYW5MYXlvdXRWaWV3cG9ydCAgID0gMUxMVSA8PCAzMiwKKyAgICAgICAg
QXN5bmNGcmFtZU9yT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkICAgICAgICA9IDFMTFUgPDwgMzMs
CisgICAgICAgIFdoZWVsRXZlbnRHZXN0dXJlc0JlY29tZU5vbkJsb2NraW5nICAgICAgICAgPSAx
TExVIDw8IDM0LAorICAgICAgICBTY3JvbGxpbmdQZXJmb3JtYW5jZVRlc3RpbmdFbmFibGVkICAg
ICAgICAgID0gMUxMVSA8PCAzNSwKKyAgICAgICAgTGF5b3V0Vmlld3BvcnQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMzYsCisgICAgICAgIE1pbkxheW91dFZpZXdwb3J0
T3JpZ2luICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDM3LAorICAgICAgICBNYXhMYXlv
dXRWaWV3cG9ydE9yaWdpbiAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAzOCwKKyAgICAg
ICAgT3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwg
MzksCiAgICAgICAgIC8vIFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGUKLSAgICAgICAgUmVs
YXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMgICAgICAgICAgICAgICA9IDFMTFUgPDwgNDMsCi0g
ICAgICAgIExheW91dENvbnN0cmFpbnREYXRhICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExV
IDw8IDQ0LAorICAgICAgICBSZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2RlcyAgICAgICAgICAg
ICAgID0gMUxMVSA8PCA0MCwKKyAgICAgICAgTGF5b3V0Q29uc3RyYWludERhdGEgICAgICAgICAg
ICAgICAgICAgICAgICA9IDFMTFUgPDwgNDEsCiAgICAgICAgIC8vIFNjcm9sbGluZ1N0YXRlRml4
ZWROb2RlLCBTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUKLSAgICAgICAgVmlld3BvcnRDb25zdHJh
aW50cyAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgNDUsCisgICAgICAgIFZpZXdw
b3J0Q29uc3RyYWludHMgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDQyLAogICAg
ICAgICAvLyBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlCi0gICAgICAgIE92
ZXJmbG93U2Nyb2xsaW5nTm9kZSAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDQ2LAor
ICAgICAgICBPdmVyZmxvd1Njcm9sbGluZ05vZGUgICAgICAgICAgICAgICAgICAgICAgID0gMUxM
VSA8PCA0MywKICAgICB9OwogICAgIAogICAgIGJvb2wgaGFzQ2hhbmdlZFByb3BlcnRpZXMoKSBj
b25zdCB7IHJldHVybiAhbV9jaGFuZ2VkUHJvcGVydGllcy5pc0VtcHR5KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUuY3BwCmluZGV4IDJkNjg2ZGVlNjM2MDk0ZmIyODlmNzc2ZDMxMDBmYjg3Yjc1
ZGIxMzYuLmY0MDgxOWFmZTNjZWZkMzQ4MTgwNmY0MTc5OWU5MDU5ODc1ZjgwZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcApAQCAtOTQsMTAgKzk0LDcgQEAgT3B0aW9uU2V0PFNjcm9sbGlu
Z1N0YXRlTm9kZTo6UHJvcGVydHk+IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6YXBwbGlj
YWJsZVAKICAgICAgICAgUHJvcGVydHk6OlJlYXNvbnNGb3JTeW5jaHJvbm91c1Njcm9sbGluZywK
ICNlbmRpZgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgICAgIFByb3BlcnR5OjpI
b3Jpem9udGFsU25hcE9mZnNldHMsCi0gICAgICAgIFByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZz
ZXRzLAotICAgICAgICBQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMsCi0gICAg
ICAgIFByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsCisgICAgICAgIFByb3BlcnR5
OjpTbmFwT2Zmc2V0c0luZm8sCiAgICAgICAgIFByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNu
YXBPZmZzZXRJbmRleCwKICAgICAgICAgUHJvcGVydHk6OkN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZz
ZXRJbmRleCwKICAgICAgICAgUHJvcGVydHk6OklzTW9uaXRvcmluZ1doZWVsRXZlbnRzLApAQCAt
MTYwLDQwICsxNTcsMTMgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNj
cm9sbE9yaWdpbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsT3JpZ2luKQogfQogCiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKLXZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRI
b3Jpem9udGFsU25hcE9mZnNldHMoY29uc3QgVmVjdG9yPGZsb2F0PiYgc25hcE9mZnNldHMpCit2
b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U25hcE9mZnNldHNJbmZvKGNvbnN0
IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIGluZm8pCiB7Ci0gICAgaWYgKG1fc25hcE9m
ZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cyA9PSBzbmFwT2Zmc2V0cykKKyAgICBpZiAo
bV9zbmFwT2Zmc2V0c0luZm8uaXNFcXVhbChpbmZvKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gc25hcE9mZnNldHM7Ci0g
ICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldHMpOwot
fQotCi12b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0VmVydGljYWxTbmFwT2Zm
c2V0cyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cykKLXsKLSAgICBpZiAobV9zbmFw
T2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0cyA9PSBzbmFwT2Zmc2V0cykKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0cyA9IHNu
YXBPZmZzZXRzOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6VmVydGljYWxTbmFw
T2Zmc2V0cyk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRIb3Jp
em9udGFsU25hcE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8Zmxv
YXQ+PiYgc2Nyb2xsT2Zmc2V0UmFuZ2VzKQotewotICAgIGlmIChtX3NuYXBPZmZzZXRzSW5mby5o
b3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyA9PSBzY3JvbGxPZmZzZXRSYW5nZXMpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFu
Z2VzID0gc2Nyb2xsT2Zmc2V0UmFuZ2VzOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0
eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpOwotfQotCi12b2lkIFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKGNvbnN0IFZlY3RvcjxT
Y3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBzY3JvbGxPZmZzZXRSYW5nZXMpCi17Ci0gICAgaWYg
KG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyA9PSBzY3JvbGxPZmZz
ZXRSYW5nZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc25hcE9mZnNldHNJbmZvLnZlcnRp
Y2FsU25hcE9mZnNldFJhbmdlcyA9IHNjcm9sbE9mZnNldFJhbmdlczsKLSAgICBzZXRQcm9wZXJ0
eUNoYW5nZWQoUHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyk7CisgICAgbV9zbmFw
T2Zmc2V0c0luZm8gPSBpbmZvOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6U25h
cE9mZnNldHNJbmZvKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNl
dEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgodW5zaWduZWQgaW5kZXgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZS5oCmluZGV4IDQwOWFlOWQ5YWU2NzkwM2VmNmJhYTI5ZjViZDI3NGU0YzNkYjE0
NWUuLmJkNGU5N2I5YzVlZmRmOTEyOWRlZjhiNmJiMjMwZDM3YjQxNjQwNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZS5oCkBAIC03MSwxNyArNzEsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50UG9pbnQmKTsKIAogI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCi0gICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRhbFNuYXBP
ZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBP
ZmZzZXRzOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIb3Jpem9udGFsU25hcE9mZnNl
dHMoY29uc3QgVmVjdG9yPGZsb2F0PiYpOwotCi0gICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmVy
dGljYWxTbmFwT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLnZlcnRp
Y2FsU25hcE9mZnNldHM7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZlcnRpY2FsU25h
cE9mZnNldHMoY29uc3QgVmVjdG9yPGZsb2F0PiYpOwotCi0gICAgY29uc3QgVmVjdG9yPFNjcm9s
bE9mZnNldFJhbmdlPGZsb2F0Pj4mIGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCkgY29uc3Qg
eyByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXM7IH0K
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKGNv
bnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+Jik7Ci0KLSAgICBjb25zdCBWZWN0
b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCkg
Y29uc3QgeyByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2Vz
OyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMo
Y29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mKTsKKyAgICBjb25zdCBTY3Jv
bGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBzbmFwT2Zmc2V0c0luZm8oKSBjb25zdCB7IHJldHVy
biBtX3NuYXBPZmZzZXRzSW5mbzsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U25hcE9m
ZnNldHNJbmZvKGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIG5ld09mZnNldHNJ
bmZvKTsKIAogICAgIHVuc2lnbmVkIGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBj
b25zdCB7IHJldHVybiBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXg7IH0KICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgodW5z
aWduZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IDkwYjUwYzIyMTEzM2VhNDM2ZTg2
MWZlZWU4ZTg3NTEzY2I1MjNiYjMuLjEzMGU3M2VkYmMyOGMwODI4ODMxYTU4YzIyZjNjNTFjZTY3
ZDEwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTc1LDE3ICs3NSw4IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29u
c3QgU2Nyb2xsaW5nU3RhdGVOCiAgICAgICAgIG1fc2Nyb2xsT3JpZ2luID0gc3RhdGUuc2Nyb2xs
T3JpZ2luKCk7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGlmIChzdGF0ZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRh
bFNuYXBPZmZzZXRzKSkKLSAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBP
ZmZzZXRzID0gc3RhdGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCk7Ci0KLSAgICBpZiAoc3RhdGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2Fs
U25hcE9mZnNldHMpKQotICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZz
ZXRzID0gc3RhdGUudmVydGljYWxTbmFwT2Zmc2V0cygpOwotCi0gICAgaWYgKHN0YXRlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25h
cE9mZnNldFJhbmdlcykpCi0gICAgICAgIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFw
T2Zmc2V0UmFuZ2VzID0gc3RhdGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKTsKLQotICAg
IGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0
eTo6VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKSkKLSAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8u
dmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzID0gc3RhdGUudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2Vz
KCk7CisgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8pKQorICAgICAgICBtX3NuYXBPZmZzZXRzSW5mbyA9
IHN0YXRlLnNuYXBPZmZzZXRzSW5mbygpOwogCiAgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBP
ZmZzZXRJbmRleCkpCiAgICAgICAgIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCA9
IHN0YXRlLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKTsKQEAgLTMzNSw2ICszMjYs
MTMgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4
dFN0cmVhbSYgdHMsIFNjcm9sbGluZ1N0YXRlVHIKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKK2NvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpzbmFwT2Zmc2V0c0luZm8oKSBjb25zdAoreworICAgIHJl
dHVybiBtX3NuYXBPZmZzZXRzSW5mbzsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmgKaW5kZXggODYyYzFiM2RiZTBlMjNlMTY5ZmE1MmNhYTQ2MmZlZmRmMTRkZTgxOC4uYmU0OWQw
YjEyNWYwMWI3MWVkNmQ4YmNhZTRmNmUyNzc1MGMzODRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5o
CkBAIC05NSwxMCArOTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5IYXZlU2Nyb2xsYmFycygp
IGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxTY3Jv
bGxiYXJNb2RlICE9IFNjcm9sbGJhckFsd2F5c09mZiB8fCBtX3Njcm9sbGFibGVBcmVhUGFyYW1l
dGVycy52ZXJ0aWNhbFNjcm9sbGJhck1vZGUgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmOyB9CiAKICNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6
b250YWxTbmFwT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLmhvcml6
b250YWxTbmFwT2Zmc2V0czsgfQotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2FsU25h
cE9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBP
ZmZzZXRzOyB9Ci0gICAgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIGhv
cml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwT2Zmc2V0c0lu
Zm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXM7IH0KLSAgICBjb25zdCBWZWN0b3I8U2Nyb2xs
T2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzOyB9CisgICAg
Y29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgc25hcE9mZnNldHNJbmZvKCkgY29u
c3Q7CiAgICAgdW5zaWduZWQgY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0
IHsgcmV0dXJuIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleDsgfQogICAgIHVuc2ln
bmVkIGN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jdXJy
ZW50VmVydGljYWxTbmFwUG9pbnRJbmRleDsgfQogICAgIHZvaWQgc2V0Q3VycmVudEhvcml6b250
YWxTbmFwUG9pbnRJbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX2N1cnJlbnRIb3Jpem9udGFsU25h
cFBvaW50SW5kZXggPSBpbmRleDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjLmgKaW5kZXggMzJhODM4ZWI2ZjNkYTQzOTgzYmNmZjU1YjdjYzQxODE1NTcz
NGU5Zi4uOWExMWI2YTFmNWRkNjYzOWMxYmU3YWVkY2ViYzMwNDhmMmJkZTY2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oCkBAIC01NSw4ICs1NSw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGN1cnJlbnRTY3JvbGxQb3NpdGlvbkNoYW5nZWQoKTsKIAog
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgdm9pZCB1cGRhdGVTY3JvbGxTbmFwUG9p
bnRzKFNjcm9sbEV2ZW50QXhpcywgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiwgY29uc3QgVmVj
dG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYpOwotICAgIHZvaWQgc2V0QWN0aXZl
U2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMsIHVuc2lnbmVkKTsKICAgICBi
b29sIGFjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZSgpIGNvbnN0OwogICAgIHVuc2lnbmVk
IGFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzKSBjb25zdDsKICAg
ICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KaW5kZXggNzQwYTMzM2FmMTdiMGViYTM0
YmZlZmFiMGEzNWFhMWViOWNkN2VkMC4uYTViNDhjMjAzNDE1YWI3YjA5Y2U5YzNmYTk5YzE1ZWE2
Mzc0MGU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWMubW0KQEAgLTU1LDI4ICs1NSw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYzo6bm9kZVdpbGxCZURlc3Ryb3llZCgpCiAgICAgbV9zY3JvbGxDb250cm9sbGVy
LnN0b3BBbGxUaW1lcnMoKTsKIH0KIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi1zdGF0
aWMgaW5saW5lIFZlY3RvcjxMYXlvdXRVbml0PiBjb252ZXJ0VG9MYXlvdXRVbml0cyhjb25zdCBW
ZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0c0FzRmxvYXQpCi17Ci0gICAgVmVjdG9yPExheW91dFVu
aXQ+IHNuYXBPZmZzZXRzOwotICAgIHNuYXBPZmZzZXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
c25hcE9mZnNldHNBc0Zsb2F0LnNpemUoKSk7Ci0gICAgZm9yIChhdXRvIG9mZnNldCA6IHNuYXBP
ZmZzZXRzQXNGbG9hdCkKLSAgICAgICAgc25hcE9mZnNldHMudW5jaGVja2VkQXBwZW5kKG9mZnNl
dCk7Ci0KLSAgICByZXR1cm4gc25hcE9mZnNldHM7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgVmVjdG9y
PFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiBjb252ZXJ0VG9MYXlvdXRVbml0cyhjb25z
dCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgc25hcE9mZnNldFJhbmdlc0FzRmxv
YXQpCi17Ci0gICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiBzbmFwT2Zm
c2V0UmFuZ2VzOwotICAgIHNuYXBPZmZzZXRSYW5nZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShz
bmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdC5zaXplKCkpOwotICAgIGZvciAoYXV0byByYW5nZSA6IHNu
YXBPZmZzZXRSYW5nZXNBc0Zsb2F0KQotICAgICAgICBzbmFwT2Zmc2V0UmFuZ2VzLnVuY2hlY2tl
ZEFwcGVuZCh7IExheW91dFVuaXQocmFuZ2Uuc3RhcnQpLCBMYXlvdXRVbml0KHJhbmdlLmVuZCkg
fSk7Ci0KLSAgICByZXR1cm4gc25hcE9mZnNldFJhbmdlczsKLX0KLSNlbmRpZgotCiB2b2lkIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnVwZGF0ZUZyb21TdGF0ZU5vZGUo
Y29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdTdGF0ZU5vZGUpCiB7
CiAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6UGFpbnRlckZvclNjcm9sbGJhcikpIHsKQEAgLTg2LDMwICs2
NCwxNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnVwZGF0
ZUZyb21TdGF0ZU5vZGUoY29uc3QgU2Nyb2xsaW5nUwogICAgIH0KIAogI2lmIEVOQUJMRShDU1Nf
U0NST0xMX1NOQVApCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzKSB8
fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9k
ZTo6UHJvcGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKSkKLSAgICAgICAgdXBkYXRl
U2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIGNvbnZlcnRUb0xh
eW91dFVuaXRzKHNjcm9sbGluZ1N0YXRlTm9kZS5ob3Jpem9udGFsU25hcE9mZnNldHMoKSksIGNv
bnZlcnRUb0xheW91dFVuaXRzKHNjcm9sbGluZ1N0YXRlTm9kZS5ob3Jpem9udGFsU25hcE9mZnNl
dFJhbmdlcygpKSk7Ci0KLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRzKSB8
fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9k
ZTo6UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldFJhbmdlcykpCi0gICAgICAgIHVwZGF0ZVNj
cm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgY29udmVydFRvTGF5b3V0
VW5pdHMoc2Nyb2xsaW5nU3RhdGVOb2RlLnZlcnRpY2FsU25hcE9mZnNldHMoKSksIGNvbnZlcnRU
b0xheW91dFVuaXRzKHNjcm9sbGluZ1N0YXRlTm9kZS52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMo
KSkpOworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbykpCisgICAgICAgIG1fc2Ny
b2xsQ29udHJvbGxlci51cGRhdGVTY3JvbGxTbmFwUG9pbnRzKHNjcm9sbGluZ1N0YXRlTm9kZS5z
bmFwT2Zmc2V0c0luZm8oKS5jb252ZXJ0VW5pdHM8TGF5b3V0VW5pdD4oKSk7CiAKICAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCkpCi0gICAgICAgIHNl
dEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFs
LCBzY3JvbGxpbmdTdGF0ZU5vZGUuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpKTsK
LSAgICAKKyAgICAgICAgbV9zY3JvbGxDb250cm9sbGVyLnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRl
eEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBzY3JvbGxpbmdTdGF0ZU5vZGUu
Y3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpKTsKKwogICAgIGlmIChzY3JvbGxpbmdT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6
OkN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCkpCi0gICAgICAgIHNldEFjdGl2ZVNjcm9s
bFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgc2Nyb2xsaW5nU3Rh
dGVOb2RlLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpOworICAgICAgICBtX3Njcm9s
bENvbnRyb2xsZXIuc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4
aXM6OlZlcnRpY2FsLCBzY3JvbGxpbmdTdGF0ZU5vZGUuY3VycmVudFZlcnRpY2FsU25hcFBvaW50
SW5kZXgoKSk7CiAjZW5kaWYKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTWFjOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBj
b25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xs
T2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBzbmFwUmFuZ2VzKQotewotICAgIG1fc2Nyb2xsQ29u
dHJvbGxlci51cGRhdGVTY3JvbGxTbmFwUG9pbnRzKGF4aXMsIHNuYXBPZmZzZXRzLCBzbmFwUmFu
Z2VzKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpz
ZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCB1bnNp
Z25lZCBpbmRleCkKLXsKLSAgICBtX3Njcm9sbENvbnRyb2xsZXIuc2V0QWN0aXZlU2Nyb2xsU25h
cEluZGV4Rm9yQXhpcyhheGlzLCBpbmRleCk7Ci19Ci0KIHVuc2lnbmVkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Ny
b2xsRXZlbnRBeGlzIGF4aXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2Nyb2xsQ29udHJvbGxl
ci5hY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKGF4aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCmluZGV4IDczMDMyNDRmYzYwZmVm
MzQzOTBhZDY0ZTI1MTlhYzVlYjIzMjE1MDUuLjk0NGI5ODA2ZDQ2ODYyNDAzYjE5MDQ3ZjZmZmQ3
ZGE4YTQwOGU4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Nj
cm9sbENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3Jv
bGxDb250cm9sbGVyLmgKQEAgLTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY3Jv
bGxQb3NpdGlvbkNoYW5nZWQoKTsKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAg
dm9pZCB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpcywgY29uc3QgVmVjdG9y
PExheW91dFVuaXQ+JiwgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+
PiYpOworICAgIHZvaWQgdXBkYXRlU2Nyb2xsU25hcFBvaW50cyhjb25zdCBTY3JvbGxTbmFwT2Zm
c2V0c0luZm88TGF5b3V0VW5pdD4mKTsKICAgICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRl
eEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzLCB1bnNpZ25lZCk7CiAgICAgdm9pZCBzZXRBY3RpdmVT
Y3JvbGxTbmFwSW5kaWNlc0Zvck9mZnNldChTY3JvbGxPZmZzZXQpOwogICAgIGJvb2wgYWN0aXZl
U2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVTY3JvbGxT
bmFwSW5kZXhEaWRDaGFuZ2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9TY3JvbGxDb250cm9sbGVyLm1tCmluZGV4IGQ4MTg1YzNiNjdlOWEzZjA4MmI0MzdkYTg1YTRm
MWY4NjI2OWNlNGEuLjc3MTkxNjMxMzRlOWFkOTRjNmQ0Mjg4NjIxZGRiNzdiNjhhZDRjYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5t
bQpAQCAtODEsMTEgKzgxLDYgQEAgc3RhdGljIGZsb2F0IHNjcm9sbFdoZWVsTXVsdGlwbGllcigp
CiB9CiAjZW5kaWYKIAotc3RhdGljIFNjcm9sbEV2ZW50QXhpcyBvdGhlclNjcm9sbEV2ZW50QXhp
cyhTY3JvbGxFdmVudEF4aXMgYXhpcykKLXsKLSAgICByZXR1cm4gYXhpcyA9PSBTY3JvbGxFdmVu
dEF4aXM6Okhvcml6b250YWwgPyBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsIDogU2Nyb2xsRXZl
bnRBeGlzOjpIb3Jpem9udGFsOwotfQotCiBTY3JvbGxDb250cm9sbGVyOjpTY3JvbGxDb250cm9s
bGVyKFNjcm9sbENvbnRyb2xsZXJDbGllbnQmIGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVu
dCkKIHsKQEAgLTgzMSw3ICs4MjYsMTcgQEAgdm9pZCBTY3JvbGxDb250cm9sbGVyOjpzY3JvbGxT
bmFwVGltZXJGaXJlZCgpCiB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBT
dGF0ZShjb25zdCBTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7CiAgICAgY29uc3Qg
YXV0byogc25hcE9mZnNldEluZm8gPSBzY3JvbGxhYmxlQXJlYS5zbmFwT2Zmc2V0SW5mbygpOwot
ICAgIGlmICghc25hcE9mZnNldEluZm8gfHwgc25hcE9mZnNldEluZm8tPmlzRW1wdHkoKSkgewor
ICAgIGlmICghc25hcE9mZnNldEluZm8pIHsKKyAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBu
dWxscHRyOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdXBkYXRlU2Nyb2xsU25hcFBv
aW50cygqc25hcE9mZnNldEluZm8pOworfQorCit2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnVwZGF0
ZVNjcm9sbFNuYXBQb2ludHMoY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+
JiBzbmFwT2Zmc2V0SW5mbykKK3sKKyAgICBpZiAoc25hcE9mZnNldEluZm8uaXNFbXB0eSgpKSB7
CiAgICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTg0MCwzNCArODQ1LDEyIEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRl
U2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlCiAgICAg
aWYgKCFtX3Njcm9sbFNuYXBTdGF0ZSkKICAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBtYWtl
VW5pcXVlPFNjcm9sbFNuYXBBbmltYXRvclN0YXRlPigpOwogCi0gICAgbV9zY3JvbGxTbmFwU3Rh
dGUtPnNldFNuYXBPZmZzZXRJbmZvKCpzbmFwT2Zmc2V0SW5mbyk7CisgICAgbV9zY3JvbGxTbmFw
U3RhdGUtPnNldFNuYXBPZmZzZXRJbmZvKHNuYXBPZmZzZXRJbmZvKTsKIAogICAgIGlmIChzaG91
bGRDb21wdXRlQ3VycmVudFNuYXBJbmRpY2VzKQogICAgICAgICBzZXRBY3RpdmVTY3JvbGxTbmFw
SW5kaWNlc0Zvck9mZnNldChyb3VuZGVkSW50UG9pbnQobV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCkp
KTsKIAotICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIlNjcm9sbENv
bnRyb2xsZXIgIiA8PCB0aGlzIDw8ICIgdXBkYXRlU2Nyb2xsU25hcFN0YXRlIGZvciAiIDw8IHNj
cm9sbGFibGVBcmVhIDw8ICIgbmV3IHN0YXRlICIgPDwgVmFsdWVPck51bGwobV9zY3JvbGxTbmFw
U3RhdGUuZ2V0KCkpKTsKLX0KLQotdm9pZCBTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxT
bmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4m
IHNuYXBQb2ludHMsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4m
IHNuYXBSYW5nZXMpCi17Ci0gICAgYm9vbCBzaG91bGRDb21wdXRlQ3VycmVudFNuYXBJbmRpY2Vz
ID0gZmFsc2U7Ci0gICAgaWYgKCFtX3Njcm9sbFNuYXBTdGF0ZSkgewotICAgICAgICBpZiAoc25h
cFBvaW50cy5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9zY3Jv
bGxTbmFwU3RhdGUgPSBtYWtlVW5pcXVlPFNjcm9sbFNuYXBBbmltYXRvclN0YXRlPigpOwotICAg
ICAgICBzaG91bGRDb21wdXRlQ3VycmVudFNuYXBJbmRpY2VzID0gdHJ1ZTsKLSAgICB9Ci0KLSAg
ICBpZiAoc25hcFBvaW50cy5pc0VtcHR5KCkgJiYgbV9zY3JvbGxTbmFwU3RhdGUtPnNuYXBPZmZz
ZXRzRm9yQXhpcyhvdGhlclNjcm9sbEV2ZW50QXhpcyhheGlzKSkuaXNFbXB0eSgpKQotICAgICAg
ICBtX3Njcm9sbFNuYXBTdGF0ZSA9IG51bGxwdHI7Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fc2Ny
b2xsU25hcFN0YXRlLT5zZXRTbmFwT2Zmc2V0c0FuZFBvc2l0aW9uUmFuZ2VzRm9yQXhpcyhheGlz
LCBzbmFwUG9pbnRzLCBzbmFwUmFuZ2VzKTsKLSAgICAgICAgaWYgKHNob3VsZENvbXB1dGVDdXJy
ZW50U25hcEluZGljZXMpIHsKLSAgICAgICAgICAgIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2Vz
Rm9yT2Zmc2V0KHJvdW5kZWRJbnRQb2ludChtX2NsaWVudC5zY3JvbGxPZmZzZXQoKSkpOwotICAg
ICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAiU2Nyb2xsQ29u
dHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyAtIGNvbXB1dGVkIGluaXRpYWwgc25hcCBp
bmRpY2VzOiB4ICIgPDwgbV9zY3JvbGxTbmFwU3RhdGUtPmFjdGl2ZVNuYXBJbmRleEZvckF4aXMo
U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKSA8PCAiLCB5ICIgPDwgbV9zY3JvbGxTbmFwU3Rh
dGUtPmFjdGl2ZVNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCkpOwot
ICAgICAgICB9Ci0gICAgfQorICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0g
PDwgIlNjcm9sbENvbnRyb2xsZXIgIiA8PCB0aGlzIDw8ICIgdXBkYXRlU2Nyb2xsU25hcFN0YXRl
IG5ldyBzdGF0ZTogIiA8PCBWYWx1ZU9yTnVsbChtX3Njcm9sbFNuYXBTdGF0ZS5nZXQoKSkpOwog
fQogCiB1bnNpZ25lZCBTY3JvbGxDb250cm9sbGVyOjphY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JB
eGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNh
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCmluZGV4IDc0ZTliODEzMGI4YTZmNWM2
Mjk5YmFmYWFjZjc4ZTJiYTQ4N2VjM2IuLjU4NTNiZjlkNGU2YzcxODc1ZGU0ZDU3ZWJkOTJmOTg0
MTQ4ZGEzNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JU
cmFuc2FjdGlvbi5jcHAKQEAgLTk4LDYgKzk4LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8UmVxdWVzdGVkU2Nyb2xsRGF0YT4gewogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFJlcXVlc3RlZFNjcm9sbERhdGEmKTsKIH07CiAK
K3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U2Nyb2xsU25hcE9mZnNldHNJbmZvPGZs
b2F0Pj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgU2Nyb2xsU25h
cE9mZnNldHNJbmZvPGZsb2F0PiYpOworICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGUoRGVjb2RlciYsIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mKTsKK307CisK
IH0gLy8gbmFtZXNwYWNlIElQQwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTExNSwxMCArMTIwLDcg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5v
ZGU6OlByb3BlcnR5PiB7CiAgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlNjcm9sbGFibGVBcmVhUGFyYW1zLAogICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxpbmcsCiAgICAg
ICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlJlcXVlc3RlZFNjcm9s
bFBvc2l0aW9uLAotICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5
OjpIb3Jpem9udGFsU25hcE9mZnNldHMsCi0gICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldHMsCi0gICAgICAgIFdlYkNvcmU6OlNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzLAot
ICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNu
YXBPZmZzZXRSYW5nZXMsCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlNuYXBPZmZzZXRzSW5mbywKICAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgsCiAgICAgICAg
IFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRWZXJ0aWNhbFNu
YXBPZmZzZXRJbmRleCwKICAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9w
ZXJ0eTo6SXNNb25pdG9yaW5nV2hlZWxFdmVudHMsCkBAIC0yMDYsMTAgKzIwOCw3IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QKICAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsUG9zaXRpb24sIHNjcm9sbFBvc2l0aW9uKQogICAgIFND
Uk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxP
cmlnaW4sIHNjcm9sbE9yaWdpbikKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIFND
Uk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9u
dGFsU25hcE9mZnNldHMsIGhvcml6b250YWxTbmFwT2Zmc2V0cykKLSAgICBTQ1JPTExJTkdfTk9E
RV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0
cywgdmVydGljYWxTbmFwT2Zmc2V0cykKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xs
aW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMsIGhvcml6
b250YWxTbmFwT2Zmc2V0UmFuZ2VzKQotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsIHZlcnRpY2Fs
U25hcE9mZnNldFJhbmdlcykKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6U25hcE9mZnNldHNJbmZvLCBzbmFwT2Zmc2V0c0luZm8pCiAgICAg
U0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJl
bnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4LCBjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludElu
ZGV4KQogICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgsIGN1cnJlbnRWZXJ0aWNhbFNuYXBQ
b2ludEluZGV4KQogI2VuZGlmCkBAIC0zMDYsMTAgKzMwNSw3IEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
U2Nyb2xsCiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlNjcm9sbFBvc2l0aW9uLCBGbG9hdFBvaW50LCBzZXRTY3JvbGxQb3NpdGlvbik7CiAg
ICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNj
cm9sbE9yaWdpbiwgSW50UG9pbnQsIHNldFNjcm9sbE9yaWdpbik7CiAjaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKLSAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBWZWN0b3I8ZmxvYXQ+LCBzZXRIb3Jp
em9udGFsU25hcE9mZnNldHMpOwotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRzLCBWZWN0b3I8ZmxvYXQ+LCBz
ZXRWZXJ0aWNhbFNuYXBPZmZzZXRzKTsKLSAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xs
aW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMsIFZlY3Rv
cjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+LCBzZXRIb3Jpem9udGFsU25hcE9mZnNldFJhbmdl
cykKLSAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0
eTo6VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8Zmxv
YXQ+Piwgc2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKQorICAgIFNDUk9MTElOR19OT0RFX0RF
Q09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8sIFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4sIHNldFNuYXBPZmZzZXRzSW5mbyk7CiAgICAgU0NST0xM
SU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jp
em9udGFsU25hcE9mZnNldEluZGV4LCB1bnNpZ25lZCwgc2V0Q3VycmVudEhvcml6b250YWxTbmFw
UG9pbnRJbmRleCk7CiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9k
ZTo6UHJvcGVydHk6OkN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCwgdW5zaWduZWQsIHNl
dEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKICNlbmRpZgpAQCAtNTI2LDYgKzUyMiwy
NyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVxdWVzdGVkU2Nyb2xsRGF0YT46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBSZXF1ZXN0ZWRTY3JvbAogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lk
IEFyZ3VtZW50Q29kZXI8U2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pj46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBpbmZvKQor
eworICAgIGVuY29kZXIgPDwgaW5mby5ob3Jpem9udGFsU25hcE9mZnNldHM7CisgICAgZW5jb2Rl
ciA8PCBpbmZvLnZlcnRpY2FsU25hcE9mZnNldHM7CisgICAgZW5jb2RlciA8PCBpbmZvLmhvcml6
b250YWxTbmFwT2Zmc2V0UmFuZ2VzOworICAgIGVuY29kZXIgPDwgaW5mby52ZXJ0aWNhbFNuYXBP
ZmZzZXRSYW5nZXM7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm88ZmxvYXQ+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNjcm9sbFNuYXBPZmZzZXRzSW5m
bzxmbG9hdD4mIGluZm8pCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLmhvcml6b250
YWxTbmFwT2Zmc2V0cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGluZm8udmVydGljYWxTbmFwT2Zmc2V0cykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnZl
cnRpY2FsU25hcE9mZnNldFJhbmdlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyB2b2lkIGVuY29kZU5v
ZGVBbmREZXNjZW5kYW50cyhJUEM6OkVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSYgc3RhdGVOb2RlLCBpbnQmIGVuY29kZWROb2RlQ291bnQpCkBAIC02OTYsMTcgKzcx
MywxMiBAQCBzdGF0aWMgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGUmIG5vZGUsIGJvb2wgYwogICAgICAgICB0cy5kdW1wUHJvcGVydHko
InNjcm9sbGVkLWNvbnRlbnRzLWxheWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxh
dGZvcm1MYXllcklEPihub2RlLnNjcm9sbGVkQ29udGVudHNMYXllcigpKSk7CiAKICNpZiBFTkFC
TEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6
b250YWxTbmFwT2Zmc2V0cykpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiaG9yaXpvbnRhbCBz
bmFwIG9mZnNldHMiLCBub2RlLmhvcml6b250YWxTbmFwT2Zmc2V0cygpKTsKLQotICAgIGlmICgh
Y2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldHMpKQotICAgICAgICB0cy5k
dW1wUHJvcGVydHkoInZlcnRpY2FsIHNuYXAgb2Zmc2V0cyIsIG5vZGUudmVydGljYWxTbmFwT2Zm
c2V0cygpKTsKLQotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jpem9u
dGFsU25hcE9mZnNldEluZGV4KSkKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBu
b2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFw
T2Zmc2V0c0luZm8pKSB7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiaG9yaXpvbnRhbCBzbmFw
IG9mZnNldHMiLCBub2RlLnNuYXBPZmZzZXRzSW5mbygpLmhvcml6b250YWxTbmFwT2Zmc2V0cyk7
CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidmVydGljYWwgc25hcCBvZmZzZXRzIiwgbm9kZS5z
bmFwT2Zmc2V0c0luZm8oKS52ZXJ0aWNhbFNuYXBPZmZzZXRzKTsKICAgICAgICAgdHMuZHVtcFBy
b3BlcnR5KCJjdXJyZW50IGhvcml6b250YWwgc25hcCBwb2ludCBpbmRleCIsIG5vZGUuY3VycmVu
dEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpKTsKLQotICAgIGlmICghY2hhbmdlZFByb3BlcnRp
ZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OkN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCkpCiAgICAgICAgIHRzLmR1bXBQ
cm9wZXJ0eSgiY3VycmVudCB2ZXJ0aWNhbCBzbmFwIHBvaW50IGluZGV4Iiwgbm9kZS5jdXJyZW50
VmVydGljYWxTbmFwUG9pbnRJbmRleCgpKTsKKyAgICB9CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCmlu
ZGV4IDczNzJmZjI5Zjc1OWIyMDEwODc2NjU4MWRkMTA0MThiOGI0ODM2YmMuLjFiYjA5NTA4NWQy
MzZlZTQ1YjdjNzM5MGQ0ODE5ZjgzODc1Njk0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KQEAgLTIxMyw3ICsyMTMs
NyBAQCBib29sIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnNob3VsZFNuYXBGb3JN
YWluRnJhbWVTY3JvbGxpbmcoU2Nyb2xsRXZlbgogICAgIFNjcm9sbGluZ1RyZWVOb2RlKiByb290
ID0gbV9zY3JvbGxpbmdUcmVlLT5yb290Tm9kZSgpOwogICAgIGlmIChyb290ICYmIHJvb3QtPmlz
RnJhbWVTY3JvbGxpbmdOb2RlKCkpIHsKICAgICAgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZSogcm9vdFNjcm9sbGluZ05vZGUgPSBzdGF0aWNfY2FzdDxTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlKj4ocm9vdCk7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNu
YXBPZmZzZXRzID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyByb290U2Ny
b2xsaW5nTm9kZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkgOiByb290U2Nyb2xsaW5nTm9kZS0+
dmVydGljYWxTbmFwT2Zmc2V0cygpOworICAgICAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFw
T2Zmc2V0cyA9IHJvb3RTY3JvbGxpbmdOb2RlLT5zbmFwT2Zmc2V0c0luZm8oKS5vZmZzZXRzRm9y
QXhpcyhheGlzKTsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEluZGV4ID0gYXhpcyA9PSBTY3Jv
bGxFdmVudEF4aXM6Okhvcml6b250YWwgPyBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXggOiBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4OwogICAgICAgICByZXR1cm4gc25h
cE9mZnNldHMuc2l6ZSgpICYmIChjdXJyZW50SW5kZXggPCBzbmFwT2Zmc2V0cy5zaXplKCkgfHwg
Y3VycmVudEluZGV4ID09IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpOwogICAgIH0KQEAgLTIyNSw4
ICsyMjUsOCBAQCBmbG9hdCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9zZXN0
U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyhTYwogICAgIFNjcm9sbGluZ1RyZWVOb2Rl
KiByb290ID0gbV9zY3JvbGxpbmdUcmVlLT5yb290Tm9kZSgpOwogICAgIEFTU0VSVChyb290ICYm
IHJvb3QtPmlzRnJhbWVTY3JvbGxpbmdOb2RlKCkpOwogICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGUqIHJvb3RTY3JvbGxpbmdOb2RlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZSo+KHJvb3QpOwotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNu
YXBPZmZzZXRzID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyByb290U2Ny
b2xsaW5nTm9kZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkgOiByb290U2Nyb2xsaW5nTm9kZS0+
dmVydGljYWxTbmFwT2Zmc2V0cygpOwotICAgIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5n
ZTxmbG9hdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhv
cml6b250YWwgPyByb290U2Nyb2xsaW5nTm9kZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMo
KSA6IHJvb3RTY3JvbGxpbmdOb2RlLT52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoKTsKKyAgICBj
b25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cyA9IHJvb3RTY3JvbGxpbmdOb2RlLT5zbmFw
T2Zmc2V0c0luZm8oKS5vZmZzZXRzRm9yQXhpcyhheGlzKTsKKyAgICBjb25zdCBWZWN0b3I8U2Ny
b2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgc25hcE9mZnNldFJhbmdlcyA9IHJvb3RTY3JvbGxpbmdO
b2RlLT5zbmFwT2Zmc2V0c0luZm8oKS5vZmZzZXRSYW5nZXNGb3JBeGlzKGF4aXMpOwogCiAgICAg
ZmxvYXQgc2NhbGVkU2Nyb2xsRGVzdGluYXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbiAvIG1fd2Vi
UGFnZVByb3h5LmRpc3BsYXllZENvbnRlbnRTY2FsZSgpOwogICAgIGZsb2F0IHJhd0Nsb3Nlc3RT
bmFwT2Zmc2V0ID0gY2xvc2VzdFNuYXBPZmZzZXQoc25hcE9mZnNldHMsIHNuYXBPZmZzZXRSYW5n
ZXMsIHNjYWxlZFNjcm9sbERlc3RpbmF0aW9uLCB2ZWxvY2l0eSwgY3VycmVudEluZGV4KTsKQEAg
LTI0Myw4ICsyNDMsOCBAQCBib29sIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6Omhh
c0FjdGl2ZVNuYXBQb2ludCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUmIHJvb3RTY3JvbGxpbmdOb2RlID0gZG93bmNh
c3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oKnJvb3QpOwotICAgIGNvbnN0IFZl
Y3RvcjxmbG9hdD4mIGhvcml6b250YWwgPSByb290U2Nyb2xsaW5nTm9kZS5ob3Jpem9udGFsU25h
cE9mZnNldHMoKTsKLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNhbCA9IHJvb3RTY3Jv
bGxpbmdOb2RlLnZlcnRpY2FsU25hcE9mZnNldHMoKTsKKyAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+
JiBob3Jpem9udGFsID0gcm9vdFNjcm9sbGluZ05vZGUuc25hcE9mZnNldHNJbmZvKCkuaG9yaXpv
bnRhbFNuYXBPZmZzZXRzOworICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2FsID0gcm9v
dFNjcm9sbGluZ05vZGUuc25hcE9mZnNldHNJbmZvKCkudmVydGljYWxTbmFwT2Zmc2V0czsKIAog
ICAgIGlmIChob3Jpem9udGFsLmlzRW1wdHkoKSAmJiB2ZXJ0aWNhbC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTI2NCw4ICsyNjQsOCBAQCBDR1BvaW50IFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHk6Om5lYXJlc3RBY3RpdmVDb250ZW50SW5zZXRBZGp1c3RlZFNu
YXBPZgogICAgIFNjcm9sbGluZ1RyZWVOb2RlKiByb290ID0gbV9zY3JvbGxpbmdUcmVlLT5yb290
Tm9kZSgpOwogICAgIEFTU0VSVChyb290ICYmIGlzPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGU+KHJvb3QpKTsKICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlJiByb290
U2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+
KCpyb290KTsKLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBob3Jpem9udGFsID0gcm9vdFNjcm9s
bGluZ05vZGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCk7Ci0gICAgY29uc3QgVmVjdG9yPGZsb2F0
PiYgdmVydGljYWwgPSByb290U2Nyb2xsaW5nTm9kZS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCk7Cisg
ICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRhbCA9IHJvb3RTY3JvbGxpbmdOb2RlLnNu
YXBPZmZzZXRzSW5mbygpLmhvcml6b250YWxTbmFwT2Zmc2V0czsKKyAgICBjb25zdCBWZWN0b3I8
ZmxvYXQ+JiB2ZXJ0aWNhbCA9IHJvb3RTY3JvbGxpbmdOb2RlLnNuYXBPZmZzZXRzSW5mbygpLnZl
cnRpY2FsU25hcE9mZnNldHM7CiAKICAgICAvLyBUaGUgYm91bmRzIGNoZWNraW5nIHdpdGggbWF4
U2Nyb2xsT2Zmc2V0cyBpcyB0byBlbnN1cmUgdGhhdCB3ZSB3b24ndCBpbnRlcmZlcmUgd2l0aCBy
dWJiZXItYmFuZGluZyB3aGVuIHNjcm9sbGluZyB0byB0aGUgZWRnZSBvZiB0aGUgcGFnZS4KICAg
ICBpZiAoIWhvcml6b250YWwuaXNFbXB0eSgpICYmIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9p
bnRJbmRleCA8IGhvcml6b250YWwuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCmluZGV4IGRmYmY3YTRk
YmNkM2UwNWE3N2ZkNTFkMjIzMDBlNjYyMDM4ZWZiODcuLjhlZDIxZDdkZGFjODc1YjNhMDVkY2Rk
NDkzZmIzNDYyMGRmNDVkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KQEAgLTEwNiwxNyArMTA2LDE5IEBA
IC0gKHZvaWQpc2Nyb2xsVmlld1dpbGxFbmREcmFnZ2luZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xs
VmlldyB3aXRoVmVsb2NpdHk6KENHUG9pCiAgICAgdW5zaWduZWQgb3JpZ2luYWxIb3Jpem9udGFs
U25hcFBvc2l0aW9uID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUo
KS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCk7CiAgICAgdW5zaWduZWQgb3JpZ2lu
YWxWZXJ0aWNhbFNuYXBQb3NpdGlvbiA9IF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3Jv
bGxpbmdOb2RlKCkuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKTsKIAotICAgIGlmICgh
X3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5ob3Jpem9udGFsU25h
cE9mZnNldHMoKS5pc0VtcHR5KCkpIHsKKyAgICBjb25zdCBhdXRvJiBob3Jpem9udGFsID0gX3Nj
cm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0luZm8o
KS5ob3Jpem9udGFsU25hcE9mZnNldHM7CisgICAgaWYgKCFob3Jpem9udGFsLmlzRW1wdHkoKSkg
ewogICAgICAgICB1bnNpZ25lZCBpbmRleDsKLSAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBv
c2l0aW9uID0gV2ViQ29yZTo6Y2xvc2VzdFNuYXBPZmZzZXQoX3Njcm9sbGluZ1RyZWVOb2RlRGVs
ZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5ob3Jpem9udGFsU25hcE9mZnNldHMoKSwgX3Njcm9sbGlu
Z1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5ob3Jpem9udGFsU25hcE9mZnNldFJh
bmdlcygpLCBob3Jpem9udGFsVGFyZ2V0LCB2ZWxvY2l0eS54LCBpbmRleCk7CisgICAgICAgIGZs
b2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IFdlYkNvcmU6OmNsb3Nlc3RTbmFwT2Zmc2V0KGhv
cml6b250YWwsIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc25h
cE9mZnNldHNJbmZvKCkuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMsIGhvcml6b250YWxUYXJn
ZXQsIHZlbG9jaXR5LngsIGluZGV4KTsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdh
dGUtPnNjcm9sbGluZ05vZGUoKS5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KGlu
ZGV4KTsKICAgICAgICAgaWYgKGhvcml6b250YWxUYXJnZXQgPj0gMCAmJiBob3Jpem9udGFsVGFy
Z2V0IDw9IHNjcm9sbFZpZXcuY29udGVudFNpemUud2lkdGgpCiAgICAgICAgICAgICB0YXJnZXRD
b250ZW50T2Zmc2V0LT54ID0gcG90ZW50aWFsU25hcFBvc2l0aW9uOwogICAgIH0KIAotICAgIGlm
ICghX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS52ZXJ0aWNhbFNu
YXBPZmZzZXRzKCkuaXNFbXB0eSgpKSB7CisgICAgY29uc3QgYXV0byYgdmVydGljYWwgPSBfc2Ny
b2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygp
LnZlcnRpY2FsU25hcE9mZnNldHM7CisgICAgaWYgKCF2ZXJ0aWNhbC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgdW5zaWduZWQgaW5kZXg7Ci0gICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlv
biA9IFdlYkNvcmU6OmNsb3Nlc3RTbmFwT2Zmc2V0KF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRl
LT5zY3JvbGxpbmdOb2RlKCkudmVydGljYWxTbmFwT2Zmc2V0cygpLCBfc2Nyb2xsaW5nVHJlZU5v
ZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpLCB2
ZXJ0aWNhbFRhcmdldCwgdmVsb2NpdHkueSwgaW5kZXgpOworICAgICAgICBmbG9hdCBwb3RlbnRp
YWxTbmFwUG9zaXRpb24gPSBXZWJDb3JlOjpjbG9zZXN0U25hcE9mZnNldCh2ZXJ0aWNhbCwgX3Nj
cm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0luZm8o
KS52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsIHZlcnRpY2FsVGFyZ2V0LCB2ZWxvY2l0eS55LCBp
bmRleCk7CiAgICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2Rl
KCkuc2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoaW5kZXgpOwogICAgICAgICBpZiAo
dmVydGljYWxUYXJnZXQgPj0gMCAmJiB2ZXJ0aWNhbFRhcmdldCA8PSBzY3JvbGxWaWV3LmNvbnRl
bnRTaXplLmhlaWdodCkKICAgICAgICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPnkgPSBwb3Rl
bnRpYWxTbmFwUG9zaXRpb247CkBAIC0yODAsOSArMjgyLDkgQEAgdm9pZCBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3Qg
U2Nyb2wKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgLy8gRklYTUU6IElmIG9u
bHkgb25lIGF4aXMgc25hcHMgaW4gMkQgc2Nyb2xsaW5nLCB0aGUgb3RoZXIgYXhpcyB3aWxsIGRl
Y2VsZXJhdGUgZmFzdCBhcyB3ZWxsLiBJcyB0aGlzIHdoYXQgd2Ugd2FudD8KLSAgICBpZiAoc2Ny
b2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldHMpIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVydGljYWxTbmFw
T2Zmc2V0cykpIHsKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8pKSB7CiAgICAg
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgICAgICBzY3JvbGxWaWV3KCkuZGVj
ZWxlcmF0aW9uUmF0ZSA9IHNjcm9sbGluZ05vZGUoKS5ob3Jpem9udGFsU25hcE9mZnNldHMoKS5z
aXplKCkgfHwgc2Nyb2xsaW5nTm9kZSgpLnZlcnRpY2FsU25hcE9mZnNldHMoKS5zaXplKCkgPyBV
SVNjcm9sbFZpZXdEZWNlbGVyYXRpb25SYXRlRmFzdCA6IFVJU2Nyb2xsVmlld0RlY2VsZXJhdGlv
blJhdGVOb3JtYWw7CisgICAgICAgIHNjcm9sbFZpZXcoKS5kZWNlbGVyYXRpb25SYXRlID0gc2Ny
b2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpLmhvcml6b250YWxTbmFwT2Zmc2V0cy5zaXpl
KCkgfHwgc2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpLnZlcnRpY2FsU25hcE9mZnNl
dHMuc2l6ZSgpID8gVUlTY3JvbGxWaWV3RGVjZWxlcmF0aW9uUmF0ZUZhc3QgOiBVSVNjcm9sbFZp
ZXdEZWNlbGVyYXRpb25SYXRlTm9ybWFsOwogICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCiAgICAgfQogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>